@latticexyz/world 2.0.0-alpha.1.21 → 2.0.0-alpha.1.22
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/abi/AccessControl.sol/AccessControl.json +241 -241
- package/abi/AccessManagementSystem.sol/AccessManagementSystem.json +157 -157
- package/abi/AddressArray.sol/AddressArray.json +1124 -1124
- package/abi/ArrayLib.sol/ArrayLib.json +139 -139
- package/abi/Bool.sol/Bool.json +704 -704
- package/abi/Bytes.sol/Bytes.json +6 -6
- package/abi/Call.sol/Call.json +112 -112
- package/abi/Callbacks.sol/Callbacks.json +1100 -1100
- package/abi/CoreModule.sol/CoreModule.json +542 -542
- package/abi/CoreSystem.sol/CoreSystem.json +92 -92
- package/abi/DecodeSlice.sol/DecodeSlice.json +3891 -3891
- package/abi/EncodeArray.sol/EncodeArray.json +3344 -3344
- package/abi/FunctionSelectors.sol/FunctionSelectors.json +1678 -1678
- package/abi/Hooks.sol/Hooks.json +1100 -1100
- package/abi/IAccessManagementSystem.sol/IAccessManagementSystem.json +32 -32
- package/abi/IBaseWorld.sol/IBaseWorld.json +224 -99
- package/abi/ICoreSystem.sol/ICoreSystem.json +6 -6
- package/abi/IModule.sol/IModule.json +28 -28
- package/abi/IModuleInstallationSystem.sol/IModuleInstallationSystem.json +40 -40
- package/abi/IStore.sol/IStore.json +551 -349
- package/abi/IStore.sol/IStoreData.json +551 -349
- package/abi/IStore.sol/IStoreHook.json +495 -349
- package/abi/IStore.sol/IStoreRead.json +495 -349
- package/abi/IStore.sol/IStoreRegistration.json +495 -349
- package/abi/IStore.sol/IStoreWrite.json +551 -349
- package/abi/IStoreRegistrationSystem.sol/IStoreRegistrationSystem.json +80 -80
- package/abi/ISystemHook.sol/ISystemHook.json +19 -19
- package/abi/IUniqueEntitySystem.sol/IUniqueEntitySystem.json +13 -13
- package/abi/IWorldKernel.sol/IWorldCall.json +455 -276
- package/abi/IWorldKernel.sol/IWorldData.json +524 -276
- package/abi/IWorldKernel.sol/IWorldKernel.json +524 -276
- package/abi/IWorldKernel.sol/IWorldModuleInstallation.json +455 -276
- package/abi/IWorldRegistrationSystem.sol/IWorldRegistrationSystem.json +198 -198
- package/abi/InstalledModules.sol/InstalledModules.json +1351 -1351
- package/abi/KeysWithValue.sol/KeysWithValue.json +1124 -1124
- package/abi/KeysWithValueHook.sol/KeysWithValueHook.json +416 -416
- package/abi/KeysWithValueModule.sol/KeysWithValueModule.json +293 -293
- package/abi/Memory.sol/Memory.json +131 -131
- package/abi/Mixed.sol/Mixed.json +2781 -2781
- package/abi/ModuleInstallationSystem.sol/ModuleInstallationSystem.json +138 -138
- package/abi/NamespaceOwner.sol/NamespaceOwner.json +782 -782
- package/abi/PackedCounter.sol/PackedCounterLib.json +665 -665
- package/abi/ResourceAccess.sol/ResourceAccess.json +926 -926
- package/abi/ResourceSelector.sol/ResourceSelector.json +253 -253
- package/abi/ResourceType.sol/ResourceType.json +831 -831
- package/abi/Schema.sol/SchemaLib.json +1469 -1469
- package/abi/SchemaType.sol/SchemaType.json +315 -315
- package/abi/Slice.sol/SliceInstance.json +429 -429
- package/abi/Slice.sol/SliceLib.json +429 -429
- package/abi/Storage.sol/Storage.json +1024 -1061
- package/abi/StoreCore.sol/StoreCore.json +10434 -7652
- package/abi/StoreCore.sol/StoreCoreExtended.json +10434 -7652
- package/abi/StoreCore.sol/StoreCoreInternal.json +10434 -7652
- package/abi/StoreMetadata.sol/StoreMetadata.json +2116 -2116
- package/abi/StoreRead.sol/StoreRead.json +247 -247
- package/abi/StoreRegistrationSystem.sol/StoreRegistrationSystem.json +339 -339
- package/abi/StoreSwitch.sol/StoreSwitch.json +1814 -1359
- package/abi/System.sol/System.json +31 -31
- package/abi/SystemRegistry.sol/SystemRegistry.json +794 -794
- package/abi/Systems.sol/Systems.json +1412 -1412
- package/abi/TableId.sol/TableId.json +27 -27
- package/abi/Tables.sol/Tables.json +92 -92
- package/abi/TightCoder.sol/TightCoder.json +275 -275
- package/abi/Types.sol/Types.json +8 -8
- package/abi/UniqueEntity.sol/UniqueEntity.json +683 -683
- package/abi/UniqueEntityModule.sol/UniqueEntityModule.json +232 -232
- package/abi/UniqueEntitySystem.sol/UniqueEntitySystem.json +114 -114
- package/abi/Utils.sol/Utils.json +67 -67
- package/abi/Vector2.sol/Vector2.json +1473 -1473
- package/abi/World.sol/World.json +2426 -1491
- package/abi/WorldContext.sol/WorldContext.json +65 -65
- package/abi/WorldRegistrationSystem.sol/WorldRegistrationSystem.json +1140 -1140
- package/abi/console.sol/console.json +11417 -11417
- package/abi/constants.sol/constants.json +34 -34
- package/abi/getKeysWithValue.sol/getKeysWithValue.json +129 -129
- package/abi/getTargetTableSelector.sol/getTargetTableSelector.json +75 -75
- package/abi/getUniqueEntity.sol/getUniqueEntity.json +88 -88
- package/abi/interfaces/IErrors.sol/IErrors.json +57 -57
- package/abi/src/Bytes.sol/Bytes.json +1225 -1225
- package/abi/src/IStore.sol/IStore.json +727 -525
- package/abi/src/IStore.sol/IStoreData.json +727 -525
- package/abi/src/IStore.sol/IStoreHook.json +671 -525
- package/abi/src/IStore.sol/IStoreRead.json +671 -525
- package/abi/src/IStore.sol/IStoreRegistration.json +671 -525
- package/abi/src/IStore.sol/IStoreWrite.json +727 -525
- package/abi/src/Memory.sol/Memory.json +131 -131
- package/abi/src/PackedCounter.sol/PackedCounterLib.json +683 -683
- package/abi/src/Schema.sol/SchemaLib.json +1493 -1493
- package/abi/src/Slice.sol/SliceInstance.json +429 -429
- package/abi/src/Slice.sol/SliceLib.json +429 -429
- package/abi/src/StoreCore.sol/StoreCore.json +12500 -9718
- package/abi/src/StoreCore.sol/StoreCoreExtended.json +12500 -9718
- package/abi/src/StoreCore.sol/StoreCoreInternal.json +12500 -9718
- package/abi/src/StoreSwitch.sol/StoreSwitch.json +1822 -1367
- package/abi/tightcoder/EncodeArray.sol/EncodeArray.json +3344 -3344
- package/package.json +6 -6
- package/src/World.sol +32 -0
- package/src/interfaces/IWorldKernel.sol +12 -0
- package/types/ethers-contracts/IBaseWorld.ts +116 -0
- package/types/ethers-contracts/IStore.sol/IStore.ts +55 -0
- package/types/ethers-contracts/IStore.sol/IStoreData.ts +55 -0
- package/types/ethers-contracts/IStore.sol/IStoreWrite.ts +55 -0
- package/types/ethers-contracts/IWorldKernel.sol/IWorldData.ts +61 -0
- package/types/ethers-contracts/IWorldKernel.sol/IWorldKernel.ts +61 -0
- package/types/ethers-contracts/World.ts +116 -0
- package/types/ethers-contracts/factories/AccessManagementSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/CoreModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/CoreSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/IBaseWorld__factory.ts +61 -0
- package/types/ethers-contracts/factories/IStore.sol/IStoreData__factory.ts +28 -0
- package/types/ethers-contracts/factories/IStore.sol/IStoreWrite__factory.ts +28 -0
- package/types/ethers-contracts/factories/IStore.sol/IStore__factory.ts +28 -0
- package/types/ethers-contracts/factories/IWorldKernel.sol/IWorldData__factory.ts +33 -0
- package/types/ethers-contracts/factories/IWorldKernel.sol/IWorldKernel__factory.ts +33 -0
- package/types/ethers-contracts/factories/KeysWithValueHook__factory.ts +1 -1
- package/types/ethers-contracts/factories/KeysWithValueModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/ModuleInstallationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreCore__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreRead__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreRegistrationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/StoreSwitch__factory.ts +1 -1
- package/types/ethers-contracts/factories/UniqueEntityModule__factory.ts +1 -1
- package/types/ethers-contracts/factories/UniqueEntitySystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/WorldRegistrationSystem__factory.ts +1 -1
- package/types/ethers-contracts/factories/World__factory.ts +62 -1
- package/types/ethers-contracts/factories/src/IStore.sol/IStoreData__factory.ts +28 -0
- package/types/ethers-contracts/factories/src/IStore.sol/IStoreWrite__factory.ts +28 -0
- package/types/ethers-contracts/factories/src/IStore.sol/IStore__factory.ts +28 -0
- package/types/ethers-contracts/factories/src/StoreCore__factory.ts +1 -1
- package/types/ethers-contracts/factories/src/StoreSwitch__factory.ts +1 -1
- package/types/ethers-contracts/src/IStore.sol/IStore.ts +55 -0
- package/types/ethers-contracts/src/IStore.sol/IStoreData.ts +55 -0
- package/types/ethers-contracts/src/IStore.sol/IStoreWrite.ts +55 -0
|
@@ -521,6 +521,67 @@ const _abi = [
|
|
|
521
521
|
stateMutability: "view",
|
|
522
522
|
type: "function",
|
|
523
523
|
},
|
|
524
|
+
{
|
|
525
|
+
inputs: [
|
|
526
|
+
{
|
|
527
|
+
internalType: "bytes16",
|
|
528
|
+
name: "namespace",
|
|
529
|
+
type: "bytes16",
|
|
530
|
+
},
|
|
531
|
+
{
|
|
532
|
+
internalType: "bytes16",
|
|
533
|
+
name: "name",
|
|
534
|
+
type: "bytes16",
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
internalType: "bytes32[]",
|
|
538
|
+
name: "key",
|
|
539
|
+
type: "bytes32[]",
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
internalType: "uint8",
|
|
543
|
+
name: "schemaIndex",
|
|
544
|
+
type: "uint8",
|
|
545
|
+
},
|
|
546
|
+
{
|
|
547
|
+
internalType: "uint256",
|
|
548
|
+
name: "byteLengthToPop",
|
|
549
|
+
type: "uint256",
|
|
550
|
+
},
|
|
551
|
+
],
|
|
552
|
+
name: "popFromField",
|
|
553
|
+
outputs: [],
|
|
554
|
+
stateMutability: "nonpayable",
|
|
555
|
+
type: "function",
|
|
556
|
+
},
|
|
557
|
+
{
|
|
558
|
+
inputs: [
|
|
559
|
+
{
|
|
560
|
+
internalType: "bytes32",
|
|
561
|
+
name: "tableId",
|
|
562
|
+
type: "bytes32",
|
|
563
|
+
},
|
|
564
|
+
{
|
|
565
|
+
internalType: "bytes32[]",
|
|
566
|
+
name: "key",
|
|
567
|
+
type: "bytes32[]",
|
|
568
|
+
},
|
|
569
|
+
{
|
|
570
|
+
internalType: "uint8",
|
|
571
|
+
name: "schemaIndex",
|
|
572
|
+
type: "uint8",
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
internalType: "uint256",
|
|
576
|
+
name: "byteLengthToPop",
|
|
577
|
+
type: "uint256",
|
|
578
|
+
},
|
|
579
|
+
],
|
|
580
|
+
name: "popFromField",
|
|
581
|
+
outputs: [],
|
|
582
|
+
stateMutability: "nonpayable",
|
|
583
|
+
type: "function",
|
|
584
|
+
},
|
|
524
585
|
{
|
|
525
586
|
inputs: [
|
|
526
587
|
{
|
|
@@ -772,7 +833,7 @@ const _abi = [
|
|
|
772
833
|
] as const;
|
|
773
834
|
|
|
774
835
|
const _bytecode =
|
|
775
|
-
"0x6080604052348015630000001257600080fd5b50630000002b630000006860201b6300000b701760201c565b630000004363000002ab60201b6300000d4b1760201c565b6300000061600060801b33630000031d60201b6300000dae1760201c565b630000322d565b60408051676d756473746f726560c01b602082015265736368656d6160d01b603082015263000000eb910160405160208183030381529060405263000000af906300002c4a565b63000000ca605f8063000003fa60201b6300000e891760201c565b63000000e4601f63000004df60201b6300000f3e1760201c565b630000056d565b6300000103630000061a60201b6300000faf1760201c565b630000011b630000067860201b6300000fff1760201c565b630000013363000006d260201b630000105f1760201c565b630000014b630000074760201b63000010b81760201c565b60408051600280825260608201909252600091816020015b606081526020019060019003908163000001635790505090506040518060400160405280600b81526020016a76616c7565536368656d6160a81b8152508160008151811063000001b95763000001b96300002c89565b6020026020010181905250604051806040016040528060098152602001686b6579536368656d6160b81b8152508160018151811063000001ff5763000001ff6300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b6030820152815180820390930183528101905263000002a8906300000252906300002c4a565b60405180604001604052806006815260200165736368656d6160d01b81525083604051602001630000028691906300002d61565b604051602081830303815290604052630000079560201b630000110e1760201c565b50565b60408051600060208201526d2730b6b2b9b830b1b2a7bbb732b960911b6030820152630000031b910160405160208183030381529060405263000002f0906300002c4a565b63000002fc630000085b565b630000030863000008f6565b630000093660201b63000011c51760201c565b565b60408051600180825281830190925260009160208083019080368337019050509050826001600160801b0319168160008151811063000003635763000003636300002c89565b602090810291909101810191909152604080516000818401526d2730b6b2b9b830b1b2a7bbb732b960911b6030820152815180820390930183528101905263000003f59063000003b4906300002c4a565b6040516001600160601b0319606086901b166020820152839060009060340160405160208183030381529060405263000009cd60201b63000012521760201c565b505050565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811063000004395763000004396300002c89565b602002602001019060c581111563000004585763000004586300002d78565b908160c581111563000004715763000004716300002d78565b815250508281600181518110630000048f57630000048f6300002c89565b602002602001019060c581111563000004ae5763000004ae6300002d78565b908160c581111563000004c75763000004c76300002d78565b90525063000004d7816300000a6d565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110630000051e57630000051e6300002c89565b602002602001019060c5811115630000053d57630000053d6300002d78565b908160c581111563000005565763000005566300002d78565b9052506300000566816300000a6d565b9392505050565b630000058b6000836300000c7b60201b63000012e61790919060201c565b63000005a96001826300000c7b60201b63000012e61790919060201c565b63000005b6836300000ea1565b1563000005ff578263000005d7846300000edb60201b63000014b41760201c565b60405163051eeee360e21b815260040163000005f69291906300002d8e565b60405180910390fd5b63000003f58383836300000f0860201b63000014df1760201c565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152630000031b91016040516020818303038152906040526300000660906300002c4a565b630000066c63000010ca565b6300000308630000110a565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b6030820152630000031b910160405160208183030381529060405263000006c6906300002c4a565b630000066c630000114a565b60008063000006e163000011e1565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152929450909250630000074391015b604051602081830303815290604052630000072e906300002c4a565b8383630000128160201b63000016311760201c565b5050565b600080630000075663000012da565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b6030820152929450909250630000074391016300000712565b600063000007a5838363000013df565b6040805160018082528183019092529192506000919060208083019080368337019050509050848160008151811063000007e55763000007e56300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b818401526c53746f72654d6574616461746160981b60308201528151808203909301835281019052630000085490630000083f906300002c4a565b828463000014cd60201b63000016891760201c565b5050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110630000089b57630000089b6300002c89565b602002602001019060c581111563000008ba5763000008ba6300002d78565b908160c581111563000008d35763000008d36300002d78565b8152505063000008f0816300000a6d60201b63000016e11760201c565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050604f81600081518110630000089b57630000089b6300002c89565b63000009426300001526565b1563000009645763000003f5838383630000056d60201b63000019361760201c565b604051636ac99b4360e11b8152600481018490526024810183905260448101829052339063d5933686906064015b600060405180830381600087803b15801563000009ae57600080fd5b505af115801563000009c4573d6000803e3d6000fd5b50505050505050565b63000009d96300001526565b156300000a035763000009fc84848484630000159f60201b63000019a31760201c565b6300000a67565b6040516308a5393360e11b8152339063114a7266906300000a309087908790879087906004016300002dea565b600060405180830381600087803b1580156300000a4c57600080fd5b505af11580156300000a62573d6000803e3d6000fd5b505050505b50505050565b6000601c825111156300000a9b578151604051635318beb960e01b815260040163000005f691815260200190565b60008060008060005b86518110156300000bcb5760006300000b008883815181106300000ace576300000ace6300002c89565b602002602001015160c58111156300000aed576300000aed6300002d78565b63000017e860201b6300001b741760201c565b905061ffff8116156300000b475782156300000b2f57604051633c795af960e21b815260040160405180910390fd5b836300000b3d816300002e3c565b9450506300000b4c565b600192505b6300000b5a81866300002e61565b94506300000bbe866300000b718460046300002e8d565b8a85815181106300000b89576300000b896300002c89565b602002602001015160c58111156300000ba8576300000ba86300002d78565b60f81b63000018c560201b6300001c251760201c565b9550506001016300000aa4565b5060008287516300000bdf91906300002eab565b9050600e8160ff1611156300000c0f57604051635318beb960e01b815260ff8216600482015260240163000005f6565b6300000c2e8560008660f01b63000018fb60201b6300001c5b1760201c565b94506300000c4f8560028560f81b63000018c560201b6300001c251760201c565b94506300000c708560038360f81b63000018c560201b6300001c251760201c565b979650505050505050565b801580156300000c9f57506300000c9f82630000191960201b6300001c911760201c565b156300000cc457604051635318beb960e01b81526000600482015260240163000005f6565b60006300000cdf83630000191d60201b6300001c951760201c565b60ff169050600e8111156300000d0d57604051635318beb960e01b81526004810182905260240163000005f6565b60006300000d2884630000194360201b6300001ca61760201c565b60ff169050601c6300000d3d83836300002e8d565b11156300000d71576300000d5382826300002e8d565b604051635318beb960e01b815260040163000005f691815260200190565b60008060005b6300000d8585856300002e8d565b8110156300000e4a5760006300000dc96300000db2838a630000196060201b6300001cb21790919060201c565b60c58111156300000aed576300000aed6300002d78565b11156300000e0b578381106300000df357604051633c795af960e21b815260040160405180910390fd5b826300000e01816300002ed4565b9350506300000e40565b838110156300000e2e57604051633c795af960e21b815260040160405180910390fd5b816300000e3c816300002ed4565b9250505b6001016300000d77565b508282146300000e7257604051635318beb960e01b81526004810183905260240163000005f6565b8381146300000e9957604051635318beb960e01b81526004810182905260240163000005f6565b505050505050565b60006300000ed46300000ec18363000019a460201b6300001cde1760201c565b630000191960201b6300001c911760201c565b1592915050565b6060816040516020016300000ef291815260200190565b6040516020818303038152906040529050919050565b6040805160018082528183019092526000916020808301908036833701905050905083816000815181106300000f44576300000f446300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b603082015281518082039093018352810190526000906300000fa2906300000f9a906300002c4a565b836300001a68565b90506300000fd6816300000fc3866300001ab260201b6300001d631760201c565b6300001ab560201b630000157b1760201c565b63000010036300000fea8260206300002e8d565b6300000fc3856300001ab260201b6300001d631760201c565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152600080516020630000823a83398151915291016040516020818303038152906040526300001056906300002c4a565b836300001070876300001ab260201b6300001d631760201c565b6300001089876300001ab260201b6300001d631760201c565b60408051602081019390935282015260600160408051601f198184030181529082905263000010bb9392916300002ef3565b60405180910390a15050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110630000089b57630000089b6300002c89565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110630000089b57630000089b6300002c89565b6040805160028082526060820183526000928392919060208301908036833701905050905060c581600081518110630000118a57630000118a6300002c89565b602002602001019060c581111563000011a95763000011a96300002d78565b908160c581111563000011c25763000011c26300002d78565b8152505060c481600181518110630000089b57630000089b6300002c89565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908163000011fd5790505090506040518060400160405280600581526020016476616c756560d81b81525081600081518110630000124d57630000124d6300002c89565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b630000128d6300001526565b1563000012af5763000003f58383836300001ab960201b6300001d661760201c565b60405163fe86a89f60e01b8152339063fe86a89f906300000992908690869086906004016300002f30565b60408051600280825260608281019093528291600091816020015b606081526020019060019003908163000012f5579050509050604051806040016040528060098152602001687461626c654e616d6560b81b8152508160008151811063000013495763000013496300002c89565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d65730000000000000000000000008152508160018151811063000013a35763000013a36300002c89565b6020026020010181905250806040518060400160405280600d81526020016c53746f72654d6574616461746160981b8152509092509250509091565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110630000141f57630000141f6300002c89565b602002602001019061ffff16908161ffff168152505082518160018151811063000014505763000014506300002c89565b602002602001019061ffff16908161ffff168152505060006300001481826300001b5a60201b6300001df01760201c565b9050630000149c816300001ab260201b6300001d631760201c565b858560405160200163000014b4939291906300002f63565b6040516020818303038152906040529250505092915050565b63000014d96300001526565b1563000014fb5763000003f58383836300001c2760201b6300001ecd1760201c565b604051638ed41f2f60e01b81523390638ed41f2f906300000992908690869086906004016300002ef3565b6000303b808203630000153b57600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015630000157657600080fd5b505afa9250505080156300001589575060015b630000159757600091505090565b600191505090565b600063000015ae856300001fa4565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c468585858560405163000015e994939291906300002dea565b60405180910390a16000630000160c86630000201f60201b63000021221760201c565b905060005b815181101563000016c657600082828151811063000016365763000016366300002c89565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401630000167694939291906300002dea565b600060405180830381600087803b158015630000169257600080fd5b505af115801563000016a8573d6000803e3d6000fd5b5050505050808063000016bc906300002ed4565b9150506300001611565b5063000016e082630000194360201b6300001ca61760201c565b60ff168460ff161015630000171357630000170c8686848787630000210160201b63000021d01760201c565b6300001730565b6300001730868684878763000021cd60201b63000022761760201c565b60005b815181101563000009c457600082828151811063000017585763000017586300002c89565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b8152600401630000179894939291906300002dea565b600060405180830381600087803b15801563000017b457600080fd5b505af115801563000017ca573d6000803e3d6000fd5b5050505050808063000017de906300002ed4565b9150506300001733565b6000808260c581111563000018035763000018036300002d78565b60ff169050602081101563000018225763000005668160016300002e8d565b6040811015630000184c576020630000183e8260016300002e8d565b630000056691906300002fa8565b60608110156300001868576040630000183e8260016300002e8d565b60608360c581111563000018825763000018826300002d78565b0363000018925750600192915050565b60618360c581111563000018ac5763000018ac6300002d78565b0363000018bc5750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c6001600160f01b031990911c198416179392505050565b1590565b6000630000193a826003630000223c60201b6300001cc31760201c565b60f81c92915050565b6000630000193a826002630000223c60201b6300001cc31760201c565b6000630000198a8363000019778460046300002e8d565b630000223c60201b6300001cc31760201c565b60f81c60c581111563000005665763000005666300002d78565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811063000019e35763000019e36300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b603082015281518082039093018352810190526000906300001a4d906300001a39906300002c4a565b836300001a6860201b63000022b31760201c565b905063000004d781630000224360201b63000023091760201c565b6000600080516020630000821a83398151915283836040516020016300001a93939291906300002fc5565b60408051601f1981840301815291905280516020909101209392505050565b90565b9055565b60006300001ac8846300001fa4565b90508151600014806300001af757506300001af081630000224760201b630000230d1760201c565b60ff168251145b6300001b3e576300001b1681630000224760201b630000230d1760201c565b825160405163f2b2755960e01b815260ff9092166004830152602482015260440163000005f6565b6300000a67848484604051602001630000028691906300002d61565b6000806000805b84518110156300001c07576300001bc6836300001b818360026300002fe8565b6300001b909060046300002e8d565b8784815181106300001ba8576300001ba86300002c89565b602002602001015160f01b63000018fb60201b6300001c5b1760201c565b92508481815181106300001be0576300001be06300002c89565b602002602001015161ffff16826300001bfb9190630000300d565b91506001016300001b61565b5063000004d78260008360e01b630000227760201b630000232b1760201c565b60006300001c36846300001fa4565b905060006300001c5382630000229560201b63000023611760201c565b905060008190506000806300001c7685630000191d60201b6300001c951760201c565b60ff1611156300001cd6576300001c9b8584630000229b60201b63000023671760201c565b90506300001cb68163000022a360201b630000236f1760201c565b6300001cc59060206300002e8d565b6300001cd390836300002e8d565b91505b845182146300001d0857845160405163521b3d3360e01b815263000005f6918491600401918252602082015260400190565b600080516020630000823a8339815191528787876040516300001d2f939291906300002ef3565b60405180910390a160006300001d5288630000201f60201b63000021221760201c565b905060005b81518110156300001e0a5760008282815181106300001d7c576300001d7c6300002c89565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b81526004016300001dba939291906300002ef3565b600060405180830381600087803b1580156300001dd657600080fd5b505af11580156300001dec573d6000803e3d6000fd5b505050505080806300001e00906300002ed4565b9150506300001d57565b5060006300001e2789896300001a6860201b63000022b31760201c565b905060006300001e448863000022a960201b63000023751760201c565b90506300001e63826000838963000022af60201b630000237b1760201c565b6300001e728660206300002e8d565b6300001e8090826300002e8d565b90506300001e9b87630000191d60201b6300001c951760201c565b60ff166000036300001eb35750505050505050505050565b60006300001ecf8b8b63000023aa60201b63000024391760201c565b90506300001ef0816300000fc3876300001ab260201b6300001d631760201c565b60008060005b6300001f0f8b630000191d60201b6300001c951760201c565b60ff168160ff1610156300001f94576300001f398e8e8363000023d560201b63000024701760201c565b92506300001f5b8160ff1689630000242260201b63000024c91790919060201c565b91506300001f7a836000878563000022af60201b630000237b1760201c565b6300001f8882866300002e8d565b94506001016300001ef6565b5050505050505050505050505050565b60006300001fbf8263000019a460201b6300001cde1760201c565b90506300001fda81630000191960201b6300001c911760201c565b15630000201a57816300001ffb836300000edb60201b63000014b41760201c565b60405163d623a70d60e01b815260040163000005f69291906300002d8e565b919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110630000205f57630000205f6300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015264486f6f6b7360d81b6030820152815180820390930183528101905260009063000020ca9063000020b4906300002c4a565b836000630000246a60201b63000024fb1760201c565b905063000004d763000020ee8260008451630000251960201b63000025a11760201c565b630000259760201b63000026311760201c565b600063000021238360ff1685630000196060201b6300001cb21790919060201c565b9050815163000021448260c58111156300000aed576300000aed6300002d78565b14630000218e5763000021688160c58111156300000aed576300000aed6300002d78565b825160405163521b3d3360e01b81526004810192909252602482015260440163000005f6565b6000630000219e87876300001a68565b9050600063000021b0868663000025b8565b90506300000a62828286630000261c60201b63000026421760201c565b600063000021e884630000194360201b6300001ca61760201c565b63000021f690846300002eab565b9050630000220f8686838551630000263b60201b60201c565b6000630000222087878463000023d5565b905063000009c4818463000026ad60201b63000026571760201c565b6008021b90565b5490565b6000630000225682630000191d565b6300002263836300001943565b630000227191906300003032565b92915050565b6008820281811c6001600160e01b031990911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60200190565b60208304840193506020838163000022cd5763000022cd630000305d565b06925082156300002343576000836020039050600063000022fb8363000026bd60201b63000026631760201c565b90506008850281811c91508451811c9050811987541682821617875550818311630000232a5750506300000a67565b63000023396001876300002e8d565b9550509182019190035b602081106300002374578151845563000023606001856300002e8d565b935060209190910190601f19016300002343565b80156300000a6757600063000023978263000026bd60201b63000026631760201c565b8554845182169119161785555050505050565b6000600080516020630000821a83398151915283836040516020016300001a93939291906300003073565b6000600080516020630000821a8339815191528484846040516020016300002402949392919063000030c0565b60408051601f198184030181529190528051602090910120949350505050565b60008063000024348360026300002fe8565b63000024439060046300002e8d565b9050630000245f8482630000223c60201b6300001cc31760201c565b60f01c949350505050565b606063000024786300001526565b1563000024a357630000249a84848463000026ca60201b63000026701760201c565b90506300000566565b60405163340fb6e360e21b8152339063d03edb8c9063000024ce9087908790879060040163000030f7565b600060405180830381865afa15801563000024ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052630000249a91908101906300003127565b6000818311158015630000252e575083518211155b6300002557578383836040516323230fa360e01b815260040163000005f69392919063000031e0565b60208401630000256984826300002e8d565b90506000630000257b85856300002fa8565b6001600160801b031660809290921b9190911795945050505050565b606060006300000566836014600063000026f660201b630000268b1760201c565b600080805b8360ff1681101563000026145763000025ec6300000db28287630000196060201b6300001cb21790919060201c565b63000025fa90836300002e8d565b915080630000260a816300002ed4565b91505063000025bd565b509392505050565b60006020820190506300000a67848483855163000022af60201b60201c565b6000630000264b858563000023aa565b90506000630000266882630000224360201b63000023091760201c565b9050630000268c8460ff168483630000285660201b63000027ce179092919060201c565b90506300000e99826300000fc3836300001ab260201b6300001d631760201c565b630000074382600083630000261c565b60001960089091021c1990565b6060600063000026db856300001fa4565b905063000026ed858585846300002937565b95945050505050565b6060600063000027138563000029a260201b63000028a91760201c565b9050600063000027308663000029a860201b63000028af1760201c565b9050600084630000276157630000274a8660086300002fe8565b630000275a906101006300002fa8565b6300002764565b60005b90506000868381630000277d57630000277d630000305d565b049050630000278e87846300003209565b1563000028055760405162461bcd60e51b815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a65000000606482015260840163000005f6565b602080820201604051955080860160405250808552600060208601855b838310156300002848578051851c82526001929092019160209091019089016300002822565b505050505050509392505050565b6000838163000028668260e01c90565b90506000630000287b8760ff88166300002422565b905080851063000028ab57630000289481866300002fa8565b63000028a290836300002e8d565b915063000028ca565b63000028b985826300002fa8565b63000028c790836300002fa8565b91505b600063000028db8760026300002fe8565b63000028ea9060046300002e8d565b9050630000290b8460008560e01b630000227760201b630000232b1760201c565b9350630000292b84828860f01b63000018fb60201b6300001c5b1760201c565b98975050505050505050565b6060630000295282630000194360201b6300001ca61760201c565b60ff168360ff161015630000298657630000297d8585858563000029b460201b63000028c41760201c565b905063000004d7565b630000297d858585856300002a4760201b63000029241760201c565b60801c90565b6001600160801b031690565b6060600063000029d88460ff1684630000196060201b6300001cb21790919060201c565b9050600063000029f98260c58111156300000aed576300000aed6300002d78565b905060006300002a0b88886300001a68565b905060006300002a1d868863000025b8565b90506300002a3a8284836300002ad260201b63000029711760201c565b9998505050505050505050565b606060006300002a6483630000194360201b6300001ca61760201c565b6300002a7290856300002eab565b905060006300002a8587878463000023d5565b905060006300002ab660ff84166300002aa08a8a6300002b35565b630000242260201b63000024c91790919060201c565b9050630000292b82826300002b4660201b63000029d11760201c565b6060826001600160401b038111156300002af2576300002af26300002c73565b6040519080825280601f01601f1916602001820160405280156300002b1e576020820181803683370190505b509050602081016300002614858585846300002b58565b6000806300001a4d848463000023aa565b60606300000566838360006300002ad2565b6020820484019350602082816300002b76576300002b76630000305d565b06915081156300002be457600082602003905060006300002ba48263000026bd60201b63000026631760201c565b90508554600885021b8119845116828216178452508185116300002bcb5750506300000a67565b6300002bda6001876300002e8d565b9550509283900392015b602083106300002c1457835481526300002c016001856300002e8d565b9350601f19909201916020016300002be4565b82156300000a675760006300002c378463000026bd60201b63000026631760201c565b8251865482169119161782525050505050565b805160208083015191908110156300002c6d576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60005b838110156300002cbe5781810151838201526020016300002ca2565b838111156300000a675750506000910152565b600081518084526300002ced8160208601602086016300002c9f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156300002d5457601f198684030189526300002d408383516300002cd1565b988401989250908301906001016300002d1e565b5090979650505050505050565b602081526000630000056660208301846300002d01565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600063000004d760408301846300002cd1565b600081518084526020808501945080840160005b838110156300002ddf578151875295820195908201906001016300002dbf565b509495945050505050565b8481526080602082015260006300002e0760808301866300002dab565b60ff8516604084015282810360608401526300000c7081856300002cd1565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036300002e58576300002e586300002e26565b60010192915050565b600061ffff8083168185168083038211156300002e84576300002e846300002e26565b01949350505050565b600082198211156300002ea6576300002ea66300002e26565b500190565b600060ff821660ff8416808210156300002ecb576300002ecb6300002e26565b90039392505050565b6000600182016300002eec576300002eec6300002e26565b5060010190565b8381526060602082015260006300002f1060608301856300002dab565b82810360408401526300002f2681856300002cd1565b9695505050505050565b8381526060602082015260006300002f4d60608301856300002cd1565b82810360408401526300002f2681856300002d01565b838152600083516300002f7f8160208501602088016300002c9f565b808301905083516300002f9b8160208401602088016300002c9f565b0160200195945050505050565b6000828210156300002fc0576300002fc06300002e26565b500390565b83815282602082015260606040820152600063000026ed60608301846300002dab565b600081600019048311821515161563000030085763000030086300002e26565b500290565b600063ffffffff8083168185168083038211156300002e84576300002e846300002e26565b600060ff821660ff84168060ff0382111563000030555763000030556300002e26565b019392505050565b634e487b7160e01b600052601260045260246000fd5b838152826020820152608060408201526000630000309660808301846300002dab565b828103606084015260068152650d8cadccee8d60d31b602082015260408101915050949350505050565b84815283602082015260806040820152600063000030e360808301856300002dab565b905060ff8316606083015295945050505050565b838152606060208201526000630000311460608301856300002dab565b905060ff83166040830152949350505050565b600060208284031215630000313b57600080fd5b81516001600160401b0380821115630000315457600080fd5b818401915084601f830112630000316a57600080fd5b81518181111563000031825763000031826300002c73565b604051601f8201601f19908116603f0116810190838211818310171563000031b05763000031b06300002c73565b8160405282815287602084870101111563000031cb57600080fd5b6300000c708360208301602088016300002c9f565b60608152600063000031f760608301866300002cd1565b60208301949094525060400152919050565b600082630000322857634e487b7160e01b600052601260045260246000fd5b500690565b614fdc80630000323e6000396000f3fe60806040526004361061012d5760003560e01c80639146e7c8116100a5578063cc49db7e11610074578063d4285dc211610059578063d4285dc214610444578063d491953a14610464578063e3f8cc6b1461048457610134565b8063cc49db7e14610404578063d03edb8c1461042457610134565b80639146e7c81461038a578063a2ea7c6e146103aa578063a5c2f007146103d8578063af068c9e146103e457610134565b8063505a181d116100fc578063776d4047116100e1578063776d404714610337578063832f05f4146103575780638ed41f2f1461036a57610134565b8063505a181d146102f75780636e627cb81461031757610134565b80630c1a60001461025f578063114a72661461028157806311c73ffb146102a1578063419b58fd146102c157610134565b3661013457005b60008060006101666000357fffffffff00000000000000000000000000000000000000000000000000000000166104a4565b919450925090506fffffffffffffffffffffffffffffffff19831615801561019f57506fffffffffffffffffffffffffffffffff198216155b15610201576040517f3c2432e50000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000006000351660048201526024015b60405180910390fd5b60006102456000368080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920182905250925086915061058a9050565b90506000610255858584346105bd565b9050805160208201f35b34801561026b57600080fd5b5061027f61027a3660046142d0565b610675565b005b34801561028d57600080fd5b5061027f61029c3660046142d0565b610695565b3480156102ad57600080fd5b5061027f6102bc36600461437c565b6106ad565b3480156102cd57600080fd5b506102e16102dc3660046143f2565b610736565b6040516102ee919061449d565b60405180910390f35b34801561030357600080fd5b5061027f6103123660046144b0565b610780565b34801561032357600080fd5b5061027f6103323660046144fc565b61079a565b34801561034357600080fd5b5061027f6103523660046145a5565b610826565b6102e16103653660046146e1565b61083f565b34801561037657600080fd5b5061027f610385366004614743565b61084d565b34801561039657600080fd5b5061027f6103a53660046144fc565b61086b565b3480156103b657600080fd5b506103ca6103c53660046147bd565b6108ed565b6040519081526020016102ee565b34801561027f57600080fd5b3480156103f057600080fd5b5061027f6103ff3660046147d6565b610900565b34801561041057600080fd5b506102e161041f3660046144b0565b610a0a565b34801561043057600080fd5b506102e161043f366004614832565b610a49565b34801561045057600080fd5b506103ca61045f3660046147bd565b610a8a565b34801561047057600080fd5b5061027f61047f366004614890565b610a95565b34801561049057600080fd5b5061027f61049f366004614942565b610b24565b6040805160018082528183019092526000918291829182919060208083019080368337019050509050847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681600081518110610500576105006149a7565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f727300000000000000000000000000000000000000603082015261056c910160405160208183030381529060405261055e906149bd565b836105676129df565b612ae2565b60208101516030820151604090920151909891975095509350505050565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060608084901c6fffffffffffffffffffffffffffffffff198616176000806105e583612b3c565b90925090506001600160a01b0382166106345761060183612bf3565b6040517fef28802c0000000000000000000000000000000000000000000000000000000081526004016101f8919061449d565b8061064657610644888833612ce2565b505b6106673383886fffffffffffffffffffffffffffffffff198c161589612d49565b93505050505b949350505050565b61068d866106838860801b90565b878787878761079a565b505050505050565b61068d866106a38860801b90565b878787878761086b565b60006106ba878733612ce2565b905061072d8186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611ecd92505050565b50505050505050565b606061077785858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612e50915050565b95945050505050565b6107958361078e8560801b90565b8484610b24565b505050565b60006107a7888833612ce2565b905061081c8187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250612fb592505050565b5050505050505050565b61072d876108348960801b90565b888888888888610a95565b606061066d848484346105bd565b6108648561085b8760801b90565b868686866106ad565b5050505050565b6000610878888833612ce2565b905061081c8187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a9350915088908890819084018382808284376000920191909152506119a392505050565b60006108f8826131d7565b92915050565b565b61090c6000803361322c565b5061099333836313861fb560e01b8460405160240161092b919061449d565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260016000612d49565b50610a06826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156109d5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109f991906149e4565b8251602084012084613287565b5050565b606061066d8484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061334b92505050565b606061077785858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612670915050565b60006108f882613365565b6000610aa2898933612ce2565b9050610b198188888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528b93508a925090899089908190840183828082843760009201919091525061337092505050565b505050505050505050565b6000610b31858533612ce2565b90506108648184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061360f92505050565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152610bcb9101604051602081830303815290604052610bb1906149bd565b610bbc605f80610e89565b610bc6601f610f3e565b611936565b610bd3610faf565b610bdb610fff565b610be361105f565b610beb6110b8565b60408051600280825260608201909252600091816020015b6060815260200190600190039081610c035790505090506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600081518110610c6357610c636149a7565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110610cb757610cb76149a7565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b60308201528151808203909301835281019052610d4890610d04906149bd565b60405180604001604052806006815260200165736368656d6160d01b81525083604051602001610d349190614a56565b60405160208183030381529060405261110e565b50565b60408051600060208201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201526108fe9101604051602081830303815290604052610d99906149bd565b610da1613798565b610da96137d2565b6111c5565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110610df757610df76149a7565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905261079590610e51906149bd565b6040516bffffffffffffffffffffffff19606086901b1660208201528390600090603401604051602081830303815290604052611252565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610ec257610ec26149a7565b602002602001019060c5811115610edb57610edb614a69565b908160c5811115610eee57610eee614a69565b815250508281600181518110610f0657610f066149a7565b602002602001019060c5811115610f1f57610f1f614a69565b908160c5811115610f3257610f32614a69565b90525061066d816116e1565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110610f7757610f776149a7565b602002602001019060c5811115610f9057610f90614a69565b908160c5811115610fa357610fa3614a69565b9052506105b6816116e1565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201526108fe9101604051602081830303815290604052610fef906149bd565b610ff761380c565b610da9613846565b60408051676d756473746f726560c01b60208201527f53746f72654d657461646174610000000000000000000000000000000000000060308201526108fe9101604051602081830303815290604052611057906149bd565b610ff7613880565b60008061106a6138ff565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152929450909250610a0691015b6040516020818303038152906040526110b1906149bd565b8383611631565b6000806110c36139af565b60408051676d756473746f726560c01b60208201527f53746f72654d65746164617461000000000000000000000000000000000000006030820152929450909250610a069101611099565b600061111a8383613aca565b60408051600180825281830190925291925060009190602080830190803683370190505090508481600081518110611154576111546149a7565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f53746f72654d6574616461746100000000000000000000000000000000000000603083015261086491015b6040516020818303038152906040526111be906149bd565b8284611689565b6111cd613b80565b156111dd57610795838383611936565b6040517fd5933686000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260448101829052339063d5933686906064015b600060405180830381600087803b15801561123e57600080fd5b505af115801561072d573d6000803e3d6000fd5b61125a613b80565b156112705761126b848484846119a3565b6112e0565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a7266906112b2908790879087908790600401614aba565b600060405180830381600087803b1580156112cc57600080fd5b505af115801561081c573d6000803e3d6000fd5b50505050565b801580156112f2575081155b1561131357604051635318beb960e01b8152600060048201526024016101f8565b600061131e83611c95565b60ff169050600e81111561134857604051635318beb960e01b8152600481018290526024016101f8565b600061135384611ca6565b60ff169050601c6113648383614b04565b1115611390576113748282614b04565b604051635318beb960e01b81526004016101f891815260200190565b60008060005b6113a08585614b04565b81101561146d5760006113cc6113b68984611cb2565b60c58111156113c7576113c7614a69565b611b74565b111561141d5783811061140b576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8261141581614b1c565b935050611465565b83811015611457576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161146181614b1c565b9250505b600101611396565b5082821461149157604051635318beb960e01b8152600481018390526024016101f8565b83811461068d57604051635318beb960e01b8152600481018290526024016101f8565b6060816040516020016114c991815260200190565b6040516020818303038152906040529050919050565b604080516001808252818301909252600091602080830190803683370190505090508381600081518110611515576115156149a7565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b603083015260009161157191015b60405160208183030381529060405261156b906149bd565b836122b3565b848155905061157f565b9055565b61159261158d826020614b04565b849055565b60408051676d756473746f726560c01b602082015265736368656d6160d01b60308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee3291016040516020818303038152906040526115f1906149bd565b83868660408051602081019390935282015260600160408051601f1981840301815290829052611622939291614b36565b60405180910390a15050505050565b611639613b80565b1561164957610795838383611d66565b6040517ffe86a89f000000000000000000000000000000000000000000000000000000008152339063fe86a89f9061122490869086908690600401614b6b565b611691613b80565b156116a157610795838383611ecd565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f9061122490869086908690600401614b36565b6000601c8251111561170b578151604051635318beb960e01b81526004016101f891815260200190565b60008060008060005b865181101561183257600061174d888381518110611734576117346149a7565b602002602001015160c58111156113c7576113c7614a69565b905061ffff8116156117a3578215611791576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8361179b81614b96565b9450506117a8565b600192505b6117b28186614bb5565b9450611827866117c3846004614b04565b8a85815181106117d5576117d56149a7565b602002602001015160c58111156117ee576117ee614a69565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b955050600101611714565b5060008287516118429190614bdb565b9050600e8160ff16111561186e57604051635318beb960e01b815260ff821660048201526024016101f8565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b6119418260006112e6565b61194c8160016112e6565b61195583613bf1565b156119985782611964846114b4565b6040517f147bbb8c0000000000000000000000000000000000000000000000000000000081526004016101f8929190614bfe565b6107958383836114df565b60006119ae856131d7565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c46858585856040516119e59493929190614aba565b60405180910390a160006119f886612122565b905060005b8151811015611a9c576000828281518110611a1a57611a1a6149a7565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401611a569493929190614aba565b600060405180830381600087803b158015611a7057600080fd5b505af1158015611a84573d6000803e3d6000fd5b50505050508080611a9490614b1c565b9150506119fd565b50611aa682611ca6565b60ff168460ff161015611ac557611ac086868487876121d0565b611ad2565b611ad28686848787612276565b60005b815181101561072d576000828281518110611af257611af26149a7565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b8152600401611b2e9493929190614aba565b600060405180830381600087803b158015611b4857600080fd5b505af1158015611b5c573d6000803e3d6000fd5b50505050508080611b6c90614b1c565b915050611ad5565b6000808260c5811115611b8957611b89614a69565b60ff1690506020811015611ba2576105b6816001614b04565b6040811015611bc2576020611bb8826001614b04565b6105b69190614c17565b6060811015611bd8576040611bb8826001614b04565b60608360c5811115611bec57611bec614a69565b03611bfa5750600192915050565b60618360c5811115611c0e57611c0e614a69565b03611c1c5750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b1590565b6000601882901b5b60f81c92915050565b6000601082901b611c9d565b6000611cca83611cc3846004614b04565b6008021b90565b60f81c60c58111156105b6576105b6614a69565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611d1757611d176149a7565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b6030830152600091611d599101611553565b905061066d815490565b90565b6000611d71846131d7565b9050815160001480611d8e5750611d878161230d565b60ff168251145b611dda57611d9b8161230d565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff909216600483015260248201526044016101f8565b6112e0848484604051602001610d349190614a56565b6000806000805b8451811015611ea257611e6d83611e0f836002614c2e565b611e1a906004614b04565b878481518110611e2c57611e2c6149a7565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110611e8157611e816149a7565b602002602001015161ffff1682611e989190614c4d565b9150600101611df7565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b1761066d565b6000611ed8846131d7565b90506000611ee68260f01c90565b905080600080611ef585611c95565b60ff161115611f2357506020848301015160e081901c611f16906020614b04565b611f209083614b04565b91505b84518214611f6a5784516040517f521b3d330000000000000000000000000000000000000000000000000000000081526101f8918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32878787604051611f9d93929190614b36565b60405180910390a16000611fb088612122565b905060005b8151811015612052576000828281518110611fd257611fd26149a7565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b815260040161200c93929190614b36565b600060405180830381600087803b15801561202657600080fd5b505af115801561203a573d6000803e3d6000fd5b5050505050808061204a90614b1c565b915050611fb5565b50600061205f89896122b3565b905060208701612072826000838961237b565b61207d866020614b04565b6120879082614b04565b905061209287611c95565b60ff166000036120a85750505050505050505050565b60006120b48b8b612439565b858155905060008060005b6120c88b611c95565b60ff168160ff161015612112576120e08e8e83612470565b92506120ef8860ff83166124c9565b91506120fe836000878561237b565b6121088286614b04565b94506001016120bf565b5050505050505050505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061215c5761215c6149a7565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925264486f6f6b7360d81b60308301526000916121b991015b6040516020818303038152906040526121b1906149bd565b8360006124fb565b905061066d6121cb82600084516125a1565b612631565b60006121df8460ff8516611cb2565b905081516121f88260c58111156113c7576113c7614a69565b1461224f576122128160c58111156113c7576113c7614a69565b82516040517f521b3d33000000000000000000000000000000000000000000000000000000008152600481019290925260248201526044016101f8565b600061225b87876122b3565b905060006122698686613c06565b905061081c828286612642565b600061228184611ca6565b61228b9084614bdb565b905061229a8686838551613c41565b60006122a7878784612470565b905061072d8184612657565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016122ea93929190614c6c565b60408051601f1981840301815291905280516020909101209392505050565b5490565b600061231882611c95565b61232183611ca6565b6108f89190614c8b565b6008820281811c7fffffffff0000000000000000000000000000000000000000000000000000000090911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60200190565b60208304840193506020838161239357612393614cb0565b06925082156123ec5760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116123d75750506112e0565b6123e2600187614b04565b9550509182019190035b602081106124155781518455612403600185614b04565b935060209190910190601f19016123ec565b80156112e0576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016122ea93929190614cc6565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016124a99493929190614d26565b60408051601f198184030181529190528051602090910120949350505050565b6000806124d7836002614c2e565b6124e2906004614b04565b90506124f084826008021b90565b60f01c949350505050565b6060612505613b80565b1561251c57612515848484612670565b90506105b6565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c9061255c90879087908790600401614d59565b600060405180830381865afa158015612579573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125159190810190614d85565b60008183111580156125b4575083518211155b6125f0578383836040517f23230fa30000000000000000000000000000000000000000000000000000000081526004016101f893929190614df3565b602084016125fe8482614b04565b9050600061260c8585614c17565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b606060006105b6836014600061268b565b60006020820190506112e0848483855161237b565b610a0682600083612642565b60001960089091021c1990565b6060600061267d856131d7565b905061077785858584613c73565b606060006126998560801c90565b90506fffffffffffffffffffffffffffffffff85166000846126d1576126c0866008614c2e565b6126cc90610100614c17565b6126d4565b60005b905060008683816126e7576126e7614cb0565b0490506126f48784614e18565b15612781576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a6500000060648201526084016101f8565b602080820201604051955080860160405250808552600060208601855b838310156127c0578051851c825260019290920191602090910190890161279e565b505050505050509392505050565b600083816127dc8260e01c90565b905060006127ed878760ff166124c9565b9050808510612811576128008186614c17565b61280a9083614b04565b9150612828565b61281b8582614c17565b6128259083614c17565b91505b6000612835876002614c2e565b612840906004614b04565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c1798975050505050505050565b60801c90565b6fffffffffffffffffffffffffffffffff1690565b606060006128d58360ff8616611cb2565b905060006128ee8260c58111156113c7576113c7614a69565b905060006128fc88886122b3565b9050600061290a8688613c06565b9050612917828483612971565b9998505050505050505050565b6060600061293183611ca6565b61293b9085614bdb565b9050600061294a878784612470565b905060006129658360ff1661295f8a8a613caa565b906124c9565b905061066782826129d1565b60608267ffffffffffffffff81111561298c5761298c61461c565b6040519080825280601f01601f1916602001820160405280156129b6576020820181803683370190505b509050602081016129c985858584613cb7565b509392505050565b60606105b683836000612971565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f81600081518110612a1a57612a1a6149a7565b602002602001019060c5811115612a3357612a33614a69565b908160c5811115612a4657612a46614a69565b81525050604f81600181518110612a5f57612a5f6149a7565b602002602001019060c5811115612a7857612a78614a69565b908160c5811115612a8b57612a8b614a69565b81525050604381600281518110612aa457612aa46149a7565b602002602001019060c5811115612abd57612abd614a69565b908160c5811115612ad057612ad0614a69565b905250612adc816116e1565b91505090565b6060612aec613b80565b15612afc57612515848484612e50565b6040517f419b58fd000000000000000000000000000000000000000000000000000000008152339063419b58fd9061255c90879087908790600401614e2c565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110612b7657612b766149a7565b6020908102919091018101919091526040805160009281018390527f53797374656d73000000000000000000000000000000000000000000000000006030820152612bdd9101604051602081830303815290604052612bd4906149bd565b83610567613d6c565b9050612be881613deb565b935093505050915091565b606081608081901b6fffffffffffffffffffffffffffffffff19821615612c1a5781612c3c565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6fffffffffffffffffffffffffffffffff19821615612c5b5781612c7d565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516fffffffffffffffffffffffffffffffff1992831660208201527f2f0000000000000000000000000000000000000000000000000000000000000060308201529116603182015260410160405160208183030381529060405292505050919050565b608082901c6fffffffffffffffffffffffffffffffff19841617612d07848484613e11565b6105b657612d1481612bf3565b826040517fe64c03480000000000000000000000000000000000000000000000000000000081526004016101f8929190614e55565b606060008487604051602001612d60929190614e80565b604051602081830303815290604052905060008085612dda57876001600160a01b03168584604051612d929190614eb7565b60006040518083038185875af1925050503d8060008114612dcf576040519150601f19603f3d011682016040523d82523d6000602084013e612dd4565b606091505b50612e34565b876001600160a01b031683604051612df29190614eb7565b600060405180830381855af49150503d8060008114612e2d576040519150601f19603f3d011682016040523d82523d6000602084013e612e32565b606091505b505b915091508115612e48579250610777915050565b805160208201fd5b60606000612e5e8360f01c90565b905080600080612e6d86611c95565b60ff1690508015612eb857612e828888613caa565b91506000612e908360e01c90565b1115612eb857612ea08260e01c90565b612eab906020614b04565b612eb59084614b04565b92505b60008367ffffffffffffffff811115612ed357612ed361461c565b6040519080825280601f01601f191660200182016040528015612efd576020820181803683370190505b50905060208101612f108a8a8884613e6b565b612f1a8460e01c90565b600003612f2e575094506105b69350505050565b612f388682614b04565b8481529050612f48602082614b04565b905060005b838160ff161015612fa6576000612f658c8c84612470565b90506000612f768760ff85166124c9565b9050612f858282600087613cb7565b612f8f8185614b04565b935050508080612f9e90614b96565b915050612f4d565b50909998505050505050505050565b6000612fc0856131d7565b9050612fcb81611ca6565b60ff168360ff16101561300a576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600061301886868685612924565b8360405160200161302a929190614ed3565b60405160208183030381529060405290507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c46868686846040516130709493929190614aba565b60405180910390a1600061308387612122565b905060005b81518110156131275760008282815181106130a5576130a56149a7565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b81526004016130e19493929190614aba565b600060405180830381600087803b1580156130fb57600080fd5b505af115801561310f573d6000803e3d6000fd5b5050505050808061311f90614b1c565b915050613088565b506131358787858888613e8c565b60005b815181101561081c576000828281518110613155576131556149a7565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b81526004016131919493929190614aba565b600060405180830381600087803b1580156131ab57600080fd5b505af11580156131bf573d6000803e3d6000fd5b505050505080806131cf90614b1c565b915050613138565b60006131e282611cde565b90508061322757816131f3836114b4565b6040517fd623a70d0000000000000000000000000000000000000000000000000000000081526004016101f8929190614bfe565b919050565b608082901c6fffffffffffffffffffffffffffffffff198416176001600160a01b03821630148015906132795750816001600160a01b031661326d85613efc565b6001600160a01b031614155b156105b657612d1481612bf3565b600061329282613fa2565b6040805160028082526060820183529293506000929091602083019080368337019050509050846fffffffffffffffffffffffffffffffff1916816000815181106132df576132df6149a7565b60200260200101818152505083816001815181106132ff576132ff6149a7565b602090810291909101810191909152604080516000928101929092527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015261086491016111a6565b60606000613358846131d7565b905061066d848483612e50565b60006131e282613fc7565b600061337b866131d7565b905061338681611ca6565b60ff168460ff1610156133c5576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83111561340c576040517f7cd3b80700000000000000000000000000000000000000000000000000000000815261ffff6004820152602481018490526044016101f8565b6060600061341c88888886612924565b905061343261342d826000886125a1565b614052565b8461344e61342d8488518a6134479190614b04565b86516125a1565b60405160200161346093929190614ef9565b6040516020818303038152906040529150507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c46878787846040516134a79493929190614aba565b60405180910390a160006134ba88612122565b905060005b815181101561355e5760008282815181106134dc576134dc6149a7565b60200260200101519050806001600160a01b031663469b7ee28b8b8b886040518563ffffffff1660e01b81526004016135189493929190614aba565b600060405180830381600087803b15801561353257600080fd5b505af1158015613546573d6000803e3d6000fd5b5050505050808061355690614b1c565b9150506134bf565b5061356d8888858989896140d2565b60005b8151811015610b1957600082828151811061358d5761358d6149a7565b60200260200101519050806001600160a01b0316636b3d7d5f8b8b8b886040518563ffffffff1660e01b81526004016135c99493929190614aba565b600060405180830381600087803b1580156135e357600080fd5b505af11580156135f7573d6000803e3d6000fd5b5050505050808061360790614b1c565b915050613570565b600061361a836131d7565b90507f2cc8610b80ef19409ae51ecbdd9c137960fb22ae9ef2d817d36ec1b685d68ecd838360405161364d929190614f3c565b60405180910390a1600061366084612122565b905060005b8151811015613700576000828281518110613682576136826149a7565b60200260200101519050806001600160a01b031663b51fef6c87876040518363ffffffff1660e01b81526004016136ba929190614f3c565b600060405180830381600087803b1580156136d457600080fd5b505af11580156136e8573d6000803e3d6000fd5b505050505080806136f890614b1c565b915050613665565b50600061370d85856122b3565b905061376781600061371f8660f01c90565b67ffffffffffffffff8111156137375761373761461c565b6040519080825280601f01601f191660200182016040528015613761576020820181803683370190505b50612642565b61377083611c95565b60ff16600003613781575050505050565b600061378d8686612439565b60008155905061068d565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110612aa457612aa46149a7565b60408051600180825281830190925260009182919060208083019080368337019050509050604f81600081518110612aa457612aa46149a7565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110612aa457612aa46149a7565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110612aa457612aa46149a7565b6040805160028082526060820183526000928392919060208301908036833701905050905060c5816000815181106138ba576138ba6149a7565b602002602001019060c58111156138d3576138d3614a69565b908160c58111156138e6576138e6614a69565b8152505060c481600181518110612aa457612aa46149a7565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908161391b5790505090506040518060400160405280600581526020017f76616c75650000000000000000000000000000000000000000000000000000008152508160008151811061397b5761397b6149a7565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b60408051600280825260608281019093528291600091816020015b60608152602001906001900390816139ca5790505090506040518060400160405280600981526020017f7461626c654e616d65000000000000000000000000000000000000000000000081525081600081518110613a2a57613a2a6149a7565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600181518110613a7e57613a7e6149a7565b6020026020010181905250806040518060400160405280600d81526020017f53746f72654d65746164617461000000000000000000000000000000000000008152509092509250509091565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110613b0457613b046149a7565b602002602001019061ffff16908161ffff1681525050825181600181518110613b2f57613b2f6149a7565b602002602001019061ffff16908161ffff16815250506000613b5082611df0565b9050808585604051602001613b6793929190614f55565b6040516020818303038152906040529250505092915050565b6000303b808203613b9357600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015613bcc57600080fd5b505afa925050508015613bdd575060015b613be957600091505090565b600191505090565b6000613bff611c9183611cde565b1592915050565b600080805b8360ff168110156129c957613c236113b68683611cb2565b613c2d9083614b04565b915080613c3981614b1c565b915050613c0b565b6000613c4d8585612439565b90506000613c59825490565b9050613c698160ff8616856127ce565b808355905061068d565b6060613c7e82611ca6565b60ff168360ff161015613c9e57613c97858585856128c4565b905061066d565b613c9785858585612924565b600080611d598484612439565b602082048401935060208281613ccf57613ccf614cb0565b0691508115613d205760208290036000600019600883021c1990508554600885021b811984511682821617845250818511613d0b5750506112e0565b613d16600187614b04565b9550509283900392015b60208310613d485783548152613d37600185614b04565b9350601f1990920191602001613d20565b82156112e0576000600019600885021c198251865482169119161782525050505050565b60408051600280825260608201835260009283929190602083019080368337019050509050606181600081518110613da657613da66149a7565b602002602001019060c5811115613dbf57613dbf614a69565b908160c5811115613dd257613dd2614a69565b81525050606081600181518110612aa457612aa46149a7565b6020810151603482015160609190911c90600090613e0a905b60f81c90565b9050915091565b6000306001600160a01b0383161480613e435750613e436fffffffffffffffffffffffffffffffff1985165b836140f6565b8061066d575061066d6fffffffffffffffffffffffffffffffff198516608085901c17613e3d565b81156112e0576000613e7d85856122b3565b90506108648184600085613cb7565b6000613e9784611ca6565b613ea19084614bdb565b90506000613eaf8787612439565b90506000613ebb825490565b90506000613ecc8260ff86166124c9565b9050613eea8460ff16865183613ee29190614b04565b8491906127ce565b8084559150610b1989898684896141bd565b60408051600180825281830190925260009182919060208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110613f4857613f486149a7565b6020908102919091018101919091526040805160009281018390527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152613f939101612199565b6020015160601c949350505050565b604051606082811b6bffffffffffffffffffffffff19166020830152906034016114c9565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110614000576140006149a7565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b60308301526000916140429101611553565b905061066d612309826020614b04565b606060006140608360801c90565b90506fffffffffffffffffffffffffffffffff83168067ffffffffffffffff81111561408e5761408e61461c565b6040519080825280601f01601f1916602001820160405280156140b8576020820181803683370190505b509250602083016140ca8382846141fd565b505050919050565b60006140dd85611ca6565b6140e79085614bdb565b905061072d87878386866141bd565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061412f5761412f6149a7565b6020026020010181815250508260601b6bffffffffffffffffffffffff191681600181518110614161576141616149a7565b6020908102919091018101919091526040805160009281018390527f5265736f7572636541636365737300000000000000000000000000000000000060308201526141ac9101612199565b602081015190915061077790613e04565b60006141ca868686612470565b90506141d7602084614f92565b6141e19082614b04565b905060006141f0602085614e18565b905061072d828285612642565b6020811115614214578082828560045afa50505050565b6000600019600883021c1983518551821691191617835250505050565b60008083601f84011261424357600080fd5b50813567ffffffffffffffff81111561425b57600080fd5b6020830191508360208260051b850101111561427657600080fd5b9250929050565b803560ff8116811461322757600080fd5b60008083601f8401126142a057600080fd5b50813567ffffffffffffffff8111156142b857600080fd5b60208301915083602082850101111561427657600080fd5b600080600080600080608087890312156142e957600080fd5b86359550602087013567ffffffffffffffff8082111561430857600080fd5b6143148a838b01614231565b909750955085915061432860408a0161427d565b9450606089013591508082111561433e57600080fd5b5061434b89828a0161428e565b979a9699509497509295939492505050565b6fffffffffffffffffffffffffffffffff1981168114610d4857600080fd5b6000806000806000806080878903121561439557600080fd5b86356143a08161435d565b955060208701356143b08161435d565b9450604087013567ffffffffffffffff808211156143cd57600080fd5b6143d98a838b01614231565b9096509450606089013591508082111561433e57600080fd5b6000806000806060858703121561440857600080fd5b84359350602085013567ffffffffffffffff81111561442657600080fd5b61443287828801614231565b9598909750949560400135949350505050565b60005b83811015614460578181015183820152602001614448565b838111156112e05750506000910152565b60008151808452614489816020860160208601614445565b601f01601f19169290920160200192915050565b6020815260006105b66020830184614471565b6000806000604084860312156144c557600080fd5b83359250602084013567ffffffffffffffff8111156144e357600080fd5b6144ef86828701614231565b9497909650939450505050565b600080600080600080600060a0888a03121561451757600080fd5b87356145228161435d565b965060208801356145328161435d565b9550604088013567ffffffffffffffff8082111561454f57600080fd5b61455b8b838c01614231565b909750955085915061456f60608b0161427d565b945060808a013591508082111561458557600080fd5b506145928a828b0161428e565b989b979a50959850939692959293505050565b600080600080600080600060a0888a0312156145c057600080fd5b87359650602088013567ffffffffffffffff808211156145df57600080fd5b6145eb8b838c01614231565b90985096508691506145ff60408b0161427d565b955060608a0135945060808a013591508082111561458557600080fd5b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff8111828210171561465b5761465b61461c565b604052919050565b600067ffffffffffffffff82111561467d5761467d61461c565b50601f01601f191660200190565b600082601f83011261469c57600080fd5b81356146af6146aa82614663565b614632565b8181528460208386010111156146c457600080fd5b816020850160208301376000918101602001919091529392505050565b6000806000606084860312156146f657600080fd5b83356147018161435d565b925060208401356147118161435d565b9150604084013567ffffffffffffffff81111561472d57600080fd5b6147398682870161468b565b9150509250925092565b60008060008060006060868803121561475b57600080fd5b85359450602086013567ffffffffffffffff8082111561477a57600080fd5b61478689838a01614231565b9096509450604088013591508082111561479f57600080fd5b506147ac8882890161428e565b969995985093965092949392505050565b6000602082840312156147cf57600080fd5b5035919050565b600080604083850312156147e957600080fd5b82356001600160a01b038116811461480057600080fd5b9150602083013567ffffffffffffffff81111561481c57600080fd5b6148288582860161468b565b9150509250929050565b6000806000806060858703121561484857600080fd5b84359350602085013567ffffffffffffffff81111561486657600080fd5b61487287828801614231565b909450925061488590506040860161427d565b905092959194509250565b60008060008060008060008060c0898b0312156148ac57600080fd5b88356148b78161435d565b975060208901356148c78161435d565b9650604089013567ffffffffffffffff808211156148e457600080fd5b6148f08c838d01614231565b909850965086915061490460608c0161427d565b955060808b0135945060a08b013591508082111561492157600080fd5b5061492e8b828c0161428e565b999c989b5096995094979396929594505050565b6000806000806060858703121561495857600080fd5b84356149638161435d565b935060208501356149738161435d565b9250604085013567ffffffffffffffff81111561498f57600080fd5b61499b87828801614231565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b805160208083015191908110156149de576000198160200360031b1b821691505b50919050565b6000602082840312156149f657600080fd5b81516105b68161435d565b600081518084526020808501808196508360051b8101915082860160005b85811015614a49578284038952614a37848351614471565b98850198935090840190600101614a1f565b5091979650505050505050565b6020815260006105b66020830184614a01565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015614aaf57815187529582019590820190600101614a93565b509495945050505050565b848152608060208201526000614ad36080830186614a7f565b60ff85166040840152828103606084015261192b8185614471565b634e487b7160e01b600052601160045260246000fd5b60008219821115614b1757614b17614aee565b500190565b60006000198203614b2f57614b2f614aee565b5060010190565b838152606060208201526000614b4f6060830185614a7f565b8281036040840152614b618185614471565b9695505050505050565b838152606060208201526000614b846060830185614471565b8281036040840152614b618185614a01565b600060ff821660ff8103614bac57614bac614aee565b60010192915050565b600061ffff808316818516808303821115614bd257614bd2614aee565b01949350505050565b600060ff821660ff841680821015614bf557614bf5614aee565b90039392505050565b82815260406020820152600061066d6040830184614471565b600082821015614c2957614c29614aee565b500390565b6000816000190483118215151615614c4857614c48614aee565b500290565b600063ffffffff808316818516808303821115614bd257614bd2614aee565b8381528260208201526060604082015260006107776060830184614a7f565b600060ff821660ff84168060ff03821115614ca857614ca8614aee565b019392505050565b634e487b7160e01b600052601260045260246000fd5b838152826020820152608060408201526000614ce56080830184614a7f565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b848152836020820152608060408201526000614d456080830185614a7f565b905060ff8316606083015295945050505050565b838152606060208201526000614d726060830185614a7f565b905060ff83166040830152949350505050565b600060208284031215614d9757600080fd5b815167ffffffffffffffff811115614dae57600080fd5b8201601f81018413614dbf57600080fd5b8051614dcd6146aa82614663565b818152856020838501011115614de257600080fd5b610777826020830160208601614445565b606081526000614e066060830186614471565b60208301949094525060400152919050565b600082614e2757614e27614cb0565b500690565b838152606060208201526000614e456060830185614a7f565b9050826040830152949350505050565b604081526000614e686040830185614471565b90506001600160a01b03831660208301529392505050565b60008351614e92818460208801614445565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b60008251614ec9818460208701614445565b9190910192915050565b60008351614ee5818460208801614445565b835190830190614bd2818360208801614445565b60008451614f0b818460208901614445565b845190830190614f1f818360208901614445565b8451910190614f32818360208801614445565b0195945050505050565b82815260406020820152600061066d6040830184614a7f565b83815260008351614f6d816020850160208801614445565b80830190508351614f85816020840160208801614445565b0160200195945050505050565b600082614fa157614fa1614cb0565b50049056fea26469706673582212204da2e771a47aef065c9e8aa25e09811dc67e782cc70f77eabe49a0ba858cb93664736f6c634300080d003386425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32";
|
|
836
|
+
"0x6080604052348015630000001257600080fd5b50630000002b630000006860201b6300000c4d1760201c565b630000004363000002ab60201b6300000e281760201c565b6300000061600060801b33630000031d60201b6300000e8b1760201c565b630000322d565b60408051676d756473746f726560c01b602082015265736368656d6160d01b603082015263000000eb910160405160208183030381529060405263000000af906300002c4a565b63000000ca605f8063000003fa60201b6300000f661760201c565b63000000e4601f63000004df60201b630000101b1760201c565b630000056d565b6300000103630000061a60201b630000108c1760201c565b630000011b630000067860201b63000010dc1760201c565b630000013363000006d260201b630000113c1760201c565b630000014b630000074760201b63000011951760201c565b60408051600280825260608201909252600091816020015b606081526020019060019003908163000001635790505090506040518060400160405280600b81526020016a76616c7565536368656d6160a81b8152508160008151811063000001b95763000001b96300002c89565b6020026020010181905250604051806040016040528060098152602001686b6579536368656d6160b81b8152508160018151811063000001ff5763000001ff6300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b6030820152815180820390930183528101905263000002a8906300000252906300002c4a565b60405180604001604052806006815260200165736368656d6160d01b81525083604051602001630000028691906300002d61565b604051602081830303815290604052630000079560201b63000011eb1760201c565b50565b60408051600060208201526d2730b6b2b9b830b1b2a7bbb732b960911b6030820152630000031b910160405160208183030381529060405263000002f0906300002c4a565b63000002fc630000085b565b630000030863000008f6565b630000093660201b63000012a21760201c565b565b60408051600180825281830190925260009160208083019080368337019050509050826001600160801b0319168160008151811063000003635763000003636300002c89565b602090810291909101810191909152604080516000818401526d2730b6b2b9b830b1b2a7bbb732b960911b6030820152815180820390930183528101905263000003f59063000003b4906300002c4a565b6040516001600160601b0319606086901b166020820152839060009060340160405160208183030381529060405263000009cd60201b630000132f1760201c565b505050565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811063000004395763000004396300002c89565b602002602001019060c581111563000004585763000004586300002d78565b908160c581111563000004715763000004716300002d78565b815250508281600181518110630000048f57630000048f6300002c89565b602002602001019060c581111563000004ae5763000004ae6300002d78565b908160c581111563000004c75763000004c76300002d78565b90525063000004d7816300000a6d565b949350505050565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110630000051e57630000051e6300002c89565b602002602001019060c5811115630000053d57630000053d6300002d78565b908160c581111563000005565763000005566300002d78565b9052506300000566816300000a6d565b9392505050565b630000058b6000836300000c7b60201b63000013c31790919060201c565b63000005a96001826300000c7b60201b63000013c31790919060201c565b63000005b6836300000ea1565b1563000005ff578263000005d7846300000edb60201b63000015911760201c565b60405163051eeee360e21b815260040163000005f69291906300002d8e565b60405180910390fd5b63000003f58383836300000f0860201b63000015bc1760201c565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152630000031b91016040516020818303038152906040526300000660906300002c4a565b630000066c63000010ca565b6300000308630000110a565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b6030820152630000031b910160405160208183030381529060405263000006c6906300002c4a565b630000066c630000114a565b60008063000006e163000011e1565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152929450909250630000074391015b604051602081830303815290604052630000072e906300002c4a565b8383630000128160201b630000170e1760201c565b5050565b600080630000075663000012da565b60408051676d756473746f726560c01b60208201526c53746f72654d6574616461746160981b6030820152929450909250630000074391016300000712565b600063000007a5838363000013df565b6040805160018082528183019092529192506000919060208083019080368337019050509050848160008151811063000007e55763000007e56300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b818401526c53746f72654d6574616461746160981b60308201528151808203909301835281019052630000085490630000083f906300002c4a565b828463000014cd60201b63000017661760201c565b5050505050565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110630000089b57630000089b6300002c89565b602002602001019060c581111563000008ba5763000008ba6300002d78565b908160c581111563000008d35763000008d36300002d78565b8152505063000008f0816300000a6d60201b63000017be1760201c565b91505090565b60408051600180825281830190925260009182919060208083019080368337019050509050604f81600081518110630000089b57630000089b6300002c89565b63000009426300001526565b1563000009645763000003f5838383630000056d60201b6300001a131760201c565b604051636ac99b4360e11b8152600481018490526024810183905260448101829052339063d5933686906064015b600060405180830381600087803b15801563000009ae57600080fd5b505af115801563000009c4573d6000803e3d6000fd5b50505050505050565b63000009d96300001526565b156300000a035763000009fc84848484630000159f60201b6300001a801760201c565b6300000a67565b6040516308a5393360e11b8152339063114a7266906300000a309087908790879087906004016300002dea565b600060405180830381600087803b1580156300000a4c57600080fd5b505af11580156300000a62573d6000803e3d6000fd5b505050505b50505050565b6000601c825111156300000a9b578151604051635318beb960e01b815260040163000005f691815260200190565b60008060008060005b86518110156300000bcb5760006300000b008883815181106300000ace576300000ace6300002c89565b602002602001015160c58111156300000aed576300000aed6300002d78565b63000017e860201b6300001c511760201c565b905061ffff8116156300000b475782156300000b2f57604051633c795af960e21b815260040160405180910390fd5b836300000b3d816300002e3c565b9450506300000b4c565b600192505b6300000b5a81866300002e61565b94506300000bbe866300000b718460046300002e8d565b8a85815181106300000b89576300000b896300002c89565b602002602001015160c58111156300000ba8576300000ba86300002d78565b60f81b63000018c560201b6300001d021760201c565b9550506001016300000aa4565b5060008287516300000bdf91906300002eab565b9050600e8160ff1611156300000c0f57604051635318beb960e01b815260ff8216600482015260240163000005f6565b6300000c2e8560008660f01b63000018fb60201b6300001d381760201c565b94506300000c4f8560028560f81b63000018c560201b6300001d021760201c565b94506300000c708560038360f81b63000018c560201b6300001d021760201c565b979650505050505050565b801580156300000c9f57506300000c9f82630000191960201b6300001d6e1760201c565b156300000cc457604051635318beb960e01b81526000600482015260240163000005f6565b60006300000cdf83630000191d60201b6300001d721760201c565b60ff169050600e8111156300000d0d57604051635318beb960e01b81526004810182905260240163000005f6565b60006300000d2884630000194360201b6300001d831760201c565b60ff169050601c6300000d3d83836300002e8d565b11156300000d71576300000d5382826300002e8d565b604051635318beb960e01b815260040163000005f691815260200190565b60008060005b6300000d8585856300002e8d565b8110156300000e4a5760006300000dc96300000db2838a630000196060201b6300001d8f1790919060201c565b60c58111156300000aed576300000aed6300002d78565b11156300000e0b578381106300000df357604051633c795af960e21b815260040160405180910390fd5b826300000e01816300002ed4565b9350506300000e40565b838110156300000e2e57604051633c795af960e21b815260040160405180910390fd5b816300000e3c816300002ed4565b9250505b6001016300000d77565b508282146300000e7257604051635318beb960e01b81526004810183905260240163000005f6565b8381146300000e9957604051635318beb960e01b81526004810182905260240163000005f6565b505050505050565b60006300000ed46300000ec18363000019a460201b6300001dbb1760201c565b630000191960201b6300001d6e1760201c565b1592915050565b6060816040516020016300000ef291815260200190565b6040516020818303038152906040529050919050565b6040805160018082528183019092526000916020808301908036833701905050905083816000815181106300000f44576300000f446300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b603082015281518082039093018352810190526000906300000fa2906300000f9a906300002c4a565b836300001a68565b90506300000fd6816300000fc3866300001ab260201b6300001e401760201c565b6300001ab560201b63000016581760201c565b63000010036300000fea8260206300002e8d565b6300000fc3856300001ab260201b6300001e401760201c565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152600080516020630000867d83398151915291016040516020818303038152906040526300001056906300002c4a565b836300001070876300001ab260201b6300001e401760201c565b6300001089876300001ab260201b6300001e401760201c565b60408051602081019390935282015260600160408051601f198184030181529082905263000010bb9392916300002ef3565b60405180910390a15050505050565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110630000089b57630000089b6300002c89565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110630000089b57630000089b6300002c89565b6040805160028082526060820183526000928392919060208301908036833701905050905060c581600081518110630000118a57630000118a6300002c89565b602002602001019060c581111563000011a95763000011a96300002d78565b908160c581111563000011c25763000011c26300002d78565b8152505060c481600181518110630000089b57630000089b6300002c89565b6040805160018082528183019092526060918291600091816020015b606081526020019060019003908163000011fd5790505090506040518060400160405280600581526020016476616c756560d81b81525081600081518110630000124d57630000124d6300002c89565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b630000128d6300001526565b1563000012af5763000003f58383836300001ab960201b6300001e431760201c565b60405163fe86a89f60e01b8152339063fe86a89f906300000992908690869086906004016300002f30565b60408051600280825260608281019093528291600091816020015b606081526020019060019003908163000012f5579050509050604051806040016040528060098152602001687461626c654e616d6560b81b8152508160008151811063000013495763000013496300002c89565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d65730000000000000000000000008152508160018151811063000013a35763000013a36300002c89565b6020026020010181905250806040518060400160405280600d81526020016c53746f72654d6574616461746160981b8152509092509250509091565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110630000141f57630000141f6300002c89565b602002602001019061ffff16908161ffff168152505082518160018151811063000014505763000014506300002c89565b602002602001019061ffff16908161ffff168152505060006300001481826300001b5a60201b6300001ecd1760201c565b9050630000149c816300001ab260201b6300001e401760201c565b858560405160200163000014b4939291906300002f63565b6040516020818303038152906040529250505092915050565b63000014d96300001526565b1563000014fb5763000003f58383836300001c2760201b6300001faa1760201c565b604051638ed41f2f60e01b81523390638ed41f2f906300000992908690869086906004016300002ef3565b6000303b808203630000153b57600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015630000157657600080fd5b505afa9250505080156300001589575060015b630000159757600091505090565b600191505090565b600063000015ae856300001fa4565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c468585858560405163000015e994939291906300002dea565b60405180910390a16000630000160c86630000201f60201b63000021ff1760201c565b905060005b815181101563000016c657600082828151811063000016365763000016366300002c89565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401630000167694939291906300002dea565b600060405180830381600087803b158015630000169257600080fd5b505af115801563000016a8573d6000803e3d6000fd5b5050505050808063000016bc906300002ed4565b9150506300001611565b5063000016e082630000194360201b6300001d831760201c565b60ff168460ff161015630000171357630000170c8686848787630000210160201b63000022ad1760201c565b6300001730565b6300001730868684878763000021cd60201b63000023531760201c565b60005b815181101563000009c457600082828151811063000017585763000017586300002c89565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b8152600401630000179894939291906300002dea565b600060405180830381600087803b15801563000017b457600080fd5b505af115801563000017ca573d6000803e3d6000fd5b5050505050808063000017de906300002ed4565b9150506300001733565b6000808260c581111563000018035763000018036300002d78565b60ff169050602081101563000018225763000005668160016300002e8d565b6040811015630000184c576020630000183e8260016300002e8d565b630000056691906300002fa8565b60608110156300001868576040630000183e8260016300002e8d565b60608360c581111563000018825763000018826300002d78565b0363000018925750600192915050565b60618360c581111563000018ac5763000018ac6300002d78565b0363000018bc5750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c6001600160f01b031990911c198416179392505050565b1590565b6000630000193a826003630000223c60201b6300001da01760201c565b60f81c92915050565b6000630000193a826002630000223c60201b6300001da01760201c565b6000630000198a8363000019778460046300002e8d565b630000223c60201b6300001da01760201c565b60f81c60c581111563000005665763000005666300002d78565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811063000019e35763000019e36300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b603082015281518082039093018352810190526000906300001a4d906300001a39906300002c4a565b836300001a6860201b63000023901760201c565b905063000004d781630000224360201b63000023e61760201c565b6000600080516020630000865d83398151915283836040516020016300001a93939291906300002fc5565b60408051601f1981840301815291905280516020909101209392505050565b90565b9055565b60006300001ac8846300001fa4565b90508151600014806300001af757506300001af081630000224760201b63000023ea1760201c565b60ff168251145b6300001b3e576300001b1681630000224760201b63000023ea1760201c565b825160405163f2b2755960e01b815260ff9092166004830152602482015260440163000005f6565b6300000a67848484604051602001630000028691906300002d61565b6000806000805b84518110156300001c07576300001bc6836300001b818360026300002fe8565b6300001b909060046300002e8d565b8784815181106300001ba8576300001ba86300002c89565b602002602001015160f01b63000018fb60201b6300001d381760201c565b92508481815181106300001be0576300001be06300002c89565b602002602001015161ffff16826300001bfb9190630000300d565b91506001016300001b61565b5063000004d78260008360e01b630000227760201b63000024081760201c565b60006300001c36846300001fa4565b905060006300001c5382630000229560201b630000243e1760201c565b905060008190506000806300001c7685630000191d60201b6300001d721760201c565b60ff1611156300001cd6576300001c9b8584630000229b60201b63000024441760201c565b90506300001cb68163000022a360201b630000244c1760201c565b6300001cc59060206300002e8d565b6300001cd390836300002e8d565b91505b845182146300001d0857845160405163521b3d3360e01b815263000005f6918491600401918252602082015260400190565b600080516020630000867d8339815191528787876040516300001d2f939291906300002ef3565b60405180910390a160006300001d5288630000201f60201b63000021ff1760201c565b905060005b81518110156300001e0a5760008282815181106300001d7c576300001d7c6300002c89565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b81526004016300001dba939291906300002ef3565b600060405180830381600087803b1580156300001dd657600080fd5b505af11580156300001dec573d6000803e3d6000fd5b505050505080806300001e00906300002ed4565b9150506300001d57565b5060006300001e2789896300001a6860201b63000023901760201c565b905060006300001e448863000022a960201b63000024521760201c565b90506300001e63826000838963000022af60201b63000024581760201c565b6300001e728660206300002e8d565b6300001e8090826300002e8d565b90506300001e9b87630000191d60201b6300001d721760201c565b60ff166000036300001eb35750505050505050505050565b60006300001ecf8b8b63000023aa60201b63000025161760201c565b90506300001ef0816300000fc3876300001ab260201b6300001e401760201c565b60008060005b6300001f0f8b630000191d60201b6300001d721760201c565b60ff168160ff1610156300001f94576300001f398e8e8363000023d560201b630000254d1760201c565b92506300001f5b8160ff1689630000242260201b63000025a61790919060201c565b91506300001f7a836000878563000022af60201b63000024581760201c565b6300001f8882866300002e8d565b94506001016300001ef6565b5050505050505050505050505050565b60006300001fbf8263000019a460201b6300001dbb1760201c565b90506300001fda81630000191960201b6300001d6e1760201c565b15630000201a57816300001ffb836300000edb60201b63000015911760201c565b60405163d623a70d60e01b815260040163000005f69291906300002d8e565b919050565b60408051600180825281830190925260609160009190602080830190803683370190505090508281600081518110630000205f57630000205f6300002c89565b60209081029190910181019190915260408051676d756473746f726560c01b8184015264486f6f6b7360d81b6030820152815180820390930183528101905260009063000020ca9063000020b4906300002c4a565b836000630000246a60201b63000025d81760201c565b905063000004d763000020ee8260008451630000251960201b630000267e1760201c565b630000259760201b630000270e1760201c565b600063000021238360ff1685630000196060201b6300001d8f1790919060201c565b9050815163000021448260c58111156300000aed576300000aed6300002d78565b14630000218e5763000021688160c58111156300000aed576300000aed6300002d78565b825160405163521b3d3360e01b81526004810192909252602482015260440163000005f6565b6000630000219e87876300001a68565b9050600063000021b0868663000025b8565b90506300000a62828286630000261c60201b630000271f1760201c565b600063000021e884630000194360201b6300001d831760201c565b63000021f690846300002eab565b9050630000220f8686838551630000263b60201b60201c565b6000630000222087878463000023d5565b905063000009c4818463000026ad60201b63000027341760201c565b6008021b90565b5490565b6000630000225682630000191d565b6300002263836300001943565b630000227191906300003032565b92915050565b6008820281811c6001600160e01b031990911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60200190565b60208304840193506020838163000022cd5763000022cd630000305d565b06925082156300002343576000836020039050600063000022fb8363000026bd60201b63000027401760201c565b90506008850281811c91508451811c9050811987541682821617875550818311630000232a5750506300000a67565b63000023396001876300002e8d565b9550509182019190035b602081106300002374578151845563000023606001856300002e8d565b935060209190910190601f19016300002343565b80156300000a6757600063000023978263000026bd60201b63000027401760201c565b8554845182169119161785555050505050565b6000600080516020630000865d83398151915283836040516020016300001a93939291906300003073565b6000600080516020630000865d8339815191528484846040516020016300002402949392919063000030c0565b60408051601f198184030181529190528051602090910120949350505050565b60008063000024348360026300002fe8565b63000024439060046300002e8d565b9050630000245f8482630000223c60201b6300001da01760201c565b60f01c949350505050565b606063000024786300001526565b1563000024a357630000249a84848463000026ca60201b630000274d1760201c565b90506300000566565b60405163340fb6e360e21b8152339063d03edb8c9063000024ce9087908790879060040163000030f7565b600060405180830381865afa15801563000024ed573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052630000249a91908101906300003127565b6000818311158015630000252e575083518211155b6300002557578383836040516323230fa360e01b815260040163000005f69392919063000031e0565b60208401630000256984826300002e8d565b90506000630000257b85856300002fa8565b6001600160801b031660809290921b9190911795945050505050565b606060006300000566836014600063000026f660201b63000027681760201c565b600080805b8360ff1681101563000026145763000025ec6300000db28287630000196060201b6300001d8f1790919060201c565b63000025fa90836300002e8d565b915080630000260a816300002ed4565b91505063000025bd565b509392505050565b60006020820190506300000a67848483855163000022af60201b60201c565b6000630000264b858563000023aa565b90506000630000266882630000224360201b63000023e61760201c565b9050630000268c8460ff168483630000285660201b63000028ab179092919060201c565b90506300000e99826300000fc3836300001ab260201b6300001e401760201c565b630000074382600083630000261c565b60001960089091021c1990565b6060600063000026db856300001fa4565b905063000026ed858585846300002937565b95945050505050565b6060600063000027138563000029a260201b63000029861760201c565b9050600063000027308663000029a860201b630000298c1760201c565b9050600084630000276157630000274a8660086300002fe8565b630000275a906101006300002fa8565b6300002764565b60005b90506000868381630000277d57630000277d630000305d565b049050630000278e87846300003209565b1563000028055760405162461bcd60e51b815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a65000000606482015260840163000005f6565b602080820201604051955080860160405250808552600060208601855b838310156300002848578051851c82526001929092019160209091019089016300002822565b505050505050509392505050565b6000838163000028668260e01c90565b90506000630000287b8760ff88166300002422565b905080851063000028ab57630000289481866300002fa8565b63000028a290836300002e8d565b915063000028ca565b63000028b985826300002fa8565b63000028c790836300002fa8565b91505b600063000028db8760026300002fe8565b63000028ea9060046300002e8d565b9050630000290b8460008560e01b630000227760201b63000024081760201c565b9350630000292b84828860f01b63000018fb60201b6300001d381760201c565b98975050505050505050565b6060630000295282630000194360201b6300001d831760201c565b60ff168360ff161015630000298657630000297d8585858563000029b460201b63000029a11760201c565b905063000004d7565b630000297d858585856300002a4760201b6300002a011760201c565b60801c90565b6001600160801b031690565b6060600063000029d88460ff1684630000196060201b6300001d8f1790919060201c565b9050600063000029f98260c58111156300000aed576300000aed6300002d78565b905060006300002a0b88886300001a68565b905060006300002a1d868863000025b8565b90506300002a3a8284836300002ad260201b6300002a4e1760201c565b9998505050505050505050565b606060006300002a6483630000194360201b6300001d831760201c565b6300002a7290856300002eab565b905060006300002a8587878463000023d5565b905060006300002ab660ff84166300002aa08a8a6300002b35565b630000242260201b63000025a61790919060201c565b9050630000292b82826300002b4660201b6300002aae1760201c565b6060826001600160401b038111156300002af2576300002af26300002c73565b6040519080825280601f01601f1916602001820160405280156300002b1e576020820181803683370190505b509050602081016300002614858585846300002b58565b6000806300001a4d848463000023aa565b60606300000566838360006300002ad2565b6020820484019350602082816300002b76576300002b76630000305d565b06915081156300002be457600082602003905060006300002ba48263000026bd60201b63000027401760201c565b90508554600885021b8119845116828216178452508185116300002bcb5750506300000a67565b6300002bda6001876300002e8d565b9550509283900392015b602083106300002c1457835481526300002c016001856300002e8d565b9350601f19909201916020016300002be4565b82156300000a675760006300002c378463000026bd60201b63000027401760201c565b8251865482169119161782525050505050565b805160208083015191908110156300002c6d576000198160200360031b1b821691505b50919050565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b60005b838110156300002cbe5781810151838201526020016300002ca2565b838111156300000a675750506000910152565b600081518084526300002ced8160208601602086016300002c9f565b601f01601f19169290920160200192915050565b600082825180855260208086019550808260051b84010181860160005b848110156300002d5457601f198684030189526300002d408383516300002cd1565b988401989250908301906001016300002d1e565b5090979650505050505050565b602081526000630000056660208301846300002d01565b634e487b7160e01b600052602160045260246000fd5b82815260406020820152600063000004d760408301846300002cd1565b600081518084526020808501945080840160005b838110156300002ddf578151875295820195908201906001016300002dbf565b509495945050505050565b8481526080602082015260006300002e0760808301866300002dab565b60ff8516604084015282810360608401526300000c7081856300002cd1565b634e487b7160e01b600052601160045260246000fd5b600060ff821660ff81036300002e58576300002e586300002e26565b60010192915050565b600061ffff8083168185168083038211156300002e84576300002e846300002e26565b01949350505050565b600082198211156300002ea6576300002ea66300002e26565b500190565b600060ff821660ff8416808210156300002ecb576300002ecb6300002e26565b90039392505050565b6000600182016300002eec576300002eec6300002e26565b5060010190565b8381526060602082015260006300002f1060608301856300002dab565b82810360408401526300002f2681856300002cd1565b9695505050505050565b8381526060602082015260006300002f4d60608301856300002cd1565b82810360408401526300002f2681856300002d01565b838152600083516300002f7f8160208501602088016300002c9f565b808301905083516300002f9b8160208401602088016300002c9f565b0160200195945050505050565b6000828210156300002fc0576300002fc06300002e26565b500390565b83815282602082015260606040820152600063000026ed60608301846300002dab565b600081600019048311821515161563000030085763000030086300002e26565b500290565b600063ffffffff8083168185168083038211156300002e84576300002e846300002e26565b600060ff821660ff84168060ff0382111563000030555763000030556300002e26565b019392505050565b634e487b7160e01b600052601260045260246000fd5b838152826020820152608060408201526000630000309660808301846300002dab565b828103606084015260068152650d8cadccee8d60d31b602082015260408101915050949350505050565b84815283602082015260806040820152600063000030e360808301856300002dab565b905060ff8316606083015295945050505050565b838152606060208201526000630000311460608301856300002dab565b905060ff83166040830152949350505050565b600060208284031215630000313b57600080fd5b81516001600160401b0380821115630000315457600080fd5b818401915084601f830112630000316a57600080fd5b81518181111563000031825763000031826300002c73565b604051601f8201601f19908116603f0116810190838211818310171563000031b05763000031b06300002c73565b8160405282815287602084870101111563000031cb57600080fd5b6300000c708360208301602088016300002c9f565b60608152600063000031f760608301866300002cd1565b60208301949094525060400152919050565b600082630000322857634e487b7160e01b600052601260045260246000fd5b500690565b61541f80630000323e6000396000f3fe6080604052600436106101635760003560e01c80638ed41f2f116100c0578063cc49db7e11610074578063d4285dc211610059578063d4285dc2146104ba578063d491953a146104da578063e3f8cc6b146104fa5761016a565b8063cc49db7e1461047a578063d03edb8c1461049a5761016a565b8063a2ea7c6e116100a5578063a2ea7c6e14610420578063a5c2f0071461044e578063af068c9e1461045a5761016a565b80638ed41f2f146103e05780639146e7c8146104005761016a565b80636e627cb81161011757806377841557116100fc578063778415571461038d578063832f05f4146103ad5780638c1f9a54146103c05761016a565b80636e627cb81461034d578063776d40471461036d5761016a565b806311c73ffb1161014857806311c73ffb146102d7578063419b58fd146102f7578063505a181d1461032d5761016a565b80630c1a600014610295578063114a7266146102b75761016a565b3661016a57005b600080600061019c6000357fffffffff000000000000000000000000000000000000000000000000000000001661051a565b919450925090506fffffffffffffffffffffffffffffffff1983161580156101d557506fffffffffffffffffffffffffffffffff198216155b15610237576040517f3c2432e50000000000000000000000000000000000000000000000000000000081527fffffffff000000000000000000000000000000000000000000000000000000006000351660048201526024015b60405180910390fd5b600061027b6000368080601f016020809104026020016040519081016040528093929190818152602001838380828437600092018290525092508691506106009050565b9050600061028b85858434610633565b9050805160208201f35b3480156102a157600080fd5b506102b56102b036600461462b565b6106eb565b005b3480156102c357600080fd5b506102b56102d236600461462b565b61070b565b3480156102e357600080fd5b506102b56102f23660046146d7565b610723565b34801561030357600080fd5b5061031761031236600461474d565b6107ac565b60405161032491906147f8565b60405180910390f35b34801561033957600080fd5b506102b561034836600461480b565b6107f6565b34801561035957600080fd5b506102b5610368366004614857565b610810565b34801561037957600080fd5b506102b5610388366004614900565b61089c565b34801561039957600080fd5b506102b56103a8366004614977565b6108b5565b6103176103bb366004614abe565b610905565b3480156103cc57600080fd5b506102b56103db366004614b20565b610913565b3480156103ec57600080fd5b506102b56103fb366004614b86565b610931565b34801561040c57600080fd5b506102b561041b366004614857565b610948565b34801561042c57600080fd5b5061044061043b366004614c00565b6109ca565b604051908152602001610324565b3480156102b557600080fd5b34801561046657600080fd5b506102b5610475366004614c19565b6109dd565b34801561048657600080fd5b5061031761049536600461480b565b610ae7565b3480156104a657600080fd5b506103176104b5366004614c75565b610b26565b3480156104c657600080fd5b506104406104d5366004614c00565b610b67565b3480156104e657600080fd5b506102b56104f5366004614cd3565b610b72565b34801561050657600080fd5b506102b5610515366004614d85565b610c01565b6040805160018082528183019092526000918291829182919060208083019080368337019050509050847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19168160008151811061057657610576614dea565b6020908102919091018101919091526040805160009281018390527f66756e6353656c6563746f72730000000000000000000000000000000000000060308201526105e291016040516020818303038152906040526105d490614e00565b836105dd612abc565b612bbf565b60208101516030820151604090920151909891975095509350505050565b82820160200180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1682179052825b9392505050565b6060608084901c6fffffffffffffffffffffffffffffffff1986161760008061065b83612c19565b90925090506001600160a01b0382166106aa5761067783612cd0565b6040517fef28802c00000000000000000000000000000000000000000000000000000000815260040161022e91906147f8565b806106bc576106ba888833612dbf565b505b6106dd3383886fffffffffffffffffffffffffffffffff198c161589612e26565b93505050505b949350505050565b610703866106f98860801b90565b8787878787610810565b505050505050565b610703866107198860801b90565b8787878787610948565b6000610730878733612dbf565b90506107a38186868080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881529250889150879081908401838280828437600092019190915250611faa92505050565b50505050505050565b60606107ed85858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250879250612f2d915050565b95945050505050565b61080b836108048560801b90565b8484610c01565b505050565b600061081d888833612dbf565b90506108928187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a93509150889088908190840183828082843760009201919091525061309292505050565b5050505050505050565b6107a3876108aa8960801b90565b888888888888610b72565b60006108c2878733612dbf565b90506107a3818686808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508892508791506132b49050565b60606106e384848434610633565b61092a856109218760801b90565b868686866108b5565b5050505050565b61092a8561093f8760801b90565b86868686610723565b6000610955888833612dbf565b90506108928187878080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528a935091508890889081908401838280828437600092019190915250611a8092505050565b60006109d5826134da565b92915050565b565b6109e96000803361352f565b50610a7033836313861fb560e01b84604051602401610a0891906147f8565b60408051601f198184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260016000612e26565b50610ae3826001600160a01b03166317d7de7c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ab2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ad69190614e27565b825160208401208461358a565b5050565b60606106e38484848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061364e92505050565b60606107ed8585858080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525087925061274d915050565b60006109d582613668565b6000610b7f898933612dbf565b9050610bf68188888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525050604080516020601f8a018190048102820181019092528881528b93508a925090899089908190840183828082843760009201919091525061367392505050565b505050505050505050565b6000610c0e858533612dbf565b905061092a8184848080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061390d92505050565b60408051676d756473746f726560c01b602082015265736368656d6160d01b6030820152610ca89101604051602081830303815290604052610c8e90614e00565b610c99605f80610f66565b610ca3601f61101b565b611a13565b610cb061108c565b610cb86110dc565b610cc061113c565b610cc8611195565b60408051600280825260608201909252600091816020015b6060815260200190600190039081610ce05790505090506040518060400160405280600b81526020017f76616c7565536368656d6100000000000000000000000000000000000000000081525081600081518110610d4057610d40614dea565b60200260200101819052506040518060400160405280600981526020017f6b6579536368656d61000000000000000000000000000000000000000000000081525081600181518110610d9457610d94614dea565b60209081029190910181019190915260408051676d756473746f726560c01b8184015265736368656d6160d01b60308201528151808203909301835281019052610e2590610de190614e00565b60405180604001604052806006815260200165736368656d6160d01b81525083604051602001610e119190614e99565b6040516020818303038152906040526111eb565b50565b60408051600060208201527f4e616d6573706163654f776e657200000000000000000000000000000000000060308201526109db9101604051602081830303815290604052610e7690614e00565b610e7e613a96565b610e86613ad0565b6112a2565b60408051600180825281830190925260009160208083019080368337019050509050826fffffffffffffffffffffffffffffffff191681600081518110610ed457610ed4614dea565b602090810291909101810191909152604080516000818401527f4e616d6573706163654f776e65720000000000000000000000000000000000006030820152815180820390930183528101905261080b90610f2e90614e00565b6040516bffffffffffffffffffffffff19606086901b166020820152839060009060340160405160208183030381529060405261132f565b604080516002808252606082018352600092839291906020830190803683370190505090508381600081518110610f9f57610f9f614dea565b602002602001019060c5811115610fb857610fb8614eac565b908160c5811115610fcb57610fcb614eac565b815250508281600181518110610fe357610fe3614dea565b602002602001019060c5811115610ffc57610ffc614eac565b908160c581111561100f5761100f614eac565b9052506106e3816117be565b60408051600180825281830190925260009182919060208083019080368337019050509050828160008151811061105457611054614dea565b602002602001019060c581111561106d5761106d614eac565b908160c581111561108057611080614eac565b90525061062c816117be565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b60308201526109db91016040516020818303038152906040526110cc90614e00565b6110d4613b0a565b610e86613b44565b60408051676d756473746f726560c01b60208201527f53746f72654d657461646174610000000000000000000000000000000000000060308201526109db910160405160208183030381529060405261113490614e00565b6110d4613b7e565b600080611147613bfd565b60408051676d756473746f726560c01b602082015264486f6f6b7360d81b6030820152929450909250610ae391015b60405160208183030381529060405261118e90614e00565b838361170e565b6000806111a0613cad565b60408051676d756473746f726560c01b60208201527f53746f72654d65746164617461000000000000000000000000000000000000006030820152929450909250610ae39101611176565b60006111f78383613dc8565b6040805160018082528183019092529192506000919060208083019080368337019050509050848160008151811061123157611231614dea565b60209081029190910181019190915260408051676d756473746f726560c01b928101929092527f53746f72654d6574616461746100000000000000000000000000000000000000603083015261092a91015b60405160208183030381529060405261129b90614e00565b8284611766565b6112aa613e7e565b156112ba5761080b838383611a13565b6040517fd5933686000000000000000000000000000000000000000000000000000000008152600481018490526024810183905260448101829052339063d5933686906064015b600060405180830381600087803b15801561131b57600080fd5b505af11580156107a3573d6000803e3d6000fd5b611337613e7e565b1561134d5761134884848484611a80565b6113bd565b6040517f114a7266000000000000000000000000000000000000000000000000000000008152339063114a72669061138f908790879087908790600401614efd565b600060405180830381600087803b1580156113a957600080fd5b505af1158015610892573d6000803e3d6000fd5b50505050565b801580156113cf575081155b156113f057604051635318beb960e01b81526000600482015260240161022e565b60006113fb83611d72565b60ff169050600e81111561142557604051635318beb960e01b81526004810182905260240161022e565b600061143084611d83565b60ff169050601c6114418383614f47565b111561146d576114518282614f47565b604051635318beb960e01b815260040161022e91815260200190565b60008060005b61147d8585614f47565b81101561154a5760006114a96114938984611d8f565b60c58111156114a4576114a4614eac565b611c51565b11156114fa578381106114e8576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826114f281614f5f565b935050611542565b83811015611534576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8161153e81614f5f565b9250505b600101611473565b5082821461156e57604051635318beb960e01b81526004810183905260240161022e565b83811461070357604051635318beb960e01b81526004810182905260240161022e565b6060816040516020016115a691815260200190565b6040516020818303038152906040529050919050565b6040805160018082528183019092526000916020808301908036833701905050905083816000815181106115f2576115f2614dea565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b603083015260009161164e91015b60405160208183030381529060405261164890614e00565b83612390565b848155905061165c565b9055565b61166f61166a826020614f47565b849055565b60408051676d756473746f726560c01b602082015265736368656d6160d01b60308201527f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee3291016040516020818303038152906040526116ce90614e00565b83868660408051602081019390935282015260600160408051601f19818403018152908290526116ff939291614f79565b60405180910390a15050505050565b611716613e7e565b156117265761080b838383611e43565b6040517ffe86a89f000000000000000000000000000000000000000000000000000000008152339063fe86a89f9061130190869086908690600401614fae565b61176e613e7e565b1561177e5761080b838383611faa565b6040517f8ed41f2f0000000000000000000000000000000000000000000000000000000081523390638ed41f2f9061130190869086908690600401614f79565b6000601c825111156117e8578151604051635318beb960e01b815260040161022e91815260200190565b60008060008060005b865181101561190f57600061182a88838151811061181157611811614dea565b602002602001015160c58111156114a4576114a4614eac565b905061ffff81161561188057821561186e576040517ff1e56be400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8361187881614fd9565b945050611885565b600192505b61188f8186614ff8565b9450611904866118a0846004614f47565b8a85815181106118b2576118b2614dea565b602002602001015160c58111156118cb576118cb614eac565b60f81b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9550506001016117f1565b50600082875161191f919061501e565b9050600e8160ff16111561194b57604051635318beb960e01b815260ff8216600482015260240161022e565b7dffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff851660f085901b1794507fffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167dff000000000000000000000000000000000000000000000000000000000060e885901b161794507fffffff00ffffffffffffffffffffffffffffffffffffffffffffffffffffffff85167cff0000000000000000000000000000000000000000000000000000000060e083901b16175b979650505050505050565b611a1e8260006113c3565b611a298160016113c3565b611a3283613eef565b15611a755782611a4184611591565b6040517f147bbb8c00000000000000000000000000000000000000000000000000000000815260040161022e929190615041565b61080b8383836115bc565b6000611a8b856134da565b90507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c4685858585604051611ac29493929190614efd565b60405180910390a16000611ad5866121ff565b905060005b8151811015611b79576000828281518110611af757611af7614dea565b60200260200101519050806001600160a01b031663469b7ee2898989896040518563ffffffff1660e01b8152600401611b339493929190614efd565b600060405180830381600087803b158015611b4d57600080fd5b505af1158015611b61573d6000803e3d6000fd5b50505050508080611b7190614f5f565b915050611ada565b50611b8382611d83565b60ff168460ff161015611ba257611b9d86868487876122ad565b611baf565b611baf8686848787612353565b60005b81518110156107a3576000828281518110611bcf57611bcf614dea565b60200260200101519050806001600160a01b0316636b3d7d5f898989896040518563ffffffff1660e01b8152600401611c0b9493929190614efd565b600060405180830381600087803b158015611c2557600080fd5b505af1158015611c39573d6000803e3d6000fd5b50505050508080611c4990614f5f565b915050611bb2565b6000808260c5811115611c6657611c66614eac565b60ff1690506020811015611c7f5761062c816001614f47565b6040811015611c9f576020611c95826001614f47565b61062c919061505a565b6060811015611cb5576040611c95826001614f47565b60608360c5811115611cc957611cc9614eac565b03611cd75750600192915050565b60618360c5811115611ceb57611ceb614eac565b03611cf95750601492915050565b50600092915050565b6008820281811c7fff0000000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b1590565b6000601882901b5b60f81c92915050565b6000601082901b611d7a565b6000611da783611da0846004614f47565b6008021b90565b60f81c60c581111561062c5761062c614eac565b604080516001808252818301909252600091829190602080830190803683370190505090508281600081518110611df457611df4614dea565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b6030830152600091611e369101611630565b90506106e3815490565b90565b6000611e4e846134da565b9050815160001480611e6b5750611e64816123ea565b60ff168251145b611eb757611e78816123ea565b82516040517ff2b2755900000000000000000000000000000000000000000000000000000000815260ff9092166004830152602482015260440161022e565b6113bd848484604051602001610e119190614e99565b6000806000805b8451811015611f7f57611f4a83611eec836002615071565b611ef7906004614f47565b878481518110611f0957611f09614dea565b602002602001015160f01b6008820281811c7fffff00000000000000000000000000000000000000000000000000000000000090911c198416179392505050565b9250848181518110611f5e57611f5e614dea565b602002602001015161ffff1682611f759190615090565b9150600101611ed4565b507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821660e082901b176106e3565b6000611fb5846134da565b90506000611fc38260f01c90565b905080600080611fd285611d72565b60ff16111561200057506020848301015160e081901c611ff3906020614f47565b611ffd9083614f47565b91505b845182146120475784516040517f521b3d3300000000000000000000000000000000000000000000000000000000815261022e918491600401918252602082015260400190565b7f912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee3287878760405161207a93929190614f79565b60405180910390a1600061208d886121ff565b905060005b815181101561212f5760008282815181106120af576120af614dea565b60200260200101519050806001600160a01b03166382b6745f8b8b8b6040518463ffffffff1660e01b81526004016120e993929190614f79565b600060405180830381600087803b15801561210357600080fd5b505af1158015612117573d6000803e3d6000fd5b5050505050808061212790614f5f565b915050612092565b50600061213c8989612390565b90506020870161214f8260008389612458565b61215a866020614f47565b6121649082614f47565b905061216f87611d72565b60ff166000036121855750505050505050505050565b60006121918b8b612516565b858155905060008060005b6121a58b611d72565b60ff168160ff1610156121ef576121bd8e8e8361254d565b92506121cc8860ff83166125a6565b91506121db8360008785612458565b6121e58286614f47565b945060010161219c565b5050505050505050505050505050565b6040805160018082528183019092526060916000919060208083019080368337019050509050828160008151811061223957612239614dea565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925264486f6f6b7360d81b603083015260009161229691015b60405160208183030381529060405261228e90614e00565b8360006125d8565b90506106e36122a8826000845161267e565b61270e565b60006122bc8460ff8516611d8f565b905081516122d58260c58111156114a4576114a4614eac565b1461232c576122ef8160c58111156114a4576114a4614eac565b82516040517f521b3d330000000000000000000000000000000000000000000000000000000081526004810192909252602482015260440161022e565b60006123388787612390565b905060006123468686613f04565b905061089282828661271f565b600061235e84611d83565b612368908461501e565b90506123778686838551613f3f565b600061238487878461254d565b90506107a38184612734565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016123c7939291906150af565b60408051601f1981840301815291905280516020909101209392505050565b5490565b60006123f582611d72565b6123fe83611d83565b6109d591906150ce565b6008820281811c7fffffffff0000000000000000000000000000000000000000000000000000000090911c198416179392505050565b60f01c90565b016020015190565b60e01c90565b60200190565b602083048401935060208381612470576124706150f3565b06925082156124c95760208390036000600019600884021c1990506008850281811c91508451811c90508119875416828216178755508183116124b45750506113bd565b6124bf600187614f47565b9550509182019190035b602081106124f257815184556124e0600185614f47565b935060209190910190601f19016124c9565b80156113bd576000600019600883021c198554845182169119161785555050505050565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d983836040516020016123c793929190615109565b60007f86425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d98484846040516020016125869493929190615169565b60408051601f198184030181529190528051602090910120949350505050565b6000806125b4836002615071565b6125bf906004614f47565b90506125cd84826008021b90565b60f01c949350505050565b60606125e2613e7e565b156125f9576125f284848461274d565b905061062c565b6040517fd03edb8c000000000000000000000000000000000000000000000000000000008152339063d03edb8c906126399087908790879060040161519c565b600060405180830381865afa158015612656573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526125f291908101906151c8565b6000818311158015612691575083518211155b6126cd578383836040517f23230fa300000000000000000000000000000000000000000000000000000000815260040161022e93929190615236565b602084016126db8482614f47565b905060006126e9858561505a565b6fffffffffffffffffffffffffffffffff1660809290921b9190911795945050505050565b6060600061062c8360146000612768565b60006020820190506113bd8484838551612458565b610ae38260008361271f565b60001960089091021c1990565b6060600061275a856134da565b90506107ed85858584613f71565b606060006127768560801c90565b90506fffffffffffffffffffffffffffffffff85166000846127ae5761279d866008615071565b6127a99061010061505a565b6127b1565b60005b905060008683816127c4576127c46150f3565b0490506127d1878461525b565b1561285e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152603d60248201527f756e7061636b546f41727261793a207061636b65644c656e677468206d75737460448201527f2062652061206d756c7469706c65206f6620656c656d656e7453697a65000000606482015260840161022e565b602080820201604051955080860160405250808552600060208601855b8383101561289d578051851c825260019290920191602090910190890161287b565b505050505050509392505050565b600083816128b98260e01c90565b905060006128ca878760ff166125a6565b90508085106128ee576128dd818661505a565b6128e79083614f47565b9150612905565b6128f8858261505a565b612902908361505a565b91505b6000612912876002615071565b61291d906004614f47565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841660e084901b1793507fffff0000000000000000000000000000000000000000000000000000000000006008820290811c19851660f088901b90911c1798975050505050505050565b60801c90565b6fffffffffffffffffffffffffffffffff1690565b606060006129b28360ff8616611d8f565b905060006129cb8260c58111156114a4576114a4614eac565b905060006129d98888612390565b905060006129e78688613f04565b90506129f4828483612a4e565b9998505050505050505050565b60606000612a0e83611d83565b612a18908561501e565b90506000612a2787878461254d565b90506000612a428360ff16612a3c8a8a613fa8565b906125a6565b90506106dd8282612aae565b60608267ffffffffffffffff811115612a6957612a696149f9565b6040519080825280601f01601f191660200182016040528015612a93576020820181803683370190505b50905060208101612aa685858584613fb5565b509392505050565b606061062c83836000612a4e565b6040805160038082526080820190925260009182919060208201606080368337019050509050604f81600081518110612af757612af7614dea565b602002602001019060c5811115612b1057612b10614eac565b908160c5811115612b2357612b23614eac565b81525050604f81600181518110612b3c57612b3c614dea565b602002602001019060c5811115612b5557612b55614eac565b908160c5811115612b6857612b68614eac565b81525050604381600281518110612b8157612b81614dea565b602002602001019060c5811115612b9a57612b9a614eac565b908160c5811115612bad57612bad614eac565b905250612bb9816117be565b91505090565b6060612bc9613e7e565b15612bd9576125f2848484612f2d565b6040517f419b58fd000000000000000000000000000000000000000000000000000000008152339063419b58fd906126399087908790879060040161526f565b60408051600180825281830190925260009182918291602080830190803683370190505090508381600081518110612c5357612c53614dea565b6020908102919091018101919091526040805160009281018390527f53797374656d73000000000000000000000000000000000000000000000000006030820152612cba9101604051602081830303815290604052612cb190614e00565b836105dd61406a565b9050612cc5816140e9565b935093505050915091565b606081608081901b6fffffffffffffffffffffffffffffffff19821615612cf75781612d19565b7f524f4f545f4e414d4553504143450000000000000000000000000000000000005b6fffffffffffffffffffffffffffffffff19821615612d385781612d5a565b7f524f4f545f4e414d4500000000000000000000000000000000000000000000005b6040516fffffffffffffffffffffffffffffffff1992831660208201527f2f0000000000000000000000000000000000000000000000000000000000000060308201529116603182015260410160405160208183030381529060405292505050919050565b608082901c6fffffffffffffffffffffffffffffffff19841617612de484848461410f565b61062c57612df181612cd0565b826040517fe64c034800000000000000000000000000000000000000000000000000000000815260040161022e929190615298565b606060008487604051602001612e3d9291906152c3565b604051602081830303815290604052905060008085612eb757876001600160a01b03168584604051612e6f91906152fa565b60006040518083038185875af1925050503d8060008114612eac576040519150601f19603f3d011682016040523d82523d6000602084013e612eb1565b606091505b50612f11565b876001600160a01b031683604051612ecf91906152fa565b600060405180830381855af49150503d8060008114612f0a576040519150601f19603f3d011682016040523d82523d6000602084013e612f0f565b606091505b505b915091508115612f255792506107ed915050565b805160208201fd5b60606000612f3b8360f01c90565b905080600080612f4a86611d72565b60ff1690508015612f9557612f5f8888613fa8565b91506000612f6d8360e01c90565b1115612f9557612f7d8260e01c90565b612f88906020614f47565b612f929084614f47565b92505b60008367ffffffffffffffff811115612fb057612fb06149f9565b6040519080825280601f01601f191660200182016040528015612fda576020820181803683370190505b50905060208101612fed8a8a8884614169565b612ff78460e01c90565b60000361300b5750945061062c9350505050565b6130158682614f47565b8481529050613025602082614f47565b905060005b838160ff1610156130835760006130428c8c8461254d565b905060006130538760ff85166125a6565b90506130628282600087613fb5565b61306c8185614f47565b93505050808061307b90614fd9565b91505061302a565b50909998505050505050505050565b600061309d856134da565b90506130a881611d83565b60ff168360ff1610156130e7576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60006130f586868685612a01565b83604051602001613107929190615316565b60405160208183030381529060405290507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c468686868460405161314d9493929190614efd565b60405180910390a16000613160876121ff565b905060005b815181101561320457600082828151811061318257613182614dea565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b81526004016131be9493929190614efd565b600060405180830381600087803b1580156131d857600080fd5b505af11580156131ec573d6000803e3d6000fd5b505050505080806131fc90614f5f565b915050613165565b50613212878785888861418a565b60005b815181101561089257600082828151811061323257613232614dea565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b815260040161326e9493929190614efd565b600060405180830381600087803b15801561328857600080fd5b505af115801561329c573d6000803e3d6000fd5b505050505080806132ac90614f5f565b915050613215565b60006132bf856134da565b90506132ca81611d83565b60ff168360ff161015613309576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6060600061331987878786612a01565b905061333b613336826000878551613331919061505a565b61267e565b6141fa565b9150507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c46868686846040516133739493929190614efd565b60405180910390a16000613386876121ff565b905060005b815181101561342a5760008282815181106133a8576133a8614dea565b60200260200101519050806001600160a01b031663469b7ee28a8a8a886040518563ffffffff1660e01b81526004016133e49493929190614efd565b600060405180830381600087803b1580156133fe57600080fd5b505af1158015613412573d6000803e3d6000fd5b5050505050808061342290614f5f565b91505061338b565b50613438878785888861427a565b60005b815181101561089257600082828151811061345857613458614dea565b60200260200101519050806001600160a01b0316636b3d7d5f8a8a8a886040518563ffffffff1660e01b81526004016134949493929190614efd565b600060405180830381600087803b1580156134ae57600080fd5b505af11580156134c2573d6000803e3d6000fd5b505050505080806134d290614f5f565b91505061343b565b60006134e582611dbb565b90508061352a57816134f683611591565b6040517fd623a70d00000000000000000000000000000000000000000000000000000000815260040161022e929190615041565b919050565b608082901c6fffffffffffffffffffffffffffffffff198416176001600160a01b038216301480159061357c5750816001600160a01b0316613570856142d7565b6001600160a01b031614155b1561062c57612df181612cd0565b60006135958261437d565b6040805160028082526060820183529293506000929091602083019080368337019050509050846fffffffffffffffffffffffffffffffff1916816000815181106135e2576135e2614dea565b602002602001018181525050838160018151811061360257613602614dea565b602090810291909101810191909152604080516000928101929092527f496e7374616c6c65644d6f64756c657300000000000000000000000000000000603083015261092a9101611283565b6060600061365b846134da565b90506106e3848483612f2d565b60006134e5826143a2565b600061367e866134da565b905061368981611d83565b60ff168460ff1610156136c8576040517f14306eb800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61ffff83111561370f576040517f7cd3b80700000000000000000000000000000000000000000000000000000000815261ffff60048201526024810184905260440161022e565b6060600061371f88888886612a01565b90506137306133368260008861267e565b8461374c6133368488518a6137459190614f47565b865161267e565b60405160200161375e9392919061533c565b6040516020818303038152906040529150507fd01f9f1368f831528fc9fe6442366b2b7d957fbfff3bcf7c24d9ab5fe51f8c46878787846040516137a59493929190614efd565b60405180910390a160006137b8886121ff565b905060005b815181101561385c5760008282815181106137da576137da614dea565b60200260200101519050806001600160a01b031663469b7ee28b8b8b886040518563ffffffff1660e01b81526004016138169493929190614efd565b600060405180830381600087803b15801561383057600080fd5b505af1158015613844573d6000803e3d6000fd5b5050505050808061385490614f5f565b9150506137bd565b5061386b88888589898961442d565b60005b8151811015610bf657600082828151811061388b5761388b614dea565b60200260200101519050806001600160a01b0316636b3d7d5f8b8b8b886040518563ffffffff1660e01b81526004016138c79493929190614efd565b600060405180830381600087803b1580156138e157600080fd5b505af11580156138f5573d6000803e3d6000fd5b5050505050808061390590614f5f565b91505061386e565b6000613918836134da565b90507f2cc8610b80ef19409ae51ecbdd9c137960fb22ae9ef2d817d36ec1b685d68ecd838360405161394b92919061537f565b60405180910390a1600061395e846121ff565b905060005b81518110156139fe57600082828151811061398057613980614dea565b60200260200101519050806001600160a01b031663b51fef6c87876040518363ffffffff1660e01b81526004016139b892919061537f565b600060405180830381600087803b1580156139d257600080fd5b505af11580156139e6573d6000803e3d6000fd5b505050505080806139f690614f5f565b915050613963565b506000613a0b8585612390565b9050613a65816000613a1d8660f01c90565b67ffffffffffffffff811115613a3557613a356149f9565b6040519080825280601f01601f191660200182016040528015613a5f576020820181803683370190505b5061271f565b613a6e83611d72565b60ff16600003613a7f575050505050565b6000613a8b8686612516565b600081559050610703565b60408051600180825281830190925260009182919060208083019080368337019050509050606181600081518110612b8157612b81614dea565b60408051600180825281830190925260009182919060208083019080368337019050509050604f81600081518110612b8157612b81614dea565b6040805160018082528183019092526000918291906020808301908036833701905050905060c381600081518110612b8157612b81614dea565b60408051600180825281830190925260009182919060208083019080368337019050509050605f81600081518110612b8157612b81614dea565b6040805160028082526060820183526000928392919060208301908036833701905050905060c581600081518110613bb857613bb8614dea565b602002602001019060c5811115613bd157613bd1614eac565b908160c5811115613be457613be4614eac565b8152505060c481600181518110612b8157612b81614dea565b6040805160018082528183019092526060918291600091816020015b6060815260200190600190039081613c195790505090506040518060400160405280600581526020017f76616c756500000000000000000000000000000000000000000000000000000081525081600081518110613c7957613c79614dea565b60200260200101819052508060405180604001604052806005815260200164486f6f6b7360d81b8152509092509250509091565b60408051600280825260608281019093528291600091816020015b6060815260200190600190039081613cc85790505090506040518060400160405280600981526020017f7461626c654e616d65000000000000000000000000000000000000000000000081525081600081518110613d2857613d28614dea565b60200260200101819052506040518060400160405280601481526020017f616269456e636f6465644669656c644e616d657300000000000000000000000081525081600181518110613d7c57613d7c614dea565b6020026020010181905250806040518060400160405280600d81526020017f53746f72654d65746164617461000000000000000000000000000000000000008152509092509250509091565b60408051600280825260608083018452926000929190602083019080368337019050509050835181600081518110613e0257613e02614dea565b602002602001019061ffff16908161ffff1681525050825181600181518110613e2d57613e2d614dea565b602002602001019061ffff16908161ffff16815250506000613e4e82611ecd565b9050808585604051602001613e6593929190615398565b6040516020818303038152906040529250505092915050565b6000303b808203613e9157600191505090565b306001600160a01b031663a5c2f0076040518163ffffffff1660e01b815260040160006040518083038186803b158015613eca57600080fd5b505afa925050508015613edb575060015b613ee757600091505090565b600191505090565b6000613efd611d6e83611dbb565b1592915050565b600080805b8360ff16811015612aa657613f216114938683611d8f565b613f2b9083614f47565b915080613f3781614f5f565b915050613f09565b6000613f4b8585612516565b90506000613f57825490565b9050613f678160ff8616856128ab565b8083559050610703565b6060613f7c82611d83565b60ff168360ff161015613f9c57613f95858585856129a1565b90506106e3565b613f9585858585612a01565b600080611e368484612516565b602082048401935060208281613fcd57613fcd6150f3565b069150811561401e5760208290036000600019600883021c1990508554600885021b8119845116828216178452508185116140095750506113bd565b614014600187614f47565b9550509283900392015b602083106140465783548152614035600185614f47565b9350601f199092019160200161401e565b82156113bd576000600019600885021c198251865482169119161782525050505050565b604080516002808252606082018352600092839291906020830190803683370190505090506061816000815181106140a4576140a4614dea565b602002602001019060c58111156140bd576140bd614eac565b908160c58111156140d0576140d0614eac565b81525050606081600181518110612b8157612b81614dea565b6020810151603482015160609190911c90600090614108905b60f81c90565b9050915091565b6000306001600160a01b038316148061414157506141416fffffffffffffffffffffffffffffffff1985165b83614451565b806106e357506106e36fffffffffffffffffffffffffffffffff198516608085901c1761413b565b81156113bd57600061417b8585612390565b905061092a8184600085613fb5565b600061419584611d83565b61419f908461501e565b905060006141ad8787612516565b905060006141b9825490565b905060006141ca8260ff86166125a6565b90506141e88460ff168651836141e09190614f47565b8491906128ab565b8084559150610bf68989868489614518565b606060006142088360801c90565b90506fffffffffffffffffffffffffffffffff83168067ffffffffffffffff811115614236576142366149f9565b6040519080825280601f01601f191660200182016040528015614260576020820181803683370190505b50925060208301614272838284614558565b505050919050565b600061428584611d83565b61428f908461501e565b9050600061429d8787612516565b905060006142a9825490565b905060006142ba8260ff86166125a6565b90506142cd60ff85166141e0878461505a565b8084559150610bf6565b60408051600180825281830190925260009182919060208083019080368337019050509050826fffffffffffffffffffffffffffffffff19168160008151811061432357614323614dea565b6020908102919091018101919091526040805160009281018390527f4e616d6573706163654f776e6572000000000000000000000000000000000000603082015261436e9101612276565b6020015160601c949350505050565b604051606082811b6bffffffffffffffffffffffff19166020830152906034016115a6565b6040805160018082528183019092526000918291906020808301908036833701905050905082816000815181106143db576143db614dea565b60209081029190910181019190915260408051676d756473746f726560c01b9281019290925265736368656d6160d01b603083015260009161441d9101611630565b90506106e36123e6826020614f47565b600061443885611d83565b614442908561501e565b90506107a38787838686614518565b60408051600280825260608201835260009283929190602083019080368337019050509050838160008151811061448a5761448a614dea565b6020026020010181815250508260601b6bffffffffffffffffffffffff1916816001815181106144bc576144bc614dea565b6020908102919091018101919091526040805160009281018390527f5265736f7572636541636365737300000000000000000000000000000000000060308201526145079101612276565b60208101519091506107ed90614102565b600061452586868661254d565b90506145326020846153d5565b61453c9082614f47565b9050600061454b60208561525b565b90506107a382828561271f565b602081111561456f578082828560045afa50505050565b6000600019600883021c1983518551821691191617835250505050565b60008083601f84011261459e57600080fd5b50813567ffffffffffffffff8111156145b657600080fd5b6020830191508360208260051b85010111156145d157600080fd5b9250929050565b803560ff8116811461352a57600080fd5b60008083601f8401126145fb57600080fd5b50813567ffffffffffffffff81111561461357600080fd5b6020830191508360208285010111156145d157600080fd5b6000806000806000806080878903121561464457600080fd5b86359550602087013567ffffffffffffffff8082111561466357600080fd5b61466f8a838b0161458c565b909750955085915061468360408a016145d8565b9450606089013591508082111561469957600080fd5b506146a689828a016145e9565b979a9699509497509295939492505050565b6fffffffffffffffffffffffffffffffff1981168114610e2557600080fd5b600080600080600080608087890312156146f057600080fd5b86356146fb816146b8565b9550602087013561470b816146b8565b9450604087013567ffffffffffffffff8082111561472857600080fd5b6147348a838b0161458c565b9096509450606089013591508082111561469957600080fd5b6000806000806060858703121561476357600080fd5b84359350602085013567ffffffffffffffff81111561478157600080fd5b61478d8782880161458c565b9598909750949560400135949350505050565b60005b838110156147bb5781810151838201526020016147a3565b838111156113bd5750506000910152565b600081518084526147e48160208601602086016147a0565b601f01601f19169290920160200192915050565b60208152600061062c60208301846147cc565b60008060006040848603121561482057600080fd5b83359250602084013567ffffffffffffffff81111561483e57600080fd5b61484a8682870161458c565b9497909650939450505050565b600080600080600080600060a0888a03121561487257600080fd5b873561487d816146b8565b9650602088013561488d816146b8565b9550604088013567ffffffffffffffff808211156148aa57600080fd5b6148b68b838c0161458c565b90975095508591506148ca60608b016145d8565b945060808a01359150808211156148e057600080fd5b506148ed8a828b016145e9565b989b979a50959850939692959293505050565b600080600080600080600060a0888a03121561491b57600080fd5b87359650602088013567ffffffffffffffff8082111561493a57600080fd5b6149468b838c0161458c565b909850965086915061495a60408b016145d8565b955060608a0135945060808a01359150808211156148e057600080fd5b60008060008060008060a0878903121561499057600080fd5b863561499b816146b8565b955060208701356149ab816146b8565b9450604087013567ffffffffffffffff8111156149c757600080fd5b6149d389828a0161458c565b90955093506149e69050606088016145d8565b9150608087013590509295509295509295565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715614a3857614a386149f9565b604052919050565b600067ffffffffffffffff821115614a5a57614a5a6149f9565b50601f01601f191660200190565b600082601f830112614a7957600080fd5b8135614a8c614a8782614a40565b614a0f565b818152846020838601011115614aa157600080fd5b816020850160208301376000918101602001919091529392505050565b600080600060608486031215614ad357600080fd5b8335614ade816146b8565b92506020840135614aee816146b8565b9150604084013567ffffffffffffffff811115614b0a57600080fd5b614b1686828701614a68565b9150509250925092565b600080600080600060808688031215614b3857600080fd5b85359450602086013567ffffffffffffffff811115614b5657600080fd5b614b628882890161458c565b9095509350614b759050604087016145d8565b949793965091946060013592915050565b600080600080600060608688031215614b9e57600080fd5b85359450602086013567ffffffffffffffff80821115614bbd57600080fd5b614bc989838a0161458c565b90965094506040880135915080821115614be257600080fd5b50614bef888289016145e9565b969995985093965092949392505050565b600060208284031215614c1257600080fd5b5035919050565b60008060408385031215614c2c57600080fd5b82356001600160a01b0381168114614c4357600080fd5b9150602083013567ffffffffffffffff811115614c5f57600080fd5b614c6b85828601614a68565b9150509250929050565b60008060008060608587031215614c8b57600080fd5b84359350602085013567ffffffffffffffff811115614ca957600080fd5b614cb58782880161458c565b9094509250614cc89050604086016145d8565b905092959194509250565b60008060008060008060008060c0898b031215614cef57600080fd5b8835614cfa816146b8565b97506020890135614d0a816146b8565b9650604089013567ffffffffffffffff80821115614d2757600080fd5b614d338c838d0161458c565b9098509650869150614d4760608c016145d8565b955060808b0135945060a08b0135915080821115614d6457600080fd5b50614d718b828c016145e9565b999c989b5096995094979396929594505050565b60008060008060608587031215614d9b57600080fd5b8435614da6816146b8565b93506020850135614db6816146b8565b9250604085013567ffffffffffffffff811115614dd257600080fd5b614dde8782880161458c565b95989497509550505050565b634e487b7160e01b600052603260045260246000fd5b80516020808301519190811015614e21576000198160200360031b1b821691505b50919050565b600060208284031215614e3957600080fd5b815161062c816146b8565b600081518084526020808501808196508360051b8101915082860160005b85811015614e8c578284038952614e7a8483516147cc565b98850198935090840190600101614e62565b5091979650505050505050565b60208152600061062c6020830184614e44565b634e487b7160e01b600052602160045260246000fd5b600081518084526020808501945080840160005b83811015614ef257815187529582019590820190600101614ed6565b509495945050505050565b848152608060208201526000614f166080830186614ec2565b60ff851660408401528281036060840152611a0881856147cc565b634e487b7160e01b600052601160045260246000fd5b60008219821115614f5a57614f5a614f31565b500190565b60006000198203614f7257614f72614f31565b5060010190565b838152606060208201526000614f926060830185614ec2565b8281036040840152614fa481856147cc565b9695505050505050565b838152606060208201526000614fc760608301856147cc565b8281036040840152614fa48185614e44565b600060ff821660ff8103614fef57614fef614f31565b60010192915050565b600061ffff80831681851680830382111561501557615015614f31565b01949350505050565b600060ff821660ff84168082101561503857615038614f31565b90039392505050565b8281526040602082015260006106e360408301846147cc565b60008282101561506c5761506c614f31565b500390565b600081600019048311821515161561508b5761508b614f31565b500290565b600063ffffffff80831681851680830382111561501557615015614f31565b8381528260208201526060604082015260006107ed6060830184614ec2565b600060ff821660ff84168060ff038211156150eb576150eb614f31565b019392505050565b634e487b7160e01b600052601260045260246000fd5b8381528260208201526080604082015260006151286080830184614ec2565b8281036060840152600681527f6c656e6774680000000000000000000000000000000000000000000000000000602082015260408101915050949350505050565b8481528360208201526080604082015260006151886080830185614ec2565b905060ff8316606083015295945050505050565b8381526060602082015260006151b56060830185614ec2565b905060ff83166040830152949350505050565b6000602082840312156151da57600080fd5b815167ffffffffffffffff8111156151f157600080fd5b8201601f8101841361520257600080fd5b8051615210614a8782614a40565b81815285602083850101111561522557600080fd5b6107ed8260208301602086016147a0565b60608152600061524960608301866147cc565b60208301949094525060400152919050565b60008261526a5761526a6150f3565b500690565b8381526060602082015260006152886060830185614ec2565b9050826040830152949350505050565b6040815260006152ab60408301856147cc565b90506001600160a01b03831660208301529392505050565b600083516152d58184602088016147a0565b60609390931b6bffffffffffffffffffffffff19169190920190815260140192915050565b6000825161530c8184602087016147a0565b9190910192915050565b600083516153288184602088016147a0565b8351908301906150158183602088016147a0565b6000845161534e8184602089016147a0565b8451908301906153628183602089016147a0565b84519101906153758183602088016147a0565b0195945050505050565b8281526040602082015260006106e36040830184614ec2565b838152600083516153b08160208501602088016147a0565b808301905083516153c88160208401602088016147a0565b0160200195945050505050565b6000826153e4576153e46150f3565b50049056fea2646970667358221220c433f02c1c7a25bfe2a3512c7f2d891bb7519dd698f11d254acde14ef0cdcf2b64736f6c634300080d003386425bff6b57326c7859e89024fe4f238ca327a1ae4a230180dd2f0e88aaa7d9912af873e852235aae78a1d25ae9bb28b616a67c36898c53a14fd8184504ee32";
|
|
776
837
|
|
|
777
838
|
type WorldConstructorParams =
|
|
778
839
|
| [signer?: Signer]
|
|
@@ -230,6 +230,34 @@ const _abi = [
|
|
|
230
230
|
stateMutability: "view",
|
|
231
231
|
type: "function",
|
|
232
232
|
},
|
|
233
|
+
{
|
|
234
|
+
inputs: [
|
|
235
|
+
{
|
|
236
|
+
internalType: "bytes32",
|
|
237
|
+
name: "table",
|
|
238
|
+
type: "bytes32",
|
|
239
|
+
},
|
|
240
|
+
{
|
|
241
|
+
internalType: "bytes32[]",
|
|
242
|
+
name: "key",
|
|
243
|
+
type: "bytes32[]",
|
|
244
|
+
},
|
|
245
|
+
{
|
|
246
|
+
internalType: "uint8",
|
|
247
|
+
name: "schemaIndex",
|
|
248
|
+
type: "uint8",
|
|
249
|
+
},
|
|
250
|
+
{
|
|
251
|
+
internalType: "uint256",
|
|
252
|
+
name: "byteLengthToPop",
|
|
253
|
+
type: "uint256",
|
|
254
|
+
},
|
|
255
|
+
],
|
|
256
|
+
name: "popFromField",
|
|
257
|
+
outputs: [],
|
|
258
|
+
stateMutability: "nonpayable",
|
|
259
|
+
type: "function",
|
|
260
|
+
},
|
|
233
261
|
{
|
|
234
262
|
inputs: [
|
|
235
263
|
{
|
|
@@ -103,6 +103,34 @@ const _abi = [
|
|
|
103
103
|
stateMutability: "nonpayable",
|
|
104
104
|
type: "function",
|
|
105
105
|
},
|
|
106
|
+
{
|
|
107
|
+
inputs: [
|
|
108
|
+
{
|
|
109
|
+
internalType: "bytes32",
|
|
110
|
+
name: "table",
|
|
111
|
+
type: "bytes32",
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
internalType: "bytes32[]",
|
|
115
|
+
name: "key",
|
|
116
|
+
type: "bytes32[]",
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
internalType: "uint8",
|
|
120
|
+
name: "schemaIndex",
|
|
121
|
+
type: "uint8",
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
internalType: "uint256",
|
|
125
|
+
name: "byteLengthToPop",
|
|
126
|
+
type: "uint256",
|
|
127
|
+
},
|
|
128
|
+
],
|
|
129
|
+
name: "popFromField",
|
|
130
|
+
outputs: [],
|
|
131
|
+
stateMutability: "nonpayable",
|
|
132
|
+
type: "function",
|
|
133
|
+
},
|
|
106
134
|
{
|
|
107
135
|
inputs: [
|
|
108
136
|
{
|
|
@@ -227,6 +227,34 @@ const _abi = [
|
|
|
227
227
|
stateMutability: "view",
|
|
228
228
|
type: "function",
|
|
229
229
|
},
|
|
230
|
+
{
|
|
231
|
+
inputs: [
|
|
232
|
+
{
|
|
233
|
+
internalType: "bytes32",
|
|
234
|
+
name: "table",
|
|
235
|
+
type: "bytes32",
|
|
236
|
+
},
|
|
237
|
+
{
|
|
238
|
+
internalType: "bytes32[]",
|
|
239
|
+
name: "key",
|
|
240
|
+
type: "bytes32[]",
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
internalType: "uint8",
|
|
244
|
+
name: "schemaIndex",
|
|
245
|
+
type: "uint8",
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
internalType: "uint256",
|
|
249
|
+
name: "byteLengthToPop",
|
|
250
|
+
type: "uint256",
|
|
251
|
+
},
|
|
252
|
+
],
|
|
253
|
+
name: "popFromField",
|
|
254
|
+
outputs: [],
|
|
255
|
+
stateMutability: "nonpayable",
|
|
256
|
+
type: "function",
|
|
257
|
+
},
|
|
230
258
|
{
|
|
231
259
|
inputs: [
|
|
232
260
|
{
|
|
@@ -85,7 +85,7 @@ const _abi = [
|
|
|
85
85
|
] as const;
|
|
86
86
|
|
|
87
87
|
const _bytecode =
|
|
88
|
-
"
|
|
88
|
+
"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220ba40e90465d602694ba4c2b290567818bd933d8093f793ecb815b2d77ba6794064736f6c634300080d0033";
|
|
89
89
|
|
|
90
90
|
type StoreCoreConstructorParams =
|
|
91
91
|
| [signer?: Signer]
|
|
@@ -15,7 +15,7 @@ const _abi = [
|
|
|
15
15
|
] as const;
|
|
16
16
|
|
|
17
17
|
const _bytecode =
|
|
18
|
-
"
|
|
18
|
+
"0x60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205fb602472e10da980f2473bb8cd3ffd5bb3fd9c7652eeae228f8a3f00648175564736f6c634300080d0033";
|
|
19
19
|
|
|
20
20
|
type StoreSwitchConstructorParams =
|
|
21
21
|
| [signer?: Signer]
|
|
@@ -36,6 +36,7 @@ export interface IStoreInterface extends utils.Interface {
|
|
|
36
36
|
"getRecord(bytes32,bytes32[])": FunctionFragment;
|
|
37
37
|
"getSchema(bytes32)": FunctionFragment;
|
|
38
38
|
"isStore()": FunctionFragment;
|
|
39
|
+
"popFromField(bytes32,bytes32[],uint8,uint256)": FunctionFragment;
|
|
39
40
|
"pushToField(bytes32,bytes32[],uint8,bytes)": FunctionFragment;
|
|
40
41
|
"registerSchema(bytes32,bytes32,bytes32)": FunctionFragment;
|
|
41
42
|
"registerStoreHook(bytes32,address)": FunctionFragment;
|
|
@@ -54,6 +55,7 @@ export interface IStoreInterface extends utils.Interface {
|
|
|
54
55
|
| "getRecord(bytes32,bytes32[])"
|
|
55
56
|
| "getSchema"
|
|
56
57
|
| "isStore"
|
|
58
|
+
| "popFromField"
|
|
57
59
|
| "pushToField"
|
|
58
60
|
| "registerSchema"
|
|
59
61
|
| "registerStoreHook"
|
|
@@ -96,6 +98,15 @@ export interface IStoreInterface extends utils.Interface {
|
|
|
96
98
|
values: [PromiseOrValue<BytesLike>]
|
|
97
99
|
): string;
|
|
98
100
|
encodeFunctionData(functionFragment: "isStore", values?: undefined): string;
|
|
101
|
+
encodeFunctionData(
|
|
102
|
+
functionFragment: "popFromField",
|
|
103
|
+
values: [
|
|
104
|
+
PromiseOrValue<BytesLike>,
|
|
105
|
+
PromiseOrValue<BytesLike>[],
|
|
106
|
+
PromiseOrValue<BigNumberish>,
|
|
107
|
+
PromiseOrValue<BigNumberish>
|
|
108
|
+
]
|
|
109
|
+
): string;
|
|
99
110
|
encodeFunctionData(
|
|
100
111
|
functionFragment: "pushToField",
|
|
101
112
|
values: [
|
|
@@ -172,6 +183,10 @@ export interface IStoreInterface extends utils.Interface {
|
|
|
172
183
|
): Result;
|
|
173
184
|
decodeFunctionResult(functionFragment: "getSchema", data: BytesLike): Result;
|
|
174
185
|
decodeFunctionResult(functionFragment: "isStore", data: BytesLike): Result;
|
|
186
|
+
decodeFunctionResult(
|
|
187
|
+
functionFragment: "popFromField",
|
|
188
|
+
data: BytesLike
|
|
189
|
+
): Result;
|
|
175
190
|
decodeFunctionResult(
|
|
176
191
|
functionFragment: "pushToField",
|
|
177
192
|
data: BytesLike
|
|
@@ -308,6 +323,14 @@ export interface IStore extends BaseContract {
|
|
|
308
323
|
|
|
309
324
|
isStore(overrides?: CallOverrides): Promise<[void]>;
|
|
310
325
|
|
|
326
|
+
popFromField(
|
|
327
|
+
table: PromiseOrValue<BytesLike>,
|
|
328
|
+
key: PromiseOrValue<BytesLike>[],
|
|
329
|
+
schemaIndex: PromiseOrValue<BigNumberish>,
|
|
330
|
+
byteLengthToPop: PromiseOrValue<BigNumberish>,
|
|
331
|
+
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
|
332
|
+
): Promise<ContractTransaction>;
|
|
333
|
+
|
|
311
334
|
pushToField(
|
|
312
335
|
table: PromiseOrValue<BytesLike>,
|
|
313
336
|
key: PromiseOrValue<BytesLike>[],
|
|
@@ -399,6 +422,14 @@ export interface IStore extends BaseContract {
|
|
|
399
422
|
|
|
400
423
|
isStore(overrides?: CallOverrides): Promise<void>;
|
|
401
424
|
|
|
425
|
+
popFromField(
|
|
426
|
+
table: PromiseOrValue<BytesLike>,
|
|
427
|
+
key: PromiseOrValue<BytesLike>[],
|
|
428
|
+
schemaIndex: PromiseOrValue<BigNumberish>,
|
|
429
|
+
byteLengthToPop: PromiseOrValue<BigNumberish>,
|
|
430
|
+
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
|
431
|
+
): Promise<ContractTransaction>;
|
|
432
|
+
|
|
402
433
|
pushToField(
|
|
403
434
|
table: PromiseOrValue<BytesLike>,
|
|
404
435
|
key: PromiseOrValue<BytesLike>[],
|
|
@@ -490,6 +521,14 @@ export interface IStore extends BaseContract {
|
|
|
490
521
|
|
|
491
522
|
isStore(overrides?: CallOverrides): Promise<void>;
|
|
492
523
|
|
|
524
|
+
popFromField(
|
|
525
|
+
table: PromiseOrValue<BytesLike>,
|
|
526
|
+
key: PromiseOrValue<BytesLike>[],
|
|
527
|
+
schemaIndex: PromiseOrValue<BigNumberish>,
|
|
528
|
+
byteLengthToPop: PromiseOrValue<BigNumberish>,
|
|
529
|
+
overrides?: CallOverrides
|
|
530
|
+
): Promise<void>;
|
|
531
|
+
|
|
493
532
|
pushToField(
|
|
494
533
|
table: PromiseOrValue<BytesLike>,
|
|
495
534
|
key: PromiseOrValue<BytesLike>[],
|
|
@@ -614,6 +653,14 @@ export interface IStore extends BaseContract {
|
|
|
614
653
|
|
|
615
654
|
isStore(overrides?: CallOverrides): Promise<BigNumber>;
|
|
616
655
|
|
|
656
|
+
popFromField(
|
|
657
|
+
table: PromiseOrValue<BytesLike>,
|
|
658
|
+
key: PromiseOrValue<BytesLike>[],
|
|
659
|
+
schemaIndex: PromiseOrValue<BigNumberish>,
|
|
660
|
+
byteLengthToPop: PromiseOrValue<BigNumberish>,
|
|
661
|
+
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
|
662
|
+
): Promise<BigNumber>;
|
|
663
|
+
|
|
617
664
|
pushToField(
|
|
618
665
|
table: PromiseOrValue<BytesLike>,
|
|
619
666
|
key: PromiseOrValue<BytesLike>[],
|
|
@@ -706,6 +753,14 @@ export interface IStore extends BaseContract {
|
|
|
706
753
|
|
|
707
754
|
isStore(overrides?: CallOverrides): Promise<PopulatedTransaction>;
|
|
708
755
|
|
|
756
|
+
popFromField(
|
|
757
|
+
table: PromiseOrValue<BytesLike>,
|
|
758
|
+
key: PromiseOrValue<BytesLike>[],
|
|
759
|
+
schemaIndex: PromiseOrValue<BigNumberish>,
|
|
760
|
+
byteLengthToPop: PromiseOrValue<BigNumberish>,
|
|
761
|
+
overrides?: Overrides & { from?: PromiseOrValue<string> }
|
|
762
|
+
): Promise<PopulatedTransaction>;
|
|
763
|
+
|
|
709
764
|
pushToField(
|
|
710
765
|
table: PromiseOrValue<BytesLike>,
|
|
711
766
|
key: PromiseOrValue<BytesLike>[],
|