@latticexyz/world 1.40.0 → 1.41.0
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.
- package/LICENSE +21 -0
- package/abi/AddressArraySchemaLib.json +718 -869
- package/abi/BoolSchemaLib.json +401 -401
- package/abi/Bytes.json +1162 -1162
- package/abi/CommonBase.json +125 -125
- package/abi/DSTest.json +2630 -2630
- package/abi/DecodeSlice.json +3883 -3883
- package/abi/EncodeArray.json +3336 -3336
- package/abi/Hooks.json +1491 -785
- package/abi/IMulticall3.json +283 -283
- package/abi/IStore.json +623 -421
- package/abi/IStoreHook.json +567 -421
- package/abi/ISystemHook.json +19 -19
- package/abi/Memory.json +131 -131
- package/abi/PackedCounterLib.json +683 -683
- package/abi/RouteAccess.json +2209 -1159
- package/abi/RouteOwnerSchemaLib.json +349 -349
- package/abi/RouteOwnerTable.json +297 -297
- package/abi/RouteSchemaLib.json +433 -433
- package/abi/RouteTable.json +336 -336
- package/abi/SchemaLib.json +1211 -1211
- package/abi/ScriptBase.json +125 -125
- package/abi/SliceInstance.json +429 -429
- package/abi/SliceLib.json +429 -429
- package/abi/StdAssertions.json +2135 -2135
- package/abi/StdChains.json +1051 -1051
- package/abi/StdCheats.json +3257 -3257
- package/abi/StdCheatsSafe.json +3257 -3257
- package/abi/StdInvariant.json +337 -337
- package/abi/StdUtils.json +1122 -1122
- package/abi/Storage.json +491 -491
- package/abi/Store.json +374 -209
- package/abi/StoreCore.json +10665 -7865
- package/abi/StoreCoreExtended.json +10443 -7722
- package/abi/StoreCoreInternal.json +10482 -7638
- package/abi/StoreMetadata.json +3719 -2417
- package/abi/StoreSwitch.json +1692 -783
- package/abi/System.json +16 -16
- package/abi/SystemRouteSchemaLib.json +402 -402
- package/abi/SystemRouteTable.json +336 -336
- package/abi/SystemTable.json +8544 -651
- package/abi/SystemTest.json +287 -303
- package/abi/Test.json +124 -124
- package/abi/TestBase.json +125 -125
- package/abi/TestSystem.json +287 -303
- package/abi/TightCoder.json +272 -272
- package/abi/Utils.json +67 -67
- package/abi/Vm.json +1850 -1850
- package/abi/VmSafe.json +1850 -1850
- package/abi/World.json +5183 -3374
- package/abi/WorldTest.json +9983 -10520
- package/abi/WorldTestSystem.json +9992 -10503
- package/abi/WorldTestTableHook.json +9978 -10511
- package/abi/console.json +11417 -11417
- package/abi/console2.json +11459 -11459
- package/abi/stdError.json +79 -79
- package/abi/stdJson.json +1016 -1016
- package/abi/stdMath.json +218 -218
- package/abi/stdStorage.json +2400 -2400
- package/abi/stdStorageSafe.json +2400 -2400
- package/package.json +8 -8
- package/src/World.sol +78 -32
- package/src/schemas/AddressArray.sol +5 -19
- package/src/tables/RouteAccess.sol +35 -30
- package/src/tables/SystemTable.sol +142 -23
- package/types/ethers-contracts/IStore.ts +49 -0
- package/types/ethers-contracts/Store.ts +49 -0
- package/types/ethers-contracts/World.ts +94 -0
- package/types/ethers-contracts/WorldTest.ts +27 -0
- package/types/ethers-contracts/factories/IStore__factory.ts +28 -0
- package/types/ethers-contracts/factories/StoreCore__factory.ts +2 -23
- package/types/ethers-contracts/factories/StoreSwitch__factory.ts +1 -1
- package/types/ethers-contracts/factories/Store__factory.ts +81 -0
- package/types/ethers-contracts/factories/SystemTest__factory.ts +1 -1
- package/types/ethers-contracts/factories/TestSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldTestSystem__factory.ts +12 -1
- package/types/ethers-contracts/factories/WorldTestTableHook__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldTest__factory.ts +11 -34
- package/types/ethers-contracts/factories/World__factory.ts +70 -30
- package/types/ethers-contracts/index.ts +0 -2
- package/abi/SystemSchemaLib.json +0 -3704
- package/src/schemas/SystemSchema.sol +0 -78
- package/types/ethers-contracts/StoreCoreExtended.ts +0 -141
- package/types/ethers-contracts/factories/StoreCoreExtended__factory.ts +0 -123
|
@@ -118,6 +118,11 @@ const _abi = [
|
|
|
118
118
|
name: "StoreCore_InvalidFieldNamesLength",
|
|
119
119
|
type: "error",
|
|
120
120
|
},
|
|
121
|
+
{
|
|
122
|
+
inputs: [],
|
|
123
|
+
name: "StoreCore_NotDynamicField",
|
|
124
|
+
type: "error",
|
|
125
|
+
},
|
|
121
126
|
{
|
|
122
127
|
inputs: [
|
|
123
128
|
{
|
|
@@ -446,6 +451,67 @@ const _abi = [
|
|
|
446
451
|
stateMutability: "view",
|
|
447
452
|
type: "function",
|
|
448
453
|
},
|
|
454
|
+
{
|
|
455
|
+
inputs: [
|
|
456
|
+
{
|
|
457
|
+
internalType: "string",
|
|
458
|
+
name: "accessRoute",
|
|
459
|
+
type: "string",
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
internalType: "string",
|
|
463
|
+
name: "subRoute",
|
|
464
|
+
type: "string",
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
internalType: "bytes32[]",
|
|
468
|
+
name: "key",
|
|
469
|
+
type: "bytes32[]",
|
|
470
|
+
},
|
|
471
|
+
{
|
|
472
|
+
internalType: "uint8",
|
|
473
|
+
name: "schemaIndex",
|
|
474
|
+
type: "uint8",
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
internalType: "bytes",
|
|
478
|
+
name: "dataToPush",
|
|
479
|
+
type: "bytes",
|
|
480
|
+
},
|
|
481
|
+
],
|
|
482
|
+
name: "pushToField",
|
|
483
|
+
outputs: [],
|
|
484
|
+
stateMutability: "nonpayable",
|
|
485
|
+
type: "function",
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
inputs: [
|
|
489
|
+
{
|
|
490
|
+
internalType: "uint256",
|
|
491
|
+
name: "tableRouteId",
|
|
492
|
+
type: "uint256",
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
internalType: "bytes32[]",
|
|
496
|
+
name: "key",
|
|
497
|
+
type: "bytes32[]",
|
|
498
|
+
},
|
|
499
|
+
{
|
|
500
|
+
internalType: "uint8",
|
|
501
|
+
name: "schemaIndex",
|
|
502
|
+
type: "uint8",
|
|
503
|
+
},
|
|
504
|
+
{
|
|
505
|
+
internalType: "bytes",
|
|
506
|
+
name: "dataToPush",
|
|
507
|
+
type: "bytes",
|
|
508
|
+
},
|
|
509
|
+
],
|
|
510
|
+
name: "pushToField",
|
|
511
|
+
outputs: [],
|
|
512
|
+
stateMutability: "nonpayable",
|
|
513
|
+
type: "function",
|
|
514
|
+
},
|
|
449
515
|
{
|
|
450
516
|
inputs: [
|
|
451
517
|
{
|
|
@@ -784,48 +850,26 @@ const _abi = [
|
|
|
784
850
|
];
|
|
785
851
|
|
|
786
852
|
const _bytecode =
|
|
787
|
-
"0x60806040523480156200001157600080fd5b50620000276200014860201b6200100b1760201c565b6200003c620001a860201b6200104e1760201c565b62000051620001e160201b620010771760201c565b620000666200020960201b620010a01760201c565b6200007b6200024960201b620010d11760201c565b620000906200028260201b620010fa1760201c565b60408051602080820183526000918290528251808201909352908252620000d19160008051602062006f218339815191529162001123620002aa821b17901c565b60408051602080820190925260009052620001089060008051602062006f218339815191529033906200114e620002d8821b17901c565b60408051602080820190925260009052620001429060008051602062006f218339815191529033906001906200117962000302821b17901c565b62002255565b6200017c60008051602062006f8183398151915260001c62000176605f620003e360201b620012451760201c565b62000466565b62000191620004c560201b620012bd1760201c565b620001a6620004e360201b620012e91760201c565b565b620001a67f5dd6baccd56175e1a209a38a3465825008df442582acc99d188a02842bcff8b260001c6200051260201b620013151760201c565b620001a660008051602062006fa183398151915260001c6200052460201b620013241760201c565b620001a67fff3660d6accf52e4c697ecc6731ea766ff66d5b164b1885800c4098911d260646200023862000533565b620005c260201b620013301760201c565b620001a67f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa860001c6200064760201b620013b51760201c565b620001a660008051602062006f4183398151915260001c6200065660201b620013c11760201c565b620002d460008051602062006fa183398151915260001c83836200066560201b620013cd1760201c565b5050565b620002d460008051602062006f4183398151915260001c8383620006c760201b6200141f1760201c565b6040805160028082526060820183526000926020830190803683370190505090508360001b816000815181106200033d576200033d62001e48565b6020026020010181815250508260601b6001600160601b031916816001815181106200036d576200036d62001e48565b602002602001018181525050620003dd7fff3660d6accf52e4c697ecc6731ea766ff66d5b164b1885800c4098911d2606460001c82600085604051602001620003bd91151560f81b815260010190565b6040516020818303038152906040526200073c60201b620014941760201c565b50505050565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106200041f576200041f62001e48565b602002602001019060c58111156200043b576200043b62001e5e565b908160c581111562000451576200045162001e5e565b9052506200045f81620007d0565b9392505050565b6200047c81620009b260201b6200152c1760201c565b620004878262000ba2565b15620004ae57604051632fe94bd160e11b8152600481018390526024015b60405180910390fd5b620002d4828262000bcb60201b620016ee1760201c565b620001a660008051602062006fc18339815191526200023862000ce7565b620001a67f15985d03d398bf6f1a658e500e78fbbf35cd784646b3998d4f26a9a9e441a6276200023862000d24565b62000521816200023862000daf565b50565b62000521816200023862000dcf565b6040805160018082528183019092526000918291906020808301908036833701905050905060608160008151811062000570576200057062001e48565b602002602001019060c58111156200058c576200058c62001e5e565b908160c5811115620005a257620005a262001e5e565b81525050620005bc81620007d060201b620017ec1760201c565b91505090565b620005cc62000de8565b15620005e957620002d482826200046660201b62001a411760201c565b604051630440a07f60e51b8152600481018390526024810182905233906388140fe090604401600060405180830381600087803b1580156200062a57600080fd5b505af11580156200063f573d6000803e3d6000fd5b505050505050565b62000521816200023862000e5d565b62000521816200023862000e76565b604080516001808252818301909252600091602080830190803683370190505090508260001b81600081518110620006a157620006a162001e48565b602002602001018181525050620003dd84826000856200073c60201b620014941760201c565b604080516001808252818301909252600091602080830190803683370190505090508260001b8160008151811062000703576200070362001e48565b602002602001018181525050620003dd8482600085604051602001620003bd919060609190911b6001600160601b031916815260140190565b6200074662000de8565b156200076b57620007658484848462000e8f60201b62001a971760201c565b620003dd565b6040516348e22e9160e11b815233906391c45d22906200079690879087908790879060040162001f0e565b600060405180830381600087803b158015620007b157600080fd5b505af1158015620007c6573d6000803e3d6000fd5b5050505050505050565b6000601c82511115620007fc578151604051635318beb960e01b8152600401620004a591815260200190565b60008060008060005b86518110156200090f576000620008578883815181106200082a576200082a62001e48565b602002602001015160c581111562000846576200084662001e5e565b6200100660201b62001bc61760201c565b905061ffff811615620008995782156200088457604051633c795af960e21b815260040160405180910390fd5b83620008908162001f5c565b9450506200089e565b600192505b620008aa818662001f7e565b94506200090386620008be84600462001fa7565b8a8581518110620008d357620008d362001e48565b602002602001015160c5811115620008ef57620008ef62001e5e565b60f81b620010cd60201b62001c771760201c565b95505060010162000805565b50600082875162000921919062001fc2565b9050600e8160ff1611156200094f57604051635318beb960e01b815260ff82166004820152602401620004a5565b6200096b8560008660f01b6200110360201b62001cad1760201c565b9450620009898560028560f81b620010cd60201b62001c771760201c565b9450620009a78560038360f81b620010cd60201b62001c771760201c565b979650505050505050565b620009c8816200112160201b62001ce31760201c565b15620009eb57604051635318beb960e01b815260006004820152602401620004a5565b600062000a03826200112560201b62001ce71760201c565b60ff169050600e81111562000a2f57604051635318beb960e01b815260048101829052602401620004a5565b600062000a47836200114860201b62001cf81760201c565b60ff169050601c62000a5a838362001fa7565b111562000a8a5762000a6d828262001fa7565b604051635318beb960e01b8152600401620004a591815260200190565b60008060005b62000a9c858562001fa7565b81101562000b5057600062000ad862000ac483896200116260201b62001d041790919060201c565b60c581111562000846576200084662001e5e565b111562000b155783811062000b0057604051633c795af960e21b815260040160405180910390fd5b8262000b0c8162001fe8565b93505062000b47565b8381101562000b3757604051633c795af960e21b815260040160405180910390fd5b8162000b438162001fe8565b9250505b60010162000a90565b5082821462000b7657604051635318beb960e01b815260048101839052602401620004a5565b83811462000b9b57604051635318beb960e01b815260048101829052602401620004a5565b5050505050565b600062000bc462000bb3836200119e565b6200112160201b62001ce31760201c565b1592915050565b604080516001808252818301909252600091602080830190803683370190505090508260001b8160008151811062000c075762000c0762001e48565b6020908102919091010152600062000c2f60008051602062006f8183398151915283620011bc565b905062000c5d8162000c4c856200120360201b62001d301760201c565b6200120660201b620017681760201c565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f60008051602062006f8183398151915260001c8362000ca8866200120360201b62001d301760201c565b60405160200162000cbb91815260200190565b60408051601f198184030181529082905262000cd993929162002004565b60405180910390a150505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060c38160008151811062000570576200057062001e48565b6040805160028082526060820183526000928392919060208301908036833701905050905060c58160008151811062000d615762000d6162001e48565b602002602001019060c581111562000d7d5762000d7d62001e5e565b908160c581111562000d935762000d9362001e5e565b8152505060c48160018151811062000570576200057062001e48565b600062000dca606060616200120a60201b62001d331760201c565b905090565b600062000dca60c5620003e360201b620012451760201c565b6000303b80820362000dfc57600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801562000e3657600080fd5b505afa92505050801562000e48575060015b62000e5557600091505090565b600191505090565b600062000dca601f620003e360201b620012451760201c565b600062000dca6061620003e360201b620012451760201c565b600062000e9c856200119e565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce8585858560405162000ed5949392919062001f0e565b60405180910390a1600062000ef88660001b620012db60201b62001de81760201c565b905060005b815181101562000fa757600082828151811062000f1e5762000f1e62001e48565b60200260200101519050806001600160a01b0316637d09d033898989896040518563ffffffff1660e01b815260040162000f5c949392919062001f0e565b600060405180830381600087803b15801562000f7757600080fd5b505af115801562000f8c573d6000803e3d6000fd5b5050505050808062000f9e9062001fe8565b91505062000efd565b5062000fbe826200114860201b62001cf81760201c565b60ff168460ff16101562000fec5762000fe686868487876200138260201b62001e711760201c565b6200063f565b6200063f86868487876200143a60201b62001f171760201c565b6000808260c58111156200101e576200101e62001e5e565b60ff16905060208110156200103a576200045f81600162001fa7565b60408110156200105f5760206200105382600162001fa7565b6200045f91906200203d565b6060811015620010785760406200105382600162001fa7565b60608360c58111156200108f576200108f62001e5e565b036200109e5750600192915050565b60618360c5811115620010b557620010b562001e5e565b03620010c45750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c6001600160f01b031990911c198416179392505050565b1590565b60006200113f826003620014a660201b62001d151760201c565b60f81c92915050565b60006200113f826002620014a660201b62001d151760201c565b600062001187836200117684600462001fa7565b620014a660201b62001d151760201c565b60f81c60c58111156200045f576200045f62001e5e565b6000620011b682620014ad60201b62001f541760201c565b92915050565b600060008051602062006f618339815191528383604051602001620011e49392919062002057565b60408051601f1981840301815291905280516020909101209392505050565b90565b9055565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811062001246576200124662001e48565b602002602001019060c581111562001262576200126262001e5e565b908160c581111562001278576200127862001e5e565b81525050828160018151811062001293576200129362001e48565b602002602001019060c5811115620012af57620012af62001e5e565b908160c5811115620012c557620012c562001e5e565b905250620012d381620007d0565b949350505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811062001318576200131862001e48565b60200260200101818152505060006200135160008051602062006fc183398151915260001c8360006200153b60201b62001fd11760201c565b9050620012d3620013718260008451620015de60201b620020771760201c565b6200165460201b620021071760201c565b6000620013a18360ff16856200116260201b62001d041790919060201c565b90508151620013be8260c581111562000846576200084662001e5e565b146200140257620013dd8160c581111562000846576200084662001e5e565b825160405163521b3d3360e01b815260048101929092526024820152604401620004a5565b6000620014108787620011bc565b9050600062001420868662001672565b9050620007c6828286620016cc60201b620021181760201c565b600062001452846200114860201b62001cf81760201c565b6200145e908462001fc2565b9050620014758686838551620016e960201b60201c565b6000620014848787846200174f565b90506200149d81846200179960201b6200212d1760201c565b50505050505050565b6008021b90565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110620014ec57620014ec62001e48565b60200260200101818152505060006200152360008051602062006f8183398151915260001c83620011bc60201b620021391760201c565b9050620012d381620017a760201b6200218f1760201c565b60606200154762000de8565b156200156d5762001565848484620017ab60201b620021931760201c565b90506200045f565b604051636a50093760e11b8152339063d4a0126e90620015969087908790879060040162002078565b600060405180830381865afa158015620015b4573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052620015659190810190620020a6565b6000818311158015620015f2575083518211155b62001618578383836040516323230fa360e01b8152600401620004a59392919062002153565b6020840162001628848262001fa7565b905060006200163885856200203d565b6001600160801b031660809290921b9190911795945050505050565b606060006200045f8360146000620017d360201b620021ae1760201c565b600080805b8360ff16811015620016c457620016a162000ac482876200116260201b62001d041790919060201c565b620016ad908362001fa7565b915080620016bb8162001fe8565b91505062001677565b509392505050565b6000602082019050620003dd84848385516200191e60201b60201c565b6000620016f7858562001a06565b905060006200171182620017a760201b6200218f1760201c565b9050620017328460ff16848362001a2e60201b620022f1179092919060201c565b90506200063f8262000c4c836200120360201b62001d301760201c565b600060008051602062006f618339815191528484846040516020016200177994939291906200217a565b60408051601f198184030181529190528051602090910120949350505050565b620002d482600083620016cc565b5490565b60606000620017ba856200119e565b9050620017ca8585858462001af8565b95945050505050565b60606000620017ed8562001b5860201b620023cd1760201c565b90506000620018078662001b5e60201b620023d31760201c565b905060008462001832576200181e866008620021af565b6200182c906101006200203d565b62001835565b60005b905060008683816200184b576200184b620021d1565b0490506200185a8784620021e7565b15620018cf5760405162461bcd60e51b815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401620004a5565b602080820201604051955080860160405250808552600060208601855b8383101562001910578051851c8252600192909201916020909101908901620018ec565b505050505050509392505050565b602083048401935060208381620019395762001939620021d1565b0692508215620019a75760008360200390506000620019638362001b6a60201b620023e81760201c565b90506008850281811c91508451811c905081198754168282161787555081831162001990575050620003dd565b6200199d60018762001fa7565b9550509182019190035b60208110620019d45781518455620019c160018562001fa7565b935060209190910190601f1901620019a7565b8015620003dd576000620019f38262001b6a60201b620023e81760201c565b8554845182169119161785555050505050565b600060008051602062006f618339815191528383604051602001620011e4939291906200220a565b6000838162001a3d8260e01c90565b9050600062001a508760ff881662001b77565b905080851062001a7a5762001a6681866200203d565b62001a72908362001fa7565b915062001a95565b62001a8685826200203d565b62001a9290836200203d565b91505b600062001aa4876002620021af565b62001ab190600462001fa7565b905062001acf8460008560e01b62001bb860201b620023f51760201c565b935062001aec84828860f01b6200110360201b62001cad1760201c565b98975050505050505050565b606062001b10826200114860201b62001cf81760201c565b60ff168360ff16101562001b3f5762001b378585858562001bd660201b6200242b1760201c565b9050620012d3565b62001b378585858562001c5b60201b6200248b1760201c565b60801c90565b6001600160801b031690565b60001960089091021c1990565b60008062001b87836002620021af565b62001b9490600462001fa7565b905062001bad8482620014a660201b62001d151760201c565b60f01c949350505050565b6008820281811c6001600160e01b031990911c198416179392505050565b6060600062001bf78460ff16846200116260201b62001d041790919060201c565b9050600062001c148260c581111562000846576200084662001e5e565b9050600062001c248888620011bc565b9050600062001c34868862001672565b905062001c4e82848362001cd760201b620024d81760201c565b9998505050505050505050565b6060600062001c75836200114860201b62001cf81760201c565b62001c81908562001fc2565b9050600062001c928787846200174f565b9050600062001cbe60ff841662001caa8a8a62001d34565b62001b7760201b620025381790919060201c565b905062001aec828262001d4360201b6200256a1760201c565b6060826001600160401b0381111562001cf45762001cf462001e32565b6040519080825280601f01601f19166020018201604052801562001d1f576020820181803683370190505b50905060208101620016c48585858462001d53565b60008062001523848462001a06565b60606200045f8383600062001cd7565b60208204840193506020828162001d6e5762001d6e620021d1565b069150811562001dd4576000826020039050600062001d988262001b6a60201b620023e81760201c565b90508554600885021b81198451168282161784525081851162001dbd575050620003dd565b62001dca60018762001fa7565b9550509283900392015b6020831062001e00578354815262001dee60018562001fa7565b9350601f199092019160200162001dd4565b8215620003dd57600062001e1f8462001b6a60201b620023e81760201c565b8251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b8381101562001ea65781518752958201959082019060010162001e88565b509495945050505050565b60005b8381101562001ece57818101518382015260200162001eb4565b83811115620003dd5750506000910152565b6000815180845262001efa81602086016020860162001eb1565b601f01601f19169290920160200192915050565b84815260806020820152600062001f29608083018662001e74565b60ff851660408401528281036060840152620009a7818562001ee0565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff810362001f755762001f7562001f46565b60010192915050565b600061ffff80831681851680830382111562001f9e5762001f9e62001f46565b01949350505050565b6000821982111562001fbd5762001fbd62001f46565b500190565b600060ff821660ff84168082101562001fdf5762001fdf62001f46565b90039392505050565b60006001820162001ffd5762001ffd62001f46565b5060010190565b8381526060602082015260006200201f606083018562001e74565b828103604084015262002033818562001ee0565b9695505050505050565b60008282101562002052576200205262001f46565b500390565b838152826020820152606060408201526000620017ca606083018462001e74565b83815260606020820152600062002093606083018562001e74565b905060ff83166040830152949350505050565b600060208284031215620020b957600080fd5b81516001600160401b0380821115620020d157600080fd5b818401915084601f830112620020e657600080fd5b815181811115620020fb57620020fb62001e32565b604051601f8201601f19908116603f0116810190838211818310171562002126576200212662001e32565b816040528281528760208487010111156200214057600080fd5b620009a783602083016020880162001eb1565b60608152600062002168606083018662001ee0565b60208301949094525060400152919050565b8481528360208201526080604082015260006200219b608083018562001e74565b905060ff8316606083015295945050505050565b6000816000190483118215151615620021cc57620021cc62001f46565b500290565b634e487b7160e01b600052601260045260246000fd5b6000826200220557634e487b7160e01b600052601260045260246000fd5b500690565b8381528260208201526080604082015260006200222b608083018462001e74565b828103606084015260068152650d8cadccee8d60d31b602082015260408101915050949350505050565b614cbc80620022656000396000f3fe608060405234801561001057600080fd5b50600436106101985760003560e01c806388140fe0116100e3578063a666a3801161008c578063d99ddc0711610066578063d99ddc071461033b578063f37c215e1461034e578063fcc7cfa11461036157600080fd5b8063a666a38014610302578063afc6325f14610315578063d4a0126e1461032857600080fd5b8063971eb6cb116100bd578063971eb6cb146102dc578063a2d3d4fb146102ef578063a5c2f007146101d657600080fd5b806388140fe0146102a357806391a0f609146102b657806391c45d22146102c957600080fd5b80634408b6fd116101455780635f44b42a1161011f5780635f44b42a1461026a578063651a0d1a1461027d578063678e3cfb1461029057600080fd5b80634408b6fd1461023157806349ba5623146102445780634d5614681461025757600080fd5b8063174e23be11610176578063174e23be146101eb578063293b4852146101fe5780632b26fb291461021e57600080fd5b806304fb25a91461019d57806307ff106e146101c35780630d14ff90146101d8575b600080fd5b6101b06101ab366004613d3b565b610374565b6040519081526020015b60405180910390f35b6101d66101d1366004613dd5565b61047a565b005b6101d66101e6366004613e05565b505050565b6101d66101f9366004613ea1565b610546565b61021161020c366004613f1b565b6105ba565b6040516101ba9190613fdf565b6101b061022c366004613ff2565b6105e3565b6101b061023f36600461400b565b6105f4565b610211610252366004614144565b610617565b6101d66102653660046141d9565b6106e2565b6101d66102783660046142b3565b610823565b6101d661028b36600461434d565b61086e565b6101d661029e366004613e05565b6108f6565b6101d66102b13660046143a9565b61093e565b6101d66102c43660046142b3565b61096d565b6101d66102d73660046143cb565b610a75565b6101d66102ea366004614446565b610aff565b6102116102fd366004614492565b610b53565b6101d66103103660046144e5565b610b96565b6101d6610323366004613e05565b610cd4565b6102116103363660046145a9565b610d5e565b610211610349366004614446565b610d9f565b6101d661035c366004613e05565b610dde565b6101b061036f366004613f1b565b610e64565b600061037f83612578565b156103c6576040517fb86487840000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024015b60405180910390fd5b600061040788888080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b905033610413826125af565b6001600160a01b03161461044057878733604051631ff9118960e21b81526004016103bd93929190614632565b61044c88888888610e64565b91506104598285856125db565b6104638483612607565b61046f81856001611179565b509695505050505050565b33610484836125af565b6001600160a01b0316146104b75761049b82612632565b33604051631ff9118960e21b81526004016103bd92919061465f565b6040517fcf6ca70e000000000000000000000000000000000000000000000000000000008152600481018390526001600160a01b038216602482015273__$a92a6b4f8097205d5d95c0306d5040ea3a$__9063cf6ca70e9060440160006040518083038186803b15801561052a57600080fd5b505af415801561053e573d6000803e3d6000fd5b505050505050565b33610550866125af565b6001600160a01b0316146105675761049b85612632565b6105b38585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105ae925086915087905061468a565b61265e565b5050505050565b60606105d88585604051806020016040528060008152508686610617565b90505b949350505050565b60006105ee826126fc565b92915050565b600061060286868686610e64565b905061060e8183611a41565b95945050505050565b606060008686866040516020016106309392919061470e565b6040516020818303038152906040529050600061065282805160209091012090565b905060008061066083612707565b91509150806106bf576106748a8a3361273d565b61069757898933604051631ff9118960e21b81526004016103bd93929190614632565b6106a088612787565b6106bf5787604051630229745760e21b81526004016103bd9190613fdf565b6106d4338389896106cf896127b9565b612858565b9a9950505050505050505050565b6106ed89893361273d565b61071057888833604051631ff9118960e21b81526004016103bd93929190614632565b61074f87878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278792505050565b610770578686604051630229745760e21b81526004016103bd929190614735565b6000898989896040516020016107899493929190614749565b6040516020818303038152906040528051906020012060001c90506108178187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611a9792505050565b50505050505050505050565b61053e61086587878080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b85858585610546565b6108788533612960565b6108855761049b85612632565b6105b38585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061296c92505050565b6101e661093884848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b8261047a565b33610948836125af565b6001600160a01b03161461095f5761049b82612632565b6109698282611a41565b5050565b61097886863361273d565b61099b57858533604051631ff9118960e21b81526004016103bd93929190614632565b6109da84848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278792505050565b6109fb578383604051630229745760e21b81526004016103bd929190614735565b600086868686604051602001610a149493929190614749565b6040516020818303038152906040528051906020012060001c9050610a6c81848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612bc192505050565b50505050505050565b610a7f8633612960565b610a8c5761049b86612632565b61053e8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611a9792505050565b610b098333612960565b610b165761049b83612632565b6101e683838380806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612bc192505050565b60606105d885858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612d4a915050565b565b610ba188883361273d565b610bc457878733604051631ff9118960e21b81526004016103bd93929190614632565b610c0386868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061278792505050565b610c24578585604051630229745760e21b81526004016103bd929190614735565b600088888888604051602001610c3d9493929190614749565b6040516020818303038152906040528051906020012060001c9050610cc98186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061296c92505050565b505050505050505050565b6000610d1584848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b905033610d21826125af565b6001600160a01b031614610d4e57838333604051631ff9118960e21b81526004016103bd93929190614632565b610d588183612eaf565b50505050565b60606105d885858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612193915050565b60606105db84848480806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250612f4e92505050565b6000610e1f84848080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b905033610e2b826125af565b6001600160a01b031614610e5857838333604051631ff9118960e21b81526004016103bd93929190614632565b610d5881836001611179565b6000610ea583838080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506127b992505050565b610ec6578282604051630229745760e21b81526004016103bd929190614735565b6000610f0786868080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b60408051602081019091526000905290507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470811480610f4a5750610f4a81612fa2565b610f6b578585604051630229745760e21b81526004016103bd929190614735565b600086868686604051602001610f849493929190614749565b60408051808303601f190181529190528051602082012093509050610fa883612fa2565b15610fe157806040517f71c3ce580000000000000000000000000000000000000000000000000000000081526004016103bd9190613fdf565b610feb8382611123565b610ff5833361114e565b61100183336001611179565b5050949350505050565b61103e7f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e611039605f611245565b611a41565b6110466112bd565b610b946112e9565b610b947f5dd6baccd56175e1a209a38a3465825008df442582acc99d188a02842bcff8b2611315565b610b947fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c738611324565b610b947fff3660d6accf52e4c697ecc6731ea766ff66d5b164b1885800c4098911d260646110cc612fce565b611330565b610b947f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa86113b5565b610b947fc3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a27828656113c1565b6109697fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c73883836113cd565b6109697fc3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a2782865838361141f565b6040805160028082526060820183526000926020830190803683370190505090508360001b816000815181106111b1576111b161476b565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106111e3576111e361476b565b602002602001018181525050610d587fff3660d6accf52e4c697ecc6731ea766ff66d5b164b1885800c4098911d2606460001c8260008560405160200161123191151560f81b815260010190565b604051602081830303815290604052611494565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061127e5761127e61476b565b602002602001019060c581111561129757611297614781565b908160c58111156112aa576112aa614781565b9052506112b6816117ec565b9392505050565b610b947f06b5dc7e596fa43e25167e48d832e4c70496213f6ed3461c2907e02250aa88a76110cc613046565b610b947f15985d03d398bf6f1a658e500e78fbbf35cd784646b3998d4f26a9a9e441a6276110cc613080565b611321816110cc6130ff565b50565b611321816110cc613112565b61133861311e565b15611347576109698282611a41565b6040517f88140fe0000000000000000000000000000000000000000000000000000000008152600481018390526024810182905233906388140fe0906044015b600060405180830381600087803b1580156113a157600080fd5b505af115801561053e573d6000803e3d6000fd5b611321816110cc61318f565b611321816110cc61319b565b604080516001808252818301909252600091602080830190803683370190505090508260001b816000815181106114065761140661476b565b602002602001018181525050610d588482600085611494565b604080516001808252818301909252600091602080830190803683370190505090508260001b816000815181106114585761145861476b565b602002602001018181525050610d588482600085604051602001611231919060609190911b6bffffffffffffffffffffffff1916815260140190565b61149c61311e565b156114b2576114ad84848484611a97565b610d58565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d22906114f49087908790879087906004016147d2565b600060405180830381600087803b15801561150e57600080fd5b505af1158015611522573d6000803e3d6000fd5b5050505050505050565b8061154d57604051635318beb960e01b8152600060048201526024016103bd565b600061155882611ce7565b60ff169050600e81111561158257604051635318beb960e01b8152600481018290526024016103bd565b600061158d83611cf8565b60ff169050601c61159e838361481c565b11156115ca576115ae828261481c565b604051635318beb960e01b81526004016103bd91815260200190565b60008060005b6115da858561481c565b8110156116a75760006116066115f08884611d04565b60c581111561160157611601614781565b611bc6565b111561165757838110611645576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8261164f81614834565b93505061169f565b83811015611691576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161169b81614834565b9250505b6001016115d0565b508282146116cb57604051635318beb960e01b8152600481018390526024016103bd565b8381146105b357604051635318beb960e01b8152600481018290526024016103bd565b604080516001808252818301909252600091602080830190803683370190505090508260001b816000815181106117275761172761476b565b6020908102919091010152600061175e7f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e83612139565b838155905061176c565b9055565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f7f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e83856040516020016117c291815260200190565b60408051601f19818403018152908290526117de93929161484e565b60405180910390a150505050565b6000601c82511115611816578151604051635318beb960e01b81526004016103bd91815260200190565b60008060008060005b865181101561193d57600061185888838151811061183f5761183f61476b565b602002602001015160c581111561160157611601614781565b905061ffff8116156118ae57821561189c576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b836118a681614883565b9450506118b3565b600192505b6118bd81866148a2565b9450611932866118ce84600461481c565b8a85815181106118e0576118e061476b565b602002602001015160c58111156118f9576118f9614781565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b95505060010161181f565b50600082875161194d91906148c8565b9050600e8160ff16111561197957604051635318beb960e01b815260ff821660048201526024016103bd565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b611a4a8161152c565b611a53826131a7565b15611a8d576040517f5fd297a2000000000000000000000000000000000000000000000000000000008152600481018390526024016103bd565b61096982826116ee565b6000611aa2856126fc565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce85858585604051611ad994939291906147d2565b60405180910390a16000611aec86611de8565b905060005b8151811015611b90576000828281518110611b0e57611b0e61476b565b60200260200101519050806001600160a01b0316637d09d033898989896040518563ffffffff1660e01b8152600401611b4a94939291906147d2565b600060405180830381600087803b158015611b6457600080fd5b505af1158015611b78573d6000803e3d6000fd5b50505050508080611b8890614834565b915050611af1565b50611b9a82611cf8565b60ff168460ff161015611bb957611bb48686848787611e71565b61053e565b61053e8686848787611f17565b6000808260c5811115611bdb57611bdb614781565b60ff1690506020811015611bf4576112b681600161481c565b6040811015611c14576020611c0a82600161481c565b6112b691906148eb565b6060811015611c2a576040611c0a82600161481c565b60608360c5811115611c3e57611c3e614781565b03611c4c5750600192915050565b60618360c5811115611c6057611c60614781565b03611c6e5750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b1590565b6000601882901b5b60f81c92915050565b6000601082901b611cef565b6000611d1c83611d1584600461481c565b6008021b90565b60f81c60c58111156112b6576112b6614781565b90565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110611d6c57611d6c61476b565b602002602001019060c5811115611d8557611d85614781565b908160c5811115611d9857611d98614781565b815250508281600181518110611db057611db061476b565b602002602001019060c5811115611dc957611dc9614781565b908160c5811115611ddc57611ddc614781565b9052506105db816117ec565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110611e2257611e2261476b565b60209081029190910101526000611e5a7f06b5dc7e596fa43e25167e48d832e4c70496213f6ed3461c2907e02250aa88a78383611fd1565b90506105db611e6c8260008451612077565b612107565b6000611e808460ff8516611d04565b90508151611e998260c581111561160157611601614781565b14611ef057611eb38160c581111561160157611601614781565b82516040517f521b3d33000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103bd565b6000611efc8787612139565b90506000611f0a86866131bc565b9050611522828286612118565b6000611f2284611cf8565b611f2c90846148c8565b9050611f3b86868385516131f7565b6000611f48878784613229565b9050610a6c818461212d565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110611f9057611f9061476b565b60209081029190910101526000611fc77f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e83612139565b90506105db815490565b6060611fdb61311e565b15611ff257611feb848484612193565b90506112b6565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e9061203290879087908790600401614902565b600060405180830381865afa15801561204f573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052611feb919081019061492e565b600081831115801561208a575083518211155b6120c6578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103bd9392919061499c565b602084016120d4848261481c565b905060006120e285856148eb565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006112b683601460006121ae565b6000602082019050610d588484838551613282565b61096982600083612118565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98383604051602001612170939291906149c1565b60408051601f1981840301815291905280516020909101209392505050565b5490565b606060006121a0856126fc565b905061060e85858584613340565b606060006121bc8560801c90565b90506fffffffffffffffffffffffffffffffff85166000846121f4576121e38660086149e0565b6121ef906101006148eb565b6121f7565b60005b9050600086838161220a5761220a6149ff565b0490506122178784614a15565b156122a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a6500000060648201526084016103bd565b602080820201604051955080860160405250808552600060208601855b838310156122e3578051851c82526001929092019160209091019089016122c1565b505050505050509392505050565b600083816122ff8260e01c90565b90506000612310878760ff16612538565b90508085106123345761232381866148eb565b61232d908361481c565b915061234b565b61233e85826148eb565b61234890836148eb565b91505b60006123588760026149e0565b61236390600461481c565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b60801c90565b6fffffffffffffffffffffffffffffffff1690565b60001960089091021c1990565b6008820281811c7fffffffff0000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6060600061243c8360ff8616611d04565b905060006124558260c581111561160157611601614781565b905060006124638888612139565b9050600061247186886131bc565b905061247e8284836124d8565b9998505050505050505050565b6060600061249883611cf8565b6124a290856148c8565b905060006124b1878784613229565b905060006124cc8360ff166124c68a8a613377565b90612538565b90506123c1828261256a565b60608267ffffffffffffffff8111156124f3576124f361407f565b6040519080825280601f01601f19166020018201604052801561251d576020820181803683370190505b5090506020810161253085858584613384565b509392505050565b6000806125468360026149e0565b61255190600461481c565b905061255f84826008021b90565b60f01c949350505050565b60606112b6838360006124d8565b60006105ee7f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa883613439565b805160209091012090565b60006105ee7fc3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a2782865836134ad565b6101e67f5dd6baccd56175e1a209a38a3465825008df442582acc99d188a02842bcff8b2848484613518565b6109697f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa883836135ab565b60606105ee7fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c73883613619565b6000612669846126fc565b9050815160001480612686575061267f81613683565b60ff168251145b6126d25761269381613683565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044016103bd565b610d588484846040516020016126e89190614a37565b6040516020818303038152906040526136a1565b60006105ee82611f54565b6000806127347f5dd6baccd56175e1a209a38a3465825008df442582acc99d188a02842bcff8b2846137b7565b91509150915091565b60006105db61278185858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506125a492505050565b83612960565b8051600090612794575060015b602f602083015160001a036127a7575060015b60018251036127b4575060005b919050565b60006127c482612787565b6127d057506000919050565b8160015b815181101561284e578181815181106127ef576127ef61476b565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2f0000000000000000000000000000000000000000000000000000000000000003612846575060009392505050565b6001016127d4565b5060019392505050565b6060600084848860405160200161287193929190614ab7565b6040516020818303038152906040529050600080846128ea57876001600160a01b0316836040516128a29190614add565b6000604051808303816000865af19150503d80600081146128df576040519150601f19603f3d011682016040523d82523d6000602084013e6128e4565b606091505b50612944565b876001600160a01b0316836040516129029190614add565b600060405180830381855af49150503d806000811461293d576040519150601f19603f3d011682016040523d82523d6000602084013e612942565b606091505b505b91509150811561295857925061060e915050565b805160208201fd5b60006112b6838361383d565b6000612977846126fc565b905060006129858260f01c90565b90508060008061299485611ce7565b60ff1611156129c257506020848301015160e081901c6129b590602061481c565b6129bf908361481c565b91505b84518214612a095784516040517f521b3d330000000000000000000000000000000000000000000000000000000081526103bd918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f878787604051612a3c9392919061484e565b60405180910390a16000612a4f88611de8565b905060005b8151811015612af1576000828281518110612a7157612a7161476b565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b8152600401612aab9392919061484e565b600060405180830381600087803b158015612ac557600080fd5b505af1158015612ad9573d6000803e3d6000fd5b50505050508080612ae990614834565b915050612a54565b506000612afe8989612139565b905060208701612b118260008389613282565b612b1c86602061481c565b612b26908261481c565b9050612b3187611ce7565b60ff16600003612b475750505050505050505050565b6000612b538b8b6138f3565b858155905060008060005b612b678b611ce7565b60ff168160ff161015612bb157612b7f8e8e83613229565b9250612b8e8860ff8316612538565b9150612b9d8360008785613282565b612ba7828661481c565b9450600101612b5e565b5050505050505050505050505050565b6000612bcc836126fc565b90507ffd36aacc4303ae7315a10b19412d3c2df14f76c9687ef14bf499d0b87373f6e28383604051612bff929190614af9565b60405180910390a16000612c1284611de8565b905060005b8151811015612cb2576000828281518110612c3457612c3461476b565b60200260200101519050806001600160a01b0316631a808b3c87876040518363ffffffff1660e01b8152600401612c6c929190614af9565b600060405180830381600087803b158015612c8657600080fd5b505af1158015612c9a573d6000803e3d6000fd5b50505050508080612caa90614834565b915050612c17565b506000612cbf8585612139565b9050612d19816000612cd18660f01c90565b67ffffffffffffffff811115612ce957612ce961407f565b6040519080825280601f01601f191660200182016040528015612d13576020820181803683370190505b50612118565b612d2283611ce7565b60ff16600003612d33575050505050565b6000612d3f86866138f3565b60008155905061053e565b60606000612d588360f01c90565b905080600080612d6786611ce7565b60ff1690508015612db257612d7c8888613377565b91506000612d8a8360e01c90565b1115612db257612d9a8260e01c90565b612da590602061481c565b612daf908461481c565b92505b60008367ffffffffffffffff811115612dcd57612dcd61407f565b6040519080825280601f01601f191660200182016040528015612df7576020820181803683370190505b50905060208101612e0a8a8a888461392a565b612e148460e01c90565b600003612e28575094506112b69350505050565b612e32868261481c565b8481529050612e4260208261481c565b905060005b838160ff161015612ea0576000612e5f8c8c84613229565b90506000612e708760ff8516612538565b9050612e7f8282600087613384565b612e89818561481c565b935050508080612e9890614883565b915050612e47565b50909998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508260001b81600081518110612ee757612ee761476b565b6020026020010181815250508160601b6bffffffffffffffffffffffff191681600181518110612f1957612f1961476b565b60209081029190910101526101e67fff3660d6accf52e4c697ecc6731ea766ff66d5b164b1885800c4098911d260648261394b565b60606000612f5b846126fc565b905080612f97576040517f3a545452000000000000000000000000000000000000000000000000000000008152600481018590526024016103bd565b6105db848483612d4a565b60006105ee7fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c738836139a0565b604080516001808252818301909252600091829190602080830190803683370190505090506060816000815181106130085761300861476b565b602002602001019060c581111561302157613021614781565b908160c581111561303457613034614781565b905250613040816117ec565b91505090565b6040805160018082528183019092526000918291906020808301908036833701905050905060c3816000815181106130085761300861476b565b6040805160028082526060820183526000928392919060208301908036833701905050905060c5816000815181106130ba576130ba61476b565b602002602001019060c58111156130d3576130d3614781565b908160c58111156130e6576130e6614781565b8152505060c4816001815181106130085761300861476b565b600061310d60606061611d33565b905090565b600061310d60c5611245565b6000303b80820361313157600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b15801561316a57600080fd5b505afa92505050801561317b575060015b61318757600091505090565b600191505090565b600061310d601f611245565b600061310d6061611245565b60006131b5611ce3836126fc565b1592915050565b600080805b8360ff16811015612530576131d96115f08683611d04565b6131e3908361481c565b9150806131ef81614834565b9150506131c1565b600061320385856138f3565b9050600061320f825490565b905061321f8160ff8616856122f1565b808355905061053e565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016132629493929190614b12565b60408051601f198184030181529190528051602090910120949350505050565b60208304840193506020838161329a5761329a6149ff565b06925082156132f35760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116132de575050610d58565b6132e960018761481c565b9550509182019190035b6020811061331c578151845561330a60018561481c565b935060209190910190601f19016132f3565b8015610d58576000600019600883021c198554845182169119161785555050505050565b606061334b82611cf8565b60ff168360ff16101561336b576133648585858561242b565b90506105db565b6133648585858561248b565b600080611fc784846138f3565b60208204840193506020828161339c5761339c6149ff565b06915081156133ed5760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116133d8575050610d58565b6133e360018761481c565b9550509283900392015b60208310613415578354815261340460018561481c565b9350601f19909201916020016133ed565b8215610d58576000600019600885021c198251865482169119161782525050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508260601b6bffffffffffffffffffffffff1916816000815181106134845761348461476b565b60200260200101818152505061349a8482613a00565b6134a390614b45565b1515949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b816000815181106134e9576134e961476b565b60200260200101818152505060006135018583613a00565b905061350c81614b6c565b60601c95945050505050565b604080516001808252818301909252600091602080830190803683370190505090508360001b816000815181106135515761355161476b565b6020026020010181815250506105b38582858560405160200161359792919060609290921b6bffffffffffffffffffffffff19168252151560f81b601482015260150190565b604051602081830303815290604052613aa3565b604080516001808252818301909252600091602080830190803683370190505090508260601b6bffffffffffffffffffffffff1916816000815181106135f3576135f361476b565b602002602001018181525050610d58848260008560405160200161123191815260200190565b60408051600180825281830190925260609160009190602080830190803683370190505090508260001b816000815181106136565761365661476b565b602002602001018181525050600061366e8583613a00565b905061060e61367e826020613b29565b613b37565b600061368e82611ce7565b61369783611cf8565b6105ee9190614ba5565b6040805160028082526060820183526000926020830190803683370190505090508251816000815181106136d7576136d761476b565b602002602001019061ffff16908161ffff16815250508151816001815181106137025761370261476b565b602002602001019061ffff16908161ffff1681525050600061372382613bb7565b9050600081858560405160200161373c93929190614bca565b60408051601f198184030181526001808452838301909252925060009190602080830190803683370190505090508660001b816000815181106137815761378161476b565b6020908102919091010152610a6c7f15985d03d398bf6f1a658e500e78fbbf35cd784646b3998d4f26a9a9e441a6278284613aa3565b60408051600180825281830190925260009182918291602080830190803683370190505090508360001b816000815181106137f4576137f461476b565b602002602001018181525050600061380c8683613a00565b905061381781614b6c565b60601c9350613832611d3061382d836014613b29565b613c94565b925050509250929050565b604080516002808252606082018352600092839291906020830190803683370190505090508360001b816000815181106138795761387961476b565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106138ab576138ab61476b565b602090810291909101015260006138e37fff3660d6accf52e4c697ecc6731ea766ff66d5b164b1885800c4098911d260648383611fd1565b602081015190915060f81c61060e565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9838360405160200161217093929190614c07565b8115610d5857600061393c8585612139565b90506105b38184600085613384565b61395361311e565b15613962576109698282612bc1565b6040517f971eb6cb000000000000000000000000000000000000000000000000000000008152339063971eb6cb906113879085908590600401614af9565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b816000815181106139dc576139dc61476b565b60200260200101818152505060006139f48583613a00565b51151595945050505050565b6060613a0a61311e565b15613a2057613a198383612f4e565b90506105ee565b6040517fd99ddc07000000000000000000000000000000000000000000000000000000008152339063d99ddc0790613a5e9086908690600401614af9565b600060405180830381865afa158015613a7b573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052613a19919081019061492e565b613aab61311e565b15613abb576101e683838361296c565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a90613afb9086908690869060040161484e565b600060405180830381600087803b158015613b1557600080fd5b505af1158015610a6c573d6000803e3d6000fd5b60006112b683838551612077565b60606000613b458360801c90565b90506fffffffffffffffffffffffffffffffff83168067ffffffffffffffff811115613b7357613b7361407f565b6040519080825280601f01601f191660200182016040528015613b9d576020820181803683370190505b50925060208301613baf838284613ca9565b505050919050565b6000806000805b8451811015613c6957613c3483613bd68360026149e0565b613be190600461481c565b878481518110613bf357613bf361476b565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110613c4857613c4861476b565b602002602001015161ffff1682613c5f9190614c67565b9150600101613bbe565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b176105db565b600080613ca18360801c90565b519392505050565b6020811115613cc0578082828560045afa50505050565b6000600019600883021c1983518551821691191617835250505050565b60008083601f840112613cef57600080fd5b50813567ffffffffffffffff811115613d0757600080fd5b602083019150836020828501011115613d1f57600080fd5b9250929050565b6001600160a01b038116811461132157600080fd5b60008060008060008060808789031215613d5457600080fd5b863567ffffffffffffffff80821115613d6c57600080fd5b613d788a838b01613cdd565b90985096506020890135915080821115613d9157600080fd5b50613d9e89828a01613cdd565b9095509350506040870135613db281613d26565b915060608701358015158114613dc757600080fd5b809150509295509295509295565b60008060408385031215613de857600080fd5b823591506020830135613dfa81613d26565b809150509250929050565b600080600060408486031215613e1a57600080fd5b833567ffffffffffffffff811115613e3157600080fd5b613e3d86828701613cdd565b9094509250506020840135613e5181613d26565b809150509250925092565b60008083601f840112613e6e57600080fd5b50813567ffffffffffffffff811115613e8657600080fd5b6020830191508360208260051b8501011115613d1f57600080fd5b600080600080600060608688031215613eb957600080fd5b85359450602086013567ffffffffffffffff80821115613ed857600080fd5b613ee489838a01613cdd565b90965094506040880135915080821115613efd57600080fd5b50613f0a88828901613e5c565b969995985093965092949392505050565b60008060008060408587031215613f3157600080fd5b843567ffffffffffffffff80821115613f4957600080fd5b613f5588838901613cdd565b90965094506020870135915080821115613f6e57600080fd5b50613f7b87828801613cdd565b95989497509550505050565b60005b83811015613fa2578181015183820152602001613f8a565b83811115610d585750506000910152565b60008151808452613fcb816020860160208601613f87565b601f01601f19169290920160200192915050565b6020815260006112b66020830184613fb3565b60006020828403121561400457600080fd5b5035919050565b60008060008060006060868803121561402357600080fd5b853567ffffffffffffffff8082111561403b57600080fd5b61404789838a01613cdd565b9097509550602088013591508082111561406057600080fd5b5061406d88828901613cdd565b96999598509660400135949350505050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff811182821017156140be576140be61407f565b604052919050565b600067ffffffffffffffff8211156140e0576140e061407f565b50601f01601f191660200190565b600082601f8301126140ff57600080fd5b813561411261410d826140c6565b614095565b81815284602083860101111561412757600080fd5b816020850160208301376000918101602001919091529392505050565b60008060008060006060868803121561415c57600080fd5b853567ffffffffffffffff8082111561417457600080fd5b61418089838a01613cdd565b9097509550602088013591508082111561419957600080fd5b6141a589838a016140ee565b945060408801359150808211156141bb57600080fd5b50613f0a88828901613cdd565b803560ff811681146127b457600080fd5b600080600080600080600080600060a08a8c0312156141f757600080fd5b893567ffffffffffffffff8082111561420f57600080fd5b61421b8d838e01613cdd565b909b50995060208c013591508082111561423457600080fd5b6142408d838e01613cdd565b909950975060408c013591508082111561425957600080fd5b6142658d838e01613e5c565b909750955085915061427960608d016141c8565b945060808c013591508082111561428f57600080fd5b5061429c8c828d01613cdd565b915080935050809150509295985092959850929598565b600080600080600080606087890312156142cc57600080fd5b863567ffffffffffffffff808211156142e457600080fd5b6142f08a838b01613cdd565b9098509650602089013591508082111561430957600080fd5b6143158a838b01613cdd565b9096509450604089013591508082111561432e57600080fd5b5061433b89828a01613e5c565b979a9699509497509295939492505050565b60008060008060006060868803121561436557600080fd5b85359450602086013567ffffffffffffffff8082111561438457600080fd5b61439089838a01613e5c565b909650945060408801359150808211156141bb57600080fd5b600080604083850312156143bc57600080fd5b50508035926020909101359150565b600080600080600080608087890312156143e457600080fd5b86359550602087013567ffffffffffffffff8082111561440357600080fd5b61440f8a838b01613e5c565b909750955085915061442360408a016141c8565b9450606089013591508082111561443957600080fd5b5061433b89828a01613cdd565b60008060006040848603121561445b57600080fd5b83359250602084013567ffffffffffffffff81111561447957600080fd5b61448586828701613e5c565b9497909650939450505050565b600080600080606085870312156144a857600080fd5b84359350602085013567ffffffffffffffff8111156144c657600080fd5b6144d287828801613e5c565b9598909750949560400135949350505050565b6000806000806000806000806080898b03121561450157600080fd5b883567ffffffffffffffff8082111561451957600080fd5b6145258c838d01613cdd565b909a50985060208b013591508082111561453e57600080fd5b61454a8c838d01613cdd565b909850965060408b013591508082111561456357600080fd5b61456f8c838d01613e5c565b909650945060608b013591508082111561458857600080fd5b506145958b828c01613cdd565b999c989b5096995094979396929594505050565b600080600080606085870312156145bf57600080fd5b84359350602085013567ffffffffffffffff8111156145dd57600080fd5b6145e987828801613e5c565b90945092506145fc9050604086016141c8565b905092959194509250565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000614646604083018587614607565b90506001600160a01b0383166020830152949350505050565b6040815260006146726040830185613fb3565b90506001600160a01b03831660208301529392505050565b600067ffffffffffffffff808411156146a5576146a561407f565b8360051b60206146b6818301614095565b8681529185019181810190368411156146ce57600080fd5b865b84811015614702578035868111156146e85760008081fd5b6146f436828b016140ee565b8452509183019183016146d0565b50979650505050505050565b82848237600083820160008152835161472b818360208801613f87565b0195945050505050565b6020815260006105db602083018486614607565b8385823760008482016000815283858237600093019283525090949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b838110156147c7578151875295820195908201906001016147ab565b509495945050505050565b8481526080602082015260006147eb6080830186614797565b60ff851660408401528281036060840152611a368185613fb3565b634e487b7160e01b600052601160045260246000fd5b6000821982111561482f5761482f614806565b500190565b6000600019820361484757614847614806565b5060010190565b8381526060602082015260006148676060830185614797565b82810360408401526148798185613fb3565b9695505050505050565b600060ff821660ff810361489957614899614806565b60010192915050565b600061ffff8083168185168083038211156148bf576148bf614806565b01949350505050565b600060ff821660ff8416808210156148e2576148e2614806565b90039392505050565b6000828210156148fd576148fd614806565b500390565b83815260606020820152600061491b6060830185614797565b905060ff83166040830152949350505050565b60006020828403121561494057600080fd5b815167ffffffffffffffff81111561495757600080fd5b8201601f8101841361496857600080fd5b805161497661410d826140c6565b81815285602083850101111561498b57600080fd5b61060e826020830160208601613f87565b6060815260006149af6060830186613fb3565b60208301949094525060400152919050565b8381528260208201526060604082015260006105d86060830184614797565b60008160001904831182151516156149fa576149fa614806565b500290565b634e487b7160e01b600052601260045260246000fd5b600082614a3257634e487b7160e01b600052601260045260246000fd5b500690565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015614aaa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0888603018452614a98858351613fb3565b94509285019290850190600101614a5e565b5092979650505050505050565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b60008251614aef818460208701613f87565b9190910192915050565b8281526040602082015260006105db6040830184614797565b848152836020820152608060408201526000614b316080830185614797565b905060ff8316606083015295945050505050565b80516020808301519190811015614b66576000198160200360031b1b821691505b50919050565b6000815160208301516bffffffffffffffffffffffff1980821693506014831015613baf5760149290920360031b82901b161692915050565b600060ff821660ff84168060ff03821115614bc257614bc2614806565b019392505050565b83815260008351614be2816020850160208801613f87565b80830190508351614bfa816020840160208801613f87565b0160200195945050505050565b838152826020820152608060408201526000614c266080830184614797565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b600063ffffffff8083168185168083038211156148bf576148bf61480656fea2646970667358221220418116efcb20e48ac3c3ed90aa0efab0dff2917ab765279d760394d35f199d7864736f6c634300080d0033c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470c3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a278286586425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975ebf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c73806b5dc7e596fa43e25167e48d832e4c70496213f6ed3461c2907e02250aa88a7";
|
|
853
|
+
"0x6080604052348015630000001257600080fd5b50630000002b630000016860201b63000010fd1760201c565b6300000043630000020460201b63000011501760201c565b630000005b630000024960201b63000011811760201c565b6300000073630000027560201b63000011aa1760201c565b630000008b630000029760201b63000011d61760201c565b63000000a363000002d360201b63000011ff1760201c565b6040805160208082018352600091829052825180820190935290825263000000e89160008051602063000084c983398151915291630000122863000002ff821b17901c565b6040805160208082019092526000905263000001239060008051602063000084c983398151915290339063000012536300000331821b17901c565b6040805160208082019092526000905263000001619060008051602063000084c9833981519152903390600190630000127e630000035f821b17901c565b6300002fd0565b63000001a2600080516020630000852983398151915260001c630000019b605f630000043a60201b630000134a1760201c565b63000004c8565b63000001ba630000053060201b63000013c21760201c565b63000001d2630000055260201b63000013ee1760201c565b63000001ea630000057460201b630000141a1760201c565b630000020263000005b560201b63000014551760201c565b565b63000002027f9bb503956ffba2113cfb11e14a2bee495dc4af006cd9ff16588ff2a9772d0304630000023663000005f6565b63000006e860201b63000014901760201c565b6300000202600080516020630000854983398151915260001c630000077560201b63000015151760201c565b630000020260008051602063000084a98339815191526300000236630000078a565b63000002027f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa860001c63000007ca60201b63000015241760201c565b630000020260008051602063000084e983398151915260001c63000007dc60201b63000015301760201c565b630000032d600080516020630000854983398151915260001c838363000007ee60201b630000153c1760201c565b5050565b630000032d60008051602063000084e983398151915260001c8383630000085660201b630000158e1760201c565b6040805160028082526060820183526000926020830190803683370190505090508360001b81600081518110630000039d57630000039d6300002a4c565b6020026020010181815250508260601b6001600160601b0319168160018151811063000003d05763000003d06300002a4c565b602002602001018181525050630000043460008051602063000084a983398151915260001c82600085604051602001630000041291151560f81b815260010190565b60405160208183030381529060405263000008d060201b63000016031760201c565b50505050565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811063000004795763000004796300002a4c565b602002602001019060c581111563000004985763000004986300002a62565b908160c581111563000004b15763000004b16300002a62565b90525063000004c181630000096f565b9392505050565b63000004e1816300000b7d60201b630000169b1760201c565b63000004ee826300000d97565b15630000051657604051632fe94bd160e11b8152600481018390526024015b60405180910390fd5b630000032d82826300000dd160201b630000185d1760201c565b630000020260008051602063000085a983398151915263000002366300000ef0565b6300000202600080516020630000858983398151915263000002366300000f30565b60008063000005836300000fc7565b91509150630000032d60008051602063000085a983398151915260001c8383630000106760201b630000195b1760201c565b60008063000005c46300001100565b91509150630000032d600080516020630000858983398151915260001c8383630000106760201b630000195b1760201c565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811063000006365763000006366300002a4c565b602002602001019060c581111563000006555763000006556300002a62565b908160c5811115630000066e57630000066e6300002a62565b81525050606081600181518110630000068d57630000068d6300002a4c565b602002602001019060c581111563000006ac5763000006ac6300002a62565b908160c581111563000006c55763000006c56300002a62565b8152505063000006e281630000096f60201b63000019e11760201c565b91505090565b63000006f46300001205565b15630000071557630000032d828263000004c860201b6300001c361760201c565b604051630440a07f60e51b8152600481018390526024810182905233906388140fe090604401600060405180830381600087803b158015630000075757600080fd5b505af1158015630000076d573d6000803e3d6000fd5b505050505050565b6300000787816300000236630000127e565b50565b60408051600180825281830190925260009182919060208083019080368337019050509050606081600081518110630000068d57630000068d6300002a4c565b6300000787816300000236630000129f565b630000078781630000023663000012bb565b604080516001808252818301909252600091602080830190803683370190505090508260001b81600081518110630000082d57630000082d6300002a4c565b6020026020010181815250506300000434848260008563000008d060201b63000016031760201c565b604080516001808252818301909252600091602080830190803683370190505090508260001b8160008151811063000008955763000008956300002a4c565b602002602001018181525050630000043484826000856040516020016300000412919060609190911b6001600160601b031916815260140190565b63000008dc6300001205565b1563000009065763000008ff8484848463000012d760201b6300001c8c1760201c565b6300000434565b6040516348e22e9160e11b815233906391c45d229063000009339087908790879087906004016300002b19565b600060405180830381600087803b158015630000094f57600080fd5b505af11580156300000965573d6000803e3d6000fd5b5050505050505050565b6000601c82511115630000099d578151604051635318beb960e01b8152600401630000050d91815260200190565b60008060008060005b86518110156300000acd5760006300000a0288838151811063000009d05763000009d06300002a4c565b602002602001015160c581111563000009ef5763000009ef6300002a62565b630000146b60201b6300001dbb1760201c565b905061ffff8116156300000a495782156300000a3157604051633c795af960e21b815260040160405180910390fd5b836300000a3f816300002b6b565b9450506300000a4e565b600192505b6300000a5c81866300002b90565b94506300000ac0866300000a738460046300002bbc565b8a85815181106300000a8b576300000a8b6300002a4c565b602002602001015160c58111156300000aaa576300000aaa6300002a62565b60f81b630000154860201b6300001e6c1760201c565b95505060010163000009a6565b5060008287516300000ae191906300002bda565b9050600e8160ff1611156300000b1157604051635318beb960e01b815260ff82166004820152602401630000050d565b6300000b308560008660f01b630000157e60201b6300001ea21760201c565b94506300000b518560028560f81b630000154860201b6300001e6c1760201c565b94506300000b728560038360f81b630000154860201b6300001e6c1760201c565b979650505050505050565b6300000b9681630000159c60201b6300001ed81760201c565b156300000bbb57604051635318beb960e01b815260006004820152602401630000050d565b60006300000bd68263000015a060201b6300001edc1760201c565b60ff169050600e8111156300000c0457604051635318beb960e01b815260048101829052602401630000050d565b60006300000c1f8363000015c660201b6300001eed1760201c565b60ff169050601c6300000c3483836300002bbc565b11156300000c68576300000c4a82826300002bbc565b604051635318beb960e01b8152600401630000050d91815260200190565b60008060005b6300000c7c85856300002bbc565b8110156300000d415760006300000cc06300000ca9838963000015e360201b6300001ef91790919060201c565b60c581111563000009ef5763000009ef6300002a62565b11156300000d02578381106300000cea57604051633c795af960e21b815260040160405180910390fd5b826300000cf8816300002c03565b9350506300000d37565b838110156300000d2557604051633c795af960e21b815260040160405180910390fd5b816300000d33816300002c03565b9250505b6001016300000c6e565b508282146300000d6957604051635318beb960e01b815260048101839052602401630000050d565b8381146300000d9057604051635318beb960e01b815260048101829052602401630000050d565b5050505050565b60006300000dca6300000db783630000162760201b6300001f251760201c565b630000159c60201b6300001ed81760201c565b1592915050565b604080516001808252818301909252600091602080830190803683370190505090508260001b816000815181106300000e10576300000e106300002a4c565b602090810291909101015260006300000e3b60008051602063000085298339815191528363000016c7565b90506300000e6f816300000e5c85630000171160201b6300001fa21760201c565b630000171460201b63000018d71760201c565b6000805160206300008569833981519152600080516020630000852983398151915260001c836300000eae86630000171160201b6300001fa21760201c565b6040516020016300000ec291815260200190565b60408051601f19818403018152908290526300000ee29392916300002c22565b60405180910390a150505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110630000068d57630000068d6300002a4c565b6040805160028082526060820183526000928392919060208301908036833701905050905060c5816000815181106300000f70576300000f706300002a4c565b602002602001019060c58111156300000f8f576300000f8f6300002a62565b908160c58111156300000fa8576300000fa86300002a62565b8152505060c481600181518110630000068d57630000068d6300002a4c565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816300000fe35790505090506040518060400160405280600581526020016476616c756560d81b8152508160008151811063000010335763000010336300002a4c565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b63000010736300001205565b15630000109a576300001095838383630000171860201b6300001fa51760201c565b505050565b604051630ba711df60e11b8152339063174e23be9063000010c5908690869086906004016300002cbc565b600060405180830381600087803b15801563000010e157600080fd5b505af115801563000010f7573d6000803e3d6000fd5b50505050505050565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081630000111b579050509050604051806040016040528060098152602001687461626c654e616d6560b81b81525081600081518110630000116f57630000116f6300002a4c565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d65730000000000000000000000008152508160018151811063000011c95763000011c96300002a4c565b6020026020010181905250806040518060400160405280600d81526020016c53746f72654d6574616461746160981b8152509092509250509091565b6000303b808203630000121a57600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015630000125557600080fd5b505afa9250505080156300001268575060015b630000127657600091505090565b600191505090565b6000630000129a60c5630000043a60201b630000134a1760201c565b905090565b6000630000129a601f630000043a60201b630000134a1760201c565b6000630000129a6061630000043a60201b630000134a1760201c565b600063000012e68563000017db565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce85858585604051630000132194939291906300002b19565b60405180910390a1600063000013478660001b630000183b60201b63000020431760201c565b905060005b8151811015630000140157600082828151811063000013715763000013716300002a4c565b60200260200101519050806001600160a01b0316637d09d033898989896040518563ffffffff1660e01b815260040163000013b194939291906300002b19565b600060405180830381600087803b15801563000013cd57600080fd5b505af115801563000013e3573d6000803e3d6000fd5b5050505050808063000013f7906300002c03565b915050630000134c565b50630000141b8263000015c660201b6300001eed1760201c565b60ff168460ff161015630000144e576300001447868684878763000018ef60201b63000020cc1760201c565b630000076d565b630000076d868684878763000019bb60201b63000021721760201c565b6000808260c581111563000014865763000014866300002a62565b60ff169050602081101563000014a55763000004c18160016300002bbc565b604081101563000014cf57602063000014c18260016300002bbc565b63000004c191906300002cef565b606081101563000014eb57604063000014c18260016300002bbc565b60608360c581111563000015055763000015056300002a62565b0363000015155750600192915050565b60618360c5811115630000152f57630000152f6300002a62565b03630000153f5750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c6001600160f01b031990911c198416179392505050565b1590565b600063000015bd8260036300001a2a60201b6300001f0a1760201c565b60f81c92915050565b600063000015bd8260026300001a2a60201b6300001f0a1760201c565b6000630000160d8363000015fa8460046300002bbc565b6300001a2a60201b6300001f0a1760201c565b60f81c60c581111563000004c15763000004c16300002a62565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b8160008151811063000016695763000016696300002a4c565b602002602001018181525050600063000016a4600080516020630000852983398151915260001c8363000016c760201b63000021af1760201c565b905063000016bf816300001a3160201b63000022051760201c565b949350505050565b60006000805160206300008509833981519152838360405160200163000016f2939291906300002d0c565b60408051601f1981840301815291905280516020909101209392505050565b90565b9055565b600063000017278463000017db565b905081516000148063000017565750630000174f816300001a3560201b63000022091760201c565b60ff168251145b630000179d576300001775816300001a3560201b63000022091760201c565b825160405163f2b2755960e01b815260ff90921660048301526024820152604401630000050d565b630000043484848460405160200163000017b991906300002d2f565b6040516020818303038152906040526300001a6560201b63000022271760201c565b600063000017f682630000162760201b6300001f251760201c565b9050630000181181630000159c60201b6300001ed81760201c565b15630000183657604051631d2a2a2960e11b815260048101839052602401630000050d565b919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110630000187b57630000187b6300002a4c565b602002602001018181525050600063000018b860008051602063000085a983398151915260001c8360006300001bbd60201b630000233d1760201c565b905063000016bf63000018dc82600084516300001c6c60201b63000023e31760201c565b6300001cea60201b63000024731760201c565b600063000019118360ff168563000015e360201b6300001ef91790919060201c565b9050815163000019328260c581111563000009ef5763000009ef6300002a62565b14630000197c5763000019568160c581111563000009ef5763000009ef6300002a62565b825160405163521b3d3360e01b815260048101929092526024820152604401630000050d565b6000630000198c878763000016c7565b90506000630000199e86866300001d0b565b905063000009658282866300001d6f60201b63000024841760201c565b600063000019d68463000015c660201b6300001eed1760201c565b63000019e490846300002bda565b905063000019fd86868385516300001d8e60201b60201c565b60006300001a0e8787846300001e00565b905063000010f781846300001e4d60201b63000024991760201c565b6008021b90565b5490565b60006300001a448263000015a0565b6300001a518363000015c6565b6300001a5f91906300002d46565b92915050565b6040805160028082526060820183526000926020830190803683370190505090508251816000815181106300001aa1576300001aa16300002a4c565b602002602001019061ffff16908161ffff16815250508151816001815181106300001ad2576300001ad26300002a4c565b602002602001019061ffff16908161ffff168152505060006300001b03826300001e5d60201b63000024a51760201c565b905060006300001b2082630000171160201b6300001fa21760201c565b85856040516020016300001b38939291906300002d71565b60408051601f198184030181526001808452838301909252925060009190602080830190803683370190505090508660001b816000815181106300001b83576300001b836300002a4c565b60200260200101818152505063000010f7600080516020630000858983398151915260001c82846300001f2a60201b63000025821760201c565b60606300001bcb6300001205565b156300001bf6576300001bed8484846300001f8360201b63000025da1760201c565b905063000004c1565b604051636a50093760e11b8152339063d4a0126e906300001c21908790879087906004016300002db6565b600060405180830381865afa1580156300001c40573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526300001bed91908101906300002de6565b60008183111580156300001c81575083518211155b6300001caa578383836040516323230fa360e01b8152600401630000050d939291906300002e9f565b602084016300001cbc84826300002bbc565b905060006300001cce85856300002cef565b6001600160801b031660809290921b9190911795945050505050565b6060600063000004c183601460006300001faf60201b63000025f51760201c565b600080805b8360ff168110156300001d67576300001d3f6300000ca9828763000015e360201b6300001ef91790919060201c565b6300001d4d90836300002bbc565b9150806300001d5d816300002c03565b9150506300001d10565b509392505050565b600060208201905063000004348484838551630000210f60201b60201c565b60006300001d9e8585630000220a565b905060006300001dbb826300001a3160201b63000022051760201c565b90506300001ddf8460ff168483630000223560201b6300002738179092919060201c565b9050630000076d826300000e5c83630000171160201b6300001fa21760201c565b600060008051602063000085098339815191528484846040516020016300001e2d94939291906300002ec8565b60408051601f198184030181529190528051602090910120949350505050565b630000032d826000836300001d6f565b6000806000805b84518110156300001f0a576300001ec9836300001e848360026300002eff565b6300001e939060046300002bbc565b8784815181106300001eab576300001eab6300002a4c565b602002602001015160f01b630000157e60201b6300001ea21760201c565b92508481815181106300001ee3576300001ee36300002a4c565b602002602001015161ffff16826300001efe91906300002f24565b91506001016300001e64565b5063000016bf8260008360e01b630000231660201b63000028141760201c565b6300001f366300001205565b156300001f58576300001095838383630000233460201b630000284a1760201c565b60405163328d068d60e11b8152339063651a0d1a9063000010c5908690869086906004016300002c22565b606060006300001f948563000017db565b90506300001fa68585858463000026b4565b95945050505050565b606060006300001fcc85630000271f60201b6300002a9f1760201c565b905060006300001fe986630000272560201b6300002aa51760201c565b9050600084630000201a5763000020038660086300002eff565b6300002013906101006300002cef565b630000201d565b60005b9050600086838163000020365763000020366300002f49565b049050630000204787846300002f5f565b1563000020be5760405162461bcd60e51b815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a650000006064820152608401630000050d565b602080820201604051955080860160405250808552600060208601855b838310156300002101578051851c825260019290920191602090910190890163000020db565b505050505050509392505050565b602083048401935060208381630000212d57630000212d6300002f49565b069250821563000021a35760008360200390506000630000215b83630000273160201b6300002aba1760201c565b90506008850281811c91508451811c9050811987541682821617875550818311630000218a5750506300000434565b63000021996001876300002bbc565b9550509182019190035b6020811063000021d4578151845563000021c06001856300002bbc565b935060209190910190601f190163000021a3565b8015630000043457600063000021f782630000273160201b6300002aba1760201c565b8554845182169119161785555050505050565b60006000805160206300008509833981519152838360405160200163000016f2939291906300002f83565b6000838163000022458260e01c90565b90506000630000225a8760ff88166300002744565b9050808510630000228a57630000227381866300002cef565b630000228190836300002bbc565b915063000022a9565b630000229885826300002cef565b63000022a690836300002cef565b91505b600063000022ba8760026300002eff565b63000022c99060046300002bbc565b905063000022ea8460008560e01b630000231660201b63000028141760201c565b9350630000230a84828860f01b630000157e60201b6300001ea21760201c565b98975050505050505050565b6008820281811c6001600160e01b031990911c198416179392505050565b600063000023438463000017db565b90506000630000236082630000278c60201b6300002ac71760201c565b9050600081905060008063000023838563000015a060201b6300001edc1760201c565b60ff16111563000023e35763000023a88584630000279260201b6300002acd1760201c565b905063000023c381630000273e60201b6300002ad51760201c565b63000023d29060206300002bbc565b63000023e090836300002bbc565b91505b84518214630000241557845160405163521b3d3360e01b8152630000050d918491600401918252602082015260400190565b6000805160206300008569833981519152878787604051630000243c939291906300002c22565b60405180910390a1600063000024628860001b630000183b60201b63000020431760201c565b905060005b8151811015630000251a576000828281518110630000248c57630000248c6300002a4c565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b815260040163000024ca939291906300002c22565b600060405180830381600087803b15801563000024e657600080fd5b505af115801563000024fc573d6000803e3d6000fd5b505050505080806300002510906300002c03565b9150506300002467565b5060006300002537898963000016c760201b63000021af1760201c565b90506000630000255488630000279a60201b6300002adb1760201c565b905063000025738260008389630000210f60201b6300002ae11760201c565b63000025828660206300002bbc565b630000259090826300002bbc565b905063000025ab8763000015a060201b6300001edc1760201c565b60ff1660000363000025c35750505050505050505050565b600063000025df8b8b630000220a60201b6300002b9f1760201c565b90506300002600816300000e5c87630000171160201b6300001fa21760201c565b60008060005b630000261f8b63000015a060201b6300001edc1760201c565b60ff168160ff16101563000026a45763000026498e8e836300001e0060201b6300002bd61760201c565b9250630000266b8160ff1689630000274460201b6300002c2f1790919060201c565b9150630000268a8360008785630000210f60201b6300002ae11760201c565b630000269882866300002bbc565b94506001016300002606565b5050505050505050505050505050565b606063000026cf8263000015c660201b6300001eed1760201c565b60ff168360ff16101563000027035763000026fa8585858563000027a060201b6300002c611760201c565b905063000016bf565b63000026fa85858585630000283360201b6300002cc11760201c565b60801c90565b6001600160801b031690565b60001960089091021c1990565b60e01c90565b60008063000027568360026300002eff565b63000027659060046300002bbc565b9050630000278184826300001a2a60201b6300001f0a1760201c565b60f01c949350505050565b60f01c90565b016020015190565b60200190565b6060600063000027c48460ff168463000015e360201b6300001ef91790919060201c565b9050600063000027e58260c581111563000009ef5763000009ef6300002a62565b9050600063000027f7888863000016c7565b90506000630000280986886300001d0b565b9050630000282682848363000028be60201b6300002d0e1760201c565b9998505050505050505050565b6060600063000028508363000015c660201b6300001eed1760201c565b630000285e90856300002bda565b9050600063000028718787846300001e00565b9050600063000028a260ff8416630000288c8a8a6300002921565b630000274460201b6300002c2f1790919060201c565b9050630000230a8282630000293260201b6300002d6e1760201c565b6060826001600160401b0381111563000028de5763000028de6300002a36565b6040519080825280601f01601f191660200182016040528015630000290a576020820181803683370190505b509050602081016300001d67858585846300002944565b60008063000016a48484630000220a565b606063000004c18383600063000028be565b60208204840193506020828163000029625763000029626300002f49565b069150811563000029d05760008260200390506000630000299082630000273160201b6300002aba1760201c565b90508554600885021b81198451168282161784525081851163000029b75750506300000434565b63000029c66001876300002bbc565b9550509283900392015b602083106300002a00578354815263000029ed6001856300002bbc565b9350601f199092019160200163000029d0565b821563000004345760006300002a2384630000273160201b6300002aba1760201c565b8251865482169119161782525050505050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b838110156300002aac578151875295820195908201906001016300002a8c565b509495945050505050565b60005b838110156300002ad65781810151838201526020016300002aba565b8381111563000004345750506000910152565b600081518084526300002b058160208601602086016300002ab7565b601f01601f19169290920160200192915050565b8481526080602082015260006300002b3660808301866300002a78565b60ff8516604084015282810360608401526300000b7281856300002ae9565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036300002b87576300002b876300002b55565b60010192915050565b600061ffff8083168185168083038211156300002bb3576300002bb36300002b55565b01949350505050565b600082198211156300002bd5576300002bd56300002b55565b500190565b600060ff821660ff8416808210156300002bfa576300002bfa6300002b55565b90039392505050565b6000600182016300002c1b576300002c1b6300002b55565b5060010190565b8381526060602082015260006300002c3f60608301856300002a78565b82810360408401526300002c5581856300002ae9565b9695505050505050565b600081518084526020808501808196508360051b8101915082860160005b858110156300002caf5782840389526300002c9b8483516300002ae9565b988501989350908401906001016300002c7d565b5091979650505050505050565b8381526060602082015260006300002cd960608301856300002ae9565b82810360408401526300002c5581856300002c5f565b6000828210156300002d07576300002d076300002b55565b500390565b8381528260208201526060604082015260006300001fa660608301846300002a78565b60208152600063000004c160208301846300002c5f565b600060ff821660ff84168060ff038211156300002d69576300002d696300002b55565b019392505050565b838152600083516300002d8d8160208501602088016300002ab7565b808301905083516300002da98160208401602088016300002ab7565b0160200195945050505050565b8381526060602082015260006300002dd360608301856300002a78565b905060ff83166040830152949350505050565b6000602082840312156300002dfa57600080fd5b81516001600160401b03808211156300002e1357600080fd5b818401915084601f8301126300002e2957600080fd5b8151818111156300002e41576300002e416300002a36565b604051601f8201601f19908116603f011681019083821181831017156300002e6f576300002e6f6300002a36565b816040528281528760208487010111156300002e8a57600080fd5b6300000b728360208301602088016300002ab7565b6060815260006300002eb660608301866300002ae9565b60208301949094525060400152919050565b8481528360208201526080604082015260006300002eeb60808301856300002a78565b905060ff8316606083015295945050505050565b60008160001904831182151516156300002f1f576300002f1f6300002b55565b500290565b600063ffffffff8083168185168083038211156300002bb3576300002bb36300002b55565b634e487b7160e01b600052601260045260246000fd5b6000826300002f7e57634e487b7160e01b600052601260045260246000fd5b500690565b8381528260208201526080604082015260006300002fa660808301846300002a78565b828103606084015260068152650d8cadccee8d60d31b602082015260408101915050949350505050565b6154c8806300002fe16000396000f3fe608060405234801561001057600080fd5b50600436106101ae5760003560e01c8063678e3cfb116100ee578063a5c2f00711610097578063d4a0126e11610071578063d4a0126e14610364578063d99ddc0714610377578063f37c215e1461038a578063fcc7cfa11461039d57600080fd5b8063a5c2f007146101ec578063a666a3801461033e578063afc6325f1461035157600080fd5b806391c45d22116100c857806391c45d2214610305578063971eb6cb14610318578063a2d3d4fb1461032b57600080fd5b8063678e3cfb146102cc57806388140fe0146102df57806391a0f609146102f257600080fd5b80634408b6fd1161015b5780634d561468116101355780634d5614681461028057806351ea4f1b146102935780635f44b42a146102a6578063651a0d1a146102b957600080fd5b80634408b6fd1461024757806348ea14ab1461025a57806349ba56231461026d57600080fd5b8063174e23be1161018c578063174e23be14610201578063293b4852146102145780632b26fb291461023457600080fd5b806304fb25a9146101b357806307ff106e146101d95780630d14ff90146101ee575b600080fd5b6101c66101c13660046144df565b6103b0565b6040519081526020015b60405180910390f35b6101ec6101e7366004614579565b6104b6565b005b6101ec6101fc3660046145a9565b505050565b6101ec61020f366004614645565b610501565b6102276102223660046146bf565b610575565b6040516101d09190614783565b6101c6610242366004614796565b61059e565b6101c66102553660046147af565b6105af565b6101ec610268366004614834565b6105d2565b61022761027b3660046149d3565b610661565b6101ec61028e366004614834565b61072c565b6101ec6102a1366004614a57565b610861565b6101ec6102b4366004614ae4565b6108f3565b6101ec6102c7366004614b6c565b61093e565b6101ec6102da3660046145a9565b6109c6565b6101ec6102ed366004614bc8565b610a0e565b6101ec610300366004614ae4565b610a39565b6101ec610313366004614a57565b610b41565b6101ec610326366004614bea565b610bcb565b610227610339366004614c36565b610c1f565b6101ec61034c366004614c89565b610c62565b6101ec61035f3660046145a9565b610da0565b610227610372366004614d4d565b610e2a565b610227610385366004614bea565b610e6b565b6101ec6103983660046145a9565b610eaa565b6101c66103ab3660046146bf565b610f30565b60006103bb83612d7c565b15610402576040517fb86487840000000000000000000000000000000000000000000000000000000081526001600160a01b03841660048201526024015b60405180910390fd5b600061044388888080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b90503361044f82612db3565b6001600160a01b03161461047c57878733604051631ff9118960e21b81526004016103f993929190614dd6565b61048888888888610f30565b9150610495828585612ddf565b61049f8483612e89565b6104ab8185600161127e565b509695505050505050565b336104c083612db3565b6001600160a01b0316146104f3576104d782612eb4565b33604051631ff9118960e21b81526004016103f9929190614e03565b6104fd8282612ee0565b5050565b3361050b86612db3565b6001600160a01b031614610522576104d785612eb4565b61056e8585858080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506105699250869150879050614e2e565b611fa5565b5050505050565b60606105938585604051806020016040528060008152508686610661565b90505b949350505050565b60006105a982612eea565b92915050565b60006105bd86868686610f30565b90506105c98183611c36565b95945050505050565b60006105e08a8a8a8a612f36565b90506106558187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612ffe92505050565b50505050505050505050565b6060600086868660405160200161067a93929190614eb2565b6040516020818303038152906040529050600061069c82805160209091012090565b90506000806106aa8361317e565b9150915080610709576106be8a8a33613210565b6106e157898933604051631ff9118960e21b81526004016103f993929190614dd6565b6106ea8861325a565b6107095787604051630229745760e21b81526004016103f99190614783565b61071e338389896107198961328b565b61332a565b9a9950505050505050505050565b610737898933613210565b61075a57888833604051631ff9118960e21b81526004016103f993929190614dd6565b61079987878080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061325a92505050565b6107ba578686604051630229745760e21b81526004016103f9929190614ed9565b6000898989896040516020016107d39493929190614eed565b6040516020818303038152906040528051906020012060001c90506106558187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611c8c92505050565b61086b8633613432565b610878576104d786612eb4565b6108eb8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250612ffe92505050565b505050505050565b6108eb61093587878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b85858585610501565b6109488533613432565b610955576104d785612eb4565b61056e8585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8901819004810282018101909252878152925087915086908190840183828082843760009201919091525061284a92505050565b6101fc610a0884848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b826104b6565b33610a1883612db3565b6001600160a01b031614610a2f576104d782612eb4565b6104fd8282611c36565b610a44868633613210565b610a6757858533604051631ff9118960e21b81526004016103f993929190614dd6565b610aa684848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061325a92505050565b610ac7578383604051630229745760e21b81526004016103f9929190614ed9565b600086868686604051602001610ae09493929190614eed565b6040516020818303038152906040528051906020012060001c9050610b388184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343e92505050565b50505050505050565b610b4b8633613432565b610b58576104d786612eb4565b6108eb8686868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f890181900481028201810190925287815289935091508790879081908401838280828437600092019190915250611c8c92505050565b610bd58333613432565b610be2576104d783612eb4565b6101fc8383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061343e92505050565b6060610593858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506135c7915050565b565b610c6d888833613210565b610c9057878733604051631ff9118960e21b81526004016103f993929190614dd6565b610ccf86868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061325a92505050565b610cf0578585604051630229745760e21b81526004016103f9929190614ed9565b600088888888604051602001610d099493929190614eed565b6040516020818303038152906040528051906020012060001c9050610d958186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a01819004810282018101909252888152925088915087908190840183828082843760009201919091525061284a92505050565b505050505050505050565b6000610de184848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b905033610ded82612db3565b6001600160a01b031614610e1a57838333604051631ff9118960e21b81526004016103f993929190614dd6565b610e24818361372c565b50505050565b6060610593858585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508792506125da915050565b6060610596848484808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152506137cb92505050565b6000610eeb84848080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b905033610ef782612db3565b6001600160a01b031614610f2457838333604051631ff9118960e21b81526004016103f993929190614dd6565b610e248183600161127e565b6000610f7183838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061328b92505050565b610f92578282604051630229745760e21b81526004016103f9929190614ed9565b6000610fd386868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b60408051602081019091526000905290507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708114806110165750611016816137e5565b611037578585604051630229745760e21b81526004016103f9929190614ed9565b600083900361105d578383604051630229745760e21b81526004016103f9929190614ed9565b6000868686866040516020016110769493929190614eed565b60408051808303601f19018152919052805160208201209350905061109a836137e5565b156110d357806040517f71c3ce580000000000000000000000000000000000000000000000000000000081526004016103f99190614783565b6110dd8382611228565b6110e78333611253565b6110f38333600161127e565b5050949350505050565b6111307f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e61112b605f61134a565b611c36565b6111386113c2565b6111406113ee565b61114861141a565b610c60611455565b610c607f9bb503956ffba2113cfb11e14a2bee495dc4af006cd9ff16588ff2a9772d030461117c613811565b611490565b610c607fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c738611515565b610c607fb07871d3346b8174fd8c44ae24608a1fbb23c09a1331e6124a566242df16e03361117c6138ce565b610c607f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa8611524565b610c607fc3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a2782865611530565b6104fd7fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c738838361153c565b6104fd7fc3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a2782865838361158e565b6040805160028082526060820183526000926020830190803683370190505090508360001b816000815181106112b6576112b6614f0f565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106112e8576112e8614f0f565b602002602001018181525050610e247fb07871d3346b8174fd8c44ae24608a1fbb23c09a1331e6124a566242df16e03360001c8260008560405160200161133691151560f81b815260010190565b604051602081830303815290604052611603565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061138357611383614f0f565b602002602001019060c581111561139c5761139c614f25565b908160c58111156113af576113af614f25565b9052506113bb816119e1565b9392505050565b610c607f10cff6e9a45d56553c0d6a15090a896923104ebcf7e6f897a55ce1a25117989061117c613908565b610c607f7cf2f10cacf485bbd2f754f8ea5bb61bc02278cb975662e05b61c8020e2db13261117c613942565b6000806114256139c1565b90925090506104fd7f10cff6e9a45d56553c0d6a15090a896923104ebcf7e6f897a55ce1a251179890838361195b565b600080611460613a89565b90925090506104fd7f7cf2f10cacf485bbd2f754f8ea5bb61bc02278cb975662e05b61c8020e2db132838361195b565b611498613ba4565b156114a7576104fd8282611c36565b6040517f88140fe0000000000000000000000000000000000000000000000000000000008152600481018390526024810182905233906388140fe0906044015b600060405180830381600087803b15801561150157600080fd5b505af11580156108eb573d6000803e3d6000fd5b6115218161117c613c15565b50565b6115218161117c613c26565b6115218161117c613c32565b604080516001808252818301909252600091602080830190803683370190505090508260001b8160008151811061157557611575614f0f565b602002602001018181525050610e248482600085611603565b604080516001808252818301909252600091602080830190803683370190505090508260001b816000815181106115c7576115c7614f0f565b602002602001018181525050610e248482600085604051602001611336919060609190911b6bffffffffffffffffffffffff1916815260140190565b61160b613ba4565b156116215761161c84848484611c8c565b610e24565b6040517f91c45d2200000000000000000000000000000000000000000000000000000000815233906391c45d2290611663908790879087908790600401614f76565b600060405180830381600087803b15801561167d57600080fd5b505af1158015611691573d6000803e3d6000fd5b5050505050505050565b806116bc57604051635318beb960e01b8152600060048201526024016103f9565b60006116c782611edc565b60ff169050600e8111156116f157604051635318beb960e01b8152600481018290526024016103f9565b60006116fc83611eed565b60ff169050601c61170d8383614fc0565b11156117395761171d8282614fc0565b604051635318beb960e01b81526004016103f991815260200190565b60008060005b6117498585614fc0565b81101561181657600061177561175f8884611ef9565b60c581111561177057611770614f25565b611dbb565b11156117c6578381106117b4576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826117be81614fd8565b93505061180e565b83811015611800576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161180a81614fd8565b9250505b60010161173f565b5082821461183a57604051635318beb960e01b8152600481018390526024016103f9565b83811461056e57604051635318beb960e01b8152600481018290526024016103f9565b604080516001808252818301909252600091602080830190803683370190505090508260001b8160008151811061189657611896614f0f565b602090810291909101015260006118cd7f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e836121af565b83815590506118db565b9055565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f7f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e838560405160200161193191815260200190565b60408051601f198184030181529082905261194d939291614ff2565b60405180910390a150505050565b611963613ba4565b15611973576101fc838383611fa5565b6040517f174e23be000000000000000000000000000000000000000000000000000000008152339063174e23be906119b39086908690869060040161507c565b600060405180830381600087803b1580156119cd57600080fd5b505af1158015610b38573d6000803e3d6000fd5b6000601c82511115611a0b578151604051635318beb960e01b81526004016103f991815260200190565b60008060008060005b8651811015611b32576000611a4d888381518110611a3457611a34614f0f565b602002602001015160c581111561177057611770614f25565b905061ffff811615611aa3578215611a91576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83611a9b816150a7565b945050611aa8565b600192505b611ab281866150c6565b9450611b2786611ac3846004614fc0565b8a8581518110611ad557611ad5614f0f565b602002602001015160c5811115611aee57611aee614f25565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101611a14565b506000828751611b4291906150ec565b9050600e8160ff161115611b6e57604051635318beb960e01b815260ff821660048201526024016103f9565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b611c3f8161169b565b611c4882613c3e565b15611c82576040517f5fd297a2000000000000000000000000000000000000000000000000000000008152600481018390526024016103f9565b6104fd828261185d565b6000611c9785612eea565b90507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce85858585604051611cce9493929190614f76565b60405180910390a16000611ce186612043565b905060005b8151811015611d85576000828281518110611d0357611d03614f0f565b60200260200101519050806001600160a01b0316637d09d033898989896040518563ffffffff1660e01b8152600401611d3f9493929190614f76565b600060405180830381600087803b158015611d5957600080fd5b505af1158015611d6d573d6000803e3d6000fd5b50505050508080611d7d90614fd8565b915050611ce6565b50611d8f82611eed565b60ff168460ff161015611dae57611da986868487876120cc565b6108eb565b6108eb8686848787612172565b6000808260c5811115611dd057611dd0614f25565b60ff1690506020811015611de9576113bb816001614fc0565b6040811015611e09576020611dff826001614fc0565b6113bb919061510f565b6060811015611e1f576040611dff826001614fc0565b60608360c5811115611e3357611e33614f25565b03611e415750600192915050565b60618360c5811115611e5557611e55614f25565b03611e635750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b1590565b6000601882901b5b60f81c92915050565b6000601082901b611ee4565b6000611f1183611f0a846004614fc0565b6008021b90565b60f81c60c58111156113bb576113bb614f25565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110611f6157611f61614f0f565b60209081029190910101526000611f987f466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975e836121af565b9050610596815490565b90565b6000611fb084612eea565b9050815160001480611fcd5750611fc681612209565b60ff168251145b61201957611fda81612209565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044016103f9565b610e2484848460405160200161202f9190615126565b604051602081830303815290604052612227565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061207d5761207d614f0f565b602090810291909101015260006120b57f10cff6e9a45d56553c0d6a15090a896923104ebcf7e6f897a55ce1a251179890838361233d565b90506105966120c782600084516123e3565b612473565b60006120db8460ff8516611ef9565b905081516120f48260c581111561177057611770614f25565b1461214b5761210e8160c581111561177057611770614f25565b82516040517f521b3d33000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016103f9565b600061215787876121af565b905060006121658686613c53565b9050611691828286612484565b600061217d84611eed565b61218790846150ec565b90506121968686838551613c8e565b60006121a3878784612bd6565b9050610b388184612499565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016121e693929190615139565b60408051601f1981840301815291905280516020909101209392505050565b5490565b600061221482611edc565b61221d83611eed565b6105a99190615158565b60408051600280825260608201835260009260208301908036833701905050905082518160008151811061225d5761225d614f0f565b602002602001019061ffff16908161ffff168152505081518160018151811061228857612288614f0f565b602002602001019061ffff16908161ffff168152505060006122a9826124a5565b905060008185856040516020016122c29392919061517d565b60408051601f198184030181526001808452838301909252925060009190602080830190803683370190505090508660001b8160008151811061230757612307614f0f565b6020908102919091010152610b387f7cf2f10cacf485bbd2f754f8ea5bb61bc02278cb975662e05b61c8020e2db1328284612582565b6060612347613ba4565b1561235e576123578484846125da565b90506113bb565b6040517fd4a0126e000000000000000000000000000000000000000000000000000000008152339063d4a0126e9061239e908790879087906004016151ba565b600060405180830381865afa1580156123bb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261235791908101906151e6565b60008183111580156123f6575083518211155b612432578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016103f993929190615254565b602084016124408482614fc0565b9050600061244e858561510f565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006113bb83601460006125f5565b6000602082019050610e248484838551612ae1565b6104fd82600083612484565b6000806000805b845181101561255757612522836124c4836002615279565b6124cf906004614fc0565b8784815181106124e1576124e1614f0f565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b925084818151811061253657612536614f0f565b602002602001015161ffff168261254d9190615298565b91506001016124ac565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b17610596565b61258a613ba4565b1561259a576101fc83838361284a565b6040517f651a0d1a000000000000000000000000000000000000000000000000000000008152339063651a0d1a906119b390869086908690600401614ff2565b606060006125e785612eea565b90506105c985858584613cc0565b606060006126038560801c90565b90506fffffffffffffffffffffffffffffffff851660008461263b5761262a866008615279565b6126369061010061510f565b61263e565b60005b90506000868381612651576126516152b7565b04905061265e87846152cd565b156126eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a6500000060648201526084016103f9565b602080820201604051955080860160405250808552600060208601855b8383101561272a578051851c8252600192909201916020909101908901612708565b505050505050509392505050565b600083816127468260e01c90565b90506000612757878760ff16612c2f565b905080851061277b5761276a818661510f565b6127749083614fc0565b9150612792565b612785858261510f565b61278f908361510f565b91505b600061279f876002615279565b6127aa906004614fc0565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c175b98975050505050505050565b6008820281811c7fffffffff0000000000000000000000000000000000000000000000000000000090911c198416179392505050565b600061285584612eea565b905060006128638260f01c90565b90508060008061287285611edc565b60ff1611156128a057506020848301015160e081901c612893906020614fc0565b61289d9083614fc0565b91505b845182146128e75784516040517f521b3d330000000000000000000000000000000000000000000000000000000081526103f9918491600401918252602082015260400190565b7f89c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f87878760405161291a93929190614ff2565b60405180910390a1600061292d88612043565b905060005b81518110156129cf57600082828151811061294f5761294f614f0f565b60200260200101519050806001600160a01b0316637ae4118a8b8b8b6040518463ffffffff1660e01b815260040161298993929190614ff2565b600060405180830381600087803b1580156129a357600080fd5b505af11580156129b7573d6000803e3d6000fd5b505050505080806129c790614fd8565b915050612932565b5060006129dc89896121af565b9050602087016129ef8260008389612ae1565b6129fa866020614fc0565b612a049082614fc0565b9050612a0f87611edc565b60ff16600003612a255750505050505050505050565b6000612a318b8b612b9f565b858155905060008060005b612a458b611edc565b60ff168160ff161015612a8f57612a5d8e8e83612bd6565b9250612a6c8860ff8316612c2f565b9150612a7b8360008785612ae1565b612a858286614fc0565b9450600101612a3c565b5050505050505050505050505050565b60801c90565b6fffffffffffffffffffffffffffffffff1690565b60001960089091021c1990565b60f01c90565b016020015190565b60e01c90565b60200190565b602083048401935060208381612af957612af96152b7565b0692508215612b525760208390036000600019600884021c1990506008850281811c91508451811c9050811987541682821617875550818311612b3d575050610e24565b612b48600187614fc0565b9550509182019190035b60208110612b7b5781518455612b69600185614fc0565b935060209190910190601f1901612b52565b8015610e24576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016121e6939291906152e1565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9848484604051602001612c0f9493929190615341565b60408051601f198184030181529190528051602090910120949350505050565b600080612c3d836002615279565b612c48906004614fc0565b9050612c5684826008021b90565b60f01c949350505050565b60606000612c728360ff8616611ef9565b90506000612c8b8260c581111561177057611770614f25565b90506000612c9988886121af565b90506000612ca78688613c53565b9050612cb4828483612d0e565b9998505050505050505050565b60606000612cce83611eed565b612cd890856150ec565b90506000612ce7878784612bd6565b90506000612d028360ff16612cfc8a8a613cf7565b90612c2f565b90506128088282612d6e565b60608267ffffffffffffffff811115612d2957612d2961490e565b6040519080825280601f01601f191660200182016040528015612d53576020820181803683370190505b50905060208101612d6685858584613d04565b509392505050565b60606113bb83836000612d0e565b60006105a97f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa883613db9565b805160209091012090565b60006105a97fc3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a278286583613e2d565b6040516bffffffffffffffffffffffff19606084901b16602082015281151560f81b603482015260009060350160408051808303601f1901815260018084528383019092529250600091908160200160208202803683370190505090508460001b81600081518110612e5357612e53614f0f565b602090810291909101015261056e7f9bb503956ffba2113cfb11e14a2bee495dc4af006cd9ff16588ff2a9772d03048284612582565b6104fd7f62979a91fdbe2d783bb7cc5fd3423fd0f5a933addfd71710e74eaf69d8f9eaa88383613e98565b60606105a97fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c73883613f06565b6104fd8282613f70565b6000612ef582611f25565b905080612f31576040517f3a545452000000000000000000000000000000000000000000000000000000008152600481018390526024016103f9565b919050565b6000612f43858533613210565b612f6657848433604051631ff9118960e21b81526004016103f993929190614dd6565b612fa583838080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061325a92505050565b612fc6578282604051630229745760e21b81526004016103f9929190614ed9565b84848484604051602001612fdd9493929190614eed565b60408051601f19818403018152919052805160209091012095945050505050565b600061300985612eea565b905061301481611eed565b60ff168360ff161015613053576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061306186868685612cc1565b83604051602001613073929190615374565b60405160208183030381529060405290507f69ed0315cadd84320a7846d07030f3f22e49893b69216566c8e95d35c34512ce868686846040516130b99493929190614f76565b60405180910390a160006130cc87612043565b905060005b81518110156131705760008282815181106130ee576130ee614f0f565b60200260200101519050806001600160a01b0316637d09d0338a8a8a886040518563ffffffff1660e01b815260040161312a9493929190614f76565b600060405180830381600087803b15801561314457600080fd5b505af1158015613158573d6000803e3d6000fd5b5050505050808061316890614fd8565b9150506130d1565b50610b38878785888861405f565b60408051600180825281830190925260009182918291602080830190803683370190505090508360001b816000815181106131bb576131bb614f0f565b602090810291909101015260006131fa7f9bb503956ffba2113cfb11e14a2bee495dc4af006cd9ff16588ff2a9772d0304836131f5613811565b61410f565b905061320581614169565b935093505050915091565b600061059661325485858080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612da892505050565b83613432565b8051600090613267575060015b602f602083015160001a0361327a575060015b6001825103612f3157506000919050565b60006132968261325a565b6132a257506000919050565b8160015b8151811015613320578181815181106132c1576132c1614f0f565b01602001517fff00000000000000000000000000000000000000000000000000000000000000167f2f0000000000000000000000000000000000000000000000000000000000000003613318575060009392505050565b6001016132a6565b5060019392505050565b606060008484886040516020016133439392919061539a565b6040516020818303038152906040529050600080846133bc57876001600160a01b03168360405161337491906153c0565b6000604051808303816000865af19150503d80600081146133b1576040519150601f19603f3d011682016040523d82523d6000602084013e6133b6565b606091505b50613416565b876001600160a01b0316836040516133d491906153c0565b600060405180830381855af49150503d806000811461340f576040519150601f19603f3d011682016040523d82523d6000602084013e613414565b606091505b505b91509150811561342a5792506105c9915050565b805160208201fd5b60006113bb838361418f565b600061344983612eea565b90507ffd36aacc4303ae7315a10b19412d3c2df14f76c9687ef14bf499d0b87373f6e2838360405161347c9291906153dc565b60405180910390a1600061348f84612043565b905060005b815181101561352f5760008282815181106134b1576134b1614f0f565b60200260200101519050806001600160a01b0316631a808b3c87876040518363ffffffff1660e01b81526004016134e99291906153dc565b600060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b5050505050808061352790614fd8565b915050613494565b50600061353c85856121af565b905061359681600061354e8660f01c90565b67ffffffffffffffff8111156135665761356661490e565b6040519080825280601f01601f191660200182016040528015613590576020820181803683370190505b50612484565b61359f83611edc565b60ff166000036135b0575050505050565b60006135bc8686612b9f565b6000815590506108eb565b606060006135d58360f01c90565b9050806000806135e486611edc565b60ff169050801561362f576135f98888613cf7565b915060006136078360e01c90565b111561362f576136178260e01c90565b613622906020614fc0565b61362c9084614fc0565b92505b60008367ffffffffffffffff81111561364a5761364a61490e565b6040519080825280601f01601f191660200182016040528015613674576020820181803683370190505b509050602081016136878a8a8884614246565b6136918460e01c90565b6000036136a5575094506113bb9350505050565b6136af8682614fc0565b84815290506136bf602082614fc0565b905060005b838160ff16101561371d5760006136dc8c8c84612bd6565b905060006136ed8760ff8516612c2f565b90506136fc8282600087613d04565b6137068185614fc0565b935050508080613715906150a7565b9150506136c4565b50909998505050505050505050565b6040805160028082526060820183526000926020830190803683370190505090508260001b8160008151811061376457613764614f0f565b6020026020010181815250508160601b6bffffffffffffffffffffffff19168160018151811061379657613796614f0f565b60209081029190910101526101fc7fb07871d3346b8174fd8c44ae24608a1fbb23c09a1331e6124a566242df16e03382614267565b606060006137d884612eea565b90506105968484836135c7565b60006105a97fbf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c738836142bc565b6040805160028082526060820183526000928392919060208301908036833701905050905060618160008151811061384b5761384b614f0f565b602002602001019060c581111561386457613864614f25565b908160c581111561387757613877614f25565b8152505060608160018151811061389057613890614f0f565b602002602001019060c58111156138a9576138a9614f25565b908160c58111156138bc576138bc614f25565b9052506138c8816119e1565b91505090565b6040805160018082528183019092526000918291906020808301908036833701905050905060608160008151811061389057613890614f0f565b6040805160018082528183019092526000918291906020808301908036833701905050905060c38160008151811061389057613890614f0f565b6040805160028082526060820183526000928392919060208301908036833701905050905060c58160008151811061397c5761397c614f0f565b602002602001019060c581111561399557613995614f25565b908160c58111156139a8576139a8614f25565b8152505060c48160018151811061389057613890614f0f565b6040805160018082528183019092526060918291600091816020015b60608152602001906001900390816139dd5790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110613a3d57613a3d614f0f565b6020026020010181905250806040518060400160405280600581526020017f486f6f6b730000000000000000000000000000000000000000000000000000008152509092509250509091565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081613aa45790505090506040518060400160405280600981526020017f7461626c654e616d65000000000000000000000000000000000000000000000081525081600081518110613b0457613b04614f0f565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600181518110613b5857613b58614f0f565b6020026020010181905250806040518060400160405280600d81526020017f53746f72654d65746164617461000000000000000000000000000000000000008152509092509250509091565b6000303b808203613bb757600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015613bf057600080fd5b505afa925050508015613c01575060015b613c0d57600091505090565b600191505090565b6000613c2160c561134a565b905090565b6000613c21601f61134a565b6000613c21606161134a565b6000613c4c611ed883611f25565b1592915050565b600080805b8360ff16811015612d6657613c7061175f8683611ef9565b613c7a9083614fc0565b915080613c8681614fd8565b915050613c58565b6000613c9a8585612b9f565b90506000613ca6825490565b9050613cb68160ff861685612738565b80835590506108eb565b6060613ccb82611eed565b60ff168360ff161015613ceb57613ce485858585612c61565b9050610596565b613ce485858585612cc1565b600080611f988484612b9f565b602082048401935060208281613d1c57613d1c6152b7565b0691508115613d6d5760208290036000600019600883021c1990508554600885021b811984511682821617845250818511613d58575050610e24565b613d63600187614fc0565b9550509283900392015b60208310613d955783548152613d84600185614fc0565b9350601f1990920191602001613d6d565b8215610e24576000600019600885021c198251865482169119161782525050505050565b604080516001808252818301909252600091829190602080830190803683370190505090508260601b6bffffffffffffffffffffffff191681600081518110613e0457613e04614f0f565b602002602001018181525050613e1a848261431c565b613e23906153f5565b1515949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b81600081518110613e6957613e69614f0f565b6020026020010181815250506000613e81858361431c565b9050613e8c8161541c565b60601c95945050505050565b604080516001808252818301909252600091602080830190803683370190505090508260601b6bffffffffffffffffffffffff191681600081518110613ee057613ee0614f0f565b602002602001018181525050610e24848260008560405160200161133691815260200190565b60408051600180825281830190925260609160009190602080830190803683370190505090508260001b81600081518110613f4357613f43614f0f565b6020026020010181815250506000613f5b858361431c565b90506105c9613f6b8260206143bf565b6143cd565b604080516001808252818301909252600091602080830190803683370190505090508281600081518110613fa657613fa6614f0f565b60209081029190910101526000613fde7f10cff6e9a45d56553c0d6a15090a896923104ebcf7e6f897a55ce1a251179890838361233d565b60408051606086901b6bffffffffffffffffffffffff191660208201528151601481830301815260348201909252919250600091614020918491605401615374565b60408051601f19818403018152919052905061056e7f10cff6e9a45d56553c0d6a15090a896923104ebcf7e6f897a55ce1a25117989084600084611603565b600061406a84611eed565b61407490846150ec565b905060006140828787612b9f565b9050600061408e825490565b9050600061409f8260ff8616612c2f565b90506140bd8460ff168651836140b59190614fc0565b849190612738565b808455915060006140cf8a8a87612bd6565b90506140dc602083615455565b6140e69082614fc0565b905060006140f56020846152cd565b9050614102828289612484565b5050505050505050505050565b6060614119613ba4565b15614129576123578484846135c7565b6040517fa2d3d4fb000000000000000000000000000000000000000000000000000000008152339063a2d3d4fb9061239e90879087908790600401615469565b6020810151603482015160609190911c90600090614188905b60f81c90565b9050915091565b604080516002808252606082018352600092839291906020830190803683370190505090508360001b816000815181106141cb576141cb614f0f565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106141fd576141fd614f0f565b602090810291909101015260006142357fb07871d3346b8174fd8c44ae24608a1fbb23c09a1331e6124a566242df16e033838361233d565b60208101519091506105c990614182565b8115610e2457600061425885856121af565b905061056e8184600085613d04565b61426f613ba4565b1561427e576104fd828261343e565b6040517f971eb6cb000000000000000000000000000000000000000000000000000000008152339063971eb6cb906114e790859085906004016153dc565b604080516001808252818301909252600091829190602080830190803683370190505090508260001b816000815181106142f8576142f8614f0f565b6020026020010181815250506000614310858361431c565b51151595945050505050565b6060614326613ba4565b1561433c5761433583836137cb565b90506105a9565b6040517fd99ddc07000000000000000000000000000000000000000000000000000000008152339063d99ddc079061437a90869086906004016153dc565b600060405180830381865afa158015614397573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261433591908101906151e6565b60006113bb838385516123e3565b606060006143db8360801c90565b90506fffffffffffffffffffffffffffffffff83168067ffffffffffffffff8111156144095761440961490e565b6040519080825280601f01601f191660200182016040528015614433576020820181803683370190505b5092506020830161444583828461444d565b505050919050565b6020811115614464578082828560045afa50505050565b6000600019600883021c1983518551821691191617835250505050565b60008083601f84011261449357600080fd5b50813567ffffffffffffffff8111156144ab57600080fd5b6020830191508360208285010111156144c357600080fd5b9250929050565b6001600160a01b038116811461152157600080fd5b600080600080600080608087890312156144f857600080fd5b863567ffffffffffffffff8082111561451057600080fd5b61451c8a838b01614481565b9098509650602089013591508082111561453557600080fd5b5061454289828a01614481565b9095509350506040870135614556816144ca565b91506060870135801515811461456b57600080fd5b809150509295509295509295565b6000806040838503121561458c57600080fd5b82359150602083013561459e816144ca565b809150509250929050565b6000806000604084860312156145be57600080fd5b833567ffffffffffffffff8111156145d557600080fd5b6145e186828701614481565b90945092505060208401356145f5816144ca565b809150509250925092565b60008083601f84011261461257600080fd5b50813567ffffffffffffffff81111561462a57600080fd5b6020830191508360208260051b85010111156144c357600080fd5b60008060008060006060868803121561465d57600080fd5b85359450602086013567ffffffffffffffff8082111561467c57600080fd5b61468889838a01614481565b909650945060408801359150808211156146a157600080fd5b506146ae88828901614600565b969995985093965092949392505050565b600080600080604085870312156146d557600080fd5b843567ffffffffffffffff808211156146ed57600080fd5b6146f988838901614481565b9096509450602087013591508082111561471257600080fd5b5061471f87828801614481565b95989497509550505050565b60005b8381101561474657818101518382015260200161472e565b83811115610e245750506000910152565b6000815180845261476f81602086016020860161472b565b601f01601f19169290920160200192915050565b6020815260006113bb6020830184614757565b6000602082840312156147a857600080fd5b5035919050565b6000806000806000606086880312156147c757600080fd5b853567ffffffffffffffff808211156147df57600080fd5b6147eb89838a01614481565b9097509550602088013591508082111561480457600080fd5b5061481188828901614481565b96999598509660400135949350505050565b803560ff81168114612f3157600080fd5b600080600080600080600080600060a08a8c03121561485257600080fd5b893567ffffffffffffffff8082111561486a57600080fd5b6148768d838e01614481565b909b50995060208c013591508082111561488f57600080fd5b61489b8d838e01614481565b909950975060408c01359150808211156148b457600080fd5b6148c08d838e01614600565b90975095508591506148d460608d01614823565b945060808c01359150808211156148ea57600080fd5b506148f78c828d01614481565b915080935050809150509295985092959850929598565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561494d5761494d61490e565b604052919050565b600067ffffffffffffffff82111561496f5761496f61490e565b50601f01601f191660200190565b600082601f83011261498e57600080fd5b81356149a161499c82614955565b614924565b8181528460208386010111156149b657600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000806000606086880312156149eb57600080fd5b853567ffffffffffffffff80821115614a0357600080fd5b614a0f89838a01614481565b90975095506020880135915080821115614a2857600080fd5b614a3489838a0161497d565b94506040880135915080821115614a4a57600080fd5b506146ae88828901614481565b60008060008060008060808789031215614a7057600080fd5b86359550602087013567ffffffffffffffff80821115614a8f57600080fd5b614a9b8a838b01614600565b9097509550859150614aaf60408a01614823565b94506060890135915080821115614ac557600080fd5b50614ad289828a01614481565b979a9699509497509295939492505050565b60008060008060008060608789031215614afd57600080fd5b863567ffffffffffffffff80821115614b1557600080fd5b614b218a838b01614481565b90985096506020890135915080821115614b3a57600080fd5b614b468a838b01614481565b90965094506040890135915080821115614b5f57600080fd5b50614ad289828a01614600565b600080600080600060608688031215614b8457600080fd5b85359450602086013567ffffffffffffffff80821115614ba357600080fd5b614baf89838a01614600565b90965094506040880135915080821115614a4a57600080fd5b60008060408385031215614bdb57600080fd5b50508035926020909101359150565b600080600060408486031215614bff57600080fd5b83359250602084013567ffffffffffffffff811115614c1d57600080fd5b614c2986828701614600565b9497909650939450505050565b60008060008060608587031215614c4c57600080fd5b84359350602085013567ffffffffffffffff811115614c6a57600080fd5b614c7687828801614600565b9598909750949560400135949350505050565b6000806000806000806000806080898b031215614ca557600080fd5b883567ffffffffffffffff80821115614cbd57600080fd5b614cc98c838d01614481565b909a50985060208b0135915080821115614ce257600080fd5b614cee8c838d01614481565b909850965060408b0135915080821115614d0757600080fd5b614d138c838d01614600565b909650945060608b0135915080821115614d2c57600080fd5b50614d398b828c01614481565b999c989b5096995094979396929594505050565b60008060008060608587031215614d6357600080fd5b84359350602085013567ffffffffffffffff811115614d8157600080fd5b614d8d87828801614600565b9094509250614da0905060408601614823565b905092959194509250565b818352818160208501375060006020828401015260006020601f19601f840116840101905092915050565b604081526000614dea604083018587614dab565b90506001600160a01b0383166020830152949350505050565b604081526000614e166040830185614757565b90506001600160a01b03831660208301529392505050565b600067ffffffffffffffff80841115614e4957614e4961490e565b8360051b6020614e5a818301614924565b868152918501918181019036841115614e7257600080fd5b865b84811015614ea657803586811115614e8c5760008081fd5b614e9836828b0161497d565b845250918301918301614e74565b50979650505050505050565b828482376000838201600081528351614ecf81836020880161472b565b0195945050505050565b602081526000610596602083018486614dab565b8385823760008482016000815283858237600093019283525090949350505050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015614f6b57815187529582019590820190600101614f4f565b509495945050505050565b848152608060208201526000614f8f6080830186614f3b565b60ff851660408401528281036060840152611c2b8185614757565b634e487b7160e01b600052601160045260246000fd5b60008219821115614fd357614fd3614faa565b500190565b60006000198203614feb57614feb614faa565b5060010190565b83815260606020820152600061500b6060830185614f3b565b828103604084015261501d8185614757565b9695505050505050565b600081518084526020808501808196508360051b8101915082860160005b8581101561506f57828403895261505d848351614757565b98850198935090840190600101615045565b5091979650505050505050565b8381526060602082015260006150956060830185614757565b828103604084015261501d8185615027565b600060ff821660ff81036150bd576150bd614faa565b60010192915050565b600061ffff8083168185168083038211156150e3576150e3614faa565b01949350505050565b600060ff821660ff84168082101561510657615106614faa565b90039392505050565b60008282101561512157615121614faa565b500390565b6020815260006113bb6020830184615027565b8381528260208201526060604082015260006105936060830184614f3b565b600060ff821660ff84168060ff0382111561517557615175614faa565b019392505050565b8381526000835161519581602085016020880161472b565b808301905083516151ad81602084016020880161472b565b0160200195945050505050565b8381526060602082015260006151d36060830185614f3b565b905060ff83166040830152949350505050565b6000602082840312156151f857600080fd5b815167ffffffffffffffff81111561520f57600080fd5b8201601f8101841361522057600080fd5b805161522e61499c82614955565b81815285602083850101111561524357600080fd5b6105c982602083016020860161472b565b6060815260006152676060830186614757565b60208301949094525060400152919050565b600081600019048311821515161561529357615293614faa565b500290565b600063ffffffff8083168185168083038211156150e3576150e3614faa565b634e487b7160e01b600052601260045260246000fd5b6000826152dc576152dc6152b7565b500690565b8381528260208201526080604082015260006153006080830184614f3b565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b8481528360208201526080604082015260006153606080830185614f3b565b905060ff8316606083015295945050505050565b6000835161538681846020880161472b565b8351908301906150e381836020880161472b565b8284823760609190911b6bffffffffffffffffffffffff19169101908152601401919050565b600082516153d281846020870161472b565b9190910192915050565b8281526040602082015260006105966040830184614f3b565b80516020808301519190811015615416576000198160200360031b1b821691505b50919050565b6000815160208301516bffffffffffffffffffffffff19808216935060148310156144455760149290920360031b82901b161692915050565b600082615464576154646152b7565b500490565b8381526060602082015260006154826060830185614f3b565b905082604083015294935050505056fea2646970667358221220a2cdf6e0e0864e934405f701ac394b78ba7a5156515e8c57456bfa5a32a79fd764736f6c634300080d0033b07871d3346b8174fd8c44ae24608a1fbb23c09a1331e6124a566242df16e033c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470c3b575e3277c8e0d6f7776cc6e1bb3aeeadf47feb68a2aa8a9bf38d7a278286586425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9466b87090ce2bc34362737dab7b900dfc94a202aee6a6323f6813f7ce59d975ebf3b70b2ef556654851b65c7b706572cfa3260c0098f34675bc498d7fca6c73889c69f1332d0769f7fc2e4abeff42a2e0fcbfe7116617ad379b620bf0e08879f7cf2f10cacf485bbd2f754f8ea5bb61bc02278cb975662e05b61c8020e2db13210cff6e9a45d56553c0d6a15090a896923104ebcf7e6f897a55ce1a251179890";
|
|
788
854
|
|
|
789
855
|
type WorldConstructorParams =
|
|
790
|
-
| [
|
|
856
|
+
| [signer?: Signer]
|
|
791
857
|
| ConstructorParameters<typeof ContractFactory>;
|
|
792
858
|
|
|
793
859
|
const isSuperArgs = (
|
|
794
860
|
xs: WorldConstructorParams
|
|
795
|
-
): xs is ConstructorParameters<typeof ContractFactory> =>
|
|
796
|
-
return (
|
|
797
|
-
typeof xs[0] === "string" ||
|
|
798
|
-
(Array.isArray as (arg: any) => arg is readonly any[])(xs[0]) ||
|
|
799
|
-
"_isInterface" in xs[0]
|
|
800
|
-
);
|
|
801
|
-
};
|
|
861
|
+
): xs is ConstructorParameters<typeof ContractFactory> => xs.length > 1;
|
|
802
862
|
|
|
803
863
|
export class World__factory extends ContractFactory {
|
|
804
864
|
constructor(...args: WorldConstructorParams) {
|
|
805
865
|
if (isSuperArgs(args)) {
|
|
806
866
|
super(...args);
|
|
807
867
|
} else {
|
|
808
|
-
|
|
809
|
-
super(_abi, World__factory.linkBytecode(linkLibraryAddresses), signer);
|
|
868
|
+
super(_abi, _bytecode, args[0]);
|
|
810
869
|
}
|
|
811
870
|
this.contractName = "World";
|
|
812
871
|
}
|
|
813
872
|
|
|
814
|
-
static linkBytecode(linkLibraryAddresses: WorldLibraryAddresses): string {
|
|
815
|
-
let linkedBytecode = _bytecode;
|
|
816
|
-
|
|
817
|
-
linkedBytecode = linkedBytecode.replace(
|
|
818
|
-
new RegExp("__\\$a92a6b4f8097205d5d95c0306d5040ea3a\\$__", "g"),
|
|
819
|
-
linkLibraryAddresses[
|
|
820
|
-
"../../node_modules/@latticexyz/store/src/StoreCore.sol:StoreCore"
|
|
821
|
-
]
|
|
822
|
-
.replace(/^0x/, "")
|
|
823
|
-
.toLowerCase()
|
|
824
|
-
);
|
|
825
|
-
|
|
826
|
-
return linkedBytecode;
|
|
827
|
-
}
|
|
828
|
-
|
|
829
873
|
deploy(
|
|
830
874
|
overrides?: Overrides & { from?: string | Promise<string> }
|
|
831
875
|
): Promise<World> {
|
|
@@ -853,7 +897,3 @@ export class World__factory extends ContractFactory {
|
|
|
853
897
|
return new Contract(address, _abi, signerOrProvider) as World;
|
|
854
898
|
}
|
|
855
899
|
}
|
|
856
|
-
|
|
857
|
-
export interface WorldLibraryAddresses {
|
|
858
|
-
["../../node_modules/@latticexyz/store/src/StoreCore.sol:StoreCore"]: string;
|
|
859
|
-
}
|
|
@@ -12,7 +12,6 @@ export type { StdAssertions } from "./StdAssertions";
|
|
|
12
12
|
export type { StdInvariant } from "./StdInvariant";
|
|
13
13
|
export type { Store } from "./Store";
|
|
14
14
|
export type { StoreCore } from "./StoreCore";
|
|
15
|
-
export type { StoreCoreExtended } from "./StoreCoreExtended";
|
|
16
15
|
export type { StoreSwitch } from "./StoreSwitch";
|
|
17
16
|
export type { SystemTest } from "./SystemTest";
|
|
18
17
|
export type { Test } from "./Test";
|
|
@@ -37,7 +36,6 @@ export { StdAssertions__factory } from "./factories/StdAssertions__factory";
|
|
|
37
36
|
export { StdInvariant__factory } from "./factories/StdInvariant__factory";
|
|
38
37
|
export { Store__factory } from "./factories/Store__factory";
|
|
39
38
|
export { StoreCore__factory } from "./factories/StoreCore__factory";
|
|
40
|
-
export { StoreCoreExtended__factory } from "./factories/StoreCoreExtended__factory";
|
|
41
39
|
export { StoreSwitch__factory } from "./factories/StoreSwitch__factory";
|
|
42
40
|
export { SystemTest__factory } from "./factories/SystemTest__factory";
|
|
43
41
|
export { Test__factory } from "./factories/Test__factory";
|