@latticexyz/world 2.0.0-alpha.63 → 2.0.0-alpha.65

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 (68) hide show
  1. package/abi/AccessControl.json +15 -15
  2. package/abi/AccessControlTest.json +273 -273
  3. package/abi/AddressArray.json +782 -782
  4. package/abi/ArrayLib.json +139 -139
  5. package/abi/Bool.json +539 -539
  6. package/abi/Call.json +6 -6
  7. package/abi/CommonBase.json +125 -125
  8. package/abi/CoreModule.json +259 -111
  9. package/abi/DecodeSlice.json +3187 -3187
  10. package/abi/FunctionSelectors.json +1412 -1412
  11. package/abi/Hooks.json +773 -773
  12. package/abi/IBaseWorld.json +7 -7
  13. package/abi/IErrors.json +48 -48
  14. package/abi/IMulticall3.json +283 -283
  15. package/abi/IRegistrationSystem.json +1 -1
  16. package/abi/IWorldTestSystem.json +5366 -5366
  17. package/abi/InstalledModules.json +1139 -1139
  18. package/abi/KeysWithValue.json +782 -782
  19. package/abi/KeysWithValueHook.json +369 -369
  20. package/abi/KeysWithValueModule.json +216 -216
  21. package/abi/KeysWithValueModuleTest.json +1274 -1274
  22. package/abi/NamespaceOwner.json +613 -613
  23. package/abi/PayableFallbackSystem.json +5368 -5368
  24. package/abi/RegistrationModule.json +307 -307
  25. package/abi/RegistrationSystem.json +885 -885
  26. package/abi/ResourceAccess.json +750 -750
  27. package/abi/ResourceType.json +627 -627
  28. package/abi/ScriptBase.json +125 -125
  29. package/abi/StdAssertions.json +1894 -1894
  30. package/abi/StdChains.json +1051 -1051
  31. package/abi/StdCheats.json +3257 -3257
  32. package/abi/StdCheatsSafe.json +3257 -3257
  33. package/abi/StdInvariant.json +336 -336
  34. package/abi/StdUtils.json +1122 -1122
  35. package/abi/Storage.json +488 -488
  36. package/abi/StoreView.json +7 -7
  37. package/abi/SystemRegistry.json +625 -625
  38. package/abi/SystemTest.json +146 -146
  39. package/abi/Systems.json +1180 -1180
  40. package/abi/TableId.json +27 -27
  41. package/abi/Test.json +52 -52
  42. package/abi/TestBase.json +125 -125
  43. package/abi/TestSystem.json +146 -146
  44. package/abi/TightCoder.json +240 -240
  45. package/abi/Utils.json +67 -67
  46. package/abi/Vm.json +1850 -1850
  47. package/abi/VmSafe.json +1850 -1850
  48. package/abi/World.json +55 -55
  49. package/abi/WorldTest.json +5368 -5368
  50. package/abi/WorldTestSystem.json +5368 -5368
  51. package/abi/WorldTestTableHook.json +5368 -5368
  52. package/abi/console2.json +11459 -11459
  53. package/abi/constants.json +7 -7
  54. package/abi/getKeysWithValue.json +125 -125
  55. package/abi/getTargetTableSelector.json +72 -72
  56. package/abi/stdError.json +78 -78
  57. package/abi/stdJson.json +1016 -1016
  58. package/abi/stdMath.json +218 -218
  59. package/abi/stdStorage.json +2400 -2400
  60. package/abi/stdStorageSafe.json +2400 -2400
  61. package/package.json +5 -5
  62. package/src/modules/core/CoreModule.sol +1 -0
  63. package/types/ethers-contracts/factories/CoreModule__factory.ts +1 -1
  64. package/types/ethers-contracts/factories/KeysWithValueModuleTest__factory.ts +1 -1
  65. package/types/ethers-contracts/factories/PayableFallbackSystem__factory.ts +1 -1
  66. package/types/ethers-contracts/factories/WorldTestSystem__factory.ts +1 -1
  67. package/types/ethers-contracts/factories/WorldTestTableHook__factory.ts +1 -1
  68. package/types/ethers-contracts/factories/WorldTest__factory.ts +1 -1
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@latticexyz/world",
3
3
  "license": "MIT",
4
- "version": "2.0.0-alpha.63+b63aca8a",
4
+ "version": "2.0.0-alpha.65+cbef50d0",
5
5
  "description": "World framework",
6
6
  "types": "./types/ethers-contracts/",
7
7
  "exports": {
@@ -31,9 +31,9 @@
31
31
  "gas-report": "mud gas-report --path test/** --save gas-report.txt"
32
32
  },
33
33
  "devDependencies": {
34
- "@latticexyz/cli": "^2.0.0-alpha.63+b63aca8a",
35
- "@latticexyz/schema-type": "^2.0.0-alpha.63+b63aca8a",
36
- "@latticexyz/store": "^2.0.0-alpha.63+b63aca8a",
34
+ "@latticexyz/cli": "^2.0.0-alpha.65+cbef50d0",
35
+ "@latticexyz/schema-type": "^2.0.0-alpha.65+cbef50d0",
36
+ "@latticexyz/store": "^2.0.0-alpha.65+cbef50d0",
37
37
  "@typechain/ethers-v5": "^9.0.0",
38
38
  "@types/mocha": "^9.1.1",
39
39
  "ds-test": "https://github.com/dapphub/ds-test.git#c9ce3f25bde29fc5eb9901842bf02850dfd2d084",
@@ -56,5 +56,5 @@
56
56
  "ds-test": "https://github.com/dapphub/ds-test.git#c9ce3f25bde29fc5eb9901842bf02850dfd2d084",
57
57
  "forge-std": "https://github.com/foundry-rs/forge-std.git#f36dab24d63d1c1945a05ed375ce341d3c1a49ed"
58
58
  },
59
- "gitHead": "b63aca8a6705b3507ccbb1606734c0a0058522a5"
59
+ "gitHead": "cbef50d07e65802dc49baeb26065d9a61ae59228"
60
60
  }
@@ -35,6 +35,7 @@ contract CoreModule is IModule, WorldContext {
35
35
  ResourceAccess.registerSchema();
36
36
  ResourceAccess.setMetadata();
37
37
  ResourceAccess.set(ROOT_NAMESPACE, _msgSender(), true);
38
+ ResourceAccess.set(ROOT_NAMESPACE, address(this), true);
38
39
 
39
40
  Systems.registerSchema();
40
41
  Systems.setMetadata();
@@ -147,7 +147,7 @@ const _abi = [
147
147
  ];
148
148
 
149
149
  const _bytecode =
150
- "0x608060405234801561001057600080fd5b50612f5d806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313861fb51461003b57806317d7de7c14610050575b600080fd5b61004e610049366004612999565b610083565b005b604080517f636f72652e6d0000000000000000000000000000000000000000000000000000815290519081900360200190f35b61008b6100e2565b61009361014d565b61009b6101b2565b6100a36101fe565b6100ab61025c565b6100bf60006100b86102a8565b60016102da565b6100c76103cb565b6100cf610429565b6100d7610475565b6100df6104d3565b50565b6000806100ed61051f565b60408051600060208201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015292945090925061014991015b60405160208183030381529060405261014290612a19565b83836105e7565b5050565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201526101b0910160405160208183030381529060405261019b90612a19565b6101a361067b565b6101ab6106f3565b610772565b565b6000806101bd6107d5565b60408051600060208201527f496e7374616c6c65644d6f64756c6573000000000000000000000000000000006030820152929450909250610149910161012a565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201526101b0910160405160208183030381529060405261024c90612a19565b61025461089d565b6101ab6108d7565b600080610267610956565b60408051600060208201527f5265736f757263654163636573730000000000000000000000000000000000006030820152929450909250610149910161012a565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c806102d75750335b90565b604080516002808252606082018352600092602083019080368337019050509050838160008151811061030f5761030f612a40565b6020026020010181815250508260601b6bffffffffffffffffffffffff19168160018151811061034157610341612a40565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526103c59061039b90612a19565b60405184151560f81b60208201528390600090602101604051602081830303815290604052610a1e565b50505050565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201526101b0910160405160208183030381529060405261041990612a19565b610421610ab6565b6101ab610b35565b600080610434610b6f565b60408051600060208201527f53797374656d73000000000000000000000000000000000000000000000000006030820152929450909250610149910161012a565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526101b091016040516020818303038152906040526104c390612a19565b6104cb610c8a565b6101ab610d4f565b6000806104de610d89565b60408051600060208201527f66756e6353656c6563746f7273000000000000000000000000000000000000006030820152929450909250610149910161012a565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908161053b5790505090506040518060400160405280600581526020017f6f776e65720000000000000000000000000000000000000000000000000000008152508160008151811061059b5761059b612a40565b6020026020010181905250806040518060400160405280600e81526020017f4e616d6573706163654f776e65720000000000000000000000000000000000008152509092509250509091565b6105ef610efa565b15610604576105ff838383610f78565b505050565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be9061064490869086908690600401612b06565b600060405180830381600087803b15801561065e57600080fd5b505af1158015610672573d6000803e3d6000fd5b50505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106106b5576106b5612a40565b602002602001019060c58111156106ce576106ce612b3b565b908160c58111156106e1576106e1612b3b565b9052506106ed8161101b565b91505090565b60408051600280825260608201835260009283929190602083019080368337019050509050604f8160008151811061072d5761072d612a40565b602002602001019060c581111561074657610746612b3b565b908160c581111561075957610759612b3b565b81525050605f816001815181106106b5576106b5612a40565b61077a610efa565b1561078a576105ff838383611275565b6040517f4b9bd06c0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290523390634b9bd06c90606401610644565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816107f15790505090506040518060400160405280600d81526020017f6d6f64756c6541646472657373000000000000000000000000000000000000008152508160008151811061085157610851612a40565b6020026020010181905250806040518060400160405280601081526020017f496e7374616c6c65644d6f64756c6573000000000000000000000000000000008152509092509250509091565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106106b5576106b5612a40565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061091157610911612a40565b602002602001019060c581111561092a5761092a612b3b565b908160c581111561093d5761093d612b3b565b815250506061816001815181106106b5576106b5612a40565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816109725790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106109d2576109d2612a40565b6020026020010181905250806040518060400160405280600e81526020017f5265736f757263654163636573730000000000000000000000000000000000008152509092509250509091565b610a26610efa565b15610a3c57610a37848484846112e2565b6103c5565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d2290610a7e908790879087908790600401612b8c565b600060405180830381600087803b158015610a9857600080fd5b505af1158015610aac573d6000803e3d6000fd5b5050505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610af057610af0612a40565b602002602001019060c5811115610b0957610b09612b3b565b908160c5811115610b1c57610b1c612b3b565b815250506060816001815181106106b5576106b5612a40565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106106b5576106b5612a40565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081610b8a5790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110610bea57610bea612a40565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110610c3e57610c3e612a40565b6020026020010181905250806040518060400160405280600781526020017f53797374656d73000000000000000000000000000000000000000000000000008152509092509250509091565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f81600081518110610cc557610cc5612a40565b602002602001019060c5811115610cde57610cde612b3b565b908160c5811115610cf157610cf1612b3b565b81525050604f81600181518110610d0a57610d0a612a40565b602002602001019060c5811115610d2357610d23612b3b565b908160c5811115610d3657610d36612b3b565b815250506043816002815181106106b5576106b5612a40565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106106b5576106b5612a40565b604080516003808252608082019092526060918291600091816020015b6060815260200190600190039081610da65790505090506040518060400160405280600981526020017f6e616d657370616365000000000000000000000000000000000000000000000081525081600081518110610e0657610e06612a40565b60200260200101819052506040518060400160405280600481526020017f66696c650000000000000000000000000000000000000000000000000000000081525081600181518110610e5a57610e5a612a40565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600281518110610eae57610eae612a40565b6020026020010181905250806040518060400160405280601181526020017f46756e6374696f6e53656c6563746f72730000000000000000000000000000008152509092509250509091565b6000303b808203610f0d57600191505090565b3073ffffffffffffffffffffffffffffffffffffffff1663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015610f5357600080fd5b505afa925050508015610f64575060015b610f7057600091505090565b600191505090565b6000610f83846114cd565b9050815160001480610fa05750610f9981611522565b60ff168251145b610ff157610fad81611522565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044015b60405180910390fd5b6103c58484846040516020016110079190612bc0565b604051602081830303815290604052611546565b6000601c82511115611045578151604051635318beb960e01b8152600401610fe891815260200190565b60008060008060005b865181101561117157600061108c88838151811061106e5761106e612a40565b602002602001015160c581111561108757611087612b3b565b611601565b905061ffff8116156110e25782156110d0576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836110da81612be9565b9450506110e7565b600192505b6110f18186612c08565b945061116686611102846004612c2e565b8a858151811061111457611114612a40565b602002602001015160c581111561112d5761112d612b3b565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b95505060010161104e565b5060008287516111819190612c46565b9050600e8160ff1611156111ad57604051635318beb960e01b815260ff82166004820152602401610fe8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b6112808260006116b9565b61128b8160016116b9565b6112948361188a565b156112d757826112a3846118a3565b6040517fda76cc74000000000000000000000000000000000000000000000000000000008152600401610fe8929190612c69565b6105ff8383836118ce565b60006112ed856114cd565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce858585856040516113249493929190612b8c565b60405180910390a1600061133786611a48565b905060005b81518110156113e857600082828151811061135957611359612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663f58a28f7898989896040518563ffffffff1660e01b81526004016113a29493929190612b8c565b600060405180830381600087803b1580156113bc57600080fd5b505af11580156113d0573d6000803e3d6000fd5b505050505080806113e090612c82565b91505061133c565b506113f282611b10565b60ff168460ff1610156114115761140c8686848787611b21565b61141e565b61141e8686848787611bc7565b60005b815181101561067257600082828151811061143e5761143e612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16631cd68a1a898989896040518563ffffffff1660e01b81526004016114879493929190612b8c565b600060405180830381600087803b1580156114a157600080fd5b505af11580156114b5573d6000803e3d6000fd5b505050505080806114c590612c82565b915050611421565b60006114d882611c04565b90508061151d57816114e9836118a3565b6040517f132e171c000000000000000000000000000000000000000000000000000000008152600401610fe8929190612c69565b919050565b600061152d82611ca3565b61153683611b10565b6115409190612c9c565b92915050565b60006115528383611caf565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b8160008151811061158f5761158f612a40565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d6574616461746100000000000000000000000000000000000000603082015281518082039093018352810190526115fa906115f390612a19565b8284611d65565b5050505050565b6000808260c581111561161657611616612b3b565b60ff16905060208110156116365761162f816001612c2e565b9392505050565b604081101561165657602061164c826001612c2e565b61162f9190612cc1565b606081101561166c57604061164c826001612c2e565b60608360c581111561168057611680612b3b565b0361168e5750600192915050565b60618360c58111156116a2576116a2612b3b565b036116b05750601492915050565b50600092915050565b801580156116c5575081155b156116e657604051635318beb960e01b815260006004820152602401610fe8565b60006116f183611ca3565b60ff169050600e81111561171b57604051635318beb960e01b815260048101829052602401610fe8565b600061172684611b10565b60ff169050601c6117378383612c2e565b1115611763576117478282612c2e565b604051635318beb960e01b8152600401610fe891815260200190565b60008060005b6117738585612c2e565b81101561183b57600061179a6117898984611dbd565b60c581111561108757611087612b3b565b11156117eb578381106117d9576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826117e381612c82565b935050611833565b83811015611825576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161182f81612c82565b9250505b600101611769565b5082821461185f57604051635318beb960e01b815260048101839052602401610fe8565b83811461188257604051635318beb960e01b815260048101829052602401610fe8565b505050505050565b600061189c61189883611c04565b1590565b1592915050565b6060816040516020016118b891815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b8160008151811061190757611907612a40565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161197a91015b60405160208183030381529060405261197490612a19565b83611de9565b848155905061199261198d826020612c2e565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f9101604051602081830303815290604052611a0890612a19565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611a39939291612cd8565b60405180910390a15050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a8257611a82612a40565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611af190611ae990612a19565b836000611e3f565b9050611b08611b038260008451611ee5565b611f75565b949350505050565b6000601082901b5b60f81c92915050565b6000611b308460ff8516611dbd565b90508151611b498260c581111561108757611087612b3b565b14611ba057611b638160c581111561108757611087612b3b565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610fe8565b6000611bac8787611de9565b90506000611bba8686611f86565b9050610aac828286611fc9565b6000611bd284611b10565b611bdc9084612c46565b9050611beb8686838551611fde565b6000611bf8878784612010565b90506106728184612069565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110611c4057611c40612a40565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611c99910161195c565b9050611b08815490565b6000601882901b611b18565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110611ce957611ce9612a40565b602002602001019061ffff16908161ffff1681525050825181600181518110611d1457611d14612a40565b602002602001019061ffff16908161ffff16815250506000611d3582612075565b9050808585604051602001611d4c93929190612d03565b6040516020818303038152906040529250505092915050565b611d6d610efa565b15611d7d576105ff838383612152565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a9061064490869086908690600401612cd8565b6000611dd583611dce846004612c2e565b6008021b90565b60f81c60c581111561162f5761162f612b3b565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2093929190612d40565b60408051601f1981840301815291905280516020909101209392505050565b6060611e49610efa565b15611e6057611e598484846123b4565b905061162f565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e90611ea090879087908790600401612d5f565b600060405180830381865afa158015611ebd573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e599190810190612d8b565b6000818311158015611ef8575083518211155b611f34578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610fe893929190612df9565b60208401611f428482612c2e565b90506000611f508585612cc1565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061162f83601460006123d8565b600080805b8360ff16811015611fc157611fa36117898683611dbd565b611fad9083612c2e565b915080611fb981612c82565b915050611f8b565b509392505050565b60006020820190506103c5848483855161251b565b6000611fea85856125d9565b90506000611ff6825490565b90506120068160ff861685612610565b8083559050611882565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016120499493929190612e1e565b60408051601f198184030181529190528051602090910120949350505050565b61014982600083611fc9565b6000806000805b8451811015612127576120f283612094836002612e51565b61209f906004612c2e565b8784815181106120b1576120b1612a40565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b925084818151811061210657612106612a40565b602002602001015161ffff168261211d9190612e70565b915060010161207c565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17611b08565b600061215d846114cd565b9050600061216b8260f01c90565b90508060008061217a85611ca3565b60ff1611156121a857506020848301015160e081901c61219b906020612c2e565b6121a59083612c2e565b91505b845182146121ef5784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610fe8918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f87878760405161222293929190612cd8565b60405180910390a1600061223588611a48565b905060005b81518110156122e457600082828151811061225757612257612a40565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16637ae4118a8b8b8b6040518463ffffffff1660e01b815260040161229e93929190612cd8565b600060405180830381600087803b1580156122b857600080fd5b505af11580156122cc573d6000803e3d6000fd5b505050505080806122dc90612c82565b91505061223a565b5060006122f18989611de9565b905060208701612304826000838961251b565b61230f866020612c2e565b6123199082612c2e565b905061232487611ca3565b60ff1660000361233a5750505050505050505050565b60006123468b8b6125d9565b858155905060008060005b61235a8b611ca3565b60ff168160ff1610156123a4576123728e8e83612010565b92506123818860ff83166126ec565b9150612390836000878561251b565b61239a8286612c2e565b9450600101612351565b5050505050505050505050505050565b606060006123c1856114cd565b90506123cf8585858461271e565b95945050505050565b606060006123e68560801c90565b90506fffffffffffffffffffffffffffffffff851660008461241e5761240d866008612e51565b61241990610100612cc1565b612421565b60005b9050600086838161243457612434612e8f565b0490506124418784612ea5565b156124ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610fe8565b602080820201604051955080860160405250808552600060208601855b8383101561250d578051851c82526001929092019160209091019089016124eb565b505050505050509392505050565b60208304840193506020838161253357612533612e8f565b069250821561258c5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116125775750506103c5565b612582600187612c2e565b9550509182019190035b602081106125b557815184556125a3600185612c2e565b935060209190910190601f190161258c565b80156103c5576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2093929190612ec7565b6000838161261e8260e01c90565b9050600061262f878760ff166126ec565b9050808510612653576126428186612cc1565b61264c9083612c2e565b915061266a565b61265d8582612cc1565b6126679083612cc1565b91505b6000612677876002612e51565b612682906004612c2e565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b6000806126fa836002612e51565b612705906004612c2e565b905061271384826008021b90565b60f01c949350505050565b606061272982611b10565b60ff168360ff1610156127495761274285858585612755565b9050611b08565b612742858585856127b5565b606060006127668360ff8616611dbd565b9050600061277f8260c581111561108757611087612b3b565b9050600061278d8888611de9565b9050600061279b8688611f86565b90506127a8828483612802565b9998505050505050505050565b606060006127c283611b10565b6127cc9085612c46565b905060006127db878784612010565b905060006127f68360ff166127f08a8a61285a565b906126ec565b90506126e08282612867565b60608267ffffffffffffffff81111561281d5761281d61292a565b6040519080825280601f01601f191660200182016040528015612847576020820181803683370190505b50905060208101611fc185858584612875565b600080611c9984846125d9565b606061162f83836000612802565b60208204840193506020828161288d5761288d612e8f565b06915081156128de5760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116128c95750506103c5565b6128d4600187612c2e565b9550509283900392015b6020831061290657835481526128f5600185612c2e565b9350601f19909201916020016128de565b82156103c5576000600019600885021c198251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156129695761296961292a565b604052919050565b600067ffffffffffffffff82111561298b5761298b61292a565b50601f01601f191660200190565b6000602082840312156129ab57600080fd5b813567ffffffffffffffff8111156129c257600080fd5b8201601f810184136129d357600080fd5b80356129e66129e182612971565b612940565b8181528560208385010111156129fb57600080fd5b81602084016020830137600091810160200191909152949350505050565b80516020808301519190811015612a3a576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612a71578181015183820152602001612a59565b838111156103c55750506000910152565b60008151808452612a9a816020860160208601612a56565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612af957601f19868403018952612ae7838351612a82565b98840198925090830190600101612acb565b5090979650505050505050565b838152606060208201526000612b1f6060830185612a82565b8281036040840152612b318185612aae565b9695505050505050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015612b8157815187529582019590820190600101612b65565b509495945050505050565b848152608060208201526000612ba56080830186612b51565b60ff85166040840152828103606084015261126a8185612a82565b60208152600061162f6020830184612aae565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103612bff57612bff612bd3565b60010192915050565b600061ffff808316818516808303821115612c2557612c25612bd3565b01949350505050565b60008219821115612c4157612c41612bd3565b500190565b600060ff821660ff841680821015612c6057612c60612bd3565b90039392505050565b828152604060208201526000611b086040830184612a82565b60006000198203612c9557612c95612bd3565b5060010190565b600060ff821660ff84168060ff03821115612cb957612cb9612bd3565b019392505050565b600082821015612cd357612cd3612bd3565b500390565b838152606060208201526000612cf16060830185612b51565b8281036040840152612b318185612a82565b83815260008351612d1b816020850160208801612a56565b80830190508351612d33816020840160208801612a56565b0160200195945050505050565b8381528260208201526060604082015260006123cf6060830184612b51565b838152606060208201526000612d786060830185612b51565b905060ff83166040830152949350505050565b600060208284031215612d9d57600080fd5b815167ffffffffffffffff811115612db457600080fd5b8201601f81018413612dc557600080fd5b8051612dd36129e182612971565b818152856020838501011115612de857600080fd5b6123cf826020830160208601612a56565b606081526000612e0c6060830186612a82565b60208301949094525060400152919050565b848152836020820152608060408201526000612e3d6080830185612b51565b905060ff8316606083015295945050505050565b6000816000190483118215151615612e6b57612e6b612bd3565b500290565b600063ffffffff808316818516808303821115612c2557612c25612bd3565b634e487b7160e01b600052601260045260246000fd5b600082612ec257634e487b7160e01b600052601260045260246000fd5b500690565b838152826020820152608060408201526000612ee66080830184612b51565b8281036060840152600681527f6c656e677468000000000000000000000000000000000000000000000000000060208201526040810191505094935050505056fea26469706673582212203caea0cef39e5641a95d75758604d22054939c28c099292f7453d083cd0e864e64736f6c634300080d0033";
150
+ "0x608060405234801561001057600080fd5b50612f6a806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806313861fb51461003b57806317d7de7c14610050575b600080fd5b61004e6100493660046129a6565b610083565b005b604080517f636f72652e6d0000000000000000000000000000000000000000000000000000815290519081900360200190f35b61008b6100ef565b61009361015a565b61009b6101bf565b6100a361020b565b6100ab610269565b6100bf60006100b86102b5565b60016102e7565b6100cc60003060016102e7565b6100d46103d8565b6100dc610436565b6100e4610482565b6100ec6104e0565b50565b6000806100fa61052c565b60408051600060208201527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015292945090925061015691015b60405160208183030381529060405261014f90612a26565b83836105f4565b5050565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201526101bd91016040516020818303038152906040526101a890612a26565b6101b0610688565b6101b8610700565b61077f565b565b6000806101ca6107e2565b60408051600060208201527f496e7374616c6c65644d6f64756c65730000000000000000000000000000000060308201529294509092506101569101610137565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201526101bd910160405160208183030381529060405261025990612a26565b6102616108aa565b6101b86108e4565b600080610274610963565b60408051600060208201527f5265736f7572636541636365737300000000000000000000000000000000000060308201529294509092506101569101610137565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec36013560601c806102e45750335b90565b604080516002808252606082018352600092602083019080368337019050509050838160008151811061031c5761031c612a4d565b6020026020010181815250508260601b6bffffffffffffffffffffffff19168160018151811061034e5761034e612a4d565b602090810291909101810191909152604080516000818401527f5265736f75726365416363657373000000000000000000000000000000000000603082015281518082039093018352810190526103d2906103a890612a26565b60405184151560f81b60208201528390600090602101604051602081830303815290604052610a2b565b50505050565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201526101bd910160405160208183030381529060405261042690612a26565b61042e610ac3565b6101b8610b42565b600080610441610b7c565b60408051600060208201527f53797374656d730000000000000000000000000000000000000000000000000060308201529294509092506101569101610137565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526101bd91016040516020818303038152906040526104d090612a26565b6104d8610c97565b6101b8610d5c565b6000806104eb610d96565b60408051600060208201527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201529294509092506101569101610137565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816105485790505090506040518060400160405280600581526020017f6f776e6572000000000000000000000000000000000000000000000000000000815250816000815181106105a8576105a8612a4d565b6020026020010181905250806040518060400160405280600e81526020017f4e616d6573706163654f776e65720000000000000000000000000000000000008152509092509250509091565b6105fc610f07565b156106115761060c838383610f85565b505050565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be9061065190869086908690600401612b13565b600060405180830381600087803b15801561066b57600080fd5b505af115801561067f573d6000803e3d6000fd5b50505050505050565b604080516001808252818301909252600091829190602080830190803683370190505090506061816000815181106106c2576106c2612a4d565b602002602001019060c58111156106db576106db612b48565b908160c58111156106ee576106ee612b48565b9052506106fa81611028565b91505090565b60408051600280825260608201835260009283929190602083019080368337019050509050604f8160008151811061073a5761073a612a4d565b602002602001019060c581111561075357610753612b48565b908160c581111561076657610766612b48565b81525050605f816001815181106106c2576106c2612a4d565b610787610f07565b156107975761060c838383611282565b6040517f4b9bd06c0000000000000000000000000000000000000000000000000000000081526004810184905260248101839052604481018290523390634b9bd06c90606401610651565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816107fe5790505090506040518060400160405280600d81526020017f6d6f64756c6541646472657373000000000000000000000000000000000000008152508160008151811061085e5761085e612a4d565b6020026020010181905250806040518060400160405280601081526020017f496e7374616c6c65644d6f64756c6573000000000000000000000000000000008152509092509250509091565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106106c2576106c2612a4d565b60408051600280825260608201835260009283929190602083019080368337019050509050605f8160008151811061091e5761091e612a4d565b602002602001019060c581111561093757610937612b48565b908160c581111561094a5761094a612b48565b815250506061816001815181106106c2576106c2612a4d565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908161097f5790505090506040518060400160405280600681526020017f6163636573730000000000000000000000000000000000000000000000000000815250816000815181106109df576109df612a4d565b6020026020010181905250806040518060400160405280600e81526020017f5265736f757263654163636573730000000000000000000000000000000000008152509092509250509091565b610a33610f07565b15610a4957610a44848484846112ef565b6103d2565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d2290610a8b908790879087908790600401612b99565b600060405180830381600087803b158015610aa557600080fd5b505af1158015610ab9573d6000803e3d6000fd5b5050505050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110610afd57610afd612a4d565b602002602001019060c5811115610b1657610b16612b48565b908160c5811115610b2957610b29612b48565b815250506060816001815181106106c2576106c2612a4d565b60408051600180825281830190925260009182919060208083019080368337019050509050605f816000815181106106c2576106c2612a4d565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081610b975790505090506040518060400160405280600681526020017f73797374656d000000000000000000000000000000000000000000000000000081525081600081518110610bf757610bf7612a4d565b60200260200101819052506040518060400160405280600c81526020017f7075626c6963416363657373000000000000000000000000000000000000000081525081600181518110610c4b57610c4b612a4d565b6020026020010181905250806040518060400160405280600781526020017f53797374656d73000000000000000000000000000000000000000000000000008152509092509250509091565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f81600081518110610cd257610cd2612a4d565b602002602001019060c5811115610ceb57610ceb612b48565b908160c5811115610cfe57610cfe612b48565b81525050604f81600181518110610d1757610d17612a4d565b602002602001019060c5811115610d3057610d30612b48565b908160c5811115610d4357610d43612b48565b815250506043816002815181106106c2576106c2612a4d565b604080516001808252818301909252600091829190602080830190803683370190505090506043816000815181106106c2576106c2612a4d565b604080516003808252608082019092526060918291600091816020015b6060815260200190600190039081610db35790505090506040518060400160405280600981526020017f6e616d657370616365000000000000000000000000000000000000000000000081525081600081518110610e1357610e13612a4d565b60200260200101819052506040518060400160405280600481526020017f66696c650000000000000000000000000000000000000000000000000000000081525081600181518110610e6757610e67612a4d565b60200260200101819052506040518060400160405280601681526020017f73797374656d46756e6374696f6e53656c6563746f720000000000000000000081525081600281518110610ebb57610ebb612a4d565b6020026020010181905250806040518060400160405280601181526020017f46756e6374696f6e53656c6563746f72730000000000000000000000000000008152509092509250509091565b6000303b808203610f1a57600191505090565b3073ffffffffffffffffffffffffffffffffffffffff1663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015610f6057600080fd5b505afa925050508015610f71575060015b610f7d57600091505090565b600191505090565b6000610f90846114da565b9050815160001480610fad5750610fa68161152f565b60ff168251145b610ffe57610fba8161152f565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044015b60405180910390fd5b6103d28484846040516020016110149190612bcd565b604051602081830303815290604052611553565b6000601c82511115611052578151604051635318beb960e01b8152600401610ff591815260200190565b60008060008060005b865181101561117e57600061109988838151811061107b5761107b612a4d565b602002602001015160c581111561109457611094612b48565b61160e565b905061ffff8116156110ef5782156110dd576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836110e781612bf6565b9450506110f4565b600192505b6110fe8186612c15565b94506111738661110f846004612c3b565b8a858151811061112157611121612a4d565b602002602001015160c581111561113a5761113a612b48565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b95505060010161105b565b50600082875161118e9190612c53565b9050600e8160ff1611156111ba57604051635318beb960e01b815260ff82166004820152602401610ff5565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b61128d8260006116c6565b6112988160016116c6565b6112a183611897565b156112e457826112b0846118b0565b6040517fda76cc74000000000000000000000000000000000000000000000000000000008152600401610ff5929190612c76565b61060c8383836118db565b60006112fa856114da565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce858585856040516113319493929190612b99565b60405180910390a1600061134486611a55565b905060005b81518110156113f557600082828151811061136657611366612a4d565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff1663f58a28f7898989896040518563ffffffff1660e01b81526004016113af9493929190612b99565b600060405180830381600087803b1580156113c957600080fd5b505af11580156113dd573d6000803e3d6000fd5b505050505080806113ed90612c8f565b915050611349565b506113ff82611b1d565b60ff168460ff16101561141e576114198686848787611b2e565b61142b565b61142b8686848787611bd4565b60005b815181101561067f57600082828151811061144b5761144b612a4d565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16631cd68a1a898989896040518563ffffffff1660e01b81526004016114949493929190612b99565b600060405180830381600087803b1580156114ae57600080fd5b505af11580156114c2573d6000803e3d6000fd5b505050505080806114d290612c8f565b91505061142e565b60006114e582611c11565b90508061152a57816114f6836118b0565b6040517f132e171c000000000000000000000000000000000000000000000000000000008152600401610ff5929190612c76565b919050565b600061153a82611cb0565b61154383611b1d565b61154d9190612ca9565b92915050565b600061155f8383611cbc565b60408051600180825281830190925291925060009190602080830190803683370190505090508460001b8160008151811061159c5761159c612a4d565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f53746f72654d6574616461746100000000000000000000000000000000000000603082015281518082039093018352810190526116079061160090612a26565b8284611d72565b5050505050565b6000808260c581111561162357611623612b48565b60ff16905060208110156116435761163c816001612c3b565b9392505050565b6040811015611663576020611659826001612c3b565b61163c9190612cce565b6060811015611679576040611659826001612c3b565b60608360c581111561168d5761168d612b48565b0361169b5750600192915050565b60618360c58111156116af576116af612b48565b036116bd5750601492915050565b50600092915050565b801580156116d2575081155b156116f357604051635318beb960e01b815260006004820152602401610ff5565b60006116fe83611cb0565b60ff169050600e81111561172857604051635318beb960e01b815260048101829052602401610ff5565b600061173384611b1d565b60ff169050601c6117448383612c3b565b1115611770576117548282612c3b565b604051635318beb960e01b8152600401610ff591815260200190565b60008060005b6117808585612c3b565b8110156118485760006117a76117968984611dca565b60c581111561109457611094612b48565b11156117f8578381106117e6576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826117f081612c8f565b935050611840565b83811015611832576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161183c81612c8f565b9250505b600101611776565b5082821461186c57604051635318beb960e01b815260048101839052602401610ff5565b83811461188f57604051635318beb960e01b815260048101829052602401610ff5565b505050505050565b60006118a96118a583611c11565b1590565b1592915050565b6060816040516020016118c591815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508360001b8160008151811061191457611914612a4d565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d610000000000000000000000000000000000000000000000000000603083015260009161198791015b60405160208183030381529060405261198190612a26565b83611df6565b848155905061199f61199a826020612c3b565b849055565b60408051676d756473746f726560c01b60208201527f736368656d61000000000000000000000000000000000000000000000000000060308201527f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f9101604051602081830303815290604052611a1590612a26565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611a46939291612ce5565b60405180910390a15050505050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611a8f57611a8f612a4d565b60209081029190910181019190915260408051676d756473746f726560c01b818401527f486f6f6b7300000000000000000000000000000000000000000000000000000060308201528151808203909301835281019052600090611afe90611af690612a26565b836000611e4c565b9050611b15611b108260008451611ef2565b611f82565b949350505050565b6000601082901b5b60f81c92915050565b6000611b3d8460ff8516611dca565b90508151611b568260c581111561109457611094612b48565b14611bad57611b708160c581111561109457611094612b48565b82516040517f521b3d3300000000000000000000000000000000000000000000000000000000815260048101929092526024820152604401610ff5565b6000611bb98787611df6565b90506000611bc78686611f93565b9050610ab9828286611fd6565b6000611bdf84611b1d565b611be99084612c53565b9050611bf88686838551611feb565b6000611c0587878461201d565b905061067f8184612076565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110611c4d57611c4d612a4d565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f736368656d6100000000000000000000000000000000000000000000000000006030830152600091611ca69101611969565b9050611b15815490565b6000601882901b611b25565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110611cf657611cf6612a4d565b602002602001019061ffff16908161ffff1681525050825181600181518110611d2157611d21612a4d565b602002602001019061ffff16908161ffff16815250506000611d4282612082565b9050808585604051602001611d5993929190612d10565b6040516020818303038152906040529250505092915050565b611d7a610f07565b15611d8a5761060c83838361215f565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a9061065190869086908690600401612ce5565b6000611de283611ddb846004612c3b565b6008021b90565b60f81c60c581111561163c5761163c612b48565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2d93929190612d4d565b60408051601f1981840301815291905280516020909101209392505050565b6060611e56610f07565b15611e6d57611e668484846123c1565b905061163c565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e90611ead90879087908790600401612d6c565b600060405180830381865afa158015611eca573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611e669190810190612d98565b6000818311158015611f05575083518211155b611f41578383836040517f23230fa3000000000000000000000000000000000000000000000000000000008152600401610ff593929190612e06565b60208401611f4f8482612c3b565b90506000611f5d8585612cce565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061163c83601460006123e5565b600080805b8360ff16811015611fce57611fb06117968683611dca565b611fba9083612c3b565b915080611fc681612c8f565b915050611f98565b509392505050565b60006020820190506103d28484838551612528565b6000611ff785856125e6565b90506000612003825490565b90506120138160ff86168561261d565b808355905061188f565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016120569493929190612e2b565b60408051601f198184030181529190528051602090910120949350505050565b61015682600083611fd6565b6000806000805b8451811015612134576120ff836120a1836002612e5e565b6120ac906004612c3b565b8784815181106120be576120be612a4d565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b925084818151811061211357612113612a4d565b602002602001015161ffff168261212a9190612e7d565b9150600101612089565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17611b15565b600061216a846114da565b905060006121788260f01c90565b90508060008061218785611cb0565b60ff1611156121b557506020848301015160e081901c6121a8906020612c3b565b6121b29083612c3b565b91505b845182146121fc5784516040517f521b3d33000000000000000000000000000000000000000000000000000000008152610ff5918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f87878760405161222f93929190612ce5565b60405180910390a1600061224288611a55565b905060005b81518110156122f157600082828151811061226457612264612a4d565b602002602001015190508073ffffffffffffffffffffffffffffffffffffffff16637ae4118a8b8b8b6040518463ffffffff1660e01b81526004016122ab93929190612ce5565b600060405180830381600087803b1580156122c557600080fd5b505af11580156122d9573d6000803e3d6000fd5b505050505080806122e990612c8f565b915050612247565b5060006122fe8989611df6565b9050602087016123118260008389612528565b61231c866020612c3b565b6123269082612c3b565b905061233187611cb0565b60ff166000036123475750505050505050505050565b60006123538b8b6125e6565b858155905060008060005b6123678b611cb0565b60ff168160ff1610156123b15761237f8e8e8361201d565b925061238e8860ff83166126f9565b915061239d8360008785612528565b6123a78286612c3b565b945060010161235e565b5050505050505050505050505050565b606060006123ce856114da565b90506123dc8585858461272b565b95945050505050565b606060006123f38560801c90565b90506fffffffffffffffffffffffffffffffff851660008461242b5761241a866008612e5e565b61242690610100612cce565b61242e565b60005b9050600086838161244157612441612e9c565b04905061244e8784612eb2565b156124db576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401610ff5565b602080820201604051955080860160405250808552600060208601855b8383101561251a578051851c82526001929092019160209091019089016124f8565b505050505050509392505050565b60208304840193506020838161254057612540612e9c565b06925082156125995760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116125845750506103d2565b61258f600187612c3b565b9550509182019190035b602081106125c257815184556125b0600185612c3b565b935060209190910190601f1901612599565b80156103d2576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001611e2d93929190612ed4565b6000838161262b8260e01c90565b9050600061263c878760ff166126f9565b90508085106126605761264f8186612cce565b6126599083612c3b565b9150612677565b61266a8582612cce565b6126749083612cce565b91505b6000612684876002612e5e565b61268f906004612c3b565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b600080612707836002612e5e565b612712906004612c3b565b905061272084826008021b90565b60f01c949350505050565b606061273682611b1d565b60ff168360ff1610156127565761274f85858585612762565b9050611b15565b61274f858585856127c2565b606060006127738360ff8616611dca565b9050600061278c8260c581111561109457611094612b48565b9050600061279a8888611df6565b905060006127a88688611f93565b90506127b582848361280f565b9998505050505050505050565b606060006127cf83611b1d565b6127d99085612c53565b905060006127e887878461201d565b905060006128038360ff166127fd8a8a612867565b906126f9565b90506126ed8282612874565b60608267ffffffffffffffff81111561282a5761282a612937565b6040519080825280601f01601f191660200182016040528015612854576020820181803683370190505b50905060208101611fce85858584612882565b600080611ca684846125e6565b606061163c8383600061280f565b60208204840193506020828161289a5761289a612e9c565b06915081156128eb5760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116128d65750506103d2565b6128e1600187612c3b565b9550509283900392015b602083106129135783548152612902600185612c3b565b9350601f19909201916020016128eb565b82156103d2576000600019600885021c198251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561297657612976612937565b604052919050565b600067ffffffffffffffff82111561299857612998612937565b50601f01601f191660200190565b6000602082840312156129b857600080fd5b813567ffffffffffffffff8111156129cf57600080fd5b8201601f810184136129e057600080fd5b80356129f36129ee8261297e565b61294d565b818152856020838501011115612a0857600080fd5b81602084016020830137600091810160200191909152949350505050565b80516020808301519190811015612a47576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052603260045260246000fd5b60005b83811015612a7e578181015183820152602001612a66565b838111156103d25750506000910152565b60008151808452612aa7816020860160208601612a63565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b84811015612b0657601f19868403018952612af4838351612a8f565b98840198925090830190600101612ad8565b5090979650505050505050565b838152606060208201526000612b2c6060830185612a8f565b8281036040840152612b3e8185612abb565b9695505050505050565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015612b8e57815187529582019590820190600101612b72565b509495945050505050565b848152608060208201526000612bb26080830186612b5e565b60ff8516604084015282810360608401526112778185612a8f565b60208152600061163c6020830184612abb565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff8103612c0c57612c0c612be0565b60010192915050565b600061ffff808316818516808303821115612c3257612c32612be0565b01949350505050565b60008219821115612c4e57612c4e612be0565b500190565b600060ff821660ff841680821015612c6d57612c6d612be0565b90039392505050565b828152604060208201526000611b156040830184612a8f565b60006000198203612ca257612ca2612be0565b5060010190565b600060ff821660ff84168060ff03821115612cc657612cc6612be0565b019392505050565b600082821015612ce057612ce0612be0565b500390565b838152606060208201526000612cfe6060830185612b5e565b8281036040840152612b3e8185612a8f565b83815260008351612d28816020850160208801612a63565b80830190508351612d40816020840160208801612a63565b0160200195945050505050565b8381528260208201526060604082015260006123dc6060830184612b5e565b838152606060208201526000612d856060830185612b5e565b905060ff83166040830152949350505050565b600060208284031215612daa57600080fd5b815167ffffffffffffffff811115612dc157600080fd5b8201601f81018413612dd257600080fd5b8051612de06129ee8261297e565b818152856020838501011115612df557600080fd5b6123dc826020830160208601612a63565b606081526000612e196060830186612a8f565b60208301949094525060400152919050565b848152836020820152608060408201526000612e4a6080830185612b5e565b905060ff8316606083015295945050505050565b6000816000190483118215151615612e7857612e78612be0565b500290565b600063ffffffff808316818516808303821115612c3257612c32612be0565b634e487b7160e01b600052601260045260246000fd5b600082612ecf57634e487b7160e01b600052601260045260246000fd5b500690565b838152826020820152608060408201526000612ef36080830184612b5e565b8281036060840152600681527f6c656e677468000000000000000000000000000000000000000000000000000060208201526040810191505094935050505056fea2646970667358221220dae070a90a213bdd2d711a7204dbfd1712c10a22c0e6c5ff71f72b086be56be764736f6c634300080d0033";
151
151
 
152
152
  type CoreModuleConstructorParams =
153
153
  | [signer?: Signer]