├── .gitignore ├── README.md ├── bot-report.md ├── contracts ├── .env.example ├── .gitignore ├── .gitmodules ├── .prettierrc.js ├── .solhint.json ├── .solhintignore ├── LICENSE.md ├── README.md ├── docs │ ├── Architecture.md │ ├── Core.md │ ├── Introduction.md │ ├── RegistriesRoles.md │ └── images │ │ ├── Sub-account execution flow via console account.png │ │ ├── Sub-account execution flow via executor plugin.png │ │ ├── banner.png │ │ ├── console account execTransaction.png │ │ ├── console-guard-removal.png │ │ └── sub-account execTransaction by operators.png ├── foundry.toml ├── interfaces │ ├── IAddressProviderService.sol │ ├── IWalletAdapter.sol │ ├── Types.sol │ └── external │ │ ├── IFallbackHandler.sol │ │ ├── IGnosisMultiSend.sol │ │ ├── IGnosisProxyFactory.sol │ │ └── IGnosisSafe.sol ├── lib │ ├── forge-std │ │ ├── .github │ │ │ └── workflows │ │ │ │ ├── ci.yml │ │ │ │ └── sync.yml │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── LICENSE-APACHE │ │ ├── LICENSE-MIT │ │ ├── README.md │ │ ├── foundry.toml │ │ ├── lib │ │ │ └── ds-test │ │ │ │ ├── .github │ │ │ │ └── workflows │ │ │ │ │ └── build.yml │ │ │ │ ├── .gitignore │ │ │ │ ├── LICENSE │ │ │ │ ├── Makefile │ │ │ │ ├── default.nix │ │ │ │ ├── demo │ │ │ │ └── demo.sol │ │ │ │ ├── package.json │ │ │ │ └── src │ │ │ │ ├── test.sol │ │ │ │ └── test.t.sol │ │ ├── package.json │ │ ├── src │ │ │ ├── Base.sol │ │ │ ├── Script.sol │ │ │ ├── StdAssertions.sol │ │ │ ├── StdChains.sol │ │ │ ├── StdCheats.sol │ │ │ ├── StdError.sol │ │ │ ├── StdInvariant.sol │ │ │ ├── StdJson.sol │ │ │ ├── StdMath.sol │ │ │ ├── StdStorage.sol │ │ │ ├── StdStyle.sol │ │ │ ├── StdUtils.sol │ │ │ ├── Test.sol │ │ │ ├── Vm.sol │ │ │ ├── console.sol │ │ │ ├── console2.sol │ │ │ ├── interfaces │ │ │ │ ├── IERC1155.sol │ │ │ │ ├── IERC165.sol │ │ │ │ ├── IERC20.sol │ │ │ │ ├── IERC4626.sol │ │ │ │ ├── IERC721.sol │ │ │ │ └── IMulticall3.sol │ │ │ └── safeconsole.sol │ │ └── test │ │ │ ├── StdAssertions.t.sol │ │ │ ├── StdChains.t.sol │ │ │ ├── StdCheats.t.sol │ │ │ ├── StdError.t.sol │ │ │ ├── StdMath.t.sol │ │ │ ├── StdStorage.t.sol │ │ │ ├── StdStyle.t.sol │ │ │ ├── StdUtils.t.sol │ │ │ ├── compilation │ │ │ ├── CompilationScript.sol │ │ │ ├── CompilationScriptBase.sol │ │ │ ├── CompilationTest.sol │ │ │ └── CompilationTestBase.sol │ │ │ └── fixtures │ │ │ └── broadcast.log.json │ ├── openzeppelin-contracts │ │ ├── .changeset │ │ │ └── config.json │ │ ├── .codecov.yml │ │ ├── .editorconfig │ │ ├── .eslintrc │ │ ├── .github │ │ │ ├── ISSUE_TEMPLATE │ │ │ │ ├── bug_report.md │ │ │ │ ├── config.yml │ │ │ │ └── feature_request.md │ │ │ ├── PULL_REQUEST_TEMPLATE.md │ │ │ ├── actions │ │ │ │ ├── gas-compare │ │ │ │ │ └── action.yml │ │ │ │ ├── setup │ │ │ │ │ └── action.yml │ │ │ │ └── storage-layout │ │ │ │ │ └── action.yml │ │ │ └── workflows │ │ │ │ ├── actionlint.yml │ │ │ │ ├── changeset.yml │ │ │ │ ├── checks.yml │ │ │ │ ├── docs.yml │ │ │ │ ├── formal-verification.yml │ │ │ │ ├── release-cycle.yml │ │ │ │ └── upgradeable.yml │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── .mocharc.js │ │ ├── .prettierrc │ │ ├── .solcover.js │ │ ├── .solhint.json │ │ ├── CHANGELOG.md │ │ ├── CODE_OF_CONDUCT.md │ │ ├── CONTRIBUTING.md │ │ ├── GUIDELINES.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── RELEASING.md │ │ ├── SECURITY.md │ │ ├── audits │ │ │ ├── 2017-03.md │ │ │ ├── 2018-10.pdf │ │ │ ├── 2022-10-Checkpoints.pdf │ │ │ ├── 2022-10-ERC4626.pdf │ │ │ ├── 2023-05-v4.9.pdf │ │ │ └── README.md │ │ ├── certora │ │ │ ├── .gitignore │ │ │ ├── Makefile │ │ │ ├── README.md │ │ │ ├── diff │ │ │ │ └── token_ERC721_ERC721.sol.patch │ │ │ ├── harnesses │ │ │ │ ├── AccessControlDefaultAdminRulesHarness.sol │ │ │ │ ├── AccessControlHarness.sol │ │ │ │ ├── DoubleEndedQueueHarness.sol │ │ │ │ ├── ERC20FlashMintHarness.sol │ │ │ │ ├── ERC20PermitHarness.sol │ │ │ │ ├── ERC20WrapperHarness.sol │ │ │ │ ├── ERC3156FlashBorrowerHarness.sol │ │ │ │ ├── ERC721Harness.sol │ │ │ │ ├── ERC721ReceiverHarness.sol │ │ │ │ ├── EnumerableMapHarness.sol │ │ │ │ ├── EnumerableSetHarness.sol │ │ │ │ ├── InitializableHarness.sol │ │ │ │ ├── Ownable2StepHarness.sol │ │ │ │ ├── OwnableHarness.sol │ │ │ │ ├── PausableHarness.sol │ │ │ │ └── TimelockControllerHarness.sol │ │ │ ├── reports │ │ │ │ ├── 2021-10.pdf │ │ │ │ ├── 2022-03.pdf │ │ │ │ └── 2022-05.pdf │ │ │ ├── run.js │ │ │ ├── specs.json │ │ │ └── specs │ │ │ │ ├── AccessControl.spec │ │ │ │ ├── AccessControlDefaultAdminRules.spec │ │ │ │ ├── DoubleEndedQueue.spec │ │ │ │ ├── ERC20.spec │ │ │ │ ├── ERC20FlashMint.spec │ │ │ │ ├── ERC20Wrapper.spec │ │ │ │ ├── ERC721.spec │ │ │ │ ├── EnumerableMap.spec │ │ │ │ ├── EnumerableSet.spec │ │ │ │ ├── Initializable.spec │ │ │ │ ├── Ownable.spec │ │ │ │ ├── Ownable2Step.spec │ │ │ │ ├── Pausable.spec │ │ │ │ ├── TimelockController.spec │ │ │ │ ├── helpers │ │ │ │ └── helpers.spec │ │ │ │ └── methods │ │ │ │ ├── IAccessControl.spec │ │ │ │ ├── IAccessControlDefaultAdminRules.spec │ │ │ │ ├── IERC20.spec │ │ │ │ ├── IERC2612.spec │ │ │ │ ├── IERC3156.spec │ │ │ │ ├── IERC5313.spec │ │ │ │ ├── IERC721.spec │ │ │ │ ├── IOwnable.spec │ │ │ │ └── IOwnable2Step.spec │ │ ├── contracts │ │ │ ├── access │ │ │ │ ├── AccessControl.sol │ │ │ │ ├── AccessControlCrossChain.sol │ │ │ │ ├── AccessControlDefaultAdminRules.sol │ │ │ │ ├── AccessControlEnumerable.sol │ │ │ │ ├── IAccessControl.sol │ │ │ │ ├── IAccessControlDefaultAdminRules.sol │ │ │ │ ├── IAccessControlEnumerable.sol │ │ │ │ ├── Ownable.sol │ │ │ │ ├── Ownable2Step.sol │ │ │ │ └── README.adoc │ │ │ ├── crosschain │ │ │ │ ├── CrossChainEnabled.sol │ │ │ │ ├── README.adoc │ │ │ │ ├── amb │ │ │ │ │ ├── CrossChainEnabledAMB.sol │ │ │ │ │ └── LibAMB.sol │ │ │ │ ├── arbitrum │ │ │ │ │ ├── CrossChainEnabledArbitrumL1.sol │ │ │ │ │ ├── CrossChainEnabledArbitrumL2.sol │ │ │ │ │ ├── LibArbitrumL1.sol │ │ │ │ │ └── LibArbitrumL2.sol │ │ │ │ ├── errors.sol │ │ │ │ ├── optimism │ │ │ │ │ ├── CrossChainEnabledOptimism.sol │ │ │ │ │ └── LibOptimism.sol │ │ │ │ └── polygon │ │ │ │ │ └── CrossChainEnabledPolygonChild.sol │ │ │ ├── finance │ │ │ │ ├── PaymentSplitter.sol │ │ │ │ ├── README.adoc │ │ │ │ └── VestingWallet.sol │ │ │ ├── governance │ │ │ │ ├── Governor.sol │ │ │ │ ├── IGovernor.sol │ │ │ │ ├── README.adoc │ │ │ │ ├── TimelockController.sol │ │ │ │ ├── compatibility │ │ │ │ │ ├── GovernorCompatibilityBravo.sol │ │ │ │ │ └── IGovernorCompatibilityBravo.sol │ │ │ │ ├── extensions │ │ │ │ │ ├── GovernorCountingSimple.sol │ │ │ │ │ ├── GovernorPreventLateQuorum.sol │ │ │ │ │ ├── GovernorProposalThreshold.sol │ │ │ │ │ ├── GovernorSettings.sol │ │ │ │ │ ├── GovernorTimelockCompound.sol │ │ │ │ │ ├── GovernorTimelockControl.sol │ │ │ │ │ ├── GovernorVotes.sol │ │ │ │ │ ├── GovernorVotesComp.sol │ │ │ │ │ ├── GovernorVotesQuorumFraction.sol │ │ │ │ │ └── IGovernorTimelock.sol │ │ │ │ └── utils │ │ │ │ │ ├── IVotes.sol │ │ │ │ │ └── Votes.sol │ │ │ ├── interfaces │ │ │ │ ├── IERC1155.sol │ │ │ │ ├── IERC1155MetadataURI.sol │ │ │ │ ├── IERC1155Receiver.sol │ │ │ │ ├── IERC1271.sol │ │ │ │ ├── IERC1363.sol │ │ │ │ ├── IERC1363Receiver.sol │ │ │ │ ├── IERC1363Spender.sol │ │ │ │ ├── IERC165.sol │ │ │ │ ├── IERC1820Implementer.sol │ │ │ │ ├── IERC1820Registry.sol │ │ │ │ ├── IERC1967.sol │ │ │ │ ├── IERC20.sol │ │ │ │ ├── IERC20Metadata.sol │ │ │ │ ├── IERC2309.sol │ │ │ │ ├── IERC2612.sol │ │ │ │ ├── IERC2981.sol │ │ │ │ ├── IERC3156.sol │ │ │ │ ├── IERC3156FlashBorrower.sol │ │ │ │ ├── IERC3156FlashLender.sol │ │ │ │ ├── IERC4626.sol │ │ │ │ ├── IERC4906.sol │ │ │ │ ├── IERC5267.sol │ │ │ │ ├── IERC5313.sol │ │ │ │ ├── IERC5805.sol │ │ │ │ ├── IERC6372.sol │ │ │ │ ├── IERC721.sol │ │ │ │ ├── IERC721Enumerable.sol │ │ │ │ ├── IERC721Metadata.sol │ │ │ │ ├── IERC721Receiver.sol │ │ │ │ ├── IERC777.sol │ │ │ │ ├── IERC777Recipient.sol │ │ │ │ ├── IERC777Sender.sol │ │ │ │ ├── README.adoc │ │ │ │ ├── draft-IERC1822.sol │ │ │ │ └── draft-IERC2612.sol │ │ │ ├── metatx │ │ │ │ ├── ERC2771Context.sol │ │ │ │ ├── MinimalForwarder.sol │ │ │ │ └── README.adoc │ │ │ ├── mocks │ │ │ │ ├── AccessControlCrossChainMock.sol │ │ │ │ ├── ArraysMock.sol │ │ │ │ ├── CallReceiverMock.sol │ │ │ │ ├── ConditionalEscrowMock.sol │ │ │ │ ├── ContextMock.sol │ │ │ │ ├── DummyImplementation.sol │ │ │ │ ├── EIP712Verifier.sol │ │ │ │ ├── ERC1271WalletMock.sol │ │ │ │ ├── ERC165 │ │ │ │ │ ├── ERC165MaliciousData.sol │ │ │ │ │ ├── ERC165MissingData.sol │ │ │ │ │ ├── ERC165NotSupported.sol │ │ │ │ │ └── ERC165ReturnBomb.sol │ │ │ │ ├── ERC20Mock.sol │ │ │ │ ├── ERC20Reentrant.sol │ │ │ │ ├── ERC2771ContextMock.sol │ │ │ │ ├── ERC3156FlashBorrowerMock.sol │ │ │ │ ├── ERC4626Mock.sol │ │ │ │ ├── EtherReceiverMock.sol │ │ │ │ ├── InitializableMock.sol │ │ │ │ ├── MulticallTest.sol │ │ │ │ ├── MultipleInheritanceInitializableMocks.sol │ │ │ │ ├── PausableMock.sol │ │ │ │ ├── PullPaymentMock.sol │ │ │ │ ├── ReentrancyAttack.sol │ │ │ │ ├── ReentrancyMock.sol │ │ │ │ ├── RegressionImplementation.sol │ │ │ │ ├── SafeMathMemoryCheck.sol │ │ │ │ ├── SingleInheritanceInitializableMocks.sol │ │ │ │ ├── StorageSlotMock.sol │ │ │ │ ├── TimelockReentrant.sol │ │ │ │ ├── TimersBlockNumberImpl.sol │ │ │ │ ├── TimersTimestampImpl.sol │ │ │ │ ├── VotesMock.sol │ │ │ │ ├── compound │ │ │ │ │ └── CompTimelock.sol │ │ │ │ ├── crosschain │ │ │ │ │ ├── bridges.sol │ │ │ │ │ └── receivers.sol │ │ │ │ ├── docs │ │ │ │ │ ├── ERC4626Fees.sol │ │ │ │ │ └── governance │ │ │ │ │ │ ├── MyGovernor.sol │ │ │ │ │ │ ├── MyToken.sol │ │ │ │ │ │ ├── MyTokenTimestampBased.sol │ │ │ │ │ │ └── MyTokenWrapped.sol │ │ │ │ ├── governance │ │ │ │ │ ├── GovernorCompMock.sol │ │ │ │ │ ├── GovernorCompatibilityBravoMock.sol │ │ │ │ │ ├── GovernorMock.sol │ │ │ │ │ ├── GovernorPreventLateQuorumMock.sol │ │ │ │ │ ├── GovernorTimelockCompoundMock.sol │ │ │ │ │ ├── GovernorTimelockControlMock.sol │ │ │ │ │ ├── GovernorVoteMock.sol │ │ │ │ │ └── GovernorWithParamsMock.sol │ │ │ │ ├── proxy │ │ │ │ │ ├── BadBeacon.sol │ │ │ │ │ ├── ClashingImplementation.sol │ │ │ │ │ ├── UUPSLegacy.sol │ │ │ │ │ └── UUPSUpgradeableMock.sol │ │ │ │ ├── token │ │ │ │ │ ├── ERC1155ReceiverMock.sol │ │ │ │ │ ├── ERC20DecimalsMock.sol │ │ │ │ │ ├── ERC20ExcessDecimalsMock.sol │ │ │ │ │ ├── ERC20FlashMintMock.sol │ │ │ │ │ ├── ERC20ForceApproveMock.sol │ │ │ │ │ ├── ERC20MulticallMock.sol │ │ │ │ │ ├── ERC20NoReturnMock.sol │ │ │ │ │ ├── ERC20PermitNoRevertMock.sol │ │ │ │ │ ├── ERC20ReturnFalseMock.sol │ │ │ │ │ ├── ERC20VotesLegacyMock.sol │ │ │ │ │ ├── ERC4626OffsetMock.sol │ │ │ │ │ ├── ERC4646FeesMock.sol │ │ │ │ │ ├── ERC721ConsecutiveEnumerableMock.sol │ │ │ │ │ ├── ERC721ConsecutiveMock.sol │ │ │ │ │ ├── ERC721ReceiverMock.sol │ │ │ │ │ ├── ERC721URIStorageMock.sol │ │ │ │ │ ├── ERC777Mock.sol │ │ │ │ │ ├── ERC777SenderRecipientMock.sol │ │ │ │ │ └── VotesTimestamp.sol │ │ │ │ └── wizard │ │ │ │ │ ├── MyGovernor1.sol │ │ │ │ │ ├── MyGovernor2.sol │ │ │ │ │ └── MyGovernor3.sol │ │ │ ├── package.json │ │ │ ├── proxy │ │ │ │ ├── Clones.sol │ │ │ │ ├── ERC1967 │ │ │ │ │ ├── ERC1967Proxy.sol │ │ │ │ │ └── ERC1967Upgrade.sol │ │ │ │ ├── Proxy.sol │ │ │ │ ├── README.adoc │ │ │ │ ├── beacon │ │ │ │ │ ├── BeaconProxy.sol │ │ │ │ │ ├── IBeacon.sol │ │ │ │ │ └── UpgradeableBeacon.sol │ │ │ │ ├── transparent │ │ │ │ │ ├── ProxyAdmin.sol │ │ │ │ │ └── TransparentUpgradeableProxy.sol │ │ │ │ └── utils │ │ │ │ │ ├── Initializable.sol │ │ │ │ │ └── UUPSUpgradeable.sol │ │ │ ├── security │ │ │ │ ├── Pausable.sol │ │ │ │ ├── PullPayment.sol │ │ │ │ ├── README.adoc │ │ │ │ └── ReentrancyGuard.sol │ │ │ ├── token │ │ │ │ ├── ERC1155 │ │ │ │ │ ├── ERC1155.sol │ │ │ │ │ ├── IERC1155.sol │ │ │ │ │ ├── IERC1155Receiver.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── ERC1155Burnable.sol │ │ │ │ │ │ ├── ERC1155Pausable.sol │ │ │ │ │ │ ├── ERC1155Supply.sol │ │ │ │ │ │ ├── ERC1155URIStorage.sol │ │ │ │ │ │ └── IERC1155MetadataURI.sol │ │ │ │ │ ├── presets │ │ │ │ │ │ ├── ERC1155PresetMinterPauser.sol │ │ │ │ │ │ └── README.md │ │ │ │ │ └── utils │ │ │ │ │ │ ├── ERC1155Holder.sol │ │ │ │ │ │ └── ERC1155Receiver.sol │ │ │ │ ├── ERC20 │ │ │ │ │ ├── ERC20.sol │ │ │ │ │ ├── IERC20.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── ERC20Burnable.sol │ │ │ │ │ │ ├── ERC20Capped.sol │ │ │ │ │ │ ├── ERC20FlashMint.sol │ │ │ │ │ │ ├── ERC20Pausable.sol │ │ │ │ │ │ ├── ERC20Permit.sol │ │ │ │ │ │ ├── ERC20Snapshot.sol │ │ │ │ │ │ ├── ERC20Votes.sol │ │ │ │ │ │ ├── ERC20VotesComp.sol │ │ │ │ │ │ ├── ERC20Wrapper.sol │ │ │ │ │ │ ├── ERC4626.sol │ │ │ │ │ │ ├── IERC20Metadata.sol │ │ │ │ │ │ ├── IERC20Permit.sol │ │ │ │ │ │ ├── draft-ERC20Permit.sol │ │ │ │ │ │ └── draft-IERC20Permit.sol │ │ │ │ │ ├── presets │ │ │ │ │ │ ├── ERC20PresetFixedSupply.sol │ │ │ │ │ │ ├── ERC20PresetMinterPauser.sol │ │ │ │ │ │ └── README.md │ │ │ │ │ └── utils │ │ │ │ │ │ ├── SafeERC20.sol │ │ │ │ │ │ └── TokenTimelock.sol │ │ │ │ ├── ERC721 │ │ │ │ │ ├── ERC721.sol │ │ │ │ │ ├── IERC721.sol │ │ │ │ │ ├── IERC721Receiver.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ ├── extensions │ │ │ │ │ │ ├── ERC721Burnable.sol │ │ │ │ │ │ ├── ERC721Consecutive.sol │ │ │ │ │ │ ├── ERC721Enumerable.sol │ │ │ │ │ │ ├── ERC721Pausable.sol │ │ │ │ │ │ ├── ERC721Royalty.sol │ │ │ │ │ │ ├── ERC721URIStorage.sol │ │ │ │ │ │ ├── ERC721Votes.sol │ │ │ │ │ │ ├── ERC721Wrapper.sol │ │ │ │ │ │ ├── IERC721Enumerable.sol │ │ │ │ │ │ ├── IERC721Metadata.sol │ │ │ │ │ │ └── draft-ERC721Votes.sol │ │ │ │ │ ├── presets │ │ │ │ │ │ ├── ERC721PresetMinterPauserAutoId.sol │ │ │ │ │ │ └── README.md │ │ │ │ │ └── utils │ │ │ │ │ │ └── ERC721Holder.sol │ │ │ │ ├── ERC777 │ │ │ │ │ ├── ERC777.sol │ │ │ │ │ ├── IERC777.sol │ │ │ │ │ ├── IERC777Recipient.sol │ │ │ │ │ ├── IERC777Sender.sol │ │ │ │ │ ├── README.adoc │ │ │ │ │ └── presets │ │ │ │ │ │ └── ERC777PresetFixedSupply.sol │ │ │ │ └── common │ │ │ │ │ ├── ERC2981.sol │ │ │ │ │ └── README.adoc │ │ │ ├── utils │ │ │ │ ├── Address.sol │ │ │ │ ├── Arrays.sol │ │ │ │ ├── Base64.sol │ │ │ │ ├── Checkpoints.sol │ │ │ │ ├── Context.sol │ │ │ │ ├── Counters.sol │ │ │ │ ├── Create2.sol │ │ │ │ ├── Multicall.sol │ │ │ │ ├── README.adoc │ │ │ │ ├── ShortStrings.sol │ │ │ │ ├── StorageSlot.sol │ │ │ │ ├── Strings.sol │ │ │ │ ├── Timers.sol │ │ │ │ ├── cryptography │ │ │ │ │ ├── ECDSA.sol │ │ │ │ │ ├── EIP712.sol │ │ │ │ │ ├── MerkleProof.sol │ │ │ │ │ ├── SignatureChecker.sol │ │ │ │ │ └── draft-EIP712.sol │ │ │ │ ├── escrow │ │ │ │ │ ├── ConditionalEscrow.sol │ │ │ │ │ ├── Escrow.sol │ │ │ │ │ └── RefundEscrow.sol │ │ │ │ ├── introspection │ │ │ │ │ ├── ERC165.sol │ │ │ │ │ ├── ERC165Checker.sol │ │ │ │ │ ├── ERC165Storage.sol │ │ │ │ │ ├── ERC1820Implementer.sol │ │ │ │ │ ├── IERC165.sol │ │ │ │ │ ├── IERC1820Implementer.sol │ │ │ │ │ └── IERC1820Registry.sol │ │ │ │ ├── math │ │ │ │ │ ├── Math.sol │ │ │ │ │ ├── SafeCast.sol │ │ │ │ │ ├── SafeMath.sol │ │ │ │ │ ├── SignedMath.sol │ │ │ │ │ └── SignedSafeMath.sol │ │ │ │ └── structs │ │ │ │ │ ├── BitMaps.sol │ │ │ │ │ ├── DoubleEndedQueue.sol │ │ │ │ │ ├── EnumerableMap.sol │ │ │ │ │ └── EnumerableSet.sol │ │ │ └── vendor │ │ │ │ ├── amb │ │ │ │ └── IAMB.sol │ │ │ │ ├── arbitrum │ │ │ │ ├── IArbSys.sol │ │ │ │ ├── IBridge.sol │ │ │ │ ├── IDelayedMessageProvider.sol │ │ │ │ ├── IInbox.sol │ │ │ │ └── IOutbox.sol │ │ │ │ ├── compound │ │ │ │ ├── ICompoundTimelock.sol │ │ │ │ └── LICENSE │ │ │ │ ├── optimism │ │ │ │ ├── ICrossDomainMessenger.sol │ │ │ │ └── LICENSE │ │ │ │ └── polygon │ │ │ │ └── IFxMessageProcessor.sol │ │ ├── docs │ │ │ ├── README.md │ │ │ ├── antora.yml │ │ │ ├── config.js │ │ │ ├── modules │ │ │ │ └── ROOT │ │ │ │ │ ├── images │ │ │ │ │ ├── erc4626-attack-3a.png │ │ │ │ │ ├── erc4626-attack-3b.png │ │ │ │ │ ├── erc4626-attack-6.png │ │ │ │ │ ├── erc4626-attack.png │ │ │ │ │ ├── erc4626-deposit.png │ │ │ │ │ ├── erc4626-mint.png │ │ │ │ │ ├── erc4626-rate-linear.png │ │ │ │ │ ├── erc4626-rate-loglog.png │ │ │ │ │ ├── erc4626-rate-loglogext.png │ │ │ │ │ ├── tally-exec.png │ │ │ │ │ └── tally-vote.png │ │ │ │ │ ├── nav.adoc │ │ │ │ │ └── pages │ │ │ │ │ ├── access-control.adoc │ │ │ │ │ ├── crosschain.adoc │ │ │ │ │ ├── crowdsales.adoc │ │ │ │ │ ├── drafts.adoc │ │ │ │ │ ├── erc1155.adoc │ │ │ │ │ ├── erc20-supply.adoc │ │ │ │ │ ├── erc20.adoc │ │ │ │ │ ├── erc4626.adoc │ │ │ │ │ ├── erc721.adoc │ │ │ │ │ ├── erc777.adoc │ │ │ │ │ ├── extending-contracts.adoc │ │ │ │ │ ├── governance.adoc │ │ │ │ │ ├── index.adoc │ │ │ │ │ ├── releases-stability.adoc │ │ │ │ │ ├── tokens.adoc │ │ │ │ │ ├── upgradeable.adoc │ │ │ │ │ ├── utilities.adoc │ │ │ │ │ └── wizard.adoc │ │ │ └── templates │ │ │ │ ├── contract.hbs │ │ │ │ ├── helpers.js │ │ │ │ ├── page.hbs │ │ │ │ └── properties.js │ │ ├── foundry.toml │ │ ├── hardhat.config.js │ │ ├── hardhat │ │ │ ├── env-artifacts.js │ │ │ ├── env-contract.js │ │ │ ├── ignore-unreachable-warnings.js │ │ │ ├── skip-foundry-tests.js │ │ │ └── task-test-get-files.js │ │ ├── lib │ │ │ ├── erc4626-tests │ │ │ │ ├── ERC4626.prop.sol │ │ │ │ ├── ERC4626.test.sol │ │ │ │ ├── LICENSE │ │ │ │ └── README.md │ │ │ └── forge-std │ │ │ │ ├── .github │ │ │ │ └── workflows │ │ │ │ │ └── ci.yml │ │ │ │ ├── .gitignore │ │ │ │ ├── .gitmodules │ │ │ │ ├── LICENSE-APACHE │ │ │ │ ├── LICENSE-MIT │ │ │ │ ├── README.md │ │ │ │ ├── foundry.toml │ │ │ │ ├── lib │ │ │ │ └── ds-test │ │ │ │ │ ├── .github │ │ │ │ │ └── workflows │ │ │ │ │ │ └── build.yml │ │ │ │ │ ├── .gitignore │ │ │ │ │ ├── LICENSE │ │ │ │ │ ├── Makefile │ │ │ │ │ ├── default.nix │ │ │ │ │ ├── demo │ │ │ │ │ └── demo.sol │ │ │ │ │ ├── package.json │ │ │ │ │ └── src │ │ │ │ │ ├── test.sol │ │ │ │ │ └── test.t.sol │ │ │ │ ├── package.json │ │ │ │ ├── src │ │ │ │ ├── Base.sol │ │ │ │ ├── Script.sol │ │ │ │ ├── StdAssertions.sol │ │ │ │ ├── StdChains.sol │ │ │ │ ├── StdCheats.sol │ │ │ │ ├── StdError.sol │ │ │ │ ├── StdInvariant.sol │ │ │ │ ├── StdJson.sol │ │ │ │ ├── StdMath.sol │ │ │ │ ├── StdStorage.sol │ │ │ │ ├── StdStyle.sol │ │ │ │ ├── StdUtils.sol │ │ │ │ ├── Test.sol │ │ │ │ ├── Vm.sol │ │ │ │ ├── console.sol │ │ │ │ ├── console2.sol │ │ │ │ └── interfaces │ │ │ │ │ ├── IERC1155.sol │ │ │ │ │ ├── IERC165.sol │ │ │ │ │ ├── IERC20.sol │ │ │ │ │ ├── IERC4626.sol │ │ │ │ │ ├── IERC721.sol │ │ │ │ │ └── IMulticall3.sol │ │ │ │ └── test │ │ │ │ ├── StdAssertions.t.sol │ │ │ │ ├── StdChains.t.sol │ │ │ │ ├── StdCheats.t.sol │ │ │ │ ├── StdError.t.sol │ │ │ │ ├── StdMath.t.sol │ │ │ │ ├── StdStorage.t.sol │ │ │ │ ├── StdStyle.t.sol │ │ │ │ ├── StdUtils.t.sol │ │ │ │ ├── compilation │ │ │ │ ├── CompilationScript.sol │ │ │ │ ├── CompilationScriptBase.sol │ │ │ │ ├── CompilationTest.sol │ │ │ │ └── CompilationTestBase.sol │ │ │ │ └── fixtures │ │ │ │ └── broadcast.log.json │ │ ├── logo.svg │ │ ├── netlify.toml │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── remappings.txt │ │ ├── renovate.json │ │ ├── requirements.txt │ │ ├── scripts │ │ │ ├── checks │ │ │ │ ├── compare-layout.js │ │ │ │ ├── compareGasReports.js │ │ │ │ ├── extract-layout.js │ │ │ │ ├── generation.sh │ │ │ │ └── inheritance-ordering.js │ │ │ ├── gen-nav.js │ │ │ ├── generate │ │ │ │ ├── format-lines.js │ │ │ │ ├── run.js │ │ │ │ └── templates │ │ │ │ │ ├── Checkpoints.js │ │ │ │ │ ├── Checkpoints.opts.js │ │ │ │ │ ├── Checkpoints.t.js │ │ │ │ │ ├── EnumerableMap.js │ │ │ │ │ ├── EnumerableSet.js │ │ │ │ │ ├── SafeCast.js │ │ │ │ │ ├── StorageSlot.js │ │ │ │ │ └── conversion.js │ │ │ ├── git-user-config.sh │ │ │ ├── helpers.js │ │ │ ├── migrate-imports.js │ │ │ ├── prepack.sh │ │ │ ├── prepare-contracts-package.sh │ │ │ ├── prepare-docs.sh │ │ │ ├── prepare.sh │ │ │ ├── release │ │ │ │ ├── format-changelog.js │ │ │ │ ├── synchronize-versions.js │ │ │ │ ├── update-comment.js │ │ │ │ ├── version.sh │ │ │ │ └── workflow │ │ │ │ │ ├── exit-prerelease.sh │ │ │ │ │ ├── github-release.js │ │ │ │ │ ├── integrity-check.sh │ │ │ │ │ ├── pack.sh │ │ │ │ │ ├── publish.sh │ │ │ │ │ ├── rerun.js │ │ │ │ │ ├── set-changesets-pr-title.js │ │ │ │ │ ├── start.sh │ │ │ │ │ └── state.js │ │ │ ├── remove-ignored-artifacts.js │ │ │ ├── update-docs-branch.js │ │ │ └── upgradeable │ │ │ │ ├── README.md │ │ │ │ ├── patch-apply.sh │ │ │ │ ├── patch-save.sh │ │ │ │ ├── transpile-onto.sh │ │ │ │ ├── transpile.sh │ │ │ │ └── upgradeable.patch │ │ ├── slither.config.json │ │ └── test │ │ │ ├── TESTING.md │ │ │ ├── access │ │ │ ├── AccessControl.behavior.js │ │ │ ├── AccessControl.test.js │ │ │ ├── AccessControlCrossChain.test.js │ │ │ ├── AccessControlDefaultAdminRules.test.js │ │ │ ├── AccessControlEnumerable.test.js │ │ │ ├── Ownable.test.js │ │ │ └── Ownable2Step.test.js │ │ │ ├── crosschain │ │ │ └── CrossChainEnabled.test.js │ │ │ ├── finance │ │ │ ├── PaymentSplitter.test.js │ │ │ ├── VestingWallet.behavior.js │ │ │ └── VestingWallet.test.js │ │ │ ├── governance │ │ │ ├── Governor.t.sol │ │ │ ├── Governor.test.js │ │ │ ├── TimelockController.test.js │ │ │ ├── compatibility │ │ │ │ └── GovernorCompatibilityBravo.test.js │ │ │ ├── extensions │ │ │ │ ├── GovernorComp.test.js │ │ │ │ ├── GovernorERC721.test.js │ │ │ │ ├── GovernorPreventLateQuorum.test.js │ │ │ │ ├── GovernorTimelockCompound.test.js │ │ │ │ ├── GovernorTimelockControl.test.js │ │ │ │ ├── GovernorVotesQuorumFraction.test.js │ │ │ │ └── GovernorWithParams.test.js │ │ │ └── utils │ │ │ │ ├── EIP6372.behavior.js │ │ │ │ ├── Votes.behavior.js │ │ │ │ └── Votes.test.js │ │ │ ├── helpers │ │ │ ├── chainid.js │ │ │ ├── create2.js │ │ │ ├── crosschain.js │ │ │ ├── customError.js │ │ │ ├── eip712.js │ │ │ ├── enums.js │ │ │ ├── erc1967.js │ │ │ ├── governance.js │ │ │ ├── map-values.js │ │ │ ├── sign.js │ │ │ ├── time.js │ │ │ └── txpool.js │ │ │ ├── metatx │ │ │ ├── ERC2771Context.test.js │ │ │ └── MinimalForwarder.test.js │ │ │ ├── migrate-imports.test.js │ │ │ ├── proxy │ │ │ ├── Clones.behaviour.js │ │ │ ├── Clones.test.js │ │ │ ├── ERC1967 │ │ │ │ └── ERC1967Proxy.test.js │ │ │ ├── Proxy.behaviour.js │ │ │ ├── beacon │ │ │ │ ├── BeaconProxy.test.js │ │ │ │ └── UpgradeableBeacon.test.js │ │ │ ├── transparent │ │ │ │ ├── ProxyAdmin.test.js │ │ │ │ ├── TransparentUpgradeableProxy.behaviour.js │ │ │ │ └── TransparentUpgradeableProxy.test.js │ │ │ └── utils │ │ │ │ ├── Initializable.test.js │ │ │ │ └── UUPSUpgradeable.test.js │ │ │ ├── security │ │ │ ├── Pausable.test.js │ │ │ ├── PullPayment.test.js │ │ │ └── ReentrancyGuard.test.js │ │ │ ├── token │ │ │ ├── ERC1155 │ │ │ │ ├── ERC1155.behavior.js │ │ │ │ ├── ERC1155.test.js │ │ │ │ ├── extensions │ │ │ │ │ ├── ERC1155Burnable.test.js │ │ │ │ │ ├── ERC1155Pausable.test.js │ │ │ │ │ ├── ERC1155Supply.test.js │ │ │ │ │ └── ERC1155URIStorage.test.js │ │ │ │ ├── presets │ │ │ │ │ └── ERC1155PresetMinterPauser.test.js │ │ │ │ └── utils │ │ │ │ │ └── ERC1155Holder.test.js │ │ │ ├── ERC20 │ │ │ │ ├── ERC20.behavior.js │ │ │ │ ├── ERC20.test.js │ │ │ │ ├── extensions │ │ │ │ │ ├── ERC20Burnable.behavior.js │ │ │ │ │ ├── ERC20Burnable.test.js │ │ │ │ │ ├── ERC20Capped.behavior.js │ │ │ │ │ ├── ERC20Capped.test.js │ │ │ │ │ ├── ERC20FlashMint.test.js │ │ │ │ │ ├── ERC20Pausable.test.js │ │ │ │ │ ├── ERC20Snapshot.test.js │ │ │ │ │ ├── ERC20Votes.test.js │ │ │ │ │ ├── ERC20VotesComp.test.js │ │ │ │ │ ├── ERC20Wrapper.test.js │ │ │ │ │ ├── ERC4626.t.sol │ │ │ │ │ ├── ERC4626.test.js │ │ │ │ │ └── draft-ERC20Permit.test.js │ │ │ │ ├── presets │ │ │ │ │ ├── ERC20PresetFixedSupply.test.js │ │ │ │ │ └── ERC20PresetMinterPauser.test.js │ │ │ │ └── utils │ │ │ │ │ ├── SafeERC20.test.js │ │ │ │ │ └── TokenTimelock.test.js │ │ │ ├── ERC721 │ │ │ │ ├── ERC721.behavior.js │ │ │ │ ├── ERC721.test.js │ │ │ │ ├── ERC721Enumerable.test.js │ │ │ │ ├── extensions │ │ │ │ │ ├── ERC721Burnable.test.js │ │ │ │ │ ├── ERC721Consecutive.t.sol │ │ │ │ │ ├── ERC721Consecutive.test.js │ │ │ │ │ ├── ERC721Pausable.test.js │ │ │ │ │ ├── ERC721Royalty.test.js │ │ │ │ │ ├── ERC721URIStorage.test.js │ │ │ │ │ ├── ERC721Votes.test.js │ │ │ │ │ └── ERC721Wrapper.test.js │ │ │ │ ├── presets │ │ │ │ │ └── ERC721PresetMinterPauserAutoId.test.js │ │ │ │ └── utils │ │ │ │ │ └── ERC721Holder.test.js │ │ │ ├── ERC777 │ │ │ │ ├── ERC777.behavior.js │ │ │ │ ├── ERC777.test.js │ │ │ │ └── presets │ │ │ │ │ └── ERC777PresetFixedSupply.test.js │ │ │ └── common │ │ │ │ └── ERC2981.behavior.js │ │ │ └── utils │ │ │ ├── Address.test.js │ │ │ ├── Arrays.test.js │ │ │ ├── Base64.test.js │ │ │ ├── Checkpoints.t.sol │ │ │ ├── Checkpoints.test.js │ │ │ ├── Context.behavior.js │ │ │ ├── Context.test.js │ │ │ ├── Counters.test.js │ │ │ ├── Create2.test.js │ │ │ ├── Multicall.test.js │ │ │ ├── ShortStrings.t.sol │ │ │ ├── ShortStrings.test.js │ │ │ ├── StorageSlot.test.js │ │ │ ├── Strings.test.js │ │ │ ├── TimersBlockNumberImpl.test.js │ │ │ ├── TimersTimestamp.test.js │ │ │ ├── cryptography │ │ │ ├── ECDSA.test.js │ │ │ ├── EIP712.test.js │ │ │ ├── MerkleProof.test.js │ │ │ └── SignatureChecker.test.js │ │ │ ├── escrow │ │ │ ├── ConditionalEscrow.test.js │ │ │ ├── Escrow.behavior.js │ │ │ ├── Escrow.test.js │ │ │ └── RefundEscrow.test.js │ │ │ ├── introspection │ │ │ ├── ERC165.test.js │ │ │ ├── ERC165Checker.test.js │ │ │ ├── ERC165Storage.test.js │ │ │ ├── ERC1820Implementer.test.js │ │ │ └── SupportsInterface.behavior.js │ │ │ ├── math │ │ │ ├── Math.t.sol │ │ │ ├── Math.test.js │ │ │ ├── SafeCast.test.js │ │ │ ├── SafeMath.test.js │ │ │ ├── SignedMath.test.js │ │ │ └── SignedSafeMath.test.js │ │ │ └── structs │ │ │ ├── BitMap.test.js │ │ │ ├── DoubleEndedQueue.test.js │ │ │ ├── EnumerableMap.behavior.js │ │ │ ├── EnumerableMap.test.js │ │ │ ├── EnumerableSet.behavior.js │ │ │ └── EnumerableSet.test.js │ ├── safe-contracts │ │ ├── .env.sample │ │ ├── .gitattributes │ │ ├── .github │ │ │ ├── ISSUE_TEMPLATE │ │ │ │ ├── bug_report.md │ │ │ │ └── feature_request.md │ │ │ └── workflows │ │ │ │ └── ci.yml │ │ ├── .gitignore │ │ ├── .husky │ │ │ ├── .gitignore │ │ │ └── pre-commit │ │ ├── .nvmrc │ │ ├── .prettierrc │ │ ├── .solcover.js │ │ ├── .solhint.json │ │ ├── .vscode │ │ │ └── launch.json │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── benchmark │ │ │ ├── GnosisSafe.Creation.spec.ts │ │ │ ├── GnosisSafe.ERC1155.spec.ts │ │ │ ├── GnosisSafe.ERC20.spec.ts │ │ │ ├── GnosisSafe.Ether.spec.ts │ │ │ ├── GnosisSafe.Proxy.spec.ts │ │ │ └── utils │ │ │ │ └── setup.ts │ │ ├── contracts │ │ │ ├── GnosisSafe.sol │ │ │ ├── GnosisSafeL2.sol │ │ │ ├── accessors │ │ │ │ └── SimulateTxAccessor.sol │ │ │ ├── base │ │ │ │ ├── Executor.sol │ │ │ │ ├── FallbackManager.sol │ │ │ │ ├── GuardManager.sol │ │ │ │ ├── ModuleManager.sol │ │ │ │ └── OwnerManager.sol │ │ │ ├── common │ │ │ │ ├── Enum.sol │ │ │ │ ├── EtherPaymentFallback.sol │ │ │ │ ├── SecuredTokenTransfer.sol │ │ │ │ ├── SelfAuthorized.sol │ │ │ │ ├── SignatureDecoder.sol │ │ │ │ ├── Singleton.sol │ │ │ │ └── StorageAccessible.sol │ │ │ ├── examples │ │ │ │ ├── guards │ │ │ │ │ ├── DebugTransactionGuard.sol │ │ │ │ │ ├── DelegateCallTransactionGuard.sol │ │ │ │ │ └── ReentrancyTransactionGuard.sol │ │ │ │ └── libraries │ │ │ │ │ ├── GnosisSafeStorage.sol │ │ │ │ │ ├── Migrate_1_3_0_to_1_2_0.sol │ │ │ │ │ └── SignMessage.sol │ │ │ ├── external │ │ │ │ └── GnosisSafeMath.sol │ │ │ ├── handler │ │ │ │ ├── CompatibilityFallbackHandler.sol │ │ │ │ ├── DefaultCallbackHandler.sol │ │ │ │ └── HandlerContext.sol │ │ │ ├── interfaces │ │ │ │ ├── ERC1155TokenReceiver.sol │ │ │ │ ├── ERC721TokenReceiver.sol │ │ │ │ ├── ERC777TokensRecipient.sol │ │ │ │ ├── IERC165.sol │ │ │ │ ├── ISignatureValidator.sol │ │ │ │ └── ViewStorageAccessible.sol │ │ │ ├── libraries │ │ │ │ ├── CreateCall.sol │ │ │ │ ├── MultiSend.sol │ │ │ │ └── MultiSendCallOnly.sol │ │ │ ├── proxies │ │ │ │ ├── GnosisSafeProxy.sol │ │ │ │ ├── GnosisSafeProxyFactory.sol │ │ │ │ └── IProxyCreationCallback.sol │ │ │ └── test │ │ │ │ ├── ERC1155Token.sol │ │ │ │ ├── ERC20Token.sol │ │ │ │ ├── TestHandler.sol │ │ │ │ └── Token.sol │ │ ├── docs │ │ │ ├── Gnosis_Safe_Audit_Report.pdf │ │ │ ├── Gnosis_Safe_Audit_Report_1_1_0.pdf │ │ │ ├── Gnosis_Safe_Audit_Report_1_1_1.pdf │ │ │ ├── Gnosis_Safe_Audit_Report_1_2_0.pdf │ │ │ ├── Gnosis_Safe_Audit_Report_1_3_0_Final.pdf │ │ │ ├── Gnosis_Safe_Audit_Report_1_3_0_Initial.pdf │ │ │ ├── Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf │ │ │ ├── Gnosis_Safe_Symbolic_Execution.pdf │ │ │ ├── alexey_audit.md │ │ │ ├── audit_1_1_1.md │ │ │ ├── audit_1_2_0.md │ │ │ ├── audit_1_3_0.md │ │ │ ├── error_codes.md │ │ │ ├── guidelines.md │ │ │ └── rv_1_0_0.md │ │ ├── hardhat.config.ts │ │ ├── package.json │ │ ├── src │ │ │ ├── deploy │ │ │ │ ├── deploy_accessors.ts │ │ │ │ ├── deploy_factories.ts │ │ │ │ ├── deploy_handlers.ts │ │ │ │ ├── deploy_libraries.ts │ │ │ │ ├── deploy_safe_l2.ts │ │ │ │ └── deploy_safe_singleton.ts │ │ │ ├── index.ts │ │ │ ├── tasks │ │ │ │ ├── deploy_contracts.ts │ │ │ │ ├── local_verify.ts │ │ │ │ └── show_codesize.ts │ │ │ └── utils │ │ │ │ ├── constants.ts │ │ │ │ ├── execution.ts │ │ │ │ ├── multisend.ts │ │ │ │ ├── proxies.ts │ │ │ │ └── solc.ts │ │ ├── test │ │ │ ├── accessors │ │ │ │ └── SimulateTxAccessor.spec.ts │ │ │ ├── core │ │ │ │ ├── GnosisSafe.Estimation.spec.ts │ │ │ │ ├── GnosisSafe.Execution.spec.ts │ │ │ │ ├── GnosisSafe.FallbackManager.spec.ts │ │ │ │ ├── GnosisSafe.GuardManager.spec.ts │ │ │ │ ├── GnosisSafe.Incoming.spec.ts │ │ │ │ ├── GnosisSafe.ModuleManager.spec.ts │ │ │ │ ├── GnosisSafe.OwnerManager.spec.ts │ │ │ │ ├── GnosisSafe.Setup.spec.ts │ │ │ │ ├── GnosisSafe.Signatures.spec.ts │ │ │ │ └── GnosisSafe.StorageAccessible.spec.ts │ │ │ ├── factory │ │ │ │ ├── Proxy.spec.ts │ │ │ │ └── ProxyFactory.spec.ts │ │ │ ├── guards │ │ │ │ ├── DebugTransactionGuard.spec.ts │ │ │ │ ├── DelegateCallTransactionGuard.spec.ts │ │ │ │ └── ReentrencyTransactionGuard.spec.ts │ │ │ ├── handlers │ │ │ │ ├── CompatibilityFallbackHandler.spec.ts │ │ │ │ ├── DefaultCallbackHandler.spec.ts │ │ │ │ └── HandlerContext.spec.ts │ │ │ ├── integration │ │ │ │ ├── GnosisSafe.0xExploit.spec.ts │ │ │ │ ├── GnosisSafe.ERC1155.spec.ts │ │ │ │ └── GnosisSafe.ReservedAddresses.spec.ts │ │ │ ├── json │ │ │ │ └── safeDeployment.json │ │ │ ├── l2 │ │ │ │ └── GnosisSafe.Execution.spec.ts │ │ │ ├── libraries │ │ │ │ ├── CreateCall.spec.ts │ │ │ │ ├── Migration.spec.ts │ │ │ │ ├── MultiSend.spec.ts │ │ │ │ ├── MultiSendCallOnly.spec.ts │ │ │ │ └── SignMessageLib.spec.ts │ │ │ ├── migration │ │ │ │ ├── UpgradeFromSafe111.spec.ts │ │ │ │ ├── UpgradeFromSafe120.spec.ts │ │ │ │ └── subTests.spec.ts │ │ │ └── utils │ │ │ │ ├── config.ts │ │ │ │ ├── contracts.ts │ │ │ │ ├── encoding.ts │ │ │ │ └── setup.ts │ │ ├── tests_deprecated │ │ │ ├── gnosisSafeNestedSafes.js │ │ │ ├── gnosisSafeTransactionExecution.js │ │ │ └── utils │ │ │ │ ├── execution.js │ │ │ │ └── general.js │ │ ├── tsconfig.json │ │ ├── types │ │ │ └── solc.d.ts │ │ └── yarn.lock │ └── solady │ │ ├── .github │ │ ├── pull_request_template.md │ │ └── workflows │ │ │ ├── ci-all-via-ir.yml │ │ │ ├── ci-woke.yml │ │ │ └── ci.yml │ │ ├── .gitignore │ │ ├── .gitmodules │ │ ├── LICENSE.txt │ │ ├── README.md │ │ ├── audits │ │ ├── ackee-blockchain-solady-report.pdf │ │ └── shung-solady-erc721-audit.pdf │ │ ├── ext │ │ └── woke │ │ │ ├── EIP712Mock.sol │ │ │ ├── ERC1155Mock.sol │ │ │ ├── ERC20Mock.sol │ │ │ ├── ERC721Mock.sol │ │ │ ├── MerkleProofMock.sol │ │ │ ├── NoETHMock.sol │ │ │ ├── SignatureCheckerMock.sol │ │ │ ├── __init__.py │ │ │ ├── test_eip712.py │ │ │ ├── test_eip712_fuzz.py │ │ │ ├── test_erc1155.py │ │ │ ├── test_erc1155_fuzz.py │ │ │ ├── test_erc20.py │ │ │ ├── test_erc721_fuzz.py │ │ │ ├── test_merkle_proof.py │ │ │ ├── test_merkle_proof_fuzz.py │ │ │ ├── test_signature_checker_fuzz.py │ │ │ ├── utils.py │ │ │ ├── weird │ │ │ ├── Approval.sol │ │ │ ├── ApprovalToZero.sol │ │ │ ├── BlockList.sol │ │ │ ├── Bytes32Metadata.sol │ │ │ ├── DaiPermit.sol │ │ │ ├── ERC20.sol │ │ │ ├── HighDecimals.sol │ │ │ ├── LowDecimals.sol │ │ │ ├── MissingReturns.sol │ │ │ ├── NoRevert.sol │ │ │ ├── Pausable.sol │ │ │ ├── Proxied.sol │ │ │ ├── Reentrant.sol │ │ │ ├── ReturnsFalse.sol │ │ │ ├── RevertToZero.sol │ │ │ ├── RevertZero.sol │ │ │ ├── TransferFee.sol │ │ │ ├── Uint96.sol │ │ │ └── Upgradable.sol │ │ │ ├── woke-via-ir.toml │ │ │ └── woke.toml │ │ ├── foundry.toml │ │ ├── js │ │ ├── solady.js │ │ └── solady.test.js │ │ ├── lib │ │ └── ds-test │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── Makefile │ │ │ ├── default.nix │ │ │ ├── demo │ │ │ └── demo.sol │ │ │ └── src │ │ │ └── test.sol │ │ ├── logo.svg │ │ ├── package-lock.json │ │ ├── package.json │ │ ├── src │ │ ├── Milady.sol │ │ ├── auth │ │ │ ├── Ownable.sol │ │ │ └── OwnableRoles.sol │ │ ├── tokens │ │ │ ├── ERC1155.sol │ │ │ ├── ERC20.sol │ │ │ ├── ERC2981.sol │ │ │ ├── ERC4626.sol │ │ │ ├── ERC721.sol │ │ │ └── WETH.sol │ │ └── utils │ │ │ ├── Base64.sol │ │ │ ├── CREATE3.sol │ │ │ ├── Clone.sol │ │ │ ├── DateTimeLib.sol │ │ │ ├── DynamicBufferLib.sol │ │ │ ├── ECDSA.sol │ │ │ ├── EIP712.sol │ │ │ ├── ERC1967Factory.sol │ │ │ ├── ERC1967FactoryConstants.sol │ │ │ ├── FixedPointMathLib.sol │ │ │ ├── LibBit.sol │ │ │ ├── LibBitmap.sol │ │ │ ├── LibClone.sol │ │ │ ├── LibMap.sol │ │ │ ├── LibPRNG.sol │ │ │ ├── LibRLP.sol │ │ │ ├── LibSort.sol │ │ │ ├── LibString.sol │ │ │ ├── LibZip.sol │ │ │ ├── MerkleProofLib.sol │ │ │ ├── MetadataReaderLib.sol │ │ │ ├── MinHeapLib.sol │ │ │ ├── Multicallable.sol │ │ │ ├── RedBlackTreeLib.sol │ │ │ ├── SSTORE2.sol │ │ │ ├── SafeCastLib.sol │ │ │ ├── SafeTransferLib.sol │ │ │ └── SignatureCheckerLib.sol │ │ └── test │ │ ├── Base64.t.sol │ │ ├── CREATE3.t.sol │ │ ├── DateTimeLib.t.sol │ │ ├── DynamicBufferLib.t.sol │ │ ├── ECDSA.t.sol │ │ ├── EIP712.t.sol │ │ ├── ERC1155.t.sol │ │ ├── ERC1967Factory.t.sol │ │ ├── ERC20.t.sol │ │ ├── ERC2981.t.sol │ │ ├── ERC4626.t.sol │ │ ├── ERC721.t.sol │ │ ├── FixedPointMathLib.t.sol │ │ ├── LibBit.t.sol │ │ ├── LibBitmap.t.sol │ │ ├── LibClone.t.sol │ │ ├── LibMap.t.sol │ │ ├── LibPRNG.t.sol │ │ ├── LibRLP.t.sol │ │ ├── LibSort.t.sol │ │ ├── LibString.t.sol │ │ ├── LibZip.t.sol │ │ ├── MerkleProofLib.t.sol │ │ ├── MetadataReaderLib.t.sol │ │ ├── MinHeapLib.t.sol │ │ ├── Multicallable.t.sol │ │ ├── Ownable.t.sol │ │ ├── OwnableRoles.t.sol │ │ ├── README.md │ │ ├── RedBlackTree.t.sol │ │ ├── SSTORE2.t.sol │ │ ├── SafeCastLib.t.sol │ │ ├── SafeTransferLib.t.sol │ │ ├── SignatureCheckerLib.t.sol │ │ ├── WETH.t.sol │ │ └── utils │ │ ├── InvariantTest.sol │ │ ├── SoladyTest.sol │ │ ├── TestPlus.sol │ │ ├── forge-std │ │ ├── Script.sol │ │ ├── Test.sol │ │ ├── Vm.sol │ │ └── console.sol │ │ ├── mocks │ │ ├── MockCd.sol │ │ ├── MockEIP712.sol │ │ ├── MockERC1155.sol │ │ ├── MockERC1271Malicious.sol │ │ ├── MockERC1271Wallet.sol │ │ ├── MockERC20.sol │ │ ├── MockERC20LikeUSDT.sol │ │ ├── MockERC2981.sol │ │ ├── MockERC4626.sol │ │ ├── MockERC721.sol │ │ ├── MockETHRecipient.sol │ │ ├── MockImplementation.sol │ │ ├── MockMulticallable.sol │ │ ├── MockOwnable.sol │ │ └── MockOwnableRoles.sol │ │ └── weird-tokens │ │ ├── MissingReturnToken.sol │ │ ├── ReturnsFalseToken.sol │ │ ├── ReturnsRawBytesToken.sol │ │ ├── ReturnsTooLittleToken.sol │ │ ├── ReturnsTooMuchToken.sol │ │ ├── ReturnsTwoToken.sol │ │ └── RevertingToken.sol ├── makefile ├── offchain │ ├── addressManager.ts │ ├── addresses │ │ ├── arb.json │ │ ├── avax.json │ │ ├── base.json │ │ ├── bsc.json │ │ ├── ftm.json │ │ ├── goerli.json │ │ ├── mainnet.json │ │ ├── optimism.json │ │ ├── polygon.json │ │ └── zkevm.json │ ├── slitherSeverity.ts │ └── verify.ts ├── package.json ├── remappings.txt ├── scope.txt ├── script │ ├── deploy_DeployProtocol.s.sol │ └── utils │ │ ├── ConsoleFactory.s.sol │ │ ├── ConstantSetup.s.sol │ │ └── Deployer.sol ├── slither.config.json ├── sonar-project.properties ├── src │ ├── core │ │ ├── AddressProvider.sol │ │ ├── AddressProviderService.sol │ │ ├── ConsoleFallbackHandler.sol │ │ ├── ConsoleOpBuilder.sol │ │ ├── Constants.sol │ │ ├── ExecutorPlugin.sol │ │ ├── PolicyValidator.sol │ │ ├── SafeDeployer.sol │ │ ├── SafeEnabler.sol │ │ ├── SafeModerator.sol │ │ ├── SafeModeratorOverridable.sol │ │ ├── TransactionValidator.sol │ │ └── registries │ │ │ ├── ExecutorRegistry.sol │ │ │ ├── PolicyRegistry.sol │ │ │ └── WalletRegistry.sol │ └── libraries │ │ ├── SafeHelper.sol │ │ └── TypeHashHelper.sol ├── test │ ├── branch-trees │ │ ├── AddressProvider │ │ │ ├── AddressProvider.misc.t.sol │ │ │ ├── accept-governance │ │ │ │ ├── AcceptGovernance.t.sol │ │ │ │ └── AcceptGovernance.tree │ │ │ ├── set-authorized-address │ │ │ │ ├── SetAuthorizedAddress.t.sol │ │ │ │ └── SetAuthorizedAddress.tree │ │ │ ├── set-governance │ │ │ │ ├── SetGovernance.t.sol │ │ │ │ └── SetGovernance.tree │ │ │ └── set-registry │ │ │ │ ├── SetRegistry.t.sol │ │ │ │ └── SetRegistry.tree │ │ ├── ConsoleFallbackHandler │ │ │ ├── fallbackHandler.misc.t.sol │ │ │ └── is-valid-signature │ │ │ │ └── IsValidSignature.t.sol │ │ ├── ConsoleOpBuilder │ │ │ ├── ConsoleOpBuilder.misc.t.sol │ │ │ ├── disable-executors-on-subaccount │ │ │ │ └── DisableExecutorOnSubaccount.t.sol │ │ │ ├── disable-policy-on-console │ │ │ │ └── DisablePolicyOnConsole.t.sol │ │ │ ├── enable-executors-on-subaccount │ │ │ │ └── EnableExecutorsOnSubaccount.t.sol │ │ │ └── enable-policy-on-console │ │ │ │ └── EnablePolicyOnConsole.t.sol │ │ ├── ExecutorPlugin │ │ │ ├── ExecutorPlugin.misc.t.sol │ │ │ └── execute-transaction │ │ │ │ ├── ExecuteTransaction.t.sol │ │ │ │ └── ExecuteTransaction.tree │ │ ├── ExecutorRegistry │ │ │ ├── deregister-executor │ │ │ │ ├── DeRegisterExecutor.t.sol │ │ │ │ └── DeRegisterExecutor.tree │ │ │ └── register-executor │ │ │ │ ├── RegisterExecutor.t.sol │ │ │ │ └── RegisterExecutor.tree │ │ ├── PolicyRegistry │ │ │ └── update-policy │ │ │ │ ├── UpdatePolicy.t.sol │ │ │ │ └── UpdatePolicy.tree │ │ ├── PolicyValidator │ │ │ ├── PolicyValidator.misc.t.sol │ │ │ ├── validate-policy-signature-module-tx │ │ │ │ ├── ValidatePolicySignatureModuleTx.t.sol │ │ │ │ └── ValidatePolicySignatureModuleTx.tree │ │ │ └── validate-policy-signature-safe-tx │ │ │ │ ├── ValidatePolicySignatureSafeTx.t.sol │ │ │ │ └── ValidatePolicySignatureSafeTx.tree │ │ ├── SafeDeployer │ │ │ ├── SafeDeployer.misc.t.sol │ │ │ ├── deploy-console-account │ │ │ │ ├── DeployConsoleAccount.t.sol │ │ │ │ └── DeployConsoleAccount.tree │ │ │ └── deploy-sub-account │ │ │ │ ├── DeploySubAccount.t.sol │ │ │ │ └── DeploySubAccount.tree │ │ ├── SafeEnabler │ │ │ ├── SafeEnabler.misc.t.sol │ │ │ ├── enable-module │ │ │ │ └── EnableModule.t.sol │ │ │ └── set-guard │ │ │ │ └── SetGuard.t.sol │ │ ├── SafeModerator │ │ │ ├── SafeModerator.misc.t.sol │ │ │ ├── check-after-execution │ │ │ │ ├── CheckAfterExecution.t.sol │ │ │ │ └── CheckAfterExecution.tree │ │ │ └── check-transaction │ │ │ │ ├── CheckTransaction.t.sol │ │ │ │ └── CheckTransaction.tree │ │ ├── SafeModeratorOverridable │ │ │ ├── SafeModeratorOverridable.misc.t.sol │ │ │ ├── check-after-execution │ │ │ │ ├── CheckAfterExecution.t.sol │ │ │ │ └── CheckAfterExecution.tree │ │ │ └── check-transaction │ │ │ │ ├── CheckTransaction.t.sol │ │ │ │ └── CheckTransaction.tree │ │ ├── TransactionValidator │ │ │ ├── validate-post-exec-tx │ │ │ │ ├── ValidatePostExecutorTransaction.t.sol │ │ │ │ └── ValidatePostExecutorTransaction.tree │ │ │ ├── validate-post-tx-overridable │ │ │ │ ├── ValidatePostTransactionOverridable.t.sol │ │ │ │ └── ValidatePostTransactionOverridable.tree │ │ │ ├── validate-post-tx │ │ │ │ ├── ValidatePostTx.t.sol │ │ │ │ └── ValidatePostTx.tree │ │ │ ├── validate-pre-exec-tx │ │ │ │ ├── ValidatePreExecutorTx.t.sol │ │ │ │ └── ValidatePreExecutorTx.tree │ │ │ ├── validate-pre-tx-overridable │ │ │ │ ├── ValidatePreTxOverridable.t.sol │ │ │ │ └── ValidatePreTxOverridable.tree │ │ │ └── validate-pre-tx │ │ │ │ ├── ValidatePreTx.t.sol │ │ │ │ └── ValidatePreTx.tree │ │ └── WalletRegistry │ │ │ ├── register-subaccount │ │ │ ├── RegisterSubAccount.t.sol │ │ │ └── RegisterSubAccount.tree │ │ │ └── register-wallet │ │ │ ├── RegisterWallet.t.sol │ │ │ └── RegisterWallet.tree │ ├── commons │ │ ├── AddressRegistry.sol │ │ ├── ModSignature.sol │ │ ├── eip712Digest.ts │ │ └── isValidSignatureEIP712Digest.ts │ ├── e2e │ │ └── TxValidator.i.t.sol │ ├── libs │ │ ├── SafeHelper.lib.sol │ │ └── TypeHashHelper.lib.sol │ ├── mocks │ │ ├── MockAddressProviderService.sol │ │ ├── MockContractSigner.sol │ │ ├── MockERC20.sol │ │ ├── MockPolicyValidator.sol │ │ ├── MockTransactionValidator.sol │ │ └── MockUnsupportedAddress.sol │ ├── units │ │ ├── SafeHelper.t.sol │ │ └── TypeHashHelper.t.sol │ └── workflow │ │ └── ConsoleFactory.t.sol └── tsconfig.json └── discord-export ├── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html ├── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files ├── 01d0132cd2bda8d75d0f816ce712f8b5-23A0D.png ├── 025a312229f81f0132287a07237573a4-15005.png ├── 027771eed6eec6d29d87c3d641c6c03f-DAC44.png ├── 03056f38c0409e11b992662ff8b9d291-C22C9.png ├── 0432dad70b18fa0232c147833c40f5c2-594DD.png ├── 08b5148b236c630bb46aacacf73a217b-315CF.png ├── 0ae311857ca5610dd4e8476c7100f7bd-A60D6.png ├── 0dd6255142c84dcc6ec663458ed3fda9-E98D2.png ├── 1-B2132.png ├── 1009047393624412210-1B61B.png ├── 1009047429766713404-16E35.gif ├── 1009047660084334622-4FCFD.png ├── 1025426040316756068-05843.png ├── 1083068770823721071-EE4F6.png ├── 108db4db43a8df92fb224ce27c8419ec-5A94A.png ├── 1110201692663857255-A8E42.png ├── 1128344547949301911-C84AB.png ├── 1128344679365234779-05F87.png ├── 1162a888c78000773591a5db6de8aa9f-DCF7E.png ├── 12b1cd82ae01e1b8c6e500f018ad4b73-E8E85.png ├── 14f8cbc620b0a89c2a11ca8deace58eb-DA2D1.png ├── 1f37b-F650C.svg ├── 1f389-5C738.svg ├── 1f3c1-445DC.svg ├── 1f3c6-621A1.svg ├── 1f3fc-4884A.svg ├── 1f43a-EB486.svg ├── 1f440-6C64D.svg ├── 1f446-9CC34.svg ├── 1f44b-8A059.svg ├── 1f44c-1f3fb-EAAEE.svg ├── 1f44c-59547.svg ├── 1f44d-1f3fc-EAB0D.svg ├── 1f44d-1f3fe-78CB5.svg ├── 1f44d-27259.svg ├── 1f44f-3D381.svg ├── 1f4b8-E3468.svg ├── 1f4c6-44E30.svg ├── 1f4dc-AC641.svg ├── 1f50d-195C0.svg ├── 1f50f-FB237.svg ├── 1f525-8FE4F.svg ├── 1f601-4E9BD.svg ├── 1f602-168C5.svg ├── 1f604-BF863.svg ├── 1f605-42B43.svg ├── 1f606-BE94E.svg ├── 1f60a-3283D.svg ├── 1f60e-FF6EB.svg ├── 1f622-BDD22.svg ├── 1f636-300DD.svg ├── 1f642-83E8A.svg ├── 1f64f-22B8D.svg ├── 1f680-A35CE.svg ├── 1f6a8-A8AB3.svg ├── 1f7df9547fbc24ce0cab6e2da89f7f0d-99E3B.png ├── 1f911-F346C.svg ├── 1f914-15707.svg ├── 1f923-5854E.svg ├── 1f92f-FF4E0.svg ├── 1f9d0-3E117.svg ├── 1f9d1-5BC80.svg ├── 1fae1-B19DE.svg ├── 2-ADBB4.png ├── 258a1ffc46d9e9c3872ad643ab9b4bd5-EE2DC.png ├── 25d1d9d8d339f4258368c0359932dd5e-1C630.png ├── 2696-15F4A.svg ├── 2705-0589F.svg ├── 2795-3358E.svg ├── 2a9faff195fe333526cfe6ae6fce1420-49B98.png ├── 2c1e18acbcb9cdaeabfd7fc6f5090edf-CA387.png ├── 2de2bcb6fe2e5617e1d3dd4c56a5a8f1-DE975.png ├── 2f2fd83cca70538ecaddd831bcb8f3b6-272B3.png ├── 3-FB033.png ├── 37254c70d1f43924aab295c5f32a33ab-FAE53.png ├── 37745f5520f15b2d5e24f7cd11118290-87C96.png ├── 3b6ed3f28629984e407926c0bb3e7e57-7CFD1.png ├── 4053316a000ef470965c629e7aacad9a-3BB48.png ├── 40faf496db7b4bbcab37bc04b134567d-EFC50.png ├── 453eac052c6c6b7a61d2f55848c5bdc6-FCF15.png ├── 462cefe91b8bf4ec13a78693bb4d942f-B6659.png ├── 472e8696c1d575b51208a8571994c6bf-B0333.png ├── 48cdf35ad6a1abcf335e556af8087774-4AD25.png ├── 5-E9BDB.png ├── 51cc6faa390844056c24ea26c654003a-E2C26.png ├── 591e68a648a7b28f8c1990efe1528761-F96F5.png ├── 593f36e88b1657d978d620f5152eca82-52AEA.png ├── 5b71d15a9bcde45fd5520e3fb580eb53-E1A50.png ├── 6094e48ab77eb87fae4e3348c0d872b4-34FEF.png ├── 631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F ├── 6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png ├── 652c9b82f43282f85423f844ca26d6b4-F9AB0.png ├── 65732d84ecd9dfc5ae79f4a309454f86-5CAF4.png ├── 66c54ad6b6c2224e66ef8148ab5b7bcc-9BDF6.png ├── 67594ee4b4d1fc03bca468327a0d145b-BD76A.png ├── 675b226a2239369c985cd538027c7c52-40875.png ├── 6a567cbfd6039038b3e7fb3b7b3c7185-7C949.png ├── 6b084fd00f226a77abcf31000a85623e-5C817.png ├── 6cdf4b32a5a3932260b03982bb21b3c6-297C6.png ├── 6ff1e65c0976fd9df6010502da72f911-D2FA0.png ├── 701300a5bdd3bf5640bd1370251533e2-0DC47.png ├── 73c29465f45b5724-B024C.png ├── 751f210cd76b9b17316bb54ff939887b-0B021.png ├── 756596661307965461-B1D91.png ├── 783788733987815434-C3BF7.json ├── 7adb62bd26616b991ac3e0e8987a60a7-CE8BC.png ├── 7be22dfd3e29e541eda121ff0ee73256-B7E2E.png ├── 7c9a20a4cbc1437b2b701a64f980ea9c-490D9.png ├── 7d1c49f81d5bc224e4ddaf486f4be0eb-57F44.png ├── 7e4d2e5d1a0d80280fa671aa513f0e9c-F7A9F.png ├── 80b63b8eef8e8e0bef63af4cd4598430-39256.png ├── 83fa622da18abee1baf881ee7d3dd8da-76C8A.png ├── 8441d5e9fe1fd4c074797db4578a0b54-66B22.png ├── 851893826846457866-1AD3D.png ├── 851893827027075142-F23DF.png ├── 851893827089727568-5FD38.png ├── 851893827315826708-F59C0.png ├── 851893828280909886-FBF42.png ├── 860bc8415fcb344bebcf89a301158ffd-36A89.png ├── 8646f8b4f073429bf27df27459ab18a2-F6800.png ├── 886f35a505c4042e51de62b1e7c30fa5-EC7E7.png ├── 8c6129305f7cfbc60d0e2c052bc22211-CC381.png ├── 910676187288846397-518CD.png ├── 92719dd7bc8cb77c2a6b6813ef47a830-56832.png ├── 934055812859856cd87c3c397ccb56bd-064C4.png ├── 951505379299311799-78C6C.gif ├── 951506091798327316-7578A.png ├── 970d2e2f00cd7ef2134a1a3f21326349-404EA.png ├── 977133670429261884-CA8EA.png ├── 9b01adfea5eb85ed7f3fc2c94c3592c8-E96F4.png ├── 9bf2181404e658cab4039c07df56213f-E3E89.png ├── 9d005f28252054a605d1563bbb94db61-C6F53.png ├── Screenshot_2023-10-14_07-05-50-95B4B.png ├── a-373CA.png ├── a0457d118b6579a0106b86d86660fd78-D29A1.png ├── a11be1743d960d9d0807e6529db84028-375E9.png ├── a6700d776b9feae9a8825a05eb056151-9CE8A.png ├── a843ca0cb0c92c6fdcc28f6285bdcd6e-A7BB4.png ├── aa3584c2ce5b338f4758e69aec19637c-72010.png ├── aaeb97c3eb71d189670c03ef40cf07ef-96CF2.png ├── ad7fffe7929e5acf397b9f7739608ac0-2ADC3.png ├── adddc7313b30a4e8b5329894bf2034ab-5B4E5.png ├── af47db264f598a776eef080a2c7aee22-4D508.png ├── apple-touch-icon%402-EBA58.png ├── b30d26b226234841286fe01dbf9e98da-3EB14.png ├── b35ccff921a31a8e868c330e5d401246-C4BC6.png ├── b4d325ccda484b98fb07c2586ae5f970-64C08.png ├── b4fead77f737aa7840a25e1cd39eb062-CEDEC.png ├── b5c5564bbdaa22a1e2d459e9bf6aef5a-B3AC0.png ├── b70570b512f4bae5ddf0357c48b48b22-D1D5C.png ├── bae3fdb74ed49558a4cd0636132b6776-75EEB.png ├── bdd37d345b2d35b5513f03a81143aa4a-51209.png ├── c2704939e6436659b126caadce6bf20f-80CE2.png ├── c2cd5fb4d7ed64f4ff06a95068c810e3-C2061.png ├── c4-og-banner-20E67.png ├── c4fbf35c3e69a04ebc3a8a32a0bd3514-A8D31.png ├── c616e441e02fbf7f8f4594b17761c02c-768C2.png ├── c666ed248264dd7aed5e1b0ce8f7bd3e-DD097.png ├── c6b85a4a6ca07ab15a30a24f570be5b8-08D6E.png ├── c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png ├── c9cb30134c634c9e02d0c64df4922803-98E33.png ├── card-E9D38.png ├── d35a0c87f7f9f5e7c67430ca9593af01-64365.png ├── dc6e0072c993da12b699bb569417b6d1-25F7D.png ├── dd0b02132544c612d48d10270e412d9b-9486F.png ├── df88dfe1010e7b0caf3f1df6f2b9fa93-E97D9.png ├── e13420cb45f97860245c8425af03e2fb-87D5F.png ├── e9472a11f41d425badda92e53fc91864-F560D.png ├── e99436ce7f263d3f7b6d999b8921abbf-BAFA9.png ├── ec283548018391e9a25a61215bd46007-2D6CA.png ├── ed4484ef66c898526d51a3b65936c2ff-6B4AE.png ├── f23d0ae29fcc5a63df0b1e99990a51f7-8A74E.png ├── f4422c70568695907d5aa7f8632b4d51-4FBE2.png ├── ggsans-italic-400-E988B.woff2 ├── ggsans-italic-500-0777F.woff2 ├── ggsans-italic-600-CB411.woff2 ├── ggsans-italic-700-891AC.woff2 ├── ggsans-italic-800-D36B0.woff2 ├── ggsans-normal-400-1456D.woff2 ├── ggsans-normal-500-89CE5.woff2 ├── ggsans-normal-600-C1EA8.woff2 ├── ggsans-normal-700-1949A.woff2 ├── ggsans-normal-800-58487.woff2 ├── hasbulla-money-0551F.mp4 ├── highlight.min-D8D27.js ├── image-1CF31.png ├── image-216BC.png ├── image-42DBD.png ├── image-5204D.png ├── image-57CC8.png ├── image-67E04.png ├── image-68CA4.png ├── image-6F0E0.png ├── image-91C78.png ├── image-A2D2A.png ├── image-A438B.png ├── image-AE099.png ├── james-franco-wait-what-AA6B1.mp4 ├── lfg-lets-E1782.mp4 ├── lottie.min-99657.js ├── rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg ├── safe-contracts-EDE24 └── solarized-dark.min-BA98F.css ├── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt └── Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files ├── 631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F ├── 73c29465f45b5724-B024C.png ├── 783788733987815434-C3BF7.json ├── Screenshot_2023-10-14_07-05-50-95B4B.png ├── a-373CA.png ├── apple-touch-icon%402-EBA58.png ├── c4-og-banner-20E67.png ├── card-E9D38.png ├── hasbulla-money-22B63.png ├── image-1CF31.png ├── image-216BC.png ├── image-42DBD.png ├── image-5204D.png ├── image-57CC8.png ├── image-67E04.png ├── image-68CA4.png ├── image-6F0E0.png ├── image-91C78.png ├── image-A2D2A.png ├── image-A438B.png ├── image-AE099.png ├── james-franco-wait-what-DE3DF.png ├── lfg-lets-5E020.png ├── rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg └── safe-contracts-EDE24 /contracts/.env.example: -------------------------------------------------------------------------------- 1 | MAINNET_RPC=******** 2 | MAINNET_BLOCK=`any recent block` 3 | ALCHEMY_API_KEY=******** -------------------------------------------------------------------------------- /contracts/.gitignore: -------------------------------------------------------------------------------- 1 | # Compilation 2 | cache/ 3 | out/ 4 | cache_hardhat/ 5 | broadcast/ 6 | artifacts/ 7 | typechain-types/ 8 | .compiler-configs/ 9 | 10 | # Deps 11 | node_modules/ 12 | 13 | # Forge 14 | .gas-snapshot 15 | 16 | # Slither 17 | slither.md 18 | slither.sarif 19 | report/ 20 | lcov.info 21 | 22 | # Deployments 23 | verification_json/ 24 | flatten/ 25 | 26 | # Secrets 27 | .env 28 | .DS_Store -------------------------------------------------------------------------------- /contracts/.gitmodules: -------------------------------------------------------------------------------- 1 | 2 | [submodule "lib/forge-std"] 3 | path = lib/forge-std 4 | url = https://github.com/foundry-rs/forge-std 5 | [submodule "lib/openzeppelin-contracts"] 6 | path = lib/openzeppelin-contracts 7 | url = https://github.com/openzeppelin/openzeppelin-contracts 8 | [submodule "lib/solady"] 9 | path = lib/solady 10 | url = https://github.com/vectorized/solady 11 | [submodule "lib/safe-contracts"] 12 | path = lib/safe-contracts 13 | url = https://github.com/safe-global/safe-contracts 14 | -------------------------------------------------------------------------------- /contracts/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | bracketSpacing: false, 3 | singleQuote: false, 4 | trailingComma: "all", 5 | semi: true, 6 | tabWidth: 4 7 | }; -------------------------------------------------------------------------------- /contracts/.solhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "solhint:recommended", 3 | "rules": { 4 | "func-visibility": [ 5 | "warn", 6 | { 7 | "ignoreConstructors": true 8 | } 9 | ] 10 | } 11 | } -------------------------------------------------------------------------------- /contracts/.solhintignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | test/ -------------------------------------------------------------------------------- /contracts/docs/images/Sub-account execution flow via console account.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/Sub-account execution flow via console account.png -------------------------------------------------------------------------------- /contracts/docs/images/Sub-account execution flow via executor plugin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/Sub-account execution flow via executor plugin.png -------------------------------------------------------------------------------- /contracts/docs/images/banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/banner.png -------------------------------------------------------------------------------- /contracts/docs/images/console account execTransaction.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/console account execTransaction.png -------------------------------------------------------------------------------- /contracts/docs/images/console-guard-removal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/console-guard-removal.png -------------------------------------------------------------------------------- /contracts/docs/images/sub-account execTransaction by operators.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/docs/images/sub-account execTransaction by operators.png -------------------------------------------------------------------------------- /contracts/interfaces/IAddressProviderService.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.19; 3 | 4 | interface IAddressProviderService { 5 | /// @notice Returns the address of the AddressProvider 6 | function addressProviderTarget() external view returns (address); 7 | } 8 | -------------------------------------------------------------------------------- /contracts/interfaces/IWalletAdapter.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.19; 3 | 4 | import "../interfaces/Types.sol"; 5 | 6 | interface IWalletAdapter is Types { 7 | function id() external view returns (uint8); 8 | 9 | function formatForWallet(address _wallet, Types.Executable memory _txn) 10 | external 11 | view 12 | returns (Types.Executable memory); 13 | 14 | function isAuthorized(address _wallet, address _user) external view returns (bool); 15 | 16 | function decodeReturnData(bytes memory data) external view returns (bool success, bytes memory returnData); 17 | } 18 | -------------------------------------------------------------------------------- /contracts/interfaces/Types.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.19; 3 | 4 | interface Types { 5 | enum CallType { 6 | CALL, 7 | DELEGATECALL, 8 | STATICCALL 9 | } 10 | 11 | struct Executable { 12 | CallType callType; 13 | address target; 14 | uint256 value; 15 | bytes data; 16 | } 17 | 18 | struct TokenRequest { 19 | address token; 20 | uint256 amount; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /contracts/interfaces/external/IGnosisMultiSend.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | interface IGnosisMultiSend { 5 | function multiSend(bytes memory transactions) external payable; 6 | } 7 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | out/ 3 | .vscode 4 | .idea 5 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/ds-test"] 2 | path = lib/ds-test 3 | url = https://github.com/dapphub/ds-test 4 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/lib/ds-test/.gitignore: -------------------------------------------------------------------------------- 1 | /.dapple 2 | /build 3 | /out 4 | /cache/ 5 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/lib/ds-test/Makefile: -------------------------------------------------------------------------------- 1 | all:; dapp build 2 | 3 | test: 4 | -dapp --use solc:0.4.23 build 5 | -dapp --use solc:0.4.26 build 6 | -dapp --use solc:0.5.17 build 7 | -dapp --use solc:0.6.12 build 8 | -dapp --use solc:0.7.5 build 9 | 10 | demo: 11 | DAPP_SRC=demo dapp --use solc:0.7.5 build 12 | -hevm dapp-test --verbose 3 13 | 14 | .PHONY: test demo 15 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/lib/ds-test/default.nix: -------------------------------------------------------------------------------- 1 | { solidityPackage, dappsys }: solidityPackage { 2 | name = "ds-test"; 3 | src = ./src; 4 | } 5 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/lib/ds-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ds-test", 3 | "version": "1.0.0", 4 | "description": "Assertions, equality checks and other test helpers ", 5 | "bugs": "https://github.com/dapphub/ds-test/issues", 6 | "license": "GPL-3.0", 7 | "author": "Contributors to ds-test", 8 | "files": [ 9 | "src/*" 10 | ], 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/dapphub/ds-test.git" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "forge-std", 3 | "version": "1.6.0", 4 | "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", 5 | "homepage": "https://book.getfoundry.sh/forge/forge-std", 6 | "bugs": "https://github.com/foundry-rs/forge-std/issues", 7 | "license": "(Apache-2.0 OR MIT)", 8 | "author": "Contributors to Forge Standard Library", 9 | "files": [ 10 | "src/**/*" 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/foundry-rs/forge-std.git" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/src/interfaces/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2; 3 | 4 | interface IERC165 { 5 | /// @notice Query if a contract implements an interface 6 | /// @param interfaceID The interface identifier, as specified in ERC-165 7 | /// @dev Interface identification is specified in ERC-165. This function 8 | /// uses less than 30,000 gas. 9 | /// @return `true` if the contract implements `interfaceID` and 10 | /// `interfaceID` is not 0xffffffff, `false` otherwise 11 | function supportsInterface(bytes4 interfaceID) external view returns (bool); 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/test/compilation/CompilationScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScript is Script {} 11 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScriptBase is ScriptBase {} 11 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/test/compilation/CompilationTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTest is Test {} 11 | -------------------------------------------------------------------------------- /contracts/lib/forge-std/test/compilation/CompilationTestBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTestBase is TestBase {} 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.changeset/config.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://unpkg.com/@changesets/config@2.3.0/schema.json", 3 | "changelog": [ 4 | "@changesets/changelog-github", 5 | { 6 | "repo": "OpenZeppelin/openzeppelin-contracts" 7 | } 8 | ], 9 | "commit": false, 10 | "access": "public", 11 | "baseBranch": "master" 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.codecov.yml: -------------------------------------------------------------------------------- 1 | comment: off 2 | github_checks: 3 | annotations: false 4 | coverage: 5 | status: 6 | patch: 7 | default: 8 | target: 95% 9 | only_pulls: true 10 | project: 11 | default: 12 | threshold: 1% 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: https://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | charset = utf-8 8 | end_of_line = lf 9 | indent_style = space 10 | insert_final_newline = true 11 | trim_trailing_whitespace = false 12 | max_line_length = 120 13 | 14 | [*.sol] 15 | indent_size = 4 16 | 17 | [*.js] 18 | indent_size = 2 19 | 20 | [*.{adoc,md}] 21 | max_line_length = 0 22 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.eslintrc: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "extends" : [ 4 | "eslint:recommended", 5 | "prettier", 6 | ], 7 | "env": { 8 | "es2022": true, 9 | "browser": true, 10 | "node": true, 11 | "mocha": true, 12 | }, 13 | "globals" : { 14 | "artifacts": "readonly", 15 | "contract": "readonly", 16 | "web3": "readonly", 17 | "extendEnvironment": "readonly", 18 | "expect": "readonly", 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | contact_links: 2 | - name: Questions & Support Requests 3 | url: https://forum.openzeppelin.com/c/support/contracts/18 4 | about: Ask in the OpenZeppelin Forum 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for OpenZeppelin Contracts 4 | 5 | --- 6 | 7 | **🧐 Motivation** 8 | 9 | 10 | **📝 Details** 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.github/actions/setup/action.yml: -------------------------------------------------------------------------------- 1 | name: Setup 2 | 3 | runs: 4 | using: composite 5 | steps: 6 | - uses: actions/setup-node@v3 7 | with: 8 | node-version: 14.x 9 | - uses: actions/cache@v3 10 | id: cache 11 | with: 12 | path: '**/node_modules' 13 | key: npm-v3-${{ hashFiles('**/package-lock.json') }} 14 | - name: Install dependencies 15 | run: npm ci 16 | shell: bash 17 | if: steps.cache.outputs.cache-hit != 'true' 18 | env: 19 | SKIP_COMPILE: true 20 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.github/workflows/actionlint.yml: -------------------------------------------------------------------------------- 1 | name: lint workflows 2 | 3 | on: 4 | pull_request: 5 | paths: 6 | - '.github/**/*.ya?ml' 7 | 8 | jobs: 9 | lint: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - uses: actions/checkout@v3 13 | - name: Add problem matchers 14 | run: | 15 | # https://github.com/rhysd/actionlint/blob/3a2f2c7/docs/usage.md#problem-matchers 16 | curl -LO https://raw.githubusercontent.com/rhysd/actionlint/main/.github/actionlint-matcher.json 17 | echo "::add-matcher::actionlint-matcher.json" 18 | - uses: docker://rhysd/actionlint:latest 19 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.github/workflows/docs.yml: -------------------------------------------------------------------------------- 1 | name: Build Docs 2 | 3 | on: 4 | push: 5 | branches: [release-v*] 6 | 7 | permissions: 8 | contents: write 9 | 10 | jobs: 11 | build: 12 | runs-on: ubuntu-latest 13 | steps: 14 | - uses: actions/checkout@v3 15 | - name: Set up environment 16 | uses: ./.github/actions/setup 17 | - run: bash scripts/git-user-config.sh 18 | - run: node scripts/update-docs-branch.js 19 | - run: git push --all origin 20 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/forge-std"] 2 | branch = v1 3 | path = lib/forge-std 4 | url = https://github.com/foundry-rs/forge-std 5 | [submodule "lib/erc4626-tests"] 6 | path = lib/erc4626-tests 7 | url = https://github.com/a16z/erc4626-tests.git 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.mocharc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | require: 'hardhat/register', 3 | timeout: 4000, 4 | }; 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "printWidth": 120, 3 | "singleQuote": true, 4 | "trailingComma": "all", 5 | "arrowParens": "avoid", 6 | "overrides": [ 7 | { 8 | "files": "*.sol", 9 | "options": { 10 | "singleQuote": false 11 | } 12 | } 13 | ] 14 | } 15 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.solcover.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | norpc: true, 3 | testCommand: 'npm test', 4 | compileCommand: 'npm run compile', 5 | skipFiles: ['mocks'], 6 | providerOptions: { 7 | default_balance_ether: '10000000000000000000000000', 8 | }, 9 | mocha: { 10 | fgrep: '[skip-on-coverage]', 11 | invert: true, 12 | }, 13 | }; 14 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/.solhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rules": { 3 | "no-unused-vars": "error", 4 | "const-name-snakecase": "error", 5 | "contract-name-camelcase": "error", 6 | "event-name-camelcase": "error", 7 | "func-name-mixedcase": "error", 8 | "func-param-name-mixedcase": "error", 9 | "modifier-name-mixedcase": "error", 10 | "private-vars-leading-underscore": "error", 11 | "var-name-mixedcase": "error", 12 | "imports-on-top": "error" 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/audits/2018-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2018-10.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/.gitignore: -------------------------------------------------------------------------------- 1 | patched 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/diff/token_ERC721_ERC721.sol.patch: -------------------------------------------------------------------------------- 1 | --- token/ERC721/ERC721.sol 2023-03-07 10:48:47.736822221 +0100 2 | +++ token/ERC721/ERC721.sol 2023-03-09 19:49:39.669338673 +0100 3 | @@ -199,6 +199,11 @@ 4 | return _owners[tokenId]; 5 | } 6 | 7 | + // FV 8 | + function _getApproved(uint256 tokenId) internal view returns (address) { 9 | + return _tokenApprovals[tokenId]; 10 | + } 11 | + 12 | /** 13 | * @dev Returns whether `tokenId` exists. 14 | * 15 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../patched/access/AccessControl.sol"; 6 | 7 | contract AccessControlHarness is AccessControl {} 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/ERC20PermitHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../patched/token/ERC20/extensions/ERC20Permit.sol"; 6 | 7 | contract ERC20PermitHarness is ERC20Permit { 8 | constructor(string memory name, string memory symbol) ERC20(name, symbol) ERC20Permit(name) {} 9 | 10 | function mint(address account, uint256 amount) external { 11 | _mint(account, amount); 12 | } 13 | 14 | function burn(address account, uint256 amount) external { 15 | _burn(account, amount); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | import "../patched/interfaces/IERC3156FlashBorrower.sol"; 4 | 5 | pragma solidity ^0.8.0; 6 | 7 | contract ERC3156FlashBorrowerHarness is IERC3156FlashBorrower { 8 | bytes32 somethingToReturn; 9 | 10 | function onFlashLoan(address, address, uint256, uint256, bytes calldata) external view override returns (bytes32) { 11 | return somethingToReturn; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../patched/interfaces/IERC721Receiver.sol"; 6 | 7 | contract ERC721ReceiverHarness is IERC721Receiver { 8 | function onERC721Received(address, address, uint256, bytes calldata) external pure returns (bytes4) { 9 | return this.onERC721Received.selector; 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../patched/access/Ownable2Step.sol"; 6 | 7 | contract Ownable2StepHarness is Ownable2Step { 8 | function restricted() external onlyOwner {} 9 | } 10 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../patched/access/Ownable.sol"; 6 | 7 | contract OwnableHarness is Ownable { 8 | function restricted() external onlyOwner {} 9 | } 10 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../patched/security/Pausable.sol"; 6 | 7 | contract PausableHarness is Pausable { 8 | function pause() external { 9 | _pause(); 10 | } 11 | 12 | function unpause() external { 13 | _unpause(); 14 | } 15 | 16 | function onlyWhenPaused() external whenPaused {} 17 | 18 | function onlyWhenNotPaused() external whenNotPaused {} 19 | } 20 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol: -------------------------------------------------------------------------------- 1 | pragma solidity ^0.8.0; 2 | 3 | import "../patched/governance/TimelockController.sol"; 4 | 5 | contract TimelockControllerHarness is TimelockController { 6 | constructor( 7 | uint256 minDelay, 8 | address[] memory proposers, 9 | address[] memory executors, 10 | address admin 11 | ) TimelockController(minDelay, proposers, executors, admin) {} 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/reports/2021-10.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/certora/reports/2021-10.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/reports/2022-03.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/certora/reports/2022-03.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/reports/2022-05.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/certora/reports/2022-05.pdf -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec: -------------------------------------------------------------------------------- 1 | definition nonpayable(env e) returns bool = e.msg.value == 0; 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | hasRole(bytes32, address) returns(bool) envfree 3 | getRoleAdmin(bytes32) returns(bytes32) envfree 4 | grantRole(bytes32, address) 5 | revokeRole(bytes32, address) 6 | renounceRole(bytes32, address) 7 | } 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | permit(address,address,uint256,uint256,uint8,bytes32,bytes32) => DISPATCHER(true) 3 | nonces(address) returns (uint256) envfree => DISPATCHER(true) 4 | DOMAIN_SEPARATOR() returns (bytes32) envfree => DISPATCHER(true) 5 | } 6 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC3156.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | maxFlashLoan(address) returns (uint256) envfree => DISPATCHER(true) 3 | flashFee(address,uint256) returns (uint256) envfree => DISPATCHER(true) 4 | flashLoan(address,address,uint256,bytes) returns (bool) => DISPATCHER(true) 5 | } 6 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | owner() returns (address) envfree 3 | } 4 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | owner() returns (address) envfree 3 | transferOwnership(address) 4 | renounceOwnership() 5 | } 6 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec: -------------------------------------------------------------------------------- 1 | methods { 2 | owner() returns (address) envfree 3 | pendingOwner() returns (address) envfree 4 | transferOwnership(address) 5 | acceptOwnership() 6 | renounceOwnership() 7 | } 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/crosschain/errors.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.6.0) (crosschain/errors.sol) 3 | 4 | pragma solidity ^0.8.4; 5 | 6 | error NotCrossChainCall(); 7 | error InvalidCrossChainSender(address actual, address expected); 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1155.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC1155/IERC1155.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1155MetadataURI.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC1155/extensions/IERC1155MetadataURI.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1155Receiver.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC1155/IERC1155Receiver.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC165.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../utils/introspection/IERC165.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1820Implementer.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../utils/introspection/IERC1820Implementer.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC1820Registry.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../utils/introspection/IERC1820Registry.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC20/IERC20.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC20Metadata.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC20/extensions/IERC20Metadata.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.8.0) (interfaces/IERC2309.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | /** 7 | * @dev ERC-2309: ERC-721 Consecutive Transfer Extension. 8 | * 9 | * _Available since v4.8._ 10 | */ 11 | interface IERC2309 { 12 | /** 13 | * @dev Emitted when the tokens from `fromTokenId` to `toTokenId` are transferred from `fromAddress` to `toAddress`. 14 | */ 15 | event ConsecutiveTransfer( 16 | uint256 indexed fromTokenId, 17 | uint256 toTokenId, 18 | address indexed fromAddress, 19 | address indexed toAddress 20 | ); 21 | } 22 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC2612.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC20/extensions/IERC20Permit.sol"; 7 | 8 | interface IERC2612 is IERC20Permit {} 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC3156.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "./IERC3156FlashBorrower.sol"; 7 | import "./IERC3156FlashLender.sol"; 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5313.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | /** 7 | * @dev Interface for the Light Contract Ownership Standard. 8 | * 9 | * A standardized minimal interface required to identify an account that controls a contract 10 | * 11 | * _Available since v4.9._ 12 | */ 13 | interface IERC5313 { 14 | /** 15 | * @dev Gets the address of the owner. 16 | */ 17 | function owner() external view returns (address); 18 | } 19 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC5805.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../governance/utils/IVotes.sol"; 7 | import "./IERC6372.sol"; 8 | 9 | interface IERC5805 is IERC6372, IVotes {} 10 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/IERC6372.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | interface IERC6372 { 7 | /** 8 | * @dev Clock used for flagging checkpoints. Can be overridden to implement timestamp based checkpoints (and voting). 9 | */ 10 | function clock() external view returns (uint48); 11 | 12 | /** 13 | * @dev Description of the clock 14 | */ 15 | // solhint-disable-next-line func-name-mixedcase 16 | function CLOCK_MODE() external view returns (string memory); 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC721/IERC721.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Enumerable.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC721/extensions/IERC721Enumerable.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Metadata.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC721/extensions/IERC721Metadata.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC721Receiver.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC721/IERC721Receiver.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC777.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC777/IERC777.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC777Recipient.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC777/IERC777Recipient.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (interfaces/IERC777Sender.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | import "../token/ERC777/IERC777Sender.sol"; 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC2612.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (interfaces/draft-IERC2612.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | // EIP-2612 is Final as of 2022-11-01. This file is deprecated. 7 | 8 | import "./IERC2612.sol"; 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/metatx/README.adoc: -------------------------------------------------------------------------------- 1 | = Meta Transactions 2 | 3 | [.readme-notice] 4 | NOTE: This document is better viewed at https://docs.openzeppelin.com/contracts/api/metatx 5 | 6 | == Core 7 | 8 | {{ERC2771Context}} 9 | 10 | == Utils 11 | 12 | {{MinimalForwarder}} 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/AccessControlCrossChainMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.4; 4 | 5 | import "../access/AccessControlCrossChain.sol"; 6 | import "../crosschain/arbitrum/CrossChainEnabledArbitrumL2.sol"; 7 | 8 | contract AccessControlCrossChainMock is AccessControlCrossChain, CrossChainEnabledArbitrumL2 {} 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ConditionalEscrowMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../utils/escrow/ConditionalEscrow.sol"; 6 | 7 | // mock class using ConditionalEscrow 8 | contract ConditionalEscrowMock is ConditionalEscrow { 9 | mapping(address => bool) private _allowed; 10 | 11 | function setAllowed(address payee, bool allowed) public { 12 | _allowed[payee] = allowed; 13 | } 14 | 15 | function withdrawalAllowed(address payee) public view override returns (bool) { 16 | return _allowed[payee]; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | contract ERC165MaliciousData { 6 | function supportsInterface(bytes4) public pure returns (bool) { 7 | assembly { 8 | mstore(0, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 9 | return(0, 32) 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | contract ERC165MissingData { 6 | function supportsInterface(bytes4 interfaceId) public view {} // missing return 7 | } 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | contract ERC165NotSupported {} 6 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../utils/introspection/IERC165.sol"; 6 | 7 | contract ERC165ReturnBombMock is IERC165 { 8 | function supportsInterface(bytes4 interfaceId) public pure override returns (bool) { 9 | if (interfaceId == type(IERC165).interfaceId) { 10 | assembly { 11 | mstore(0, 1) 12 | } 13 | } 14 | assembly { 15 | return(0, 101500) 16 | } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ERC20Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.0; 3 | 4 | import {ERC20} from "../token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Mock is ERC20 { 7 | constructor() ERC20("ERC20Mock", "E20M") {} 8 | 9 | function mint(address account, uint256 amount) external { 10 | _mint(account, amount); 11 | } 12 | 13 | function burn(address account, uint256 amount) external { 14 | _burn(account, amount); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ERC4626Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.0; 3 | 4 | import "../token/ERC20/extensions/ERC4626.sol"; 5 | 6 | contract ERC4626Mock is ERC4626 { 7 | constructor(address underlying) ERC20("ERC4626Mock", "E4626M") ERC4626(IERC20(underlying)) {} 8 | 9 | function mint(address account, uint256 amount) external { 10 | _mint(account, amount); 11 | } 12 | 13 | function burn(address account, uint256 amount) external { 14 | _burn(account, amount); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | contract EtherReceiverMock { 6 | bool private _acceptEther; 7 | 8 | function setAcceptEther(bool acceptEther) public { 9 | _acceptEther = acceptEther; 10 | } 11 | 12 | receive() external payable { 13 | if (!_acceptEther) { 14 | revert(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/PullPaymentMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../security/PullPayment.sol"; 6 | 7 | // mock class using PullPayment 8 | contract PullPaymentMock is PullPayment { 9 | constructor() payable {} 10 | 11 | // test helper function to call asyncTransfer 12 | function callTransfer(address dest, uint256 amount) public { 13 | _asyncTransfer(dest, amount); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../utils/Context.sol"; 6 | 7 | contract ReentrancyAttack is Context { 8 | function callSender(bytes4 data) public { 9 | (bool success, ) = _msgSender().call(abi.encodeWithSelector(data)); 10 | require(success, "ReentrancyAttack: failed call"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../governance/extensions/GovernorCountingSimple.sol"; 6 | import "../../governance/extensions/GovernorVotes.sol"; 7 | 8 | abstract contract GovernorVoteMocks is GovernorVotes, GovernorCountingSimple { 9 | function quorum(uint256) public pure override returns (uint256) { 10 | return 0; 11 | } 12 | 13 | function votingDelay() public pure override returns (uint256) { 14 | return 4; 15 | } 16 | 17 | function votingPeriod() public pure override returns (uint256) { 18 | return 16; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | contract BadBeaconNoImpl {} 6 | 7 | contract BadBeaconNotContract { 8 | function implementation() external pure returns (address) { 9 | return address(0x1); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | /** 6 | * @dev Implementation contract with a payable admin() function made to clash with TransparentUpgradeableProxy's to 7 | * test correct functioning of the Transparent Proxy feature. 8 | */ 9 | contract ClashingImplementation { 10 | function admin() external payable returns (address) { 11 | return 0x0000000000000000000000000000000011111142; 12 | } 13 | 14 | function delegatedFunction() external pure returns (bool) { 15 | return true; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC20/ERC20.sol"; 6 | 7 | abstract contract ERC20DecimalsMock is ERC20 { 8 | uint8 private immutable _decimals; 9 | 10 | constructor(uint8 decimals_) { 11 | _decimals = decimals_; 12 | } 13 | 14 | function decimals() public view override returns (uint8) { 15 | return _decimals; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | contract ERC20ExcessDecimalsMock { 6 | function decimals() public pure returns (uint256) { 7 | return type(uint256).max; 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC20/ERC20.sol"; 6 | 7 | // contract that replicate USDT (0xdac17f958d2ee523a2206206994597c13d831ec7) approval beavior 8 | abstract contract ERC20ForceApproveMock is ERC20 { 9 | function approve(address spender, uint256 amount) public virtual override returns (bool) { 10 | require(amount == 0 || allowance(msg.sender, spender) == 0, "USDT approval failure"); 11 | return super.approve(spender, amount); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC20/ERC20.sol"; 6 | import "../../utils/Multicall.sol"; 7 | 8 | abstract contract ERC20MulticallMock is ERC20, Multicall {} 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC20/ERC20.sol"; 6 | 7 | abstract contract ERC20ReturnFalseMock is ERC20 { 8 | function transfer(address, uint256) public pure override returns (bool) { 9 | return false; 10 | } 11 | 12 | function transferFrom(address, address, uint256) public pure override returns (bool) { 13 | return false; 14 | } 15 | 16 | function approve(address, uint256) public pure override returns (bool) { 17 | return false; 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC20/extensions/ERC4626.sol"; 6 | 7 | abstract contract ERC4626OffsetMock is ERC4626 { 8 | uint8 private immutable _offset; 9 | 10 | constructor(uint8 offset_) { 11 | _offset = offset_; 12 | } 13 | 14 | function _decimalsOffset() internal view virtual override returns (uint8) { 15 | return _offset; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC721/extensions/ERC721URIStorage.sol"; 6 | 7 | abstract contract ERC721URIStorageMock is ERC721URIStorage { 8 | string private _baseTokenURI; 9 | 10 | function _baseURI() internal view virtual override returns (string memory) { 11 | return _baseTokenURI; 12 | } 13 | 14 | function setBaseURI(string calldata newBaseTokenURI) public { 15 | _baseTokenURI = newBaseTokenURI; 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/mocks/token/ERC777Mock.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | 3 | pragma solidity ^0.8.0; 4 | 5 | import "../../token/ERC777/ERC777.sol"; 6 | 7 | abstract contract ERC777Mock is ERC777 { 8 | event BeforeTokenTransfer(); 9 | 10 | function _beforeTokenTransfer(address, address, address, uint256) internal override { 11 | emit BeforeTokenTransfer(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts v4.4.1 (proxy/beacon/IBeacon.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | /** 7 | * @dev This is the interface that {BeaconProxy} expects of its beacon. 8 | */ 9 | interface IBeacon { 10 | /** 11 | * @dev Must return an address that can be used as a delegate call target. 12 | * 13 | * {BeaconProxy} will check that this address is a contract. 14 | */ 15 | function implementation() external view returns (address); 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/ERC1155/presets/README.md: -------------------------------------------------------------------------------- 1 | Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-ERC20Permit.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/draft-ERC20Permit.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | // EIP-2612 is Final as of 2022-11-01. This file is deprecated. 7 | 8 | import "./ERC20Permit.sol"; 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/draft-IERC20Permit.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/extensions/draft-IERC20Permit.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | // EIP-2612 is Final as of 2022-11-01. This file is deprecated. 7 | 8 | import "./IERC20Permit.sol"; 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/ERC20/presets/README.md: -------------------------------------------------------------------------------- 1 | Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/draft-ERC721Votes.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.8.0) (token/ERC721/extensions/draft-ERC721Votes.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | // ERC721Votes was marked as draft due to the EIP-712 dependency. 7 | // EIP-712 is Final as of 2022-08-11. This file is deprecated. 8 | 9 | import "./ERC721Votes.sol"; 10 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/ERC721/presets/README.md: -------------------------------------------------------------------------------- 1 | Contract presets are now deprecated in favor of [Contracts Wizard](https://wizard.openzeppelin.com/) as a more powerful alternative. 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/token/common/README.adoc: -------------------------------------------------------------------------------- 1 | = Common (Tokens) 2 | 3 | Functionality that is common to multiple token standards. 4 | 5 | * {ERC2981}: NFT Royalties compatible with both ERC721 and ERC1155. 6 | ** For ERC721 consider {ERC721Royalty} which clears the royalty information from storage on burn. 7 | 8 | == Contracts 9 | 10 | {{ERC2981}} 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/utils/cryptography/draft-EIP712.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.8.0) (utils/cryptography/draft-EIP712.sol) 3 | 4 | pragma solidity ^0.8.0; 5 | 6 | // EIP-712 is Final as of 2022-08-11. This file is deprecated. 7 | 8 | import "./EIP712.sol"; 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/contracts/vendor/polygon/IFxMessageProcessor.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | // OpenZeppelin Contracts (last updated v4.9.0) (vendor/polygon/IFxMessageProcessor.sol) 3 | pragma solidity ^0.8.0; 4 | 5 | interface IFxMessageProcessor { 6 | function processMessageFromRoot(uint256 stateId, address rootMessageSender, bytes calldata data) external; 7 | } 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/antora.yml: -------------------------------------------------------------------------------- 1 | name: contracts 2 | title: Contracts 3 | version: 4.x 4 | nav: 5 | - modules/ROOT/nav.adoc 6 | - modules/api/nav.adoc 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc: -------------------------------------------------------------------------------- 1 | = Crowdsales 2 | 3 | All crowdsale-related contracts were removed from the OpenZeppelin Contracts library on the https://forum.openzeppelin.com/t/openzeppelin-contracts-v3-0-beta-release/2256[v3.0.0 release] due to both a decline in their usage and the complexity associated with migrating them to Solidity v0.6. 4 | 5 | They are however still available on the v2.5 release of OpenZeppelin Contracts, which you can install by running: 6 | 7 | ```console 8 | $ npm install @openzeppelin/contracts@v2.5 9 | ``` 10 | 11 | Refer to the https://docs.openzeppelin.com/contracts/2.x/crowdsales[v2.x documentation] when working with them. 12 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/docs/templates/page.hbs: -------------------------------------------------------------------------------- 1 | :github-icon: pass:[] 2 | {{#with-prelude}} 3 | {{readme (readme-path)}} 4 | {{/with-prelude}} 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/foundry.toml: -------------------------------------------------------------------------------- 1 | [fuzz] 2 | runs = 10000 3 | max_test_rejects = 150000 4 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/hardhat/env-contract.js: -------------------------------------------------------------------------------- 1 | extendEnvironment(env => { 2 | const { contract } = env; 3 | 4 | env.contract = function (name, body) { 5 | // remove the default account from the accounts list used in tests, in order 6 | // to protect tests against accidentally passing due to the contract 7 | // deployer being used subsequently as function caller 8 | contract(name, accounts => body(accounts.slice(1))); 9 | }; 10 | }); 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js: -------------------------------------------------------------------------------- 1 | const { subtask } = require('hardhat/config'); 2 | const { TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS } = require('hardhat/builtin-tasks/task-names'); 3 | 4 | subtask(TASK_COMPILE_SOLIDITY_GET_SOURCE_PATHS).setAction(async (_, __, runSuper) => 5 | (await runSuper()).filter(path => !path.endsWith('.t.sol')), 6 | ); 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/.gitignore: -------------------------------------------------------------------------------- 1 | cache/ 2 | out/ 3 | .vscode 4 | .idea 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/ds-test"] 2 | path = lib/ds-test 3 | url = https://github.com/dapphub/ds-test 4 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/.gitignore: -------------------------------------------------------------------------------- 1 | /.dapple 2 | /build 3 | /out 4 | /cache/ 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/Makefile: -------------------------------------------------------------------------------- 1 | all:; dapp build 2 | 3 | test: 4 | -dapp --use solc:0.4.23 build 5 | -dapp --use solc:0.4.26 build 6 | -dapp --use solc:0.5.17 build 7 | -dapp --use solc:0.6.12 build 8 | -dapp --use solc:0.7.5 build 9 | 10 | demo: 11 | DAPP_SRC=demo dapp --use solc:0.7.5 build 12 | -hevm dapp-test --verbose 3 13 | 14 | .PHONY: test demo 15 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/default.nix: -------------------------------------------------------------------------------- 1 | { solidityPackage, dappsys }: solidityPackage { 2 | name = "ds-test"; 3 | src = ./src; 4 | } 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ds-test", 3 | "version": "1.0.0", 4 | "description": "Assertions, equality checks and other test helpers ", 5 | "bugs": "https://github.com/dapphub/ds-test/issues", 6 | "license": "GPL-3.0", 7 | "author": "Contributors to ds-test", 8 | "files": [ 9 | "src/*" 10 | ], 11 | "repository": { 12 | "type": "git", 13 | "url": "https://github.com/dapphub/ds-test.git" 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "forge-std", 3 | "version": "1.5.0", 4 | "description": "Forge Standard Library is a collection of helpful contracts and libraries for use with Forge and Foundry.", 5 | "homepage": "https://book.getfoundry.sh/forge/forge-std", 6 | "bugs": "https://github.com/foundry-rs/forge-std/issues", 7 | "license": "(Apache-2.0 OR MIT)", 8 | "author": "Contributors to Forge Standard Library", 9 | "files": [ 10 | "src/*" 11 | ], 12 | "repository": { 13 | "type": "git", 14 | "url": "https://github.com/foundry-rs/forge-std.git" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC165.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2; 3 | 4 | interface IERC165 { 5 | /// @notice Query if a contract implements an interface 6 | /// @param interfaceID The interface identifier, as specified in ERC-165 7 | /// @dev Interface identification is specified in ERC-165. This function 8 | /// uses less than 30,000 gas. 9 | /// @return `true` if the contract implements `interfaceID` and 10 | /// `interfaceID` is not 0xffffffff, `false` otherwise 11 | function supportsInterface(bytes4 interfaceID) external view returns (bool); 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScript is Script {} 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Script.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationScriptBase is ScriptBase {} 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTest is Test {} 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.2 <0.9.0; 3 | 4 | pragma experimental ABIEncoderV2; 5 | 6 | import "../../src/Test.sol"; 7 | 8 | // The purpose of this contract is to benchmark compilation time to avoid accidentally introducing 9 | // a change that results in very long compilation times with via-ir. See https://github.com/foundry-rs/forge-std/issues/207 10 | contract CompilationTestBase is TestBase {} 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/netlify.toml: -------------------------------------------------------------------------------- 1 | [build] 2 | command = "npm run docs" 3 | publish = "build/site" 4 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/remappings.txt: -------------------------------------------------------------------------------- 1 | openzeppelin/=contracts/ 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/renovate.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["github>OpenZeppelin/configs"], 3 | "labels": ["ignore-changeset"] 4 | } 5 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/requirements.txt: -------------------------------------------------------------------------------- 1 | certora-cli==3.6.4 2 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/checks/generation.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | npm run generate 6 | git diff -R --exit-code 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/generate/format-lines.js: -------------------------------------------------------------------------------- 1 | function formatLines(...lines) { 2 | return [...indentEach(0, lines)].join('\n') + '\n'; 3 | } 4 | 5 | function* indentEach(indent, lines) { 6 | for (const line of lines) { 7 | if (Array.isArray(line)) { 8 | yield* indentEach(indent + 1, line); 9 | } else { 10 | const padding = ' '.repeat(indent); 11 | yield* line.split('\n').map(subline => (subline === '' ? '' : padding + subline)); 12 | } 13 | } 14 | } 15 | 16 | module.exports = formatLines; 17 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/git-user-config.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail -x 4 | 5 | git config user.name 'github-actions' 6 | git config user.email '41898282+github-actions[bot]@users.noreply.github.com' 7 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/prepack.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | shopt -s globstar 5 | 6 | # cross platform `mkdir -p` 7 | node -e 'fs.mkdirSync("build/contracts", { recursive: true })' 8 | 9 | cp artifacts/contracts/**/*.json build/contracts 10 | rm build/contracts/*.dbg.json 11 | 12 | node scripts/remove-ignored-artifacts.js 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/prepare-contracts-package.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | # cd to the root of the repo 4 | cd "$(git rev-parse --show-toplevel)" 5 | 6 | # avoids re-compilation during publishing of both packages 7 | if [[ ! -v ALREADY_COMPILED ]]; then 8 | npm run clean 9 | npm run prepare 10 | npm run prepack 11 | fi 12 | 13 | cp README.md contracts/ 14 | mkdir contracts/build contracts/build/contracts 15 | cp -r build/contracts/*.json contracts/build/contracts 16 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/prepare.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | if [ "${SKIP_COMPILE:-}" == true ]; then 6 | exit 7 | fi 8 | 9 | npm run clean 10 | env COMPILE_MODE=production npm run compile 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | // Synchronizes the version in contracts/package.json with the one in package.json. 4 | // This is run automatically when npm version is run. 5 | 6 | const fs = require('fs'); 7 | 8 | setVersion('package.json', 'contracts/package.json'); 9 | 10 | function setVersion(from, to) { 11 | const fromJson = JSON.parse(fs.readFileSync(from)); 12 | const toJson = JSON.parse(fs.readFileSync(to)); 13 | toJson.version = fromJson.version; 14 | fs.writeFileSync(to, JSON.stringify(toJson, null, 2) + '\n'); 15 | } 16 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/release/version.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | changeset version 6 | 7 | scripts/release/format-changelog.js 8 | scripts/release/synchronize-versions.js 9 | scripts/release/update-comment.js 10 | 11 | oz-docs update-version 12 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | npx changeset pre exit rc 6 | git add . 7 | git commit -m "Exit release candidate" 8 | git push origin 9 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | CHECKSUMS="$RUNNER_TEMP/checksums.txt" 6 | 7 | # Extract tarball content into a tmp directory 8 | tar xf "$TARBALL" -C "$RUNNER_TEMP" 9 | 10 | # Move to extracted directory 11 | cd "$RUNNER_TEMP/package" 12 | 13 | # Checksum all Solidity files 14 | find . -type f -name "*.sol" | xargs shasum > "$CHECKSUMS" 15 | 16 | # Back to directory with git contents 17 | cd "$GITHUB_WORKSPACE/contracts" 18 | 19 | # Check against tarball contents 20 | shasum -c "$CHECKSUMS" 21 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | # Intentionally escape $ to avoid interpolation and writing the token to disk 6 | echo "//registry.npmjs.org/:_authToken=\${NPM_TOKEN}" > .npmrc 7 | 8 | # Actual publish 9 | npm publish "$TARBALL" --tag "$TAG" 10 | 11 | delete_tag() { 12 | PACKAGE_JSON_NAME="$(tar xfO "$TARBALL" package/package.json | jq -r .name)" 13 | npm dist-tag rm "$PACKAGE_JSON_NAME" "$1" 14 | } 15 | 16 | if [ "$TAG" = tmp ]; then 17 | delete_tag "$TAG" 18 | elif [ "$TAG" = latest ]; then 19 | delete_tag next 20 | fi 21 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js: -------------------------------------------------------------------------------- 1 | module.exports = ({ github, context }) => 2 | github.rest.actions.createWorkflowDispatch({ 3 | owner: context.repo.owner, 4 | repo: context.repo.repo, 5 | workflow_id: 'release-cycle.yml', 6 | ref: process.env.REF || process.env.GITHUB_REF_NAME, 7 | }); 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" 6 | PATCH="$DIRNAME/upgradeable.patch" 7 | 8 | error() { 9 | echo Error: "$*" >&2 10 | exit 1 11 | } 12 | 13 | if ! git diff-files --quiet ":!$PATCH" || ! git diff-index --quiet HEAD ":!$PATCH"; then 14 | error "Repository must have no staged or unstaged changes" 15 | fi 16 | 17 | if ! git apply -3 "$PATCH"; then 18 | error "Fix conflicts and run $DIRNAME/patch-save.sh" 19 | fi 20 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | set -euo pipefail 4 | 5 | DIRNAME="$(dirname -- "${BASH_SOURCE[0]}")" 6 | PATCH="$DIRNAME/upgradeable.patch" 7 | 8 | error() { 9 | echo Error: "$*" >&2 10 | exit 1 11 | } 12 | 13 | if ! git diff-files --quiet ":!$PATCH"; then 14 | error "Unstaged changes. Stage to include in patch or temporarily stash." 15 | fi 16 | 17 | git diff-index --cached --patch --output="$PATCH" HEAD 18 | git restore --staged --worktree ":!$PATCH" 19 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/TESTING.md: -------------------------------------------------------------------------------- 1 | ## Testing 2 | 3 | Unit test are critical to OpenZeppelin Contracts. They help ensure code quality and mitigate against security vulnerabilities. The directory structure within the `/test` directory corresponds to the `/contracts` directory. 4 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/access/AccessControl.test.js: -------------------------------------------------------------------------------- 1 | const { DEFAULT_ADMIN_ROLE, shouldBehaveLikeAccessControl } = require('./AccessControl.behavior.js'); 2 | 3 | const AccessControl = artifacts.require('$AccessControl'); 4 | 5 | contract('AccessControl', function (accounts) { 6 | beforeEach(async function () { 7 | this.accessControl = await AccessControl.new({ from: accounts[0] }); 8 | await this.accessControl.$_grantRole(DEFAULT_ADMIN_ROLE, accounts[0]); 9 | }); 10 | 11 | shouldBehaveLikeAccessControl('AccessControl', ...accounts); 12 | }); 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/helpers/chainid.js: -------------------------------------------------------------------------------- 1 | const hre = require('hardhat'); 2 | 3 | async function getChainId() { 4 | const chainIdHex = await hre.network.provider.send('eth_chainId', []); 5 | return new hre.web3.utils.BN(chainIdHex, 'hex'); 6 | } 7 | 8 | module.exports = { 9 | getChainId, 10 | }; 11 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/helpers/create2.js: -------------------------------------------------------------------------------- 1 | function computeCreate2Address(saltHex, bytecode, deployer) { 2 | return web3.utils.toChecksumAddress( 3 | `0x${web3.utils 4 | .sha3(`0x${['ff', deployer, saltHex, web3.utils.soliditySha3(bytecode)].map(x => x.replace(/0x/, '')).join('')}`) 5 | .slice(-40)}`, 6 | ); 7 | } 8 | 9 | module.exports = { 10 | computeCreate2Address, 11 | }; 12 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/helpers/enums.js: -------------------------------------------------------------------------------- 1 | const { BN } = require('@openzeppelin/test-helpers'); 2 | 3 | function Enum(...options) { 4 | return Object.fromEntries(options.map((key, i) => [key, new BN(i)])); 5 | } 6 | 7 | module.exports = { 8 | Enum, 9 | ProposalState: Enum('Pending', 'Active', 'Canceled', 'Defeated', 'Succeeded', 'Queued', 'Expired', 'Executed'), 10 | VoteType: Enum('Against', 'For', 'Abstain'), 11 | Rounding: Enum('Down', 'Up', 'Zero'), 12 | }; 13 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/helpers/map-values.js: -------------------------------------------------------------------------------- 1 | function mapValues(obj, fn) { 2 | return Object.fromEntries([...Object.entries(obj)].map(([k, v]) => [k, fn(v)])); 3 | } 4 | 5 | module.exports = { 6 | mapValues, 7 | }; 8 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/helpers/time.js: -------------------------------------------------------------------------------- 1 | const ozHelpers = require('@openzeppelin/test-helpers'); 2 | const helpers = require('@nomicfoundation/hardhat-network-helpers'); 3 | 4 | module.exports = { 5 | clock: { 6 | blocknumber: () => helpers.time.latestBlock(), 7 | timestamp: () => helpers.time.latest(), 8 | }, 9 | clockFromReceipt: { 10 | blocknumber: receipt => Promise.resolve(receipt.blockNumber), 11 | timestamp: receipt => web3.eth.getBlock(receipt.blockNumber).then(block => block.timestamp), 12 | }, 13 | forward: { 14 | blocknumber: ozHelpers.time.advanceBlockTo, 15 | timestamp: helpers.time.increaseTo, 16 | }, 17 | }; 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js: -------------------------------------------------------------------------------- 1 | const shouldBehaveLikeProxy = require('../Proxy.behaviour'); 2 | 3 | const ERC1967Proxy = artifacts.require('ERC1967Proxy'); 4 | 5 | contract('ERC1967Proxy', function (accounts) { 6 | const [proxyAdminOwner] = accounts; 7 | 8 | const createProxy = async function (implementation, _admin, initData, opts) { 9 | return ERC1967Proxy.new(implementation, initData, opts); 10 | }; 11 | 12 | shouldBehaveLikeProxy(createProxy, undefined, proxyAdminOwner); 13 | }); 14 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js: -------------------------------------------------------------------------------- 1 | const { shouldBehaveLikeERC721, shouldBehaveLikeERC721Metadata } = require('./ERC721.behavior'); 2 | 3 | const ERC721 = artifacts.require('$ERC721'); 4 | 5 | contract('ERC721', function (accounts) { 6 | const name = 'Non Fungible Token'; 7 | const symbol = 'NFT'; 8 | 9 | beforeEach(async function () { 10 | this.token = await ERC721.new(name, symbol); 11 | }); 12 | 13 | shouldBehaveLikeERC721('ERC721', ...accounts); 14 | shouldBehaveLikeERC721Metadata('ERC721', name, symbol, ...accounts); 15 | }); 16 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/utils/Context.test.js: -------------------------------------------------------------------------------- 1 | require('@openzeppelin/test-helpers'); 2 | 3 | const ContextMock = artifacts.require('ContextMock'); 4 | const ContextMockCaller = artifacts.require('ContextMockCaller'); 5 | 6 | const { shouldBehaveLikeRegularContext } = require('./Context.behavior'); 7 | 8 | contract('Context', function (accounts) { 9 | const [sender] = accounts; 10 | 11 | beforeEach(async function () { 12 | this.context = await ContextMock.new(); 13 | this.caller = await ContextMockCaller.new(); 14 | }); 15 | 16 | shouldBehaveLikeRegularContext(sender); 17 | }); 18 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/utils/escrow/Escrow.test.js: -------------------------------------------------------------------------------- 1 | require('@openzeppelin/test-helpers'); 2 | const { shouldBehaveLikeEscrow } = require('./Escrow.behavior'); 3 | 4 | const Escrow = artifacts.require('Escrow'); 5 | 6 | contract('Escrow', function (accounts) { 7 | const [owner, ...otherAccounts] = accounts; 8 | 9 | beforeEach(async function () { 10 | this.escrow = await Escrow.new({ from: owner }); 11 | }); 12 | 13 | shouldBehaveLikeEscrow(owner, otherAccounts); 14 | }); 15 | -------------------------------------------------------------------------------- /contracts/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js: -------------------------------------------------------------------------------- 1 | const { shouldSupportInterfaces } = require('./SupportsInterface.behavior'); 2 | 3 | const ERC165 = artifacts.require('$ERC165'); 4 | 5 | contract('ERC165', function () { 6 | beforeEach(async function () { 7 | this.mock = await ERC165.new(); 8 | }); 9 | 10 | shouldSupportInterfaces(['ERC165']); 11 | }); 12 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.env.sample: -------------------------------------------------------------------------------- 1 | MNEMONIC="" 2 | # Used for infura based network 3 | INFURA_KEY="" 4 | # Used for custom network 5 | NODE_URL="" 6 | ETHERSCAN_API_KEY="" -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.gitattributes: -------------------------------------------------------------------------------- 1 | *.sol linguist-language=Solidity 2 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.gitignore: -------------------------------------------------------------------------------- 1 | build/ 2 | node_modules/ 3 | .DS_Store 4 | .zos.session 5 | .openzeppelin/.session 6 | deployments/ 7 | env/ 8 | dist/ 9 | .env 10 | bin/ 11 | solc 12 | coverage/ 13 | coverage.json 14 | yarn-error.log -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.husky/.gitignore: -------------------------------------------------------------------------------- 1 | _ 2 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.husky/pre-commit: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | . "$(dirname "$0")/_/husky.sh" 3 | 4 | # Redirect output to stderr. 5 | exec 1>&2 6 | 7 | # prevent it.only or describe.only commited 8 | if [ "$allowonlytests" != "true" ] && 9 | test $(git diff --cached | grep -E "\b(it|describe).only\(" | wc -l) != 0 10 | then 11 | cat <<\EOF 12 | Error: Attempt to add it.only or describe.only - which may disable all other tests 13 | 14 | If you know what you are doing you can disable this check using: 15 | 16 | git config hooks.allowonlytests true 17 | EOF 18 | exit 1 19 | fi 20 | 21 | exit 0 22 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.nvmrc: -------------------------------------------------------------------------------- 1 | v15.6.0 -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "overrides": [ 3 | { 4 | "files": "*.sol", 5 | "options": { 6 | "printWidth": 140, 7 | "tabWidth": 4, 8 | "useTabs": false, 9 | "singleQuote": false, 10 | "bracketSpacing": false, 11 | "explicitTypes": "always" 12 | } 13 | } 14 | ] 15 | } -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.solcover.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | skipFiles: [ 3 | 'test/Token.sol', 4 | 'test/ERC20Token.sol', 5 | 'test/TestHandler.sol', 6 | 'test/ERC1155Token.sol', 7 | ], 8 | mocha: { 9 | grep: "@skip-on-coverage", // Find everything with this tag 10 | invert: true // Run the grep's inverse set. 11 | } 12 | }; -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.solhint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "solhint:recommended", 3 | "plugins": [ 4 | "prettier" 5 | ], 6 | "rules": { 7 | "compiler-version": "off", 8 | "func-visibility": [ 9 | "warn", 10 | { 11 | "ignoreConstructors": true 12 | } 13 | ], 14 | "prettier/prettier": "error", 15 | "not-rely-on-time": "off", 16 | "reason-string": "off", 17 | "no-empty-blocks": "off", 18 | "avoid-low-level-calls": "off" 19 | } 20 | } -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": "truffle test (ganache running)", 6 | "type": "node", 7 | "request": "launch", 8 | "program": "${workspaceRoot}/node_modules/truffle/build/cli.bundled.js", 9 | "args": [ 10 | "test" 11 | ], 12 | "cwd": "${workspaceRoot}", 13 | "outFiles": [ 14 | "${workspaceRoot}/test/**/*" 15 | ], 16 | }, 17 | ] 18 | } 19 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/benchmark/GnosisSafe.Creation.spec.ts: -------------------------------------------------------------------------------- 1 | import "@nomiclabs/hardhat-ethers"; 2 | import { setupBenchmarkContracts } from "./utils/setup" 3 | 4 | const contractSetup = setupBenchmarkContracts(undefined, true) 5 | describe("GnosisSafe", async () => { 6 | it("creation", async () => { 7 | await contractSetup() 8 | }) 9 | }) -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/common/Enum.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | /// @title Enum - Collection of enums 5 | /// @author Richard Meissner - 6 | contract Enum { 7 | enum Operation {Call, DelegateCall} 8 | } 9 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/common/EtherPaymentFallback.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | /// @title EtherPaymentFallback - A contract that has a fallback to accept ether payments 5 | /// @author Richard Meissner - 6 | contract EtherPaymentFallback { 7 | event SafeReceived(address indexed sender, uint256 value); 8 | 9 | /// @dev Fallback function accepts Ether transactions. 10 | receive() external payable { 11 | emit SafeReceived(msg.sender, msg.value); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/common/SelfAuthorized.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | /// @title SelfAuthorized - authorizes current contract to perform actions 5 | /// @author Richard Meissner - 6 | contract SelfAuthorized { 7 | function requireSelfCall() private view { 8 | require(msg.sender == address(this), "GS031"); 9 | } 10 | 11 | modifier authorized() { 12 | // This is a function call as it minimized the bytecode size 13 | requireSelfCall(); 14 | _; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/common/Singleton.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | /// @title Singleton - Base for singleton contracts (should always be first super contract) 5 | /// This contract is tightly coupled to our proxy contract (see `proxies/GnosisSafeProxy.sol`) 6 | /// @author Richard Meissner - 7 | contract Singleton { 8 | // singleton always needs to be first declared variable, to ensure that it is at the same location as in the Proxy contract. 9 | // It should also always be ensured that the address is stored alone (uses a full word) 10 | address private singleton; 11 | } 12 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/interfaces/ERC777TokensRecipient.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | interface ERC777TokensRecipient { 5 | function tokensReceived( 6 | address operator, 7 | address from, 8 | address to, 9 | uint256 amount, 10 | bytes calldata data, 11 | bytes calldata operatorData 12 | ) external; 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/proxies/IProxyCreationCallback.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | import "./GnosisSafeProxy.sol"; 4 | 5 | interface IProxyCreationCallback { 6 | function proxyCreated( 7 | GnosisSafeProxy proxy, 8 | address _singleton, 9 | bytes calldata initializer, 10 | uint256 saltNonce 11 | ) external; 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/test/ERC20Token.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.6.0 <0.8.0; 3 | 4 | import "@openzeppelin/contracts/token/ERC20/ERC20.sol"; 5 | 6 | contract ERC20Token is ERC20 { 7 | constructor() public ERC20("TestToken", "TT") { 8 | _mint(msg.sender, 1000000000000000); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/test/TestHandler.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.7.0 <0.9.0; 3 | 4 | import "../handler/HandlerContext.sol"; 5 | 6 | contract TestHandler is HandlerContext { 7 | function dudududu() external view returns (address sender, address manager) { 8 | return (_msgSender(), _manager()); 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/contracts/test/Token.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: LGPL-3.0-only 2 | pragma solidity >=0.6.0 <0.7.0; 3 | import "@gnosis.pm/mock-contract/contracts/MockContract.sol"; 4 | 5 | interface Token { 6 | function transfer(address _to, uint256 value) external returns (bool); 7 | } 8 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_0.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_1.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_1_1.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_2_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_2_0.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Final.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Final.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Initial.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Audit_Report_1_3_0_Initial.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/Gnosis_Safe_Symbolic_Execution.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/safe-contracts/docs/Gnosis_Safe_Symbolic_Execution.pdf -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/audit_1_2_0.md: -------------------------------------------------------------------------------- 1 | ### Audit Results 2 | 3 | ##### Auditor 4 | * G0 Group (https://github.com/g0-group) 5 | * Adam Kolář (@adamkolar) 6 | * Nick Munoz-McDonald (@NickErrant) 7 | 8 | ##### Notes 9 | The audit was performed on commit [62d4bd39925db65083b035115d6987772b2d2dca](https://github.com/gnosis/safe-contracts/commit/62d4bd39925db65083b035115d6987772b2d2dca) 10 | 11 | ##### Files 12 | * [Audit Report 1.2.0](Gnosis_Safe_Audit_Report_1_2_0.pdf) -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/docs/rv_1_0_0.md: -------------------------------------------------------------------------------- 1 | ### Formal Verification Results 2 | 3 | ##### Auditor 4 | * Runtime Verification (https://github.com/runtimeverification) 5 | 6 | ##### Notes 7 | The formal verification was based on commit [427d6f7e779431333c54bcb4d4cde31e4d57ce96](https://github.com/gnosis/safe-contracts/commit/427d6f7e779431333c54bcb4d4cde31e4d57ce96) 8 | 9 | Critical findings have been fixed with https://github.com/gnosis/safe-contracts/pull/90 10 | 11 | ##### Files 12 | * [Formal Verification Report](Gnosis_Safe_Formal_Verification_Report_1_0_0.pdf) -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/deploy/deploy_accessors.ts: -------------------------------------------------------------------------------- 1 | import { DeployFunction } from "hardhat-deploy/types"; 2 | import { HardhatRuntimeEnvironment } from "hardhat/types"; 3 | 4 | const deploy: DeployFunction = async function ( 5 | hre: HardhatRuntimeEnvironment, 6 | ) { 7 | const { deployments, getNamedAccounts } = hre; 8 | const { deployer } = await getNamedAccounts(); 9 | const { deploy } = deployments; 10 | 11 | await deploy("SimulateTxAccessor", { 12 | from: deployer, 13 | args: [], 14 | log: true, 15 | deterministicDeployment: true, 16 | }); 17 | }; 18 | 19 | deploy.tags = ['accessors', 'l2-suite', 'main-suite'] 20 | export default deploy; 21 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/deploy/deploy_factories.ts: -------------------------------------------------------------------------------- 1 | import { DeployFunction } from "hardhat-deploy/types"; 2 | import { HardhatRuntimeEnvironment } from "hardhat/types"; 3 | 4 | const deploy: DeployFunction = async function ( 5 | hre: HardhatRuntimeEnvironment, 6 | ) { 7 | const { deployments, getNamedAccounts } = hre; 8 | const { deployer } = await getNamedAccounts(); 9 | const { deploy } = deployments; 10 | 11 | await deploy("GnosisSafeProxyFactory", { 12 | from: deployer, 13 | args: [], 14 | log: true, 15 | deterministicDeployment: true, 16 | }); 17 | }; 18 | 19 | deploy.tags = ['factory', 'l2-suite', 'main-suite'] 20 | export default deploy; 21 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/deploy/deploy_safe_l2.ts: -------------------------------------------------------------------------------- 1 | import { DeployFunction } from "hardhat-deploy/types"; 2 | import { HardhatRuntimeEnvironment } from "hardhat/types"; 3 | 4 | const deploy: DeployFunction = async function ( 5 | hre: HardhatRuntimeEnvironment, 6 | ) { 7 | const { deployments, getNamedAccounts } = hre; 8 | const { deployer } = await getNamedAccounts(); 9 | const { deploy } = deployments; 10 | 11 | await deploy("GnosisSafeL2", { 12 | from: deployer, 13 | args: [], 14 | log: true, 15 | deterministicDeployment: true, 16 | }); 17 | }; 18 | 19 | deploy.tags = ['l2', 'l2-suite'] 20 | export default deploy; 21 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/deploy/deploy_safe_singleton.ts: -------------------------------------------------------------------------------- 1 | import { DeployFunction } from "hardhat-deploy/types"; 2 | import { HardhatRuntimeEnvironment } from "hardhat/types"; 3 | 4 | const deploy: DeployFunction = async function ( 5 | hre: HardhatRuntimeEnvironment, 6 | ) { 7 | const { deployments, getNamedAccounts } = hre; 8 | const { deployer } = await getNamedAccounts(); 9 | const { deploy } = deployments; 10 | 11 | await deploy("GnosisSafe", { 12 | from: deployer, 13 | args: [], 14 | log: true, 15 | deterministicDeployment: true, 16 | }); 17 | }; 18 | 19 | deploy.tags = ['singleton', 'main-suite'] 20 | export default deploy; 21 | -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/index.ts: -------------------------------------------------------------------------------- 1 | export * from './utils/proxies' 2 | export * from './utils/constants' 3 | export * from './utils/execution' 4 | export * from './utils/multisend' -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/tasks/deploy_contracts.ts: -------------------------------------------------------------------------------- 1 | import "hardhat-deploy"; 2 | import "@nomiclabs/hardhat-ethers"; 3 | import { task } from "hardhat/config"; 4 | 5 | task("deploy-contracts", "Deploys and verifies Safe contracts") 6 | .setAction(async (_, hre) => { 7 | await hre.run("deploy") 8 | await hre.run("local-verify") 9 | await hre.run("etherscan-verify", { forceLicense: true, license: 'LGPL-3.0'}) 10 | }); 11 | 12 | export { } -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/utils/constants.ts: -------------------------------------------------------------------------------- 1 | export const AddressOne = "0x0000000000000000000000000000000000000001"; -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/src/utils/solc.ts: -------------------------------------------------------------------------------- 1 | import solc from "solc" 2 | 3 | const solcCache: Record = {} 4 | 5 | export const loadSolc = async (version: string): Promise => { 6 | return await new Promise((resolve, reject) => { 7 | if (solcCache[version] !== undefined) resolve(solcCache[version]) 8 | else solc.loadRemoteVersion(`v${version}`, (error: any, soljson: any) => { 9 | solcCache[version] = soljson 10 | return (error) ? reject(error) : resolve(soljson); 11 | }); 12 | }); 13 | } -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/test/factory/Proxy.spec.ts: -------------------------------------------------------------------------------- 1 | import { expect } from "chai"; 2 | import hre from "hardhat"; 3 | import "@nomiclabs/hardhat-ethers"; 4 | import { AddressZero } from "@ethersproject/constants"; 5 | 6 | describe("Proxy", async () => { 7 | 8 | describe("contrcutor", async () => { 9 | 10 | it('should revert with invalid singleton address', async () => { 11 | const Proxy = await hre.ethers.getContractFactory("GnosisSafeProxy"); 12 | await expect( 13 | Proxy.deploy(AddressZero) 14 | ).to.be.revertedWith("Invalid singleton address provided") 15 | }) 16 | 17 | }) 18 | }) -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/test/utils/config.ts: -------------------------------------------------------------------------------- 1 | export const safeContractUnderTest = () => { 2 | return !process.env.SAFE_CONTRACT_UNDER_TEST ? "GnosisSafe" : process.env.SAFE_CONTRACT_UNDER_TEST 3 | } -------------------------------------------------------------------------------- /contracts/lib/safe-contracts/types/solc.d.ts: -------------------------------------------------------------------------------- 1 | declare module 'solc'; -------------------------------------------------------------------------------- /contracts/lib/solady/.gitignore: -------------------------------------------------------------------------------- 1 | # NodeJS files 2 | node_modules/ 3 | coverage 4 | coverage.json 5 | typechain 6 | 7 | # Hardhat files 8 | cache 9 | artifacts 10 | 11 | cache/ 12 | out/ 13 | 14 | # Ignore Environment Variables! 15 | .env 16 | .env.prod 17 | 18 | # Ignore all vscode settings 19 | .vscode/ 20 | 21 | # Ignore flattened files 22 | flattened.txt 23 | 24 | broadcast 25 | 26 | # Coverage 27 | lcov.info 28 | 29 | # Woke testing 30 | .woke-build 31 | .woke-logs 32 | pytypes 33 | __pycache__/ 34 | *.py[cod] 35 | .hypothesis/ 36 | woke-coverage.cov 37 | -------------------------------------------------------------------------------- /contracts/lib/solady/.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "lib/ds-test"] 2 | path = lib/ds-test 3 | url = https://github.com/dapphub/ds-test 4 | branch = 9310e879db8ba3ea6d5c6489a579118fd264a3f5 -------------------------------------------------------------------------------- /contracts/lib/solady/audits/ackee-blockchain-solady-report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/solady/audits/ackee-blockchain-solady-report.pdf -------------------------------------------------------------------------------- /contracts/lib/solady/audits/shung-solady-erc721-audit.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/solady/audits/shung-solady-erc721-audit.pdf -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/contracts/lib/solady/ext/woke/__init__.py -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/weird/Approval.sol: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020 d-xo 2 | // SPDX-License-Identifier: AGPL-3.0-only 3 | 4 | pragma solidity >=0.6.12; 5 | 6 | import {ERC20} from "./ERC20.sol"; 7 | 8 | contract ApprovalRaceToken is ERC20 { 9 | // --- Init --- 10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {} 11 | 12 | // --- Token --- 13 | function approve(address usr, uint wad) override public returns (bool) { 14 | require(allowance[msg.sender][usr] == 0, "unsafe-approve"); 15 | return super.approve(usr, wad); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/weird/ApprovalToZero.sol: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020 d-xo 2 | // SPDX-License-Identifier: AGPL-3.0-only 3 | 4 | pragma solidity >=0.6.12; 5 | 6 | import {ERC20} from "./ERC20.sol"; 7 | 8 | contract ApprovalToZeroToken is ERC20 { 9 | // --- Init --- 10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {} 11 | 12 | // --- Token --- 13 | function approve(address usr, uint wad) override public returns (bool) { 14 | require(usr != address(0), "no approval for the zero address"); 15 | return super.approve(usr, wad); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/weird/HighDecimals.sol: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020 d-xo 2 | // SPDX-License-Identifier: AGPL-3.0-only 3 | 4 | pragma solidity >=0.6.12; 5 | 6 | import {ERC20} from "./ERC20.sol"; 7 | 8 | contract HighDecimalToken is ERC20 { 9 | constructor(uint _totalSupply) ERC20(_totalSupply) public { 10 | decimals = 50; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/weird/LowDecimals.sol: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020 d-xo 2 | // SPDX-License-Identifier: AGPL-3.0-only 3 | 4 | pragma solidity >=0.6.12; 5 | 6 | import {ERC20} from "./ERC20.sol"; 7 | 8 | contract LowDecimalToken is ERC20 { 9 | constructor(uint _totalSupply) ERC20(_totalSupply) public { 10 | decimals = 2; 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/weird/RevertToZero.sol: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020 d-xo 2 | // SPDX-License-Identifier: AGPL-3.0-only 3 | 4 | pragma solidity >=0.6.12; 5 | 6 | import {ERC20} from "./ERC20.sol"; 7 | 8 | contract RevertToZeroToken is ERC20 { 9 | // --- Init --- 10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {} 11 | 12 | // --- Token --- 13 | function transferFrom(address src, address dst, uint wad) override public returns (bool) { 14 | require(dst != address(0), "transfer-to-zero"); 15 | return super.transferFrom(src, dst, wad); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/solady/ext/woke/weird/RevertZero.sol: -------------------------------------------------------------------------------- 1 | // Copyright (C) 2020 d-xo 2 | // SPDX-License-Identifier: AGPL-3.0-only 3 | 4 | pragma solidity >=0.6.12; 5 | 6 | import {ERC20} from "./ERC20.sol"; 7 | 8 | contract RevertZeroToken is ERC20 { 9 | // --- Init --- 10 | constructor(uint _totalSupply) ERC20(_totalSupply) public {} 11 | 12 | // --- Token --- 13 | function transferFrom(address src, address dst, uint wad) override public returns (bool) { 14 | require(wad != 0, "zero-value-transfer"); 15 | return super.transferFrom(src, dst, wad); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /contracts/lib/solady/lib/ds-test/.gitignore: -------------------------------------------------------------------------------- 1 | /.dapple 2 | /build 3 | /out 4 | -------------------------------------------------------------------------------- /contracts/lib/solady/lib/ds-test/Makefile: -------------------------------------------------------------------------------- 1 | all:; dapp build 2 | 3 | test: 4 | -dapp --use solc:0.4.23 build 5 | -dapp --use solc:0.4.26 build 6 | -dapp --use solc:0.5.17 build 7 | -dapp --use solc:0.6.12 build 8 | -dapp --use solc:0.7.5 build 9 | 10 | demo: 11 | DAPP_SRC=demo dapp --use solc:0.7.5 build 12 | -hevm dapp-test --verbose 3 13 | 14 | .PHONY: test demo 15 | -------------------------------------------------------------------------------- /contracts/lib/solady/lib/ds-test/default.nix: -------------------------------------------------------------------------------- 1 | { solidityPackage, dappsys }: solidityPackage { 2 | name = "ds-test"; 3 | src = ./src; 4 | } 5 | -------------------------------------------------------------------------------- /contracts/lib/solady/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solady", 3 | "version": "0.0.55", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "solady", 9 | "version": "0.0.55", 10 | "license": "MIT" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/solady/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solady", 3 | "license": "MIT", 4 | "version": "0.0.113", 5 | "description": "Optimized Solidity snippets.", 6 | "files": [ 7 | "src/**/*.sol", 8 | "js/**/*.js" 9 | ], 10 | "main": "js/solady.js", 11 | "module": "js/solady.js", 12 | "repository": { 13 | "type": "git", 14 | "url": "git+https://github.com/vectorized/solady.git" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /contracts/lib/solady/test/README.md: -------------------------------------------------------------------------------- 1 | ## WARNING! 2 | 3 | All test files are strictly intended for testing purposes only. 4 | 5 | Do NOT copy anything here into production code unless you really know what you are doing. -------------------------------------------------------------------------------- /contracts/lib/solady/test/utils/InvariantTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.4; 3 | 4 | contract InvariantTest { 5 | address[] private _targets; 6 | 7 | function targetContracts() public view virtual returns (address[] memory) { 8 | require(_targets.length > 0, "NO_TARGET_CONTRACTS"); 9 | return _targets; 10 | } 11 | 12 | function _addTargetContract(address newTargetContract) internal virtual { 13 | _targets.push(newTargetContract); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /contracts/lib/solady/test/utils/SoladyTest.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.4; 3 | 4 | import "./forge-std/Test.sol"; 5 | import "./TestPlus.sol"; 6 | 7 | contract SoladyTest is Test, TestPlus { 8 | /// @dev Alias for `_hem`. 9 | function _bound(uint256 x, uint256 min, uint256 max) internal pure virtual returns (uint256) { 10 | return _hem(x, min, max); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /contracts/lib/solady/test/utils/forge-std/Script.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity >=0.6.0 <0.9.0; 3 | 4 | import "./Vm.sol"; 5 | import "./console.sol"; 6 | 7 | abstract contract Script { 8 | bool public IS_SCRIPT = true; 9 | address private constant VM_ADDRESS = 10 | address(bytes20(uint160(uint256(keccak256("hevm cheat code"))))); 11 | 12 | Vm public constant vm = Vm(VM_ADDRESS); 13 | } 14 | -------------------------------------------------------------------------------- /contracts/lib/solady/test/utils/mocks/MockERC1271Malicious.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: MIT 2 | pragma solidity ^0.8.4; 3 | 4 | /// @dev WARNING! This mock is strictly intended for testing purposes only. 5 | /// Do NOT copy anything here into production code unless you really know what you are doing. 6 | contract MockERC1271Malicious { 7 | function isValidSignature(bytes32, bytes calldata) external pure returns (bytes4) { 8 | /// @solidity memory-safe-assembly 9 | assembly { 10 | mstore(0, 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff) 11 | return(0, 32) 12 | } 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /contracts/offchain/addresses/arb.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/avax.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/base.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/bsc.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/ftm.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/goerli.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/mainnet.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/optimism.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/polygon.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/offchain/addresses/zkevm.json: -------------------------------------------------------------------------------- 1 | {} -------------------------------------------------------------------------------- /contracts/remappings.txt: -------------------------------------------------------------------------------- 1 | ds-test/=lib/forge-std/lib/ds-test/src/ 2 | erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/ 3 | forge-std/=lib/forge-std/src/ 4 | openzeppelin-contracts/=lib/openzeppelin-contracts/contracts/ 5 | openzeppelin/=lib/openzeppelin-contracts/contracts/ 6 | safe-contracts/=lib/safe-contracts/contracts/ 7 | solady/=lib/solady/src/ 8 | solmate/=lib/solady/lib/solmate/src/ 9 | solidity-bytes-utils/=lib/solidity-bytes-utils/contracts/ -------------------------------------------------------------------------------- /contracts/scope.txt: -------------------------------------------------------------------------------- 1 | src/libraries/TypeHashHelper.sol 2 | src/libraries/SafeHelper.sol 3 | src/core/TransactionValidator.sol 4 | src/core/SafeModeratorOverridable.sol 5 | src/core/SafeEnabler.sol 6 | src/core/SafeModerator.sol 7 | src/core/Constants.sol 8 | src/core/ConsoleFallbackHandler.sol 9 | src/core/AddressProvider.sol 10 | src/core/PolicyValidator.sol 11 | src/core/registries/PolicyRegistry.sol 12 | src/core/registries/ExecutorRegistry.sol 13 | src/core/registries/WalletRegistry.sol 14 | src/core/AddressProviderService.sol 15 | src/core/SafeDeployer.sol 16 | src/core/ExecutorPlugin.sol -------------------------------------------------------------------------------- /contracts/script/deploy_DeployProtocol.s.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Unlicense 2 | pragma solidity ^0.8.19; 3 | 4 | import "../script/utils/ConsoleFactory.s.sol"; 5 | 6 | contract DeployProtocol is ConsoleFactory { 7 | constructor() ConsoleFactory("offchain/addressManager.ts") {} 8 | 9 | function deployProtocol() public { 10 | ConsoleFactory.deployConsole(_getGovernance(), true); 11 | } 12 | 13 | function _getGovernance() internal view returns (address) { 14 | address _gov = vm.addr(uint256(vm.envBytes32("CONSOLE_MAINNET_PRIVATE_KEY"))); 15 | require(_gov != address(0), "invalid gov"); 16 | return _gov; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /contracts/script/utils/Deployer.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: Unlicense 2 | pragma solidity ^0.8.19; 3 | 4 | import {CREATE3} from "solady/utils/CREATE3.sol"; 5 | 6 | contract Deployer { 7 | function create3Deploy(bytes memory code, bytes32 salt, bytes memory constructorArgs) public returns (address) { 8 | return CREATE3.deploy(salt, abi.encodePacked(code, constructorArgs), 0); 9 | } 10 | 11 | function getDeployed(bytes32 salt) public view returns (address) { 12 | return CREATE3.getDeployed(salt); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /contracts/slither.config.json: -------------------------------------------------------------------------------- 1 | { 2 | "filter_paths": "(test/|script/|lib/)" 3 | } -------------------------------------------------------------------------------- /contracts/sonar-project.properties: -------------------------------------------------------------------------------- 1 | sonar.projectKey=console-core-v2 2 | sonar.projectName=console-core-v2 3 | sonar.projectVersion=1.0 4 | 5 | sonar.sarifReportPaths=results.sarif 6 | sonar.exclusions="lib/**" 7 | 8 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/AddressProvider/accept-governance/AcceptGovernance.tree: -------------------------------------------------------------------------------- 1 | AcceptGovernance.t.sol::acceptGovernance() 2 | ├─ When {msg.sender} is not pendingGovernance 3 | │ └─ It should revert with {NotPendingGovernance(msg.sender)} 4 | └─ When {msg.sender} is pendingGovernance 5 | ├─ It should emit a {GovernanceTransferred(governance, msg.sender)} event 6 | ├─ It should set {governance} to {msg.sender} 7 | └─ It should clear pendingGovernance -------------------------------------------------------------------------------- /contracts/test/branch-trees/AddressProvider/set-governance/SetGovernance.tree: -------------------------------------------------------------------------------- 1 | SetGovernance.t.sol::setGovernance(address _newGovernance) 2 | ├─ When {_newGovernance} address is ADDRESS_ZERO 3 | │ └─ It shoud revert with {NullAddress()} 4 | └─ When new governance address is not ADDRESS_ZERO 5 | ├─ When the caller is not governance address 6 | │ └─ It shoud revert with {NotGovernance(msg.sender)} 7 | └─ When the caller is governance address 8 | ├─ it should emit a {GovernanceTransferRequested(prevGov, newGov)} event 9 | └─ it should set {pendingGovernance} to {_newGovernance} -------------------------------------------------------------------------------- /contracts/test/branch-trees/ExecutorRegistry/deregister-executor/DeRegisterExecutor.tree: -------------------------------------------------------------------------------- 1 | DeRegisterExecutor.t.sol::deRegisterExecutor(address _subAccount, address _executor) 2 | ├─ When {msg.sender} is not owner wallet of {_subAccount} 3 | │ └─ It should revert with {NotOwnerWallet()} 4 | └─ When {msg.sender} is owner wallet of {_subAccount} 5 | ├─ When {_executor} is not registered for {_subAccount} 6 | │ └─ It should revert with {DoesNotExist()} 7 | └─ When {_executor} is registered for {_subAccount} 8 | └─ {_executor} should be removed from {subAccountToExecutors} for {_subAccount} 9 | └─ It should emit DeRegisterExecutor(_subAccount, _owner, _executor) event -------------------------------------------------------------------------------- /contracts/test/branch-trees/ExecutorRegistry/register-executor/RegisterExecutor.tree: -------------------------------------------------------------------------------- 1 | RegisterExecutor.t.sol::registerExecutor(address _subAccount, address _executor) 2 | ├─ When {msg.sender} is not owner wallet of {_subAccount} 3 | │ └─ It should revert with {NotOwnerWallet()} 4 | └─ When {msg.sender} is owner wallet of {_subAccount} 5 | ├─ When {_executor} is already registered for {_subAccount} 6 | │ └─ It should revert with {AlreadyExists()} 7 | └─ When {_executor} is not registered for {_subAccount} 8 | └─ {_executor} should be added to {subAccountToExecutors} for {_subAccount} 9 | └─ It should emit RegisterExecutor(_subAccount, _owner, _executor) event -------------------------------------------------------------------------------- /contracts/test/branch-trees/SafeEnabler/SafeEnabler.misc.t.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.19; 3 | 4 | import "forge-std/Test.sol"; 5 | 6 | import {SafeEnabler} from "src/core/SafeEnabler.sol"; 7 | 8 | contract SafeEnabler_SetGuardTest is Test, SafeEnabler { 9 | function testConstants() public { 10 | assertEq(_SENTINEL_MODULES, address(0x1)); 11 | assertEq(_GUARD_STORAGE_SLOT, keccak256("guard_manager.guard.address")); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/SafeModerator/check-after-execution/CheckAfterExecution.tree: -------------------------------------------------------------------------------- 1 | CheckAfterExecution.t.sol::checkAfterExecution(bytes32, /*txHash*/ bool /*success*/ ) 2 | └─ It should make a call to validatePostTransaction on TransactionValidator 3 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/SafeModerator/check-transaction/CheckTransaction.tree: -------------------------------------------------------------------------------- 1 | CheckTransaction.t.sol::checkTransaction(address to, uint256 value, bytes memory data, Enum.Operation operation, uint256, /*safeTxGas*/ uint256, /*baseGas*/ uint256, /*gasPrice*/ address, /*gasToken*/ address payable, /*refundReceiver*/ bytes memory signatures, address /*msgSender*/) 2 | └─It should make a call to validatePreTransaction on TransactionValidator 3 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/SafeModeratorOverridable/check-after-execution/CheckAfterExecution.tree: -------------------------------------------------------------------------------- 1 | CheckAfterExecution.t.sol::checkAfterExecution(bytes32, /*txHash*/ bool /*success*/ ) 2 | └─ It should make a call to validatePostTransactionOverridable on TransactionValidator 3 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/SafeModeratorOverridable/check-transaction/CheckTransaction.tree: -------------------------------------------------------------------------------- 1 | CheckTransaction.t.sol::checkTransaction(address to, uint256 value, bytes memory data, Enum.Operation operation, uint256, /*safeTxGas*/ uint256, /*baseGas*/ uint256, /*gasPrice*/ address, /*gasToken*/ address payable, /*refundReceiver*/ bytes memory signatures, address /*msgSender*/) 2 | └─ It should make a call to validatePreTransactionOverridable on TransactionValidator 3 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/TransactionValidator/validate-post-exec-tx/ValidatePostExecutorTransaction.tree: -------------------------------------------------------------------------------- 1 | ValidatePostExecutorTransaction.t.sol::validatePostExecutorTransaction(address, /*msgSender */ address subAccount) 2 | ├─ When {subAccount} doesn't have it's guard on. 3 | │ └─ It should revert with {InvalidGuard()} 4 | └─ When {subAccount} has it's guard on 5 | ├─ When {subAccount} has owner console enabled as module 6 | │ └─ It should return without reverting 7 | └─ When {subAccount} has owner console disabled as module 8 | └─ It should revert with {InvalidModule()} -------------------------------------------------------------------------------- /contracts/test/branch-trees/TransactionValidator/validate-post-tx-overridable/ValidatePostTransactionOverridable.tree: -------------------------------------------------------------------------------- 1 | ValidatePostTransactionOverridable.t.sol::validatePostTransactionOverridable() -------------------------------------------------------------------------------- /contracts/test/branch-trees/TransactionValidator/validate-post-tx/ValidatePostTx.tree: -------------------------------------------------------------------------------- 1 | ValidatePostTransaction.t.sol::validatePostTransaction(bytes32, /*txHash */ bool, /*success */ address subAccount) 2 | ├─ When {subAccount} doesn't have it's guard on. 3 | │ └─ It should revert with {InvalidGuard()} 4 | └─ When {subAccount} has it's guard on 5 | ├─ When {subAccount} has owner console enabled as module 6 | │ └─ It should return without reverting 7 | └─ When {subAccount} has owner console disabled as module 8 | └─ It should revert with {InvalidModule()} -------------------------------------------------------------------------------- /contracts/test/branch-trees/TransactionValidator/validate-pre-exec-tx/ValidatePreExecutorTx.tree: -------------------------------------------------------------------------------- 1 | ValidatePreExecutorTransaction.t.sol::validatePreExecutorTransaction(address, /*msgSender */address from,address to,uint256 value,bytes memory data,Enum.Operation operation,bytes memory signatures) 2 | ├─ When {policyValidator} validates the signatures 3 | │ └─ It should return without reverting 4 | └─ When {policyValidator} invalidates the signatures 5 | └─ It should revert with {TxnUnAuthorized()} 6 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/TransactionValidator/validate-pre-tx-overridable/ValidatePreTxOverridable.tree: -------------------------------------------------------------------------------- 1 | ValidatePreTransactionOverridable.t.sol::validatePreTransactionOverridable(SafeTransactionParams memory txParams) 2 | ├─ When transaction is a guard removal transaction 3 | │ └─ It should return without reverting 4 | └─ When transaction is a not a guard removal transaction 5 | ├─ When {policyValidator} validates the signatures 6 | │ └─ It should return without reverting 7 | └─ When {policyValidator} invalidates the signatures 8 | └─ It should revert with {TxnUnAuthorized()} 9 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/TransactionValidator/validate-pre-tx/ValidatePreTx.tree: -------------------------------------------------------------------------------- 1 | ValidatePreTransaction.t.sol::validatePreTransaction(SafeTransactionParams memory txParams) 2 | ├─ When {policyValidator} validates the signatures 3 | │ └─ It should return without reverting 4 | └─ When {policyValidator} invalidates the signatures 5 | └─ It should revert with {TxnUnAuthorized()} 6 | -------------------------------------------------------------------------------- /contracts/test/branch-trees/WalletRegistry/register-wallet/RegisterWallet.tree: -------------------------------------------------------------------------------- 1 | RegisterWallet.t.sol::registerWallet() 2 | ├─ When {msg.sender} is already registered 3 | │ └─ It should revert with {AlreadyRegistered()} 4 | └─ When {msg.sender} is not registered 5 | ├─ When {msg.sender} is a sub account 6 | │ └─ It should revert with {IsSubAccount()} 7 | └─ When {msg.sender} is not a sub account 8 | ├─ It should register {msg.sender} as wallet in {isWallet} 9 | └─ It should emit {RegisterWallet(msg.sender)} 10 | -------------------------------------------------------------------------------- /contracts/test/libs/TypeHashHelper.lib.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: BUSL-1.1 2 | pragma solidity 0.8.19; 3 | 4 | import {TypeHashHelper} from "src/libraries/TypeHashHelper.sol"; 5 | 6 | contract TypeHashHelperLib { 7 | function buildTransactionStructHash(TypeHashHelper.Transaction memory _txn) external pure returns (bytes32) { 8 | return TypeHashHelper._buildTransactionStructHash(_txn); 9 | } 10 | 11 | function buildValidationStructHash(TypeHashHelper.Validation memory _vldn) external pure returns (bytes32) { 12 | return TypeHashHelper._buildValidationStructHash(_vldn); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /contracts/test/mocks/MockUnsupportedAddress.sol: -------------------------------------------------------------------------------- 1 | // SPDX-License-Identifier: UNLICENSED 2 | pragma solidity ^0.8.19; 3 | 4 | contract MockUnsupportedAddress { 5 | fallback(bytes calldata) external returns (bytes memory) { 6 | return abi.encode(15); 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /contracts/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "target": "ES2016", 5 | "lib": ["es2015"], 6 | "resolveJsonModule": true, 7 | "esModuleInterop": true, 8 | "alwaysStrict": false 9 | }, 10 | "exclude": ["node_modules"] 11 | } 12 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/01d0132cd2bda8d75d0f816ce712f8b5-23A0D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/01d0132cd2bda8d75d0f816ce712f8b5-23A0D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/025a312229f81f0132287a07237573a4-15005.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/025a312229f81f0132287a07237573a4-15005.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/027771eed6eec6d29d87c3d641c6c03f-DAC44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/027771eed6eec6d29d87c3d641c6c03f-DAC44.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/03056f38c0409e11b992662ff8b9d291-C22C9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/03056f38c0409e11b992662ff8b9d291-C22C9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0432dad70b18fa0232c147833c40f5c2-594DD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0432dad70b18fa0232c147833c40f5c2-594DD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/08b5148b236c630bb46aacacf73a217b-315CF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/08b5148b236c630bb46aacacf73a217b-315CF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0ae311857ca5610dd4e8476c7100f7bd-A60D6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0ae311857ca5610dd4e8476c7100f7bd-A60D6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0dd6255142c84dcc6ec663458ed3fda9-E98D2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/0dd6255142c84dcc6ec663458ed3fda9-E98D2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1-B2132.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1-B2132.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047393624412210-1B61B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047393624412210-1B61B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047429766713404-16E35.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047429766713404-16E35.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047660084334622-4FCFD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1009047660084334622-4FCFD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1025426040316756068-05843.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1025426040316756068-05843.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1083068770823721071-EE4F6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1083068770823721071-EE4F6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/108db4db43a8df92fb224ce27c8419ec-5A94A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/108db4db43a8df92fb224ce27c8419ec-5A94A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1110201692663857255-A8E42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1110201692663857255-A8E42.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344547949301911-C84AB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344547949301911-C84AB.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344679365234779-05F87.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1128344679365234779-05F87.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1162a888c78000773591a5db6de8aa9f-DCF7E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1162a888c78000773591a5db6de8aa9f-DCF7E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/12b1cd82ae01e1b8c6e500f018ad4b73-E8E85.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/12b1cd82ae01e1b8c6e500f018ad4b73-E8E85.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/14f8cbc620b0a89c2a11ca8deace58eb-DA2D1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/14f8cbc620b0a89c2a11ca8deace58eb-DA2D1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f3fc-4884A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f446-9CC34.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f50d-195C0.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f636-300DD.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f642-83E8A.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f7df9547fbc24ce0cab6e2da89f7f0d-99E3B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/1f7df9547fbc24ce0cab6e2da89f7f0d-99E3B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2-ADBB4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2-ADBB4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/258a1ffc46d9e9c3872ad643ab9b4bd5-EE2DC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/258a1ffc46d9e9c3872ad643ab9b4bd5-EE2DC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/25d1d9d8d339f4258368c0359932dd5e-1C630.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/25d1d9d8d339f4258368c0359932dd5e-1C630.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2705-0589F.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2795-3358E.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2a9faff195fe333526cfe6ae6fce1420-49B98.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2a9faff195fe333526cfe6ae6fce1420-49B98.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2c1e18acbcb9cdaeabfd7fc6f5090edf-CA387.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2c1e18acbcb9cdaeabfd7fc6f5090edf-CA387.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2de2bcb6fe2e5617e1d3dd4c56a5a8f1-DE975.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2de2bcb6fe2e5617e1d3dd4c56a5a8f1-DE975.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2f2fd83cca70538ecaddd831bcb8f3b6-272B3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/2f2fd83cca70538ecaddd831bcb8f3b6-272B3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3-FB033.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3-FB033.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37254c70d1f43924aab295c5f32a33ab-FAE53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37254c70d1f43924aab295c5f32a33ab-FAE53.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37745f5520f15b2d5e24f7cd11118290-87C96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/37745f5520f15b2d5e24f7cd11118290-87C96.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3b6ed3f28629984e407926c0bb3e7e57-7CFD1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/3b6ed3f28629984e407926c0bb3e7e57-7CFD1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/4053316a000ef470965c629e7aacad9a-3BB48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/4053316a000ef470965c629e7aacad9a-3BB48.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/40faf496db7b4bbcab37bc04b134567d-EFC50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/40faf496db7b4bbcab37bc04b134567d-EFC50.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/453eac052c6c6b7a61d2f55848c5bdc6-FCF15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/453eac052c6c6b7a61d2f55848c5bdc6-FCF15.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/462cefe91b8bf4ec13a78693bb4d942f-B6659.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/462cefe91b8bf4ec13a78693bb4d942f-B6659.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/472e8696c1d575b51208a8571994c6bf-B0333.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/472e8696c1d575b51208a8571994c6bf-B0333.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/48cdf35ad6a1abcf335e556af8087774-4AD25.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/48cdf35ad6a1abcf335e556af8087774-4AD25.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5-E9BDB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5-E9BDB.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/51cc6faa390844056c24ea26c654003a-E2C26.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/51cc6faa390844056c24ea26c654003a-E2C26.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/591e68a648a7b28f8c1990efe1528761-F96F5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/591e68a648a7b28f8c1990efe1528761-F96F5.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/593f36e88b1657d978d620f5152eca82-52AEA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/593f36e88b1657d978d620f5152eca82-52AEA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5b71d15a9bcde45fd5520e3fb580eb53-E1A50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/5b71d15a9bcde45fd5520e3fb580eb53-E1A50.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6094e48ab77eb87fae4e3348c0d872b4-34FEF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6094e48ab77eb87fae4e3348c0d872b4-34FEF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6519fe644ecf954cfdf81ad4c9fbaad9-B43F2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/652c9b82f43282f85423f844ca26d6b4-F9AB0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/652c9b82f43282f85423f844ca26d6b4-F9AB0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/65732d84ecd9dfc5ae79f4a309454f86-5CAF4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/65732d84ecd9dfc5ae79f4a309454f86-5CAF4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/66c54ad6b6c2224e66ef8148ab5b7bcc-9BDF6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/66c54ad6b6c2224e66ef8148ab5b7bcc-9BDF6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/67594ee4b4d1fc03bca468327a0d145b-BD76A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/67594ee4b4d1fc03bca468327a0d145b-BD76A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/675b226a2239369c985cd538027c7c52-40875.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/675b226a2239369c985cd538027c7c52-40875.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6a567cbfd6039038b3e7fb3b7b3c7185-7C949.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6a567cbfd6039038b3e7fb3b7b3c7185-7C949.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6b084fd00f226a77abcf31000a85623e-5C817.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6b084fd00f226a77abcf31000a85623e-5C817.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6cdf4b32a5a3932260b03982bb21b3c6-297C6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6cdf4b32a5a3932260b03982bb21b3c6-297C6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6ff1e65c0976fd9df6010502da72f911-D2FA0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/6ff1e65c0976fd9df6010502da72f911-D2FA0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/701300a5bdd3bf5640bd1370251533e2-0DC47.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/701300a5bdd3bf5640bd1370251533e2-0DC47.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/73c29465f45b5724-B024C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/73c29465f45b5724-B024C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/751f210cd76b9b17316bb54ff939887b-0B021.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/751f210cd76b9b17316bb54ff939887b-0B021.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/756596661307965461-B1D91.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/756596661307965461-B1D91.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7adb62bd26616b991ac3e0e8987a60a7-CE8BC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7adb62bd26616b991ac3e0e8987a60a7-CE8BC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7be22dfd3e29e541eda121ff0ee73256-B7E2E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7be22dfd3e29e541eda121ff0ee73256-B7E2E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7c9a20a4cbc1437b2b701a64f980ea9c-490D9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7c9a20a4cbc1437b2b701a64f980ea9c-490D9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7d1c49f81d5bc224e4ddaf486f4be0eb-57F44.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7d1c49f81d5bc224e4ddaf486f4be0eb-57F44.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7e4d2e5d1a0d80280fa671aa513f0e9c-F7A9F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/7e4d2e5d1a0d80280fa671aa513f0e9c-F7A9F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/80b63b8eef8e8e0bef63af4cd4598430-39256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/80b63b8eef8e8e0bef63af4cd4598430-39256.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/83fa622da18abee1baf881ee7d3dd8da-76C8A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/83fa622da18abee1baf881ee7d3dd8da-76C8A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8441d5e9fe1fd4c074797db4578a0b54-66B22.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8441d5e9fe1fd4c074797db4578a0b54-66B22.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893826846457866-1AD3D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893826846457866-1AD3D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827027075142-F23DF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827027075142-F23DF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827089727568-5FD38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827089727568-5FD38.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827315826708-F59C0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893827315826708-F59C0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893828280909886-FBF42.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/851893828280909886-FBF42.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/860bc8415fcb344bebcf89a301158ffd-36A89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/860bc8415fcb344bebcf89a301158ffd-36A89.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8646f8b4f073429bf27df27459ab18a2-F6800.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8646f8b4f073429bf27df27459ab18a2-F6800.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/886f35a505c4042e51de62b1e7c30fa5-EC7E7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/886f35a505c4042e51de62b1e7c30fa5-EC7E7.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8c6129305f7cfbc60d0e2c052bc22211-CC381.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/8c6129305f7cfbc60d0e2c052bc22211-CC381.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/910676187288846397-518CD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/910676187288846397-518CD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/92719dd7bc8cb77c2a6b6813ef47a830-56832.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/92719dd7bc8cb77c2a6b6813ef47a830-56832.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/934055812859856cd87c3c397ccb56bd-064C4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/934055812859856cd87c3c397ccb56bd-064C4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951505379299311799-78C6C.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951505379299311799-78C6C.gif -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951506091798327316-7578A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/951506091798327316-7578A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/970d2e2f00cd7ef2134a1a3f21326349-404EA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/970d2e2f00cd7ef2134a1a3f21326349-404EA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/977133670429261884-CA8EA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/977133670429261884-CA8EA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9b01adfea5eb85ed7f3fc2c94c3592c8-E96F4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9b01adfea5eb85ed7f3fc2c94c3592c8-E96F4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9bf2181404e658cab4039c07df56213f-E3E89.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9bf2181404e658cab4039c07df56213f-E3E89.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9d005f28252054a605d1563bbb94db61-C6F53.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/9d005f28252054a605d1563bbb94db61-C6F53.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/Screenshot_2023-10-14_07-05-50-95B4B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/Screenshot_2023-10-14_07-05-50-95B4B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a-373CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a-373CA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a0457d118b6579a0106b86d86660fd78-D29A1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a0457d118b6579a0106b86d86660fd78-D29A1.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a11be1743d960d9d0807e6529db84028-375E9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a11be1743d960d9d0807e6529db84028-375E9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a6700d776b9feae9a8825a05eb056151-9CE8A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a6700d776b9feae9a8825a05eb056151-9CE8A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a843ca0cb0c92c6fdcc28f6285bdcd6e-A7BB4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/a843ca0cb0c92c6fdcc28f6285bdcd6e-A7BB4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aa3584c2ce5b338f4758e69aec19637c-72010.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aa3584c2ce5b338f4758e69aec19637c-72010.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aaeb97c3eb71d189670c03ef40cf07ef-96CF2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/aaeb97c3eb71d189670c03ef40cf07ef-96CF2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ad7fffe7929e5acf397b9f7739608ac0-2ADC3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ad7fffe7929e5acf397b9f7739608ac0-2ADC3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/adddc7313b30a4e8b5329894bf2034ab-5B4E5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/adddc7313b30a4e8b5329894bf2034ab-5B4E5.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/af47db264f598a776eef080a2c7aee22-4D508.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/af47db264f598a776eef080a2c7aee22-4D508.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/apple-touch-icon%402-EBA58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/apple-touch-icon%402-EBA58.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b30d26b226234841286fe01dbf9e98da-3EB14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b30d26b226234841286fe01dbf9e98da-3EB14.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b35ccff921a31a8e868c330e5d401246-C4BC6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b35ccff921a31a8e868c330e5d401246-C4BC6.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4d325ccda484b98fb07c2586ae5f970-64C08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4d325ccda484b98fb07c2586ae5f970-64C08.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4fead77f737aa7840a25e1cd39eb062-CEDEC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b4fead77f737aa7840a25e1cd39eb062-CEDEC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b5c5564bbdaa22a1e2d459e9bf6aef5a-B3AC0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b5c5564bbdaa22a1e2d459e9bf6aef5a-B3AC0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b70570b512f4bae5ddf0357c48b48b22-D1D5C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/b70570b512f4bae5ddf0357c48b48b22-D1D5C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bae3fdb74ed49558a4cd0636132b6776-75EEB.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bae3fdb74ed49558a4cd0636132b6776-75EEB.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bdd37d345b2d35b5513f03a81143aa4a-51209.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/bdd37d345b2d35b5513f03a81143aa4a-51209.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2704939e6436659b126caadce6bf20f-80CE2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2704939e6436659b126caadce6bf20f-80CE2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2cd5fb4d7ed64f4ff06a95068c810e3-C2061.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c2cd5fb4d7ed64f4ff06a95068c810e3-C2061.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4-og-banner-20E67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4-og-banner-20E67.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4fbf35c3e69a04ebc3a8a32a0bd3514-A8D31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c4fbf35c3e69a04ebc3a8a32a0bd3514-A8D31.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c616e441e02fbf7f8f4594b17761c02c-768C2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c616e441e02fbf7f8f4594b17761c02c-768C2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c666ed248264dd7aed5e1b0ce8f7bd3e-DD097.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c666ed248264dd7aed5e1b0ce8f7bd3e-DD097.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c6b85a4a6ca07ab15a30a24f570be5b8-08D6E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c6b85a4a6ca07ab15a30a24f570be5b8-08D6E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c7d1631b1ace6d52c37706e3f2f6f75a-5ABA3.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c9cb30134c634c9e02d0c64df4922803-98E33.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/c9cb30134c634c9e02d0c64df4922803-98E33.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/card-E9D38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/card-E9D38.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/d35a0c87f7f9f5e7c67430ca9593af01-64365.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/d35a0c87f7f9f5e7c67430ca9593af01-64365.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dc6e0072c993da12b699bb569417b6d1-25F7D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dc6e0072c993da12b699bb569417b6d1-25F7D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dd0b02132544c612d48d10270e412d9b-9486F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/dd0b02132544c612d48d10270e412d9b-9486F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/df88dfe1010e7b0caf3f1df6f2b9fa93-E97D9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/df88dfe1010e7b0caf3f1df6f2b9fa93-E97D9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e13420cb45f97860245c8425af03e2fb-87D5F.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e13420cb45f97860245c8425af03e2fb-87D5F.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e9472a11f41d425badda92e53fc91864-F560D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e9472a11f41d425badda92e53fc91864-F560D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e99436ce7f263d3f7b6d999b8921abbf-BAFA9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/e99436ce7f263d3f7b6d999b8921abbf-BAFA9.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ec283548018391e9a25a61215bd46007-2D6CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ec283548018391e9a25a61215bd46007-2D6CA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ed4484ef66c898526d51a3b65936c2ff-6B4AE.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ed4484ef66c898526d51a3b65936c2ff-6B4AE.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f23d0ae29fcc5a63df0b1e99990a51f7-8A74E.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f23d0ae29fcc5a63df0b1e99990a51f7-8A74E.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f4422c70568695907d5aa7f8632b4d51-4FBE2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/f4422c70568695907d5aa7f8632b4d51-4FBE2.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-400-E988B.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-400-E988B.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-500-0777F.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-500-0777F.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-600-CB411.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-600-CB411.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-700-891AC.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-700-891AC.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-800-D36B0.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-italic-800-D36B0.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-400-1456D.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-400-1456D.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-500-89CE5.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-500-89CE5.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-600-C1EA8.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-600-C1EA8.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-700-1949A.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-700-1949A.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-800-58487.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/ggsans-normal-800-58487.woff2 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/hasbulla-money-0551F.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/hasbulla-money-0551F.mp4 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-1CF31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-1CF31.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-216BC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-216BC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-42DBD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-42DBD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-5204D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-5204D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-57CC8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-57CC8.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-67E04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-67E04.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-68CA4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-68CA4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-6F0E0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-6F0E0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-91C78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-91C78.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A2D2A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A2D2A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A438B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-A438B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-AE099.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/image-AE099.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/james-franco-wait-what-AA6B1.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/james-franco-wait-what-AA6B1.mp4 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/lfg-lets-E1782.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/lfg-lets-E1782.mp4 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/safe-contracts-EDE24: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].html_Files/safe-contracts-EDE24 -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/631566f9-b0c6-4908-b492-3dcacd5d1a8d-44D0F -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/73c29465f45b5724-B024C.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/73c29465f45b5724-B024C.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/Screenshot_2023-10-14_07-05-50-95B4B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/Screenshot_2023-10-14_07-05-50-95B4B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/a-373CA.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/a-373CA.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/apple-touch-icon%402-EBA58.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/apple-touch-icon%402-EBA58.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/c4-og-banner-20E67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/c4-og-banner-20E67.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/card-E9D38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/card-E9D38.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/hasbulla-money-22B63.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/hasbulla-money-22B63.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-1CF31.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-1CF31.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-216BC.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-216BC.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-42DBD.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-42DBD.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-5204D.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-5204D.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-57CC8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-57CC8.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-67E04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-67E04.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-68CA4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-68CA4.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-6F0E0.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-6F0E0.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-91C78.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-91C78.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A2D2A.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A2D2A.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A438B.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-A438B.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-AE099.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/image-AE099.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/james-franco-wait-what-DE3DF.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/james-franco-wait-what-DE3DF.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/lfg-lets-5E020.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/lfg-lets-5E020.png -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/rn_image_picker_lib_temp_60c29da9-666c-435-1291A.jpg -------------------------------------------------------------------------------- /discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/safe-contracts-EDE24: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/code-423n4/2023-10-brahma/4cfcbb0e7f71ec9f23485663c63302a785b5f5f0/discord-export/Code4rena - ARCHIVE-Q4-2023 - brahma-oct13 [1161381699494621184].txt_Files/safe-contracts-EDE24 --------------------------------------------------------------------------------