@pimlico/alto 0.0.0-main.20250605T142651 → 0.0.0-main.20250611T105955

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. package/contracts/EIP712.sol/EIP712.json +1 -1
  2. package/contracts/ERC165.sol/ERC165.json +1 -1
  3. package/contracts/Eip7702Support.sol/Eip7702Support.json +1 -1
  4. package/contracts/EntryPoint.sol/EntryPoint.json +1 -1
  5. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -0
  6. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -0
  7. package/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -0
  8. package/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -0
  9. package/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -0
  10. package/contracts/EntryPointSimulations.sol/{EntryPointSimulations.json → EntryPointSimulations08.json} +1 -1
  11. package/contracts/Exec.sol/Exec.json +1 -1
  12. package/contracts/IAccount.sol/IAccount.json +1 -1
  13. package/contracts/IAccountExecute.sol/IAccountExecute.json +1 -1
  14. package/contracts/IAggregator.sol/IAggregator.json +1 -1
  15. package/contracts/IERC165.sol/IERC165.json +1 -1
  16. package/contracts/IERC5267.sol/IERC5267.json +1 -1
  17. package/contracts/IEntryPoint.sol/IEntryPoint.json +1 -1
  18. package/contracts/IEntryPointSimulations.sol/IEntryPointSimulations.json +1 -1
  19. package/contracts/INonceManager.sol/INonceManager.json +1 -1
  20. package/contracts/IPaymaster.sol/IPaymaster.json +1 -1
  21. package/contracts/ISenderCreator.sol/ISenderCreator.json +1 -1
  22. package/contracts/IStakeManager.sol/IStakeManager.json +1 -1
  23. package/contracts/LibBytes.sol/LibBytes.json +1 -0
  24. package/contracts/Math.sol/Math.json +1 -1
  25. package/contracts/MessageHashUtils.sol/MessageHashUtils.json +1 -1
  26. package/contracts/NonceManager.sol/NonceManager.json +1 -1
  27. package/contracts/Panic.sol/Panic.json +1 -1
  28. package/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -0
  29. package/contracts/ReentrancyGuard.sol/ReentrancyGuard.json +1 -1
  30. package/contracts/ReentrancyGuardTransient.sol/ReentrancyGuardTransient.json +1 -1
  31. package/contracts/SafeCast.sol/SafeCast.json +1 -1
  32. package/contracts/SenderCreator.sol/SenderCreator.json +1 -1
  33. package/contracts/ShortStrings.sol/ShortStrings.json +1 -1
  34. package/contracts/SignedMath.sol/SignedMath.json +1 -1
  35. package/contracts/StakeManager.sol/StakeManager.json +1 -1
  36. package/contracts/StorageSlot.sol/StorageSlot.json +1 -1
  37. package/contracts/Strings.sol/Strings.json +1 -1
  38. package/contracts/TransientSlot.sol/TransientSlot.json +1 -1
  39. package/contracts/UserOperation.sol/UserOperationLib.json +1 -1
  40. package/contracts/UserOperationLib.sol/UserOperationLib.json +1 -1
  41. package/contracts/build-info/4a223f6420e18feb.json +1 -0
  42. package/contracts/build-info/ad2dc60de86c0e4f.json +1 -0
  43. package/contracts/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
  44. package/contracts/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -0
  45. package/contracts/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  46. package/contracts/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
  47. package/contracts/interfaces/IAggregator.sol/IAggregator.json +1 -0
  48. package/contracts/interfaces/IEntryPoint.sol/IEntryPoint.json +1 -1
  49. package/contracts/interfaces/INonceManager.sol/INonceManager.json +1 -0
  50. package/contracts/interfaces/IStakeManager.sol/IStakeManager.json +1 -0
  51. package/esm/cli/config/bundler.d.ts +440 -416
  52. package/esm/cli/config/bundler.js +12 -2
  53. package/esm/cli/config/bundler.js.map +1 -1
  54. package/esm/cli/config/options.js +27 -4
  55. package/esm/cli/config/options.js.map +1 -1
  56. package/esm/cli/deploySimulationsContract.d.ts +2 -0
  57. package/esm/cli/deploySimulationsContract.js +56 -25
  58. package/esm/cli/deploySimulationsContract.js.map +1 -1
  59. package/esm/cli/handler.js +18 -6
  60. package/esm/cli/handler.js.map +1 -1
  61. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride06.json +1 -0
  62. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride07.json +1 -0
  63. package/esm/contracts/EntryPointFilterOpsOverride.sol/EntryPointFilterOpsOverride08.json +1 -0
  64. package/esm/contracts/EntryPointGasEstimationOverride.sol/EntryPointGasEstimationOverride06.json +1 -0
  65. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations07.json +1 -0
  66. package/esm/contracts/EntryPointSimulations.sol/EntryPointSimulations08.json +1 -0
  67. package/esm/contracts/PimlicoSimulations.sol/PimlicoSimulations.json +1 -0
  68. package/esm/createConfig.d.ts +2 -1
  69. package/esm/createConfig.js +2 -0
  70. package/esm/createConfig.js.map +1 -1
  71. package/esm/executor/executor.d.ts +10 -4
  72. package/esm/executor/executor.js +109 -55
  73. package/esm/executor/executor.js.map +1 -1
  74. package/esm/executor/executorManager.d.ts +8 -1
  75. package/esm/executor/executorManager.js +75 -76
  76. package/esm/executor/executorManager.js.map +1 -1
  77. package/esm/executor/filterOpsAndEstimateGas.d.ts +25 -0
  78. package/esm/executor/filterOpsAndEstimateGas.js +251 -0
  79. package/esm/executor/filterOpsAndEstimateGas.js.map +1 -0
  80. package/esm/executor/utils.js +1 -1
  81. package/esm/executor/utils.js.map +1 -1
  82. package/esm/mempool/mempool.js +15 -4
  83. package/esm/mempool/mempool.js.map +1 -1
  84. package/esm/rpc/estimation/gasEstimationsV06.js +12 -4
  85. package/esm/rpc/estimation/gasEstimationsV06.js.map +1 -1
  86. package/esm/rpc/estimation/gasEstimationsV07.d.ts +1 -1
  87. package/esm/rpc/estimation/gasEstimationsV07.js +26 -23
  88. package/esm/rpc/estimation/gasEstimationsV07.js.map +1 -1
  89. package/esm/rpc/methods/pimlico_sendUserOperationNow.js +14 -4
  90. package/esm/rpc/methods/pimlico_sendUserOperationNow.js.map +1 -1
  91. package/esm/rpc/validation/SafeValidator.js +17 -9
  92. package/esm/rpc/validation/SafeValidator.js.map +1 -1
  93. package/esm/types/contracts/EntryPointSimulationsV6.d.ts +0 -1
  94. package/esm/types/contracts/EntryPointSimulationsV6.js +0 -2
  95. package/esm/types/contracts/EntryPointSimulationsV6.js.map +1 -1
  96. package/esm/types/contracts/PimlicoSimulations.d.ts +284 -0
  97. package/esm/types/contracts/PimlicoSimulations.js +368 -0
  98. package/esm/types/contracts/PimlicoSimulations.js.map +1 -0
  99. package/esm/types/contracts/index.d.ts +1 -1
  100. package/esm/types/contracts/index.js +1 -1
  101. package/esm/types/contracts/index.js.map +1 -1
  102. package/esm/types/mempool.d.ts +11 -7
  103. package/esm/types/mempool.js.map +1 -1
  104. package/esm/utils/eip7702.d.ts +1 -1
  105. package/esm/utils/eip7702.js +3 -0
  106. package/esm/utils/eip7702.js.map +1 -1
  107. package/esm/utils/entryPointOverrides.d.ts +16 -0
  108. package/esm/utils/entryPointOverrides.js +64 -0
  109. package/esm/utils/entryPointOverrides.js.map +1 -0
  110. package/esm/utils/helpers.d.ts +1 -0
  111. package/esm/utils/helpers.js +4 -0
  112. package/esm/utils/helpers.js.map +1 -1
  113. package/esm/utils/validation.d.ts +5 -0
  114. package/esm/utils/validation.js +17 -7
  115. package/esm/utils/validation.js.map +1 -1
  116. package/package.json +2 -2
  117. package/contracts/EntryPointCodeOverride.sol/EntryPointCodeOverride.json +0 -1
  118. package/contracts/PimlicoEntryPointSimulationsV7.sol/PimlicoEntryPointSimulationsV7.json +0 -1
  119. package/contracts/PimlicoEntryPointSimulationsV8.sol/PimlicoEntryPointSimulationsV8.json +0 -1
  120. package/contracts/build-info/96c79d1c9e9e095f.json +0 -1
  121. package/contracts/build-info/b400ff92e5db9cf3.json +0 -1
  122. package/esm/contracts/PimlicoEntryPointSimulationsV7.sol/PimlicoEntryPointSimulationsV7.json +0 -1
  123. package/esm/contracts/PimlicoEntryPointSimulationsV8.sol/PimlicoEntryPointSimulationsV8.json +0 -1
  124. package/esm/executor/filterOpsAndEStimateGas.d.ts +0 -29
  125. package/esm/executor/filterOpsAndEStimateGas.js +0 -198
  126. package/esm/executor/filterOpsAndEStimateGas.js.map +0 -1
  127. package/esm/types/contracts/PimlicoEntryPointSimulations.d.ts +0 -25
  128. package/esm/types/contracts/PimlicoEntryPointSimulations.js +0 -39
  129. package/esm/types/contracts/PimlicoEntryPointSimulations.js.map +0 -1
@@ -1 +0,0 @@
1
- { "abi": [{ "type": "constructor", "inputs": [], "stateMutability": "nonpayable" }, { "type": "function", "name": "simulateEntryPoint", "inputs": [{ "name": "ep", "type": "address", "internalType": "address payable" }, { "name": "data", "type": "bytes[]", "internalType": "bytes[]" }], "outputs": [{ "name": "", "type": "bytes[]", "internalType": "bytes[]" }], "stateMutability": "nonpayable" }, { "type": "event", "name": "PimlicoSimulationV8Deployed", "inputs": [], "anonymous": false }], "bytecode": { "object": "0x6080806040523460a257615bb18181016001600160401b03811183821017608e578291610427833903905ff080156083575f80546001600160a01b0319166001600160a01b0392909216919091178155604051907f0ac1632485823e92e5d9da7cd439a7aa48fa801afc8085b892e88171ef873ea09080a161038090816100a78239f35b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b5f80fdfe60806040526004361015610011575f80fd5b5f3560e01c63c18f522614610024575f80fd5b346102ac5760403660031901126102ac5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102ac5760243567ffffffffffffffff81116102ac57366023820112156102ac578060040135610081816102e6565b9161008f60405193846102c4565b8183526024602084019260051b820101903682116102ac5760248101925b82841061023557845185876100c1836102e6565b926100cf60405194856102c4565b8084526100de601f19916102e6565b015f5b8181106102245750505f5b82518110156101bd5760019060605f8061016973ffffffffffffffffffffffffffffffffffffffff825416610177610124878b610322565b5160405193849160208301947f850aaf6200000000000000000000000000000000000000000000000000000000865260248401526040604484015260648301906102fe565b03601f1981018452836102c4565b82885a935193f1156101a0575b61018e8287610322565b526101998186610322565b50016100ec565b503d604051906020818301016040528082525f602083013e610184565b836040518091602082016020835281518091526040830190602060408260051b8601019301915f905b8282106101f557505050500390f35b919360019193955060206102148192603f198a820301865288516102fe565b96019201920185949391926101e6565b8060606020809388010152016100e1565b833567ffffffffffffffff81116102ac578201366043820112156102ac5760248101359167ffffffffffffffff83116102b05760405161027f601f8501601f1916602001826102c4565b83815236604484860101116102ac575f6020858196604483970183860137830101528152019301926100ad565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176102b057604052565b67ffffffffffffffff81116102b05760051b60200190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b80518210156103365760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220dc84ea55f5ff02b00bb4b3a117c79a5f9e82daa595d84e3e75900bbfa21d87c364736f6c634300081c0033610180604052346101b8576040516100186040826101eb565b600781526020810190664552433433333760c81b82526040519161003d6040846101eb565b600183526020830191603160f81b83526100568161020e565b61012052610063846103a9565b61014052519020918260e05251902080610100524660a0526040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a081526100cc60c0826101eb565b5190206080523060c05230610160526040516100e7816101bc565b5f815260208101905f8252806020604051610101816101bc565b5f81520152600480546001600160a01b031916905551600555516006556040516156cf90816104e2823960805181613fd8015260a05181614095015260c05181613fa9015260e051816140270152610100518161404d015261012051816114c1015261014051816114ea015261016051818181613200015281816137ef0152818161384a01528181613a0f01528181613ac501528181613b1f01528181613c3301528181613ce901528181613d430152613e570152f35b5f80fd5b604081019081106001600160401b038211176101d757604052565b634e487b7160e01b5f52604160045260245ffd5b601f909101601f19168101906001600160401b038211908210176101d757604052565b908151602081105f14610288575090601f815111610248576020815191015160208210610239571790565b5f198260200360031b1b161790565b604460209160405192839163305a27a960e01b83528160048401528051918291826024860152018484015e5f828201840152601f01601f19168101030190fd5b6001600160401b0381116101d757600254600181811c9116801561039f575b602082101461038b57601f8111610358575b50602092601f82116001146102f757928192935f926102ec575b50508160011b915f199060031b1c19161760025560ff90565b015190505f806102d3565b601f1982169360025f52805f20915f5b8681106103405750836001959610610328575b505050811b0160025560ff90565b01515f1960f88460031b161c191690555f808061031a565b91926020600181928685015181550194019201610307565b60025f52601f60205f20910160051c810190601f830160051c015b81811061038057506102b9565b5f8155600101610373565b634e487b7160e01b5f52602260045260245ffd5b90607f16906102a7565b908151602081105f146103d4575090601f815111610248576020815191015160208210610239571790565b6001600160401b0381116101d757600354600181811c911680156104d7575b602082101461038b57601f81116104a4575b50602092601f821160011461044357928192935f92610438575b50508160011b915f199060031b1c19161760035560ff90565b015190505f8061041f565b601f1982169360035f52805f20915f5b86811061048c5750836001959610610474575b505050811b0160035560ff90565b01515f1960f88460031b161c191690555f8080610466565b91926020600181928685015181550194019201610453565b60035f52601f60205f20910160051c810190601f830160051c015b8181106104cc5750610405565b5f81556001016104bf565b90607f16906103f356fe60806040526004361015610022575b3615610018575f80fd5b6100206132f5565b005b5f3560e01c80630396cb601461021157806303d1dcaf1461020c57806309ccb880146102075780630bd28e3b146102025780630da82661146101fd5780630dbfc6bd146101f857806313c65a6e146101f3578063154e58dc146101ee5780631b2e01b8146101e9578063205c2878146101e457806321e60b37146101df57806322cdde4c146101da578063263934db146101d557806330ec25d1146101d057806335567e1a146101cb57806344403473146101c65780635287ce12146101c157806369683cfa146101bc57806370a08231146101b75780637472949c146101b257806376ad6123146101ad57806384b0196e146101a8578063850aaf62146101a357806397b2dcb91461019e578063b760faf914610199578063bb9fe6bf14610194578063c23a5cea1461018f578063c3bce0091461018a578063c579f76b14610185578063f7e426e8146101805763fe2171cb0361000e57611c43565b611c0a565b611aea565b611ab3565b611990565b61186d565b61184d565b6115fe565b6115c2565b6114a9565b611470565b611450565b611415565b611241565b611134565b6110ef565b611013565b610f96565b610e80565b610e57565b610c8e565b610a9c565b610a3f565b610a05565b6109e3565b610966565b6107b8565b6105ea565b6105a9565b610518565b60203660031901126104005760043563ffffffff811690818103610400576103fb7fa5ae833d0bb1dcd632d98a8b70973e8516812898e19bf27b70071ebc8dc52c01916103dd6102cf6102bf610277336001600160a01b03165f525f60205260405f2090565b96610283811515611c92565b6102b06001890154916102a96102a08463ffffffff9060781c1690565b63ffffffff1690565b1115611cdd565b60081c6001600160701b031690565b6001600160701b03349116611d59565b946102db861515611d66565b6102ee6001600160701b03871115611db1565b546102f76106ee565b908152600160208201526001600160701b038616604082015263ffffffff831660608201525f608082015261033c336001600160a01b03165f525f60205260405f2090565b81518155602082015160019091018054604084015160608501516080909501517fffffffffffffff0000000000000000000000000000000000000000000000000090921660ff941515949094169390931760089390931b6effffffffffffffffffffffffffff00169290921760789390931b72ffffffff000000000000000000000000000000169290921760989190911b65ffffffffffff60981b16179055565b6040805194855263ffffffff90911660208501523393918291820190565b0390a2005b5f80fd5b9181601f840112156104005782359167ffffffffffffffff8311610400576020808501948460051b01011161040057565b6001600160a01b0381160361040057565b359061045182610435565b565b60c06003198201126104005760043567ffffffffffffffff8111610400578161047e91600401610404565b929092916024359067ffffffffffffffff821161040057606090829003600319011261040057600401906044356104b481610435565b90606435906084359060a43590565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b60806040610515936020845280516020850152602081015115158285015201519160608082015201906104c3565b90565b346104005761059b61058f61057861052f36610453565b969194909561053f949394611dfc565b5061057261054b611e1b565b6105606105588780611e8a565b825190613394565b61056a8680611e8a565b905a91613482565b50613648565b61058a6105858280611e8a565b613704565b613796565b604051918291826104e7565b0390f35b5f91031261040057565b34610400575f3660031901126104005760206105c3611eab565b6001600160a01b0360405191168152f35b602435906001600160c01b038216820361040057565b34610400576020366003190112610400576004356001600160c01b03811681036104005761063490335f52600160205260405f20906001600160c01b03165f5260205260405f2090565b61063e8154611f25565b9055005b634e487b7160e01b5f52604160045260245ffd5b60a0810190811067ffffffffffffffff82111761067257604052565b610642565b6060810190811067ffffffffffffffff82111761067257604052565b610140810190811067ffffffffffffffff82111761067257604052565b6040810190811067ffffffffffffffff82111761067257604052565b90601f8019910116810190811067ffffffffffffffff82111761067257604052565b6040519061045160a0836106cc565b60405190610451610140836106cc565b60405190610451610100836106cc565b604051906104516040836106cc565b604051906104516060836106cc565b60405190610451610120836106cc565b67ffffffffffffffff811161067257601f01601f191660200190565b9291926107738261074b565b9161078160405193846106cc565b829481845281830111610400578281602093845f960137010152565b9080601f830112156104005781602061051593359101610767565b34610400576102203660031901126104005760043567ffffffffffffffff8111610400576107ea90369060040161079d565b3660231901906101c08212610400576101406040519261080984610656565b12610400576108166106fd565b6108206024610446565b815260443560208201526064356040820152608435606082015260a435608082015260c43560a082015260e43560c082015261085d610104610446565b60e0820152610124356101008201526101443561012082015282526101643560208301526101843560408301526101a43560608301526101c43560808301526101e4359067ffffffffffffffff8211610400576040926108c46108cf93369060040161079d565b906102043592611f33565b82519182526020820152f35b6020600319820112610400576004359067ffffffffffffffff82116104005761090691600401610404565b9091565b9061010060e061051593805184526020810151602085015260408101516040850152606081015160608501526080810151608085015260a081015160a085015260c0810151151560c08501520151918160e082015201906104c3565b346104005761097d610977366108db565b90612296565b6040518091602082016020835281518091526040830190602060408260051b8601019301915f905b8282106109b457505050500390f35b919360019193955060206109d38192603f198a8203018652885161090a565b96019201920185949391926109a5565b34610400575f3660031901126104005760206109fd613f9f565b604051908152f35b34610400575f3660031901126104005760206040517f29a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e8152f35b34610400576040366003190112610400576020610a93600435610a6181610435565b6001600160a01b03610a716105d4565b91165f526001835260405f20906001600160c01b03165f5260205260405f2090565b54604051908152f35b3461040057604036600319011261040057600435610ab981610435565b602435335f525f60205260405f2091825490818311610b3d575f8080856001600160a01b03829589610aee846100209a61245d565b9055604080516001600160a01b03831681526020810185905233917fd1c19fbcd4551a5edfb66d43d2e337c04837afda3482b42bdf569a8fccdae5fb91a2165af1610b3761246a565b50612499565b606460405162461bcd60e51b815260206004820152601960248201527f576974686472617720616d6f756e7420746f6f206c61726765000000000000006044820152fd5b90816101209103126104005790565b610200600319820112610400576004359160243567ffffffffffffffff81116104005782610bc091600401610b81565b916043190160446101c082126104005761014060405192610be084610656565b12610400576101a090610bf16106fd565b610bfa82610446565b81526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015260c082013560c0820152610c4460e08301610446565b60e082015261010082013561010082015261012082013561012082015283526101408101356020840152610160810135604084015261018081013560608401520135608082015290565b3461040057610c9c36610b90565b90915f91805193610cad8582613394565b610cb6816124e4565b60208301526001600160a01b0360e0610cf087610100604082015160608301510160808301510160a08301510160c0830151019101510290565b96876040860152015116610d1a575b604080515f8082526020820187905291810191909152606090f35b909192505a93610d398351916001600160a01b0360e084015116614acc565b15610de057906080610d5092015192839185615171565b9390505a900311610d68575061059b905f8080610cff565b60408051631101335b60e11b815260048101929092526024820152602760448201527f41413336206f766572207061796d6173746572566572696669636174696f6e4760648201527f61734c696d69740000000000000000000000000000000000000000000000000060848201528060a481015b0390fd5b60848460405190631101335b60e11b8252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b6020600319820112610400576004359067ffffffffffffffff82116104005761051591600401610b81565b346104005760206109fd610e6a36610e2c565b6124e4565b90602061051592818152019061090a565b3461040057610eac610e91366108db565b809291610e9c6121a1565b50610ea6826121ef565b50612296565b5f198201918211610ed95761059b91610ec491612282565b5160405191829160208352602083019061090a565b611d28565b906105159060e06080610f30818651610140865280516101408701526020810151610160870152604081015161018087015260608101516101a0870152015160a06101c08601526101e08501906104c3565b60208087015180518683015201516040850152946040810151805160608601526020015160808501526060810151805160a08601526020015160c0850152015191019080516001600160a01b031682526020908101518051828401520151604090910152565b3461040057610fad610fa7366108db565b906126cb565b6040518091602082016020835281518091526040830190602060408260051b8601019301915f905b828210610fe457505050500390f35b919360019193955060206110038192603f198a82030186528851610ede565b9601920192018594939192610fd5565b3461040057604036600319011261040057602060043561103281610435565b6001600160a01b036110426105d4565b91165f52600182526110688160405f20906001600160c01b03165f5260205260405f2090565b546040805192901b67ffffffffffffffff1916178152f35b9181601f840112156104005782359167ffffffffffffffff8311610400576020838186019501011161040057565b906060600319830112610400576004356110c781610435565b916024359067ffffffffffffffff8211610400576110e791600401611080565b909160443590565b34610400575f8080611100366110ae565b939181604094929451948592833781018381520393f161111e61246a565b901561112657005b805190811561040057602001fd5b34610400576020366003190112610400576001600160a01b0360043561115981610435565b5f608060405161116881610656565b8281528260208201528260408201528260608201520152165f525f60205261059b60405f206111ed65ffffffffffff6001604051936111a685610656565b80548552015460ff8116151560208501526001600160701b038160081c16604085015263ffffffff8160781c16606085015260981c16608083019065ffffffffffff169052565b60405191829182919091608065ffffffffffff8160a0840195805185526020810151151560208601526001600160701b03604082015116604086015263ffffffff6060820151166060860152015116910152565b346104005761124f36610b90565b9190915a928151936112618583613394565b61126a826124e4565b60208401526040850151936112b66effffffffffffffffffffffffffffff8660c08901511760608901511760808901511760a0890151176101008901511761012089015117111561275d565b6112e186610100604082015160608301510160808301510160a08301510160c0830151019101510290565b946113166113126112f55a89898988613565565b98602061130982516001600160a01b031690565b9101519061420a565b1590565b6113c0575a8303116113735750926113579260806113529360a061135e975a9560408601526060808601525a9003910135019101525a9061245d565b6127a9565b6064900490565b604080519283525f6020840152820152606090f35b60408051631101335b60e11b815260048101929092526024820152601e60448201527f41413236206f76657220766572696669636174696f6e4761734c696d697400006064820152608490fd5b610ddc82604051918291631101335b60e11b835260048301608091815260406020820152601a60408201527f4141323520696e76616c6964206163636f756e74206e6f6e636500000000000060608201520190565b34610400576020366003190112610400576001600160a01b0360043561143a81610435565b165f525f602052602060405f2054604051908152f35b346104005761059b61058f61146436610453565b95949094939193612816565b346104005761059b61058f61149761148736610453565b9691949095610572949394611dfc565b6114a46105858280611e8a565b613a8a565b34610400575f366003190112610400576115696114e57f00000000000000000000000000000000000000000000000000000000000000006153ac565b61150e7f0000000000000000000000000000000000000000000000000000000000000000615492565b602060405161151d82826106cc565b5f81528161157781830194601f1983013687376040519788977f0f00000000000000000000000000000000000000000000000000000000000000895260e0858a015260e08901906104c3565b9087820360408901526104c3565b914660608701523060808701525f60a087015285830360c087015251918281520192915f5b8281106115ab57505050500390f35b83518552869550938101939281019260010161159c565b34610400576040366003190112610400576115de600435610435565b60243567ffffffffffffffff811161040057610020903690600401611080565b346104005760603660031901126104005760043567ffffffffffffffff81116104005761162f903690600401610b81565b6024359061163c82610435565b60443567ffffffffffffffff81116104005761165c90369060040161079d565b906116656121a1565b507f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c6118255761059b9260017f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d6116bc611e1b565b926116c683613704565b6116d08484612d98565b9091945a6060880151886116e76060850185612a8f565b5f6003821161181d575b7fffffffff0000000000000000000000000000000000000000000000000000000016638dd7712f60e01b0361180457505061175561176961176e956020840151604051938492638dd7712f60e01b60208501526040602485015260648401906142af565b90604483015203601f1981018352826106cc565b611f33565b9290965b5f946060966001600160a01b0381166117d9575b50509560806117c0969701519761179b61070d565b988952602089015260408801526060870152608086015260a0850152151560c0840152565b60e08201526117cd614258565b60405191829182610e6f565b6117c097505f92965090829182602083519301915af19560806117fa61246a565b9795919796611786565b611815955090611769913691610767565b929096611772565b5081356116f1565b7f3ee5aeb5000000000000000000000000000000000000000000000000000000005f5260045ffd5b60203660031901126104005761002060043561186881610435565b6128a1565b34610400575f36600319011261040057335f525f602052600160405f2001805463ffffffff8160781c161561194c576118d56118c76102a0836118bb6118b661190f9660ff1690565b6128fa565b60781c63ffffffff1690565b65ffffffffffff4216612945565b82547fffffffffffffff000000000000ffffffffffffffffffffffffffffffffffff001665ffffffffffff60981b609883901b1617909255565b60405165ffffffffffff909116815233907ffa9b3c14cc825c412c9ed81b3ba365a5b459439403f18829e572ed53a4180f0a9080602081016103fb565b606460405162461bcd60e51b815260206004820152600a60248201527f6e6f74207374616b6564000000000000000000000000000000000000000000006044820152fd5b34610400576020366003190112610400576100205f8080806004356119b481610435565b6001600160a01b0360016119d8336001600160a01b03165f525f60205260405f2090565b0191611a66835493611a3e65ffffffffffff611a2a611a10611a04896001600160701b039060081c1690565b6001600160701b031690565b97611a1c891515612963565b60981c65ffffffffffff1690565b16611a368115156129ae565b4210156129f9565b80547fffffffffffffff000000000000000000000000000000000000000000000000ff169055565b604080516001600160a01b03831681526020810185905233917fb7c918e0e249f999e965cafeb6c664271b3f4317d296461500e71da39f0cbda391a2165af1611aad61246a565b50612a44565b346104005761059b611acc611ac736610e2c565b612b84565b604051918291602083526020830190610ede565b8015150361040057565b34610400576102203660031901126104005760043560243567ffffffffffffffff811161040057611b1f903690600401610b81565b3660431901916101c083126104005761014060405193611b3e85610656565b126104005761059b92611bed92611b536106fd565b611b5d6044610446565b81526064356020820152608435604082015260a435606082015260c435608082015260e43560a08201526101043560c0820152611b9b610124610446565b60e0820152610144356101008201526101643561012082015282526101843560208301526101a43560408301526101c43560608301526101e43560808301526102043592611be884611ae0565b612f73565b604080519384526020840192909252908201529081906060820190565b3461040057611c24611c1b366110ae565b929190916131ab565b9061059b604051928392151583526040602084015260408301906104c3565b3461040057611c65611c54366108db565b809291611c5f612649565b506126cb565b5f198201918211610ed95761059b91611c7d91612282565b51604051918291602083526020830190610ede565b15611c9957565b606460405162461bcd60e51b815260206004820152601a60248201527f6d757374207370656369667920756e7374616b652064656c61790000000000006044820152fd5b15611ce457565b606460405162461bcd60e51b815260206004820152601c60248201527f63616e6e6f7420646563726561736520756e7374616b652074696d65000000006044820152fd5b634e487b7160e01b5f52601160045260245ffd5b906113888201809211610ed957565b9060018201809211610ed957565b91908201809211610ed957565b15611d6d57565b606460405162461bcd60e51b815260206004820152601260248201527f6e6f207374616b652073706563696669656400000000000000000000000000006044820152fd5b15611db857565b606460405162461bcd60e51b815260206004820152600e60248201527f7374616b65206f766572666c6f770000000000000000000000000000000000006044820152fd5b60405190611e0982610677565b60606040835f81525f60208201520152565b60405190611e2882610656565b5f608083604051611e3881610693565b83815283602082015283604082015283606082015283838201528360a08201528360c08201528360e0820152836101008201528361012082015281528260208201528260408201528260608201520152565b90359061011e1981360301821215610400570190565b6040513d5f823e3d90fd5b6040517f09ccb880000000000000000000000000000000000000000000000000000000008152602081600481305afa908115611f20575f91611eeb575090565b90506020813d602011611f18575b81611f06602093836106cc565b81010312610400575161051581610435565b3d9150611ef9565b611ea0565b5f198114610ed95760010190565b9392909193825190606082015181519081612120575b505050505a9003608082015101925f935a91835191611f67836150e7565b92611f7c60e08201516001600160a01b031690565b91611f9260808801518203606084015190615107565b01925f926001600160a01b03811690816120375750505090611fbf6040949392516001600160a01b031690565b945b5a9003010102920151908282105f1461200557611fdd5f613f13565b7fdeadaa51000000000000000000000000000000000000000000000000000000005f5260205ffd5b826120299203906001600160a01b03165f525f60205260405f209081540180915590565b506120335f613f13565b9190565b9692825161204e575b505050906040939291611fc1565b919950949392505a986120605f613f13565b60a05a920195865191813b15610400578692835f8094896120b3604051988997889687947f7c627b2100000000000000000000000000000000000000000000000000000000865202908660048601613f22565b0393f19081612106575b506120e657610ddc6120cd613ed2565b6040519182916365c8fd4d60e01b835260048301613f54565b6040946120fc915a9003995a9003905190615107565b9192935f80612040565b806121145f61211a936106cc565b8061059f565b5f6120bd565b5f80949360206001600160a01b0383965116910192f115612144575f808080611f49565b610ddc61214f613ed2565b6040519182917f462c71b20000000000000000000000000000000000000000000000000000000083526020600484015260248301906104c3565b67ffffffffffffffff81116106725760051b60200190565b60405190610100820182811067ffffffffffffffff82111761067257604052606060e0835f81525f60208201525f60408201525f838201525f60808201525f60a08201525f60c08201520152565b906121f982612189565b61220660405191826106cc565b8281528092612217601f1991612189565b01905f5b82811061222757505050565b6020906122326121a1565b8282850101520161221b565b634e487b7160e01b5f52603260045260245ffd5b90821015612269576105159160051b810190611e8a565b61223e565b6040519061227d6020836106cc565b5f8252565b80518210156122695760209160051b010190565b61229f826121ef565b915f5b8181106122af5750505090565b6122ba818385612252565b9060205f6040516122cb83826106cc565b526122d46121a1565b507f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005c61182557600192837f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d612329611e1b565b9061233381613704565b8261233e8383612d98565b929091935a90866060810151916123586060820182612a8f565b5f60038211612438575b7fffffffff0000000000000000000000000000000000000000000000000000000016638dd7712f60e01b0361242057505061176985638dd7712f60e01b926117556123c598860151916040519586948501526040602485015260648401906142af565b93905b60806060960151966123d861070d565b978852870152604086015283850152608084015260a08301525f60c083015260e0820152612404614258565b61240e8287612282565b526124198186612282565b50016122a2565b612431965061176992503691610767565b93906123c8565b508135612362565b600319810191908211610ed957565b5f19810191908211610ed957565b91908203918211610ed957565b3d15612494573d9061247b8261074b565b9161248960405193846106cc565b82523d5f602084013e565b606090565b156124a057565b606460405162461bcd60e51b815260206004820152601260248201527f6661696c656420746f20776974686472617700000000000000000000000000006044820152fd5b610515906124f181614177565b6124f9613f9f565b916125d581359261250984610435565b6020830135908015612611576125c790935b61253161252b6060830183612a8f565b90615637565b90608081013560a08201359061255361252b60c08501359460e0810190612a8f565b93604051988997602089019b8c94919261010096939998979491996001600160a01b0361012088019b7f29a0bca4af4be3421398da00295e58e6d7de38cb492214754cb6a47507dd6f8e895216602088015260408701526060860152608085015260a084015260c083015260e08201520152565b03601f1981018352826106cc565b51902090604291604051917f19010000000000000000000000000000000000000000000000000000000000008352600283015260228201522090565b506125c76126226040850185612a8f565b9081604051918237209361251b565b6040519061263e826106b0565b5f6020838281520152565b6040519061265682610656565b8160405161266381610656565b5f81525f60208201525f60408201525f6060820152606060808201528152612689612631565b6020820152612696612631565b60408201526126a3612631565b60608201526080604051916126b7836106b0565b5f83526126c2612631565b60208401520152565b6126d482612189565b916126e260405193846106cc565b808352601f196126f182612189565b015f5b8181106127395750505f5b81811061270c5750505090565b8061271d611ac76001938587612252565b6127278287612282565b526127328186612282565b50016126ff565b602090612744612649565b828288010152016126f4565b908092918237015f815290565b1561276457565b60405162461bcd60e51b815260206004820152601860248201527f41413934206761732076616c756573206f766572666c6f7700000000000000006044820152606490fd5b90607382029180830460731490151715610ed957565b3561051581610435565b604051906127d86020836106cc565b5f808352366020840137565b906127ee8261074b565b6127fb60405191826106cc565b828152809261280c601f199161074b565b0190602036910137565b9061282991969594939296610572611dfc565b6001600160a01b0361283b8680611e8a565b61286460208801359161284d83610435565b612855611e1b565b9061285f81613704565b612d98565b50505016156128765761051594613cae565b50505050506128836127c9565b6040519061289082610677565b5f82525f6020830152604082015290565b7f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c460206001600160a01b036128ee34856001600160a01b03165f525f60205260405f209081540180915590565b936040519485521692a2565b1561290157565b606460405162461bcd60e51b815260206004820152601160248201527f616c726561647920756e7374616b696e670000000000000000000000000000006044820152fd5b9065ffffffffffff8091169116019065ffffffffffff8211610ed957565b1561296a57565b606460405162461bcd60e51b815260206004820152601460248201527f4e6f207374616b6520746f2077697468647261770000000000000000000000006044820152fd5b156129b557565b606460405162461bcd60e51b815260206004820152601d60248201527f6d7573742063616c6c20756e6c6f636b5374616b6528292066697273740000006044820152fd5b15612a0057565b606460405162461bcd60e51b815260206004820152601b60248201527f5374616b65207769746864726177616c206973206e6f742064756500000000006044820152fd5b15612a4b57565b606460405162461bcd60e51b815260206004820152601860248201527f6661696c656420746f207769746864726177207374616b6500000000000000006044820152fd5b903590601e1981360301821215610400570180359067ffffffffffffffff82116104005760200191813603831361040057565b906014116104005790601490565b909291928360141161040057831161040057601401916013190190565b909291928360341161040057831161040057603401916033190190565b356bffffffffffffffffffffffff19811692919060148210612b2a575050565b6bffffffffffffffffffffffff1960149290920360031b82901b16169150565b60405190612b57826106b0565b6004546001600160a01b03168252604051602083612b74836106b0565b6005548352600654828401520152565b612b8c612649565b50612b95611e1b565b90612b9f81613704565b612ba98282612d98565b50919092612bb78385614372565b612bd4612bcf60e0835101516001600160a01b031690565b61451c565b91612c02612bee612bcf84516001600160a01b0390511690565b91612bf7612631565b506040810190612a8f565b9060148210612cdd57612c24612c1e612c2a93612bcf93612ac2565b90612b0a565b60601c90565b916001600160a01b038616946080820151966060604084015193015192612c4f6106ee565b9889526020890152604088015260608701526080860152612c6e612b4a565b9380151580612cd2575b612ca0575b50612c866106ee565b948552602085015260408401526060830152608082015290565b909350612cac8161451c565b612cc6612cb761071d565b6001600160a01b039093168352565b6020820152925f612c7d565b506001811415612c78565b5050612c2a5f61451c565b15612cf05750565b60405190631101335b60e11b825260048201526040602482015280610ddc60448201604090601881527f41413934206761732076616c756573206f766572666c6f77000000000000000060208201520190565b15612d4b5750565b60408051631101335b60e11b815260048101929092526024820152601a60448201527f4141323520696e76616c6964206163636f756e74206e6f6e63650000000000006064820152608490fd5b9190915f915a93805192612dac8482613394565b612dc5604051612dbb836124e4565b6020850152604052565b604084015195612e0d5f6effffffffffffffffffffffffffffff8960c08901511760608901511760808901511760a08901511761010089015117610120890151171115612ce8565b612e58612e3b86610100604082015160608301510160808301510160a08301510160c0830151019101510290565b806040860152612e4f608085013560801c90565b9085855f613565565b96612e815f612e7c612e7189516001600160a01b031690565b60208a01519061420a565b612d43565b5a820311612f20576060946001600160a01b03612ea960e05a9301516001600160a01b031690565b16151580612f18575b612ee0575b60809291612ece61135761135260a0945a9061245d565b9660608601525a900391013501910152565b945061135295509060a0608092612ef68361455c565b50612ece611357612f0887865f6140bb565b9a90999450505050919250612eb7565b506001612eb2565b604051631101335b60e11b815280610ddc5f60048301608091815260406020820152601e60408201527f41413236206f76657220766572696669636174696f6e4761734c696d6974000060608201520190565b939092915f935a8251612f868184613394565b612f9f604051612f95856124e4565b6020870152604052565b604081015197612fe7816effffffffffffffffffffffffffffff8b60c08601511760608601511760808601511760a08601511761010086015117610120860151171115612ce8565b61303261301583610100604082015160608301510160808301510160a08301510160c0830151019101510290565b806040880152613029608087013560801c90565b90878785613565565b9861305682612e7c61304b86516001600160a01b031690565b60208701519061420a565b5a840311611373576060966001600160a01b0361307e60e05a9501516001600160a01b031690565b16151590816130de575b506130a6575b5060809291612ece61135761135260a0945a9061245d565b611352975060a091965091612ece6113576130cf878780976130c960809a61455c565b506140bb565b9a90999450505050919261308e565b90505f613088565b908060209392818452848401375f828201840152601f01601f1916010190565b6040906001600160a01b03610515959316815281602082015201916130e6565b908151811015612269570160200190565b919060408382031261040057825161314e81611ae0565b9260208101519067ffffffffffffffff8211610400570181601f820112156104005780519061317c8261074b565b9261318a60405194856106cc565b8284526020838301011161040057815f9260208093018386015e8301015290565b91925f936001600160a01b036060941691823b1561040057613229935f80946040518097819682957f850aaf620000000000000000000000000000000000000000000000000000000084526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001660048501613106565b0393f190816132e1575b5061090657505061324261246a565b9060048251106132d35761325e6132598351612440565b6127e4565b60045b83518110156132bd57806132a061327a60019387613126565b517fff000000000000000000000000000000000000000000000000000000000000001690565b6132b66132ac83612440565b915f1a9185613126565b5301613261565b5061090691925060208082518301019101613137565b90506132dd6127c9565b5f91565b806121145f6132ef936106cc565b5f613233565b610451336128a1565b1561330557565b606460405162461bcd60e51b815260206004820152601d60248201527f4141393320696e76616c6964207061796d6173746572416e64446174610000006044820152fd5b1561335057565b606460405162461bcd60e51b815260206004820152601660248201527f4141393820696e76616c6964207061796d6173746572000000000000000000006044820152fd5b61342b906133b16133a4826127bf565b6001600160a01b03168452565b602081013560208401526133de6080820135906fffffffffffffffffffffffffffffffff8260801c921690565b6060850152604084015260a081013560c084015261341560c0820135906fffffffffffffffffffffffffffffffff8260801c921690565b61010085015261012084015260e0810190612a8f565b8092919261343857505050565b613454816104519461344f603460e09510156132fe565b61457b565b60a08501526080840152916134736001600160a01b0384161515613349565b01906001600160a01b03169052565b92916134c6908251926001600160a01b0360e081865116956134b26134aa60408b018b612a8f565b90865f6145d9565b015116905f91159687613532575b5f6149c5565b926134ce5750565b5f6134d891614acc565b156134df57565b604051631101335b60e11b815280610ddc5f60048301608091815260406020820152601760408201527f41413231206469646e2774207061792070726566756e6400000000000000000060608201520190565b915061354e856001600160a01b03165f525f60205260405f2090565b54801561355e57505f5b916134c0565b5f03613558565b929094936135ab908351936001600160a01b0360e0818751169661359761358f60408d018d612a8f565b90868c6145d9565b015116905f91159889613613575b876149c5565b946135b557505050565b6135be91614acc565b156135c65750565b60408051631101335b60e11b815260048101929092526024820152601760448201527f41413231206469646e2774207061792070726566756e640000000000000000006064820152608490fd5b915061362f866001600160a01b03165f525f60205260405f2090565b548581111561364157505f5b916135a5565b850361363b565b915f5b828110156136fe5761365b611e1b565b908060051b85013591605e1986360301831215610400576136926001938701916136886105858480611e8a565b61285f8380611e8a565b505050602081016136b16136a5826127bf565b6001600160a01b031690565b156136f7575f91826136d16136c682946127bf565b926040810190612a8f565b91906136e260405180948193612750565b03925af1506136ef61246a565b505b0161364b565b50506136f1565b50915050565b613737906137156040820182612a8f565b9161372f81359161372583610435565b60e0810190612a8f565b939092614af1565b80516137405750565b610ddc90604051918291631101335b60e11b83525f60048401526040602484015260448301906104c3565b939291613791906001600160a01b036040931686526060602087015260608601906104c3565b930152565b939490946137a2611dfc565b5082156139ed576137e2926137b561226e565b50915f6137c45a886002614e86565b5a906040519687928392631efc84dd60e31b84528c6004850161376b565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215611f20575f945f936139cb575b508294809381156139a957505061383f909592919394955b85611d59565b806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016965b84613877888561245d565b1061397f575a61388688611d3c565b116139485791869593918995935f8c8b6138b86138af6138a9886138d89f611d59565b60011c90565b809b6002614e86565b835a936040519e8f9586948593631efc84dd60e31b85526004850161376b565b03925af1988915611f20575f905f9a613921575b501561390c575050506138fe8461244f565b95915b93909294959161386c565b9396509461391b919750611d4b565b94613901565b90506139409199503d805f833e61393881836106cc565b810190613137565b98905f6138ec565b7fe2c4d0be000000000000000000000000000000000000000000000000000000005f5260048290526024879052604483905260645ffd5b9650965050919550506139a1915061399561072c565b93845215156020840152565b604082015290565b965096505095505050506139a16139be61072c565b5f81529215156020840152565b9092506139e39194503d805f833e61393881836106cc565b939093915f613821565b90613a0292505a905f6137c45a886002614e86565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315611f20575f945f94613a68575b508394613a5081945a9061245d565b9481156139a957505061383f90959291939495613839565b909350613a809194503d805f833e61393881836106cc565b939093925f613a41565b93949094613a96611dfc565b508215613c1157613ab892613aa961226e565b50915f6137c45a886003614e86565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215611f20575f945f93613bef575b508294809381156139a9575050613b149095929193949585611d59565b806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016965b84613b4c888561245d565b1061397f575a613b5b88611d3c565b116139485791869593918995935f8c8b6138b8613b7e6138a988613b879f611d59565b809b6003614e86565b03925af1988915611f20575f905f9a613bd0575b5015613bbb57505050613bad8461244f565b95915b939092949591613b41565b93965094613bca919750611d4b565b94613bb0565b9050613be79199503d805f833e61393881836106cc565b98905f613b9b565b909250613c079194503d805f833e61393881836106cc565b939093915f613af7565b90613c2692505a905f6137c45a886003614e86565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315611f20575f945f94613c8c575b508394613c7481945a9061245d565b9481156139a9575050613b1490959291939495613839565b909350613ca49194503d805f833e61393881836106cc565b939093925f613c65565b93949094613cba611dfc565b508215613e3557613cdc92613ccd61226e565b50915f6137c45a886001614e86565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1918215611f20575f945f93613e13575b508294809381156139a9575050613d389095929193949585611d59565b806001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016965b84613d70888561245d565b1061397f575a613d7f88611d3c565b116139485791869593918995935f8c8b6138b8613da26138a988613dab9f611d59565b809b6001614e86565b03925af1988915611f20575f905f9a613df4575b5015613ddf57505050613dd18461244f565b95915b939092949591613d65565b93965094613dee919750611d4b565b94613dd4565b9050613e0b9199503d805f833e61393881836106cc565b98905f613dbf565b909250613e2b9194503d805f833e61393881836106cc565b939093915f613d1b565b90613e4a92505a905f6137c45a886001614e86565b0381836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1928315611f20575f945f94613eb0575b508394613e9881945a9061245d565b9481156139a9575050613d3890959291939495613839565b909350613ec89194503d805f833e61393881836106cc565b939093925f613e89565b3d6108008111613ef6575b604051906020818301016040528082525f602083013e90565b50610800613edd565b634e487b7160e01b5f52602160045260245ffd5b60031115613f1d57565b613eff565b90949392946003811015613f1d57606092613f4a9183526080602084015260808301906104c3565b9460408201520152565b9060a0610515925f815260606020820152601460608201527f4141353020706f73744f70207265766572746564000000000000000000000000608082015281604082015201906104c3565b6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016301480614092575b15613ffa577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815261408c60c0826106cc565b51902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613fd1565b9290925a9383516140de6001600160a01b0360e083015116604087015190614acc565b15614103579060806140f592015194859184615171565b9390945a900311610d685750565b60848360405190631101335b60e11b8252600482015260406024820152601e60448201527f41413331207061796d6173746572206465706f73697420746f6f206c6f7700006064820152fd5b909280926014946bffffffffffffffffffffffff199060601b1683528483013701015f815290565b6141846040820182612a8f565b90916141936113128385615266565b614203576141a36141a8916127bf565b6152a8565b91601482116141df57505060405161408c816125c76020820194856014916bffffffffffffffffffffffff199060601b1681520190565b8161408c926141ed92612ad0565b91906125c760405193849260208401968761414f565b5050505f90565b6001600160a01b03165f52600160205267ffffffffffffffff6142448260401c60405f20906001600160c01b03165f5260205260405f2090565b9182549261425184611f25565b9055161490565b5f7f9b779b17422d0df92223018b32b4d1fa46e071723d6817e2486d003becc55f005d565b9035601e198236030181121561040057016020813591019167ffffffffffffffff821161040057813603831361040057565b610515916142cd816142c084610446565b6001600160a01b03169052565b6020820135602082015261436361435761431e6143036142f0604087018761427d565b61012060408801526101208701916130e6565b614310606087018761427d565b9086830360608801526130e6565b6080850135608085015260a085013560a085015260c085013560c085015261434960e086018661427d565b9085830360e08701526130e6565b9261010081019061427d565b916101008185039101526130e6565b6143836001600160a01b039161554a565b91166144c9576144765761439e6001600160a01b039161554a565b9116614423576143aa57565b604051631101335b60e11b815280610ddc5f6004830160a091815260406020820152602160408201527f41413332207061796d61737465722065787069726564206f72206e6f7420647560608201527f650000000000000000000000000000000000000000000000000000000000000060808201520190565b604051631101335b60e11b815280610ddc5f60048301608091815260406020820152601460408201527f41413334207369676e6174757265206572726f7200000000000000000000000060608201520190565b604051631101335b60e11b815280610ddc5f60048301608091815260406020820152601760408201527f414132322065787069726564206f72206e6f742064756500000000000000000060608201520190565b604051631101335b60e11b815280610ddc5f60048301608091815260406020820152601460408201527f41413234207369676e6174757265206572726f7200000000000000000000000060608201520190565b906001600160a01b0361452d612631565b92165f525f60205263ffffffff600160405f2001546001600160701b038160081c16845260781c166020830152565b61456a9060e0810190612a8f565b602411610400576014013560801c90565b9091826014116104005781359183602411610400576014810135936034116104005760609290921c92608090811c9260240135901c90565b90816020910312610400575161051581610435565b9160206105159381815201916130e6565b929091816145e8575b50505050565b8251516001600160a01b0316936145ff8383615266565b6148bc57843b61486f5760148310614822575f602061461f6136a5611eab565b604087510151604051809481937f570e1a360000000000000000000000000000000000000000000000000000000083528261465e8b8b600484016145c8565b0393f1908115611f20575f916147f3575b506001600160a01b03811695861561479e576001600160a01b0316809603614749573b156146fc5750612c24612c1e7fd51a9c61267aa6196961883ecf5ff2da6619c37dac0fa92122513fb32c032d2d936146c993612ac2565b602083810151935160e00151604080516001600160a01b039485168152939091169183019190915290a35f8080806145e2565b60408051631101335b60e11b815260048101929092526024820152602060448201527f4141313520696e6974436f6465206d757374206372656174652073656e6465726064820152608490fd5b610ddc82604051918291631101335b60e11b835260048301608091815260406020820152602060408201527f4141313420696e6974436f6465206d7573742072657475726e2073656e64657260608201520190565b610ddc83604051918291631101335b60e11b835260048301608091815260406020820152601b60408201527f4141313320696e6974436f6465206661696c6564206f72204f4f47000000000060608201520190565b614815915060203d60201161481b575b61480d81836106cc565b8101906145b3565b5f61466f565b503d614803565b60408051631101335b60e11b815260048101929092526024820152601760448201527f4141393920696e6974436f646520746f6f20736d616c6c0000000000000000006064820152608490fd5b60408051631101335b60e11b815260048101929092526024820152601f60448201527f414131302073656e64657220616c726561647920636f6e7374727563746564006064820152608490fd5b5090601481116148cc5750505050565b806148e89160406148de6136a5611eab565b9551015193612ad0565b9190833b15610400575f809461492e96604051978896879586937fc09ad0d900000000000000000000000000000000000000000000000000000000855260048501613106565b0393f18015611f2057614944575b8080806145e2565b806121145f614952936106cc565b5f61493c565b614970604092959493956060835260608301906142af565b9460208201520152565b60a0906105159392815260606020820152600d60608201527f4141323320726576657274656400000000000000000000000000000000000000608082015281604082015201906104c3565b9291602095948692614a2f5f93614a216149e882516001600160a01b0390511690565b976040519b8c930151888401957f19822f7c00000000000000000000000000000000000000000000000000000000875260248501614958565b03601f1981018a52896106cc565b8285895193f15f519460203d03614ac4575b60405215614a4d575050565b3b614a9f5760408051631101335b60e11b815260048101929092526024820152601960448201527f41413230206163636f756e74206e6f74206465706c6f796564000000000000006064820152608490fd5b614aa7613ed2565b90610ddc6040519283926365c8fd4d60e01b84526004840161497a565b5f9150614a41565b6001600160a01b03165f525f60205260405f2090815481811061420357039055600190565b50929192159081614ba6575b50614b69576014811015614b16575b505061051561226e565b601411610400573560601c3b15614b2e575f80614b0c565b604051614b3c6040826106cc565b601b81527f41413330207061796d6173746572206e6f74206465706c6f7965640000000000602082015290565b5050604051614b796040826106cc565b601981527f41413230206163636f756e74206e6f74206465706c6f79656400000000000000602082015290565b90503b155f614afd565b6101208136031261040057614bc361073b565b90614bcd81610446565b825260208101356020830152604081013567ffffffffffffffff811161040057614bfa903690830161079d565b6040830152606081013567ffffffffffffffff811161040057614c20903690830161079d565b60608301526080810135608083015260a081013560a083015260c081013560c083015260e081013567ffffffffffffffff811161040057614c64903690830161079d565b60e08301526101008101359067ffffffffffffffff821161040057614c8b9136910161079d565b61010082015290565b60041115613f1d57565b916020936fffffffffffffffffffffffffffffffff198092603497946bffffffffffffffffffffffff199060601b1686521660148501521660248301528051928391018483015e01015f815290565b80516001600160a01b031682526105159160208201516020820152610100614d6e614d3e614d2c604086015161012060408701526101208601906104c3565b606086015185820360608701526104c3565b6080850151608085015260a085015160a085015260c085015160c085015260e085015184820360e08601526104c3565b920151906101008184039101526104c3565b60806101a0916101208151614d9e8682516001600160a01b03169052565b602081015160208701526040810151604087015260608101516060870152838101518487015260a081015160a087015260c081015160c0870152614df260e082015160e08801906001600160a01b03169052565b61010081015161010087015201516101208501526020810151610140850152604081015161016085015260608101516101808501520151910152565b614e5d614e5261020093969594965f84526102206020850152610220840190614ced565b956040830190614d80565b0152565b61020090614e5d614e525f949695968584526102206020850152610220840190614ced565b614e8e611e1b565b614ea0614e9b8480611e8a565b614bb0565b614ea983614c94565b6002831461500257614eba83614c94565b60038314614f7b57505080614ed0600192614c94565b14614f1a5760405162461bcd60e51b815260206004820152600c60248201527f496e76616c6964206d6f646500000000000000000000000000000000000000006044820152606490fd5b806125c7614f45614f3e614f33602061051596016127bf565b936040810190612a8f565b3691610767565b936040519485937f444034730000000000000000000000000000000000000000000000000000000060208601526024850161376b565b9150926fffffffffffffffffffffffffffffffff614fc2614fbb614fa28661051597611e8a565b608001356fffffffffffffffffffffffffffffffff1690565b9260801b90565b91161760808201526125c76040519384927fc579f76b00000000000000000000000000000000000000000000000000000000602085015260248401614e61565b9150926125c7906fffffffffffffffffffffffffffffffff198461508d61507f61503b615035613725856105159b611e8a565b9061457b565b9291905060609060e08a01956034875151116150c3575b5060405196879460801b16906fffffffffffffffffffffffffffffffff198960801b169060208601614c9e565b03601f1981018452836106cc565b526040519485937f21e60b3700000000000000000000000000000000000000000000000000000000602086015260248501614e2e565b6150e09192506150d961372582614f3e93611e8a565b8091612aed565b905f615052565b61012061010082015191015148018082105f14615102575090565b905090565b90619c40820181111561512057606491600a9103020490565b50505f90565b60a0906105159392815260606020820152600d60608201527f4141333320726576657274656400000000000000000000000000000000000000608082015281604082015201906104c3565b925f80919593929560405196826151e660e06020880151976151d78c6151c86040840151602083019c8d997f52b7512c000000000000000000000000000000000000000000000000000000008b5260248501614958565b038d601f19820190528d6106cc565b5101516001600160a01b031690565b895193f1933d91825f833e5193815160408301968751901591821561525a575b508115615248575b506152235750601f909101601f191601604052565b61522b613ed2565b90610ddc6040519283926365c8fd4d60e01b845260048401615126565b9050601f605f1985019101105f61520e565b6040141591505f615206565b906002116152a357356bffffffffffffffffffffffff19167f77020000000000000000000000000000000000000000000000000000000000001490565b505f90565b60175f80833c5f51907fef010000000000000000000000000000000000000000000000000000000000007fffffff000000000000000000000000000000000000000000000000000000000083160361531d5750612c2461530b6105159260181b90565b6bffffffffffffffffffffffff191690565b3b156153685760405162461bcd60e51b815260206004820152601860248201527f6e6f7420616e204549502d373730322064656c656761746500000000000000006044820152606490fd5b606460405162461bcd60e51b815260206004820152601260248201527f73656e64657220686173206e6f20636f646500000000000000000000000000006044820152fd5b60ff81146153bd5761051590615642565b506040515f6002548060011c91600182168015615488575b602084108114615474578385528492602084019190811561545b5750600114615406575b50610515925003826106cc565b60025f90815291507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace5b84831061544457506105159350015f6153f9565b805482840152859350602090920191600101615430565b60ff191682525061051593151560051b0190505f6153f9565b634e487b7160e01b5f52602260045260245ffd5b92607f16926153d5565b60ff81146154a35761051590615642565b506040515f6003548060011c91600182168015615540575b602084108114615474578385528492602084019190811561545b57506001146154eb5750610515925003826106cc565b60035f90815291507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b5b84831061552957506105159350015f6153f9565b805482840152859350602090920191600101615515565b92607f16926154bb565b8015615630575f6040805161555e81610677565b828152826020820152015265ffffffffffff8160a01c168015615623575b615604906155eb61559361559e6155938660d01c90565b65ffffffffffff1690565b926155c36001600160a01b036155b261072c565b971687906001600160a01b03169052565b6155d96020870194859065ffffffffffff169052565b65ffffffffffff166040860181905290565b4211908115615607575b5091516001600160a01b031690565b91565b5161561a915065ffffffffffff16615593565b4211155f6155f5565b5065ffffffffffff61557c565b505f905f90565b816040519182372090565b60ff811690601f8211615671576040519161565e6040846106cc565b6020808452838101919036833783525290565b7fb3512b0c000000000000000000000000000000000000000000000000000000005f5260045ffdfea2646970667358221220c3d99b3d2df7b47f9c873c088c44c42ab0cbffbcd1c4c2f71c607b417bd02cdf64736f6c634300081c0033", "sourceMap": "113:1074:31:-:0;;;;;;;238:27;;;;-1:-1:-1;;;;;238:27:31;;;;;;;;;;;;;;;;;;;;;;113:1074;;-1:-1:-1;;;;;;113:1074:31;-1:-1:-1;;;;;113:1074:31;;;;;;;;;;;;;517:29;;238:27;517:29;113:1074;;;;;;;238:27;113:1074;;;238:27;113:1074;;;;;238:27;113:1074;;;;;;;;;;;;;;", "linkReferences": {} }, "deployedBytecode": { "object": "0x60806040526004361015610011575f80fd5b5f3560e01c63c18f522614610024575f80fd5b346102ac5760403660031901126102ac5760043573ffffffffffffffffffffffffffffffffffffffff81168091036102ac5760243567ffffffffffffffff81116102ac57366023820112156102ac578060040135610081816102e6565b9161008f60405193846102c4565b8183526024602084019260051b820101903682116102ac5760248101925b82841061023557845185876100c1836102e6565b926100cf60405194856102c4565b8084526100de601f19916102e6565b015f5b8181106102245750505f5b82518110156101bd5760019060605f8061016973ffffffffffffffffffffffffffffffffffffffff825416610177610124878b610322565b5160405193849160208301947f850aaf6200000000000000000000000000000000000000000000000000000000865260248401526040604484015260648301906102fe565b03601f1981018452836102c4565b82885a935193f1156101a0575b61018e8287610322565b526101998186610322565b50016100ec565b503d604051906020818301016040528082525f602083013e610184565b836040518091602082016020835281518091526040830190602060408260051b8601019301915f905b8282106101f557505050500390f35b919360019193955060206102148192603f198a820301865288516102fe565b96019201920185949391926101e6565b8060606020809388010152016100e1565b833567ffffffffffffffff81116102ac578201366043820112156102ac5760248101359167ffffffffffffffff83116102b05760405161027f601f8501601f1916602001826102c4565b83815236604484860101116102ac575f6020858196604483970183860137830101528152019301926100ad565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b90601f8019910116810190811067ffffffffffffffff8211176102b057604052565b67ffffffffffffffff81116102b05760051b60200190565b805180835260209291819084018484015e5f828201840152601f01601f1916010190565b80518210156103365760209160051b010190565b634e487b7160e01b5f52603260045260245ffdfea2646970667358221220dc84ea55f5ff02b00bb4b3a117c79a5f9e82daa595d84e3e75900bbfa21d87c364736f6c634300081c0033", "sourceMap": "113:1074:31:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;113:1074:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;;743:13;;113:1074;775:3;113:1074;;758:15;;;;;113:1074;794:23;113:1074;;428:53;;113:1074;428:53;;113:1074;855:55;902:7;;;;:::i;:::-;;113:1074;;855:55;;;113:1074;855:55;;;113:1074;855:55;;113:1074;855:55;;428:53;113:1074;428:53;;;;;;;;;:::i;:::-;855:55;113:1074;;855:55;;;;;;:::i;:::-;966:9;;;368:118:13;;;;994:8:31;990:101;;775:3;1104:31;;;;:::i;:::-;;;;;;:::i;:::-;;113:1074;743:13;;990:101;1273:405:13;;113:1074:31;1273:405:13;;113:1074:31;1273:405:13;;;;113:1074:31;1273:405:13;;;;113:1074:31;;1273:405:13;;;990:101:31;;758:15;;113:1074;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;113:1074:31;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;113:1074:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;-1:-1:-1;113:1074:31;;;;;;;;-1:-1:-1;;113:1074:31;;;;:::o;428:53::-;113:1074;;428:53;;;;;;;;;;;;:::o;:::-;-1:-1:-1;;;428:53:31;;;;;;;", "linkReferences": {} }, "methodIdentifiers": { "simulateEntryPoint(address,bytes[])": "c18f5226" }, "rawMetadata": "{\"compiler\":{\"version\":\"0.8.28+commit.7893614a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"PimlicoSimulationV8Deployed\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"ep\",\"type\":\"address\"},{\"internalType\":\"bytes[]\",\"name\":\"data\",\"type\":\"bytes[]\"}],\"name\":\"simulateEntryPoint\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"\",\"type\":\"bytes[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/v08/PimlicoEntryPointSimulationsV8.sol\":\"PimlicoEntryPointSimulationsV8\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000},\"remappings\":[\":@openzeppelin/contracts-51/=lib/openzeppelin-contracts-51/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":account-abstraction-v6/=lib/account-abstraction-v6/contracts/\",\":account-abstraction-v7/=lib/account-abstraction-v7/contracts/\",\":account-abstraction-v8/=lib/account-abstraction-v8/contracts/\",\":account-abstraction/=lib/account-abstraction-v6/contracts/\",\":bulk/=lib/bulk/\",\":ds-test/=lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":halmos-cheatcodes/=lib/openzeppelin-contracts-51/lib/halmos-cheatcodes/src/\",\":lib/openzeppelin-contracts-51/=lib/openzeppelin-contracts-51/\",\":openzeppelin-contracts-51/=lib/openzeppelin-contracts-51/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\",\":p256-verifier/=lib/bulk/lib/p256-verifier/\",\":solady/=lib/solady/src/\"],\"viaIR\":true},\"sources\":{\"lib/account-abstraction-v8/contracts/core/Helpers.sol\":{\"keccak256\":\"0x42b948af5fa14a96149611595df1186800c7558b2de8762e4b45a7c45c16f65e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://737a7908131ece48a5df1faaa3d0be79c42792379c27f5615dae6aa14cd68c2f\",\"dweb:/ipfs/QmPAxGMDxuek7XWSUVfZpvYE8bustfsjTDVDK8hmE88e1f\"]},\"lib/account-abstraction-v8/contracts/core/NonceManager.sol\":{\"keccak256\":\"0x83fc7ce846063465d394b690c377beba26806e7564c77127d8a91b77ca64597c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7ed8c369c25b26518b1c8ca43c6c3dddf7ea07c073f2b92408743f61e655dc01\",\"dweb:/ipfs/QmZuWagAa78Wvi8RKD1J1E48YxxW8SJxB6aKeT3EFz72HE\"]},\"lib/account-abstraction-v8/contracts/core/StakeManager.sol\":{\"keccak256\":\"0x98b727e4093595bf57eb09d45a9a181a26fca46591fc58601e8eae894d8f931a\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://99d933ae3257d8aad0d32a60f021e37dd0dcedcd94edab905ec7523f34656ef2\",\"dweb:/ipfs/Qme8P8tZ37cexrxjTgrLoXXgbW1nqH8rQp5SLTW99aFsi5\"]},\"lib/account-abstraction-v8/contracts/core/UserOperationLib.sol\":{\"keccak256\":\"0x2d3450fa3906422b6fdbbe7f2a2a9e36d6f3751bfa9cd80af88befd6a5be78c1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://292a0ef5295d7f2016e99d2c228958f7f6de94f5bd9652d8696af15af0094a99\",\"dweb:/ipfs/QmVg4fhkZbUB7AopGcaVPmTdvChq7W9ga8fjrc3XaJNTM2\"]},\"lib/account-abstraction-v8/contracts/interfaces/IAccount.sol\":{\"keccak256\":\"0x1030b464b49ce80da46b5b6c9af357c2d526f308de61391db6a4ec767d33b864\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://671945f8e18e7305797312b5a209506be3c9bd1d9b9b561c1e8863bccfa61319\",\"dweb:/ipfs/QmVanLK5Aenrb7J94doiE1C9oHwo86jvv8NrpDeNHwvnii\"]},\"lib/account-abstraction-v8/contracts/interfaces/IAccountExecute.sol\":{\"keccak256\":\"0xc313afc1e1b6823126be317611c3a868dc69eb29df43c658464b7188890c40e0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f3c2a7fac3764500a7e57cf4b9a610b14125edc4d87371772ec1b3407e89eced\",\"dweb:/ipfs/Qmc2Au3LvywAB5uaEc8ttuGVRZU4Mrgn1XWyqDa2zxtCHp\"]},\"lib/account-abstraction-v8/contracts/interfaces/IAggregator.sol\":{\"keccak256\":\"0xdf580eafa015b81bde436d6a5468cc92b531ada84007cef885e923f6dfc5e8bf\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://99f0060626568619ac94d750eb4c0888d92ca5775a6bd957fef9847843835b77\",\"dweb:/ipfs/QmXJer3D9sTkEj3mmUDqpdqfGpe46Rn9G22nGrfZdP2wAT\"]},\"lib/account-abstraction-v8/contracts/interfaces/IEntryPoint.sol\":{\"keccak256\":\"0x3b0423737e810dd886183ed32cfed9b45edd315f5fb3e1076fc19f86791adc64\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c43081efaa2eda581b6249053281bb58cb0c4eeb6bf87efc55d95daaec2fc931\",\"dweb:/ipfs/QmXRN2JnyzWZNeFMHauTnDuc7jhxGY4ZkY37HTtjXKdC87\"]},\"lib/account-abstraction-v8/contracts/interfaces/INonceManager.sol\":{\"keccak256\":\"0xee493ae200b8c675bdc0da66f7ac6bb883ecea33672d7d0a95526b9eecdedf87\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://979784a0333ac4ef3cc53ab9323a4b7fa574d929bd511f0eed03d3b0370db22d\",\"dweb:/ipfs/QmeiciN5gs4upM6vfKvrRxWiDBUzMU4uJQRRkJajhim9gX\"]},\"lib/account-abstraction-v8/contracts/interfaces/IPaymaster.sol\":{\"keccak256\":\"0x6be37abc0760d60a41124e2e3f46185a0d3df48b32bd73174790981f76fbdae8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c144ba15a63883c7da41fc0729a46108f7d5487dbac2da0bde00aed67f5a2f00\",\"dweb:/ipfs/Qmdh7MzQmCQLh7wz719xMuG2yvMUkKDVwyN44P7pLofJfS\"]},\"lib/account-abstraction-v8/contracts/interfaces/ISenderCreator.sol\":{\"keccak256\":\"0x677f651d733162b80d1af7901e4f36469e362737a8353d1d0cc7bb94489e4ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d6905a80acd70b444ea230b5b582164cb99aaae518bf72c88f8292df31615570\",\"dweb:/ipfs/QmfTKTPwJYf9pmA3T5PE5cCG8GLLDrLaq3jQqMP3pVRL6w\"]},\"lib/account-abstraction-v8/contracts/interfaces/IStakeManager.sol\":{\"keccak256\":\"0xe48e904fcac02295aad07fbfa1c1d449a74bf44c04e432afef6f34d1ef726ae0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5882b635ea6f5da9ae411485975888431de571f85d4baf35e3db1a83c1f14b85\",\"dweb:/ipfs/QmVSTX36Byr48y8JBmz1hCTGAAyQdTYegQbsSqdRNuSQYz\"]},\"lib/account-abstraction-v8/contracts/interfaces/PackedUserOperation.sol\":{\"keccak256\":\"0xb15188e25e45fe73097e279675b6c0beccbd4133ead2260f8f0c4ba840046800\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5d14c1edd1e95d37c26e54bb34305e2cc9dedc46eb75ec91caeb777678e8ea79\",\"dweb:/ipfs/QmcCL2syVtV7W3XvYx3si84MPkbEJKqEN8hjFNhAPoDDhK\"]},\"lib/account-abstraction-v8/contracts/utils/Exec.sol\":{\"keccak256\":\"0x9c724ee22011193ea7f92d3c3c467ee6aa27139d3ddc225c7f1254d241e6ccdd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://96cc246fe944a212cbb9ba82065b2d380ec80954fcdb5d8d982b476bd5b72868\",\"dweb:/ipfs/QmZ25eFixEhukbfWGz5TBjsp7YohxUqD5i2rxhaghfvHt8\"]},\"lib/openzeppelin-contracts-51/contracts/interfaces/IERC5267.sol\":{\"keccak256\":\"0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a\",\"dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP\"]},\"lib/openzeppelin-contracts-51/contracts/utils/Panic.sol\":{\"keccak256\":\"0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a\",\"dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG\"]},\"lib/openzeppelin-contracts-51/contracts/utils/ReentrancyGuardTransient.sol\":{\"keccak256\":\"0x0973ab0079b78cd41338b71d163ca180a403a7097ffe18d0204521d5dc26beb3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://24c51b62705c4df37f82fbc1b3991e8e711dc16def0b7abb71ca61853420bd45\",\"dweb:/ipfs/QmPpXXxXugFQE5hejsXXNTH5QJPNJa9DNw5K8SXq7CWz44\"]},\"lib/openzeppelin-contracts-51/contracts/utils/ShortStrings.sol\":{\"keccak256\":\"0xc9971dd236eaf8b0c13dc242392e30b5c998f39bbddbbe92da63c17079b07ac5\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://194404b86f076901a9ee785ae3b4818d2d9c2916641c6eb7ea39fde2874cbd81\",\"dweb:/ipfs/QmWpxUw6ComUsoN8Q1ycWohE4qB8BCKWhLu5CAz3JmPL73\"]},\"lib/openzeppelin-contracts-51/contracts/utils/StorageSlot.sol\":{\"keccak256\":\"0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b\",\"dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM\"]},\"lib/openzeppelin-contracts-51/contracts/utils/Strings.sol\":{\"keccak256\":\"0x967996585c54704fd501d06738b0dc2463207929f6f9d8e5193770ca88035130\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c22d1c0daf76538514f93f524c1a6dca7bf5a97992537122ef3a7f8632fb3375\",\"dweb:/ipfs/QmYpjvU5LV3HsQRvoCzy9CHzQMWxEro4mHYGvcgWkCPSPw\"]},\"lib/openzeppelin-contracts-51/contracts/utils/TransientSlot.sol\":{\"keccak256\":\"0xb54649686c3eb4c036930cfdad1949fc13b8b9f1b586af31646e9eaa69529eda\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1ebb209def7de0f27f45cab753ee4147ee6a53e8ed9eb6ef92b3a279151e35e3\",\"dweb:/ipfs/Qmdt3X5PefKsRsMziwXfn7Q1afRwHxC8NjQwAGM1QeUCBr\"]},\"lib/openzeppelin-contracts-51/contracts/utils/cryptography/EIP712.sol\":{\"keccak256\":\"0xc7d50d58b73e2ea513cb734e69e36df6ab9d6c9c3693b1b23ecef974bec09ed6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4d647fa61a035f70388a30eda39239477c49c89f3e6eca4494c2d4fce92cbc10\",\"dweb:/ipfs/QmfTVm5cbShkjBrJX2zbxsUKB2my992PHcT81PVVWC5Pcu\"]},\"lib/openzeppelin-contracts-51/contracts/utils/cryptography/MessageHashUtils.sol\":{\"keccak256\":\"0x7ae21669569f436e69e064814c8b8986e1936972bdd9ad559b859f3abe7251ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ad6d66b7acf76e9ad8703c2a04c1e62c0394cba2ad8f0fbd98cf06b3d9dbb403\",\"dweb:/ipfs/QmSrJChs3MKqG6EFAi585MPJ1FyUvMxK66Bi7Pxm4e3qxU\"]},\"lib/openzeppelin-contracts-51/contracts/utils/math/Math.sol\":{\"keccak256\":\"0xc240f71206795cead02e49f999b3523414c230cec53423298d8457a7ce9d3ea4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7d5813c665d5ea1b73e27844800eb45831b9ba608b2a9216ead318e246fd5e8f\",\"dweb:/ipfs/QmNStA3tbwHZm1tXgdmY4wB3NbYKJtzYWADjKmDMhYHjyA\"]},\"lib/openzeppelin-contracts-51/contracts/utils/math/SafeCast.sol\":{\"keccak256\":\"0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8\",\"dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy\"]},\"lib/openzeppelin-contracts-51/contracts/utils/math/SignedMath.sol\":{\"keccak256\":\"0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03\",\"dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ\"]},\"src/v08/Eip7702Support.sol\":{\"keccak256\":\"0x97dcf8077b21e11a00d0f4f04dc057a776257170f036d3d154119e5f210e8683\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://bb756013b769ae894aa8a5286b4a53964325944b1ef20114bcb0c62deb30119b\",\"dweb:/ipfs/QmSKopMsb23HAB8Dt7ahjenh7oBBDcFWewqLr615dpuLcA\"]},\"src/v08/EntryPoint.sol\":{\"keccak256\":\"0xaca50ed5d1fe0df3d04aa1c6b4e34d92da6f7ced3d07e1d3b79d8262acaa2024\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://e95333938a20be142b795318e83a2a5a12a2eedaa96ff78bd311b2d931b0385b\",\"dweb:/ipfs/QmR3rMwM3XqB6j7p3oqoEVKWxZEZVoZeQjxET1fbcqS4dF\"]},\"src/v08/EntryPointSimulations.sol\":{\"keccak256\":\"0x140d95d92569f3c314239aba4995df3c7d4796e054e153ce3416c49caf6eaf23\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f30880633be2c73d4bcf2ea943ad24943aee5395de744b9033796c519ff096a8\",\"dweb:/ipfs/QmWdUVYEx5zDp68xMNY64EeCNGkap1ngpVknNi3NQh5DDH\"]},\"src/v08/IEntryPoint.sol\":{\"keccak256\":\"0x6ef27685ec58a67709de077a73667b0184aeb123643e7ef21ca9c95ad0122c71\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://66e69b2738ebf45d63e7607ef67293d897ce08a39f499b0cb0234733b9f1bac1\",\"dweb:/ipfs/QmdxBsJtzPiyWuGuxf3NFynrcLibXXrXf1CZ79HNaRnh7K\"]},\"src/v08/IEntryPointSimulations.sol\":{\"keccak256\":\"0x3486ad6d4e9ef01e1809b43b4bf3dace06e5733ee7bec11febd7309d4c605236\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://79b06eb4c98ecaebf7cf2c54322b7fe07b418c828169536c380820d4bdf56abb\",\"dweb:/ipfs/Qmdiagf27geeJ73wPkYCRErpoHUwgFLvq24aJ3HBD5rM8L\"]},\"src/v08/PimlicoEntryPointSimulationsV8.sol\":{\"keccak256\":\"0xfef9f91e0dc2d9fd10988835e394b95273f78423da15b5ebd41155e6fe37a1b7\",\"urls\":[\"bzz-raw://6b9b8c35cf99de1dd190ddee6e402d61ca5e1141359c7e68204a90f2df354ce1\",\"dweb:/ipfs/QmXqtDQygrfQmMfF1QqsSY2LsKJbPzi7BCvmqrQkWTYKJd\"]},\"src/v08/SenderCreator.sol\":{\"keccak256\":\"0x1e2fb812c446c6041c6d692bbdf1228ad60eec9779ffd7b318e680bb241d71d5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://34db2b82ee8e7140298bcbd1dcabf06b3bbcb60fd597f81b5b9e53b25c30b447\",\"dweb:/ipfs/QmT4WcNu6NCaxxJ6FWGFpjadfXsMPVhgLMQfGWsW9rWZAZ\"]}},\"version\":1}", "metadata": { "compiler": { "version": "0.8.28+commit.7893614a" }, "language": "Solidity", "output": { "abi": [{ "inputs": [], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "type": "event", "name": "PimlicoSimulationV8Deployed", "anonymous": false }, { "inputs": [{ "internalType": "address payable", "name": "ep", "type": "address" }, { "internalType": "bytes[]", "name": "data", "type": "bytes[]" }], "stateMutability": "nonpayable", "type": "function", "name": "simulateEntryPoint", "outputs": [{ "internalType": "bytes[]", "name": "", "type": "bytes[]" }] }], "devdoc": { "kind": "dev", "methods": {}, "version": 1 }, "userdoc": { "kind": "user", "methods": {}, "version": 1 } }, "settings": { "remappings": ["@openzeppelin/contracts-51/=lib/openzeppelin-contracts-51/contracts/", "@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/", "account-abstraction-v6/=lib/account-abstraction-v6/contracts/", "account-abstraction-v7/=lib/account-abstraction-v7/contracts/", "account-abstraction-v8/=lib/account-abstraction-v8/contracts/", "account-abstraction/=lib/account-abstraction-v6/contracts/", "bulk/=lib/bulk/", "ds-test/=lib/forge-std/lib/ds-test/src/", "erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/", "forge-std/=lib/forge-std/src/", "halmos-cheatcodes/=lib/openzeppelin-contracts-51/lib/halmos-cheatcodes/src/", "lib/openzeppelin-contracts-51/=lib/openzeppelin-contracts-51/", "openzeppelin-contracts-51/=lib/openzeppelin-contracts-51/", "openzeppelin-contracts/=lib/openzeppelin-contracts/", "p256-verifier/=lib/bulk/lib/p256-verifier/", "solady/=lib/solady/src/"], "optimizer": { "enabled": true, "runs": 1000 }, "metadata": { "bytecodeHash": "ipfs" }, "compilationTarget": { "src/v08/PimlicoEntryPointSimulationsV8.sol": "PimlicoEntryPointSimulationsV8" }, "evmVersion": "cancun", "libraries": {}, "viaIR": true }, "sources": { "lib/account-abstraction-v8/contracts/core/Helpers.sol": { "keccak256": "0x42b948af5fa14a96149611595df1186800c7558b2de8762e4b45a7c45c16f65e", "urls": ["bzz-raw://737a7908131ece48a5df1faaa3d0be79c42792379c27f5615dae6aa14cd68c2f", "dweb:/ipfs/QmPAxGMDxuek7XWSUVfZpvYE8bustfsjTDVDK8hmE88e1f"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/core/NonceManager.sol": { "keccak256": "0x83fc7ce846063465d394b690c377beba26806e7564c77127d8a91b77ca64597c", "urls": ["bzz-raw://7ed8c369c25b26518b1c8ca43c6c3dddf7ea07c073f2b92408743f61e655dc01", "dweb:/ipfs/QmZuWagAa78Wvi8RKD1J1E48YxxW8SJxB6aKeT3EFz72HE"], "license": "GPL-3.0" }, "lib/account-abstraction-v8/contracts/core/StakeManager.sol": { "keccak256": "0x98b727e4093595bf57eb09d45a9a181a26fca46591fc58601e8eae894d8f931a", "urls": ["bzz-raw://99d933ae3257d8aad0d32a60f021e37dd0dcedcd94edab905ec7523f34656ef2", "dweb:/ipfs/Qme8P8tZ37cexrxjTgrLoXXgbW1nqH8rQp5SLTW99aFsi5"], "license": "GPL-3.0" }, "lib/account-abstraction-v8/contracts/core/UserOperationLib.sol": { "keccak256": "0x2d3450fa3906422b6fdbbe7f2a2a9e36d6f3751bfa9cd80af88befd6a5be78c1", "urls": ["bzz-raw://292a0ef5295d7f2016e99d2c228958f7f6de94f5bd9652d8696af15af0094a99", "dweb:/ipfs/QmVg4fhkZbUB7AopGcaVPmTdvChq7W9ga8fjrc3XaJNTM2"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/IAccount.sol": { "keccak256": "0x1030b464b49ce80da46b5b6c9af357c2d526f308de61391db6a4ec767d33b864", "urls": ["bzz-raw://671945f8e18e7305797312b5a209506be3c9bd1d9b9b561c1e8863bccfa61319", "dweb:/ipfs/QmVanLK5Aenrb7J94doiE1C9oHwo86jvv8NrpDeNHwvnii"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/IAccountExecute.sol": { "keccak256": "0xc313afc1e1b6823126be317611c3a868dc69eb29df43c658464b7188890c40e0", "urls": ["bzz-raw://f3c2a7fac3764500a7e57cf4b9a610b14125edc4d87371772ec1b3407e89eced", "dweb:/ipfs/Qmc2Au3LvywAB5uaEc8ttuGVRZU4Mrgn1XWyqDa2zxtCHp"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/IAggregator.sol": { "keccak256": "0xdf580eafa015b81bde436d6a5468cc92b531ada84007cef885e923f6dfc5e8bf", "urls": ["bzz-raw://99f0060626568619ac94d750eb4c0888d92ca5775a6bd957fef9847843835b77", "dweb:/ipfs/QmXJer3D9sTkEj3mmUDqpdqfGpe46Rn9G22nGrfZdP2wAT"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/IEntryPoint.sol": { "keccak256": "0x3b0423737e810dd886183ed32cfed9b45edd315f5fb3e1076fc19f86791adc64", "urls": ["bzz-raw://c43081efaa2eda581b6249053281bb58cb0c4eeb6bf87efc55d95daaec2fc931", "dweb:/ipfs/QmXRN2JnyzWZNeFMHauTnDuc7jhxGY4ZkY37HTtjXKdC87"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/INonceManager.sol": { "keccak256": "0xee493ae200b8c675bdc0da66f7ac6bb883ecea33672d7d0a95526b9eecdedf87", "urls": ["bzz-raw://979784a0333ac4ef3cc53ab9323a4b7fa574d929bd511f0eed03d3b0370db22d", "dweb:/ipfs/QmeiciN5gs4upM6vfKvrRxWiDBUzMU4uJQRRkJajhim9gX"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/IPaymaster.sol": { "keccak256": "0x6be37abc0760d60a41124e2e3f46185a0d3df48b32bd73174790981f76fbdae8", "urls": ["bzz-raw://c144ba15a63883c7da41fc0729a46108f7d5487dbac2da0bde00aed67f5a2f00", "dweb:/ipfs/Qmdh7MzQmCQLh7wz719xMuG2yvMUkKDVwyN44P7pLofJfS"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/ISenderCreator.sol": { "keccak256": "0x677f651d733162b80d1af7901e4f36469e362737a8353d1d0cc7bb94489e4ba4", "urls": ["bzz-raw://d6905a80acd70b444ea230b5b582164cb99aaae518bf72c88f8292df31615570", "dweb:/ipfs/QmfTKTPwJYf9pmA3T5PE5cCG8GLLDrLaq3jQqMP3pVRL6w"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/IStakeManager.sol": { "keccak256": "0xe48e904fcac02295aad07fbfa1c1d449a74bf44c04e432afef6f34d1ef726ae0", "urls": ["bzz-raw://5882b635ea6f5da9ae411485975888431de571f85d4baf35e3db1a83c1f14b85", "dweb:/ipfs/QmVSTX36Byr48y8JBmz1hCTGAAyQdTYegQbsSqdRNuSQYz"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/interfaces/PackedUserOperation.sol": { "keccak256": "0xb15188e25e45fe73097e279675b6c0beccbd4133ead2260f8f0c4ba840046800", "urls": ["bzz-raw://5d14c1edd1e95d37c26e54bb34305e2cc9dedc46eb75ec91caeb777678e8ea79", "dweb:/ipfs/QmcCL2syVtV7W3XvYx3si84MPkbEJKqEN8hjFNhAPoDDhK"], "license": "MIT" }, "lib/account-abstraction-v8/contracts/utils/Exec.sol": { "keccak256": "0x9c724ee22011193ea7f92d3c3c467ee6aa27139d3ddc225c7f1254d241e6ccdd", "urls": ["bzz-raw://96cc246fe944a212cbb9ba82065b2d380ec80954fcdb5d8d982b476bd5b72868", "dweb:/ipfs/QmZ25eFixEhukbfWGz5TBjsp7YohxUqD5i2rxhaghfvHt8"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/interfaces/IERC5267.sol": { "keccak256": "0x92aa1df62dc3d33f1656d63bede0923e0df0b706ad4137c8b10b0a8fe549fd92", "urls": ["bzz-raw://c5c0f29195ad64cbe556da8e257dac8f05f78c53f90323c0d2accf8e6922d33a", "dweb:/ipfs/QmQ61TED8uaCZwcbh8KkgRSsCav7x7HbcGHwHts3U4DmUP"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/Panic.sol": { "keccak256": "0xf7fe324703a64fc51702311dc51562d5cb1497734f074e4f483bfb6717572d7a", "urls": ["bzz-raw://c6a5ff4f9fd8649b7ee20800b7fa387d3465bd77cf20c2d1068cd5c98e1ed57a", "dweb:/ipfs/QmVSaVJf9FXFhdYEYeCEfjMVHrxDh5qL4CGkxdMWpQCrqG"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/ReentrancyGuardTransient.sol": { "keccak256": "0x0973ab0079b78cd41338b71d163ca180a403a7097ffe18d0204521d5dc26beb3", "urls": ["bzz-raw://24c51b62705c4df37f82fbc1b3991e8e711dc16def0b7abb71ca61853420bd45", "dweb:/ipfs/QmPpXXxXugFQE5hejsXXNTH5QJPNJa9DNw5K8SXq7CWz44"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/ShortStrings.sol": { "keccak256": "0xc9971dd236eaf8b0c13dc242392e30b5c998f39bbddbbe92da63c17079b07ac5", "urls": ["bzz-raw://194404b86f076901a9ee785ae3b4818d2d9c2916641c6eb7ea39fde2874cbd81", "dweb:/ipfs/QmWpxUw6ComUsoN8Q1ycWohE4qB8BCKWhLu5CAz3JmPL73"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/StorageSlot.sol": { "keccak256": "0xcf74f855663ce2ae00ed8352666b7935f6cddea2932fdf2c3ecd30a9b1cd0e97", "urls": ["bzz-raw://9f660b1f351b757dfe01438e59888f31f33ded3afcf5cb5b0d9bf9aa6f320a8b", "dweb:/ipfs/QmarDJ5hZEgBtCmmrVzEZWjub9769eD686jmzb2XpSU1cM"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/Strings.sol": { "keccak256": "0x967996585c54704fd501d06738b0dc2463207929f6f9d8e5193770ca88035130", "urls": ["bzz-raw://c22d1c0daf76538514f93f524c1a6dca7bf5a97992537122ef3a7f8632fb3375", "dweb:/ipfs/QmYpjvU5LV3HsQRvoCzy9CHzQMWxEro4mHYGvcgWkCPSPw"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/TransientSlot.sol": { "keccak256": "0xb54649686c3eb4c036930cfdad1949fc13b8b9f1b586af31646e9eaa69529eda", "urls": ["bzz-raw://1ebb209def7de0f27f45cab753ee4147ee6a53e8ed9eb6ef92b3a279151e35e3", "dweb:/ipfs/Qmdt3X5PefKsRsMziwXfn7Q1afRwHxC8NjQwAGM1QeUCBr"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/cryptography/EIP712.sol": { "keccak256": "0xc7d50d58b73e2ea513cb734e69e36df6ab9d6c9c3693b1b23ecef974bec09ed6", "urls": ["bzz-raw://4d647fa61a035f70388a30eda39239477c49c89f3e6eca4494c2d4fce92cbc10", "dweb:/ipfs/QmfTVm5cbShkjBrJX2zbxsUKB2my992PHcT81PVVWC5Pcu"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/cryptography/MessageHashUtils.sol": { "keccak256": "0x7ae21669569f436e69e064814c8b8986e1936972bdd9ad559b859f3abe7251ae", "urls": ["bzz-raw://ad6d66b7acf76e9ad8703c2a04c1e62c0394cba2ad8f0fbd98cf06b3d9dbb403", "dweb:/ipfs/QmSrJChs3MKqG6EFAi585MPJ1FyUvMxK66Bi7Pxm4e3qxU"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/math/Math.sol": { "keccak256": "0xc240f71206795cead02e49f999b3523414c230cec53423298d8457a7ce9d3ea4", "urls": ["bzz-raw://7d5813c665d5ea1b73e27844800eb45831b9ba608b2a9216ead318e246fd5e8f", "dweb:/ipfs/QmNStA3tbwHZm1tXgdmY4wB3NbYKJtzYWADjKmDMhYHjyA"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/math/SafeCast.sol": { "keccak256": "0x195533c86d0ef72bcc06456a4f66a9b941f38eb403739b00f21fd7c1abd1ae54", "urls": ["bzz-raw://b1d578337048cad08c1c03041cca5978eff5428aa130c781b271ad9e5566e1f8", "dweb:/ipfs/QmPFKL2r9CBsMwmUqqdcFPfHZB2qcs9g1HDrPxzWSxomvy"], "license": "MIT" }, "lib/openzeppelin-contracts-51/contracts/utils/math/SignedMath.sol": { "keccak256": "0xb1970fac7b64e6c09611e6691791e848d5e3fe410fa5899e7df2e0afd77a99e3", "urls": ["bzz-raw://db5fbb3dddd8b7047465b62575d96231ba8a2774d37fb4737fbf23340fabbb03", "dweb:/ipfs/QmVUSvooZKEdEdap619tcJjTLcAuH6QBdZqAzWwnAXZAWJ"], "license": "MIT" }, "src/v08/Eip7702Support.sol": { "keccak256": "0x97dcf8077b21e11a00d0f4f04dc057a776257170f036d3d154119e5f210e8683", "urls": ["bzz-raw://bb756013b769ae894aa8a5286b4a53964325944b1ef20114bcb0c62deb30119b", "dweb:/ipfs/QmSKopMsb23HAB8Dt7ahjenh7oBBDcFWewqLr615dpuLcA"], "license": "MIT" }, "src/v08/EntryPoint.sol": { "keccak256": "0xaca50ed5d1fe0df3d04aa1c6b4e34d92da6f7ced3d07e1d3b79d8262acaa2024", "urls": ["bzz-raw://e95333938a20be142b795318e83a2a5a12a2eedaa96ff78bd311b2d931b0385b", "dweb:/ipfs/QmR3rMwM3XqB6j7p3oqoEVKWxZEZVoZeQjxET1fbcqS4dF"], "license": "GPL-3.0" }, "src/v08/EntryPointSimulations.sol": { "keccak256": "0x140d95d92569f3c314239aba4995df3c7d4796e054e153ce3416c49caf6eaf23", "urls": ["bzz-raw://f30880633be2c73d4bcf2ea943ad24943aee5395de744b9033796c519ff096a8", "dweb:/ipfs/QmWdUVYEx5zDp68xMNY64EeCNGkap1ngpVknNi3NQh5DDH"], "license": "GPL-3.0" }, "src/v08/IEntryPoint.sol": { "keccak256": "0x6ef27685ec58a67709de077a73667b0184aeb123643e7ef21ca9c95ad0122c71", "urls": ["bzz-raw://66e69b2738ebf45d63e7607ef67293d897ce08a39f499b0cb0234733b9f1bac1", "dweb:/ipfs/QmdxBsJtzPiyWuGuxf3NFynrcLibXXrXf1CZ79HNaRnh7K"], "license": "MIT" }, "src/v08/IEntryPointSimulations.sol": { "keccak256": "0x3486ad6d4e9ef01e1809b43b4bf3dace06e5733ee7bec11febd7309d4c605236", "urls": ["bzz-raw://79b06eb4c98ecaebf7cf2c54322b7fe07b418c828169536c380820d4bdf56abb", "dweb:/ipfs/Qmdiagf27geeJ73wPkYCRErpoHUwgFLvq24aJ3HBD5rM8L"], "license": "GPL-3.0" }, "src/v08/PimlicoEntryPointSimulationsV8.sol": { "keccak256": "0xfef9f91e0dc2d9fd10988835e394b95273f78423da15b5ebd41155e6fe37a1b7", "urls": ["bzz-raw://6b9b8c35cf99de1dd190ddee6e402d61ca5e1141359c7e68204a90f2df354ce1", "dweb:/ipfs/QmXqtDQygrfQmMfF1QqsSY2LsKJbPzi7BCvmqrQkWTYKJd"], "license": null }, "src/v08/SenderCreator.sol": { "keccak256": "0x1e2fb812c446c6041c6d692bbdf1228ad60eec9779ffd7b318e680bb241d71d5", "urls": ["bzz-raw://34db2b82ee8e7140298bcbd1dcabf06b3bbcb60fd597f81b5b9e53b25c30b447", "dweb:/ipfs/QmT4WcNu6NCaxxJ6FWGFpjadfXsMPVhgLMQfGWsW9rWZAZ"], "license": "GPL-3.0" } }, "version": 1 }, "id": 31 }
@@ -1,29 +0,0 @@
1
- import { InterfaceReputationManager } from "../mempool/index.js";
2
- import { RejectedUserOp, UserOpInfo, UserOperationBundle } from "../types/index.js";
3
- import { Account } from "viem";
4
- import { AltoConfig } from "../createConfig.js";
5
- import { Logger } from "../utils/index.js";
6
- export type FilterOpsAndEstimateGasResult = {
7
- status: "success";
8
- userOpsToBundle: UserOpInfo[];
9
- rejectedUserOps: RejectedUserOp[];
10
- gasLimit: bigint;
11
- } | {
12
- status: "unhandled_failure";
13
- rejectedUserOps: RejectedUserOp[];
14
- } | {
15
- status: "all_ops_failed_simulation";
16
- rejectedUserOps: RejectedUserOp[];
17
- };
18
- export declare function filterOpsAndEstimateGas({ executor, userOpBundle, codeOverrideSupport, nonce, maxFeePerGas, maxPriorityFeePerGas, reputationManager, config, logger }: {
19
- executor: Account;
20
- userOpBundle: UserOperationBundle;
21
- codeOverrideSupport: boolean;
22
- nonce: number;
23
- maxFeePerGas: bigint;
24
- maxPriorityFeePerGas: bigint;
25
- reputationManager: InterfaceReputationManager;
26
- config: AltoConfig;
27
- logger: Logger;
28
- }): Promise<FilterOpsAndEstimateGasResult>;
29
- //# sourceMappingURL=filterOpsAndEStimateGas.d.ts.map
@@ -1,198 +0,0 @@
1
- import { EntryPointV06Abi, EntryPointV07Abi, failedOpErrorSchema, failedOpWithRevertErrorSchema } from "../types/index.js";
2
- import { ContractFunctionRevertedError, EstimateGasExecutionError, FeeCapTooLowError, decodeErrorResult, getContract } from "viem";
3
- import { getRevertErrorData, parseViemError, scaleBigIntByPercent } from "../utils/index.js";
4
- import { z } from "zod";
5
- import { packUserOps } from "./utils.js";
6
- import * as sentry from "@sentry/node";
7
- import { getEip7702DelegationOverrides } from "../utils/eip7702.js";
8
- function rejectUserOp(userOpInfo, reason) {
9
- return {
10
- ...userOpInfo,
11
- reason
12
- };
13
- }
14
- function rejectUserOps(userOpInfos, reason) {
15
- return userOpInfos.map((userOpInfo) => rejectUserOp(userOpInfo, reason));
16
- }
17
- // Attempt to create a handleOps bundle + estimate bundling tx gas.
18
- export async function filterOpsAndEstimateGas({ executor, userOpBundle, codeOverrideSupport, nonce, maxFeePerGas, maxPriorityFeePerGas, reputationManager, config, logger }) {
19
- const { userOps, version, entryPoint } = userOpBundle;
20
- let { fixedGasLimitForEstimation, legacyTransactions, blockTagSupport, publicClient, walletClient } = config;
21
- const isUserOpV06 = version === "0.6";
22
- const epContract = getContract({
23
- abi: isUserOpV06 ? EntryPointV06Abi : EntryPointV07Abi,
24
- address: entryPoint,
25
- client: {
26
- public: publicClient,
27
- wallet: walletClient
28
- }
29
- });
30
- // Keep track of invalid and valid ops
31
- const userOpsToBundle = [...userOps];
32
- const rejectedUserOps = [];
33
- // Prepare bundling tx params
34
- const gasOptions = legacyTransactions
35
- ? { gasPrice: maxFeePerGas }
36
- : { maxFeePerGas, maxPriorityFeePerGas };
37
- const blockTag = blockTagSupport ? "latest" : undefined;
38
- let gasLimit;
39
- let retriesLeft = 5;
40
- while (userOpsToBundle.length > 0) {
41
- if (retriesLeft === 0) {
42
- logger.error("max retries reached");
43
- return {
44
- status: "unhandled_failure",
45
- rejectedUserOps: [
46
- ...rejectedUserOps,
47
- ...rejectUserOps(userOpsToBundle, "INTERNAL FAILURE")
48
- ]
49
- };
50
- }
51
- try {
52
- const packedUserOps = packUserOps(userOpsToBundle.map(({ userOp }) => userOp));
53
- let stateOverride = undefined;
54
- if (codeOverrideSupport) {
55
- stateOverride = getEip7702DelegationOverrides(userOpsToBundle.map(({ userOp }) => userOp));
56
- }
57
- gasLimit = await epContract.estimateGas.handleOps(
58
- // @ts-ignore - ep is set correctly for opsToSend, but typescript doesn't know that
59
- [packedUserOps, executor.address], {
60
- account: executor,
61
- nonce: nonce,
62
- blockTag,
63
- ...(fixedGasLimitForEstimation && {
64
- gas: fixedGasLimitForEstimation
65
- }),
66
- ...(stateOverride && {
67
- stateOverride
68
- }),
69
- ...gasOptions
70
- });
71
- // Add gas overhead for EIP-7702 authorizations
72
- const eip7702AuthCount = userOpsToBundle.filter(({ userOp }) => userOp.eip7702Auth).length;
73
- gasLimit += BigInt(eip7702AuthCount) * 60000n;
74
- return {
75
- status: "success",
76
- userOpsToBundle,
77
- rejectedUserOps,
78
- gasLimit
79
- };
80
- }
81
- catch (err) {
82
- logger.error({ err, blockTag }, "handling error estimating gas");
83
- const e = parseViemError(err);
84
- if (e instanceof ContractFunctionRevertedError) {
85
- let parseResult = z
86
- .union([failedOpErrorSchema, failedOpWithRevertErrorSchema])
87
- .safeParse(e.data);
88
- if (!parseResult.success) {
89
- sentry.captureException(err);
90
- logger.error({
91
- error: parseResult.error
92
- }, "failed to parse failedOpError");
93
- return {
94
- status: "unhandled_failure",
95
- rejectedUserOps: [
96
- ...rejectedUserOps,
97
- ...rejectUserOps(userOpsToBundle, "INTERNAL FAILURE")
98
- ]
99
- };
100
- }
101
- const errorData = parseResult.data.args;
102
- if (errorData) {
103
- if (errorData.reason.includes("AA95 out of gas")) {
104
- fixedGasLimitForEstimation = scaleBigIntByPercent(fixedGasLimitForEstimation || BigInt(30_000_000), 110n);
105
- retriesLeft--;
106
- continue;
107
- }
108
- const failingOpIndex = Number(errorData.opIndex);
109
- const failingUserOp = userOpsToBundle[failingOpIndex];
110
- userOpsToBundle.splice(failingOpIndex, 1);
111
- reputationManager.crashedHandleOps(failingUserOp.userOp, epContract.address, errorData.reason);
112
- const innerError = errorData?.inner;
113
- const revertReason = innerError
114
- ? `${errorData.reason} - ${innerError}`
115
- : errorData.reason;
116
- rejectedUserOps.push(rejectUserOp(failingUserOp, revertReason));
117
- }
118
- }
119
- else if (e instanceof EstimateGasExecutionError ||
120
- err instanceof EstimateGasExecutionError) {
121
- if (e?.cause instanceof FeeCapTooLowError) {
122
- logger.info({ error: e.shortMessage }, "error estimating gas due to max fee < basefee");
123
- if ("gasPrice" in gasOptions) {
124
- gasOptions.gasPrice = scaleBigIntByPercent(gasOptions.gasPrice || maxFeePerGas, 125n);
125
- }
126
- if ("maxFeePerGas" in gasOptions) {
127
- gasOptions.maxFeePerGas = scaleBigIntByPercent(gasOptions.maxFeePerGas || maxFeePerGas, 125n);
128
- }
129
- if ("maxPriorityFeePerGas" in gasOptions) {
130
- gasOptions.maxPriorityFeePerGas = scaleBigIntByPercent(gasOptions.maxPriorityFeePerGas ||
131
- maxPriorityFeePerGas, 125n);
132
- }
133
- retriesLeft--;
134
- continue;
135
- }
136
- try {
137
- let errorHexData = "0x";
138
- if (err instanceof EstimateGasExecutionError) {
139
- errorHexData = getRevertErrorData(err);
140
- }
141
- else {
142
- errorHexData = e?.details.split("Reverted ")[1];
143
- }
144
- const errorResult = decodeErrorResult({
145
- abi: isUserOpV06 ? EntryPointV06Abi : EntryPointV07Abi,
146
- data: errorHexData
147
- });
148
- if (errorResult.errorName !== "FailedOpWithRevert" &&
149
- errorResult.errorName !== "FailedOp") {
150
- logger.error({
151
- errorName: errorResult.errorName,
152
- args: errorResult.args
153
- }, "unexpected error result");
154
- return {
155
- status: "unhandled_failure",
156
- rejectedUserOps: [
157
- ...rejectedUserOps,
158
- ...rejectUserOps(userOpsToBundle, "INTERNAL FAILURE")
159
- ]
160
- };
161
- }
162
- const [opIndex, reason] = errorResult.args;
163
- const failedOpIndex = Number(opIndex);
164
- const failingUserOp = userOpsToBundle[failedOpIndex];
165
- rejectedUserOps.push(rejectUserOp(failingUserOp, reason));
166
- userOpsToBundle.splice(failedOpIndex, 1);
167
- continue;
168
- }
169
- catch (e) {
170
- logger.error({ error: JSON.stringify(err) }, "failed to parse error result");
171
- return {
172
- status: "unhandled_failure",
173
- rejectedUserOps: [
174
- ...rejectedUserOps,
175
- ...rejectUserOps(userOpsToBundle, "INTERNAL FAILURE")
176
- ]
177
- };
178
- }
179
- }
180
- else {
181
- sentry.captureException(err);
182
- logger.error({ error: JSON.stringify(err), blockTag }, "error estimating gas");
183
- return {
184
- status: "unhandled_failure",
185
- rejectedUserOps: [
186
- ...rejectedUserOps,
187
- ...rejectUserOps(userOpsToBundle, "INTERNAL FAILURE")
188
- ]
189
- };
190
- }
191
- }
192
- }
193
- return {
194
- status: "all_ops_failed_simulation",
195
- rejectedUserOps
196
- };
197
- }
198
- //# sourceMappingURL=filterOpsAndEStimateGas.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"filterOpsAndEStimateGas.js","sourceRoot":"","sources":["../../executor/filterOpsAndEStimateGas.ts"],"names":[],"mappings":"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"}