Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forge script works when simulating but not when broadcasting #7639

Closed
2 tasks done
martinvol opened this issue Apr 11, 2024 · 6 comments
Closed
2 tasks done

Forge script works when simulating but not when broadcasting #7639

martinvol opened this issue Apr 11, 2024 · 6 comments
Assignees
Labels
T-bug Type: bug

Comments

@martinvol
Copy link

martinvol commented Apr 11, 2024

Component

Forge, Anvil

Have you ensured that all of these are up to date?

  • Foundry
  • Foundryup

What version of Foundry are you on?

forge 0.2.0 (1281421 2024-04-05T00:21:15.963758000Z)

What command(s) is the bug in?

forge script

Operating System

macOS (Apple Silicon)

Describe the bug

I have a somewhat complex script that deploy proxies, contract implementation and initializes them. The goal is to create a devchain in anvil that matches a fresh deploy to use for testing.

The scrip works perfectly fine when simulating (without --broadcast flag), but when I turn on the broadcast, it tries to send 377 tx and fails in tx 1#69 with just:

    Transaction: 0xa3554f1658caeae988e67036df484918cf6dc3cc4b83e0adbc87648f0ae1b18c
    Gas used: 12704562
    Error: reverted with: EvmError: Revert

0xa3554f1658caeae988e67036df484918cf6dc3cc4b83e0adbc87648f0ae1b18c

Error:
Transaction Failure: 0xa3554f1658caeae988e67036df484918cf6dc3cc4b83e0adbc87648f0ae1b18c

It's also worth noting cast has a different opinion on how that tx went:


$ cast run 0xa3554f1658caeae988e67036df484918cf6dc3cc4b83e0adbc87648f0ae1b18c  --rpc-url http://127.0.0.1:$ANVIL_PORT
Executing previous transactions from the block.
Traces:
  [8163217] Create2Deployer::create2()
    ├─ [8110339] → new <unknown>@0x23487b24543d9A02f2f47cd51c219c016dB1C62D
    │   ├─ emit OwnershipTransferred(param0: 0x0000000000000000000000000000000000000000, param1: Create2Deployer: [0x4e59b44847b379578588920cA78FbF26c0B4956C])
    │   └─ ← [Return] 40158 bytes of code
    └─ ← [Return] 0x23487b24543d9a02f2f47cd51c219c016db1c62d

Transaction successfully executed.

I'm running Anvil with
$ anvil --port $ANVIL_PORT --gas-limit 50000000
And starting the script with:
$ forge script migrations_sol/Migration.s.sol --rpc-url http://127.0.0.1:$ANVIL_PORT -vvvvv --broadcast --slow --non-interactive -- $LIBRARIES --revert-strings --legacy

I was able to track down the line that fails and I'm sure it's a call to create2 as described in the docs, but that's done many times before in the script and it works. If you're curious here's where it fails and here's where the contract to be deployed is specified. Sorry for the debug traces.

As a side note, here's a couple of problems that compounded with this:

  1. I couldn't find docs on how scripts are supposed to be converted into individual txs, so can't really tell what's really going on on the tx that fails.
  2. I couldn't get console.log to work when broadcasting a tx. When it simulates the calls, I do see logs as the output of forge script, but when it broadcasts I don't see logs nor in the Anvil's terminal.
@martinvol martinvol added the T-bug Type: bug label Apr 11, 2024
@martinvol martinvol changed the title Forge script works when simulating but not when broadcasting. Forge script works when simulating but not when broadcasting Apr 11, 2024
@martinvol
Copy link
Author

Forgot to add, this was run in a CI as well, so it rules out caching issues.

@martinvol
Copy link
Author

Was able to find in the logs the call that fails:

{
      "hash": "0x3b4e5e5770d6629fe8e0d65206e1de1dcfb0e03f7869180862bcfb679d68049e",
      "transactionType": "CREATE2",
      "contractName": null,
      "contractAddress": "0xb77b3b3e66a02B20E544839f4ad737C94fC1322E",
      "function": null,
      "arguments": null,
      "transaction": {
        "type": "0x02",
        "from": "0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266",
        "to": "0x4e59b44847b379578588920ca78fbf26c0b4956c",
        "gas": "0xb9d465",
        "value": "0x0",
        "data": "0x000000000000000000000000000000000000000000000000000000000000000060806040523480156200001157600080fd5b5060405162009dab38038062009dab833981810160405260208110156200003757600080fd5b50518060006200004f6001600160e01b03620000b916565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001805580620000b1576002805460ff191660011790555b5050620000bd565b3390565b619cde80620000cd6000396000f3fe608060405234801561001057600080fd5b50600436106104b75760003560e01c80638da5cb5b11610278578063ca6d56dc1161015c578063e50e652d116100ce578063ee09831011610092578063ee09831014611715578063eff2ea3f14611732578063f2fde38b1461174f578063facd743b14611775578063fae8db0a1461179b578063fffdfccb146117b8576104b7565b8063e50e652d14611575578063e7f0376614611592578063ea684f771461159a578063eb1d0b42146116a8578063ec683072146116da576104b7565b8063dba94fcd11610120578063dba94fcd146114d6578063dcff4cf6146114fc578063df4da46114611522578063e0e3ffe61461152a578063e1497ff714611532578063e33301aa1461154f576104b7565b8063ca6d56dc14611451578063cb8f98e014611477578063d55dcbcf1461149a578063d69ef6cf146114a2578063d93ab5ad146114ce576104b7565b8063b591d3a5116101f5578063bfdb7417116101b9578063bfdb74171461130b578063c0c6ad6f146113c9578063c10c96ef146113f5578063c22d3bba146113fd578063c54c1cd414611423578063c580514014611449576104b7565b8063b591d3a514611232578063b730a29914611258578063b8f93943146112f3578063b915f530146112fb578063bd9e9d9414611303576104b7565b80639a7b3be71161023c5780639a7b3be7146110e85780639b2b592f146110f05780639b9d51611461110d578063a57bff90146111ef578063a91ee0dc1461120c576104b7565b80638da5cb5b146110575780638dd31e391461105f5780638f32d59b1461108b57806394903a9714611093578063988dcd1f146110b0576104b7565b806354255be01161039f578063713ea0f31161031c57806376f7425d116102e057806376f7425d14610efb5780637b10399914610f6957806386d81a5a14610f7157806387ee8a0f14610f8e5780638a88362614610f965780638b16b1c61461103a576104b7565b8063713ea0f314610d34578063715018a614610e5b5780637385e5da14610e63578063757d038014610e6b57806376c0a9ed14610ed8576104b7565b806367960e911161036357806367960e9114610bde5780636ab951a014610c825780636c620d9014610ca15780636fa4764714610cbe5780637044775414610cc6576104b7565b806354255be014610b455780635779e93d14610b735780635a61d15b14610b7b5780635d180adb14610b9e57806360fb822c14610bc1576104b7565b806336407b70116104385780634b2c2f44116103fc5780634b2c2f44146109be5780634cd76db414610a625780634e06fd8a14610a6a578063517f6d3314610af157806351b5222514610af957806352f13a4e14610b1f576104b7565b806336407b701461091357806339e618e81461091b5780633b1eb4bf146109415780633f2708981461095e57806343d96699146109b6576104b7565b80631904bb2e1161047f5780631904bb2e1461057757806319113e3b146106b457806323f0ab65146106d55780633173b8db1461080e57806335244f5114610846576104b7565b80630352a592146104bc5780630b1ca49a146104d65780630d1312b814610510578063123633ea14610552578063158ef93e1461056f575b600080fd5b6104c46117c0565b60408051918252519081900360200190f35b6104fc600480360360208110156104ec57600080fd5b50356001600160a01b03166117c6565b604080519115158252519081900360200190f35b6105366004803603602081101561052657600080fd5b50356001600160a01b0316611923565b604080516001600160a01b039092168252519081900360200190f35b6105366004803603602081101561056857600080fd5b50356119e7565b6104fc611af6565b61059d6004803603602081101561058d57600080fd5b50356001600160a01b0316611aff565b604051808060200180602001866001600160a01b03166001600160a01b03168152602001858152602001846001600160a01b03166001600160a01b03168152602001838103835288818151815260200191508051906020019080838360005b838110156106145781810151838201526020016105fc565b50505050905090810190601f1680156106415780820380516001836020036101000a031916815260200191505b50838103825287518152875160209182019189019080838360005b8381101561067457818101518382015260200161065c565b50505050905090810190601f1680156106a15780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390f35b6106bc611d50565b6040805192835260208301919091528051918290030190f35b6104fc600480360360608110156106eb57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561071557600080fd5b82018360208201111561072757600080fd5b803590602001918460018302840111600160201b8311171561074857600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561079a57600080fd5b8201836020820111156107ac57600080fd5b803590602001918460018302840111600160201b831117156107cd57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611d79945050505050565b6104fc6004803603606081101561082457600080fd5b506001600160a01b038135811691602081013582169160409091013516611ef5565b61086c6004803603602081101561085c57600080fd5b50356001600160a01b0316612058565b604051808060200180602001858152602001848152602001838103835287818151815260200191508051906020019060200280838360005b838110156108bc5781810151838201526020016108a4565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156108fb5781810151838201526020016108e3565b50505050905001965050505050505060405180910390f35b6104c46121bc565b6104c46004803603602081101561093157600080fd5b50356001600160a01b03166121c2565b6104c46004803603602081101561095757600080fd5b5035612234565b61096661224d565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156109a257818101518382015260200161098a565b505050509050019250505060405180910390f35b6104c46122b0565b6104c4600480360360208110156109d457600080fd5b810190602081018135600160201b8111156109ee57600080fd5b820183602082011115610a0057600080fd5b803590602001918460018302840111600160201b83111715610a2157600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295506122b6945050505050565b6104c461240e565b6104fc60048036036060811015610a8057600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610ab357600080fd5b820183602082011115610ac557600080fd5b803590602001918460018302840111600160201b83111715610ae657600080fd5b509092509050612414565b6104c461262b565b61053660048036036020811015610b0f57600080fd5b50356001600160a01b0316612631565b6104fc60048036036020811015610b3557600080fd5b50356001600160a01b031661271b565b610b4d612739565b604080519485526020850193909352838301919091526060830152519081900360800190f35b6104c4612747565b6104fc60048036036040811015610b9157600080fd5b508035906020013561274d565b61053660048036036040811015610bb457600080fd5b508035906020013561285d565b6104fc60048036036020811015610bd757600080fd5b503561296e565b6104c460048036036020811015610bf457600080fd5b810190602081018135600160201b811115610c0e57600080fd5b820183602082011115610c2057600080fd5b803590602001918460018302840111600160201b83111715610c4157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612c41945050505050565b610c9f60048036036020811015610c9857600080fd5b5035612d8e565b005b610c9f60048036036020811015610cb757600080fd5b5035612e2f565b6106bc612ef2565b61096660048036036020811015610cdc57600080fd5b810190602081018135600160201b811115610cf657600080fd5b820183602082011115610d0857600080fd5b803590602001918460208302840111600160201b83111715610d2957600080fd5b509092509050612efc565b6104fc600480360360a0811015610d4a57600080fd5b6001600160a01b038235811692602081013590911691810190606081016040820135600160201b811115610d7d57600080fd5b820183602082011115610d8f57600080fd5b803590602001918460018302840111600160201b83111715610db057600080fd5b919390929091602081019035600160201b811115610dcd57600080fd5b820183602082011115610ddf57600080fd5b803590602001918460018302840111600160201b83111715610e0057600080fd5b919390929091602081019035600160201b811115610e1d57600080fd5b820183602082011115610e2f57600080fd5b803590602001918460018302840111600160201b83111715610e5057600080fd5b509092509050612f8d565b610c9f61326e565b6104c46132ff565b610c9f6004803603610180811015610e8257600080fd5b506001600160a01b038135169060208101359060408101359060608101359060808101359060a08101359060c08101359060e081013590610100810135906101208101359061014081013590610160013561330f565b6104fc60048036036040811015610eee57600080fd5b50803590602001356133e4565b6104c460048036036020811015610f1157600080fd5b810190602081018135600160201b811115610f2b57600080fd5b820183602082011115610f3d57600080fd5b803590602001918460208302840111600160201b83111715610f5e57600080fd5b5090925090506134de565b6105366135ea565b610c9f60048036036020811015610f8757600080fd5b50356135fe565b6104c4613817565b6104c460048036036020811015610fac57600080fd5b810190602081018135600160201b811115610fc657600080fd5b820183602082011115610fd857600080fd5b803590602001918460018302840111600160201b83111715610ff957600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092955061392f945050505050565b6104fc6004803603602081101561105057600080fd5b5035613a7c565b610536613de2565b6109666004803603604081101561107557600080fd5b506001600160a01b038135169060200135613df1565b6104fc61404d565b6104c4600480360360208110156110a957600080fd5b5035614071565b6104fc600480360360608110156110c657600080fd5b506001600160a01b038135811691602081013582169160409091013516614140565b6104c461446d565b6104c46004803603602081101561110657600080fd5b5035614478565b6111336004803603602081101561112357600080fd5b50356001600160a01b031661457e565b60405180806020018881526020018781526020018681526020018060200185815260200184815260200183810383528a818151815260200191508051906020019060200280838360005b8381101561119557818101518382015260200161117d565b50505050905001838103825286818151815260200191508051906020019060200280838360005b838110156111d45781810151838201526020016111bc565b50505050905001995050505050505050505060405180910390f35b610c9f6004803603602081101561120557600080fd5b50356147c6565b610c9f6004803603602081101561122257600080fd5b50356001600160a01b0316614863565b6104fc6004803603602081101561124857600080fd5b50356001600160a01b0316614957565b61127e6004803603602081101561126e57600080fd5b50356001600160a01b0316614bf0565b6040805160208082528351818301528351919283929083019185019080838360005b838110156112b85781810151838201526020016112a0565b50505050905090810190601f1680156112e55780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610c9f614d7a565b6104c4614f20565b6106bc614f26565b6104fc6004803603604081101561132157600080fd5b810190602081018135600160201b81111561133b57600080fd5b82018360208201111561134d57600080fd5b803590602001918460018302840111600160201b8311171561136e57600080fd5b919390929091602081019035600160201b81111561138b57600080fd5b82018360208201111561139d57600080fd5b803590602001918460018302840111600160201b831117156113be57600080fd5b509092509050614f2f565b610c9f600480360360408110156113df57600080fd5b506001600160a01b0381351690602001356150e8565b6106bc615138565b610c9f6004803603602081101561141357600080fd5b50356001600160a01b0316615142565b6104fc6004803603602081101561143957600080fd5b50356001600160a01b031661530d565b6106bc6153be565b6104fc6004803603602081101561146757600080fd5b50356001600160a01b03166153c7565b6104fc6004803603604081101561148d57600080fd5b50803590602001356154d4565b610966615645565b6104c4600480360360408110156114b857600080fd5b506001600160a01b03813516906020013561576e565b6109666157c0565b6104c4600480360360208110156114ec57600080fd5b50356001600160a01b0316615820565b6104c46004803603602081101561151257600080fd5b50356001600160a01b031661589e565b6104c461599c565b6104c4615a87565b6104fc6004803603602081101561154857600080fd5b5035615a8d565b610c9f6004803603602081101561156557600080fd5b50356001600160a01b0316615bc2565b6104c46004803603602081101561158b57600080fd5b5035615d2f565b610c9f615d61565b6104fc600480360360608110156115b057600080fd5b810190602081018135600160201b8111156115ca57600080fd5b8201836020820111156115dc57600080fd5b803590602001918460018302840111600160201b831117156115fd57600080fd5b919390929091602081019035600160201b81111561161a57600080fd5b82018360208201111561162c57600080fd5b803590602001918460018302840111600160201b8311171561164d57600080fd5b919390929091602081019035600160201b81111561166a57600080fd5b82018360208201111561167c57600080fd5b803590602001918460018302840111600160201b8311171561169d57600080fd5b509092509050615f5b565b610536600480360360608110156116be57600080fd5b506001600160a01b03813516906020810135906040013561643a565b6106bc600480360360c08110156116f057600080fd5b5080359060208101359060408101359060608101359060808101359060a001356166a6565b6104fc6004803603602081101561172b57600080fd5b503561685b565b6104fc6004803603602081101561174857600080fd5b5035616c0c565b610c9f6004803603602081101561176557600080fd5b50356001600160a01b0316616d15565b6104fc6004803603602081101561178b57600080fd5b50356001600160a01b0316616d65565b6104c4600480360360208110156117b157600080fd5b5035616d97565b6104fc616e9d565b60115481565b60018054810190819055600090816117dc617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561183157600080fd5b505afa158015611845573d6000803e3d6000fd5b505050506040513d602081101561185b57600080fd5b505190506118688161271b565b8015611878575061187884616d65565b6118c9576040805162461bcd60e51b815260206004820152601a60248201527f6973206e6f742067726f757020616e642076616c696461746f72000000000000604482015290519081900360640190fd5b6118d381856170fc565b925050600154811461191d576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b50919050565b60008061192e61446d565b6001600160a01b03841660009081526004602081905260408220600581015493945001911561198557611980611972600184600101546173c490919063ffffffff16565b83549063ffffffff61740616565b611988565b60005b60008181526002840160205260409020549091508314156119c05781548111156119c0576119bd81600163ffffffff6173c416565b90505b6000908152600290910160205260409020600101546001600160a01b03169150505b919050565b60408051602080820184905243828401528251808303840181526060928301938490528051600094859360fa939282918401908083835b60208310611a3d5780518252601f199092019160209182019101611a1e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611a9d576040519150601f19603f3d011682016040523d82523d6000602084013e611aa2565b606091505b509250905080611ae35760405162461bcd60e51b815260040180806020018281038252603d81526020018061997c603d913960400191505060405180910390fd5b611aee826000617460565b949350505050565b60025460ff1681565b6060806000806000611b1086616d65565b611b53576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6001600160a01b0380871660009081526004602090815260409182902060028101548351928301909352600381015482529283926001840192911690611b989061746c565b611ba0617050565b6001600160a01b0316634ce38b5f8c6040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611bf557600080fd5b505afa158015611c09573d6000803e3d6000fd5b505050506040513d6020811015611c1f57600080fd5b50518454604080516020601f60026000196101006001881615020190951694909404938401819004810282018101909252828152918791830182828015611ca75780601f10611c7c57610100808354040283529160200191611ca7565b820191906000526020600020905b815481529060010190602001808311611c8a57829003601f168201915b5050875460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959a5089945092508401905082828015611d355780601f10611d0a57610100808354040283529160200191611d35565b820191906000526020600020905b815481529060010190602001808311611d1857829003601f168201915b50505050509350955095509550955095505091939590929450565b600b546040805160208101909152600c5481526000918291611d719061746c565b915091509091565b60008060fb6001600160a01b031685858560405160200180846001600160a01b03166001600160a01b031660601b815260140183805190602001908083835b60208310611dd75780518252601f199092019160209182019101611db8565b51815160209384036101000a600019018019909216911617905285519190930192850191508083835b60208310611e1f5780518252601f199092019160209182019101611e00565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040526040518082805190602001908083835b60208310611e845780518252601f199092019160209182019101611e65565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114611ee4576040519150601f19603f3d011682016040523d82523d6000602084013e611ee9565b606091505b50909695505050505050565b6001805481019081905560009081611f0b617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015611f6057600080fd5b505afa158015611f74573d6000803e3d6000fd5b505050506040513d6020811015611f8a57600080fd5b50516001600160a01b0381166000908152600360208190526040909120015490915015611ffa576040805162461bcd60e51b815260206004820152601960248201527856616c696461746f722067726f7570206e6f7420656d70747960381b604482015290519081900360640190fd5b61200681878787617470565b9250506001548114612050576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b509392505050565b606080600080600060046000876001600160a01b03166001600160a01b031681526020019081526020016000206004019050606081600101546040519080825280602002602001820160405280156120ba578160200160208202803883390190505b509050606082600101546040519080825280602002602001820160405280156120ed578160200160208202803883390190505b50905060005b83600101548110156121a5578354600090612114908363ffffffff61740616565b600081815260028701602052604090205485519192509085908490811061213757fe5b602090810291909101810191909152600082815260028701909152604090206001015483516001600160a01b039091169084908490811061217457fe5b6001600160a01b03909216602092830291909101909101525061219e81600163ffffffff61740616565b90506120f3565b506003830154925491989097509195509350915050565b60105481565b60006121cd8261271b565b612214576040805162461bcd60e51b815260206004820152601360248201527204e6f742076616c696461746f722067726f757606c1b604482015290519081900360640190fd5b506001600160a01b03166000908152600360208190526040909120015490565b60006122478261224261599c565b6178d3565b92915050565b606060058054806020026020016040519081016040528092919081815260200182805480156122a557602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311612287575b505050505090505b90565b600e5490565b60006060600060f46001600160a01b0316846040516020018082805190602001908083835b602083106122fa5780518252601f1990920191602091820191016122db565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b6020831061235d5780518252601f19909201916020918201910161233e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146123bd576040519150601f19603f3d011682016040523d82523d6000602084013e6123c2565b606091505b5092509050806124035760405162461bcd60e51b81526004018080602001828103825260388152602001806198a26038913960400191505060405180910390fd5b611aee826000617910565b600d5481565b60408051674163636f756e747360c01b602080830191909152825180830360080181526028830180855281519183019190912060025463dcf0aaed60e01b909252602c840181905293516000949333936101009093046001600160a01b03169263dcf0aaed92604c80840193829003018186803b15801561249457600080fd5b505afa1580156124a8573d6000803e3d6000fd5b505050506040513d60208110156124be57600080fd5b50516001600160a01b031614612516576040805162461bcd60e51b81526020600482015260186024820152771bdb9b1e481c9959da5cdd195c99590818dbdb9d1c9858dd60421b604482015290519081900360640190fd5b61251f86616d65565b612562576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b600060046000886001600160a01b03166001600160a01b0316815260200190815260200160002090506125cd81888888888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061797892505050565b61261e576040805162461bcd60e51b815260206004820152601f60248201527f4572726f72207570646174696e67204543445341207075626c6963206b657900604482015290519081900360640190fd5b5060019695505050505050565b60065490565b60008061263c617050565b6001600160a01b03166393c5c487846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561269157600080fd5b505afa1580156126a5573d6000803e3d6000fd5b505050506040513d60208110156126bb57600080fd5b505190506126c881616d65565b61270b576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b61271481611923565b9392505050565b6001600160a01b031660009081526003602052604090205460ff1690565b600160026000600590919293565b600e5481565b600061275761404d565b612796576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b60098054841415806127ac575080600101548314155b6127fd576040805162461bcd60e51b815260206004820152601e60248201527f47726f757020726571756972656d656e7473206e6f74206368616e6765640000604482015290519081900360640190fd5b60408051808201825285815260209081018590526009869055600a859055815186815290810185905281517f999f7ee1917e6d7ea08360edfe9250cda3eda859c38dcb71a92623665de64dd4929181900390910190a15060019392505050565b6040805160208082018590528183018490528251808303840181526060928301938490528051600094859360fa939282918401908083835b602083106128b45780518252601f199092019160209182019101612895565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612914576040519150601f19603f3d011682016040523d82523d6000602084013e612919565b606091505b50925090508061295a5760405162461bcd60e51b81526004018080602001828103825260368152602001806199ee6036913960400191505060405180910390fd5b612965826000617460565b95945050505050565b6001805481019081905560009081612984617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156129d957600080fd5b505afa1580156129ed573d6000803e3d6000fd5b505050506040513d6020811015612a0357600080fd5b50519050612a108161271b565b612a4f576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600360208190526040909120015415612aba576040805162461bcd60e51b815260206004820152601960248201527856616c696461746f722067726f7570206e6f7420656d70747960381b604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020600801805460011015612b4b5742612b0f60096001015483600181548110612af657fe5b906000526020600020015461740690919063ffffffff16565b10612b4b5760405162461bcd60e51b8152600401808060200182810382526021815260200180619bf06021913960400191505060405180910390fd5b6001600160a01b03821660009081526003602081905260408220805460ff19168155600181018390556002810183905590810182905560058101829055600681018290556007810182905590612ba46008830182619638565b50600060098201819055600a90910155612bc060058387617af7565b6040516001600160a01b038316907fae7e034b0748a10a219b46074b20977a9170bf4027b156c797093773619a866990600090a2600193505050600154811461191d576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b60006060600060f66001600160a01b0316846040516020018082805190602001908083835b60208310612c855780518252601f199092019160209182019101612c66565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b60208310612ce85780518252601f199092019160209182019101612cc9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114612d48576040519150601f19603f3d011682016040523d82523d6000602084013e612d4d565b606091505b5092509050806124035760405162461bcd60e51b8152600401808060200182810382526023815260200180619c5e6023913960400191505060405180910390fd5b60018054810190819055612da061404d565b612ddf576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b60108290556001548114612e2b576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b5050565b612e3761404d565b612e76576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b600f54811415612eb75760405162461bcd60e51b8152600401808060200182810382526023815260200180619b9c6023913960400191505060405180910390fd5b600f8190556040805182815290517ff2da07d08fd8dc9c5dcf87ad6f540e306f884a47dd8de14b718a4d5395f1ca9b9181900360200190a150565b600954600a549091565b60608083839050604051908082528060200260200182016040528015612f2c578160200160208202803883390190505b50905060005b8381101561205057612f5e858583818110612f4957fe5b905060200201356001600160a01b03166121c2565b828281518110612f6a57fe5b6020908102919091010152612f8681600163ffffffff61740616565b9050612f32565b60408051674163636f756e747360c01b602080830191909152825180830360080181526028830180855281519183019190912060025463dcf0aaed60e01b909252602c840181905293516000949333936101009093046001600160a01b03169263dcf0aaed92604c80840193829003018186803b15801561300d57600080fd5b505afa158015613021573d6000803e3d6000fd5b505050506040513d602081101561303757600080fd5b50516001600160a01b03161461308f576040805162461bcd60e51b81526020600482015260186024820152771bdb9b1e481c9959da5cdd195c99590818dbdb9d1c9858dd60421b604482015290519081900360640190fd5b6130988a616d65565b6130db576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6000600460008c6001600160a01b03166001600160a01b031681526020019081526020016000209050613146818c8c8c8c8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061797892505050565b613197576040805162461bcd60e51b815260206004820152601f60248201527f4572726f72207570646174696e67204543445341207075626c6963206b657900604482015290519081900360640190fd5b61320c818c89898080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250617c1d92505050565b61325d576040805162461bcd60e51b815260206004820152601d60248201527f4572726f72207570646174696e6720424c53207075626c6963206b6579000000604482015290519081900360640190fd5b5060019a9950505050505050505050565b61327661404d565b6132b5576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061330a43615d2f565b905090565b60025460ff1615613367576040805162461bcd60e51b815260206004820152601c60248201527f636f6e747261637420616c726561647920696e697469616c697a656400000000604482015290519081900360640190fd5b6002805460ff1916600117905561337d33617d8b565b6133868c614863565b6133908b8b61274d565b5061339b89896133e4565b506133a687876154d4565b506133b083615a8d565b506133ba82612e2f565b6133c385616c0c565b506133cd84612d8e565b6133d6816147c6565b505050505050505050505050565b60006133ee61404d565b61342d576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b6007805484141580613443575080600101548314155b61347e5760405162461bcd60e51b81526004018080602001828103825260228152602001806198806022913960400191505060405180910390fd5b604080518082018252858152602090810185905260078690556008859055815186815290810185905281517f62d947118dd4c1f5ece7f787a9cad4e1127d14d403b71133e95792b473bf8389929181900390910190a15060019392505050565b600081613527576040805162461bcd60e51b8152602060048201526012602482015271557074696d6520617272617920656d70747960701b604482015290519081900360640190fd5b600e548211156135685760405162461bcd60e51b815260040180806020018281038252602b815260200180619855602b913960400191505060405180910390fd5b613570619656565b60005b838110156135c8576135ae6135a161359c87878581811061359057fe5b90506020020135614071565b617e2b565b839063ffffffff617e4516565b91506135c181600163ffffffff61740616565b9050613573565b50611aee6135e56135d885617eb6565b839063ffffffff617f2416565b61746c565b60025461010090046001600160a01b031681565b6000613608617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561365d57600080fd5b505afa158015613671573d6000803e3d6000fd5b505050506040513d602081101561368757600080fd5b505190506136948161271b565b6136d3576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090206136f66135e5617ff1565b8311156137345760405162461bcd60e51b8152600401808060200182810382526025815260200180619c116025913960400191505060405180910390fd5b60408051602081019091526005820154815261374f9061746c565b8314156137a3576040805162461bcd60e51b815260206004820152601c60248201527f436f6d6d697373696f6e206d75737420626520646966666572656e7400000000604482015290519081900360640190fd5b6137ac83617e2b565b516006820155600f546137c690439063ffffffff61740616565b6007820181905560408051858152602081019290925280516001600160a01b038516927f557d39a57520d9835859d4b7eda805a7f4115a59c3a374eeed488436fc62a15292908290030190a2505050565b60006060600060f96001600160a01b031643604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106138775780518252601f199092019160209182019101613858565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146138d7576040519150601f19603f3d011682016040523d82523d6000602084013e6138dc565b606091505b50925090508061391d5760405162461bcd60e51b81526004018080602001828103825260358152602001806199b96035913960400191505060405180910390fd5b613928826000617460565b9250505090565b60006060600060f76001600160a01b0316846040516020018082805190602001908083835b602083106139735780518252601f199092019160209182019101613954565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106139d65780518252601f1990920191602091820191016139b7565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114613a36576040519150601f19603f3d011682016040523d82523d6000602084013e613a3b565b606091505b509250905080611ae35760405162461bcd60e51b8152600401808060200182810382526031815260200180619bbf6031913960400191505060405180910390fd5b6001805481019081905560009081613a92617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6020811015613b1157600080fd5b50519050613b1e81616d65565b613b61576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6001600160a01b038082166000908152600460205260409020600281015490911615613c7f5760028101546001600160a01b03908116600090815260036020908152604091829020825163542424fb60e01b81526001909101600482015292851660248401529051739fe46736679d2d9a65f0992f2272de9f3c7fa6e09263542424fb926044808301939192829003018186803b158015613c0157600080fd5b505af4158015613c15573d6000803e3d6000fd5b505050506040513d6020811015613c2b57600080fd5b505115613c7f576040805162461bcd60e51b815260206004820152601e60248201527f486173206265656e2067726f7570206d656d62657220726563656e746c790000604482015290519081900360640190fd5b6008546007820154600091613c9a919063ffffffff61740616565b9050428110613cf0576040805162461bcd60e51b815260206004820152601c60248201527f4e6f742079657420726571756972656d656e7420656e642074696d6500000000604482015290519081900360640190fd5b613cfc60068488617af7565b6001600160a01b0383166000908152600460205260408120908181613d218282619669565b613d2f600183016000619669565b5050506002810180546001600160a01b0319169055600060038201819055600482018190556005820181905560079091018190556040516001600160a01b038516917f51407fafe7ef9bec39c65a12a4885a274190991bf1e9057fcc384fc77ff1a7f091a260019450505050600154811461191d576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b6000546001600160a01b031690565b6001600160a01b038216600090815260036020526040808220815163b1cfea4360e01b8152600190910160048201526024810184905290516060928392739fe46736679d2d9a65f0992f2272de9f3c7fa6e09263b1cfea4392604480840193919291829003018186803b158015613e6757600080fd5b505af4158015613e7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613ea457600080fd5b8101908080516040519392919084600160201b821115613ec357600080fd5b908301906020820185811115613ed857600080fd5b82518660208202830111600160201b82111715613ef457600080fd5b82525081516020918201928201910280838360005b83811015613f21578181015183820152602001613f09565b505050509050016040525050509050606083604051908082528060200260200182016040528015613f5c578160200160208202803883390190505b50905060005b8481101561404457613f72617050565b6001600160a01b0316634ce38b5f848381518110613f8c57fe5b60200260200101516040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015613fda57600080fd5b505afa158015613fee573d6000803e3d6000fd5b505050506040513d602081101561400457600080fd5b5051825183908390811061401457fe5b6001600160a01b039092166020928302919091019091015261403d81600163ffffffff61740616565b9050613f62565b50949350505050565b600080546001600160a01b0316614062618015565b6001600160a01b031614905090565b600061407e6135e5617ff1565b8211156140d2576040805162461bcd60e51b815260206004820181905260248201527f557074696d652063616e6e6f74206265206c6172676572207468616e206f6e65604482015290519081900360640190fd5b6000806140fd6140ed6011548661740690919063ffffffff16565b6140f86135e5617ff1565b618019565b935061412e61410d6135e5617ff1565b6141186135e5617ff1565b866141246135e5617ff1565b600b5460126166a6565b9092509050611aee6135e5838361802f565b6001805481019081905560009081614156617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156141ab57600080fd5b505afa1580156141bf573d6000803e3d6000fd5b505050506040513d60208110156141d557600080fd5b505190506141e28161271b565b614221576040805162461bcd60e51b815260206004820152600b60248201526a04e6f7420612067726f75760ac1b604482015290519081900360640190fd5b61422a86616d65565b61426d576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6001600160a01b03808216600090815260036020908152604091829020825163542424fb60e01b8152600182016004820152938a16602485015291519192739fe46736679d2d9a65f0992f2272de9f3c7fa6e09263542424fb92604480840193919291829003018186803b1580156142e457600080fd5b505af41580156142f8573d6000803e3d6000fd5b505050506040513d602081101561430e57600080fd5b505161435d576040805162461bcd60e51b815260206004820152601960248201527804e6f742061206d656d626572206f66207468652067726f757603c1b604482015290519081900360640190fd5b6040805163597c7f4b60e11b81526001830160048201526001600160a01b03808a1660248301528089166044830152871660648201529051739fe46736679d2d9a65f0992f2272de9f3c7fa6e09163b2f8fe96916084808301926000929190829003018186803b1580156143d057600080fd5b505af41580156143e4573d6000803e3d6000fd5b50506040516001600160a01b03808b169350851691507f38819cc49a343985b478d72f531a35b15384c398dd80fd191a14662170f895c690600090a36001935050506001548114612050576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b600061330a43612234565b60006060600060f96001600160a01b031684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b602083106144d85780518252601f1990920191602091820191016144b9565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114614538576040519150601f19603f3d011682016040523d82523d6000602084013e61453d565b606091505b509250905080611ae35760405162461bcd60e51b815260040180806020018281038252602e815260200180619785602e913960400191505060405180910390fd5b6060600080600060606000806145938861271b565b6145d2576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b0388166000908152600360205260408082208151637f1e3d4760e11b815260018201600482015291519092739fe46736679d2d9a65f0992f2272de9f3c7fa6e09263fe3c7a8e9260248083019392829003018186803b15801561463b57600080fd5b505af415801561464f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561467857600080fd5b8101908080516040519392919084600160201b82111561469757600080fd5b9083019060208201858111156146ac57600080fd5b82518660208202830111600160201b821117156146c857600080fd5b82525081516020918201928201910280838360005b838110156146f55781810151838201526020016146dd565b5050505090910160208101604052600587015481526147199450925061746c915050565b6040805160208101909152600684015481526147349061746c565b600784015460408051602081019091526009860154815260088601906147599061746c565b600a8701548254604080516020808402820181019092528281529185918301828280156147a557602002820191906000526020600020905b815481526020019060010190808311614791575b50505050509250975097509750975097509750975050919395979092949650565b600180548101908190556147d861404d565b614817576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b60118290556001548114612e2b576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b61486b61404d565b6148aa576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b6001600160a01b038116614905576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f7420726567697374657220746865206e756c6c2061646472657373604482015290519081900360640190fd5b60028054610100600160a81b0319166101006001600160a01b038416908102919091179091556040517f27fe5f0c1c3b1ed427cc63d0f05759ffdecf9aec9e18d31ef366fc8a6cb5dc3b90600090a250565b600180548101908190556000908161496d617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156149c257600080fd5b505afa1580156149d6573d6000803e3d6000fd5b505050506040513d60208110156149ec57600080fd5b505190506149f981616d65565b614a3c576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b614a458461271b565b614a84576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b614a8d8161530d565b614ac85760405162461bcd60e51b81526004018080602001828103825260238152602001806197626023913960400191505060405180910390fd5b614ad18461530d565b614b22576040805162461bcd60e51b815260206004820152601f60248201527f47726f757020646f65736e2774206d65657420726571756972656d656e747300604482015290519081900360640190fd5b6001600160a01b038082166000908152600460205260409020600281015490911615614b5457614b528183618067565b505b6002810180546001600160a01b0319166001600160a01b0387811691821790925560405190918416907f91ef92227057e201e406c3451698dd780fe7672ad74328591c88d281af31581d90600090a3600193505050600154811461191d576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b60606000614bfc617050565b6001600160a01b03166393c5c487846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614c5157600080fd5b505afa158015614c65573d6000803e3d6000fd5b505050506040513d6020811015614c7b57600080fd5b50519050614c8881616d65565b614ccb576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6001600160a01b038116600090815260046020908152604091829020600190810180548451600293821615610100026000190190911692909204601f810184900484028301840190945283825290929091830182828015614d6d5780601f10614d4257610100808354040283529160200191614d6d565b820191906000526020600020905b815481529060010190602001808311614d5057829003601f168201915b5050505050915050919050565b600180548101908190556000614d8e617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614de357600080fd5b505afa158015614df7573d6000803e3d6000fd5b505050506040513d6020811015614e0d57600080fd5b50519050614e1a8161271b565b614e59576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600360205260409020601054600a820154614e889163ffffffff61740616565b421015614ec65760405162461bcd60e51b815260040180806020018281038252603b8152602001806197d9603b913960400191505060405180910390fd5b614ece617ff1565b51600990910155506001548114614f1d576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b50565b600f5490565b60075460085482565b600080614f3a617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015614f8f57600080fd5b505afa158015614fa3573d6000803e3d6000fd5b505050506040513d6020811015614fb957600080fd5b50519050614fc681616d65565b615009576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6001600160a01b0381166000908152600460209081526040918290208251601f89018390048302810183019093528783529161509791839185918b908b908190840183828082843760009201919091525050604080516020601f8d018190048102820181019092528b815292508b91508a9081908401838280828437600092019190915250617c1d92505050565b61261e576040805162461bcd60e51b815260206004820152601d60248201527f4572726f72207570646174696e6720424c53207075626c6963206b6579000000604482015290519081900360640190fd5b331561512e576040805162461bcd60e51b815260206004820152601060248201526f13db9b1e4815934818d85b8818d85b1b60821b604482015290519081900360640190fd5b612e2b8282618175565b6007546008549091565b600180548101908190556151546183a8565b6001600160a01b03166357601c5d336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156151a957600080fd5b505afa1580156151bd573d6000803e3d6000fd5b505050506040513d60208110156151d357600080fd5b5051615226576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c79207265676973746572656420736c61736865722063616e2063616c6c604482015290519081900360640190fd5b61522f8261271b565b61526e576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600360209081526040918290208251918201909252600982015481526152b99061359c906002906152ad9061746c565b9063ffffffff61842516565b51600982015542600a909101556001548114612e2b576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b6000806153186183a8565b6001600160a01b03166330ec70f5846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561536d57600080fd5b505afa158015615381573d6000803e3d6000fd5b505050506040513d602081101561539757600080fd5b505190506153a48361589e565b6153b582600a63ffffffff61740616565b10159392505050565b600954600a5482565b60018054810190819055600090816153dd617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561543257600080fd5b505afa158015615446573d6000803e3d6000fd5b505050506040513d602081101561545c57600080fd5b50516001600160a01b038116600090815260036020819052604090912001549091506154c7576040805162461bcd60e51b815260206004820152601560248201527456616c696461746f722067726f757020656d70747960581b604482015290519081900360640190fd5b6118d38185600080617470565b60006154de61404d565b61551d576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b6155286135e5617ff1565b8211156155665760405162461bcd60e51b8152600401808060200182810382526028815260200180619c366028913960400191505060405180910390fd5b600b548314158061559d57506040805160208101909152600c54815261559b9061558f84617e2b565b9063ffffffff61846716565b155b6155d85760405162461bcd60e51b8152600401808060200182810382526029815260200180619c816029913960400191505060405180910390fd5b60405180604001604052808481526020016155f284617e2b565b90528051600b5560209081015151600c556040805185815291820184905280517f4b48724280029c2ea7a445c9cea30838525342e7a9ea9468f630b52e75d6c5369281900390910190a150600192915050565b60606000615651617050565b90506060600680549050604051908082528060200260200182016040528015615684578160200160208202803883390190505b50905060005b815181101561576757826001600160a01b0316634ce38b5f600683815481106156af57fe5b60009182526020918290200154604080516001600160e01b031960e086901b1681526001600160a01b0390921660048301525160248083019392829003018186803b1580156156fd57600080fd5b505afa158015615711573d6000803e3d6000fd5b505050506040513d602081101561572757600080fd5b5051825183908390811061573757fe5b6001600160a01b039092166020928302919091019091015261576081600163ffffffff61740616565b905061568a565b5091505090565b600033156157b6576040805162461bcd60e51b815260206004820152601060248201526f13db9b1e4815934818d85b8818d85b1b60821b604482015290519081900360640190fd5b612714838361846e565b606060068054806020026020016040519081016040528092919081815260200182805480156122a5576020028201919060005260206000209081546001600160a01b03168152600190910190602001808311612287575050505050905090565b600061582b8261271b565b61586a576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b0382166000908152600360209081526040918290208251918201909252600982015481526127149061746c565b60006158a982616d65565b156158b757506007546119e2565b6158c08261271b565b15615994576001600160a01b0382166000908152600360208190526040822001546158ed90600190618a70565b6001600160a01b03841660009081526003602052604090206008018054919250901561597857805460009061592990600163ffffffff6173c416565b90505b80156159765742615948600960010154848481548110612af657fe5b1061595e576159578184618a70565b9250615976565b61596f81600163ffffffff6173c416565b905061592c565b505b60095461598b908363ffffffff618a8016565b925050506119e2565b506000919050565b604080516000808252602082019283905281519092606092849260f89290819081908082805b602083106159e15780518252601f1990920191602091820191016159c2565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114615a41576040519150601f19603f3d011682016040523d82523d6000602084013e615a46565b606091505b50925090508061391d5760405162461bcd60e51b8152600401808060200182810382526025815260200180619b4b6025913960400191505060405180910390fd5b600f5481565b6000615a9761404d565b615ad6576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b81600010615b2b576040805162461bcd60e51b815260206004820152601d60248201527f4d61782067726f75702073697a652063616e6e6f74206265207a65726f000000604482015290519081900360640190fd5b600e54821415615b82576040805162461bcd60e51b815260206004820152601a60248201527f4d61782067726f75702073697a65206e6f74206368616e676564000000000000604482015290519081900360640190fd5b600e8290556040805183815290517f603fe12c33c253a23da1680aa453dc70c3a0ee07763569bd5f602406ebd4e5d59181900360200190a1506001919050565b60018054810190819055615bd46183a8565b6001600160a01b03166357601c5d336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015615c2957600080fd5b505afa158015615c3d573d6000803e3d6000fd5b505050506040513d6020811015615c5357600080fd5b5051615ca6576040805162461bcd60e51b815260206004820181905260248201527f4f6e6c79207265676973746572656420736c61736865722063616e2063616c6c604482015290519081900360640190fd5b615caf82616d65565b15615ce8576001600160a01b038083166000908152600460205260409020600281015490911615615ce657615ce48184618067565b505b505b6001548114612e2b576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b600061224760036152ad6002615d556002615d4988614478565b9063ffffffff618a8016565b9063ffffffff61740616565b6000615d6b617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015615dc057600080fd5b505afa158015615dd4573d6000803e3d6000fd5b505050506040513d6020811015615dea57600080fd5b50519050615df78161271b565b615e36576040805162461bcd60e51b81526020600482015260156024820152600080516020619835833981519152604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090206007810154615ea4576040805162461bcd60e51b815260206004820152601b60248201527f4e6f20636f6d6d697373696f6e20757064617465207175657565640000000000604482015290519081900360640190fd5b4381600701541115615ee75760405162461bcd60e51b81526004018080602001828103825260218152602001806198146021913960400191505060405180910390fd5b60068101805460058301819055600091829055600783019190915560408051602081019091529081526001600160a01b038316907f815d292dbc1a08dfb3103aabb6611233dd2393903e57bdf4c5b3db91198a826c90615f469061746c565b60408051918252519081900360200190a25050565b6001805481019081905560009081615f71617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015615fc657600080fd5b505afa158015615fda573d6000803e3d6000fd5b505050506040513d6020811015615ff057600080fd5b50519050615ffd81618ad9565b5061600781616d65565b15801561601a57506160188161271b565b155b616060576040805162461bcd60e51b8152602060048201526012602482015271105b1c9958591e481c9959da5cdd195c995960721b604482015290519081900360640190fd5b600061606a6183a8565b6001600160a01b03166330ec70f5836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156160bf57600080fd5b505afa1580156160d3573d6000803e3d6000fd5b505050506040513d60208110156160e957600080fd5b5051600754909150811015616139576040805162461bcd60e51b815260206004820152601160248201527011195c1bdcda5d081d1bdbc81cdb585b1b607a1b604482015290519081900360640190fd5b6001600160a01b03821660009081526004602052604081209061615a617050565b6001600160a01b0316634ce38b5f856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156161af57600080fd5b505afa1580156161c3573d6000803e3d6000fd5b505050506040513d60208110156161d957600080fd5b8101908080519060200190929190505050905061622e8285838f8f8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061797892505050565b61627f576040805162461bcd60e51b815260206004820152601f60248201527f4572726f72207570646174696e67204543445341207075626c6963206b657900604482015290519081900360640190fd5b61630582858c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050508b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250617c1d92505050565b616356576040805162461bcd60e51b815260206004820152601d60248201527f4572726f72207570646174696e6720424c53207075626c6963206b6579000000604482015290519081900360640190fd5b6006805460018101825560009182527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f0180546001600160a01b0319166001600160a01b0387161790556163ab908590618c7d565b506040516001600160a01b038516907fd09501348473474a20c772c79c653e1fd7e8b437e418fe235d277d2c8885325190600090a26001955050505050600154811461642f576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b509695505050505050565b600061644584616d65565b616488576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b61649061446d565b8311156164ce5760405162461bcd60e51b8152600401808060200182810382526023815260200180619a4c6023913960400191505060405180910390fd5b6001600160a01b03841660009081526004602081905260409091206005810154910180549091616504919063ffffffff61740616565b831061654d576040805162461bcd60e51b8152602060048201526013602482015272696e646578206f7574206f6620626f756e647360681b604482015290519081900360640190fd5b80548310801590616562575060008160010154115b6165a9576040805162461bcd60e51b8152602060048201526013602482015272696e646578206f7574206f6620626f756e647360681b604482015290519081900360640190fd5b600083815260028201602052604081205460018084015491871492916165d49163ffffffff6173c416565b83546165e790879063ffffffff6173c416565b60008781526002860160205260408120549190921492508711801561663a57508660028501600061661f89600163ffffffff61740616565b815260200190815260200160002060000154118061663a5750815b905082806166455750805b6166805760405162461bcd60e51b81526004018080602001828103825260478152602001806199356047913960600191505060405180910390fd5b50505060009283526002016020525060409020600101546001600160a01b031692915050565b60008086158015906166b757508415155b616700576040805162461bcd60e51b8152602060048201526015602482015274612064656e6f6d696e61746f72206973207a65726f60581b604482015290519081900360640190fd5b6000806000606060fc6001600160a01b03168c8c8c8c8c8c6040516020018087815260200186815260200185815260200184815260200183815260200182815260200196505050505050506040516020818303038152906040526040518082805190602001908083835b602083106167895780518252601f19909201916020918201910161676a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146167e9576040519150601f19603f3d011682016040523d82523d6000602084013e6167ee565b606091505b509092509050816168305760405162461bcd60e51b8152600401808060200182810382526027815260200180619b036027913960400191505060405180910390fd5b61683b816000617460565b9350616848816020617460565b939c939b50929950505050505050505050565b600180548101908190556000906168736135e5617ff1565b8311156168b15760405162461bcd60e51b8152600401808060200182810382526025815260200180619c116025913960400191505060405180910390fd5b60006168bb617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561691057600080fd5b505afa158015616924573d6000803e3d6000fd5b505050506040513d602081101561693a57600080fd5b5051905061694781618ad9565b5061695181616d65565b156169a3576040805162461bcd60e51b815260206004820152601f60248201527f416c726561647920726567697374657265642061732076616c696461746f7200604482015290519081900360640190fd5b6169ac8161271b565b156169fe576040805162461bcd60e51b815260206004820152601b60248201527f416c726561647920726567697374657265642061732067726f75700000000000604482015290519081900360640190fd5b6000616a086183a8565b6001600160a01b03166330ec70f5836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015616a5d57600080fd5b505afa158015616a71573d6000803e3d6000fd5b505050506040513d6020811015616a8757600080fd5b5051600954909150811015616adc576040805162461bcd60e51b8152602060048201526016602482015275139bdd08195b9bdd59da081b1bd8dad9590819dbdb1960521b604482015290519081900360640190fd5b6001600160a01b0382166000908152600360205260409020805460ff19166001178155616b0886617e2b565b5160058201556040805180820190915280616b21617ff1565b815260006020918201819052825151600985015591810151600a8401556005805460018101825592527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090910180546001600160a01b0319166001600160a01b03861690811790915560408051898152905191927fbf4b45570f1907a94775f8449817051a492a676918e38108bb762e991e6b58dc92918290030190a260019450505050600154811461191d576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b6000616c1661404d565b616c55576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b81600010616c945760405162461bcd60e51b8152600401808060200182810382526028815260200180619a246028913960400191505060405180910390fd5b600d54821415616cd55760405162461bcd60e51b8152600401808060200182810382526025815260200180619a906025913960400191505060405180910390fd5b600d8290556040805183815290517f1c75c7fb3ee9d13d8394372d8c7cdf1702fa947faa03f6ccfa500f787b09b48a9181900360200190a1506001919050565b616d1d61404d565b616d5c576040805162461bcd60e51b81526020600482018190526024820152600080516020619ae3833981519152604482015290519081900360640190fd5b614f1d81617d8b565b6001600160a01b0316600090815260046020526040902060019081015460029181161561010002600019011604151590565b60006060600060f56001600160a01b031684604051602001808281526020019150506040516020818303038152906040526040518082805190602001908083835b60208310616df75780518252601f199092019160209182019101616dd8565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114616e57576040519150601f19603f3d011682016040523d82523d6000602084013e616e5c565b606091505b5092509050806124035760405162461bcd60e51b815260040180806020018281038252602c815260200180619b70602c913960400191505060405180910390fd5b6001805481019081905560009081616eb3617050565b6001600160a01b03166364439b43336040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015616f0857600080fd5b505afa158015616f1c573d6000803e3d6000fd5b505050506040513d6020811015616f3257600080fd5b50519050616f3f81616d65565b616f82576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b6001600160a01b0380821660009081526004602052604090206002810154909116616ff4576040805162461bcd60e51b815260206004820152601b60248201527f6465616666696c696174653a206e6f7420616666696c69617465640000000000604482015290519081900360640190fd5b616ffe8183618067565b50600193505050600154811461704c576040805162461bcd60e51b815260206004820152600e60248201526d1c99595b9d1c985b9d0818d85b1b60921b604482015290519081900360640190fd5b5090565b60025460408051674163636f756e747360c01b602080830191909152825160088184030181526028830180855281519183019190912063dcf0aaed60e01b909152602c830152915160009361010090046001600160a01b03169263dcf0aaed92604c8082019391829003018186803b1580156170cb57600080fd5b505afa1580156170df573d6000803e3d6000fd5b505050506040513d60208110156170f557600080fd5b5051905090565b6001600160a01b038083166000818152600360209081526040808320868616845260049092528220600201549193909291161461717a576040805162461bcd60e51b815260206004820152601760248201527604e6f7420616666696c696174656420746f2067726f757604c1b604482015290519081900360640190fd5b6040805163542424fb60e01b81526001830160048201526001600160a01b03851660248201529051739fe46736679d2d9a65f0992f2272de9f3c7fa6e09163542424fb916044808301926020929190829003018186803b1580156171dd57600080fd5b505af41580156171f1573d6000803e3d6000fd5b505050506040513d602081101561720757600080fd5b5051617256576040805162461bcd60e51b815260206004820152601960248201527804e6f742061206d656d626572206f66207468652067726f757603c1b604482015290519081900360640190fd5b6040805163716062b560e11b81526001830160048201526001600160a01b03851660248201529051739fe46736679d2d9a65f0992f2272de9f3c7fa6e09163e2c0c56a916044808301926000929190829003018186803b1580156172b957600080fd5b505af41580156172cd573d6000803e3d6000fd5b50505050600381015480617353576172e3618f1a565b6001600160a01b031663a8e45871866040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050600060405180830381600087803b15801561733a57600080fd5b505af115801561734e573d6000803e3d6000fd5b505050505b61735e846000618c7d565b506173798561737483600163ffffffff61740616565b618f95565b836001600160a01b0316856001600160a01b03167fc7666a52a66ff601ff7c0d4d6efddc9ac20a34792f6aa003d1804c9d4d5baa5760405160405180910390a3506001949350505050565b600061271483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061904c565b600082820183811015612714576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006127148383617910565b5190565b600061747b8561271b565b801561748b575061748b84616d65565b6174dc576040805162461bcd60e51b815260206004820152601760248201527f4e6f742076616c696461746f7220616e642067726f7570000000000000000000604482015290519081900360640190fd5b6001600160a01b0385166000908152600360208190526040909120600e5491810154909111617552576040805162461bcd60e51b815260206004820152601f60248201527f67726f757020776f756c6420657863656564206d6178696d756d2073697a6500604482015290519081900360640190fd5b6001600160a01b038581166000908152600460205260409020600201548116908716146175c0576040805162461bcd60e51b815260206004820152601760248201527604e6f7420616666696c696174656420746f2067726f757604c1b604482015290519081900360640190fd5b6040805163542424fb60e01b81526001830160048201526001600160a01b03871660248201529051739fe46736679d2d9a65f0992f2272de9f3c7fa6e09163542424fb916044808301926020929190829003018186803b15801561762357600080fd5b505af4158015617637573d6000803e3d6000fd5b505050506040513d602081101561764d57600080fd5b505115617694576040805162461bcd60e51b815260206004820152601060248201526f0416c726561647920696e2067726f75760841b604482015290519081900360640190fd5b60038101546000906176ad90600163ffffffff61740616565b604080516326afac4960e01b81526001850160048201526001600160a01b03891660248201529051919250739fe46736679d2d9a65f0992f2272de9f3c7fa6e0916326afac4991604480820192600092909190829003018186803b15801561771457600080fd5b505af4158015617728573d6000803e3d6000fd5b505050506177358761530d565b617786576040805162461bcd60e51b815260206004820152601a60248201527f47726f757020726571756972656d656e7473206e6f74206d6574000000000000604482015290519081900360640190fd5b61778f8661530d565b6177e0576040805162461bcd60e51b815260206004820152601e60248201527f56616c696461746f7220726571756972656d656e7473206e6f74206d65740000604482015290519081900360640190fd5b8060011415617866576177f1618f1a565b6040805163a18fb2db60e01b81526001600160a01b038a81166004830152888116602483015287811660448301529151929091169163a18fb2db9160648082019260009290919082900301818387803b15801561784d57600080fd5b505af1158015617861573d6000803e3d6000fd5b505050505b6178708688618c7d565b506178868761737483600163ffffffff6173c416565b856001600160a01b0316876001600160a01b03167fbdf7e616a6943f81e07a7984c9d4c00197dc2f481486ce4ffa6af52a113974ad60405160405180910390a35060019695505050505050565b6000808284816178df57fe5b0490508284816178eb57fe5b066178f7579050612247565b61790881600163ffffffff61740616565b915050612247565b600061792382602063ffffffff61740616565b8351101561796f576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b50016020015190565b600081516040146179d0576040805162461bcd60e51b815260206004820152601d60248201527f57726f6e67204543445341207075626c6963206b6579206c656e677468000000604482015290519081900360640190fd5b815160208301206001600160a01b03848116911614617a36576040805162461bcd60e51b815260206004820152601f60248201527f4543445341206b657920646f6573206e6f74206d61746368207369676e657200604482015290519081900360640190fd5b8151617a4890869060208501906196ad565b50836001600160a01b03167f213377eec2c15b21fa7abcbb0cb87a67e893cdb94a2564aa4bb4d380869473c8836040518080602001828103825283818151815260200191508051906020019080838360005b83811015617ab2578181015183820152602001617a9a565b50505050905090810190601f168015617adf5780820380516001836020036101000a031916815260200191505b509250505060405180910390a2506001949350505050565b825481108015617b2f5750816001600160a01b0316838281548110617b1857fe5b6000918252602090912001546001600160a01b0316145b617b6a5760405162461bcd60e51b8152600401808060200182810382526021815260200180619b2a6021913960400191505060405180910390fd5b8254600090617b8090600163ffffffff6173c416565b9050838181548110617b8e57fe5b9060005260206000200160009054906101000a90046001600160a01b0316848381548110617bb857fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b03160217905550838181548110617bf257fe5b600091825260209091200180546001600160a01b031916905580617c168582619727565b5050505050565b60008251606014617c75576040805162461bcd60e51b815260206004820152601b60248201527f57726f6e6720424c53207075626c6963206b6579206c656e6774680000000000604482015290519081900360640190fd5b8151603014617cc2576040805162461bcd60e51b81526020600482015260146024820152730aee4dedcce408498a640a0dea040d8cadccee8d60631b604482015290519081900360640190fd5b617ccd848484611d79565b617d10576040805162461bcd60e51b815260206004820152600f60248201526e0496e76616c696420424c5320506f5608c1b604482015290519081900360640190fd5b8251617d2590600187019060208601906196ad565b5060408051602080825285518183015285516001600160a01b038816937f36a1aabe506bbe8802233cbb9aad628e91269e77077c953f9db3e02d7092ee339388939092839283019185019080838360008315617ab2578181015183820152602001617a9a565b6001600160a01b038116617dd05760405162461bcd60e51b81526004018080602001828103825260268152602001806197b36026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b617e33619656565b50604080516020810190915290815290565b617e4d619656565b8151835190810190811015617ea1576040805162461bcd60e51b8152602060048201526015602482015274185919081bdd995c999b1bddc819195d1958dd1959605a1b604482015290519081900360640190fd5b60408051602081019091529081529392505050565b617ebe619656565b617ec66190e3565b821115617f045760405162461bcd60e51b81526004018080602001828103825260368152602001806198da6036913960400191505060405180910390fd5b50604080516020810190915269d3c21bcecceda100000082028152919050565b617f2c619656565b8151617f73576040805162461bcd60e51b8152602060048201526011602482015270063616e277420646976696465206279203607c1b604482015290519081900360640190fd5b825169d3c21bcecceda10000008181029190820414617fce576040805162461bcd60e51b81526020600482015260126024820152716f766572666c6f772061742064697669646560701b604482015290519081900360640190fd5b604051806020016040528084600001518381617fe657fe5b049052949350505050565b617ff9619656565b50604080516020810190915269d3c21bcecceda1000000815290565b3390565b60008183106180285781612714565b5090919050565b618037619656565b61803f619656565b61804884617eb6565b9050618052619656565b61805b84617eb6565b90506129658282617f24565b60028201546001600160a01b039081166000818152600360209081526040808320815163542424fb60e01b81526001820160048201529587166024870152905192949092739fe46736679d2d9a65f0992f2272de9f3c7fa6e09263542424fb9260448082019391829003018186803b1580156180e257600080fd5b505af41580156180f6573d6000803e3d6000fd5b505050506040513d602081101561810c57600080fd5b50511561811f5761811d82856170fc565b505b6002850180546001600160a01b03191690556040516001600160a01b0383811691908616907f71815121f0622b31a3e7270eb28acb9fd10825ff418c9a18591f617bb8a31a6c90600090a3506001949350505050565b600061817f617050565b6001600160a01b03166393c5c487846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156181d457600080fd5b505afa1580156181e8573d6000803e3d6000fd5b505050506040513d60208110156181fe57600080fd5b5051905061820b81616d65565b61824e576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b618256619656565b61826261359c84614071565b905061826c619656565b6040805160208101909152600c54815261828c908363ffffffff6190fe16565b9050618296619656565b6040805160208101909152600c5481526182be906182b2617ff1565b9063ffffffff61945416565b6001600160a01b038516600090815260046020908152604091829020825191820190925260039091015481529091506182fe90829063ffffffff6190fe16565b905061832261359c61830f8561746c565b6140f86135e5868663ffffffff617e4516565b6001600160a01b038516600081815260046020908152604091829020935160039094018490558151908101909152918252907fedf9f87e50e10c533bf3ae7f5a7894ae66c23e6cbbe8773d7765d20ad6f995e99061837f9061746c565b6183888661746c565b6040805192835260208301919091528051918290030190a2505050505050565b6002546040805169131bd8dad95911dbdb1960b21b6020808301919091528251600a818403018152602a830180855281519183019190912063dcf0aaed60e01b909152602e830152915160009361010090046001600160a01b03169263dcf0aaed92604e8082019391829003018186803b1580156170cb57600080fd5b600061271483836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506194cc565b5190511490565b600080618479617050565b6001600160a01b03166393c5c487856040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156184ce57600080fd5b505afa1580156184e2573d6000803e3d6000fd5b505050506040513d60208110156184f857600080fd5b5051905061850581616d65565b618548576040805162461bcd60e51b815260206004820152600f60248201526e2737ba1030903b30b634b230ba37b960891b604482015290519081900360640190fd5b600061855382611923565b90506001600160a01b03811661859a5760405162461bcd60e51b81526004018080602001828103825260258152602001806199106025913960400191505060405180910390fd5b6185a38261530d565b80156185b357506185b38161530d565b15618a65576185c0619656565b6001600160a01b03808316600090815260036020818152604080842081518084018352600990910154815294881684526004825292839020835191820190935291015481526186219190618615908189617eb6565b9063ffffffff6190fe16565b6001600160a01b03831660009081526003602090815260408083208151928301909152600501548152919250906186689061866390849063ffffffff6190fe16565b619531565b9050618672619656565b61869361868e8361868286619531565b9063ffffffff6173c416565b617eb6565b90506000806186a0617050565b60408051639f024f4b60e01b81526001600160a01b038a811660048301528251931692639f024f4b92602480840193919291829003018186803b1580156186e657600080fd5b505afa1580156186fa573d6000803e3d6000fd5b505050506040513d604081101561871057600080fd5b5080516020909101519092509050600061873c61866361872f84617e2b565b869063ffffffff6190fe16565b9050600061874d8261868287619531565b90506000618759619542565b9050806001600160a01b03166340c10f198a896040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b1580156187bb57600080fd5b505af11580156187cf573d6000803e3d6000fd5b505050506040513d60208110156187e557600080fd5b5051618838576040805162461bcd60e51b815260206004820152601e60248201527f6d696e74206661696c656420746f2076616c696461746f722067726f75700000604482015290519081900360640190fd5b806001600160a01b03166340c10f198b846040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561889857600080fd5b505af11580156188ac573d6000803e3d6000fd5b505050506040513d60208110156188c257600080fd5b5051618915576040805162461bcd60e51b815260206004820181905260248201527f6d696e74206661696c656420746f2076616c696461746f72206163636f756e74604482015290519081900360640190fd5b83156189f857806001600160a01b03166340c10f1986856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b15801561897b57600080fd5b505af115801561898f573d6000803e3d6000fd5b505050506040513d60208110156189a557600080fd5b50516189f8576040805162461bcd60e51b815260206004820152601860248201527f6d696e74206661696c656420746f2064656c6567617465650000000000000000604482015290519081900360640190fd5b886001600160a01b03168a6001600160a01b03167f6f5937add2ec38a0fa4959bccd86e3fcc2aafb706cd3e6c0565f87a7b36b9975848a604051808381526020018281526020019250505060405180910390a3618a5488619531565b9a5050505050505050505050612247565b600092505050612247565b6000818310156180285781612714565b600082618a8f57506000612247565b82820282848281618a9c57fe5b04146127145760405162461bcd60e51b8152600401808060200182810382526021815260200180619a6f6021913960400191505060405180910390fd5b6000618ae3618f1a565b6001600160a01b031663cb08c993836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b03168152602001915050602060405180830381600087803b158015618b3a57600080fd5b505af1158015618b4e573d6000803e3d6000fd5b505050506040513d6020811015618b6457600080fd5b505115618ba25760405162461bcd60e51b815260040180806020018281038252602e815260200180619ab5602e913960400191505060405180910390fd5b618baa6183a8565b6001600160a01b03166315952ae7836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015618bff57600080fd5b505afa158015618c13573d6000803e3d6000fd5b505050506040513d6020811015618c2957600080fd5b5051156119e2576040805162461bcd60e51b815260206004820181905260248201527f43616e6e6f742064656c656761746520676f7665726e616e636520706f776572604482015290519081900360640190fd5b6001600160a01b038216600090815260046020819052604082200181618ca161446d565b905060008260010154600014618cdf57618cda618ccc600185600101546173c490919063ffffffff16565b84549063ffffffff61740616565b618ce2565b60005b905060008360010154118015618cff57506001600160a01b038516155b15618d0b574260038401555b60008360010154118015618d2e5750600081815260028401602052604090205482145b15618d88576040805180820182529283526001600160a01b03868116602080860191825260009485526002969096019095529120915182559151600191820180546001600160a01b03191691909316179091559050612247565b60008360010154600014618dac57618da782600163ffffffff61740616565b618daf565b60005b6040805180820182528581526001600160a01b038981166020808401918252600086815260028b0190915293909320915182559151600191820180546001600160a01b0319169190931617909155600d54908601549192501115618e2c57600184810154618e229163ffffffff61740616565b600185015561261e565b600d5484600101541415618e7a57835460009081526002850160205260408120908155600190810180546001600160a01b03191690558454618e739163ffffffff61740616565b845561261e565b8354600090815260028501602081905260408220828155600190810180546001600160a01b03191690558654919291618eb89163ffffffff61740616565b815260208101919091526040016000908120908155600190810180546001600160a01b031916905584810154618ef39163ffffffff6173c416565b60018501558354618f0b90600263ffffffff61740616565b84555060019695505050505050565b600254604080516722b632b1ba34b7b760c11b602080830191909152825160088184030181526028830180855281519183019190912063dcf0aaed60e01b909152602c830152915160009361010090046001600160a01b03169263dcf0aaed92604c8082019391829003018186803b1580156170cb57600080fd5b6001600160a01b03821660009081526003602052604090206008018054821415618fd357805460018101825560008281526020902042910155619047565b8054821015618ffa5742818381548110618fe957fe5b600091825260209091200155619047565b6040805162461bcd60e51b815260206004820152601d60248201527f556e61626c6520746f207570646174652073697a6520686973746f7279000000604482015290519081900360640190fd5b505050565b600081848411156190db5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156190a0578181015183820152602001619088565b50505050905090810190601f1680156190cd5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b7601357c299a88ea76a58924d52ce4f26a85af186c2b9e7490565b619106619656565b8251158061911357508151155b1561912d5750604080516020810190915260008152612247565b815169d3c21bcecceda10000001415619147575081612247565b825169d3c21bcecceda10000001415619161575080612247565b600069d3c21bcecceda1000000619177856195c0565b518161917f57fe5b049050600061918d856195f5565b519050600069d3c21bcecceda10000006191a6866195c0565b51816191ae57fe5b04905060006191bc866195f5565b519050838202841561921e57828582816191d257fe5b041461921e576040805162461bcd60e51b81526020600482015260166024820152751bdd995c999b1bddc81e0c5e4c4819195d1958dd195960521b604482015290519081900360640190fd5b69d3c21bcecceda1000000810281156192985769d3c21bcecceda100000082828161924557fe5b0414619298576040805162461bcd60e51b815260206004820152601f60248201527f6f766572666c6f772078317931202a2066697865643120646574656374656400604482015290519081900360640190fd5b90508084840285156192fa57848682816192ae57fe5b04146192fa576040805162461bcd60e51b81526020600482015260166024820152751bdd995c999b1bddc81e0c9e4c4819195d1958dd195960521b604482015290519081900360640190fd5b8684028715619359578488828161930d57fe5b0414619359576040805162461bcd60e51b81526020600482015260166024820152751bdd995c999b1bddc81e0c5e4c8819195d1958dd195960521b604482015290519081900360640190fd5b61936161962f565b878161936957fe5b04965061937461962f565b858161937c57fe5b04945086850287156193de578588828161939257fe5b04146193de576040805162461bcd60e51b81526020600482015260166024820152751bdd995c999b1bddc81e0c9e4c8819195d1958dd195960521b604482015290519081900360640190fd5b6193e6619656565b604051806020016040528087815250905061940f81604051806020016040528087815250617e45565b905061942981604051806020016040528086815250617e45565b905061944381604051806020016040528085815250617e45565b9d9c50505050505050505050505050565b61945c619656565b8151835110156194b3576040805162461bcd60e51b815260206004820152601f60248201527f737562737472616374696f6e20756e646572666c6f7720646574656374656400604482015290519081900360640190fd5b5060408051602081019091528151835103815292915050565b6000818361951b5760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156190a0578181015183820152602001619088565b50600083858161952757fe5b0495945050505050565b5169d3c21bcecceda1000000900490565b600254604080516a29ba30b13632aa37b5b2b760a91b6020808301919091528251600b818403018152602b830180855281519183019190912063dcf0aaed60e01b909152602f830152915160009361010090046001600160a01b03169263dcf0aaed92604f8082019391829003018186803b1580156170cb57600080fd5b6195c8619656565b604051806020016040528069d3c21bcecceda1000000808560000151816195eb57fe5b0402905292915050565b6195fd619656565b604051806020016040528069d3c21bcecceda10000008085600001518161962057fe5b95519504029093039092525090565b64e8d4a5100090565b5080546000825590600052602060002090810190614f1d9190619747565b6040518060200160405280600081525090565b50805460018160011615610100020316600290046000825580601f1061968f5750614f1d565b601f016020900490600052602060002090810190614f1d9190619747565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106196ee57805160ff191683800117855561971b565b8280016001018555821561971b579182015b8281111561971b578251825591602001919060010190619700565b5061704c929150619747565b815481835581811115619047576000838152602090206190479181019083015b6122ad91905b8082111561704c576000815560010161974d56fe56616c696461746f7220646f65736e2774206d65657420726571756972656d656e74736572726f722063616c6c696e67206e756d62657256616c696461746f7273496e53657420707265636f6d70696c654f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373607265736574536c617368696e674d756c7469706c696572602063616c6c6564206265666f7265207265736574506572696f64206578706972656443616e2774206170706c7920636f6d6d697373696f6e20757064617465207965744e6f7420612076616c696461746f722067726f75700000000000000000000000557074696d65206172726179206c6172676572207468616e206d6178696d756d2067726f75702073697a6556616c696461746f7220726571756972656d656e7473206e6f74206368616e6765646572726f722063616c6c696e672067657456657269666965645365616c4269746d617046726f6d48656164657220707265636f6d70696c6563616e277420637265617465206669786964697479206e756d626572206c6172676572207468616e206d61784e65774669786564282956616c696461746f72206e6f742072656769737465726564207769746820612067726f757070726f766964656420696e64657820646f6573206e6f74206d617463682070726f76696465642065706f63684e756d62657220617420696e64657820696e20686973746f72792e6572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e67206e756d62657256616c696461746f7273496e43757272656e7453657420707265636f6d70696c656572726f722063616c6c696e672076616c696461746f725369676e65724164647265737346726f6d53657420707265636f6d70696c654d656d6265727368697020686973746f7279206c656e6774682063616e6e6f74206265207a65726f45706f63682063616e6e6f74206265206c6172676572207468616e2063757272656e74536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774d656d6265727368697020686973746f7279206c656e677468206e6f74206368616e67656443616e6e6f7420766f746520666f72206d6f7265207468616e206d6178206e756d626572206f662067726f7570734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726572726f722063616c6c696e67206672616374696f6e4d756c45787020707265636f6d70696c6564656c657465456c656d656e743a20696e646578206f7574206f662072616e67656572726f722063616c6c696e672067657445706f636853697a6520707265636f6d70696c656572726f722063616c6c696e6720676574506172656e745365616c4269746d617020707265636f6d70696c65636f6d6d697373696f6e207570646174652064656c6179206e6f74206368616e6765646572726f722063616c6c696e6720676574426c6f636b4e756d62657246726f6d48656164657220707265636f6d70696c654861736e2774206265656e20656d70747920666f72206c6f6e6720656e6f756768436f6d6d697373696f6e2063616e27742062652067726561746572207468616e203130302541646a7573746d656e742073706565642063616e6e6f74206265206c6172676572207468616e20316572726f722063616c6c696e67206861736848656164657220707265636f6d70696c6541646a7573746d656e7420737065656420616e64206578706f6e656e74206e6f74206368616e676564a265627a7a723158209343e29afd6b5920bc0e329bfc47643da404c399db0c252148b3b5e8d6905b1564736f6c634300051100320000000000000000000000000000000000000000000000000000000000000000",
        "nonce": "0xb1",
        "accessList": []
      },
      "additionalContracts": [],
      "isFixedGasLimit": false
    },

@martinvol
Copy link
Author

martinvol commented May 6, 2024

I ended up figuring out what happened. Deploying the contract standalone didn't work either

forge create Validators --from $FROM_ACCOUNT --rpc-url http://127.0.0.1:$ANVIL_PORT --unlocked --json
Error:
Dynamic linking not supported in `create` command - deploy the following library contracts first, then provide the address to link at compile time
	AddressLinkedList: contracts/common/linkedlists/AddressLinkedList.sol
martinvol@NJMQG9FQHT protocol % forge create Validators --from $FROM_ACCOUNT --rpc-url http://127.0.0.1:$ANVIL_PORT --unlocked --json `cat tmp_libraries.txt`
eth_chainId
Error:
no arguments provided for contract constructor; consider --constructor-args or --constructor-args-path

Context:
- Error #0: failed to deploy contract
- Error #1: encode length mismatch: expected 1 types, got 0
martinvol@NJMQG9FQHT protocol % forge create Validators --from $FROM_ACCOUNT --rpc-url http://127.0.0.1:$ANVIL_PORT --unlocked --json `cat tmp_libraries.txt` --constructor-args false
eth_chainId
eth_getBlockByNumber
eth_feeHistory
eth_estimateGas
Error:
(code: -32603, message: EVM error CreateContractSizeLimit, data: None)

So the problem is that CreateContractSizeLimit was exceeded and anvil was just showing a revert with no info.

@0xharold
Copy link

Hi @mattsse,
I am facing to a similar issue. The main difference is that I am able to deploy a contract, but a subsequent interactions script fails without providing me with any reason:

Anvil logs:

    Transaction: 0x94ca9537a514177e0d75b61e9887ccba69ea1db0b5c15c0bf06181a235dc7c04
    Gas used: 26648
    Error: reverted with: 

    Block Number: 2
    Block Hash: 0xdd84b0cb00204f19d67efb77e229c4bccd97a0771c376e0fc0b35b6bb0663c7c
    Block Time: "Mon, 10 Jun 2024 12:18:03 +0000"

forge logs:

Script ran successfully.

## Setting up 1 EVM.
==========================
Simulated On-chain Traces:

  [235885] 0x5FbDB2315678afecb367f032d93F642f64180aa3::issueBond(Bond({ isin: "SK0001002059", name: "SME Test Bond", symbol: "SME", currency: 0x0000000000000000000000000000000000000000, denomination: 1000, issueVolume: 10000000 [1e7], couponRate: 500, couponType: 1, issueDate: 1718022306 [1.718e9], maturityDate: 1875702306 [1.875e9] }))
    ├─ emit TransferSingle(operator: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266, from: 0x0000000000000000000000000000000000000000, to: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266, id: 44786436919336719255487164221084879152604443661199196645423161589651410077871 [4.478e76], value: 10000 [1e4])
    ├─ emit BondIssued(issuer: 0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266, isin: "SK0001002059", amount: 10000 [1e4])
    └─ ← [Stop] 


==========================

Chain 31337

Estimated gas price: 1.789711951 gwei

Estimated total gas used for script: 358810

Estimated amount required: 0.00064216654513831 ETH

==========================

##### anvil-hardhat
❌  [Failed]Hash: 0x7412d9556e6d9d651c30c3ea87414e8a9208070440e4f3bcfd024e486e2f06be
Block: 2
Paid: 0.000023846122048448 ETH (26648 gas * 0.894855976 gwei)


Transactions saved to: <given-folder>/31337/run-latest.json

Sensitive values saved to: <given-folder-path>/31337/run-latest.json

Error: 
Transaction Failure: 0x7412d9556e6d9d651c30c3ea87414e8a9208070440e4f3bcfd024e486e2f06be

When I run the script without --broadcast flag, the simulation is successful.

Any idea what could be wrong or how could I debug it?

Environment:

  • forge: forge 0.2.0 (6179312 2024-06-10T00:18:01.259779793Z)
  • OS: Win 11, WSL2, Ubuntu 22.04.4 LTS
  • logs when RUST_LOG=trace anvil: logs.txt

@0xharold
Copy link

[UPDATE]
I was able to debug the reason for the failures by running all sequences on the Sepolia testnet, where the reason for the failure is provided in logs, unlike when running scripts on Anvil. (I discovered invalid input data).

@zerosnacks
Copy link
Member

Marking as resolved, added an entry for a followup to improve error message information in Anvil

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
T-bug Type: bug
Projects
None yet
Development

No branches or pull requests

4 participants