diff --git a/storage-contracts-abis/0g-storage-contracts-rev b/storage-contracts-abis/0g-storage-contracts-rev index e3fa64c2..a22de635 100644 --- a/storage-contracts-abis/0g-storage-contracts-rev +++ b/storage-contracts-abis/0g-storage-contracts-rev @@ -1 +1 @@ -2772838c13c041dcebcf586a982c4bc8a7f09359 +745c176bd206a37072281ec11aaf4f8ef6d4f6d3 diff --git a/storage-contracts-abis/ChunkLinearReward.json b/storage-contracts-abis/ChunkLinearReward.json index 922b4ebf..435ff700 100644 --- a/storage-contracts-abis/ChunkLinearReward.json +++ b/storage-contracts-abis/ChunkLinearReward.json @@ -14,6 +14,53 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "AddressInsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "FailedInnerCall", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, { "anonymous": false, "inputs": [ @@ -45,6 +92,19 @@ "name": "DistributeReward", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -133,19 +193,6 @@ "stateMutability": "view", "type": "function" }, - { - "inputs": [], - "name": "PARAMS_ADMIN_ROLE", - "outputs": [ - { - "internalType": "bytes32", - "name": "", - "type": "bytes32" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "baseReward", @@ -225,6 +272,19 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [], + "name": "foundationAdmin", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -340,6 +400,11 @@ "internalType": "address", "name": "mine_", "type": "address" + }, + { + "internalType": "address", + "name": "foundationAdmin_", + "type": "address" } ], "name": "initialize", @@ -347,19 +412,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "initialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "market", @@ -427,7 +479,7 @@ }, { "internalType": "address", - "name": "account", + "name": "callerConfirmation", "type": "address" } ], @@ -477,36 +529,43 @@ "inputs": [ { "internalType": "uint256", - "name": "", + "name": "id", "type": "uint256" } ], "name": "rewards", "outputs": [ { - "internalType": "uint128", - "name": "lockedReward", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "claimableReward", - "type": "uint128" - }, - { - "internalType": "uint128", - "name": "distributedReward", - "type": "uint128" - }, - { - "internalType": "uint40", - "name": "startTime", - "type": "uint40" - }, - { - "internalType": "uint40", - "name": "lastUpdate", - "type": "uint40" + "components": [ + { + "internalType": "uint128", + "name": "lockedReward", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "claimableReward", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "distributedReward", + "type": "uint128" + }, + { + "internalType": "uint40", + "name": "startTime", + "type": "uint40" + }, + { + "internalType": "uint40", + "name": "lastUpdate", + "type": "uint40" + } + ], + "internalType": "struct Reward", + "name": "", + "type": "tuple" } ], "stateMutability": "view", @@ -538,6 +597,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "address", + "name": "foundationAdmin_", + "type": "address" + } + ], + "name": "setFoundationAdmin", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -623,8 +695,8 @@ "type": "function" } ], - "bytecode": "0x60a060405234801561001057600080fd5b5060405161283038038061283083398101604081905261002f91610037565b608052610050565b60006020828403121561004957600080fd5b5051919050565b6080516127b0610080600039600081816102c4015281816107ac0152818161162c015261171001526127b06000f3fe608060405260043610620001f35760003560e01c80639010d07c116200010b578063b7a3c04c11620000a1578063e2982c21116200006c578063e2982c2114620005e0578063ed88c68e1462000605578063f0f44260146200060f578063f301af42146200063457600080fd5b8063b7a3c04c1462000559578063c0575111146200057e578063ca15c8731462000596578063d547741f14620005bb57600080fd5b80639b1d309111620000e25780639b1d309114620004bf578063a217fddf14620004e4578063b15d20da14620004fb578063b3b30c1a146200052057600080fd5b80639010d07c146200045357806391d14854146200047857806399f4b251146200049d57600080fd5b806331b3eb94116200018d57806361d027b3116200015857806361d027b314620003c657806376ad03bc14620004015780637f1b5e43146200041957806380f55605146200043157600080fd5b806331b3eb94146200034057806336568abe1462000365578063485cc955146200038a57806359e9670014620003af57600080fd5b8063158ef93e11620001ce578063158ef93e146200028d5780632129593114620002b0578063248a9ca314620002e65780632f2ff15d146200031b57600080fd5b806301ffc9a714620001f85780630373a23a14620002325780630a539a191462000259575b600080fd5b3480156200020557600080fd5b506200021d6200021736600462001d78565b620006e0565b60405190151581526020015b60405180910390f35b3480156200023f57600080fd5b50620002576200025136600462001da4565b6200070e565b005b3480156200026657600080fd5b506200027e6200027836600462001da4565b6200072f565b60405190815260200162000229565b3480156200029a57600080fd5b506000546200021d90600160a01b900460ff1681565b348015620002bd57600080fd5b506200027e7f000000000000000000000000000000000000000000000000000000000000000081565b348015620002f357600080fd5b506200027e6200030536600462001da4565b6000908152600160208190526040909120015490565b3480156200032857600080fd5b50620002576200033a36600462001dd4565b620007ea565b3480156200034d57600080fd5b50620002576200035f36600462001e07565b62000819565b3480156200037257600080fd5b50620002576200038436600462001dd4565b6200087d565b3480156200039757600080fd5b5062000257620003a936600462001e27565b62000903565b62000257620003c036600462001e5a565b62000a2c565b348015620003d357600080fd5b50600954620003e8906001600160a01b031681565b6040516001600160a01b03909116815260200162000229565b3480156200040e57600080fd5b506200027e60075481565b3480156200042657600080fd5b506200027e60065481565b3480156200043e57600080fd5b50600354620003e8906001600160a01b031681565b3480156200046057600080fd5b50620003e86200047236600462001e5a565b62000e9d565b3480156200048557600080fd5b506200021d6200049736600462001dd4565b62000eb7565b348015620004aa57600080fd5b50600454620003e8906001600160a01b031681565b348015620004cc57600080fd5b5062000257620004de36600462001da4565b62000ee2565b348015620004f157600080fd5b506200027e600081565b3480156200050857600080fd5b506200027e6000805160206200275b83398151915281565b3480156200052d57600080fd5b506200053862000f03565b6040805167ffffffffffffffff909316835260208301919091520162000229565b3480156200056657600080fd5b50620002576200057836600462001e7d565b62000fc9565b3480156200058b57600080fd5b506200027e60085481565b348015620005a357600080fd5b506200027e620005b536600462001da4565b620011f8565b348015620005c857600080fd5b5062000257620005da36600462001dd4565b62001211565b348015620005ed57600080fd5b506200027e620005ff36600462001e07565b6200123b565b62000257620012ad565b3480156200061c57600080fd5b50620002576200062e36600462001e07565b620012c8565b3480156200064157600080fd5b506200069d6200065336600462001da4565b600560205260009081526040902080546001909101546001600160801b0380831692600160801b908190048216929182169164ffffffffff918104821691600160a81b9091041685565b604080516001600160801b0396871681529486166020860152929094169183019190915264ffffffffff9081166060830152909116608082015260a00162000229565b60006001600160e01b03198216635a05180f60e01b1480620007085750620007088262001306565b92915050565b6000805160206200275b83398151915262000729816200133d565b50600755565b6000818152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff908304811660608301819052600160a81b909304166080820152908203620007aa5750600092915050565b7f0000000000000000000000000000000000000000000000000000000000000000816060015164ffffffffff16620007e3919062001ece565b9392505050565b6000828152600160208190526040909120015462000808816200133d565b6200081483836200134c565b505050565b6000546040516351cff8d960e01b81526001600160a01b038381166004830152909116906351cff8d990602401600060405180830381600087803b1580156200086157600080fd5b505af115801562000876573d6000803e3d6000fd5b5050505050565b6001600160a01b0381163314620008f35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b620008ff828262001372565b5050565b600054600160a01b900460ff16156200096b5760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401620008ea565b6000805460ff60a01b1916600160a01b17815562000991906200098b3390565b6200134c565b620009ac6000805160206200275b833981519152336200134c565b600380546001600160a01b038085166001600160a01b0319928316179092556004805492841692909116919091179055604051620009ea9062001d6a565b604051809103906000f08015801562000a07573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b03929092169190911790555050565b6003546001600160a01b0316336001600160a01b03161462000a915760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620008ea565b60006127106008543462000aa6919062001ee4565b62000ab2919062001f1c565b9050801562000ad35760095462000ad3906001600160a01b03168262001398565b600062000ae1823462001f33565b90508260008161010062000af86104008062001ee4565b62000b069061040062001ee4565b62000b1390600862001ee4565b62000b1f919062001f1c565b62000b2b908562001ee4565b62000b37919062001f1c565b9050600062000b47838862001ece565b9050600061010062000b5c6104008062001ee4565b62000b6a9061040062001ee4565b62000b7790600862001ee4565b62000b83919062001f1c565b62000b8f908962001f49565b61010062000ba06104008062001ee4565b62000bae9061040062001ee4565b62000bbb90600862001ee4565b62000bc7919062001f1c565b62000bd3919062001f33565b90506000600161010062000bea6104008062001ee4565b62000bf89061040062001ee4565b62000c0590600862001ee4565b62000c11919062001f1c565b62000c1d848c62001ece565b62000c29919062001f1c565b62000c35919062001f33565b9050600061010062000c4a6104008062001ee4565b62000c589061040062001ee4565b62000c6590600862001ee4565b62000c71919062001f1c565b62000c7e60018662001f33565b62000c8a919062001f49565b62000c9790600162001ece565b9050600061010062000cac6104008062001ee4565b62000cba9061040062001ee4565b62000cc790600862001ee4565b62000cd3919062001f1c565b62000cdf838762001f33565b62000ceb919062001f1c565b9050600061010062000d006104008062001ee4565b62000d0e9061040062001ee4565b62000d1b90600862001ee4565b62000d27919062001f1c565b62000d3483600162001ece565b62000d40919062001ee4565b8614905081840362000d6d57600084815260056020526040902062000d67908a83620014b7565b62000e8f565b62000dd861010062000d826104008062001ee4565b62000d909061040062001ee4565b62000d9d90600862001ee4565b62000da9919062001f1c565b62000db5878a62001ee4565b62000dc1919062001f1c565b6000868152600560205260409020906001620014b7565b600062000de785600162001ece565b90505b8281101562000e2457600081815260056020526040902062000e0f90896001620014b7565b8062000e1b8162001f60565b91505062000dea565b5062000e8f61010062000e3a6104008062001ee4565b62000e489061040062001ee4565b62000e5590600862001ee4565b62000e61919062001f1c565b62000e6d858a62001ee4565b62000e79919062001f1c565b60008481526005602052604090209083620014b7565b505050505050505050505050565b6000828152600260205260408120620007e39083620015f2565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206200275b83398151915262000efd816200133d565b50600855565b600080806104005b62000f208167ffffffffffffffff1662001600565b1562000f3e5790508062000f3660028262001f7c565b905062000f0b565b8067ffffffffffffffff168267ffffffffffffffff16101562000fc0576000600262000f6b848462001faf565b62000f77919062001fd3565b62000f83908462001ffd565b905062000f9a8167ffffffffffffffff1662001600565b1562000fb55762000fad81600162001ffd565b925062000fb9565b8091505b5062000f3e565b50924292509050565b6004546001600160a01b0316336001600160a01b0316146200102e5760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620008ea565b6000838152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff90830481166060830152600160a81b909204909116608082015290620010a48262001623565b9050620010b2828262001651565b6000620010bf83620016a4565b60008781526005602090815260408083208751928801516001600160801b03938416600160801b9185168202178255918801516001909101805460608a015160808b0151939095166001600160a81b03199091161764ffffffffff9485169093029290921764ffffffffff60a81b1916600160a81b9390911692909202919091179055909150620011528785846200170b565b90506000816006541162001169576006546200116b565b815b905062001179818462001ece565b925080600660008282546200118f919062001f33565b90915550508215620011ee57620011a7878462001762565b85876001600160a01b0316897ff099de0c527342bff1397d08daae31c3de66104f48886094fbe9126a21ebf4b086604051620011e591815260200190565b60405180910390a45b5050505050505050565b60008181526002602052604081206200070890620017c9565b600082815260016020819052604090912001546200122f816200133d565b62000814838362001372565b600080546040516371d4ed8d60e11b81526001600160a01b0384811660048301529091169063e3a9db1a90602401602060405180830381865afa15801562001287573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000708919062002021565b3460066000828254620012c1919062001ece565b9091555050565b6000805160206200275b833981519152620012e3816200133d565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216637965db0b60e01b14806200070857506301ffc9a760e01b6001600160e01b031983161462000708565b620013498133620017d4565b50565b62001358828262001838565b6000828152600260205260409020620008149082620018a6565b6200137e8282620018bd565b600082815260026020526040902062000814908262001927565b80471015620013ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401620008ea565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462001439576040519150601f19603f3d011682016040523d82523d6000602084013e6200143e565b606091505b5050905080620008145760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401620008ea565b6001600160801b03821115620015025760405162461bcd60e51b815260206004820152600f60248201526e526577617264206f766572666c6f7760881b6044820152606401620008ea565b6001830154600160801b900464ffffffffff1615620015645760405162461bcd60e51b815260206004820181905260248201527f526577617264206974656d20686173206265656e20696e697469616c697a65646044820152606401620008ea565b825482908490600090620015839084906001600160801b03166200203b565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550801562000814575050600101805469ffffffffffffffffffff60801b1916600160801b4264ffffffffff1690810264ffffffffff60a81b191691909117600160a81b91909102179055565b6000620007e383836200193e565b6000806200160e836200072f565b90508015801590620007e35750421192915050565b600062000708827f00000000000000000000000000000000000000000000000000000000000000006200196b565b80826000018181516200166591906200205e565b6001600160801b0316905250602082018051829190620016879083906200203b565b6001600160801b03169052505064ffffffffff4216608090910152565b60008060028360200151620016ba919062002081565b90508083602001818151620016d091906200205e565b6001600160801b0316905250604083018051829190620016f29083906200203b565b6001600160801b03908116909152919091169392505050565b6000427f0000000000000000000000000000000000000000000000000000000000000000846060015164ffffffffff1662001747919062001ece565b1115620017585750600754620007e3565b5060009392505050565b60005460405163f340fa0160e01b81526001600160a01b0384811660048301529091169063f340fa019083906024016000604051808303818588803b158015620017ab57600080fd5b505af1158015620017c0573d6000803e3d6000fd5b50505050505050565b600062000708825490565b620017e0828262000eb7565b620008ff57620017f08162001a40565b620017fd83602062001a53565b60405160200162001810929190620020c4565b60408051601f198184030181529082905262461bcd60e51b8252620008ea916004016200213d565b62001844828262000eb7565b620008ff5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000620007e3836001600160a01b03841662001c0d565b620018c9828262000eb7565b15620008ff5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000620007e3836001600160a01b03841662001c5f565b600082600001828154811062001958576200195862002172565b9060005260206000200154905092915050565b6000826080015164ffffffffff166000036200198a5750600062000708565b600083604001518460200151620019a291906200203b565b6001600160801b0316905060008185600001516001600160801b0316620019ca919062001ece565b90506000856060015164ffffffffff1642620019e7919062001f33565b9050600085620019f8838562001ee4565b62001a04919062001f1c565b90508281111562001a125750815b8381101562001a2957600094505050505062000708565b62001a35848262001f33565b979650505050505050565b6060620007086001600160a01b03831660145b6060600062001a6483600262001ee4565b62001a7190600262001ece565b67ffffffffffffffff81111562001a8c5762001a8c62002188565b6040519080825280601f01601f19166020018201604052801562001ab7576020820181803683370190505b509050600360fc1b8160008151811062001ad55762001ad562002172565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062001b075762001b0762002172565b60200101906001600160f81b031916908160001a905350600062001b2d84600262001ee4565b62001b3a90600162001ece565b90505b600181111562001bbc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062001b725762001b7262002172565b1a60f81b82828151811062001b8b5762001b8b62002172565b60200101906001600160f81b031916908160001a90535060049490941c9362001bb4816200219e565b905062001b3d565b508315620007e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620008ea565b600081815260018301602052604081205462001c565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000708565b50600062000708565b6000818152600183016020526040812054801562001d5857600062001c8660018362001f33565b855490915060009062001c9c9060019062001f33565b905081811462001d0857600086600001828154811062001cc05762001cc062002172565b906000526020600020015490508087600001848154811062001ce65762001ce662002172565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062001d1c5762001d1c620021b8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000708565b600091505062000708565b5092915050565b61058c80620021cf83390190565b60006020828403121562001d8b57600080fd5b81356001600160e01b031981168114620007e357600080fd5b60006020828403121562001db757600080fd5b5035919050565b6001600160a01b03811681146200134957600080fd5b6000806040838503121562001de857600080fd5b82359150602083013562001dfc8162001dbe565b809150509250929050565b60006020828403121562001e1a57600080fd5b8135620007e38162001dbe565b6000806040838503121562001e3b57600080fd5b823562001e488162001dbe565b9150602083013562001dfc8162001dbe565b6000806040838503121562001e6e57600080fd5b50508035926020909101359150565b60008060006060848603121562001e9357600080fd5b83359250602084013562001ea78162001dbe565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000708576200070862001eb8565b600081600019048311821515161562001f015762001f0162001eb8565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262001f2e5762001f2e62001f06565b500490565b8181038181111562000708576200070862001eb8565b60008262001f5b5762001f5b62001f06565b500690565b60006001820162001f755762001f7562001eb8565b5060010190565b600067ffffffffffffffff8083168185168183048111821515161562001fa65762001fa662001eb8565b02949350505050565b67ffffffffffffffff82811682821603908082111562001d635762001d6362001eb8565b600067ffffffffffffffff8084168062001ff15762001ff162001f06565b92169190910492915050565b67ffffffffffffffff81811683821601908082111562001d635762001d6362001eb8565b6000602082840312156200203457600080fd5b5051919050565b6001600160801b0381811683821601908082111562001d635762001d6362001eb8565b6001600160801b0382811682821603908082111562001d635762001d6362001eb8565b60006001600160801b038084168062001ff15762001ff162001f06565b60005b83811015620020bb578181015183820152602001620020a1565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620020fe8160178501602088016200209e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351620021318160288401602088016200209e565b01602801949350505050565b60208152600082518060208401526200215e8160408501602087016200209e565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600081620021b057620021b062001eb8565b506000190190565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050e8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b808201808211156104d257634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220e52cf2b51f0a8d14b10d6c445edb47884f6fbd6d5fbaed7572ef106f818cf48064736f6c63430008100033b9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a26469706673582212201e9be16811569c74c4fa39ff7de9abd31c5407f8d2984261b17a40e4799f962764736f6c63430008100033", - "deployedBytecode": "0x608060405260043610620001f35760003560e01c80639010d07c116200010b578063b7a3c04c11620000a1578063e2982c21116200006c578063e2982c2114620005e0578063ed88c68e1462000605578063f0f44260146200060f578063f301af42146200063457600080fd5b8063b7a3c04c1462000559578063c0575111146200057e578063ca15c8731462000596578063d547741f14620005bb57600080fd5b80639b1d309111620000e25780639b1d309114620004bf578063a217fddf14620004e4578063b15d20da14620004fb578063b3b30c1a146200052057600080fd5b80639010d07c146200045357806391d14854146200047857806399f4b251146200049d57600080fd5b806331b3eb94116200018d57806361d027b3116200015857806361d027b314620003c657806376ad03bc14620004015780637f1b5e43146200041957806380f55605146200043157600080fd5b806331b3eb94146200034057806336568abe1462000365578063485cc955146200038a57806359e9670014620003af57600080fd5b8063158ef93e11620001ce578063158ef93e146200028d5780632129593114620002b0578063248a9ca314620002e65780632f2ff15d146200031b57600080fd5b806301ffc9a714620001f85780630373a23a14620002325780630a539a191462000259575b600080fd5b3480156200020557600080fd5b506200021d6200021736600462001d78565b620006e0565b60405190151581526020015b60405180910390f35b3480156200023f57600080fd5b50620002576200025136600462001da4565b6200070e565b005b3480156200026657600080fd5b506200027e6200027836600462001da4565b6200072f565b60405190815260200162000229565b3480156200029a57600080fd5b506000546200021d90600160a01b900460ff1681565b348015620002bd57600080fd5b506200027e7f000000000000000000000000000000000000000000000000000000000000000081565b348015620002f357600080fd5b506200027e6200030536600462001da4565b6000908152600160208190526040909120015490565b3480156200032857600080fd5b50620002576200033a36600462001dd4565b620007ea565b3480156200034d57600080fd5b50620002576200035f36600462001e07565b62000819565b3480156200037257600080fd5b50620002576200038436600462001dd4565b6200087d565b3480156200039757600080fd5b5062000257620003a936600462001e27565b62000903565b62000257620003c036600462001e5a565b62000a2c565b348015620003d357600080fd5b50600954620003e8906001600160a01b031681565b6040516001600160a01b03909116815260200162000229565b3480156200040e57600080fd5b506200027e60075481565b3480156200042657600080fd5b506200027e60065481565b3480156200043e57600080fd5b50600354620003e8906001600160a01b031681565b3480156200046057600080fd5b50620003e86200047236600462001e5a565b62000e9d565b3480156200048557600080fd5b506200021d6200049736600462001dd4565b62000eb7565b348015620004aa57600080fd5b50600454620003e8906001600160a01b031681565b348015620004cc57600080fd5b5062000257620004de36600462001da4565b62000ee2565b348015620004f157600080fd5b506200027e600081565b3480156200050857600080fd5b506200027e6000805160206200275b83398151915281565b3480156200052d57600080fd5b506200053862000f03565b6040805167ffffffffffffffff909316835260208301919091520162000229565b3480156200056657600080fd5b50620002576200057836600462001e7d565b62000fc9565b3480156200058b57600080fd5b506200027e60085481565b348015620005a357600080fd5b506200027e620005b536600462001da4565b620011f8565b348015620005c857600080fd5b5062000257620005da36600462001dd4565b62001211565b348015620005ed57600080fd5b506200027e620005ff36600462001e07565b6200123b565b62000257620012ad565b3480156200061c57600080fd5b50620002576200062e36600462001e07565b620012c8565b3480156200064157600080fd5b506200069d6200065336600462001da4565b600560205260009081526040902080546001909101546001600160801b0380831692600160801b908190048216929182169164ffffffffff918104821691600160a81b9091041685565b604080516001600160801b0396871681529486166020860152929094169183019190915264ffffffffff9081166060830152909116608082015260a00162000229565b60006001600160e01b03198216635a05180f60e01b1480620007085750620007088262001306565b92915050565b6000805160206200275b83398151915262000729816200133d565b50600755565b6000818152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff908304811660608301819052600160a81b909304166080820152908203620007aa5750600092915050565b7f0000000000000000000000000000000000000000000000000000000000000000816060015164ffffffffff16620007e3919062001ece565b9392505050565b6000828152600160208190526040909120015462000808816200133d565b6200081483836200134c565b505050565b6000546040516351cff8d960e01b81526001600160a01b038381166004830152909116906351cff8d990602401600060405180830381600087803b1580156200086157600080fd5b505af115801562000876573d6000803e3d6000fd5b5050505050565b6001600160a01b0381163314620008f35760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b620008ff828262001372565b5050565b600054600160a01b900460ff16156200096b5760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401620008ea565b6000805460ff60a01b1916600160a01b17815562000991906200098b3390565b6200134c565b620009ac6000805160206200275b833981519152336200134c565b600380546001600160a01b038085166001600160a01b0319928316179092556004805492841692909116919091179055604051620009ea9062001d6a565b604051809103906000f08015801562000a07573d6000803e3d6000fd5b50600080546001600160a01b0319166001600160a01b03929092169190911790555050565b6003546001600160a01b0316336001600160a01b03161462000a915760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620008ea565b60006127106008543462000aa6919062001ee4565b62000ab2919062001f1c565b9050801562000ad35760095462000ad3906001600160a01b03168262001398565b600062000ae1823462001f33565b90508260008161010062000af86104008062001ee4565b62000b069061040062001ee4565b62000b1390600862001ee4565b62000b1f919062001f1c565b62000b2b908562001ee4565b62000b37919062001f1c565b9050600062000b47838862001ece565b9050600061010062000b5c6104008062001ee4565b62000b6a9061040062001ee4565b62000b7790600862001ee4565b62000b83919062001f1c565b62000b8f908962001f49565b61010062000ba06104008062001ee4565b62000bae9061040062001ee4565b62000bbb90600862001ee4565b62000bc7919062001f1c565b62000bd3919062001f33565b90506000600161010062000bea6104008062001ee4565b62000bf89061040062001ee4565b62000c0590600862001ee4565b62000c11919062001f1c565b62000c1d848c62001ece565b62000c29919062001f1c565b62000c35919062001f33565b9050600061010062000c4a6104008062001ee4565b62000c589061040062001ee4565b62000c6590600862001ee4565b62000c71919062001f1c565b62000c7e60018662001f33565b62000c8a919062001f49565b62000c9790600162001ece565b9050600061010062000cac6104008062001ee4565b62000cba9061040062001ee4565b62000cc790600862001ee4565b62000cd3919062001f1c565b62000cdf838762001f33565b62000ceb919062001f1c565b9050600061010062000d006104008062001ee4565b62000d0e9061040062001ee4565b62000d1b90600862001ee4565b62000d27919062001f1c565b62000d3483600162001ece565b62000d40919062001ee4565b8614905081840362000d6d57600084815260056020526040902062000d67908a83620014b7565b62000e8f565b62000dd861010062000d826104008062001ee4565b62000d909061040062001ee4565b62000d9d90600862001ee4565b62000da9919062001f1c565b62000db5878a62001ee4565b62000dc1919062001f1c565b6000868152600560205260409020906001620014b7565b600062000de785600162001ece565b90505b8281101562000e2457600081815260056020526040902062000e0f90896001620014b7565b8062000e1b8162001f60565b91505062000dea565b5062000e8f61010062000e3a6104008062001ee4565b62000e489061040062001ee4565b62000e5590600862001ee4565b62000e61919062001f1c565b62000e6d858a62001ee4565b62000e79919062001f1c565b60008481526005602052604090209083620014b7565b505050505050505050505050565b6000828152600260205260408120620007e39083620015f2565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000805160206200275b83398151915262000efd816200133d565b50600855565b600080806104005b62000f208167ffffffffffffffff1662001600565b1562000f3e5790508062000f3660028262001f7c565b905062000f0b565b8067ffffffffffffffff168267ffffffffffffffff16101562000fc0576000600262000f6b848462001faf565b62000f77919062001fd3565b62000f83908462001ffd565b905062000f9a8167ffffffffffffffff1662001600565b1562000fb55762000fad81600162001ffd565b925062000fb9565b8091505b5062000f3e565b50924292509050565b6004546001600160a01b0316336001600160a01b0316146200102e5760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620008ea565b6000838152600560209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff90830481166060830152600160a81b909204909116608082015290620010a48262001623565b9050620010b2828262001651565b6000620010bf83620016a4565b60008781526005602090815260408083208751928801516001600160801b03938416600160801b9185168202178255918801516001909101805460608a015160808b0151939095166001600160a81b03199091161764ffffffffff9485169093029290921764ffffffffff60a81b1916600160a81b9390911692909202919091179055909150620011528785846200170b565b90506000816006541162001169576006546200116b565b815b905062001179818462001ece565b925080600660008282546200118f919062001f33565b90915550508215620011ee57620011a7878462001762565b85876001600160a01b0316897ff099de0c527342bff1397d08daae31c3de66104f48886094fbe9126a21ebf4b086604051620011e591815260200190565b60405180910390a45b5050505050505050565b60008181526002602052604081206200070890620017c9565b600082815260016020819052604090912001546200122f816200133d565b62000814838362001372565b600080546040516371d4ed8d60e11b81526001600160a01b0384811660048301529091169063e3a9db1a90602401602060405180830381865afa15801562001287573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000708919062002021565b3460066000828254620012c1919062001ece565b9091555050565b6000805160206200275b833981519152620012e3816200133d565b50600980546001600160a01b0319166001600160a01b0392909216919091179055565b60006001600160e01b03198216637965db0b60e01b14806200070857506301ffc9a760e01b6001600160e01b031983161462000708565b620013498133620017d4565b50565b62001358828262001838565b6000828152600260205260409020620008149082620018a6565b6200137e8282620018bd565b600082815260026020526040902062000814908262001927565b80471015620013ea5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401620008ea565b6000826001600160a01b03168260405160006040518083038185875af1925050503d806000811462001439576040519150601f19603f3d011682016040523d82523d6000602084013e6200143e565b606091505b5050905080620008145760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401620008ea565b6001600160801b03821115620015025760405162461bcd60e51b815260206004820152600f60248201526e526577617264206f766572666c6f7760881b6044820152606401620008ea565b6001830154600160801b900464ffffffffff1615620015645760405162461bcd60e51b815260206004820181905260248201527f526577617264206974656d20686173206265656e20696e697469616c697a65646044820152606401620008ea565b825482908490600090620015839084906001600160801b03166200203b565b92506101000a8154816001600160801b0302191690836001600160801b03160217905550801562000814575050600101805469ffffffffffffffffffff60801b1916600160801b4264ffffffffff1690810264ffffffffff60a81b191691909117600160a81b91909102179055565b6000620007e383836200193e565b6000806200160e836200072f565b90508015801590620007e35750421192915050565b600062000708827f00000000000000000000000000000000000000000000000000000000000000006200196b565b80826000018181516200166591906200205e565b6001600160801b0316905250602082018051829190620016879083906200203b565b6001600160801b03169052505064ffffffffff4216608090910152565b60008060028360200151620016ba919062002081565b90508083602001818151620016d091906200205e565b6001600160801b0316905250604083018051829190620016f29083906200203b565b6001600160801b03908116909152919091169392505050565b6000427f0000000000000000000000000000000000000000000000000000000000000000846060015164ffffffffff1662001747919062001ece565b1115620017585750600754620007e3565b5060009392505050565b60005460405163f340fa0160e01b81526001600160a01b0384811660048301529091169063f340fa019083906024016000604051808303818588803b158015620017ab57600080fd5b505af1158015620017c0573d6000803e3d6000fd5b50505050505050565b600062000708825490565b620017e0828262000eb7565b620008ff57620017f08162001a40565b620017fd83602062001a53565b60405160200162001810929190620020c4565b60408051601f198184030181529082905262461bcd60e51b8252620008ea916004016200213d565b62001844828262000eb7565b620008ff5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000620007e3836001600160a01b03841662001c0d565b620018c9828262000eb7565b15620008ff5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000620007e3836001600160a01b03841662001c5f565b600082600001828154811062001958576200195862002172565b9060005260206000200154905092915050565b6000826080015164ffffffffff166000036200198a5750600062000708565b600083604001518460200151620019a291906200203b565b6001600160801b0316905060008185600001516001600160801b0316620019ca919062001ece565b90506000856060015164ffffffffff1642620019e7919062001f33565b9050600085620019f8838562001ee4565b62001a04919062001f1c565b90508281111562001a125750815b8381101562001a2957600094505050505062000708565b62001a35848262001f33565b979650505050505050565b6060620007086001600160a01b03831660145b6060600062001a6483600262001ee4565b62001a7190600262001ece565b67ffffffffffffffff81111562001a8c5762001a8c62002188565b6040519080825280601f01601f19166020018201604052801562001ab7576020820181803683370190505b509050600360fc1b8160008151811062001ad55762001ad562002172565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062001b075762001b0762002172565b60200101906001600160f81b031916908160001a905350600062001b2d84600262001ee4565b62001b3a90600162001ece565b90505b600181111562001bbc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f166010811062001b725762001b7262002172565b1a60f81b82828151811062001b8b5762001b8b62002172565b60200101906001600160f81b031916908160001a90535060049490941c9362001bb4816200219e565b905062001b3d565b508315620007e35760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620008ea565b600081815260018301602052604081205462001c565750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000708565b50600062000708565b6000818152600183016020526040812054801562001d5857600062001c8660018362001f33565b855490915060009062001c9c9060019062001f33565b905081811462001d0857600086600001828154811062001cc05762001cc062002172565b906000526020600020015490508087600001848154811062001ce65762001ce662002172565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062001d1c5762001d1c620021b8565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000708565b600091505062000708565b5092915050565b61058c80620021cf83390190565b60006020828403121562001d8b57600080fd5b81356001600160e01b031981168114620007e357600080fd5b60006020828403121562001db757600080fd5b5035919050565b6001600160a01b03811681146200134957600080fd5b6000806040838503121562001de857600080fd5b82359150602083013562001dfc8162001dbe565b809150509250929050565b60006020828403121562001e1a57600080fd5b8135620007e38162001dbe565b6000806040838503121562001e3b57600080fd5b823562001e488162001dbe565b9150602083013562001dfc8162001dbe565b6000806040838503121562001e6e57600080fd5b50508035926020909101359150565b60008060006060848603121562001e9357600080fd5b83359250602084013562001ea78162001dbe565b929592945050506040919091013590565b634e487b7160e01b600052601160045260246000fd5b8082018082111562000708576200070862001eb8565b600081600019048311821515161562001f015762001f0162001eb8565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262001f2e5762001f2e62001f06565b500490565b8181038181111562000708576200070862001eb8565b60008262001f5b5762001f5b62001f06565b500690565b60006001820162001f755762001f7562001eb8565b5060010190565b600067ffffffffffffffff8083168185168183048111821515161562001fa65762001fa662001eb8565b02949350505050565b67ffffffffffffffff82811682821603908082111562001d635762001d6362001eb8565b600067ffffffffffffffff8084168062001ff15762001ff162001f06565b92169190910492915050565b67ffffffffffffffff81811683821601908082111562001d635762001d6362001eb8565b6000602082840312156200203457600080fd5b5051919050565b6001600160801b0381811683821601908082111562001d635762001d6362001eb8565b6001600160801b0382811682821603908082111562001d635762001d6362001eb8565b60006001600160801b038084168062001ff15762001ff162001f06565b60005b83811015620020bb578181015183820152602001620020a1565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351620020fe8160178501602088016200209e565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351620021318160288401602088016200209e565b01602801949350505050565b60208152600082518060208401526200215e8160408501602087016200209e565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600081620021b057620021b062001eb8565b506000190190565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5061001a3361001f565b61006f565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b61050e8061007e6000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a61007536600461048d565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d936600461048d565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d36600461048d565b6101c0565b61007a61013036600461048d565b61023e565b61013d6102b0565b6001600160a01b0381166000818152600160205260408120805491905590610165908261030a565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b46102b0565b6101be6000610428565b565b6101c86102b0565b6001600160a01b0381166102325760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084015b60405180910390fd5b61023b81610428565b50565b6102466102b0565b6001600160a01b0381166000908152600160205260408120805434928392916102709084906104b1565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610229565b8047101561035a5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a20696e73756666696369656e742062616c616e63650000006044820152606401610229565b6000826001600160a01b03168260405160006040518083038185875af1925050503d80600081146103a7576040519150601f19603f3d011682016040523d82523d6000602084013e6103ac565b606091505b50509050806104235760405162461bcd60e51b815260206004820152603a60248201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260448201527f6563697069656e74206d617920686176652072657665727465640000000000006064820152608401610229565b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461023b57600080fd5b60006020828403121561049f57600080fd5b81356104aa81610478565b9392505050565b808201808211156104d257634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220e52cf2b51f0a8d14b10d6c445edb47884f6fbd6d5fbaed7572ef106f818cf48064736f6c63430008100033b9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a26469706673582212201e9be16811569c74c4fa39ff7de9abd31c5407f8d2984261b17a40e4799f962764736f6c63430008100033", + "bytecode": "0x60a060405234801561001057600080fd5b5060405161289038038061289083398101604081905261002f91610037565b608052610050565b60006020828403121561004957600080fd5b5051919050565b608051612810610080600039600081816102a10152818161073501528181611880015261199901526128106000f3fe608060405260043610620001f35760003560e01c80639010d07c116200010b578063c057511111620000a1578063e2982c21116200006c578063e2982c2114620005a7578063ed88c68e14620005cc578063f0f4426014620005d6578063f301af4214620005fb57600080fd5b8063c05751111462000520578063c0c53b8b1462000538578063ca15c873146200055d578063d547741f146200058257600080fd5b80639b1d309111620000e25780639b1d30911462000486578063a217fddf14620004ab578063b3b30c1a14620004c2578063b7a3c04c14620004fb57600080fd5b80639010d07c146200042457806391d14854146200044957806399f4b251146200046e57600080fd5b80633591d79e116200018d57806376ad03bc116200015857806376ad03bc14620003c45780637859f68914620003dc5780637f1b5e4314620003f457806380f55605146200040c57600080fd5b80633591d79e146200033257806336568abe146200035757806359e96700146200037c57806361d027b3146200039357600080fd5b80632129593111620001ce57806321295931146200028d578063248a9ca314620002c35780632f2ff15d14620002e857806331b3eb94146200030d57600080fd5b806301ffc9a714620001f85780630373a23a14620002325780630a539a191462000259575b600080fd5b3480156200020557600080fd5b506200021d6200021736600462001f1e565b62000678565b60405190151581526020015b60405180910390f35b3480156200023f57600080fd5b50620002576200025136600462001f4a565b620006a6565b005b3480156200026657600080fd5b506200027e6200027836600462001f4a565b62000706565b60405190815260200162000229565b3480156200029a57600080fd5b506200027e7f000000000000000000000000000000000000000000000000000000000000000081565b348015620002d057600080fd5b506200027e620002e236600462001f4a565b62000773565b348015620002f557600080fd5b50620002576200030736600462001f7a565b62000796565b3480156200031a57600080fd5b50620002576200032c36600462001fad565b620007be565b3480156200033f57600080fd5b50620002576200035136600462001fad565b62000836565b3480156200036457600080fd5b50620002576200037636600462001f7a565b620008a8565b620002576200038d36600462001fcd565b620008e3565b348015620003a057600080fd5b50620003ab62000d6f565b6040516001600160a01b03909116815260200162000229565b348015620003d157600080fd5b506200027e62000d8d565b348015620003e957600080fd5b50620003ab62000da2565b3480156200040157600080fd5b506200027e62000dc0565b3480156200041957600080fd5b50620003ab62000dd5565b3480156200043157600080fd5b50620003ab6200044336600462001fcd565b62000df0565b3480156200045657600080fd5b506200021d6200046836600462001f7a565b62000e22565b3480156200047b57600080fd5b50620003ab62000e5b565b3480156200049357600080fd5b5062000257620004a536600462001f4a565b62000e79565b348015620004b857600080fd5b506200027e600081565b348015620004cf57600080fd5b50620004da62000ed0565b6040805167ffffffffffffffff909316835260208301919091520162000229565b3480156200050857600080fd5b50620002576200051a36600462001ff0565b62000f96565b3480156200052d57600080fd5b506200027e620011e1565b3480156200054557600080fd5b5062000257620005573660046200202b565b620011f6565b3480156200056a57600080fd5b506200027e6200057c36600462001f4a565b62001367565b3480156200058f57600080fd5b5062000257620005a136600462001f7a565b62001390565b348015620005b457600080fd5b506200027e620005c636600462001fad565b620013b2565b6200025762001437565b348015620005e357600080fd5b5062000257620005f536600462001fad565b62001463565b3480156200060857600080fd5b50620006206200061a36600462001f4a565b620014d5565b6040805182516001600160801b03908116825260208085015182169083015283830151169181019190915260608083015164ffffffffff90811691830191909152608092830151169181019190915260a00162000229565b60006001600160e01b03198216635a05180f60e01b1480620006a05750620006a08262001578565b92915050565b620006b0620015af565b600701546001600160a01b0316336001600160a01b031614620006f05760405162461bcd60e51b8152600401620006e7906200207d565b60405180910390fd5b6000620006fc620015af565b6004019190915550565b6000806200071483620014d5565b9050806060015164ffffffffff16600003620007335750600092915050565b7f0000000000000000000000000000000000000000000000000000000000000000816060015164ffffffffff166200076c9190620020c1565b9392505050565b6000908152600080516020620027bb833981519152602052604090206001015490565b620007a18262000773565b620007ac81620015d3565b620007b88383620015e2565b50505050565b60006000805160206200277b83398151915280546040516351cff8d960e01b81526001600160a01b0385811660048301529293509116906351cff8d990602401600060405180830381600087803b1580156200081957600080fd5b505af11580156200082e573d6000803e3d6000fd5b505050505050565b62000840620015af565b600701546001600160a01b0316336001600160a01b031614620008775760405162461bcd60e51b8152600401620006e7906200207d565b600062000883620015af565b60070180546001600160a01b0319166001600160a01b03939093169290921790915550565b6001600160a01b0381163314620008d25760405163334bd91960e11b815260040160405180910390fd5b620008de82826200162d565b505050565b6000620008ef620015af565b80549091506001600160a01b0316336001600160a01b031614620009565760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620006e7565b60006127108260050154346200096d9190620020d7565b62000979919062002107565b905080156200099c5760068201546200099c906001600160a01b0316826200166f565b6000620009aa82346200211e565b905083600081610100620009c161040080620020d7565b620009cf90610400620020d7565b620009dc906008620020d7565b620009e8919062002107565b620009f49085620020d7565b62000a00919062002107565b9050600062000a108389620020c1565b9050600061010062000a2561040080620020d7565b62000a3390610400620020d7565b62000a40906008620020d7565b62000a4c919062002107565b62000a58908a62002134565b61010062000a6961040080620020d7565b62000a7790610400620020d7565b62000a84906008620020d7565b62000a90919062002107565b62000a9c91906200211e565b90506000600161010062000ab361040080620020d7565b62000ac190610400620020d7565b62000ace906008620020d7565b62000ada919062002107565b62000ae6848d620020c1565b62000af2919062002107565b62000afe91906200211e565b9050600061010062000b1361040080620020d7565b62000b2190610400620020d7565b62000b2e906008620020d7565b62000b3a919062002107565b62000b476001866200211e565b62000b53919062002134565b62000b60906001620020c1565b9050600061010062000b7561040080620020d7565b62000b8390610400620020d7565b62000b90906008620020d7565b62000b9c919062002107565b62000ba883876200211e565b62000bb4919062002107565b9050600061010062000bc961040080620020d7565b62000bd790610400620020d7565b62000be4906008620020d7565b62000bf0919062002107565b62000bfd836001620020c1565b62000c099190620020d7565b8614905081840362000c3857600084815260028c016020526040902062000c32908a836200170b565b62000d60565b62000ca561010062000c4d61040080620020d7565b62000c5b90610400620020d7565b62000c68906008620020d7565b62000c74919062002107565b62000c80878a620020d7565b62000c8c919062002107565b600086815260028e01602052604090209060016200170b565b600062000cb4856001620020c1565b90505b8281101562000cf357600081815260028d016020526040902062000cde908960016200170b565b8062000cea816200214b565b91505062000cb7565b5062000d6061010062000d0961040080620020d7565b62000d1790610400620020d7565b62000d24906008620020d7565b62000d30919062002107565b62000d3c858a620020d7565b62000d48919062002107565b600084815260028e016020526040902090836200170b565b50505050505050505050505050565b600062000d7b620015af565b600601546001600160a01b0316919050565b600062000d99620015af565b60040154905090565b600062000dae620015af565b600701546001600160a01b0316919050565b600062000dcc620015af565b60030154905090565b600062000de1620015af565b546001600160a01b0316919050565b60008281526000805160206200279b83398151915260208190526040822062000e1a908462001846565b949350505050565b6000918252600080516020620027bb833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600062000e67620015af565b600101546001600160a01b0316919050565b62000e83620015af565b600701546001600160a01b0316336001600160a01b03161462000eba5760405162461bcd60e51b8152600401620006e7906200207d565b600062000ec6620015af565b6005019190915550565b600080806104005b62000eed8167ffffffffffffffff1662001854565b1562000f0b5790508062000f0360028262002167565b905062000ed8565b8067ffffffffffffffff168267ffffffffffffffff16101562000f8d576000600262000f38848462002196565b62000f449190620021ba565b62000f509084620021e4565b905062000f678167ffffffffffffffff1662001854565b1562000f825762000f7a816001620021e4565b925062000f86565b8091505b5062000f0b565b50924292509050565b600062000fa2620015af565b60018101549091506001600160a01b0316336001600160a01b0316146200100c5760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620006e7565b60008481526002820160209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff90830481166060830152600160a81b909204909116608082015290620010848262001877565b9050620010928282620018a5565b60006200109f83620018f8565b600088815260028601602090815260408083208751928801516001600160801b03938416600160801b9185168202178255918801516001909101805460608a015160808b0151939095166001600160a81b03199091161764ffffffffff9485169093029290921764ffffffffff60a81b1916600160a81b9390911692909202919091179055909150620011348885846200197c565b90506000818660030154116200114f57856003015462001151565b815b90506200115f8184620020c1565b9250808660030160008282546200117791906200211e565b90915550508215620011d6576200118f8884620019f4565b86886001600160a01b03168a7ff099de0c527342bff1397d08daae31c3de66104f48886094fbe9126a21ebf4b086604051620011cd91815260200190565b60405180910390a45b505050505050505050565b6000620011ed620015af565b60050154905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156200123d5750825b905060008267ffffffffffffffff1660011480156200125b5750303b155b9050811580156200126a575080155b15620012895760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620012b457845460ff60401b1916600160401b1785555b6000620012c0620015af565b9050620012cf600033620015e2565b5080546001600160a01b03808b166001600160a01b03199283161783556001830180548b8316908416179055600783018054918a16919092161790556200131562001a65565b5083156200135d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008181526000805160206200279b8339815191526020819052604082206200076c9062001ac9565b6200139b8262000773565b620013a681620015d3565b620007b883836200162d565b6000806000805160206200277b83398151915280546040516371d4ed8d60e11b81526001600160a01b03868116600483015292935091169063e3a9db1a90602401602060405180830381865afa15801562001411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076c919062002208565b600062001443620015af565b9050348160030160008282546200145b9190620020c1565b909155505050565b6200146d620015af565b600701546001600160a01b0316336001600160a01b031614620014a45760405162461bcd60e51b8152600401620006e7906200207d565b6000620014b0620015af565b60060180546001600160a01b0319166001600160a01b03939093169290921790915550565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526200150a620015af565b60009283526002016020908152604092839020835160a08101855281546001600160801b038082168352600160801b918290048116948301949094526001909201549283169481019490945264ffffffffff90820481166060850152600160a81b9091041660808301525090565b60006001600160e01b03198216637965db0b60e01b1480620006a057506301ffc9a760e01b6001600160e01b0319831614620006a0565b7f5c8dfb41bf775ed78439bdc545dd2d846bd8da274c69de26cd754e645898d80090565b620015df813362001ad4565b50565b60006000805160206200279b8339815191528162001601858562001b15565b9050801562000e1a57600085815260208390526040902062001624908562001bc8565b50949350505050565b60006000805160206200279b833981519152816200164c858562001bdf565b9050801562000e1a57600085815260208390526040902062001624908562001c60565b80471015620016945760405163cd78605960e01b8152306004820152602401620006e7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114620016e3576040519150601f19603f3d011682016040523d82523d6000602084013e620016e8565b606091505b5050905080620008de57604051630a12f52160e11b815260040160405180910390fd5b6001600160801b03821115620017565760405162461bcd60e51b815260206004820152600f60248201526e526577617264206f766572666c6f7760881b6044820152606401620006e7565b6001830154600160801b900464ffffffffff1615620017b85760405162461bcd60e51b815260206004820181905260248201527f526577617264206974656d20686173206265656e20696e697469616c697a65646044820152606401620006e7565b825482908490600090620017d79084906001600160801b031662002222565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508015620008de575050600101805469ffffffffffffffffffff60801b1916600160801b4264ffffffffff1690810264ffffffffff60a81b191691909117600160a81b91909102179055565b60006200076c838362001c77565b600080620018628362000706565b905080158015906200076c5750421192915050565b6000620006a0827f000000000000000000000000000000000000000000000000000000000000000062001ca4565b8082600001818151620018b9919062002245565b6001600160801b0316905250602082018051829190620018db90839062002222565b6001600160801b03169052505064ffffffffff4216608090910152565b6000816060015164ffffffffff166000036200191657506000919050565b6000600283602001516200192b919062002268565b9050808360200181815162001941919062002245565b6001600160801b03169052506040830180518291906200196390839062002222565b6001600160801b03908116909152919091169392505050565b6000826060015164ffffffffff16600014158015620019d25750427f0000000000000000000000000000000000000000000000000000000000000000846060015164ffffffffff16620019d09190620020c1565b115b15620019ea57620019e262000d8d565b90506200076c565b5060009392505050565b60006000805160206200277b833981519152805460405163f340fa0160e01b81526001600160a01b03868116600483015292935091169063f340fa019084906024016000604051808303818588803b15801562001a5057600080fd5b505af11580156200135d573d6000803e3d6000fd5b62001a6f62001d79565b6040516000805160206200277b8339815191529062001a8e9062001f10565b604051809103906000f08015801562001aab573d6000803e3d6000fd5b5081546001600160a01b0319166001600160a01b0391909116179055565b6000620006a0825490565b62001ae0828262000e22565b62001b115760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620006e7565b5050565b6000600080516020620027bb83398151915262001b33848462000e22565b62001bb6576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001b6b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620006a0565b6000915050620006a0565b5092915050565b60006200076c836001600160a01b03841662001dc5565b6000600080516020620027bb83398151915262001bfd848462000e22565b1562001bb6576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620006a0565b60006200076c836001600160a01b03841662001e17565b600082600001828154811062001c915762001c9162002285565b9060005260206000200154905092915050565b6000826060015164ffffffffff1660000362001cc357506000620006a0565b60008360400151846020015162001cdb919062002222565b6001600160801b0316905060008185600001516001600160801b031662001d039190620020c1565b90506000856060015164ffffffffff164262001d2091906200211e565b905060008562001d318385620020d7565b62001d3d919062002107565b90508281111562001d4b5750815b8381101562001d62576000945050505050620006a0565b62001d6e84826200211e565b979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1662001dc357604051631afcd79f60e31b815260040160405180910390fd5b565b600081815260018301602052604081205462001e0e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620006a0565b506000620006a0565b6000818152600183016020526040812054801562001bb657600062001e3e6001836200211e565b855490915060009062001e54906001906200211e565b905080821462001ec057600086600001828154811062001e785762001e7862002285565b906000526020600020015490508087600001848154811062001e9e5762001e9e62002285565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062001ed45762001ed46200229b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620006a0565b6104c980620022b283390190565b60006020828403121562001f3157600080fd5b81356001600160e01b0319811681146200076c57600080fd5b60006020828403121562001f5d57600080fd5b5035919050565b6001600160a01b0381168114620015df57600080fd5b6000806040838503121562001f8e57600080fd5b82359150602083013562001fa28162001f64565b809150509250929050565b60006020828403121562001fc057600080fd5b81356200076c8162001f64565b6000806040838503121562001fe157600080fd5b50508035926020909101359150565b6000806000606084860312156200200657600080fd5b8335925060208401356200201a8162001f64565b929592945050506040919091013590565b6000806000606084860312156200204157600080fd5b83356200204e8162001f64565b92506020840135620020608162001f64565b91506040840135620020728162001f64565b809150509250925092565b6020808252601490820152732737ba103337bab73230ba34b7b71030b236b4b760611b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115620006a057620006a0620020ab565b8082028115828204841417620006a057620006a0620020ab565b634e487b7160e01b600052601260045260246000fd5b600082620021195762002119620020f1565b500490565b81810381811115620006a057620006a0620020ab565b600082620021465762002146620020f1565b500690565b600060018201620021605762002160620020ab565b5060010190565b67ffffffffffffffff8181168382160280821691908281146200218e576200218e620020ab565b505092915050565b67ffffffffffffffff82811682821603908082111562001bc15762001bc1620020ab565b600067ffffffffffffffff80841680620021d857620021d8620020f1565b92169190910492915050565b67ffffffffffffffff81811683821601908082111562001bc15762001bc1620020ab565b6000602082840312156200221b57600080fd5b5051919050565b6001600160801b0381811683821601908082111562001bc15762001bc1620020ab565b6001600160801b0382811682821603908082111562001bc15762001bc1620020ab565b60006001600160801b0380841680620021d857620021d8620020f1565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610424806100a56000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a6100753660046103a3565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d93660046103a3565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d3660046103a3565b6101c0565b61007a6101303660046103a3565b610203565b61013d610275565b6001600160a01b038116600081815260016020526040812080549190559061016590826102a2565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b4610275565b6101be600061033e565b565b6101c8610275565b6001600160a01b0381166101f757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6102008161033e565b50565b61020b610275565b6001600160a01b0381166000908152600160205260408120805434928392916102359084906103c7565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405163118cdaa760e01b81523360048201526024016101ee565b804710156102c55760405163cd78605960e01b81523060048201526024016101ee565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610312576040519150601f19603f3d011682016040523d82523d6000602084013e610317565b606091505b505090508061033957604051630a12f52160e11b815260040160405180910390fd5b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461020057600080fd5b6000602082840312156103b557600080fd5b81356103c08161038e565b9392505050565b808201808211156103e857634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220917731ad085b8079c41950f8191dd8ea661a4483c90bc8e214e864c003bf6d5e64736f6c6343000814003318886ccf3cb33ec4f8e31fd4f09d61266d4695ceab87fb3d39636905b707c100c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122084b2cec1d0b972b978f33a46aa41e10db5e04eca31377e20a4bac085c16a9d9564736f6c63430008140033", + "deployedBytecode": "0x608060405260043610620001f35760003560e01c80639010d07c116200010b578063c057511111620000a1578063e2982c21116200006c578063e2982c2114620005a7578063ed88c68e14620005cc578063f0f4426014620005d6578063f301af4214620005fb57600080fd5b8063c05751111462000520578063c0c53b8b1462000538578063ca15c873146200055d578063d547741f146200058257600080fd5b80639b1d309111620000e25780639b1d30911462000486578063a217fddf14620004ab578063b3b30c1a14620004c2578063b7a3c04c14620004fb57600080fd5b80639010d07c146200042457806391d14854146200044957806399f4b251146200046e57600080fd5b80633591d79e116200018d57806376ad03bc116200015857806376ad03bc14620003c45780637859f68914620003dc5780637f1b5e4314620003f457806380f55605146200040c57600080fd5b80633591d79e146200033257806336568abe146200035757806359e96700146200037c57806361d027b3146200039357600080fd5b80632129593111620001ce57806321295931146200028d578063248a9ca314620002c35780632f2ff15d14620002e857806331b3eb94146200030d57600080fd5b806301ffc9a714620001f85780630373a23a14620002325780630a539a191462000259575b600080fd5b3480156200020557600080fd5b506200021d6200021736600462001f1e565b62000678565b60405190151581526020015b60405180910390f35b3480156200023f57600080fd5b50620002576200025136600462001f4a565b620006a6565b005b3480156200026657600080fd5b506200027e6200027836600462001f4a565b62000706565b60405190815260200162000229565b3480156200029a57600080fd5b506200027e7f000000000000000000000000000000000000000000000000000000000000000081565b348015620002d057600080fd5b506200027e620002e236600462001f4a565b62000773565b348015620002f557600080fd5b50620002576200030736600462001f7a565b62000796565b3480156200031a57600080fd5b50620002576200032c36600462001fad565b620007be565b3480156200033f57600080fd5b50620002576200035136600462001fad565b62000836565b3480156200036457600080fd5b50620002576200037636600462001f7a565b620008a8565b620002576200038d36600462001fcd565b620008e3565b348015620003a057600080fd5b50620003ab62000d6f565b6040516001600160a01b03909116815260200162000229565b348015620003d157600080fd5b506200027e62000d8d565b348015620003e957600080fd5b50620003ab62000da2565b3480156200040157600080fd5b506200027e62000dc0565b3480156200041957600080fd5b50620003ab62000dd5565b3480156200043157600080fd5b50620003ab6200044336600462001fcd565b62000df0565b3480156200045657600080fd5b506200021d6200046836600462001f7a565b62000e22565b3480156200047b57600080fd5b50620003ab62000e5b565b3480156200049357600080fd5b5062000257620004a536600462001f4a565b62000e79565b348015620004b857600080fd5b506200027e600081565b348015620004cf57600080fd5b50620004da62000ed0565b6040805167ffffffffffffffff909316835260208301919091520162000229565b3480156200050857600080fd5b50620002576200051a36600462001ff0565b62000f96565b3480156200052d57600080fd5b506200027e620011e1565b3480156200054557600080fd5b5062000257620005573660046200202b565b620011f6565b3480156200056a57600080fd5b506200027e6200057c36600462001f4a565b62001367565b3480156200058f57600080fd5b5062000257620005a136600462001f7a565b62001390565b348015620005b457600080fd5b506200027e620005c636600462001fad565b620013b2565b6200025762001437565b348015620005e357600080fd5b5062000257620005f536600462001fad565b62001463565b3480156200060857600080fd5b50620006206200061a36600462001f4a565b620014d5565b6040805182516001600160801b03908116825260208085015182169083015283830151169181019190915260608083015164ffffffffff90811691830191909152608092830151169181019190915260a00162000229565b60006001600160e01b03198216635a05180f60e01b1480620006a05750620006a08262001578565b92915050565b620006b0620015af565b600701546001600160a01b0316336001600160a01b031614620006f05760405162461bcd60e51b8152600401620006e7906200207d565b60405180910390fd5b6000620006fc620015af565b6004019190915550565b6000806200071483620014d5565b9050806060015164ffffffffff16600003620007335750600092915050565b7f0000000000000000000000000000000000000000000000000000000000000000816060015164ffffffffff166200076c9190620020c1565b9392505050565b6000908152600080516020620027bb833981519152602052604090206001015490565b620007a18262000773565b620007ac81620015d3565b620007b88383620015e2565b50505050565b60006000805160206200277b83398151915280546040516351cff8d960e01b81526001600160a01b0385811660048301529293509116906351cff8d990602401600060405180830381600087803b1580156200081957600080fd5b505af11580156200082e573d6000803e3d6000fd5b505050505050565b62000840620015af565b600701546001600160a01b0316336001600160a01b031614620008775760405162461bcd60e51b8152600401620006e7906200207d565b600062000883620015af565b60070180546001600160a01b0319166001600160a01b03939093169290921790915550565b6001600160a01b0381163314620008d25760405163334bd91960e11b815260040160405180910390fd5b620008de82826200162d565b505050565b6000620008ef620015af565b80549091506001600160a01b0316336001600160a01b031614620009565760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620006e7565b60006127108260050154346200096d9190620020d7565b62000979919062002107565b905080156200099c5760068201546200099c906001600160a01b0316826200166f565b6000620009aa82346200211e565b905083600081610100620009c161040080620020d7565b620009cf90610400620020d7565b620009dc906008620020d7565b620009e8919062002107565b620009f49085620020d7565b62000a00919062002107565b9050600062000a108389620020c1565b9050600061010062000a2561040080620020d7565b62000a3390610400620020d7565b62000a40906008620020d7565b62000a4c919062002107565b62000a58908a62002134565b61010062000a6961040080620020d7565b62000a7790610400620020d7565b62000a84906008620020d7565b62000a90919062002107565b62000a9c91906200211e565b90506000600161010062000ab361040080620020d7565b62000ac190610400620020d7565b62000ace906008620020d7565b62000ada919062002107565b62000ae6848d620020c1565b62000af2919062002107565b62000afe91906200211e565b9050600061010062000b1361040080620020d7565b62000b2190610400620020d7565b62000b2e906008620020d7565b62000b3a919062002107565b62000b476001866200211e565b62000b53919062002134565b62000b60906001620020c1565b9050600061010062000b7561040080620020d7565b62000b8390610400620020d7565b62000b90906008620020d7565b62000b9c919062002107565b62000ba883876200211e565b62000bb4919062002107565b9050600061010062000bc961040080620020d7565b62000bd790610400620020d7565b62000be4906008620020d7565b62000bf0919062002107565b62000bfd836001620020c1565b62000c099190620020d7565b8614905081840362000c3857600084815260028c016020526040902062000c32908a836200170b565b62000d60565b62000ca561010062000c4d61040080620020d7565b62000c5b90610400620020d7565b62000c68906008620020d7565b62000c74919062002107565b62000c80878a620020d7565b62000c8c919062002107565b600086815260028e01602052604090209060016200170b565b600062000cb4856001620020c1565b90505b8281101562000cf357600081815260028d016020526040902062000cde908960016200170b565b8062000cea816200214b565b91505062000cb7565b5062000d6061010062000d0961040080620020d7565b62000d1790610400620020d7565b62000d24906008620020d7565b62000d30919062002107565b62000d3c858a620020d7565b62000d48919062002107565b600084815260028e016020526040902090836200170b565b50505050505050505050505050565b600062000d7b620015af565b600601546001600160a01b0316919050565b600062000d99620015af565b60040154905090565b600062000dae620015af565b600701546001600160a01b0316919050565b600062000dcc620015af565b60030154905090565b600062000de1620015af565b546001600160a01b0316919050565b60008281526000805160206200279b83398151915260208190526040822062000e1a908462001846565b949350505050565b6000918252600080516020620027bb833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600062000e67620015af565b600101546001600160a01b0316919050565b62000e83620015af565b600701546001600160a01b0316336001600160a01b03161462000eba5760405162461bcd60e51b8152600401620006e7906200207d565b600062000ec6620015af565b6005019190915550565b600080806104005b62000eed8167ffffffffffffffff1662001854565b1562000f0b5790508062000f0360028262002167565b905062000ed8565b8067ffffffffffffffff168267ffffffffffffffff16101562000f8d576000600262000f38848462002196565b62000f449190620021ba565b62000f509084620021e4565b905062000f678167ffffffffffffffff1662001854565b1562000f825762000f7a816001620021e4565b925062000f86565b8091505b5062000f0b565b50924292509050565b600062000fa2620015af565b60018101549091506001600160a01b0316336001600160a01b0316146200100c5760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401620006e7565b60008481526002820160209081526040808320815160a08101835281546001600160801b038082168352600160801b918290048116958301959095526001909201549384169281019290925264ffffffffff90830481166060830152600160a81b909204909116608082015290620010848262001877565b9050620010928282620018a5565b60006200109f83620018f8565b600088815260028601602090815260408083208751928801516001600160801b03938416600160801b9185168202178255918801516001909101805460608a015160808b0151939095166001600160a81b03199091161764ffffffffff9485169093029290921764ffffffffff60a81b1916600160a81b9390911692909202919091179055909150620011348885846200197c565b90506000818660030154116200114f57856003015462001151565b815b90506200115f8184620020c1565b9250808660030160008282546200117791906200211e565b90915550508215620011d6576200118f8884620019f4565b86886001600160a01b03168a7ff099de0c527342bff1397d08daae31c3de66104f48886094fbe9126a21ebf4b086604051620011cd91815260200190565b60405180910390a45b505050505050505050565b6000620011ed620015af565b60050154905090565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156200123d5750825b905060008267ffffffffffffffff1660011480156200125b5750303b155b9050811580156200126a575080155b15620012895760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315620012b457845460ff60401b1916600160401b1785555b6000620012c0620015af565b9050620012cf600033620015e2565b5080546001600160a01b03808b166001600160a01b03199283161783556001830180548b8316908416179055600783018054918a16919092161790556200131562001a65565b5083156200135d57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b60008181526000805160206200279b8339815191526020819052604082206200076c9062001ac9565b6200139b8262000773565b620013a681620015d3565b620007b883836200162d565b6000806000805160206200277b83398151915280546040516371d4ed8d60e11b81526001600160a01b03868116600483015292935091169063e3a9db1a90602401602060405180830381865afa15801562001411573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200076c919062002208565b600062001443620015af565b9050348160030160008282546200145b9190620020c1565b909155505050565b6200146d620015af565b600701546001600160a01b0316336001600160a01b031614620014a45760405162461bcd60e51b8152600401620006e7906200207d565b6000620014b0620015af565b60060180546001600160a01b0319166001600160a01b03939093169290921790915550565b6040805160a0810182526000808252602082018190529181018290526060810182905260808101919091526200150a620015af565b60009283526002016020908152604092839020835160a08101855281546001600160801b038082168352600160801b918290048116948301949094526001909201549283169481019490945264ffffffffff90820481166060850152600160a81b9091041660808301525090565b60006001600160e01b03198216637965db0b60e01b1480620006a057506301ffc9a760e01b6001600160e01b0319831614620006a0565b7f5c8dfb41bf775ed78439bdc545dd2d846bd8da274c69de26cd754e645898d80090565b620015df813362001ad4565b50565b60006000805160206200279b8339815191528162001601858562001b15565b9050801562000e1a57600085815260208390526040902062001624908562001bc8565b50949350505050565b60006000805160206200279b833981519152816200164c858562001bdf565b9050801562000e1a57600085815260208390526040902062001624908562001c60565b80471015620016945760405163cd78605960e01b8152306004820152602401620006e7565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114620016e3576040519150601f19603f3d011682016040523d82523d6000602084013e620016e8565b606091505b5050905080620008de57604051630a12f52160e11b815260040160405180910390fd5b6001600160801b03821115620017565760405162461bcd60e51b815260206004820152600f60248201526e526577617264206f766572666c6f7760881b6044820152606401620006e7565b6001830154600160801b900464ffffffffff1615620017b85760405162461bcd60e51b815260206004820181905260248201527f526577617264206974656d20686173206265656e20696e697469616c697a65646044820152606401620006e7565b825482908490600090620017d79084906001600160801b031662002222565b92506101000a8154816001600160801b0302191690836001600160801b031602179055508015620008de575050600101805469ffffffffffffffffffff60801b1916600160801b4264ffffffffff1690810264ffffffffff60a81b191691909117600160a81b91909102179055565b60006200076c838362001c77565b600080620018628362000706565b905080158015906200076c5750421192915050565b6000620006a0827f000000000000000000000000000000000000000000000000000000000000000062001ca4565b8082600001818151620018b9919062002245565b6001600160801b0316905250602082018051829190620018db90839062002222565b6001600160801b03169052505064ffffffffff4216608090910152565b6000816060015164ffffffffff166000036200191657506000919050565b6000600283602001516200192b919062002268565b9050808360200181815162001941919062002245565b6001600160801b03169052506040830180518291906200196390839062002222565b6001600160801b03908116909152919091169392505050565b6000826060015164ffffffffff16600014158015620019d25750427f0000000000000000000000000000000000000000000000000000000000000000846060015164ffffffffff16620019d09190620020c1565b115b15620019ea57620019e262000d8d565b90506200076c565b5060009392505050565b60006000805160206200277b833981519152805460405163f340fa0160e01b81526001600160a01b03868116600483015292935091169063f340fa019084906024016000604051808303818588803b15801562001a5057600080fd5b505af11580156200135d573d6000803e3d6000fd5b62001a6f62001d79565b6040516000805160206200277b8339815191529062001a8e9062001f10565b604051809103906000f08015801562001aab573d6000803e3d6000fd5b5081546001600160a01b0319166001600160a01b0391909116179055565b6000620006a0825490565b62001ae0828262000e22565b62001b115760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620006e7565b5050565b6000600080516020620027bb83398151915262001b33848462000e22565b62001bb6576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905562001b6b3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620006a0565b6000915050620006a0565b5092915050565b60006200076c836001600160a01b03841662001dc5565b6000600080516020620027bb83398151915262001bfd848462000e22565b1562001bb6576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620006a0565b60006200076c836001600160a01b03841662001e17565b600082600001828154811062001c915762001c9162002285565b9060005260206000200154905092915050565b6000826060015164ffffffffff1660000362001cc357506000620006a0565b60008360400151846020015162001cdb919062002222565b6001600160801b0316905060008185600001516001600160801b031662001d039190620020c1565b90506000856060015164ffffffffff164262001d2091906200211e565b905060008562001d318385620020d7565b62001d3d919062002107565b90508281111562001d4b5750815b8381101562001d62576000945050505050620006a0565b62001d6e84826200211e565b979650505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1662001dc357604051631afcd79f60e31b815260040160405180910390fd5b565b600081815260018301602052604081205462001e0e57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620006a0565b506000620006a0565b6000818152600183016020526040812054801562001bb657600062001e3e6001836200211e565b855490915060009062001e54906001906200211e565b905080821462001ec057600086600001828154811062001e785762001e7862002285565b906000526020600020015490508087600001848154811062001e9e5762001e9e62002285565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062001ed45762001ed46200229b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620006a0565b6104c980620022b283390190565b60006020828403121562001f3157600080fd5b81356001600160e01b0319811681146200076c57600080fd5b60006020828403121562001f5d57600080fd5b5035919050565b6001600160a01b0381168114620015df57600080fd5b6000806040838503121562001f8e57600080fd5b82359150602083013562001fa28162001f64565b809150509250929050565b60006020828403121562001fc057600080fd5b81356200076c8162001f64565b6000806040838503121562001fe157600080fd5b50508035926020909101359150565b6000806000606084860312156200200657600080fd5b8335925060208401356200201a8162001f64565b929592945050506040919091013590565b6000806000606084860312156200204157600080fd5b83356200204e8162001f64565b92506020840135620020608162001f64565b91506040840135620020728162001f64565b809150509250925092565b6020808252601490820152732737ba103337bab73230ba34b7b71030b236b4b760611b604082015260600190565b634e487b7160e01b600052601160045260246000fd5b80820180821115620006a057620006a0620020ab565b8082028115828204841417620006a057620006a0620020ab565b634e487b7160e01b600052601260045260246000fd5b600082620021195762002119620020f1565b500490565b81810381811115620006a057620006a0620020ab565b600082620021465762002146620020f1565b500690565b600060018201620021605762002160620020ab565b5060010190565b67ffffffffffffffff8181168382160280821691908281146200218e576200218e620020ab565b505092915050565b67ffffffffffffffff82811682821603908082111562001bc15762001bc1620020ab565b600067ffffffffffffffff80841680620021d857620021d8620020f1565b92169190910492915050565b67ffffffffffffffff81811683821601908082111562001bc15762001bc1620020ab565b6000602082840312156200221b57600080fd5b5051919050565b6001600160801b0381811683821601908082111562001bc15762001bc1620020ab565b6001600160801b0382811682821603908082111562001bc15762001bc1620020ab565b60006001600160801b0380841680620021d857620021d8620020f1565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b50338061003757604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61004081610046565b50610096565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b610424806100a56000396000f3fe6080604052600436106100555760003560e01c806351cff8d91461005a578063715018a61461007c5780638da5cb5b14610091578063e3a9db1a146100be578063f2fde38b14610102578063f340fa0114610122575b600080fd5b34801561006657600080fd5b5061007a6100753660046103a3565b610135565b005b34801561008857600080fd5b5061007a6101ac565b34801561009d57600080fd5b506000546040516001600160a01b0390911681526020015b60405180910390f35b3480156100ca57600080fd5b506100f46100d93660046103a3565b6001600160a01b031660009081526001602052604090205490565b6040519081526020016100b5565b34801561010e57600080fd5b5061007a61011d3660046103a3565b6101c0565b61007a6101303660046103a3565b610203565b61013d610275565b6001600160a01b038116600081815260016020526040812080549190559061016590826102a2565b816001600160a01b03167f7084f5476618d8e60b11ef0d7d3f06914655adb8793e28ff7f018d4c76d505d5826040516101a091815260200190565b60405180910390a25050565b6101b4610275565b6101be600061033e565b565b6101c8610275565b6001600160a01b0381166101f757604051631e4fbdf760e01b8152600060048201526024015b60405180910390fd5b6102008161033e565b50565b61020b610275565b6001600160a01b0381166000908152600160205260408120805434928392916102359084906103c7565b90915550506040518181526001600160a01b038316907f2da466a7b24304f47e87fa2e1e5a81b9831ce54fec19055ce277ca2f39ba42c4906020016101a0565b6000546001600160a01b031633146101be5760405163118cdaa760e01b81523360048201526024016101ee565b804710156102c55760405163cd78605960e01b81523060048201526024016101ee565b6000826001600160a01b03168260405160006040518083038185875af1925050503d8060008114610312576040519150601f19603f3d011682016040523d82523d6000602084013e610317565b606091505b505090508061033957604051630a12f52160e11b815260040160405180910390fd5b505050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6001600160a01b038116811461020057600080fd5b6000602082840312156103b557600080fd5b81356103c08161038e565b9392505050565b808201808211156103e857634e487b7160e01b600052601160045260246000fd5b9291505056fea2646970667358221220917731ad085b8079c41950f8191dd8ea661a4483c90bc8e214e864c003bf6d5e64736f6c6343000814003318886ccf3cb33ec4f8e31fd4f09d61266d4695ceab87fb3d39636905b707c100c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122084b2cec1d0b972b978f33a46aa41e10db5e04eca31377e20a4bac085c16a9d9564736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/DummyMarket.json b/storage-contracts-abis/DummyMarket.json index 10b73bc2..f8746135 100644 --- a/storage-contracts-abis/DummyMarket.json +++ b/storage-contracts-abis/DummyMarket.json @@ -40,8 +40,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060be8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361ec5082146037578063da6eb36a14604b575b600080fd5b600060405190815260200160405180910390f35b605b6056366004605d565b505050565b005b600080600060608486031215607157600080fd5b50508135936020830135935060409092013591905056fea264697066735822122046b53f2984cbf5adf3e9850bdbd978b04bf2673faae23f82bb65f6ed17a8ca6164736f6c63430008100033", - "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806361ec5082146037578063da6eb36a14604b575b600080fd5b600060405190815260200160405180910390f35b605b6056366004605d565b505050565b005b600080600060608486031215607157600080fd5b50508135936020830135935060409092013591905056fea264697066735822122046b53f2984cbf5adf3e9850bdbd978b04bf2673faae23f82bb65f6ed17a8ca6164736f6c63430008100033", + "bytecode": "0x608060405234801561001057600080fd5b5060be8061001f6000396000f3fe6080604052348015600f57600080fd5b506004361060325760003560e01c806361ec5082146037578063da6eb36a14604b575b600080fd5b600060405190815260200160405180910390f35b605b6056366004605d565b505050565b005b600080600060608486031215607157600080fd5b50508135936020830135935060409092013591905056fea26469706673582212202ac95e591a25d23c5e4eaeb2b9d7e886f0b3ce6c65b07415a99af5c03ffdedb864736f6c63430008140033", + "deployedBytecode": "0x6080604052348015600f57600080fd5b506004361060325760003560e01c806361ec5082146037578063da6eb36a14604b575b600080fd5b600060405190815260200160405180910390f35b605b6056366004605d565b505050565b005b600080600060608486031215607157600080fd5b50508135936020830135935060409092013591905056fea26469706673582212202ac95e591a25d23c5e4eaeb2b9d7e886f0b3ce6c65b07415a99af5c03ffdedb864736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/DummyReward.json b/storage-contracts-abis/DummyReward.json index 3b286587..96b17145 100644 --- a/storage-contracts-abis/DummyReward.json +++ b/storage-contracts-abis/DummyReward.json @@ -76,8 +76,8 @@ "type": "function" } ], - "bytecode": "0x608060405234801561001057600080fd5b5060f18061001f6000396000f3fe60806040526004361060265760003560e01c806359e9670014602b578063b7a3c04c14603c575b600080fd5b603a60363660046058565b5050565b005b348015604757600080fd5b50603a60533660046079565b505050565b60008060408385031215606a57600080fd5b50508035926020909101359150565b600080600060608486031215608d57600080fd5b8335925060208401356001600160a01b038116811460aa57600080fd5b92959294505050604091909101359056fea264697066735822122007df1d2999303b3bd440ba3a542d4ba59318a16f2d33109615522c89b0f299dc64736f6c63430008100033", - "deployedBytecode": "0x60806040526004361060265760003560e01c806359e9670014602b578063b7a3c04c14603c575b600080fd5b603a60363660046058565b5050565b005b348015604757600080fd5b50603a60533660046079565b505050565b60008060408385031215606a57600080fd5b50508035926020909101359150565b600080600060608486031215608d57600080fd5b8335925060208401356001600160a01b038116811460aa57600080fd5b92959294505050604091909101359056fea264697066735822122007df1d2999303b3bd440ba3a542d4ba59318a16f2d33109615522c89b0f299dc64736f6c63430008100033", + "bytecode": "0x608060405234801561001057600080fd5b5060f18061001f6000396000f3fe60806040526004361060265760003560e01c806359e9670014602b578063b7a3c04c14603c575b600080fd5b603a60363660046058565b5050565b005b348015604757600080fd5b50603a60533660046079565b505050565b60008060408385031215606a57600080fd5b50508035926020909101359150565b600080600060608486031215608d57600080fd5b8335925060208401356001600160a01b038116811460aa57600080fd5b92959294505050604091909101359056fea26469706673582212206317458eb811bc208147160c27d88297eccdf6e3cb32885597a7d0b6cbe341e764736f6c63430008140033", + "deployedBytecode": "0x60806040526004361060265760003560e01c806359e9670014602b578063b7a3c04c14603c575b600080fd5b603a60363660046058565b5050565b005b348015604757600080fd5b50603a60533660046079565b505050565b60008060408385031215606a57600080fd5b50508035926020909101359150565b600080600060608486031215608d57600080fd5b8335925060208401356001600160a01b038116811460aa57600080fd5b92959294505050604091909101359056fea26469706673582212206317458eb811bc208147160c27d88297eccdf6e3cb32885597a7d0b6cbe341e764736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/FixedPrice.json b/storage-contracts-abis/FixedPrice.json index 0f3e1759..1dd953c3 100644 --- a/storage-contracts-abis/FixedPrice.json +++ b/storage-contracts-abis/FixedPrice.json @@ -3,6 +3,50 @@ "contractName": "FixedPrice", "sourceName": "contracts/market/FixedPrice.sol", "abi": [ + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -267,19 +311,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "initialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "pricePerSector", @@ -302,7 +333,7 @@ }, { "internalType": "address", - "name": "account", + "name": "callerConfirmation", "type": "address" } ], @@ -379,8 +410,8 @@ "type": "receive" } ], - "bytecode": "0x608060405234801561001057600080fd5b50610fca806100206000396000f3fe6080604052600436106101025760003560e01c806361ec508211610095578063b15d20da11610064578063b15d20da146102c1578063b4988fd0146102f5578063ca15c87314610315578063d547741f14610335578063da6eb36a1461035557600080fd5b806361ec5082146102565780639010d07c1461026c57806391d148541461028c578063a217fddf146102ac57600080fd5b8063248a9ca3116100d1578063248a9ca3146101b75780632f2ff15d146101f6578063343aad821461021657806336568abe1461023657600080fd5b806301ffc9a71461010e57806314aa90a114610143578063158ef93e14610165578063228cb7331461017f57600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012e610129366004610cdd565b610375565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061016361015e366004610d07565b6103a0565b005b34801561017157600080fd5b5060005461012e9060ff1681565b34801561018b57600080fd5b5060375461019f906001600160a01b031681565b6040516001600160a01b03909116815260200161013a565b3480156101c357600080fd5b506101e86101d2366004610d07565b6000908152600160208190526040909120015490565b60405190815260200161013a565b34801561020257600080fd5b50610163610211366004610d3c565b6103d0565b34801561022257600080fd5b5060365461019f906001600160a01b031681565b34801561024257600080fd5b50610163610251366004610d3c565b6103fb565b34801561026257600080fd5b506101e860355481565b34801561027857600080fd5b5061019f610287366004610d68565b61047e565b34801561029857600080fd5b5061012e6102a7366004610d3c565b61049d565b3480156102b857600080fd5b506101e8600081565b3480156102cd57600080fd5b506101e87fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e581565b34801561030157600080fd5b50610163610310366004610d8a565b6104c8565b34801561032157600080fd5b506101e8610330366004610d07565b6105a2565b34801561034157600080fd5b50610163610350366004610d3c565b6105b9565b34801561036157600080fd5b50610163610370366004610dc6565b6105df565b60006001600160e01b03198216635a05180f60e01b148061039a575061039a826107d2565b92915050565b7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e56103ca81610807565b50603555565b600082815260016020819052604090912001546103ec81610807565b6103f68383610814565b505050565b6001600160a01b03811633146104705760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61047a8282610836565b5050565b60008281526002602052604081206104969083610858565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60005460ff16156105275760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401610467565b6000805460ff191660011781556105449061053f3390565b610814565b61056e7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e533610814565b603592909255603680546001600160a01b039283166001600160a01b03199182161790915560378054929093169116179055565b600081815260026020526040812061039a90610864565b600082815260016020819052604090912001546105d581610807565b6103f68383610836565b6036546001600160a01b0316336001600160a01b0316146106425760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401610467565b600061064e8284610e08565b90506000836035546106609190610e1b565b9050478111156106a85760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820706169642066656560681b6044820152606401610467565b60006106b48247610e3a565b90506000836106c38685610e1b565b6106cd9190610e4d565b905060006106db8285610e3a565b9050851561074a576037546040516259e96760e81b8152600481018a9052602481018890526001600160a01b03909116906359e967009084906044016000604051808303818588803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b50505050505b6037546001600160a01b03166359e967006107658386610e08565b61076f898c610e08565b8a6040518463ffffffff1660e01b8152600401610796929190918252602082015260400190565b6000604051808303818588803b1580156107af57600080fd5b505af11580156107c3573d6000803e3d6000fd5b50505050505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061039a57506301ffc9a760e01b6001600160e01b031983161461039a565b610811813361086e565b50565b61081e82826108c7565b60008281526002602052604090206103f69082610932565b6108408282610947565b60008281526002602052604090206103f690826109ae565b600061049683836109c3565b600061039a825490565b610878828261049d565b61047a57610885816109ed565b6108908360206109ff565b6040516020016108a1929190610e93565b60408051601f198184030181529082905262461bcd60e51b825261046791600401610f08565b6108d1828261049d565b61047a5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610496836001600160a01b038416610b9b565b610951828261049d565b1561047a5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610496836001600160a01b038416610bea565b60008260000182815481106109da576109da610f3b565b9060005260206000200154905092915050565b606061039a6001600160a01b03831660145b60606000610a0e836002610e1b565b610a19906002610e08565b67ffffffffffffffff811115610a3157610a31610f51565b6040519080825280601f01601f191660200182016040528015610a5b576020820181803683370190505b509050600360fc1b81600081518110610a7657610a76610f3b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610aa557610aa5610f3b565b60200101906001600160f81b031916908160001a9053506000610ac9846002610e1b565b610ad4906001610e08565b90505b6001811115610b4c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610b0857610b08610f3b565b1a60f81b828281518110610b1e57610b1e610f3b565b60200101906001600160f81b031916908160001a90535060049490941c93610b4581610f67565b9050610ad7565b5083156104965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610467565b6000818152600183016020526040812054610be25750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561039a565b50600061039a565b60008181526001830160205260408120548015610cd3576000610c0e600183610e3a565b8554909150600090610c2290600190610e3a565b9050818114610c87576000866000018281548110610c4257610c42610f3b565b9060005260206000200154905080876000018481548110610c6557610c65610f3b565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610c9857610c98610f7e565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061039a565b600091505061039a565b600060208284031215610cef57600080fd5b81356001600160e01b03198116811461049657600080fd5b600060208284031215610d1957600080fd5b5035919050565b80356001600160a01b0381168114610d3757600080fd5b919050565b60008060408385031215610d4f57600080fd5b82359150610d5f60208401610d20565b90509250929050565b60008060408385031215610d7b57600080fd5b50508035926020909101359150565b600080600060608486031215610d9f57600080fd5b83359250610daf60208501610d20565b9150610dbd60408501610d20565b90509250925092565b600080600060608486031215610ddb57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039a5761039a610df2565b6000816000190483118215151615610e3557610e35610df2565b500290565b8181038181111561039a5761039a610df2565b600082610e6a57634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015610e8a578181015183820152602001610e72565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610ecb816017850160208801610e6f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610efc816028840160208801610e6f565b01602801949350505050565b6020815260008251806020840152610f27816040850160208701610e6f565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600081610f7657610f76610df2565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d8852ef0b0adee18f9691c5c5753ee63701f2232a2e537eb63063ba39522589e64736f6c63430008100033", - "deployedBytecode": "0x6080604052600436106101025760003560e01c806361ec508211610095578063b15d20da11610064578063b15d20da146102c1578063b4988fd0146102f5578063ca15c87314610315578063d547741f14610335578063da6eb36a1461035557600080fd5b806361ec5082146102565780639010d07c1461026c57806391d148541461028c578063a217fddf146102ac57600080fd5b8063248a9ca3116100d1578063248a9ca3146101b75780632f2ff15d146101f6578063343aad821461021657806336568abe1461023657600080fd5b806301ffc9a71461010e57806314aa90a114610143578063158ef93e14610165578063228cb7331461017f57600080fd5b3661010957005b600080fd5b34801561011a57600080fd5b5061012e610129366004610cdd565b610375565b60405190151581526020015b60405180910390f35b34801561014f57600080fd5b5061016361015e366004610d07565b6103a0565b005b34801561017157600080fd5b5060005461012e9060ff1681565b34801561018b57600080fd5b5060375461019f906001600160a01b031681565b6040516001600160a01b03909116815260200161013a565b3480156101c357600080fd5b506101e86101d2366004610d07565b6000908152600160208190526040909120015490565b60405190815260200161013a565b34801561020257600080fd5b50610163610211366004610d3c565b6103d0565b34801561022257600080fd5b5060365461019f906001600160a01b031681565b34801561024257600080fd5b50610163610251366004610d3c565b6103fb565b34801561026257600080fd5b506101e860355481565b34801561027857600080fd5b5061019f610287366004610d68565b61047e565b34801561029857600080fd5b5061012e6102a7366004610d3c565b61049d565b3480156102b857600080fd5b506101e8600081565b3480156102cd57600080fd5b506101e87fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e581565b34801561030157600080fd5b50610163610310366004610d8a565b6104c8565b34801561032157600080fd5b506101e8610330366004610d07565b6105a2565b34801561034157600080fd5b50610163610350366004610d3c565b6105b9565b34801561036157600080fd5b50610163610370366004610dc6565b6105df565b60006001600160e01b03198216635a05180f60e01b148061039a575061039a826107d2565b92915050565b7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e56103ca81610807565b50603555565b600082815260016020819052604090912001546103ec81610807565b6103f68383610814565b505050565b6001600160a01b03811633146104705760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084015b60405180910390fd5b61047a8282610836565b5050565b60008281526002602052604081206104969083610858565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60005460ff16156105275760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401610467565b6000805460ff191660011781556105449061053f3390565b610814565b61056e7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e533610814565b603592909255603680546001600160a01b039283166001600160a01b03199182161790915560378054929093169116179055565b600081815260026020526040812061039a90610864565b600082815260016020819052604090912001546105d581610807565b6103f68383610836565b6036546001600160a01b0316336001600160a01b0316146106425760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e006044820152606401610467565b600061064e8284610e08565b90506000836035546106609190610e1b565b9050478111156106a85760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820706169642066656560681b6044820152606401610467565b60006106b48247610e3a565b90506000836106c38685610e1b565b6106cd9190610e4d565b905060006106db8285610e3a565b9050851561074a576037546040516259e96760e81b8152600481018a9052602481018890526001600160a01b03909116906359e967009084906044016000604051808303818588803b15801561073057600080fd5b505af1158015610744573d6000803e3d6000fd5b50505050505b6037546001600160a01b03166359e967006107658386610e08565b61076f898c610e08565b8a6040518463ffffffff1660e01b8152600401610796929190918252602082015260400190565b6000604051808303818588803b1580156107af57600080fd5b505af11580156107c3573d6000803e3d6000fd5b50505050505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061039a57506301ffc9a760e01b6001600160e01b031983161461039a565b610811813361086e565b50565b61081e82826108c7565b60008281526002602052604090206103f69082610932565b6108408282610947565b60008281526002602052604090206103f690826109ae565b600061049683836109c3565b600061039a825490565b610878828261049d565b61047a57610885816109ed565b6108908360206109ff565b6040516020016108a1929190610e93565b60408051601f198184030181529082905262461bcd60e51b825261046791600401610f08565b6108d1828261049d565b61047a5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000610496836001600160a01b038416610b9b565b610951828261049d565b1561047a5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000610496836001600160a01b038416610bea565b60008260000182815481106109da576109da610f3b565b9060005260206000200154905092915050565b606061039a6001600160a01b03831660145b60606000610a0e836002610e1b565b610a19906002610e08565b67ffffffffffffffff811115610a3157610a31610f51565b6040519080825280601f01601f191660200182016040528015610a5b576020820181803683370190505b509050600360fc1b81600081518110610a7657610a76610f3b565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110610aa557610aa5610f3b565b60200101906001600160f81b031916908160001a9053506000610ac9846002610e1b565b610ad4906001610e08565b90505b6001811115610b4c576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110610b0857610b08610f3b565b1a60f81b828281518110610b1e57610b1e610f3b565b60200101906001600160f81b031916908160001a90535060049490941c93610b4581610f67565b9050610ad7565b5083156104965760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610467565b6000818152600183016020526040812054610be25750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915561039a565b50600061039a565b60008181526001830160205260408120548015610cd3576000610c0e600183610e3a565b8554909150600090610c2290600190610e3a565b9050818114610c87576000866000018281548110610c4257610c42610f3b565b9060005260206000200154905080876000018481548110610c6557610c65610f3b565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610c9857610c98610f7e565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505061039a565b600091505061039a565b600060208284031215610cef57600080fd5b81356001600160e01b03198116811461049657600080fd5b600060208284031215610d1957600080fd5b5035919050565b80356001600160a01b0381168114610d3757600080fd5b919050565b60008060408385031215610d4f57600080fd5b82359150610d5f60208401610d20565b90509250929050565b60008060408385031215610d7b57600080fd5b50508035926020909101359150565b600080600060608486031215610d9f57600080fd5b83359250610daf60208501610d20565b9150610dbd60408501610d20565b90509250925092565b600080600060608486031215610ddb57600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561039a5761039a610df2565b6000816000190483118215151615610e3557610e35610df2565b500290565b8181038181111561039a5761039a610df2565b600082610e6a57634e487b7160e01b600052601260045260246000fd5b500490565b60005b83811015610e8a578181015183820152602001610e72565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351610ecb816017850160208801610e6f565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351610efc816028840160208801610e6f565b01602801949350505050565b6020815260008251806020840152610f27816040850160208701610e6f565b601f01601f19169190910160400192915050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b600081610f7657610f76610df2565b506000190190565b634e487b7160e01b600052603160045260246000fdfea2646970667358221220d8852ef0b0adee18f9691c5c5753ee63701f2232a2e537eb63063ba39522589e64736f6c63430008100033", + "bytecode": "0x608060405234801561001057600080fd5b50610e22806100206000396000f3fe6080604052600436106100f75760003560e01c80639010d07c1161008a578063b4988fd011610059578063b4988fd0146102bf578063ca15c873146102df578063d547741f146102ff578063da6eb36a1461031f57600080fd5b80639010d07c1461023657806391d1485414610256578063a217fddf14610276578063b15d20da1461028b57600080fd5b80632f2ff15d116100c65780632f2ff15d146101c0578063343aad82146101e057806336568abe1461020057806361ec50821461022057600080fd5b806301ffc9a71461010357806314aa90a114610138578063228cb7331461015a578063248a9ca31461019257600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e366004610bf6565b61033f565b60405190151581526020015b60405180910390f35b34801561014457600080fd5b50610158610153366004610c20565b61036a565b005b34801561016657600080fd5b5060345461017a906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019e57600080fd5b506101b26101ad366004610c20565b61039a565b60405190815260200161012f565b3480156101cc57600080fd5b506101586101db366004610c55565b6103bc565b3480156101ec57600080fd5b5060335461017a906001600160a01b031681565b34801561020c57600080fd5b5061015861021b366004610c55565b6103de565b34801561022c57600080fd5b506101b260325481565b34801561024257600080fd5b5061017a610251366004610c81565b610416565b34801561026257600080fd5b50610123610271366004610c55565b610445565b34801561028257600080fd5b506101b2600081565b34801561029757600080fd5b506101b27fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e581565b3480156102cb57600080fd5b506101586102da366004610ca3565b61047d565b3480156102eb57600080fd5b506101b26102fa366004610c20565b6105f2565b34801561030b57600080fd5b5061015861031a366004610c55565b61061f565b34801561032b57600080fd5b5061015861033a366004610cdf565b61063b565b60006001600160e01b03198216635a05180f60e01b1480610364575061036482610833565b92915050565b7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e561039481610868565b50603255565b6000908152600080516020610dcd833981519152602052604090206001015490565b6103c58261039a565b6103ce81610868565b6103d88383610875565b50505050565b6001600160a01b03811633146104075760405163334bd91960e11b815260040160405180910390fd5b61041182826108ba565b505050565b6000828152600080516020610dad83398151915260208190526040822061043d90846108f6565b949350505050565b6000918252600080516020610dcd833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104c35750825b905060008267ffffffffffffffff1660011480156104e05750303b155b9050811580156104ee575080155b1561050c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561053657845460ff60401b1916600160401b1785555b610541600033610875565b5061056c7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e533610875565b506032889055603380546001600160a01b03808a166001600160a01b031992831617909255603480549289169290911691909117905583156105e857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6000818152600080516020610dad83398151915260208190526040822061061890610902565b9392505050565b6106288261039a565b61063181610868565b6103d883836108ba565b6033546001600160a01b0316336001600160a01b0316146106a35760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e0060448201526064015b60405180910390fd5b60006106af8284610d21565b90506000836032546106c19190610d34565b9050478111156107095760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820706169642066656560681b604482015260640161069a565b60006107158247610d4b565b90506000836107248685610d34565b61072e9190610d5e565b9050600061073c8285610d4b565b905085156107ab576034546040516259e96760e81b8152600481018a9052602481018890526001600160a01b03909116906359e967009084906044016000604051808303818588803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50505050505b6034546001600160a01b03166359e967006107c68386610d21565b6107d0898c610d21565b8a6040518463ffffffff1660e01b81526004016107f7929190918252602082015260400190565b6000604051808303818588803b15801561081057600080fd5b505af1158015610824573d6000803e3d6000fd5b50505050505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061036457506301ffc9a760e01b6001600160e01b0319831614610364565b610872813361090c565b50565b6000600080516020610dad833981519152816108918585610949565b9050801561043d5760008581526020839052604090206108b190856109ee565b50949350505050565b6000600080516020610dad833981519152816108d68585610a03565b9050801561043d5760008581526020839052604090206108b19085610a7f565b60006106188383610a94565b6000610364825490565b6109168282610445565b6109455760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161069a565b5050565b6000600080516020610dcd8339815191526109648484610445565b6109e4576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561099a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610364565b6000915050610364565b6000610618836001600160a01b038416610abe565b6000600080516020610dcd833981519152610a1e8484610445565b156109e4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610364565b6000610618836001600160a01b038416610b0d565b6000826000018281548110610aab57610aab610d80565b9060005260206000200154905092915050565b6000818152600183016020526040812054610b0557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610364565b506000610364565b600081815260018301602052604081205480156109e4576000610b31600183610d4b565b8554909150600090610b4590600190610d4b565b9050808214610baa576000866000018281548110610b6557610b65610d80565b9060005260206000200154905080876000018481548110610b8857610b88610d80565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610bbb57610bbb610d96565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610364565b600060208284031215610c0857600080fd5b81356001600160e01b03198116811461061857600080fd5b600060208284031215610c3257600080fd5b5035919050565b80356001600160a01b0381168114610c5057600080fd5b919050565b60008060408385031215610c6857600080fd5b82359150610c7860208401610c39565b90509250929050565b60008060408385031215610c9457600080fd5b50508035926020909101359150565b600080600060608486031215610cb857600080fd5b83359250610cc860208501610c39565b9150610cd660408501610c39565b90509250925092565b600080600060608486031215610cf457600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561036457610364610d0b565b808202811582820484141761036457610364610d0b565b8181038181111561036457610364610d0b565b600082610d7b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122025cb39a99e59374b35317abd4476ad628cbfca0c66d7916c7e1a519bc9b8e52e64736f6c63430008140033", + "deployedBytecode": "0x6080604052600436106100f75760003560e01c80639010d07c1161008a578063b4988fd011610059578063b4988fd0146102bf578063ca15c873146102df578063d547741f146102ff578063da6eb36a1461031f57600080fd5b80639010d07c1461023657806391d1485414610256578063a217fddf14610276578063b15d20da1461028b57600080fd5b80632f2ff15d116100c65780632f2ff15d146101c0578063343aad82146101e057806336568abe1461020057806361ec50821461022057600080fd5b806301ffc9a71461010357806314aa90a114610138578063228cb7331461015a578063248a9ca31461019257600080fd5b366100fe57005b600080fd5b34801561010f57600080fd5b5061012361011e366004610bf6565b61033f565b60405190151581526020015b60405180910390f35b34801561014457600080fd5b50610158610153366004610c20565b61036a565b005b34801561016657600080fd5b5060345461017a906001600160a01b031681565b6040516001600160a01b03909116815260200161012f565b34801561019e57600080fd5b506101b26101ad366004610c20565b61039a565b60405190815260200161012f565b3480156101cc57600080fd5b506101586101db366004610c55565b6103bc565b3480156101ec57600080fd5b5060335461017a906001600160a01b031681565b34801561020c57600080fd5b5061015861021b366004610c55565b6103de565b34801561022c57600080fd5b506101b260325481565b34801561024257600080fd5b5061017a610251366004610c81565b610416565b34801561026257600080fd5b50610123610271366004610c55565b610445565b34801561028257600080fd5b506101b2600081565b34801561029757600080fd5b506101b27fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e581565b3480156102cb57600080fd5b506101586102da366004610ca3565b61047d565b3480156102eb57600080fd5b506101b26102fa366004610c20565b6105f2565b34801561030b57600080fd5b5061015861031a366004610c55565b61061f565b34801561032b57600080fd5b5061015861033a366004610cdf565b61063b565b60006001600160e01b03198216635a05180f60e01b1480610364575061036482610833565b92915050565b7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e561039481610868565b50603255565b6000908152600080516020610dcd833981519152602052604090206001015490565b6103c58261039a565b6103ce81610868565b6103d88383610875565b50505050565b6001600160a01b03811633146104075760405163334bd91960e11b815260040160405180910390fd5b61041182826108ba565b505050565b6000828152600080516020610dad83398151915260208190526040822061043d90846108f6565b949350505050565b6000918252600080516020610dcd833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff16159067ffffffffffffffff166000811580156104c35750825b905060008267ffffffffffffffff1660011480156104e05750303b155b9050811580156104ee575080155b1561050c5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561053657845460ff60401b1916600160401b1785555b610541600033610875565b5061056c7fb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e533610875565b506032889055603380546001600160a01b03808a166001600160a01b031992831617909255603480549289169290911691909117905583156105e857845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b6000818152600080516020610dad83398151915260208190526040822061061890610902565b9392505050565b6106288261039a565b61063181610868565b6103d883836108ba565b6033546001600160a01b0316336001600160a01b0316146106a35760405162461bcd60e51b815260206004820152601f60248201527f53656e64657220646f6573206e6f742068617665207065726d697373696f6e0060448201526064015b60405180910390fd5b60006106af8284610d21565b90506000836032546106c19190610d34565b9050478111156107095760405162461bcd60e51b81526020600482015260136024820152724e6f7420656e6f75676820706169642066656560681b604482015260640161069a565b60006107158247610d4b565b90506000836107248685610d34565b61072e9190610d5e565b9050600061073c8285610d4b565b905085156107ab576034546040516259e96760e81b8152600481018a9052602481018890526001600160a01b03909116906359e967009084906044016000604051808303818588803b15801561079157600080fd5b505af11580156107a5573d6000803e3d6000fd5b50505050505b6034546001600160a01b03166359e967006107c68386610d21565b6107d0898c610d21565b8a6040518463ffffffff1660e01b81526004016107f7929190918252602082015260400190565b6000604051808303818588803b15801561081057600080fd5b505af1158015610824573d6000803e3d6000fd5b50505050505050505050505050565b60006001600160e01b03198216637965db0b60e01b148061036457506301ffc9a760e01b6001600160e01b0319831614610364565b610872813361090c565b50565b6000600080516020610dad833981519152816108918585610949565b9050801561043d5760008581526020839052604090206108b190856109ee565b50949350505050565b6000600080516020610dad833981519152816108d68585610a03565b9050801561043d5760008581526020839052604090206108b19085610a7f565b60006106188383610a94565b6000610364825490565b6109168282610445565b6109455760405163e2517d3f60e01b81526001600160a01b03821660048201526024810183905260440161069a565b5050565b6000600080516020610dcd8339815191526109648484610445565b6109e4576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561099a3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610364565b6000915050610364565b6000610618836001600160a01b038416610abe565b6000600080516020610dcd833981519152610a1e8484610445565b156109e4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610364565b6000610618836001600160a01b038416610b0d565b6000826000018281548110610aab57610aab610d80565b9060005260206000200154905092915050565b6000818152600183016020526040812054610b0557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610364565b506000610364565b600081815260018301602052604081205480156109e4576000610b31600183610d4b565b8554909150600090610b4590600190610d4b565b9050808214610baa576000866000018281548110610b6557610b65610d80565b9060005260206000200154905080876000018481548110610b8857610b88610d80565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080610bbb57610bbb610d96565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610364565b600060208284031215610c0857600080fd5b81356001600160e01b03198116811461061857600080fd5b600060208284031215610c3257600080fd5b5035919050565b80356001600160a01b0381168114610c5057600080fd5b919050565b60008060408385031215610c6857600080fd5b82359150610c7860208401610c39565b90509250929050565b60008060408385031215610c9457600080fd5b50508035926020909101359150565b600080600060608486031215610cb857600080fd5b83359250610cc860208501610c39565b9150610cd660408501610c39565b90509250925092565b600080600060608486031215610cf457600080fd5b505081359360208301359350604090920135919050565b634e487b7160e01b600052601160045260246000fd5b8082018082111561036457610364610d0b565b808202811582820484141761036457610364610d0b565b8181038181111561036457610364610d0b565b600082610d7b57634e487b7160e01b600052601260045260246000fd5b500490565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fdfec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200002dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122025cb39a99e59374b35317abd4476ad628cbfca0c66d7916c7e1a519bc9b8e52e64736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/FixedPriceFlow.json b/storage-contracts-abis/FixedPriceFlow.json index 1f7a08ec..39e51ca3 100644 --- a/storage-contracts-abis/FixedPriceFlow.json +++ b/storage-contracts-abis/FixedPriceFlow.json @@ -14,6 +14,42 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, { "inputs": [], "name": "InvalidSubmission", @@ -40,6 +76,24 @@ "name": "NotEnoughFee", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -235,7 +289,7 @@ } ], "indexed": false, - "internalType": "struct Submission", + "internalType": "struct SubmissionData", "name": "submission", "type": "tuple" } @@ -286,32 +340,44 @@ "inputs": [ { "components": [ - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "tags", - "type": "bytes" - }, { "components": [ - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, { "internalType": "uint256", - "name": "height", + "name": "length", "type": "uint256" + }, + { + "internalType": "bytes", + "name": "tags", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct SubmissionNode[]", + "name": "nodes", + "type": "tuple[]" } ], - "internalType": "struct SubmissionNode[]", - "name": "nodes", - "type": "tuple[]" + "internalType": "struct SubmissionData", + "name": "data", + "type": "tuple" + }, + { + "internalType": "address", + "name": "submitter", + "type": "address" } ], "internalType": "struct Submission[]", @@ -499,6 +565,42 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getEpochRangeHistory", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "start", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "end", + "type": "uint128" + }, + { + "internalType": "bytes32", + "name": "digest", + "type": "bytes32" + } + ], + "internalType": "struct EpochRangeWithContextDigest", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -640,19 +742,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "initialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "makeContext", @@ -809,7 +898,7 @@ }, { "internalType": "address", - "name": "account", + "name": "callerConfirmation", "type": "address" } ], @@ -889,32 +978,44 @@ "inputs": [ { "components": [ - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "tags", - "type": "bytes" - }, { "components": [ - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, { "internalType": "uint256", - "name": "height", + "name": "length", "type": "uint256" + }, + { + "internalType": "bytes", + "name": "tags", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct SubmissionNode[]", + "name": "nodes", + "type": "tuple[]" } ], - "internalType": "struct SubmissionNode[]", - "name": "nodes", - "type": "tuple[]" + "internalType": "struct SubmissionData", + "name": "data", + "type": "tuple" + }, + { + "internalType": "address", + "name": "submitter", + "type": "address" } ], "internalType": "struct Submission", @@ -926,22 +1027,22 @@ "outputs": [ { "internalType": "uint256", - "name": "", + "name": "index", "type": "uint256" }, { "internalType": "bytes32", - "name": "", + "name": "digest", "type": "bytes32" }, { "internalType": "uint256", - "name": "", + "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", - "name": "", + "name": "length", "type": "uint256" } ], @@ -993,8 +1094,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b506040516200456938038062004569833981016040819052620000349162000047565b6000805460ff1916905560805262000061565b6000602082840312156200005a57600080fd5b5051919050565b6080516144e5620000846000396000818161063d0152610fc201526144e56000f3fe6080604052600436106200023b5760003560e01c8063900cf0cf116200012f578063c7dd522111620000ad578063e63ab1e91162000078578063e63ab1e91462000760578063ebdec6d31462000785578063ef3e12dc14620007aa578063f068205414620007e2578063fd54b22814620007fa57600080fd5b8063c7dd522114620006cf578063ca15c87314620006f1578063cd6dc6871462000716578063d547741f146200073b57600080fd5b80639bbbfdbb11620000fa5780639bbbfdbb14620006295780639e62a38e146200065f578063a217fddf1462000688578063b464b53e146200069f578063b8a409ac14620006b757600080fd5b8063900cf0cf14620005af5780639010d07c14620005c757806391d1485414620005ec57806393e405a0146200061157600080fd5b806336568abe11620001bd5780636d7ad0fc11620001885780636d7ad0fc146200048057806377e1982414620004b15780637d59070814620004c857806380f55605146200055c5780638456cb59146200059757600080fd5b806336568abe146200041157806338d45e1014620004365780633f4ba83a146200044e5780635c975abb146200046657600080fd5b80631deb0fca116200020a5780631deb0fca1462000322578063231b02681462000349578063248a9ca314620003615780632f2ff15d146200039657806331bae17414620003bb57600080fd5b806301ffc9a71462000240578063127f0f07146200027a578063158ef93e14620002df57806318a641ef14620002fb575b600080fd5b3480156200024d57600080fd5b50620002656200025f366004620035da565b6200082d565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b50620002926200085b565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b50600354620002659060ff1681565b3480156200030857600080fd5b50620003206200031a36600462003606565b620008c6565b005b3480156200032f57600080fd5b506200033a6200092a565b60405190815260200162000271565b3480156200035657600080fd5b506200033a60465481565b3480156200036e57600080fd5b506200033a6200038036600462003606565b6000908152600160208190526040909120015490565b348015620003a357600080fd5b5062000320620003b536600462003638565b62000949565b348015620003c857600080fd5b50620003e0620003da36600462003667565b62000978565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b3480156200041e57600080fd5b50620003206200043036600462003638565b62000b2e565b3480156200044357600080fd5b506200032062000bac565b3480156200045b57600080fd5b506200032062000be3565b3480156200047357600080fd5b5060005460ff1662000265565b3480156200048d57600080fd5b506200033a6200049f36600462003606565b60009081526045602052604090205490565b348015620004be57600080fd5b50603a546200033a565b348015620004d557600080fd5b5062000534620004e736600462003606565b6040805180820190915260008082526020820152506000908152604360209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200056957600080fd5b506036546200057e906001600160a01b031681565b6040516001600160a01b03909116815260200162000271565b348015620005a457600080fd5b506200032062000c08565b348015620005bc57600080fd5b506200033a603b5481565b348015620005d457600080fd5b506200057e620005e636600462003692565b62000c2d565b348015620005f957600080fd5b50620002656200060b36600462003638565b62000c4e565b3480156200061e57600080fd5b506200033a603c5481565b3480156200063657600080fd5b506200033a7f000000000000000000000000000000000000000000000000000000000000000081565b6200067662000670366004620038e8565b62000c79565b604051620002719493929190620039e1565b3480156200069557600080fd5b506200033a600081565b348015620006ac57600080fd5b506200029262000eba565b348015620006c457600080fd5b506200033a603a5481565b348015620006dc57600080fd5b506047546200057e906001600160a01b031681565b348015620006fe57600080fd5b506200033a6200071036600462003606565b62000f25565b3480156200072357600080fd5b50620003206200073536600462003a68565b62000f3e565b3480156200074857600080fd5b50620003206200075a36600462003638565b62001023565b3480156200076d57600080fd5b506200033a6000805160206200449083398151915281565b3480156200079257600080fd5b5062000320620007a436600462003a95565b6200104d565b620007c1620007bb36600462003acd565b6200105a565b60408051948552602085019390935291830152606082015260800162000271565b348015620007ef57600080fd5b506200033a60485481565b3480156200080757600080fd5b5060375460385462000817919082565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b14806200085557506200085582620011c3565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c081018252603d548152603e546020820152603f548183015290546060820152604154608082015260425460a082015290565b604654431015620008f45760405162461bcd60e51b8152600401620008eb9062003b0d565b60405180910390fd5b60005b818111620009255762000909620011fa565b62000912575050565b6200091d8162003b5a565b9050620008f7565b505b50565b6000620009386037620014c7565b62000944603762001610565b905090565b6000828152600160208190526040909120015462000967816200164d565b62000973838362001659565b505050565b60408051606081018252600080825260208201819052918101919091526200099f62000bac565b6037546001600160801b0383161062000a075760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008eb565b6044546000905b8181111562000ae5576000600262000a27848462003b76565b62000a33919062003ba2565b90506044818154811062000a4b5762000a4b62003bb9565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290955086161062000ab45762000aac81600162003b76565b925062000ade565b83600001516001600160801b0316856001600160801b03161062000ada57505050919050565b8091505b5062000a0e565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008eb565b6001600160a01b038116331462000ba05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401620008eb565b6200092582826200167f565b60465443101562000bd15760405162461bcd60e51b8152600401620008eb9062003b0d565b62000bdb620011fa565b62000bd1575b565b6000805160206200449083398151915262000bfe816200164d565b62000927620016a5565b6000805160206200449083398151915262000c23816200164d565b62000927620016f9565b600082815260026020526040812062000c47908362001739565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60608060608062000c8962001747565b60465443101562000cae5760405162461bcd60e51b8152600401620008eb9062003b0d565b8451806001600160401b0381111562000ccb5762000ccb620036b5565b60405190808252806020026020018201604052801562000cf5578160200160208202803683370190505b509450806001600160401b0381111562000d135762000d13620036b5565b60405190808252806020026020018201604052801562000d3d578160200160208202803683370190505b509350806001600160401b0381111562000d5b5762000d5b620036b5565b60405190808252806020026020018201604052801562000d85578160200160208202803683370190505b509250806001600160401b0381111562000da35762000da3620036b5565b60405190808252806020026020018201604052801562000dcd578160200160208202803683370190505b50915060005b8181101562000eb15760008060008062000e098b868151811062000dfb5762000dfb62003bb9565b60200260200101516200105a565b9350935093509350838a868151811062000e275762000e2762003bb9565b6020026020010181815250508289868151811062000e495762000e4962003bb9565b6020026020010181815250508188868151811062000e6b5762000e6b62003bb9565b6020026020010181815250508087868151811062000e8d5762000e8d62003bb9565b602002602001018181525050505050508062000ea99062003b5a565b905062000dd3565b50509193509193565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260465443101562000f115760405162461bcd60e51b8152600401620008eb9062003b0d565b62000f1b62000bac565b620009446200085b565b600081815260026020526040812062000855906200178f565b60035460ff161562000f9f5760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401620008eb565b6003805460ff1916600117905562000fb7826200179a565b620009258162000fe87f00000000000000000000000000000000000000000000000000000000000000004362003b76565b6103e860405162000ff990620035cc565b908152602001604051809103906000f0801580156200101c573d6000803e3d6000fd5b50620018a9565b6000828152600160208190526040909120015462001041816200164d565b6200097383836200167f565b62000973838383620018a9565b6000806000806200106a62001747565b6046544310156200108f5760405162461bcd60e51b8152600401620008eb9062003b0d565b6200109a8562001967565b620010dd5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008eb565b6000620010ea8662001bb5565b9050620010f78162001c1c565b6200110162000bac565b60006200110e8762001d16565b905060006200111d8862001e6b565b603a8054919250600190600062001135838562003b76565b909155506200114790506037620014c7565b62001153603762001610565b604560008381526020019081526020016000208190555081336001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558386888e604051620011ac949392919062003c23565b60405180910390a396509450925090509193509193565b60006001600160e01b03198216637965db0b60e01b14806200085557506301ffc9a760e01b6001600160e01b031983161462000855565b60006200120662001747565b6000604854603b54600101026046540190504381106200122857600091505090565b620012346037620014c7565b600062001242603762001610565b604754604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af11580156200128f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b5919062003cb9565b5060008043620012c88561010062003b76565b1015620012fa57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090508062001409565b506037546040805185406020820181905291810185905260608101929092529060800160408051808303601f190181528282528051602091820120603c80546037805487870187526001600160801b039283168089529083168689018181526000878152604389528981209a519151918616600160801b928716830217909a558851606081018a529283529682019081529681018581526044805460018101825599529051965196831696909216909402949094177f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea60029096029586015592517f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135eb9094019390935554905591505b6001603b60008282546200141e919062003b76565b90915550506040805160c081018252603b5480825260208083018890528284018790526037546060808501829052608080860188905260a0909501889052603d849055603e8a9055603f89905581865560418790556042889055603a5486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a3600194505050505090565b6002810154600182015403620014da5750565b60028101805460018084015491926000929091620014f89162003cd3565b815481106200150b576200150b62003bb9565b906000526020600020015490506000620015376001856001015462001531919062003cd3565b62001f58565b60018501549091505b8381101562001605576040805160208082018690528183018590528251808303840181526060909201909252805191012085546200158390600290841c62003ce9565b600003620015c657809350620015998262001f58565b925080866002018381548110620015b457620015b462003bb9565b600091825260209091200155620015ef565b856002018281548110620015de57620015de62003bb9565b906000526020600020015493508092505b5080620015fc8162003b5a565b91505062001540565b505050600190910155565b60028101805460009190620016289060019062003cd3565b815481106200163b576200163b62003bb9565b90600052602060002001549050919050565b62000927813362002b9d565b62001665828262002c01565b600082815260026020526040902062000973908262002c6f565b6200168b828262002c86565b600082815260026020526040902062000973908262002cf0565b620016af62002d07565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6200170362001747565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016dc3390565b600062000c47838362002d52565b60005460ff161562000be15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401620008eb565b600062000855825490565b6001603781905560398054808301825560009182527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30155603855603680546001600160a01b0319166001600160a01b0383161790556000603b8190556040805160c081018252918252604654602083015281016200181a603762001610565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060408084018290526060938401919091528351603d5590830151603e5582810151603f55908201519055608081015160415560a001516042556200188e60003362002d7f565b62000927600080516020620044908339815191523362002d7f565b604854600003620018ba5760488390555b604654600003620018cb5760468290555b6047546001600160a01b031662000973576001600160a01b03811662001945576103e8604051620018fc90620035cc565b908152602001604051809103906000f0801580156200191f573d6000803e3d6000fd5b50604780546001600160a01b0319166001600160a01b0392909216919091179055505050565b604780546001600160a01b0383166001600160a01b0319909116179055505050565b60008160400151516000036200197f57506000919050565b6040820151805160049190620019989060019062003cd3565b81518110620019ab57620019ab62003bb9565b6020026020010151602001518360400151600081518110620019d157620019d162003bb9565b602002602001015160200151620019e9919062003cd3565b10620019f757506000919050565b6040826040015160008151811062001a135762001a1362003bb9565b6020026020010151602001511062001a2d57506000919050565b60005b600183604001515162001a44919062003cd3565b81101562001ac8578260400151818151811062001a655762001a6562003bb9565b602002602001015160200151836040015182600162001a85919062003b76565b8151811062001a985762001a9862003bb9565b6020026020010151602001511062001ab35750600092915050565b8062001abf8162003b5a565b91505062001a30565b50600062001ad68362001bb5565b905062001ae66101008262003d00565b8351111562001af85750600092915050565b6000601082101562001b195762001b1160018362003cd3565b905062001b8b565b83604001515160010362001b375762001b11600483901c8362003cd3565b6004846040015160008151811062001b535762001b5362003bb9565b60200260200101516020015162001b6b919062003cd3565b62001b7890600162003b76565b62001b88906001901b8362003cd3565b90505b62001b996101008262003d00565b84511162001bab575060009392505050565b5060019392505050565b600080805b83604001515181101562001c15578360400151818151811062001be15762001be162003bb9565b6020026020010151602001516001901b8262001bfe919062003b76565b91508062001c0c8162003b5a565b91505062001bba565b5092915050565b603654604080516330f6284160e11b815290516000926001600160a01b0316916361ec50829160048083019260209291908290030181865afa15801562001c67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c8d919062003cb9565b9050600062001c9d828462003d00565b9050474782111562001cd457604051637c2e324160e11b8152600481018490526024810185905260448101829052606401620008eb565b6036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801562001d0f573d6000803e3d6000fd5b5050505050565b6037805460009162001d29908462002d8b565b60005b83604001515181101562001dce5760008460400151828151811062001d555762001d5562003bb9565b602002602001015160000151905060008560400151838151811062001d7e5762001d7e62003bb9565b6020026020010151602001519050600062001da68383603762002ee29092919063ffffffff16565b90508360000362001db5578095505b505050808062001dc59062003b5a565b91505062001d2c565b50600062001ddd828462003cd3565b905060008360376000015462001df4919062003cd3565b603654604051636d3759b560e11b81526004810186905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b15801562001e4a57600080fd5b505af115801562001e5f573d6000803e3d6000fd5b50505050505050919050565b6000808260400151516001600160401b0381111562001e8e5762001e8e620036b5565b60405190808252806020026020018201604052801562001eb8578160200160208202803683370190505b50905060005b83604001515181101562001f26578360400151818151811062001ee55762001ee562003bb9565b60200260200101516000015182828151811062001f065762001f0662003bb9565b60209081029190910101528062001f1d8162003b5a565b91505062001ebe565b508060405160200162001f3a919062003d22565b60405160208183030381529060405280519060200120915050919050565b60008160000362001f8a57507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b8160010362001fba57507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b8160020362001fea57507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b816003036200201a57507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b816004036200204a57507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b816005036200207a57507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b81600603620020aa57507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b81600703620020da57507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200210a57507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200213a57507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a036200216a57507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b036200219a57507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c03620021ca57507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d03620021fa57507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200222a57507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200225a57507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b816010036200228a57507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620022ba57507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b81601203620022ea57507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200231a57507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200234a57507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b816015036200237a57507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620023aa57507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b81601703620023da57507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200240a57507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200243a57507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a036200246a57507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b036200249a57507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c03620024ca57507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d03620024fa57507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e036200252a57507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f036200255a57507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b816020036200258a57507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b81602103620025ba57507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b81602203620025ea57507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b816023036200261a57507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b816024036200264a57507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b816025036200267a57507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b81602603620026aa57507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b81602703620026da57507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b816028036200270a57507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b816029036200273a57507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a036200276a57507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b036200279a57507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c03620027ca57507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d03620027fa57507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e036200282a57507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f036200285a57507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b816030036200288a57507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b81603103620028ba57507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b81603203620028ea57507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b816033036200291a57507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b816034036200294a57507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b816035036200297a57507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b81603603620029aa57507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b81603703620029da57507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b8160380362002a0a57507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b8160390362002a3a57507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a0362002a6a57507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b0362002a9a57507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c0362002aca57507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d0362002afa57507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e0362002b2a57507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f0362002b5a57507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008eb565b919050565b62002ba9828262000c4e565b620009255762002bb98162003081565b62002bc683602062003094565b60405160200162002bd992919062003d5a565b60408051601f198184030181529082905262461bcd60e51b8252620008eb9160040162003dd3565b62002c0d828262000c4e565b620009255760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600062000c47836001600160a01b0384166200324d565b62002c92828262000c4e565b15620009255760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600062000c47836001600160a01b0384166200329f565b60005460ff1662000be15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401620008eb565b600082600001828154811062002d6c5762002d6c62003bb9565b9060005260206000200154905092915050565b62000925828262001659565b600062002d988262001bb5565b9050600062002dd18460000154846040015160008151811062002dbf5762002dbf62003bb9565b602002602001015160200151620033a3565b905061010062002de46104008262003d00565b62002df0919062003ba2565b62002dfc908262003ce9565b1580159062002e75575061010062002e176104008262003d00565b62002e23919062003ba2565b600162002e31848462003b76565b62002e3d919062003cd3565b62002e49919062003ba2565b61010062002e5a6104008262003d00565b62002e66919062003ba2565b62002e72908362003ba2565b14155b1562002edc5761010062002e8c6104008262003d00565b62002e98919062003ba2565b62002ea4908262003ce9565b61010062002eb56104008262003d00565b62002ec1919062003ba2565b62002ecd908362003b76565b62002ed9919062003cd3565b84555b50505050565b60008062002ef5856000015484620033a3565b9050600062002f086001851b8362003b76565b600287015490915062002f1e9060019062003cd3565b6001901b81111562002f7b5762002f3586620014c7565b62002f4086620033e1565b600286015462002f539060019062003cd3565b6001901b81111562002f705762002f6a86620033e1565b62002f40565b600286015460018701555b600286015462002f8c87866200347d565b60008087875b84811015620030615762002faa600288831c62003ce9565b60000362002fef57818b600201828154811062002fcb5762002fcb62003bb9565b60009182526020909120015562002fe481600162003b76565b60018c015562003061565b8a600201818154811062003007576200300762003bb9565b90600052602060002001549350819250838360405160200162003034929190918252602082015260400190565b60405160208183030381529060405280519060200120915080620030588162003b5a565b91505062002f92565b50620030716001891b8762003b76565b9099555092979650505050505050565b6060620008556001600160a01b03831660145b60606000620030a583600262003d00565b620030b290600262003b76565b6001600160401b03811115620030cc57620030cc620036b5565b6040519080825280601f01601f191660200182016040528015620030f7576020820181803683370190505b509050600360fc1b8160008151811062003115576200311562003bb9565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062003147576200314762003bb9565b60200101906001600160f81b031916908160001a90535060006200316d84600262003d00565b6200317a90600162003b76565b90505b6001811115620031fc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620031b257620031b262003bb9565b1a60f81b828281518110620031cb57620031cb62003bb9565b60200101906001600160f81b031916908160001a90535060049490941c93620031f48162003de8565b90506200317d565b50831562000c475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620008eb565b6000818152600183016020526040812054620032965750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000855565b50600062000855565b6000818152600183016020526040812054801562003398576000620032c660018362003cd3565b8554909150600090620032dc9060019062003cd3565b90508181146200334857600086600001828154811062003300576200330062003bb9565b906000526020600020015490508087600001848154811062003326576200332662003bb9565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200335c576200335c62003e02565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000855565b600091505062000855565b600082808203620033b957600091505062000855565b620033c660018262003cd3565b831c9050620033d760018262003b76565b90921b9392505050565b60028101805490600090620033f860018462003cd3565b815481106200340b576200340b62003bb9565b60009182526020822001549150620034296200153160018562003cd3565b90508360020182826040516020016200344c929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b80826001015411156200348e575050565b60028201805460018085015491926000929091620034ac9162003cd3565b81548110620034bf57620034bf62003bb9565b906000526020600020015490506000620034e56001866001015462001531919062003cd3565b60018601549091505b83811015620035c4576040805160208082018690528183018590528251808303840181526060909201909252805191012086546200353190600290841c62003ce9565b6000036200358557809350620035478262001f58565b92508582106200357f57808760020183815481106200356a576200356a62003bb9565b60009182526020909120015550505050505050565b620035ae565b8660020182815481106200359d576200359d62003bb9565b906000526020600020015493508092505b5080620035bb8162003b5a565b915050620034ee565b505050505050565b6106778062003e1983390190565b600060208284031215620035ed57600080fd5b81356001600160e01b03198116811462000c4757600080fd5b6000602082840312156200361957600080fd5b5035919050565b80356001600160a01b038116811462002b9857600080fd5b600080604083850312156200364c57600080fd5b823591506200365e6020840162003620565b90509250929050565b6000602082840312156200367a57600080fd5b81356001600160801b038116811462000c4757600080fd5b60008060408385031215620036a657600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620036f057620036f0620036b5565b60405290565b604051606081016001600160401b0381118282101715620036f057620036f0620036b5565b604051601f8201601f191681016001600160401b0381118282101715620037465762003746620036b5565b604052919050565b60006001600160401b038211156200376a576200376a620036b5565b5060051b60200190565b600082601f8301126200378657600080fd5b813560206200379f62003799836200374e565b6200371b565b82815260069290921b84018101918181019086841115620037bf57600080fd5b8286015b84811015620038035760408189031215620037de5760008081fd5b620037e8620036cb565b813581528482013585820152835291830191604001620037c3565b509695505050505050565b6000606082840312156200382157600080fd5b6200382b620036f6565b9050813581526020808301356001600160401b03808211156200384d57600080fd5b818501915085601f8301126200386257600080fd5b813581811115620038775762003877620036b5565b6200388b601f8201601f191685016200371b565b8181528785838601011115620038a057600080fd5b81858501868301376000858383010152808587015250506040850135925080831115620038cc57600080fd5b5050620038dc8482850162003774565b60408301525092915050565b60006020808385031215620038fc57600080fd5b82356001600160401b03808211156200391457600080fd5b818501915085601f8301126200392957600080fd5b81356200393a62003799826200374e565b81815260059190911b830184019084810190888311156200395a57600080fd5b8585015b838110156200399757803585811115620039785760008081fd5b620039888b89838a01016200380e565b8452509186019186016200395e565b5098975050505050505050565b600081518084526020808501945080840160005b83811015620039d657815187529582019590820190600101620039b8565b509495945050505050565b608081526000620039f66080830187620039a4565b82810360208481019190915286518083528782019282019060005b8181101562003a2f5784518352938301939183019160010162003a11565b5050848103604086015262003a458188620039a4565b92505050828103606084015262003a5d8185620039a4565b979650505050505050565b6000806040838503121562003a7c57600080fd5b62003a878362003620565b946020939093013593505050565b60008060006060848603121562003aab57600080fd5b833592506020840135915062003ac46040850162003620565b90509250925092565b60006020828403121562003ae057600080fd5b81356001600160401b0381111562003af757600080fd5b62003b05848285016200380e565b949350505050565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003b6f5762003b6f62003b44565b5060010190565b8082018082111562000855576200085562003b44565b634e487b7160e01b600052601260045260246000fd5b60008262003bb45762003bb462003b8c565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b8381101562003bec57818101518382015260200162003bd2565b50506000910152565b6000815180845262003c0f81602086016020860162003bcf565b601f01601f19169290920160200192915050565b84815260006020858184015260408581850152608060608501528451608085015281850151606060a086015262003c5e60e086018262003bf5565b86830151868203607f190160c0880152805180835290850192506000918501905b8083101562003caa578351805183528601518683015292850192600192909201919084019062003c7f565b509a9950505050505050505050565b60006020828403121562003ccc57600080fd5b5051919050565b8181038181111562000855576200085562003b44565b60008262003cfb5762003cfb62003b8c565b500690565b600081600019048311821515161562003d1d5762003d1d62003b44565b500290565b815160009082906020808601845b8381101562003d4e5781518552938201939082019060010162003d30565b50929695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162003d9481601785016020880162003bcf565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162003dc781602884016020880162003bcf565b01602801949350505050565b60208152600062000c47602083018462003bf5565b60008162003dfa5762003dfa62003b44565b506000190190565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161067738038061067783398101604081905261002f9161014a565b6100383361009a565b806001600160401b0381111561005057610050610163565b604051908082528060200260200182016040528015610079578160200160208202803683370190505b50805161008e916001916020909101906100ea565b50506000600255610179565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215610125579160200282015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b5b808211156101315760008155600101610136565b60006020828403121561015c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6104ef806101886000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b6100956100903660046103ea565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b83660046103ea565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe3660046103ea565b610209565b6100bd6101113660046103ea565b61023e565b6100d3610124366004610403565b61029e565b60008061013d600254600180549050610317565b905060005b8181101561018a57836001828154811061015e5761015e61042c565b906000526020600020015403610178575060019392505050565b8061018281610458565b915050610142565b5060009392505050565b600061019e610331565b6002546001546000906101b19083610471565b905083600182815481106101c7576101c761042c565b90600052602060002001819055506001600260008282546101e89190610493565b9091555091949350505050565b6101fd610331565b610207600061038b565b565b6001546002546000919083108015610237575080610229600254836103db565b61023391906104a6565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610471565b8154811061028c5761028c61042c565b90600052602060002001549050919050565b6102a6610331565b6001600160a01b03811661030b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610265565b6103148161038b565b50565b60008183106103265781610328565b825b90505b92915050565b6000546001600160a01b031633146102075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116103265781610328565b6000602082840312156103fc57600080fd5b5035919050565b60006020828403121561041557600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161046a5761046a610442565b5060010190565b60008261048e57634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561032b5761032b610442565b8181038181111561032b5761032b61044256fea2646970667358221220ab4227e667a8cb673b86154f616db16af24f601e334d164960a5df4e7cbdcec464736f6c6343000810003365d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212205fedfe274d4897cf1474f34cf6d8edfdfbb0efbac83a7d94581c60f272e34c5e64736f6c63430008100033", - "deployedBytecode": "0x6080604052600436106200023b5760003560e01c8063900cf0cf116200012f578063c7dd522111620000ad578063e63ab1e91162000078578063e63ab1e91462000760578063ebdec6d31462000785578063ef3e12dc14620007aa578063f068205414620007e2578063fd54b22814620007fa57600080fd5b8063c7dd522114620006cf578063ca15c87314620006f1578063cd6dc6871462000716578063d547741f146200073b57600080fd5b80639bbbfdbb11620000fa5780639bbbfdbb14620006295780639e62a38e146200065f578063a217fddf1462000688578063b464b53e146200069f578063b8a409ac14620006b757600080fd5b8063900cf0cf14620005af5780639010d07c14620005c757806391d1485414620005ec57806393e405a0146200061157600080fd5b806336568abe11620001bd5780636d7ad0fc11620001885780636d7ad0fc146200048057806377e1982414620004b15780637d59070814620004c857806380f55605146200055c5780638456cb59146200059757600080fd5b806336568abe146200041157806338d45e1014620004365780633f4ba83a146200044e5780635c975abb146200046657600080fd5b80631deb0fca116200020a5780631deb0fca1462000322578063231b02681462000349578063248a9ca314620003615780632f2ff15d146200039657806331bae17414620003bb57600080fd5b806301ffc9a71462000240578063127f0f07146200027a578063158ef93e14620002df57806318a641ef14620002fb575b600080fd5b3480156200024d57600080fd5b50620002656200025f366004620035da565b6200082d565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b50620002926200085b565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b50600354620002659060ff1681565b3480156200030857600080fd5b50620003206200031a36600462003606565b620008c6565b005b3480156200032f57600080fd5b506200033a6200092a565b60405190815260200162000271565b3480156200035657600080fd5b506200033a60465481565b3480156200036e57600080fd5b506200033a6200038036600462003606565b6000908152600160208190526040909120015490565b348015620003a357600080fd5b5062000320620003b536600462003638565b62000949565b348015620003c857600080fd5b50620003e0620003da36600462003667565b62000978565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b3480156200041e57600080fd5b50620003206200043036600462003638565b62000b2e565b3480156200044357600080fd5b506200032062000bac565b3480156200045b57600080fd5b506200032062000be3565b3480156200047357600080fd5b5060005460ff1662000265565b3480156200048d57600080fd5b506200033a6200049f36600462003606565b60009081526045602052604090205490565b348015620004be57600080fd5b50603a546200033a565b348015620004d557600080fd5b5062000534620004e736600462003606565b6040805180820190915260008082526020820152506000908152604360209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200056957600080fd5b506036546200057e906001600160a01b031681565b6040516001600160a01b03909116815260200162000271565b348015620005a457600080fd5b506200032062000c08565b348015620005bc57600080fd5b506200033a603b5481565b348015620005d457600080fd5b506200057e620005e636600462003692565b62000c2d565b348015620005f957600080fd5b50620002656200060b36600462003638565b62000c4e565b3480156200061e57600080fd5b506200033a603c5481565b3480156200063657600080fd5b506200033a7f000000000000000000000000000000000000000000000000000000000000000081565b6200067662000670366004620038e8565b62000c79565b604051620002719493929190620039e1565b3480156200069557600080fd5b506200033a600081565b348015620006ac57600080fd5b506200029262000eba565b348015620006c457600080fd5b506200033a603a5481565b348015620006dc57600080fd5b506047546200057e906001600160a01b031681565b348015620006fe57600080fd5b506200033a6200071036600462003606565b62000f25565b3480156200072357600080fd5b50620003206200073536600462003a68565b62000f3e565b3480156200074857600080fd5b50620003206200075a36600462003638565b62001023565b3480156200076d57600080fd5b506200033a6000805160206200449083398151915281565b3480156200079257600080fd5b5062000320620007a436600462003a95565b6200104d565b620007c1620007bb36600462003acd565b6200105a565b60408051948552602085019390935291830152606082015260800162000271565b348015620007ef57600080fd5b506200033a60485481565b3480156200080757600080fd5b5060375460385462000817919082565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b14806200085557506200085582620011c3565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c081018252603d548152603e546020820152603f548183015290546060820152604154608082015260425460a082015290565b604654431015620008f45760405162461bcd60e51b8152600401620008eb9062003b0d565b60405180910390fd5b60005b818111620009255762000909620011fa565b62000912575050565b6200091d8162003b5a565b9050620008f7565b505b50565b6000620009386037620014c7565b62000944603762001610565b905090565b6000828152600160208190526040909120015462000967816200164d565b62000973838362001659565b505050565b60408051606081018252600080825260208201819052918101919091526200099f62000bac565b6037546001600160801b0383161062000a075760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008eb565b6044546000905b8181111562000ae5576000600262000a27848462003b76565b62000a33919062003ba2565b90506044818154811062000a4b5762000a4b62003bb9565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290955086161062000ab45762000aac81600162003b76565b925062000ade565b83600001516001600160801b0316856001600160801b03161062000ada57505050919050565b8091505b5062000a0e565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008eb565b6001600160a01b038116331462000ba05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401620008eb565b6200092582826200167f565b60465443101562000bd15760405162461bcd60e51b8152600401620008eb9062003b0d565b62000bdb620011fa565b62000bd1575b565b6000805160206200449083398151915262000bfe816200164d565b62000927620016a5565b6000805160206200449083398151915262000c23816200164d565b62000927620016f9565b600082815260026020526040812062000c47908362001739565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60608060608062000c8962001747565b60465443101562000cae5760405162461bcd60e51b8152600401620008eb9062003b0d565b8451806001600160401b0381111562000ccb5762000ccb620036b5565b60405190808252806020026020018201604052801562000cf5578160200160208202803683370190505b509450806001600160401b0381111562000d135762000d13620036b5565b60405190808252806020026020018201604052801562000d3d578160200160208202803683370190505b509350806001600160401b0381111562000d5b5762000d5b620036b5565b60405190808252806020026020018201604052801562000d85578160200160208202803683370190505b509250806001600160401b0381111562000da35762000da3620036b5565b60405190808252806020026020018201604052801562000dcd578160200160208202803683370190505b50915060005b8181101562000eb15760008060008062000e098b868151811062000dfb5762000dfb62003bb9565b60200260200101516200105a565b9350935093509350838a868151811062000e275762000e2762003bb9565b6020026020010181815250508289868151811062000e495762000e4962003bb9565b6020026020010181815250508188868151811062000e6b5762000e6b62003bb9565b6020026020010181815250508087868151811062000e8d5762000e8d62003bb9565b602002602001018181525050505050508062000ea99062003b5a565b905062000dd3565b50509193509193565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260465443101562000f115760405162461bcd60e51b8152600401620008eb9062003b0d565b62000f1b62000bac565b620009446200085b565b600081815260026020526040812062000855906200178f565b60035460ff161562000f9f5760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401620008eb565b6003805460ff1916600117905562000fb7826200179a565b620009258162000fe87f00000000000000000000000000000000000000000000000000000000000000004362003b76565b6103e860405162000ff990620035cc565b908152602001604051809103906000f0801580156200101c573d6000803e3d6000fd5b50620018a9565b6000828152600160208190526040909120015462001041816200164d565b6200097383836200167f565b62000973838383620018a9565b6000806000806200106a62001747565b6046544310156200108f5760405162461bcd60e51b8152600401620008eb9062003b0d565b6200109a8562001967565b620010dd5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008eb565b6000620010ea8662001bb5565b9050620010f78162001c1c565b6200110162000bac565b60006200110e8762001d16565b905060006200111d8862001e6b565b603a8054919250600190600062001135838562003b76565b909155506200114790506037620014c7565b62001153603762001610565b604560008381526020019081526020016000208190555081336001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558386888e604051620011ac949392919062003c23565b60405180910390a396509450925090509193509193565b60006001600160e01b03198216637965db0b60e01b14806200085557506301ffc9a760e01b6001600160e01b031983161462000855565b60006200120662001747565b6000604854603b54600101026046540190504381106200122857600091505090565b620012346037620014c7565b600062001242603762001610565b604754604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af11580156200128f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012b5919062003cb9565b5060008043620012c88561010062003b76565b1015620012fa57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090508062001409565b506037546040805185406020820181905291810185905260608101929092529060800160408051808303601f190181528282528051602091820120603c80546037805487870187526001600160801b039283168089529083168689018181526000878152604389528981209a519151918616600160801b928716830217909a558851606081018a529283529682019081529681018581526044805460018101825599529051965196831696909216909402949094177f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea60029096029586015592517f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135eb9094019390935554905591505b6001603b60008282546200141e919062003b76565b90915550506040805160c081018252603b5480825260208083018890528284018790526037546060808501829052608080860188905260a0909501889052603d849055603e8a9055603f89905581865560418790556042889055603a5486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a3600194505050505090565b6002810154600182015403620014da5750565b60028101805460018084015491926000929091620014f89162003cd3565b815481106200150b576200150b62003bb9565b906000526020600020015490506000620015376001856001015462001531919062003cd3565b62001f58565b60018501549091505b8381101562001605576040805160208082018690528183018590528251808303840181526060909201909252805191012085546200158390600290841c62003ce9565b600003620015c657809350620015998262001f58565b925080866002018381548110620015b457620015b462003bb9565b600091825260209091200155620015ef565b856002018281548110620015de57620015de62003bb9565b906000526020600020015493508092505b5080620015fc8162003b5a565b91505062001540565b505050600190910155565b60028101805460009190620016289060019062003cd3565b815481106200163b576200163b62003bb9565b90600052602060002001549050919050565b62000927813362002b9d565b62001665828262002c01565b600082815260026020526040902062000973908262002c6f565b6200168b828262002c86565b600082815260026020526040902062000973908262002cf0565b620016af62002d07565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6200170362001747565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016dc3390565b600062000c47838362002d52565b60005460ff161562000be15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401620008eb565b600062000855825490565b6001603781905560398054808301825560009182527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30155603855603680546001600160a01b0319166001600160a01b0383161790556000603b8190556040805160c081018252918252604654602083015281016200181a603762001610565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060408084018290526060938401919091528351603d5590830151603e5582810151603f55908201519055608081015160415560a001516042556200188e60003362002d7f565b62000927600080516020620044908339815191523362002d7f565b604854600003620018ba5760488390555b604654600003620018cb5760468290555b6047546001600160a01b031662000973576001600160a01b03811662001945576103e8604051620018fc90620035cc565b908152602001604051809103906000f0801580156200191f573d6000803e3d6000fd5b50604780546001600160a01b0319166001600160a01b0392909216919091179055505050565b604780546001600160a01b0383166001600160a01b0319909116179055505050565b60008160400151516000036200197f57506000919050565b6040820151805160049190620019989060019062003cd3565b81518110620019ab57620019ab62003bb9565b6020026020010151602001518360400151600081518110620019d157620019d162003bb9565b602002602001015160200151620019e9919062003cd3565b10620019f757506000919050565b6040826040015160008151811062001a135762001a1362003bb9565b6020026020010151602001511062001a2d57506000919050565b60005b600183604001515162001a44919062003cd3565b81101562001ac8578260400151818151811062001a655762001a6562003bb9565b602002602001015160200151836040015182600162001a85919062003b76565b8151811062001a985762001a9862003bb9565b6020026020010151602001511062001ab35750600092915050565b8062001abf8162003b5a565b91505062001a30565b50600062001ad68362001bb5565b905062001ae66101008262003d00565b8351111562001af85750600092915050565b6000601082101562001b195762001b1160018362003cd3565b905062001b8b565b83604001515160010362001b375762001b11600483901c8362003cd3565b6004846040015160008151811062001b535762001b5362003bb9565b60200260200101516020015162001b6b919062003cd3565b62001b7890600162003b76565b62001b88906001901b8362003cd3565b90505b62001b996101008262003d00565b84511162001bab575060009392505050565b5060019392505050565b600080805b83604001515181101562001c15578360400151818151811062001be15762001be162003bb9565b6020026020010151602001516001901b8262001bfe919062003b76565b91508062001c0c8162003b5a565b91505062001bba565b5092915050565b603654604080516330f6284160e11b815290516000926001600160a01b0316916361ec50829160048083019260209291908290030181865afa15801562001c67573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001c8d919062003cb9565b9050600062001c9d828462003d00565b9050474782111562001cd457604051637c2e324160e11b8152600481018490526024810185905260448101829052606401620008eb565b6036546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801562001d0f573d6000803e3d6000fd5b5050505050565b6037805460009162001d29908462002d8b565b60005b83604001515181101562001dce5760008460400151828151811062001d555762001d5562003bb9565b602002602001015160000151905060008560400151838151811062001d7e5762001d7e62003bb9565b6020026020010151602001519050600062001da68383603762002ee29092919063ffffffff16565b90508360000362001db5578095505b505050808062001dc59062003b5a565b91505062001d2c565b50600062001ddd828462003cd3565b905060008360376000015462001df4919062003cd3565b603654604051636d3759b560e11b81526004810186905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b15801562001e4a57600080fd5b505af115801562001e5f573d6000803e3d6000fd5b50505050505050919050565b6000808260400151516001600160401b0381111562001e8e5762001e8e620036b5565b60405190808252806020026020018201604052801562001eb8578160200160208202803683370190505b50905060005b83604001515181101562001f26578360400151818151811062001ee55762001ee562003bb9565b60200260200101516000015182828151811062001f065762001f0662003bb9565b60209081029190910101528062001f1d8162003b5a565b91505062001ebe565b508060405160200162001f3a919062003d22565b60405160208183030381529060405280519060200120915050919050565b60008160000362001f8a57507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b8160010362001fba57507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b8160020362001fea57507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b816003036200201a57507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b816004036200204a57507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b816005036200207a57507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b81600603620020aa57507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b81600703620020da57507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200210a57507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200213a57507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a036200216a57507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b036200219a57507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c03620021ca57507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d03620021fa57507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200222a57507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200225a57507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b816010036200228a57507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620022ba57507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b81601203620022ea57507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200231a57507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200234a57507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b816015036200237a57507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620023aa57507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b81601703620023da57507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200240a57507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200243a57507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a036200246a57507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b036200249a57507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c03620024ca57507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d03620024fa57507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e036200252a57507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f036200255a57507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b816020036200258a57507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b81602103620025ba57507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b81602203620025ea57507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b816023036200261a57507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b816024036200264a57507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b816025036200267a57507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b81602603620026aa57507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b81602703620026da57507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b816028036200270a57507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b816029036200273a57507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a036200276a57507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b036200279a57507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c03620027ca57507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d03620027fa57507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e036200282a57507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f036200285a57507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b816030036200288a57507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b81603103620028ba57507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b81603203620028ea57507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b816033036200291a57507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b816034036200294a57507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b816035036200297a57507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b81603603620029aa57507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b81603703620029da57507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b8160380362002a0a57507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b8160390362002a3a57507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a0362002a6a57507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b0362002a9a57507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c0362002aca57507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d0362002afa57507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e0362002b2a57507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f0362002b5a57507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008eb565b919050565b62002ba9828262000c4e565b620009255762002bb98162003081565b62002bc683602062003094565b60405160200162002bd992919062003d5a565b60408051601f198184030181529082905262461bcd60e51b8252620008eb9160040162003dd3565b62002c0d828262000c4e565b620009255760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600062000c47836001600160a01b0384166200324d565b62002c92828262000c4e565b15620009255760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600062000c47836001600160a01b0384166200329f565b60005460ff1662000be15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401620008eb565b600082600001828154811062002d6c5762002d6c62003bb9565b9060005260206000200154905092915050565b62000925828262001659565b600062002d988262001bb5565b9050600062002dd18460000154846040015160008151811062002dbf5762002dbf62003bb9565b602002602001015160200151620033a3565b905061010062002de46104008262003d00565b62002df0919062003ba2565b62002dfc908262003ce9565b1580159062002e75575061010062002e176104008262003d00565b62002e23919062003ba2565b600162002e31848462003b76565b62002e3d919062003cd3565b62002e49919062003ba2565b61010062002e5a6104008262003d00565b62002e66919062003ba2565b62002e72908362003ba2565b14155b1562002edc5761010062002e8c6104008262003d00565b62002e98919062003ba2565b62002ea4908262003ce9565b61010062002eb56104008262003d00565b62002ec1919062003ba2565b62002ecd908362003b76565b62002ed9919062003cd3565b84555b50505050565b60008062002ef5856000015484620033a3565b9050600062002f086001851b8362003b76565b600287015490915062002f1e9060019062003cd3565b6001901b81111562002f7b5762002f3586620014c7565b62002f4086620033e1565b600286015462002f539060019062003cd3565b6001901b81111562002f705762002f6a86620033e1565b62002f40565b600286015460018701555b600286015462002f8c87866200347d565b60008087875b84811015620030615762002faa600288831c62003ce9565b60000362002fef57818b600201828154811062002fcb5762002fcb62003bb9565b60009182526020909120015562002fe481600162003b76565b60018c015562003061565b8a600201818154811062003007576200300762003bb9565b90600052602060002001549350819250838360405160200162003034929190918252602082015260400190565b60405160208183030381529060405280519060200120915080620030588162003b5a565b91505062002f92565b50620030716001891b8762003b76565b9099555092979650505050505050565b6060620008556001600160a01b03831660145b60606000620030a583600262003d00565b620030b290600262003b76565b6001600160401b03811115620030cc57620030cc620036b5565b6040519080825280601f01601f191660200182016040528015620030f7576020820181803683370190505b509050600360fc1b8160008151811062003115576200311562003bb9565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062003147576200314762003bb9565b60200101906001600160f81b031916908160001a90535060006200316d84600262003d00565b6200317a90600162003b76565b90505b6001811115620031fc576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620031b257620031b262003bb9565b1a60f81b828281518110620031cb57620031cb62003bb9565b60200101906001600160f81b031916908160001a90535060049490941c93620031f48162003de8565b90506200317d565b50831562000c475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620008eb565b6000818152600183016020526040812054620032965750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000855565b50600062000855565b6000818152600183016020526040812054801562003398576000620032c660018362003cd3565b8554909150600090620032dc9060019062003cd3565b90508181146200334857600086600001828154811062003300576200330062003bb9565b906000526020600020015490508087600001848154811062003326576200332662003bb9565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200335c576200335c62003e02565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000855565b600091505062000855565b600082808203620033b957600091505062000855565b620033c660018262003cd3565b831c9050620033d760018262003b76565b90921b9392505050565b60028101805490600090620033f860018462003cd3565b815481106200340b576200340b62003bb9565b60009182526020822001549150620034296200153160018562003cd3565b90508360020182826040516020016200344c929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b80826001015411156200348e575050565b60028201805460018085015491926000929091620034ac9162003cd3565b81548110620034bf57620034bf62003bb9565b906000526020600020015490506000620034e56001866001015462001531919062003cd3565b60018601549091505b83811015620035c4576040805160208082018690528183018590528251808303840181526060909201909252805191012086546200353190600290841c62003ce9565b6000036200358557809350620035478262001f58565b92508582106200357f57808760020183815481106200356a576200356a62003bb9565b60009182526020909120015550505050505050565b620035ae565b8660020182815481106200359d576200359d62003bb9565b906000526020600020015493508092505b5080620035bb8162003b5a565b915050620034ee565b505050505050565b6106778062003e1983390190565b600060208284031215620035ed57600080fd5b81356001600160e01b03198116811462000c4757600080fd5b6000602082840312156200361957600080fd5b5035919050565b80356001600160a01b038116811462002b9857600080fd5b600080604083850312156200364c57600080fd5b823591506200365e6020840162003620565b90509250929050565b6000602082840312156200367a57600080fd5b81356001600160801b038116811462000c4757600080fd5b60008060408385031215620036a657600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620036f057620036f0620036b5565b60405290565b604051606081016001600160401b0381118282101715620036f057620036f0620036b5565b604051601f8201601f191681016001600160401b0381118282101715620037465762003746620036b5565b604052919050565b60006001600160401b038211156200376a576200376a620036b5565b5060051b60200190565b600082601f8301126200378657600080fd5b813560206200379f62003799836200374e565b6200371b565b82815260069290921b84018101918181019086841115620037bf57600080fd5b8286015b84811015620038035760408189031215620037de5760008081fd5b620037e8620036cb565b813581528482013585820152835291830191604001620037c3565b509695505050505050565b6000606082840312156200382157600080fd5b6200382b620036f6565b9050813581526020808301356001600160401b03808211156200384d57600080fd5b818501915085601f8301126200386257600080fd5b813581811115620038775762003877620036b5565b6200388b601f8201601f191685016200371b565b8181528785838601011115620038a057600080fd5b81858501868301376000858383010152808587015250506040850135925080831115620038cc57600080fd5b5050620038dc8482850162003774565b60408301525092915050565b60006020808385031215620038fc57600080fd5b82356001600160401b03808211156200391457600080fd5b818501915085601f8301126200392957600080fd5b81356200393a62003799826200374e565b81815260059190911b830184019084810190888311156200395a57600080fd5b8585015b838110156200399757803585811115620039785760008081fd5b620039888b89838a01016200380e565b8452509186019186016200395e565b5098975050505050505050565b600081518084526020808501945080840160005b83811015620039d657815187529582019590820190600101620039b8565b509495945050505050565b608081526000620039f66080830187620039a4565b82810360208481019190915286518083528782019282019060005b8181101562003a2f5784518352938301939183019160010162003a11565b5050848103604086015262003a458188620039a4565b92505050828103606084015262003a5d8185620039a4565b979650505050505050565b6000806040838503121562003a7c57600080fd5b62003a878362003620565b946020939093013593505050565b60008060006060848603121562003aab57600080fd5b833592506020840135915062003ac46040850162003620565b90509250925092565b60006020828403121562003ae057600080fd5b81356001600160401b0381111562003af757600080fd5b62003b05848285016200380e565b949350505050565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003b6f5762003b6f62003b44565b5060010190565b8082018082111562000855576200085562003b44565b634e487b7160e01b600052601260045260246000fd5b60008262003bb45762003bb462003b8c565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b8381101562003bec57818101518382015260200162003bd2565b50506000910152565b6000815180845262003c0f81602086016020860162003bcf565b601f01601f19169290920160200192915050565b84815260006020858184015260408581850152608060608501528451608085015281850151606060a086015262003c5e60e086018262003bf5565b86830151868203607f190160c0880152805180835290850192506000918501905b8083101562003caa578351805183528601518683015292850192600192909201919084019062003c7f565b509a9950505050505050505050565b60006020828403121562003ccc57600080fd5b5051919050565b8181038181111562000855576200085562003b44565b60008262003cfb5762003cfb62003b8c565b500690565b600081600019048311821515161562003d1d5762003d1d62003b44565b500290565b815160009082906020808601845b8381101562003d4e5781518552938201939082019060010162003d30565b50929695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162003d9481601785016020880162003bcf565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162003dc781602884016020880162003bcf565b01602801949350505050565b60208152600062000c47602083018462003bf5565b60008162003dfa5762003dfa62003b44565b506000190190565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161067738038061067783398101604081905261002f9161014a565b6100383361009a565b806001600160401b0381111561005057610050610163565b604051908082528060200260200182016040528015610079578160200160208202803683370190505b50805161008e916001916020909101906100ea565b50506000600255610179565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215610125579160200282015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b5b808211156101315760008155600101610136565b60006020828403121561015c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6104ef806101886000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b6100956100903660046103ea565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b83660046103ea565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe3660046103ea565b610209565b6100bd6101113660046103ea565b61023e565b6100d3610124366004610403565b61029e565b60008061013d600254600180549050610317565b905060005b8181101561018a57836001828154811061015e5761015e61042c565b906000526020600020015403610178575060019392505050565b8061018281610458565b915050610142565b5060009392505050565b600061019e610331565b6002546001546000906101b19083610471565b905083600182815481106101c7576101c761042c565b90600052602060002001819055506001600260008282546101e89190610493565b9091555091949350505050565b6101fd610331565b610207600061038b565b565b6001546002546000919083108015610237575080610229600254836103db565b61023391906104a6565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610471565b8154811061028c5761028c61042c565b90600052602060002001549050919050565b6102a6610331565b6001600160a01b03811661030b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610265565b6103148161038b565b50565b60008183106103265781610328565b825b90505b92915050565b6000546001600160a01b031633146102075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116103265781610328565b6000602082840312156103fc57600080fd5b5035919050565b60006020828403121561041557600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161046a5761046a610442565b5060010190565b60008261048e57634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561032b5761032b610442565b8181038181111561032b5761032b61044256fea2646970667358221220ab4227e667a8cb673b86154f616db16af24f601e334d164960a5df4e7cbdcec464736f6c6343000810003365d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa26469706673582212205fedfe274d4897cf1474f34cf6d8edfdfbb0efbac83a7d94581c60f272e34c5e64736f6c63430008100033", + "bytecode": "0x60a06040523480156200001157600080fd5b50604051620048993803806200489983398101604081905262000034916200003d565b60805262000057565b6000602082840312156200005057600080fd5b5051919050565b60805161481f6200007a60003960008181610611015261136f015261481f6000f3fe6080604052600436106200023b5760003560e01c80638456cb59116200012f578063bc8c11f811620000ad578063d547741f1162000078578063d547741f1462000714578063e63ab1e91462000739578063ebdec6d3146200075e578063f06820541462000783578063fd54b228146200079b57600080fd5b8063bc8c11f8146200067a578063c7dd522114620006b2578063ca15c87314620006ca578063cd6dc68714620006ef57600080fd5b806393e405a011620000fa57806393e405a014620005e55780639bbbfdbb14620005fd578063a217fddf1462000633578063b464b53e146200064a578063b8a409ac146200066257600080fd5b80638456cb59146200056b578063900cf0cf14620005835780639010d07c146200059b57806391d1485414620005c057600080fd5b806338d45e1011620001bd5780635c975abb11620001885780635c975abb14620004885780636d7ad0fc14620004b057806377e1982414620004d55780637d59070814620004ed57806380f55605146200053a57600080fd5b806338d45e10146200040a5780633f4ba83a14620004225780634282b532146200043a57806349aa3395146200045f57600080fd5b8063231b0268116200020a578063231b0268146200032d578063248a9ca314620003455780632f2ff15d146200036a57806331bae174146200038f57806336568abe14620003e557600080fd5b806301ffc9a71462000240578063127f0f07146200027a57806318a641ef14620002df5780631deb0fca1462000306575b600080fd5b3480156200024d57600080fd5b50620002656200025f3660046200397e565b620007c9565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b5062000292620007f7565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b5062000304620002fe366004620039aa565b6200087e565b005b3480156200031357600080fd5b506200031e620008f4565b60405190815260200162000271565b3480156200033a57600080fd5b506200031e62000925565b3480156200035257600080fd5b506200031e62000364366004620039aa565b6200093a565b3480156200037757600080fd5b506200030462000389366004620039dc565b6200095d565b3480156200039c57600080fd5b50620003b4620003ae36600462003a0b565b62000985565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b348015620003f257600080fd5b506200030462000404366004620039dc565b62000b4e565b3480156200041757600080fd5b506200030462000b84565b3480156200042f57600080fd5b506200030462000bcc565b3480156200044757600080fd5b50620003b462000459366004620039aa565b62000bf1565b620004766200047036600462003caa565b62000c7e565b60405162000271949392919062003da3565b3480156200049557600080fd5b50600080516020620047ca8339815191525460ff1662000265565b348015620004bd57600080fd5b506200031e620004cf366004620039aa565b62000ed0565b348015620004e257600080fd5b506200031e62000ef0565b348015620004fa57600080fd5b50620005126200050c366004620039aa565b62000f07565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200054757600080fd5b506200055262000f5f565b6040516001600160a01b03909116815260200162000271565b3480156200057857600080fd5b506200030462000f7a565b3480156200059057600080fd5b506200031e62000f9f565b348015620005a857600080fd5b5062000552620005ba36600462003e2a565b62000fb4565b348015620005cd57600080fd5b5062000265620005df366004620039dc565b62000fe6565b348015620005f257600080fd5b506200031e6200101f565b3480156200060a57600080fd5b506200031e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156200064057600080fd5b506200031e600081565b3480156200065757600080fd5b506200029262001034565b3480156200066f57600080fd5b506200031e620010ad565b620006916200068b36600462003e4d565b620010c2565b60408051948552602085019390935291830152606082015260800162000271565b348015620006bf57600080fd5b50620005526200124f565b348015620006d757600080fd5b506200031e620006e9366004620039aa565b6200126d565b348015620006fc57600080fd5b50620003046200070e36600462003e85565b6200129d565b3480156200072157600080fd5b506200030462000733366004620039dc565b62001420565b3480156200074657600080fd5b506200031e6000805160206200478a83398151915281565b3480156200076b57600080fd5b50620003046200077d36600462003eb2565b62001442565b3480156200079057600080fd5b506200031e6200144f565b348015620007a857600080fd5b50620007b362001464565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b1480620007f15750620007f18262001504565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152620008336200153b565b6040805160c0810182526007830154815260088301546020820152600983015491810191909152600a8201546060820152600b8201546080820152600c9091015460a0820152919050565b60006200088a6200153b565b90508060100154431015620008bc5760405162461bcd60e51b8152600401620008b39062003eea565b60405180910390fd5b60005b828111620008ee57620008d16200155f565b620008db57505050565b620008e68162003f37565b9050620008bf565b505b5050565b600080620009016200153b565b9050620009118160010162001914565b6200091f8160010162001a5d565b91505090565b6000620009316200153b565b60100154905090565b6000908152600080516020620047aa833981519152602052604090206001015490565b62000968826200093a565b620009738162001a9a565b6200097f838362001aa6565b50505050565b6040805160608101825260008082526020820181905291810182905290620009ac6200153b565b9050620009b862000b84565b60018101546001600160801b0384161062000a225760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008b3565b600e8101546000905b8181111562000b05576000600262000a44848462003f53565b62000a50919062003f7f565b905083600e01818154811062000a6a5762000a6a62003f96565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290965087161062000ad35762000acb81600162003f53565b925062000afe565b84600001516001600160801b0316866001600160801b03161062000afa5750505050919050565b8091505b5062000a2b565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008b3565b6001600160a01b038116331462000b785760405163334bd91960e11b815260040160405180910390fd5b620008ee828262001af1565b600062000b906200153b565b9050806010015443101562000bb95760405162461bcd60e51b8152600401620008b39062003eea565b62000bc36200155f565b62000bb9575b50565b6000805160206200478a83398151915262000be78162001a9a565b62000bc962001b33565b604080516060810182526000808252602082018190529181019190915262000c186200153b565b600e01828154811062000c2f5762000c2f62003f96565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910416938301939093526001909201549181019190915292915050565b60608060608062000c8e62001b96565b600062000c9a6200153b565b9050806010015443101562000cc35760405162461bcd60e51b8152600401620008b39062003eea565b8551806001600160401b0381111562000ce05762000ce062003a36565b60405190808252806020026020018201604052801562000d0a578160200160208202803683370190505b509550806001600160401b0381111562000d285762000d2862003a36565b60405190808252806020026020018201604052801562000d52578160200160208202803683370190505b509450806001600160401b0381111562000d705762000d7062003a36565b60405190808252806020026020018201604052801562000d9a578160200160208202803683370190505b509350806001600160401b0381111562000db85762000db862003a36565b60405190808252806020026020018201604052801562000de2578160200160208202803683370190505b50925060005b8181101562000ec65760008060008062000e1e8c868151811062000e105762000e1062003f96565b6020026020010151620010c2565b9350935093509350838b868151811062000e3c5762000e3c62003f96565b602002602001018181525050828a868151811062000e5e5762000e5e62003f96565b6020026020010181815250508189868151811062000e805762000e8062003f96565b6020026020010181815250508088868151811062000ea25762000ea262003f96565b602002602001018181525050505050508062000ebe9062003f37565b905062000de8565b5050509193509193565b600062000edc6200153b565b6000928352600f0160205250604090205490565b60008062000efd6200153b565b6004015492915050565b604080518082019091526000808252602082015262000f256200153b565b6000928352600d0160209081526040928390208351808501909452546001600160801b038082168552600160801b90910416908301525090565b600062000f6b6200153b565b546001600160a01b0316919050565b6000805160206200478a83398151915262000f958162001a9a565b62000bc962001bcb565b600062000fab6200153b565b60050154905090565b60008281526000805160206200476a83398151915260208190526040822062000fde908462001c18565b949350505050565b6000918252600080516020620047aa833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006200102b6200153b565b60060154905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905290620010706200153b565b90508060100154431015620010995760405162461bcd60e51b8152600401620008b39062003eea565b620010a362000b84565b6200091f620007f7565b6000620010b96200153b565b60040154905090565b600080600080620010d262001b96565b6000620010de6200153b565b90508060100154431015620011075760405162461bcd60e51b8152600401620008b39062003eea565b6000620011136200153b565b9050620011208762001c26565b620011635760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008b3565b6200116e8762001e99565b92506200117b8362001f04565b6200118562000b84565b620011908762002005565b93506200119d8762002170565b60048201805497509095506001906000620011b9838a62003f53565b90915550620011cd90506001820162001914565b620011db8160010162001a5d565b81600f016000888152602001908152602001600020819055508487602001516001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558887878c600001516040516200123e949392919062003fe9565b60405180910390a350509193509193565b60006200125b6200153b565b601101546001600160a01b0316919050565b60008181526000805160206200476a833981519152602081905260408220620012969062002263565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015620012e35750825b90506000826001600160401b03166001148015620013005750303b155b9050811580156200130f575080155b156200132e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200135957845460ff60401b1916600160401b1785555b62001364876200226e565b620013d086620013957f00000000000000000000000000000000000000000000000000000000000000004362003f53565b6103e8604051620013a69062003970565b908152602001604051809103906000f080158015620013c9573d6000803e3d6000fd5b5062002383565b83156200141757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6200142b826200093a565b620014368162001a9a565b6200097f838362001af1565b620008ee83838362002383565b60006200145b6200153b565b60120154905090565b6000806000620014736200153b565b600101604051806060016040529081600082015481526020016001820154815260200160028201805480602002602001604051908101604052809291908181526020018280548015620014e657602002820191906000526020600020905b815481526020019060010190808311620014d1575b50505050508152505090508060000151816020015192509250509091565b60006001600160e01b03198216637965db0b60e01b1480620007f157506301ffc9a760e01b6001600160e01b0319831614620007f1565b7f2c76cc46aac583da4777117fb4419fbb43af6051f6353fccbce7a36d394f550090565b60006200156b62001b96565b6000620015776200153b565b60128101546005820154601083015492935060010102014381106200159f5760009250505090565b620015ad8260010162001914565b6000620015bd8360010162001a5d565b6011840154604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af11580156200160c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001632919062004084565b50600080436200164585611fff62003f53565b10156200167757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709050806200183f565b62001682846200245f565b6001860154604080516020810184905290810186905260608101919091529091506080016040516020818303038152906040528051906020012091506000856006015490506000866001016000015490506040518060400160405280836001600160801b03168152602001826001600160801b031681525087600d01600086815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555090505086600e016040518060600160405280846001600160801b03168152602001836001600160801b0316815260200186815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015550508660010160000154876006018190555050505b600185600501600082825462001856919062003f53565b90915550506040805160c0810182526005870154808252602080830188905282840187905260018901546060808501829052608080860188905260a090950188905260078b0184905560088b018a905560098b01899055600a8b01829055600b8b01879055600c8b0188905560048b015486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a360019550505050505090565b6002810154600182015403620019275750565b6002810180546001808401549192600092909162001945916200409e565b8154811062001958576200195862003f96565b90600052602060002001549050600062001984600185600101546200197e91906200409e565b62002491565b60018501549091505b8381101562001a5257604080516020808201869052818301859052825180830384018152606090920190925280519101208554620019d090600290841c620040b4565b60000362001a1357809350620019e68262002491565b92508086600201838154811062001a015762001a0162003f96565b60009182526020909120015562001a3c565b85600201828154811062001a2b5762001a2b62003f96565b906000526020600020015493508092505b508062001a498162003f37565b9150506200198d565b505050600190910155565b6002810180546000919062001a75906001906200409e565b8154811062001a885762001a8862003f96565b90600052602060002001549050919050565b62000bc98133620030d6565b60006000805160206200476a8339815191528162001ac5858562003113565b9050801562000fde57600085815260208390526040902062001ae89085620031bf565b50949350505050565b60006000805160206200476a8339815191528162001b108585620031d6565b9050801562000fde57600085815260208390526040902062001ae8908562003257565b62001b3d6200326e565b600080516020620047ca833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b600080516020620047ca8339815191525460ff161562001bc95760405163d93c066560e01b815260040160405180910390fd5b565b62001bd562001b96565b600080516020620047ca833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583362001b78565b6000620012968383620032a0565b60208101516000906001600160a01b031662001c4457506000919050565b815160408101515160000362001c5d5750600092915050565b604081015180516004919062001c76906001906200409e565b8151811062001c895762001c8962003f96565b602002602001015160200151826040015160008151811062001caf5762001caf62003f96565b60200260200101516020015162001cc791906200409e565b1062001cd65750600092915050565b6040816040015160008151811062001cf25762001cf262003f96565b6020026020010151602001511062001d0d5750600092915050565b60005b600182604001515162001d2491906200409e565b81101562001da9578160400151818151811062001d455762001d4562003f96565b602002602001015160200151826040015182600162001d65919062003f53565b8151811062001d785762001d7862003f96565b6020026020010151602001511062001d94575060009392505050565b8062001da08162003f37565b91505062001d10565b50600062001db78462001e99565b905062001dc761010082620040cb565b8251111562001dda575060009392505050565b6000601082101562001dfb5762001df36001836200409e565b905062001e6d565b82604001515160010362001e195762001df3600483901c836200409e565b6004836040015160008151811062001e355762001e3562003f96565b60200260200101516020015162001e4d91906200409e565b62001e5a90600162003f53565b62001e6a906001901b836200409e565b90505b62001e7b61010082620040cb565b83511162001e8e57506000949350505050565b506001949350505050565b805160009081805b82604001515181101562001efc578260400151818151811062001ec85762001ec862003f96565b6020026020010151602001516001901b8262001ee5919062003f53565b91508062001ef38162003f37565b91505062001ea1565b509392505050565b600062001f1062000f5f565b6001600160a01b03166361ec50826040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f74919062004084565b9050600062001f848284620040cb565b9050474782111562001fbb57604051637c2e324160e11b8152600481018490526024810185905260448101829052606401620008b3565b62001fc562000f5f565b6001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505015801562001ffe573d6000803e3d6000fd5b5050505050565b600080620020126200153b565b600181018054919250620020279085620032cd565b835160005b816040015151811015620020d05760008260400151828151811062002055576200205562003f96565b60200260200101516000015190506000836040015183815181106200207e576200207e62003f96565b60200260200101516020015190506000620020a8838389600101620034279092919063ffffffff16565b905083600003620020b7578097505b5050508080620020c79062003f37565b9150506200202c565b506000620020df83866200409e565b90506000858560010160000154620020f891906200409e565b8554604051636d3759b560e11b81526004810187905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b1580156200214d57600080fd5b505af115801562002162573d6000803e3d6000fd5b505050505050505050919050565b80516040810151516000919082906001600160401b0381111562002198576200219862003a36565b604051908082528060200260200182016040528015620021c2578160200160208202803683370190505b50905060005b826040015151811015620022305782604001518181518110620021ef57620021ef62003f96565b60200260200101516000015182828151811062002210576200221062003f96565b602090810291909101015280620022278162003f37565b915050620021c8565b5080604051602001620022449190620040e5565b6040516020818303038152906040528051906020012092505050919050565b6000620007f1825490565b60006200227a6200153b565b6001808201819055600382018054808301825560009182526020822001556002820155905080546001600160a01b0319166001600160a01b0383161781556000600582018190556040805160c081018252918252601083015460208301528101620022e86001840162001a5d565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706040808401829052606093840191909152835160078601559083015160088501558201516009840155810151600a8301556080810151600b83015560a00151600c8201556200236760003362001aa6565b50620008ee6000805160206200478a8339815191523362001aa6565b60006200238f6200153b565b90508060120154600003620023a657601281018490555b8060100154600003620023bb57601081018390555b60118101546001600160a01b03166200097f576001600160a01b0382166200243a576103e8604051620023ee9062003970565b908152602001604051809103906000f08015801562002411573d6000803e3d6000fd5b506011820180546001600160a01b0319166001600160a01b03929092169190911790556200097f565b6011810180546001600160a01b0384166001600160a01b031990911617905550505050565b60004382810361010081118015620024795750611fff8111155b6200248657834062000fde565b62000fde84620035c6565b600081600003620024c357507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b81600103620024f357507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b816002036200252357507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b816003036200255357507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b816004036200258357507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b81600503620025b357507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b81600603620025e357507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b816007036200261357507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200264357507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200267357507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a03620026a357507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b03620026d357507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c036200270357507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d036200273357507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200276357507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200279357507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b81601003620027c357507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620027f357507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b816012036200282357507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200285357507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200288357507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b81601503620028b357507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620028e357507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b816017036200291357507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200294357507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200297357507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a03620029a357507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b03620029d357507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c0362002a0357507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d0362002a3357507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e0362002a6357507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f0362002a9357507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b8160200362002ac357507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b8160210362002af357507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b8160220362002b2357507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b8160230362002b5357507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b8160240362002b8357507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b8160250362002bb357507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b8160260362002be357507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b8160270362002c1357507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b8160280362002c4357507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b8160290362002c7357507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a0362002ca357507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b0362002cd357507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c0362002d0357507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d0362002d3357507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e0362002d6357507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f0362002d9357507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b8160300362002dc357507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b8160310362002df357507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b8160320362002e2357507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b8160330362002e5357507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b8160340362002e8357507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b8160350362002eb357507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b8160360362002ee357507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b8160370362002f1357507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b8160380362002f4357507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b8160390362002f7357507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a0362002fa357507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b0362002fd357507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c036200300357507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d036200303357507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e036200306357507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f036200309357507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008b3565b919050565b620030e2828262000fe6565b620008f05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008b3565b6000600080516020620047aa83398151915262003131848462000fe6565b620031b4576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055620031693390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620007f1565b6000915050620007f1565b600062001296836001600160a01b038416620035fc565b6000600080516020620047aa833981519152620031f4848462000fe6565b15620031b4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620007f1565b600062001296836001600160a01b0384166200364e565b600080516020620047ca8339815191525460ff1662001bc957604051638dfc202b60e01b815260040160405180910390fd5b6000826000018281548110620032ba57620032ba62003f96565b9060005260206000200154905092915050565b6000620032da8262001e99565b9050600062003317846000015484600001516040015160008151811062003305576200330562003f96565b60200260200101516020015162003747565b90506101006200332a61040082620040cb565b62003336919062003f7f565b620033429082620040b4565b15801590620033bb57506101006200335d61040082620040cb565b62003369919062003f7f565b600162003377848462003f53565b6200338391906200409e565b6200338f919062003f7f565b610100620033a061040082620040cb565b620033ac919062003f7f565b620033b8908362003f7f565b14155b156200097f57610100620033d261040082620040cb565b620033de919062003f7f565b620033ea9082620040b4565b610100620033fb61040082620040cb565b62003407919062003f7f565b62003413908362003f53565b6200341f91906200409e565b845550505050565b6000806200343a85600001548462003747565b905060006200344d6001851b8362003f53565b600287015490915062003463906001906200409e565b6001901b811115620034c0576200347a8662001914565b620034858662003785565b600286015462003498906001906200409e565b6001901b811115620034b557620034af8662003785565b62003485565b600286015460018701555b6002860154620034d1878662003821565b60008087875b84811015620035a657620034ef600288831c620040b4565b6000036200353457818b600201828154811062003510576200351062003f96565b6000918252602090912001556200352981600162003f53565b60018c0155620035a6565b8a60020181815481106200354c576200354c62003f96565b90600052602060002001549350819250838360405160200162003579929190918252602082015260400190565b604051602081830303815290604052805190602001209150806200359d8162003f37565b915050620034d7565b50620035b66001891b8762003f53565b9099555092979650505050505050565b600081600052602060006020600071f90827f1c53a10cb7a02335b1753200029355afa60003d111615620030d157505060005190565b60008181526001830160205260408120546200364557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620007f1565b506000620007f1565b60008181526001830160205260408120548015620031b4576000620036756001836200409e565b85549091506000906200368b906001906200409e565b9050808214620036f7576000866000018281548110620036af57620036af62003f96565b9060005260206000200154905080876000018481548110620036d557620036d562003f96565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200370b576200370b6200411d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620007f1565b6000828082036200375d576000915050620007f1565b6200376a6001826200409e565b831c90506200377b60018262003f53565b90921b9392505050565b600281018054906000906200379c6001846200409e565b81548110620037af57620037af62003f96565b60009182526020822001549150620037cd6200197e6001856200409e565b9050836002018282604051602001620037f0929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b808260010154111562003832575050565b6002820180546001808501549192600092909162003850916200409e565b8154811062003863576200386362003f96565b90600052602060002001549050600062003889600186600101546200197e91906200409e565b60018601549091505b838110156200396857604080516020808201869052818301859052825180830384018152606090920190925280519101208654620038d590600290841c620040b4565b6000036200392957809350620038eb8262002491565b92508582106200392357808760020183815481106200390e576200390e62003f96565b60009182526020909120015550505050505050565b62003952565b86600201828154811062003941576200394162003f96565b906000526020600020015493508092505b50806200395f8162003f37565b91505062003892565b505050505050565b610636806200413483390190565b6000602082840312156200399157600080fd5b81356001600160e01b0319811681146200129657600080fd5b600060208284031215620039bd57600080fd5b5035919050565b80356001600160a01b0381168114620030d157600080fd5b60008060408385031215620039f057600080fd5b8235915062003a0260208401620039c4565b90509250929050565b60006020828403121562003a1e57600080fd5b81356001600160801b03811681146200129657600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562003a715762003a7162003a36565b60405290565b604051606081016001600160401b038111828210171562003a715762003a7162003a36565b604051601f8201601f191681016001600160401b038111828210171562003ac75762003ac762003a36565b604052919050565b60006001600160401b0382111562003aeb5762003aeb62003a36565b5060051b60200190565b600082601f83011262003b0757600080fd5b8135602062003b2062003b1a8362003acf565b62003a9c565b82815260069290921b8401810191818101908684111562003b4057600080fd5b8286015b8481101562003b84576040818903121562003b5f5760008081fd5b62003b6962003a4c565b81358152848201358582015283529183019160400162003b44565b509695505050505050565b60006040828403121562003ba257600080fd5b62003bac62003a4c565b905081356001600160401b038082111562003bc657600080fd5b908301906060828603121562003bdb57600080fd5b62003be562003a77565b823581526020808401358381111562003bfd57600080fd5b8401601f8101881362003c0f57600080fd5b80358481111562003c245762003c2462003a36565b62003c38601f8201601f1916840162003a9c565b818152898483850101111562003c4d57600080fd5b81848401858301376000848383010152808486015250505060408401358381111562003c7857600080fd5b62003c868882870162003af5565b60408401525081855262003c9c818701620039c4565b818601525050505092915050565b6000602080838503121562003cbe57600080fd5b82356001600160401b038082111562003cd657600080fd5b818501915085601f83011262003ceb57600080fd5b813562003cfc62003b1a8262003acf565b81815260059190911b8301840190848101908883111562003d1c57600080fd5b8585015b8381101562003d595780358581111562003d3a5760008081fd5b62003d4a8b89838a010162003b8f565b84525091860191860162003d20565b5098975050505050505050565b600081518084526020808501945080840160005b8381101562003d985781518752958201959082019060010162003d7a565b509495945050505050565b60808152600062003db8608083018762003d66565b82810360208481019190915286518083528782019282019060005b8181101562003df15784518352938301939183019160010162003dd3565b5050848103604086015262003e07818862003d66565b92505050828103606084015262003e1f818562003d66565b979650505050505050565b6000806040838503121562003e3e57600080fd5b50508035926020909101359150565b60006020828403121562003e6057600080fd5b81356001600160401b0381111562003e7757600080fd5b62000fde8482850162003b8f565b6000806040838503121562003e9957600080fd5b62003ea483620039c4565b946020939093013593505050565b60008060006060848603121562003ec857600080fd5b833592506020840135915062003ee160408501620039c4565b90509250925092565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003f4c5762003f4c62003f21565b5060010190565b80820180821115620007f157620007f162003f21565b634e487b7160e01b600052601260045260246000fd5b60008262003f915762003f9162003f69565b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101562003d9857815180518852830151838801526040909601959082019060010162003fc0565b848152600060208581840152846040840152608060608401528351608084015280840151606060a085015280518060e086015260005b818110156200403e57828101840151868201610100015283016200401f565b5061010092506000838287010152601f19601f8201168501915050604085015160808583030160c0860152620040778383018262003fac565b9998505050505050505050565b6000602082840312156200409757600080fd5b5051919050565b81810381811115620007f157620007f162003f21565b600082620040c657620040c662003f69565b500690565b8082028115828204841417620007f157620007f162003f21565b815160009082906020808601845b838110156200411157815185529382019390820190600101620040f3565b50929695505050505050565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161063638038061063683398101604081905261002f91610171565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e816100c1565b50806001600160401b038111156100775761007761018a565b6040519080825280602002602001820160405280156100a0578160200160208202803683370190505b5080516100b591600191602090910190610111565b505060006002556101a0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561014c579160200282015b8281111561014c578251825591602001919060010190610131565b5061015892915061015c565b5090565b5b80821115610158576000815560010161015d565b60006020828403121561018357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b610487806101af6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b610095610090366004610382565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b8366004610382565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe366004610382565b610209565b6100bd610111366004610382565b61023e565b6100d361012436600461039b565b61029e565b60008061013d6002546001805490506102dc565b905060005b8181101561018a57836001828154811061015e5761015e6103c4565b906000526020600020015403610178575060019392505050565b80610182816103f0565b915050610142565b5060009392505050565b600061019e6102f6565b6002546001546000906101b19083610409565b905083600182815481106101c7576101c76103c4565b90600052602060002001819055506001600260008282546101e8919061042b565b9091555091949350505050565b6101fd6102f6565b6102076000610323565b565b600154600254600091908310801561023757508061022960025483610373565b610233919061043e565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610409565b8154811061028c5761028c6103c4565b90600052602060002001549050919050565b6102a66102f6565b6001600160a01b0381166102d057604051631e4fbdf760e01b815260006004820152602401610265565b6102d981610323565b50565b60008183106102eb57816102ed565b825b90505b92915050565b6000546001600160a01b031633146102075760405163118cdaa760e01b8152336004820152602401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116102eb57816102ed565b60006020828403121561039457600080fd5b5035919050565b6000602082840312156103ad57600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610402576104026103da565b5060010190565b60008261042657634e487b7160e01b600052601260045260246000fd5b500690565b808201808211156102f0576102f06103da565b818103818111156102f0576102f06103da56fea2646970667358221220635494212f9012021fb76812bcb699d1b59e0137921bc1364e1859dad84af54164736f6c63430008140033c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220df76dc2958fa4ff2f7959610484206d6d3c81bcdd4b55889dba47f0c70a76b6864736f6c63430008140033", + "deployedBytecode": "0x6080604052600436106200023b5760003560e01c80638456cb59116200012f578063bc8c11f811620000ad578063d547741f1162000078578063d547741f1462000714578063e63ab1e91462000739578063ebdec6d3146200075e578063f06820541462000783578063fd54b228146200079b57600080fd5b8063bc8c11f8146200067a578063c7dd522114620006b2578063ca15c87314620006ca578063cd6dc68714620006ef57600080fd5b806393e405a011620000fa57806393e405a014620005e55780639bbbfdbb14620005fd578063a217fddf1462000633578063b464b53e146200064a578063b8a409ac146200066257600080fd5b80638456cb59146200056b578063900cf0cf14620005835780639010d07c146200059b57806391d1485414620005c057600080fd5b806338d45e1011620001bd5780635c975abb11620001885780635c975abb14620004885780636d7ad0fc14620004b057806377e1982414620004d55780637d59070814620004ed57806380f55605146200053a57600080fd5b806338d45e10146200040a5780633f4ba83a14620004225780634282b532146200043a57806349aa3395146200045f57600080fd5b8063231b0268116200020a578063231b0268146200032d578063248a9ca314620003455780632f2ff15d146200036a57806331bae174146200038f57806336568abe14620003e557600080fd5b806301ffc9a71462000240578063127f0f07146200027a57806318a641ef14620002df5780631deb0fca1462000306575b600080fd5b3480156200024d57600080fd5b50620002656200025f3660046200397e565b620007c9565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b5062000292620007f7565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b5062000304620002fe366004620039aa565b6200087e565b005b3480156200031357600080fd5b506200031e620008f4565b60405190815260200162000271565b3480156200033a57600080fd5b506200031e62000925565b3480156200035257600080fd5b506200031e62000364366004620039aa565b6200093a565b3480156200037757600080fd5b506200030462000389366004620039dc565b6200095d565b3480156200039c57600080fd5b50620003b4620003ae36600462003a0b565b62000985565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b348015620003f257600080fd5b506200030462000404366004620039dc565b62000b4e565b3480156200041757600080fd5b506200030462000b84565b3480156200042f57600080fd5b506200030462000bcc565b3480156200044757600080fd5b50620003b462000459366004620039aa565b62000bf1565b620004766200047036600462003caa565b62000c7e565b60405162000271949392919062003da3565b3480156200049557600080fd5b50600080516020620047ca8339815191525460ff1662000265565b348015620004bd57600080fd5b506200031e620004cf366004620039aa565b62000ed0565b348015620004e257600080fd5b506200031e62000ef0565b348015620004fa57600080fd5b50620005126200050c366004620039aa565b62000f07565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200054757600080fd5b506200055262000f5f565b6040516001600160a01b03909116815260200162000271565b3480156200057857600080fd5b506200030462000f7a565b3480156200059057600080fd5b506200031e62000f9f565b348015620005a857600080fd5b5062000552620005ba36600462003e2a565b62000fb4565b348015620005cd57600080fd5b5062000265620005df366004620039dc565b62000fe6565b348015620005f257600080fd5b506200031e6200101f565b3480156200060a57600080fd5b506200031e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156200064057600080fd5b506200031e600081565b3480156200065757600080fd5b506200029262001034565b3480156200066f57600080fd5b506200031e620010ad565b620006916200068b36600462003e4d565b620010c2565b60408051948552602085019390935291830152606082015260800162000271565b348015620006bf57600080fd5b50620005526200124f565b348015620006d757600080fd5b506200031e620006e9366004620039aa565b6200126d565b348015620006fc57600080fd5b50620003046200070e36600462003e85565b6200129d565b3480156200072157600080fd5b506200030462000733366004620039dc565b62001420565b3480156200074657600080fd5b506200031e6000805160206200478a83398151915281565b3480156200076b57600080fd5b50620003046200077d36600462003eb2565b62001442565b3480156200079057600080fd5b506200031e6200144f565b348015620007a857600080fd5b50620007b362001464565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b1480620007f15750620007f18262001504565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152620008336200153b565b6040805160c0810182526007830154815260088301546020820152600983015491810191909152600a8201546060820152600b8201546080820152600c9091015460a0820152919050565b60006200088a6200153b565b90508060100154431015620008bc5760405162461bcd60e51b8152600401620008b39062003eea565b60405180910390fd5b60005b828111620008ee57620008d16200155f565b620008db57505050565b620008e68162003f37565b9050620008bf565b505b5050565b600080620009016200153b565b9050620009118160010162001914565b6200091f8160010162001a5d565b91505090565b6000620009316200153b565b60100154905090565b6000908152600080516020620047aa833981519152602052604090206001015490565b62000968826200093a565b620009738162001a9a565b6200097f838362001aa6565b50505050565b6040805160608101825260008082526020820181905291810182905290620009ac6200153b565b9050620009b862000b84565b60018101546001600160801b0384161062000a225760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008b3565b600e8101546000905b8181111562000b05576000600262000a44848462003f53565b62000a50919062003f7f565b905083600e01818154811062000a6a5762000a6a62003f96565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290965087161062000ad35762000acb81600162003f53565b925062000afe565b84600001516001600160801b0316866001600160801b03161062000afa5750505050919050565b8091505b5062000a2b565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008b3565b6001600160a01b038116331462000b785760405163334bd91960e11b815260040160405180910390fd5b620008ee828262001af1565b600062000b906200153b565b9050806010015443101562000bb95760405162461bcd60e51b8152600401620008b39062003eea565b62000bc36200155f565b62000bb9575b50565b6000805160206200478a83398151915262000be78162001a9a565b62000bc962001b33565b604080516060810182526000808252602082018190529181019190915262000c186200153b565b600e01828154811062000c2f5762000c2f62003f96565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910416938301939093526001909201549181019190915292915050565b60608060608062000c8e62001b96565b600062000c9a6200153b565b9050806010015443101562000cc35760405162461bcd60e51b8152600401620008b39062003eea565b8551806001600160401b0381111562000ce05762000ce062003a36565b60405190808252806020026020018201604052801562000d0a578160200160208202803683370190505b509550806001600160401b0381111562000d285762000d2862003a36565b60405190808252806020026020018201604052801562000d52578160200160208202803683370190505b509450806001600160401b0381111562000d705762000d7062003a36565b60405190808252806020026020018201604052801562000d9a578160200160208202803683370190505b509350806001600160401b0381111562000db85762000db862003a36565b60405190808252806020026020018201604052801562000de2578160200160208202803683370190505b50925060005b8181101562000ec65760008060008062000e1e8c868151811062000e105762000e1062003f96565b6020026020010151620010c2565b9350935093509350838b868151811062000e3c5762000e3c62003f96565b602002602001018181525050828a868151811062000e5e5762000e5e62003f96565b6020026020010181815250508189868151811062000e805762000e8062003f96565b6020026020010181815250508088868151811062000ea25762000ea262003f96565b602002602001018181525050505050508062000ebe9062003f37565b905062000de8565b5050509193509193565b600062000edc6200153b565b6000928352600f0160205250604090205490565b60008062000efd6200153b565b6004015492915050565b604080518082019091526000808252602082015262000f256200153b565b6000928352600d0160209081526040928390208351808501909452546001600160801b038082168552600160801b90910416908301525090565b600062000f6b6200153b565b546001600160a01b0316919050565b6000805160206200478a83398151915262000f958162001a9a565b62000bc962001bcb565b600062000fab6200153b565b60050154905090565b60008281526000805160206200476a83398151915260208190526040822062000fde908462001c18565b949350505050565b6000918252600080516020620047aa833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006200102b6200153b565b60060154905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905290620010706200153b565b90508060100154431015620010995760405162461bcd60e51b8152600401620008b39062003eea565b620010a362000b84565b6200091f620007f7565b6000620010b96200153b565b60040154905090565b600080600080620010d262001b96565b6000620010de6200153b565b90508060100154431015620011075760405162461bcd60e51b8152600401620008b39062003eea565b6000620011136200153b565b9050620011208762001c26565b620011635760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008b3565b6200116e8762001e99565b92506200117b8362001f04565b6200118562000b84565b620011908762002005565b93506200119d8762002170565b60048201805497509095506001906000620011b9838a62003f53565b90915550620011cd90506001820162001914565b620011db8160010162001a5d565b81600f016000888152602001908152602001600020819055508487602001516001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558887878c600001516040516200123e949392919062003fe9565b60405180910390a350509193509193565b60006200125b6200153b565b601101546001600160a01b0316919050565b60008181526000805160206200476a833981519152602081905260408220620012969062002263565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015620012e35750825b90506000826001600160401b03166001148015620013005750303b155b9050811580156200130f575080155b156200132e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200135957845460ff60401b1916600160401b1785555b62001364876200226e565b620013d086620013957f00000000000000000000000000000000000000000000000000000000000000004362003f53565b6103e8604051620013a69062003970565b908152602001604051809103906000f080158015620013c9573d6000803e3d6000fd5b5062002383565b83156200141757845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b6200142b826200093a565b620014368162001a9a565b6200097f838362001af1565b620008ee83838362002383565b60006200145b6200153b565b60120154905090565b6000806000620014736200153b565b600101604051806060016040529081600082015481526020016001820154815260200160028201805480602002602001604051908101604052809291908181526020018280548015620014e657602002820191906000526020600020905b815481526020019060010190808311620014d1575b50505050508152505090508060000151816020015192509250509091565b60006001600160e01b03198216637965db0b60e01b1480620007f157506301ffc9a760e01b6001600160e01b0319831614620007f1565b7f2c76cc46aac583da4777117fb4419fbb43af6051f6353fccbce7a36d394f550090565b60006200156b62001b96565b6000620015776200153b565b60128101546005820154601083015492935060010102014381106200159f5760009250505090565b620015ad8260010162001914565b6000620015bd8360010162001a5d565b6011840154604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af11580156200160c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001632919062004084565b50600080436200164585611fff62003f53565b10156200167757507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4709050806200183f565b62001682846200245f565b6001860154604080516020810184905290810186905260608101919091529091506080016040516020818303038152906040528051906020012091506000856006015490506000866001016000015490506040518060400160405280836001600160801b03168152602001826001600160801b031681525087600d01600086815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555090505086600e016040518060600160405280846001600160801b03168152602001836001600160801b0316815260200186815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015550508660010160000154876006018190555050505b600185600501600082825462001856919062003f53565b90915550506040805160c0810182526005870154808252602080830188905282840187905260018901546060808501829052608080860188905260a090950188905260078b0184905560088b018a905560098b01899055600a8b01829055600b8b01879055600c8b0188905560048b015486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a360019550505050505090565b6002810154600182015403620019275750565b6002810180546001808401549192600092909162001945916200409e565b8154811062001958576200195862003f96565b90600052602060002001549050600062001984600185600101546200197e91906200409e565b62002491565b60018501549091505b8381101562001a5257604080516020808201869052818301859052825180830384018152606090920190925280519101208554620019d090600290841c620040b4565b60000362001a1357809350620019e68262002491565b92508086600201838154811062001a015762001a0162003f96565b60009182526020909120015562001a3c565b85600201828154811062001a2b5762001a2b62003f96565b906000526020600020015493508092505b508062001a498162003f37565b9150506200198d565b505050600190910155565b6002810180546000919062001a75906001906200409e565b8154811062001a885762001a8862003f96565b90600052602060002001549050919050565b62000bc98133620030d6565b60006000805160206200476a8339815191528162001ac5858562003113565b9050801562000fde57600085815260208390526040902062001ae89085620031bf565b50949350505050565b60006000805160206200476a8339815191528162001b108585620031d6565b9050801562000fde57600085815260208390526040902062001ae8908562003257565b62001b3d6200326e565b600080516020620047ca833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b600080516020620047ca8339815191525460ff161562001bc95760405163d93c066560e01b815260040160405180910390fd5b565b62001bd562001b96565b600080516020620047ca833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583362001b78565b6000620012968383620032a0565b60208101516000906001600160a01b031662001c4457506000919050565b815160408101515160000362001c5d5750600092915050565b604081015180516004919062001c76906001906200409e565b8151811062001c895762001c8962003f96565b602002602001015160200151826040015160008151811062001caf5762001caf62003f96565b60200260200101516020015162001cc791906200409e565b1062001cd65750600092915050565b6040816040015160008151811062001cf25762001cf262003f96565b6020026020010151602001511062001d0d5750600092915050565b60005b600182604001515162001d2491906200409e565b81101562001da9578160400151818151811062001d455762001d4562003f96565b602002602001015160200151826040015182600162001d65919062003f53565b8151811062001d785762001d7862003f96565b6020026020010151602001511062001d94575060009392505050565b8062001da08162003f37565b91505062001d10565b50600062001db78462001e99565b905062001dc761010082620040cb565b8251111562001dda575060009392505050565b6000601082101562001dfb5762001df36001836200409e565b905062001e6d565b82604001515160010362001e195762001df3600483901c836200409e565b6004836040015160008151811062001e355762001e3562003f96565b60200260200101516020015162001e4d91906200409e565b62001e5a90600162003f53565b62001e6a906001901b836200409e565b90505b62001e7b61010082620040cb565b83511162001e8e57506000949350505050565b506001949350505050565b805160009081805b82604001515181101562001efc578260400151818151811062001ec85762001ec862003f96565b6020026020010151602001516001901b8262001ee5919062003f53565b91508062001ef38162003f37565b91505062001ea1565b509392505050565b600062001f1062000f5f565b6001600160a01b03166361ec50826040518163ffffffff1660e01b8152600401602060405180830381865afa15801562001f4e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001f74919062004084565b9050600062001f848284620040cb565b9050474782111562001fbb57604051637c2e324160e11b8152600481018490526024810185905260448101829052606401620008b3565b62001fc562000f5f565b6001600160a01b03166108fc839081150290604051600060405180830381858888f1935050505015801562001ffe573d6000803e3d6000fd5b5050505050565b600080620020126200153b565b600181018054919250620020279085620032cd565b835160005b816040015151811015620020d05760008260400151828151811062002055576200205562003f96565b60200260200101516000015190506000836040015183815181106200207e576200207e62003f96565b60200260200101516020015190506000620020a8838389600101620034279092919063ffffffff16565b905083600003620020b7578097505b5050508080620020c79062003f37565b9150506200202c565b506000620020df83866200409e565b90506000858560010160000154620020f891906200409e565b8554604051636d3759b560e11b81526004810187905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b1580156200214d57600080fd5b505af115801562002162573d6000803e3d6000fd5b505050505050505050919050565b80516040810151516000919082906001600160401b0381111562002198576200219862003a36565b604051908082528060200260200182016040528015620021c2578160200160208202803683370190505b50905060005b826040015151811015620022305782604001518181518110620021ef57620021ef62003f96565b60200260200101516000015182828151811062002210576200221062003f96565b602090810291909101015280620022278162003f37565b915050620021c8565b5080604051602001620022449190620040e5565b6040516020818303038152906040528051906020012092505050919050565b6000620007f1825490565b60006200227a6200153b565b6001808201819055600382018054808301825560009182526020822001556002820155905080546001600160a01b0319166001600160a01b0383161781556000600582018190556040805160c081018252918252601083015460208301528101620022e86001840162001a5d565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706040808401829052606093840191909152835160078601559083015160088501558201516009840155810151600a8301556080810151600b83015560a00151600c8201556200236760003362001aa6565b50620008ee6000805160206200478a8339815191523362001aa6565b60006200238f6200153b565b90508060120154600003620023a657601281018490555b8060100154600003620023bb57601081018390555b60118101546001600160a01b03166200097f576001600160a01b0382166200243a576103e8604051620023ee9062003970565b908152602001604051809103906000f08015801562002411573d6000803e3d6000fd5b506011820180546001600160a01b0319166001600160a01b03929092169190911790556200097f565b6011810180546001600160a01b0384166001600160a01b031990911617905550505050565b60004382810361010081118015620024795750611fff8111155b6200248657834062000fde565b62000fde84620035c6565b600081600003620024c357507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b81600103620024f357507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b816002036200252357507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b816003036200255357507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b816004036200258357507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b81600503620025b357507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b81600603620025e357507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b816007036200261357507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200264357507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200267357507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a03620026a357507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b03620026d357507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c036200270357507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d036200273357507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200276357507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200279357507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b81601003620027c357507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620027f357507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b816012036200282357507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200285357507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200288357507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b81601503620028b357507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620028e357507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b816017036200291357507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200294357507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200297357507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a03620029a357507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b03620029d357507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c0362002a0357507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d0362002a3357507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e0362002a6357507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f0362002a9357507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b8160200362002ac357507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b8160210362002af357507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b8160220362002b2357507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b8160230362002b5357507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b8160240362002b8357507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b8160250362002bb357507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b8160260362002be357507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b8160270362002c1357507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b8160280362002c4357507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b8160290362002c7357507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a0362002ca357507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b0362002cd357507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c0362002d0357507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d0362002d3357507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e0362002d6357507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f0362002d9357507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b8160300362002dc357507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b8160310362002df357507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b8160320362002e2357507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b8160330362002e5357507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b8160340362002e8357507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b8160350362002eb357507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b8160360362002ee357507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b8160370362002f1357507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b8160380362002f4357507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b8160390362002f7357507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a0362002fa357507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b0362002fd357507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c036200300357507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d036200303357507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e036200306357507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f036200309357507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008b3565b919050565b620030e2828262000fe6565b620008f05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008b3565b6000600080516020620047aa83398151915262003131848462000fe6565b620031b4576000848152602082815260408083206001600160a01b03871684529091529020805460ff19166001179055620031693390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620007f1565b6000915050620007f1565b600062001296836001600160a01b038416620035fc565b6000600080516020620047aa833981519152620031f4848462000fe6565b15620031b4576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620007f1565b600062001296836001600160a01b0384166200364e565b600080516020620047ca8339815191525460ff1662001bc957604051638dfc202b60e01b815260040160405180910390fd5b6000826000018281548110620032ba57620032ba62003f96565b9060005260206000200154905092915050565b6000620032da8262001e99565b9050600062003317846000015484600001516040015160008151811062003305576200330562003f96565b60200260200101516020015162003747565b90506101006200332a61040082620040cb565b62003336919062003f7f565b620033429082620040b4565b15801590620033bb57506101006200335d61040082620040cb565b62003369919062003f7f565b600162003377848462003f53565b6200338391906200409e565b6200338f919062003f7f565b610100620033a061040082620040cb565b620033ac919062003f7f565b620033b8908362003f7f565b14155b156200097f57610100620033d261040082620040cb565b620033de919062003f7f565b620033ea9082620040b4565b610100620033fb61040082620040cb565b62003407919062003f7f565b62003413908362003f53565b6200341f91906200409e565b845550505050565b6000806200343a85600001548462003747565b905060006200344d6001851b8362003f53565b600287015490915062003463906001906200409e565b6001901b811115620034c0576200347a8662001914565b620034858662003785565b600286015462003498906001906200409e565b6001901b811115620034b557620034af8662003785565b62003485565b600286015460018701555b6002860154620034d1878662003821565b60008087875b84811015620035a657620034ef600288831c620040b4565b6000036200353457818b600201828154811062003510576200351062003f96565b6000918252602090912001556200352981600162003f53565b60018c0155620035a6565b8a60020181815481106200354c576200354c62003f96565b90600052602060002001549350819250838360405160200162003579929190918252602082015260400190565b604051602081830303815290604052805190602001209150806200359d8162003f37565b915050620034d7565b50620035b66001891b8762003f53565b9099555092979650505050505050565b600081600052602060006020600071f90827f1c53a10cb7a02335b1753200029355afa60003d111615620030d157505060005190565b60008181526001830160205260408120546200364557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620007f1565b506000620007f1565b60008181526001830160205260408120548015620031b4576000620036756001836200409e565b85549091506000906200368b906001906200409e565b9050808214620036f7576000866000018281548110620036af57620036af62003f96565b9060005260206000200154905080876000018481548110620036d557620036d562003f96565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806200370b576200370b6200411d565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620007f1565b6000828082036200375d576000915050620007f1565b6200376a6001826200409e565b831c90506200377b60018262003f53565b90921b9392505050565b600281018054906000906200379c6001846200409e565b81548110620037af57620037af62003f96565b60009182526020822001549150620037cd6200197e6001856200409e565b9050836002018282604051602001620037f0929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b808260010154111562003832575050565b6002820180546001808501549192600092909162003850916200409e565b8154811062003863576200386362003f96565b90600052602060002001549050600062003889600186600101546200197e91906200409e565b60018601549091505b838110156200396857604080516020808201869052818301859052825180830384018152606090920190925280519101208654620038d590600290841c620040b4565b6000036200392957809350620038eb8262002491565b92508582106200392357808760020183815481106200390e576200390e62003f96565b60009182526020909120015550505050505050565b62003952565b86600201828154811062003941576200394162003f96565b906000526020600020015493508092505b50806200395f8162003f37565b91505062003892565b505050505050565b610636806200413483390190565b6000602082840312156200399157600080fd5b81356001600160e01b0319811681146200129657600080fd5b600060208284031215620039bd57600080fd5b5035919050565b80356001600160a01b0381168114620030d157600080fd5b60008060408385031215620039f057600080fd5b8235915062003a0260208401620039c4565b90509250929050565b60006020828403121562003a1e57600080fd5b81356001600160801b03811681146200129657600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562003a715762003a7162003a36565b60405290565b604051606081016001600160401b038111828210171562003a715762003a7162003a36565b604051601f8201601f191681016001600160401b038111828210171562003ac75762003ac762003a36565b604052919050565b60006001600160401b0382111562003aeb5762003aeb62003a36565b5060051b60200190565b600082601f83011262003b0757600080fd5b8135602062003b2062003b1a8362003acf565b62003a9c565b82815260069290921b8401810191818101908684111562003b4057600080fd5b8286015b8481101562003b84576040818903121562003b5f5760008081fd5b62003b6962003a4c565b81358152848201358582015283529183019160400162003b44565b509695505050505050565b60006040828403121562003ba257600080fd5b62003bac62003a4c565b905081356001600160401b038082111562003bc657600080fd5b908301906060828603121562003bdb57600080fd5b62003be562003a77565b823581526020808401358381111562003bfd57600080fd5b8401601f8101881362003c0f57600080fd5b80358481111562003c245762003c2462003a36565b62003c38601f8201601f1916840162003a9c565b818152898483850101111562003c4d57600080fd5b81848401858301376000848383010152808486015250505060408401358381111562003c7857600080fd5b62003c868882870162003af5565b60408401525081855262003c9c818701620039c4565b818601525050505092915050565b6000602080838503121562003cbe57600080fd5b82356001600160401b038082111562003cd657600080fd5b818501915085601f83011262003ceb57600080fd5b813562003cfc62003b1a8262003acf565b81815260059190911b8301840190848101908883111562003d1c57600080fd5b8585015b8381101562003d595780358581111562003d3a5760008081fd5b62003d4a8b89838a010162003b8f565b84525091860191860162003d20565b5098975050505050505050565b600081518084526020808501945080840160005b8381101562003d985781518752958201959082019060010162003d7a565b509495945050505050565b60808152600062003db8608083018762003d66565b82810360208481019190915286518083528782019282019060005b8181101562003df15784518352938301939183019160010162003dd3565b5050848103604086015262003e07818862003d66565b92505050828103606084015262003e1f818562003d66565b979650505050505050565b6000806040838503121562003e3e57600080fd5b50508035926020909101359150565b60006020828403121562003e6057600080fd5b81356001600160401b0381111562003e7757600080fd5b62000fde8482850162003b8f565b6000806040838503121562003e9957600080fd5b62003ea483620039c4565b946020939093013593505050565b60008060006060848603121562003ec857600080fd5b833592506020840135915062003ee160408501620039c4565b90509250925092565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003f4c5762003f4c62003f21565b5060010190565b80820180821115620007f157620007f162003f21565b634e487b7160e01b600052601260045260246000fd5b60008262003f915762003f9162003f69565b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101562003d9857815180518852830151838801526040909601959082019060010162003fc0565b848152600060208581840152846040840152608060608401528351608084015280840151606060a085015280518060e086015260005b818110156200403e57828101840151868201610100015283016200401f565b5061010092506000838287010152601f19601f8201168501915050604085015160808583030160c0860152620040778383018262003fac565b9998505050505050505050565b6000602082840312156200409757600080fd5b5051919050565b81810381811115620007f157620007f162003f21565b600082620040c657620040c662003f69565b500690565b8082028115828204841417620007f157620007f162003f21565b815160009082906020808601845b838110156200411157815185529382019390820190600101620040f3565b50929695505050505050565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161063638038061063683398101604081905261002f91610171565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e816100c1565b50806001600160401b038111156100775761007761018a565b6040519080825280602002602001820160405280156100a0578160200160208202803683370190505b5080516100b591600191602090910190610111565b505060006002556101a0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561014c579160200282015b8281111561014c578251825591602001919060010190610131565b5061015892915061015c565b5090565b5b80821115610158576000815560010161015d565b60006020828403121561018357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b610487806101af6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b610095610090366004610382565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b8366004610382565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe366004610382565b610209565b6100bd610111366004610382565b61023e565b6100d361012436600461039b565b61029e565b60008061013d6002546001805490506102dc565b905060005b8181101561018a57836001828154811061015e5761015e6103c4565b906000526020600020015403610178575060019392505050565b80610182816103f0565b915050610142565b5060009392505050565b600061019e6102f6565b6002546001546000906101b19083610409565b905083600182815481106101c7576101c76103c4565b90600052602060002001819055506001600260008282546101e8919061042b565b9091555091949350505050565b6101fd6102f6565b6102076000610323565b565b600154600254600091908310801561023757508061022960025483610373565b610233919061043e565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610409565b8154811061028c5761028c6103c4565b90600052602060002001549050919050565b6102a66102f6565b6001600160a01b0381166102d057604051631e4fbdf760e01b815260006004820152602401610265565b6102d981610323565b50565b60008183106102eb57816102ed565b825b90505b92915050565b6000546001600160a01b031633146102075760405163118cdaa760e01b8152336004820152602401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116102eb57816102ed565b60006020828403121561039457600080fd5b5035919050565b6000602082840312156103ad57600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610402576104026103da565b5060010190565b60008261042657634e487b7160e01b600052601260045260246000fd5b500690565b808201808211156102f0576102f06103da565b818103818111156102f0576102f06103da56fea2646970667358221220635494212f9012021fb76812bcb699d1b59e0137921bc1364e1859dad84af54164736f6c63430008140033c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a2646970667358221220df76dc2958fa4ff2f7959610484206d6d3c81bcdd4b55889dba47f0c70a76b6864736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/Flow.json b/storage-contracts-abis/Flow.json index 9514b875..ba90dc06 100644 --- a/storage-contracts-abis/Flow.json +++ b/storage-contracts-abis/Flow.json @@ -14,11 +14,65 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "EnforcedPause", + "type": "error" + }, + { + "inputs": [], + "name": "ExpectedPause", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, { "inputs": [], "name": "InvalidSubmission", "type": "error" }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -214,7 +268,7 @@ } ], "indexed": false, - "internalType": "struct Submission", + "internalType": "struct SubmissionData", "name": "submission", "type": "tuple" } @@ -265,32 +319,44 @@ "inputs": [ { "components": [ - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "tags", - "type": "bytes" - }, { "components": [ - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, { "internalType": "uint256", - "name": "height", + "name": "length", "type": "uint256" + }, + { + "internalType": "bytes", + "name": "tags", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct SubmissionNode[]", + "name": "nodes", + "type": "tuple[]" } ], - "internalType": "struct SubmissionNode[]", - "name": "nodes", - "type": "tuple[]" + "internalType": "struct SubmissionData", + "name": "data", + "type": "tuple" + }, + { + "internalType": "address", + "name": "submitter", + "type": "address" } ], "internalType": "struct Submission[]", @@ -478,6 +544,42 @@ "stateMutability": "view", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "index", + "type": "uint256" + } + ], + "name": "getEpochRangeHistory", + "outputs": [ + { + "components": [ + { + "internalType": "uint128", + "name": "start", + "type": "uint128" + }, + { + "internalType": "uint128", + "name": "end", + "type": "uint128" + }, + { + "internalType": "bytes32", + "name": "digest", + "type": "bytes32" + } + ], + "internalType": "struct EpochRangeWithContextDigest", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -619,19 +721,6 @@ "stateMutability": "nonpayable", "type": "function" }, - { - "inputs": [], - "name": "initialized", - "outputs": [ - { - "internalType": "bool", - "name": "", - "type": "bool" - } - ], - "stateMutability": "view", - "type": "function" - }, { "inputs": [], "name": "makeContext", @@ -788,7 +877,7 @@ }, { "internalType": "address", - "name": "account", + "name": "callerConfirmation", "type": "address" } ], @@ -868,32 +957,44 @@ "inputs": [ { "components": [ - { - "internalType": "uint256", - "name": "length", - "type": "uint256" - }, - { - "internalType": "bytes", - "name": "tags", - "type": "bytes" - }, { "components": [ - { - "internalType": "bytes32", - "name": "root", - "type": "bytes32" - }, { "internalType": "uint256", - "name": "height", + "name": "length", "type": "uint256" + }, + { + "internalType": "bytes", + "name": "tags", + "type": "bytes" + }, + { + "components": [ + { + "internalType": "bytes32", + "name": "root", + "type": "bytes32" + }, + { + "internalType": "uint256", + "name": "height", + "type": "uint256" + } + ], + "internalType": "struct SubmissionNode[]", + "name": "nodes", + "type": "tuple[]" } ], - "internalType": "struct SubmissionNode[]", - "name": "nodes", - "type": "tuple[]" + "internalType": "struct SubmissionData", + "name": "data", + "type": "tuple" + }, + { + "internalType": "address", + "name": "submitter", + "type": "address" } ], "internalType": "struct Submission", @@ -905,22 +1006,22 @@ "outputs": [ { "internalType": "uint256", - "name": "", + "name": "index", "type": "uint256" }, { "internalType": "bytes32", - "name": "", + "name": "digest", "type": "bytes32" }, { "internalType": "uint256", - "name": "", + "name": "startIndex", "type": "uint256" }, { "internalType": "uint256", - "name": "", + "name": "length", "type": "uint256" } ], @@ -972,8 +1073,8 @@ "type": "function" } ], - "bytecode": "0x60a06040523480156200001157600080fd5b506040516200446438038062004464833981016040819052620000349162000047565b6000805460ff1916905560805262000061565b6000602082840312156200005a57600080fd5b5051919050565b6080516143e0620000846000396000818161063d0152610fc201526143e06000f3fe6080604052600436106200023b5760003560e01c8063900cf0cf116200012f578063c7dd522111620000ad578063e63ab1e91162000078578063e63ab1e91462000760578063ebdec6d31462000785578063ef3e12dc14620007aa578063f068205414620007e2578063fd54b22814620007fa57600080fd5b8063c7dd522114620006cf578063ca15c87314620006f1578063cd6dc6871462000716578063d547741f146200073b57600080fd5b80639bbbfdbb11620000fa5780639bbbfdbb14620006295780639e62a38e146200065f578063a217fddf1462000688578063b464b53e146200069f578063b8a409ac14620006b757600080fd5b8063900cf0cf14620005af5780639010d07c14620005c757806391d1485414620005ec57806393e405a0146200061157600080fd5b806336568abe11620001bd5780636d7ad0fc11620001885780636d7ad0fc146200048057806377e1982414620004b15780637d59070814620004c857806380f55605146200055c5780638456cb59146200059757600080fd5b806336568abe146200041157806338d45e1014620004365780633f4ba83a146200044e5780635c975abb146200046657600080fd5b80631deb0fca116200020a5780631deb0fca1462000322578063231b02681462000349578063248a9ca314620003615780632f2ff15d146200039657806331bae17414620003bb57600080fd5b806301ffc9a71462000240578063127f0f07146200027a578063158ef93e14620002df57806318a641ef14620002fb575b600080fd5b3480156200024d57600080fd5b50620002656200025f366004620034d5565b6200082d565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b50620002926200085b565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b50600354620002659060ff1681565b3480156200030857600080fd5b50620003206200031a36600462003501565b620008c6565b005b3480156200032f57600080fd5b506200033a6200092a565b60405190815260200162000271565b3480156200035657600080fd5b506200033a60465481565b3480156200036e57600080fd5b506200033a6200038036600462003501565b6000908152600160208190526040909120015490565b348015620003a357600080fd5b5062000320620003b536600462003533565b62000949565b348015620003c857600080fd5b50620003e0620003da36600462003562565b62000978565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b3480156200041e57600080fd5b50620003206200043036600462003533565b62000b2e565b3480156200044357600080fd5b506200032062000bac565b3480156200045b57600080fd5b506200032062000be3565b3480156200047357600080fd5b5060005460ff1662000265565b3480156200048d57600080fd5b506200033a6200049f36600462003501565b60009081526045602052604090205490565b348015620004be57600080fd5b50603a546200033a565b348015620004d557600080fd5b5062000534620004e736600462003501565b6040805180820190915260008082526020820152506000908152604360209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200056957600080fd5b506036546200057e906001600160a01b031681565b6040516001600160a01b03909116815260200162000271565b348015620005a457600080fd5b506200032062000c08565b348015620005bc57600080fd5b506200033a603b5481565b348015620005d457600080fd5b506200057e620005e63660046200358d565b62000c2d565b348015620005f957600080fd5b50620002656200060b36600462003533565b62000c4e565b3480156200061e57600080fd5b506200033a603c5481565b3480156200063657600080fd5b506200033a7f000000000000000000000000000000000000000000000000000000000000000081565b6200067662000670366004620037e3565b62000c79565b604051620002719493929190620038dc565b3480156200069557600080fd5b506200033a600081565b348015620006ac57600080fd5b506200029262000eba565b348015620006c457600080fd5b506200033a603a5481565b348015620006dc57600080fd5b506047546200057e906001600160a01b031681565b348015620006fe57600080fd5b506200033a6200071036600462003501565b62000f25565b3480156200072357600080fd5b50620003206200073536600462003963565b62000f3e565b3480156200074857600080fd5b50620003206200075a36600462003533565b62001023565b3480156200076d57600080fd5b506200033a6000805160206200438b83398151915281565b3480156200079257600080fd5b5062000320620007a436600462003990565b6200104d565b620007c1620007bb366004620039c8565b6200105a565b60408051948552602085019390935291830152606082015260800162000271565b348015620007ef57600080fd5b506200033a60485481565b3480156200080757600080fd5b5060375460385462000817919082565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b14806200085557506200085582620011b8565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c081018252603d548152603e546020820152603f548183015290546060820152604154608082015260425460a082015290565b604654431015620008f45760405162461bcd60e51b8152600401620008eb9062003a08565b60405180910390fd5b60005b818111620009255762000909620011ef565b62000912575050565b6200091d8162003a55565b9050620008f7565b505b50565b6000620009386037620014bc565b62000944603762001605565b905090565b60008281526001602081905260409091200154620009678162001642565b6200097383836200164e565b505050565b60408051606081018252600080825260208201819052918101919091526200099f62000bac565b6037546001600160801b0383161062000a075760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008eb565b6044546000905b8181111562000ae5576000600262000a27848462003a71565b62000a33919062003a9d565b90506044818154811062000a4b5762000a4b62003ab4565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290955086161062000ab45762000aac81600162003a71565b925062000ade565b83600001516001600160801b0316856001600160801b03161062000ada57505050919050565b8091505b5062000a0e565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008eb565b6001600160a01b038116331462000ba05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401620008eb565b62000925828262001674565b60465443101562000bd15760405162461bcd60e51b8152600401620008eb9062003a08565b62000bdb620011ef565b62000bd1575b565b6000805160206200438b83398151915262000bfe8162001642565b620009276200169a565b6000805160206200438b83398151915262000c238162001642565b62000927620016ee565b600082815260026020526040812062000c4790836200172e565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60608060608062000c896200173c565b60465443101562000cae5760405162461bcd60e51b8152600401620008eb9062003a08565b8451806001600160401b0381111562000ccb5762000ccb620035b0565b60405190808252806020026020018201604052801562000cf5578160200160208202803683370190505b509450806001600160401b0381111562000d135762000d13620035b0565b60405190808252806020026020018201604052801562000d3d578160200160208202803683370190505b509350806001600160401b0381111562000d5b5762000d5b620035b0565b60405190808252806020026020018201604052801562000d85578160200160208202803683370190505b509250806001600160401b0381111562000da35762000da3620035b0565b60405190808252806020026020018201604052801562000dcd578160200160208202803683370190505b50915060005b8181101562000eb15760008060008062000e098b868151811062000dfb5762000dfb62003ab4565b60200260200101516200105a565b9350935093509350838a868151811062000e275762000e2762003ab4565b6020026020010181815250508289868151811062000e495762000e4962003ab4565b6020026020010181815250508188868151811062000e6b5762000e6b62003ab4565b6020026020010181815250508087868151811062000e8d5762000e8d62003ab4565b602002602001018181525050505050508062000ea99062003a55565b905062000dd3565b50509193509193565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260465443101562000f115760405162461bcd60e51b8152600401620008eb9062003a08565b62000f1b62000bac565b620009446200085b565b6000818152600260205260408120620008559062001784565b60035460ff161562000f9f5760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401620008eb565b6003805460ff1916600117905562000fb7826200178f565b620009258162000fe87f00000000000000000000000000000000000000000000000000000000000000004362003a71565b6103e860405162000ff990620034c7565b908152602001604051809103906000f0801580156200101c573d6000803e3d6000fd5b506200189e565b60008281526001602081905260409091200154620010418162001642565b62000973838362001674565b620009738383836200189e565b6000806000806200106a6200173c565b6046544310156200108f5760405162461bcd60e51b8152600401620008eb9062003a08565b6200109a856200195c565b620010dd5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008eb565b6000620010ea8662001baa565b9050620010f662000bac565b6000620011038762001c11565b90506000620011128862001d66565b603a805491925060019060006200112a838562003a71565b909155506200113c90506037620014bc565b62001148603762001605565b604560008381526020019081526020016000208190555081336001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558386888e604051620011a1949392919062003b1e565b60405180910390a396509450925090509193509193565b60006001600160e01b03198216637965db0b60e01b14806200085557506301ffc9a760e01b6001600160e01b031983161462000855565b6000620011fb6200173c565b6000604854603b54600101026046540190504381106200121d57600091505090565b620012296037620014bc565b600062001237603762001605565b604754604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af115801562001284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012aa919062003bb4565b5060008043620012bd8561010062003a71565b1015620012ef57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470905080620013fe565b506037546040805185406020820181905291810185905260608101929092529060800160408051808303601f190181528282528051602091820120603c80546037805487870187526001600160801b039283168089529083168689018181526000878152604389528981209a519151918616600160801b928716830217909a558851606081018a529283529682019081529681018581526044805460018101825599529051965196831696909216909402949094177f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea60029096029586015592517f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135eb9094019390935554905591505b6001603b600082825462001413919062003a71565b90915550506040805160c081018252603b5480825260208083018890528284018790526037546060808501829052608080860188905260a0909501889052603d849055603e8a9055603f89905581865560418790556042889055603a5486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a3600194505050505090565b6002810154600182015403620014cf5750565b60028101805460018084015491926000929091620014ed9162003bce565b8154811062001500576200150062003ab4565b9060005260206000200154905060006200152c6001856001015462001526919062003bce565b62001e53565b60018501549091505b83811015620015fa576040805160208082018690528183018590528251808303840181526060909201909252805191012085546200157890600290841c62003be4565b600003620015bb578093506200158e8262001e53565b925080866002018381548110620015a957620015a962003ab4565b600091825260209091200155620015e4565b856002018281548110620015d357620015d362003ab4565b906000526020600020015493508092505b5080620015f18162003a55565b91505062001535565b505050600190910155565b600281018054600091906200161d9060019062003bce565b8154811062001630576200163062003ab4565b90600052602060002001549050919050565b62000927813362002a98565b6200165a828262002afc565b600082815260026020526040902062000973908262002b6a565b62001680828262002b81565b600082815260026020526040902062000973908262002beb565b620016a462002c02565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b620016f86200173c565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016d13390565b600062000c47838362002c4d565b60005460ff161562000be15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401620008eb565b600062000855825490565b6001603781905560398054808301825560009182527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30155603855603680546001600160a01b0319166001600160a01b0383161790556000603b8190556040805160c081018252918252604654602083015281016200180f603762001605565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060408084018290526060938401919091528351603d5590830151603e5582810151603f55908201519055608081015160415560a001516042556200188360003362002c7a565b620009276000805160206200438b8339815191523362002c7a565b604854600003620018af5760488390555b604654600003620018c05760468290555b6047546001600160a01b031662000973576001600160a01b0381166200193a576103e8604051620018f190620034c7565b908152602001604051809103906000f08015801562001914573d6000803e3d6000fd5b50604780546001600160a01b0319166001600160a01b0392909216919091179055505050565b604780546001600160a01b0383166001600160a01b0319909116179055505050565b60008160400151516000036200197457506000919050565b60408201518051600491906200198d9060019062003bce565b81518110620019a057620019a062003ab4565b6020026020010151602001518360400151600081518110620019c657620019c662003ab4565b602002602001015160200151620019de919062003bce565b10620019ec57506000919050565b6040826040015160008151811062001a085762001a0862003ab4565b6020026020010151602001511062001a2257506000919050565b60005b600183604001515162001a39919062003bce565b81101562001abd578260400151818151811062001a5a5762001a5a62003ab4565b602002602001015160200151836040015182600162001a7a919062003a71565b8151811062001a8d5762001a8d62003ab4565b6020026020010151602001511062001aa85750600092915050565b8062001ab48162003a55565b91505062001a25565b50600062001acb8362001baa565b905062001adb6101008262003bfb565b8351111562001aed5750600092915050565b6000601082101562001b0e5762001b0660018362003bce565b905062001b80565b83604001515160010362001b2c5762001b06600483901c8362003bce565b6004846040015160008151811062001b485762001b4862003ab4565b60200260200101516020015162001b60919062003bce565b62001b6d90600162003a71565b62001b7d906001901b8362003bce565b90505b62001b8e6101008262003bfb565b84511162001ba0575060009392505050565b5060019392505050565b600080805b83604001515181101562001c0a578360400151818151811062001bd65762001bd662003ab4565b6020026020010151602001516001901b8262001bf3919062003a71565b91508062001c018162003a55565b91505062001baf565b5092915050565b6037805460009162001c24908462002c86565b60005b83604001515181101562001cc95760008460400151828151811062001c505762001c5062003ab4565b602002602001015160000151905060008560400151838151811062001c795762001c7962003ab4565b6020026020010151602001519050600062001ca18383603762002ddd9092919063ffffffff16565b90508360000362001cb0578095505b505050808062001cc09062003a55565b91505062001c27565b50600062001cd8828462003bce565b905060008360376000015462001cef919062003bce565b603654604051636d3759b560e11b81526004810186905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b15801562001d4557600080fd5b505af115801562001d5a573d6000803e3d6000fd5b50505050505050919050565b6000808260400151516001600160401b0381111562001d895762001d89620035b0565b60405190808252806020026020018201604052801562001db3578160200160208202803683370190505b50905060005b83604001515181101562001e21578360400151818151811062001de05762001de062003ab4565b60200260200101516000015182828151811062001e015762001e0162003ab4565b60209081029190910101528062001e188162003a55565b91505062001db9565b508060405160200162001e35919062003c1d565b60405160208183030381529060405280519060200120915050919050565b60008160000362001e8557507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b8160010362001eb557507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b8160020362001ee557507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b8160030362001f1557507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b8160040362001f4557507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b8160050362001f7557507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b8160060362001fa557507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b8160070362001fd557507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200200557507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200203557507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a036200206557507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b036200209557507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c03620020c557507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d03620020f557507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200212557507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200215557507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b816010036200218557507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620021b557507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b81601203620021e557507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200221557507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200224557507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b816015036200227557507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620022a557507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b81601703620022d557507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200230557507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200233557507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a036200236557507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b036200239557507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c03620023c557507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d03620023f557507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e036200242557507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f036200245557507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b816020036200248557507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b81602103620024b557507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b81602203620024e557507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b816023036200251557507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b816024036200254557507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b816025036200257557507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b81602603620025a557507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b81602703620025d557507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b816028036200260557507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b816029036200263557507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a036200266557507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b036200269557507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c03620026c557507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d03620026f557507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e036200272557507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f036200275557507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b816030036200278557507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b81603103620027b557507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b81603203620027e557507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b816033036200281557507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b816034036200284557507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b816035036200287557507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b81603603620028a557507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b81603703620028d557507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b816038036200290557507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b816039036200293557507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a036200296557507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b036200299557507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c03620029c557507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d03620029f557507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e0362002a2557507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f0362002a5557507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008eb565b919050565b62002aa4828262000c4e565b620009255762002ab48162002f7c565b62002ac183602062002f8f565b60405160200162002ad492919062003c55565b60408051601f198184030181529082905262461bcd60e51b8252620008eb9160040162003cce565b62002b08828262000c4e565b620009255760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600062000c47836001600160a01b03841662003148565b62002b8d828262000c4e565b15620009255760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600062000c47836001600160a01b0384166200319a565b60005460ff1662000be15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401620008eb565b600082600001828154811062002c675762002c6762003ab4565b9060005260206000200154905092915050565b6200092582826200164e565b600062002c938262001baa565b9050600062002ccc8460000154846040015160008151811062002cba5762002cba62003ab4565b6020026020010151602001516200329e565b905061010062002cdf6104008262003bfb565b62002ceb919062003a9d565b62002cf7908262003be4565b1580159062002d70575061010062002d126104008262003bfb565b62002d1e919062003a9d565b600162002d2c848462003a71565b62002d38919062003bce565b62002d44919062003a9d565b61010062002d556104008262003bfb565b62002d61919062003a9d565b62002d6d908362003a9d565b14155b1562002dd75761010062002d876104008262003bfb565b62002d93919062003a9d565b62002d9f908262003be4565b61010062002db06104008262003bfb565b62002dbc919062003a9d565b62002dc8908362003a71565b62002dd4919062003bce565b84555b50505050565b60008062002df08560000154846200329e565b9050600062002e036001851b8362003a71565b600287015490915062002e199060019062003bce565b6001901b81111562002e765762002e3086620014bc565b62002e3b86620032dc565b600286015462002e4e9060019062003bce565b6001901b81111562002e6b5762002e6586620032dc565b62002e3b565b600286015460018701555b600286015462002e87878662003378565b60008087875b8481101562002f5c5762002ea5600288831c62003be4565b60000362002eea57818b600201828154811062002ec65762002ec662003ab4565b60009182526020909120015562002edf81600162003a71565b60018c015562002f5c565b8a600201818154811062002f025762002f0262003ab4565b90600052602060002001549350819250838360405160200162002f2f929190918252602082015260400190565b6040516020818303038152906040528051906020012091508062002f538162003a55565b91505062002e8d565b5062002f6c6001891b8762003a71565b9099555092979650505050505050565b6060620008556001600160a01b03831660145b6060600062002fa083600262003bfb565b62002fad90600262003a71565b6001600160401b0381111562002fc75762002fc7620035b0565b6040519080825280601f01601f19166020018201604052801562002ff2576020820181803683370190505b509050600360fc1b8160008151811062003010576200301062003ab4565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062003042576200304262003ab4565b60200101906001600160f81b031916908160001a90535060006200306884600262003bfb565b6200307590600162003a71565b90505b6001811115620030f7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620030ad57620030ad62003ab4565b1a60f81b828281518110620030c657620030c662003ab4565b60200101906001600160f81b031916908160001a90535060049490941c93620030ef8162003ce3565b905062003078565b50831562000c475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620008eb565b6000818152600183016020526040812054620031915750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000855565b50600062000855565b6000818152600183016020526040812054801562003293576000620031c160018362003bce565b8554909150600090620031d79060019062003bce565b905081811462003243576000866000018281548110620031fb57620031fb62003ab4565b906000526020600020015490508087600001848154811062003221576200322162003ab4565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062003257576200325762003cfd565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000855565b600091505062000855565b600082808203620032b457600091505062000855565b620032c160018262003bce565b831c9050620032d260018262003a71565b90921b9392505050565b60028101805490600090620032f360018462003bce565b8154811062003306576200330662003ab4565b60009182526020822001549150620033246200152660018562003bce565b905083600201828260405160200162003347929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b808260010154111562003389575050565b60028201805460018085015491926000929091620033a79162003bce565b81548110620033ba57620033ba62003ab4565b906000526020600020015490506000620033e06001866001015462001526919062003bce565b60018601549091505b83811015620034bf576040805160208082018690528183018590528251808303840181526060909201909252805191012086546200342c90600290841c62003be4565b6000036200348057809350620034428262001e53565b92508582106200347a578087600201838154811062003465576200346562003ab4565b60009182526020909120015550505050505050565b620034a9565b86600201828154811062003498576200349862003ab4565b906000526020600020015493508092505b5080620034b68162003a55565b915050620033e9565b505050505050565b6106778062003d1483390190565b600060208284031215620034e857600080fd5b81356001600160e01b03198116811462000c4757600080fd5b6000602082840312156200351457600080fd5b5035919050565b80356001600160a01b038116811462002a9357600080fd5b600080604083850312156200354757600080fd5b8235915062003559602084016200351b565b90509250929050565b6000602082840312156200357557600080fd5b81356001600160801b038116811462000c4757600080fd5b60008060408385031215620035a157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620035eb57620035eb620035b0565b60405290565b604051606081016001600160401b0381118282101715620035eb57620035eb620035b0565b604051601f8201601f191681016001600160401b0381118282101715620036415762003641620035b0565b604052919050565b60006001600160401b03821115620036655762003665620035b0565b5060051b60200190565b600082601f8301126200368157600080fd5b813560206200369a620036948362003649565b62003616565b82815260069290921b84018101918181019086841115620036ba57600080fd5b8286015b84811015620036fe5760408189031215620036d95760008081fd5b620036e3620035c6565b813581528482013585820152835291830191604001620036be565b509695505050505050565b6000606082840312156200371c57600080fd5b62003726620035f1565b9050813581526020808301356001600160401b03808211156200374857600080fd5b818501915085601f8301126200375d57600080fd5b813581811115620037725762003772620035b0565b62003786601f8201601f1916850162003616565b81815287858386010111156200379b57600080fd5b81858501868301376000858383010152808587015250506040850135925080831115620037c757600080fd5b5050620037d7848285016200366f565b60408301525092915050565b60006020808385031215620037f757600080fd5b82356001600160401b03808211156200380f57600080fd5b818501915085601f8301126200382457600080fd5b813562003835620036948262003649565b81815260059190911b830184019084810190888311156200385557600080fd5b8585015b838110156200389257803585811115620038735760008081fd5b620038838b89838a010162003709565b84525091860191860162003859565b5098975050505050505050565b600081518084526020808501945080840160005b83811015620038d157815187529582019590820190600101620038b3565b509495945050505050565b608081526000620038f160808301876200389f565b82810360208481019190915286518083528782019282019060005b818110156200392a578451835293830193918301916001016200390c565b505084810360408601526200394081886200389f565b9250505082810360608401526200395881856200389f565b979650505050505050565b600080604083850312156200397757600080fd5b62003982836200351b565b946020939093013593505050565b600080600060608486031215620039a657600080fd5b8335925060208401359150620039bf604085016200351b565b90509250925092565b600060208284031215620039db57600080fd5b81356001600160401b03811115620039f257600080fd5b62003a008482850162003709565b949350505050565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003a6a5762003a6a62003a3f565b5060010190565b8082018082111562000855576200085562003a3f565b634e487b7160e01b600052601260045260246000fd5b60008262003aaf5762003aaf62003a87565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b8381101562003ae757818101518382015260200162003acd565b50506000910152565b6000815180845262003b0a81602086016020860162003aca565b601f01601f19169290920160200192915050565b84815260006020858184015260408581850152608060608501528451608085015281850151606060a086015262003b5960e086018262003af0565b86830151868203607f190160c0880152805180835290850192506000918501905b8083101562003ba5578351805183528601518683015292850192600192909201919084019062003b7a565b509a9950505050505050505050565b60006020828403121562003bc757600080fd5b5051919050565b8181038181111562000855576200085562003a3f565b60008262003bf65762003bf662003a87565b500690565b600081600019048311821515161562003c185762003c1862003a3f565b500290565b815160009082906020808601845b8381101562003c495781518552938201939082019060010162003c2b565b50929695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162003c8f81601785016020880162003aca565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162003cc281602884016020880162003aca565b01602801949350505050565b60208152600062000c47602083018462003af0565b60008162003cf55762003cf562003a3f565b506000190190565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161067738038061067783398101604081905261002f9161014a565b6100383361009a565b806001600160401b0381111561005057610050610163565b604051908082528060200260200182016040528015610079578160200160208202803683370190505b50805161008e916001916020909101906100ea565b50506000600255610179565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215610125579160200282015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b5b808211156101315760008155600101610136565b60006020828403121561015c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6104ef806101886000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b6100956100903660046103ea565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b83660046103ea565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe3660046103ea565b610209565b6100bd6101113660046103ea565b61023e565b6100d3610124366004610403565b61029e565b60008061013d600254600180549050610317565b905060005b8181101561018a57836001828154811061015e5761015e61042c565b906000526020600020015403610178575060019392505050565b8061018281610458565b915050610142565b5060009392505050565b600061019e610331565b6002546001546000906101b19083610471565b905083600182815481106101c7576101c761042c565b90600052602060002001819055506001600260008282546101e89190610493565b9091555091949350505050565b6101fd610331565b610207600061038b565b565b6001546002546000919083108015610237575080610229600254836103db565b61023391906104a6565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610471565b8154811061028c5761028c61042c565b90600052602060002001549050919050565b6102a6610331565b6001600160a01b03811661030b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610265565b6103148161038b565b50565b60008183106103265781610328565b825b90505b92915050565b6000546001600160a01b031633146102075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116103265781610328565b6000602082840312156103fc57600080fd5b5035919050565b60006020828403121561041557600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161046a5761046a610442565b5060010190565b60008261048e57634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561032b5761032b610442565b8181038181111561032b5761032b61044256fea2646970667358221220ab4227e667a8cb673b86154f616db16af24f601e334d164960a5df4e7cbdcec464736f6c6343000810003365d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa2646970667358221220615b0dde46015bf49074fa72a78a10f3d8c0d4d883c68d4e4de31bc217fa055564736f6c63430008100033", - "deployedBytecode": "0x6080604052600436106200023b5760003560e01c8063900cf0cf116200012f578063c7dd522111620000ad578063e63ab1e91162000078578063e63ab1e91462000760578063ebdec6d31462000785578063ef3e12dc14620007aa578063f068205414620007e2578063fd54b22814620007fa57600080fd5b8063c7dd522114620006cf578063ca15c87314620006f1578063cd6dc6871462000716578063d547741f146200073b57600080fd5b80639bbbfdbb11620000fa5780639bbbfdbb14620006295780639e62a38e146200065f578063a217fddf1462000688578063b464b53e146200069f578063b8a409ac14620006b757600080fd5b8063900cf0cf14620005af5780639010d07c14620005c757806391d1485414620005ec57806393e405a0146200061157600080fd5b806336568abe11620001bd5780636d7ad0fc11620001885780636d7ad0fc146200048057806377e1982414620004b15780637d59070814620004c857806380f55605146200055c5780638456cb59146200059757600080fd5b806336568abe146200041157806338d45e1014620004365780633f4ba83a146200044e5780635c975abb146200046657600080fd5b80631deb0fca116200020a5780631deb0fca1462000322578063231b02681462000349578063248a9ca314620003615780632f2ff15d146200039657806331bae17414620003bb57600080fd5b806301ffc9a71462000240578063127f0f07146200027a578063158ef93e14620002df57806318a641ef14620002fb575b600080fd5b3480156200024d57600080fd5b50620002656200025f366004620034d5565b6200082d565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b50620002926200085b565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b50600354620002659060ff1681565b3480156200030857600080fd5b50620003206200031a36600462003501565b620008c6565b005b3480156200032f57600080fd5b506200033a6200092a565b60405190815260200162000271565b3480156200035657600080fd5b506200033a60465481565b3480156200036e57600080fd5b506200033a6200038036600462003501565b6000908152600160208190526040909120015490565b348015620003a357600080fd5b5062000320620003b536600462003533565b62000949565b348015620003c857600080fd5b50620003e0620003da36600462003562565b62000978565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b3480156200041e57600080fd5b50620003206200043036600462003533565b62000b2e565b3480156200044357600080fd5b506200032062000bac565b3480156200045b57600080fd5b506200032062000be3565b3480156200047357600080fd5b5060005460ff1662000265565b3480156200048d57600080fd5b506200033a6200049f36600462003501565b60009081526045602052604090205490565b348015620004be57600080fd5b50603a546200033a565b348015620004d557600080fd5b5062000534620004e736600462003501565b6040805180820190915260008082526020820152506000908152604360209081526040918290208251808401909352546001600160801b038082168452600160801b909104169082015290565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200056957600080fd5b506036546200057e906001600160a01b031681565b6040516001600160a01b03909116815260200162000271565b348015620005a457600080fd5b506200032062000c08565b348015620005bc57600080fd5b506200033a603b5481565b348015620005d457600080fd5b506200057e620005e63660046200358d565b62000c2d565b348015620005f957600080fd5b50620002656200060b36600462003533565b62000c4e565b3480156200061e57600080fd5b506200033a603c5481565b3480156200063657600080fd5b506200033a7f000000000000000000000000000000000000000000000000000000000000000081565b6200067662000670366004620037e3565b62000c79565b604051620002719493929190620038dc565b3480156200069557600080fd5b506200033a600081565b348015620006ac57600080fd5b506200029262000eba565b348015620006c457600080fd5b506200033a603a5481565b348015620006dc57600080fd5b506047546200057e906001600160a01b031681565b348015620006fe57600080fd5b506200033a6200071036600462003501565b62000f25565b3480156200072357600080fd5b50620003206200073536600462003963565b62000f3e565b3480156200074857600080fd5b50620003206200075a36600462003533565b62001023565b3480156200076d57600080fd5b506200033a6000805160206200438b83398151915281565b3480156200079257600080fd5b5062000320620007a436600462003990565b6200104d565b620007c1620007bb366004620039c8565b6200105a565b60408051948552602085019390935291830152606082015260800162000271565b348015620007ef57600080fd5b506200033a60485481565b3480156200080757600080fd5b5060375460385462000817919082565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b14806200085557506200085582620011b8565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a0810191909152506040805160c081018252603d548152603e546020820152603f548183015290546060820152604154608082015260425460a082015290565b604654431015620008f45760405162461bcd60e51b8152600401620008eb9062003a08565b60405180910390fd5b60005b818111620009255762000909620011ef565b62000912575050565b6200091d8162003a55565b9050620008f7565b505b50565b6000620009386037620014bc565b62000944603762001605565b905090565b60008281526001602081905260409091200154620009678162001642565b6200097383836200164e565b505050565b60408051606081018252600080825260208201819052918101919091526200099f62000bac565b6037546001600160801b0383161062000a075760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008eb565b6044546000905b8181111562000ae5576000600262000a27848462003a71565b62000a33919062003a9d565b90506044818154811062000a4b5762000a4b62003ab4565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290955086161062000ab45762000aac81600162003a71565b925062000ade565b83600001516001600160801b0316856001600160801b03161062000ada57505050919050565b8091505b5062000a0e565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008eb565b6001600160a01b038116331462000ba05760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401620008eb565b62000925828262001674565b60465443101562000bd15760405162461bcd60e51b8152600401620008eb9062003a08565b62000bdb620011ef565b62000bd1575b565b6000805160206200438b83398151915262000bfe8162001642565b620009276200169a565b6000805160206200438b83398151915262000c238162001642565b62000927620016ee565b600082815260026020526040812062000c4790836200172e565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60608060608062000c896200173c565b60465443101562000cae5760405162461bcd60e51b8152600401620008eb9062003a08565b8451806001600160401b0381111562000ccb5762000ccb620035b0565b60405190808252806020026020018201604052801562000cf5578160200160208202803683370190505b509450806001600160401b0381111562000d135762000d13620035b0565b60405190808252806020026020018201604052801562000d3d578160200160208202803683370190505b509350806001600160401b0381111562000d5b5762000d5b620035b0565b60405190808252806020026020018201604052801562000d85578160200160208202803683370190505b509250806001600160401b0381111562000da35762000da3620035b0565b60405190808252806020026020018201604052801562000dcd578160200160208202803683370190505b50915060005b8181101562000eb15760008060008062000e098b868151811062000dfb5762000dfb62003ab4565b60200260200101516200105a565b9350935093509350838a868151811062000e275762000e2762003ab4565b6020026020010181815250508289868151811062000e495762000e4962003ab4565b6020026020010181815250508188868151811062000e6b5762000e6b62003ab4565b6020026020010181815250508087868151811062000e8d5762000e8d62003ab4565b602002602001018181525050505050508062000ea99062003a55565b905062000dd3565b50509193509193565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a081019190915260465443101562000f115760405162461bcd60e51b8152600401620008eb9062003a08565b62000f1b62000bac565b620009446200085b565b6000818152600260205260408120620008559062001784565b60035460ff161562000f9f5760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401620008eb565b6003805460ff1916600117905562000fb7826200178f565b620009258162000fe87f00000000000000000000000000000000000000000000000000000000000000004362003a71565b6103e860405162000ff990620034c7565b908152602001604051809103906000f0801580156200101c573d6000803e3d6000fd5b506200189e565b60008281526001602081905260409091200154620010418162001642565b62000973838362001674565b620009738383836200189e565b6000806000806200106a6200173c565b6046544310156200108f5760405162461bcd60e51b8152600401620008eb9062003a08565b6200109a856200195c565b620010dd5760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008eb565b6000620010ea8662001baa565b9050620010f662000bac565b6000620011038762001c11565b90506000620011128862001d66565b603a805491925060019060006200112a838562003a71565b909155506200113c90506037620014bc565b62001148603762001605565b604560008381526020019081526020016000208190555081336001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558386888e604051620011a1949392919062003b1e565b60405180910390a396509450925090509193509193565b60006001600160e01b03198216637965db0b60e01b14806200085557506301ffc9a760e01b6001600160e01b031983161462000855565b6000620011fb6200173c565b6000604854603b54600101026046540190504381106200121d57600091505090565b620012296037620014bc565b600062001237603762001605565b604754604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af115801562001284573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620012aa919062003bb4565b5060008043620012bd8561010062003a71565b1015620012ef57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470905080620013fe565b506037546040805185406020820181905291810185905260608101929092529060800160408051808303601f190181528282528051602091820120603c80546037805487870187526001600160801b039283168089529083168689018181526000878152604389528981209a519151918616600160801b928716830217909a558851606081018a529283529682019081529681018581526044805460018101825599529051965196831696909216909402949094177f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135ea60029096029586015592517f9b22d3d61959b4d3528b1d8ba932c96fbe302b36a1aad1d95cab54f9e0a135eb9094019390935554905591505b6001603b600082825462001413919062003a71565b90915550506040805160c081018252603b5480825260208083018890528284018790526037546060808501829052608080860188905260a0909501889052603d849055603e8a9055603f89905581865560418790556042889055603a5486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a3600194505050505090565b6002810154600182015403620014cf5750565b60028101805460018084015491926000929091620014ed9162003bce565b8154811062001500576200150062003ab4565b9060005260206000200154905060006200152c6001856001015462001526919062003bce565b62001e53565b60018501549091505b83811015620015fa576040805160208082018690528183018590528251808303840181526060909201909252805191012085546200157890600290841c62003be4565b600003620015bb578093506200158e8262001e53565b925080866002018381548110620015a957620015a962003ab4565b600091825260209091200155620015e4565b856002018281548110620015d357620015d362003ab4565b906000526020600020015493508092505b5080620015f18162003a55565b91505062001535565b505050600190910155565b600281018054600091906200161d9060019062003bce565b8154811062001630576200163062003ab4565b90600052602060002001549050919050565b62000927813362002a98565b6200165a828262002afc565b600082815260026020526040902062000973908262002b6a565b62001680828262002b81565b600082815260026020526040902062000973908262002beb565b620016a462002c02565b6000805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b620016f86200173c565b6000805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258620016d13390565b600062000c47838362002c4d565b60005460ff161562000be15760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401620008eb565b600062000855825490565b6001603781905560398054808301825560009182527fdc16fef70f8d5ddbc01ee3d903d1e69c18a3c7be080eb86a81e0578814ee58d30155603855603680546001600160a01b0319166001600160a01b0383161790556000603b8190556040805160c081018252918252604654602083015281016200180f603762001605565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060408084018290526060938401919091528351603d5590830151603e5582810151603f55908201519055608081015160415560a001516042556200188360003362002c7a565b620009276000805160206200438b8339815191523362002c7a565b604854600003620018af5760488390555b604654600003620018c05760468290555b6047546001600160a01b031662000973576001600160a01b0381166200193a576103e8604051620018f190620034c7565b908152602001604051809103906000f08015801562001914573d6000803e3d6000fd5b50604780546001600160a01b0319166001600160a01b0392909216919091179055505050565b604780546001600160a01b0383166001600160a01b0319909116179055505050565b60008160400151516000036200197457506000919050565b60408201518051600491906200198d9060019062003bce565b81518110620019a057620019a062003ab4565b6020026020010151602001518360400151600081518110620019c657620019c662003ab4565b602002602001015160200151620019de919062003bce565b10620019ec57506000919050565b6040826040015160008151811062001a085762001a0862003ab4565b6020026020010151602001511062001a2257506000919050565b60005b600183604001515162001a39919062003bce565b81101562001abd578260400151818151811062001a5a5762001a5a62003ab4565b602002602001015160200151836040015182600162001a7a919062003a71565b8151811062001a8d5762001a8d62003ab4565b6020026020010151602001511062001aa85750600092915050565b8062001ab48162003a55565b91505062001a25565b50600062001acb8362001baa565b905062001adb6101008262003bfb565b8351111562001aed5750600092915050565b6000601082101562001b0e5762001b0660018362003bce565b905062001b80565b83604001515160010362001b2c5762001b06600483901c8362003bce565b6004846040015160008151811062001b485762001b4862003ab4565b60200260200101516020015162001b60919062003bce565b62001b6d90600162003a71565b62001b7d906001901b8362003bce565b90505b62001b8e6101008262003bfb565b84511162001ba0575060009392505050565b5060019392505050565b600080805b83604001515181101562001c0a578360400151818151811062001bd65762001bd662003ab4565b6020026020010151602001516001901b8262001bf3919062003a71565b91508062001c018162003a55565b91505062001baf565b5092915050565b6037805460009162001c24908462002c86565b60005b83604001515181101562001cc95760008460400151828151811062001c505762001c5062003ab4565b602002602001015160000151905060008560400151838151811062001c795762001c7962003ab4565b6020026020010151602001519050600062001ca18383603762002ddd9092919063ffffffff16565b90508360000362001cb0578095505b505050808062001cc09062003a55565b91505062001c27565b50600062001cd8828462003bce565b905060008360376000015462001cef919062003bce565b603654604051636d3759b560e11b81526004810186905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b15801562001d4557600080fd5b505af115801562001d5a573d6000803e3d6000fd5b50505050505050919050565b6000808260400151516001600160401b0381111562001d895762001d89620035b0565b60405190808252806020026020018201604052801562001db3578160200160208202803683370190505b50905060005b83604001515181101562001e21578360400151818151811062001de05762001de062003ab4565b60200260200101516000015182828151811062001e015762001e0162003ab4565b60209081029190910101528062001e188162003a55565b91505062001db9565b508060405160200162001e35919062003c1d565b60405160208183030381529060405280519060200120915050919050565b60008160000362001e8557507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b8160010362001eb557507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b8160020362001ee557507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b8160030362001f1557507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b8160040362001f4557507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b8160050362001f7557507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b8160060362001fa557507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b8160070362001fd557507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200200557507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200203557507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a036200206557507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b036200209557507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c03620020c557507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d03620020f557507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200212557507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200215557507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b816010036200218557507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620021b557507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b81601203620021e557507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200221557507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200224557507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b816015036200227557507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620022a557507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b81601703620022d557507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200230557507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200233557507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a036200236557507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b036200239557507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c03620023c557507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d03620023f557507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e036200242557507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f036200245557507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b816020036200248557507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b81602103620024b557507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b81602203620024e557507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b816023036200251557507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b816024036200254557507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b816025036200257557507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b81602603620025a557507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b81602703620025d557507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b816028036200260557507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b816029036200263557507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a036200266557507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b036200269557507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c03620026c557507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d03620026f557507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e036200272557507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f036200275557507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b816030036200278557507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b81603103620027b557507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b81603203620027e557507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b816033036200281557507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b816034036200284557507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b816035036200287557507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b81603603620028a557507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b81603703620028d557507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b816038036200290557507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b816039036200293557507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a036200296557507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b036200299557507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c03620029c557507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d03620029f557507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e0362002a2557507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f0362002a5557507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008eb565b919050565b62002aa4828262000c4e565b620009255762002ab48162002f7c565b62002ac183602062002f8f565b60405160200162002ad492919062003c55565b60408051601f198184030181529082905262461bcd60e51b8252620008eb9160040162003cce565b62002b08828262000c4e565b620009255760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b600062000c47836001600160a01b03841662003148565b62002b8d828262000c4e565b15620009255760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b600062000c47836001600160a01b0384166200319a565b60005460ff1662000be15760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401620008eb565b600082600001828154811062002c675762002c6762003ab4565b9060005260206000200154905092915050565b6200092582826200164e565b600062002c938262001baa565b9050600062002ccc8460000154846040015160008151811062002cba5762002cba62003ab4565b6020026020010151602001516200329e565b905061010062002cdf6104008262003bfb565b62002ceb919062003a9d565b62002cf7908262003be4565b1580159062002d70575061010062002d126104008262003bfb565b62002d1e919062003a9d565b600162002d2c848462003a71565b62002d38919062003bce565b62002d44919062003a9d565b61010062002d556104008262003bfb565b62002d61919062003a9d565b62002d6d908362003a9d565b14155b1562002dd75761010062002d876104008262003bfb565b62002d93919062003a9d565b62002d9f908262003be4565b61010062002db06104008262003bfb565b62002dbc919062003a9d565b62002dc8908362003a71565b62002dd4919062003bce565b84555b50505050565b60008062002df08560000154846200329e565b9050600062002e036001851b8362003a71565b600287015490915062002e199060019062003bce565b6001901b81111562002e765762002e3086620014bc565b62002e3b86620032dc565b600286015462002e4e9060019062003bce565b6001901b81111562002e6b5762002e6586620032dc565b62002e3b565b600286015460018701555b600286015462002e87878662003378565b60008087875b8481101562002f5c5762002ea5600288831c62003be4565b60000362002eea57818b600201828154811062002ec65762002ec662003ab4565b60009182526020909120015562002edf81600162003a71565b60018c015562002f5c565b8a600201818154811062002f025762002f0262003ab4565b90600052602060002001549350819250838360405160200162002f2f929190918252602082015260400190565b6040516020818303038152906040528051906020012091508062002f538162003a55565b91505062002e8d565b5062002f6c6001891b8762003a71565b9099555092979650505050505050565b6060620008556001600160a01b03831660145b6060600062002fa083600262003bfb565b62002fad90600262003a71565b6001600160401b0381111562002fc75762002fc7620035b0565b6040519080825280601f01601f19166020018201604052801562002ff2576020820181803683370190505b509050600360fc1b8160008151811062003010576200301062003ab4565b60200101906001600160f81b031916908160001a905350600f60fb1b8160018151811062003042576200304262003ab4565b60200101906001600160f81b031916908160001a90535060006200306884600262003bfb565b6200307590600162003a71565b90505b6001811115620030f7576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110620030ad57620030ad62003ab4565b1a60f81b828281518110620030c657620030c662003ab4565b60200101906001600160f81b031916908160001a90535060049490941c93620030ef8162003ce3565b905062003078565b50831562000c475760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401620008eb565b6000818152600183016020526040812054620031915750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000855565b50600062000855565b6000818152600183016020526040812054801562003293576000620031c160018362003bce565b8554909150600090620031d79060019062003bce565b905081811462003243576000866000018281548110620031fb57620031fb62003ab4565b906000526020600020015490508087600001848154811062003221576200322162003ab4565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062003257576200325762003cfd565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000855565b600091505062000855565b600082808203620032b457600091505062000855565b620032c160018262003bce565b831c9050620032d260018262003a71565b90921b9392505050565b60028101805490600090620032f360018462003bce565b8154811062003306576200330662003ab4565b60009182526020822001549150620033246200152660018562003bce565b905083600201828260405160200162003347929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b808260010154111562003389575050565b60028201805460018085015491926000929091620033a79162003bce565b81548110620033ba57620033ba62003ab4565b906000526020600020015490506000620033e06001866001015462001526919062003bce565b60018601549091505b83811015620034bf576040805160208082018690528183018590528251808303840181526060909201909252805191012086546200342c90600290841c62003be4565b6000036200348057809350620034428262001e53565b92508582106200347a578087600201838154811062003465576200346562003ab4565b60009182526020909120015550505050505050565b620034a9565b86600201828154811062003498576200349862003ab4565b906000526020600020015493508092505b5080620034b68162003a55565b915050620033e9565b505050505050565b6106778062003d1483390190565b600060208284031215620034e857600080fd5b81356001600160e01b03198116811462000c4757600080fd5b6000602082840312156200351457600080fd5b5035919050565b80356001600160a01b038116811462002a9357600080fd5b600080604083850312156200354757600080fd5b8235915062003559602084016200351b565b90509250929050565b6000602082840312156200357557600080fd5b81356001600160801b038116811462000c4757600080fd5b60008060408385031215620035a157600080fd5b50508035926020909101359150565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b0381118282101715620035eb57620035eb620035b0565b60405290565b604051606081016001600160401b0381118282101715620035eb57620035eb620035b0565b604051601f8201601f191681016001600160401b0381118282101715620036415762003641620035b0565b604052919050565b60006001600160401b03821115620036655762003665620035b0565b5060051b60200190565b600082601f8301126200368157600080fd5b813560206200369a620036948362003649565b62003616565b82815260069290921b84018101918181019086841115620036ba57600080fd5b8286015b84811015620036fe5760408189031215620036d95760008081fd5b620036e3620035c6565b813581528482013585820152835291830191604001620036be565b509695505050505050565b6000606082840312156200371c57600080fd5b62003726620035f1565b9050813581526020808301356001600160401b03808211156200374857600080fd5b818501915085601f8301126200375d57600080fd5b813581811115620037725762003772620035b0565b62003786601f8201601f1916850162003616565b81815287858386010111156200379b57600080fd5b81858501868301376000858383010152808587015250506040850135925080831115620037c757600080fd5b5050620037d7848285016200366f565b60408301525092915050565b60006020808385031215620037f757600080fd5b82356001600160401b03808211156200380f57600080fd5b818501915085601f8301126200382457600080fd5b813562003835620036948262003649565b81815260059190911b830184019084810190888311156200385557600080fd5b8585015b838110156200389257803585811115620038735760008081fd5b620038838b89838a010162003709565b84525091860191860162003859565b5098975050505050505050565b600081518084526020808501945080840160005b83811015620038d157815187529582019590820190600101620038b3565b509495945050505050565b608081526000620038f160808301876200389f565b82810360208481019190915286518083528782019282019060005b818110156200392a578451835293830193918301916001016200390c565b505084810360408601526200394081886200389f565b9250505082810360608401526200395881856200389f565b979650505050505050565b600080604083850312156200397757600080fd5b62003982836200351b565b946020939093013593505050565b600080600060608486031215620039a657600080fd5b8335925060208401359150620039bf604085016200351b565b90509250925092565b600060208284031215620039db57600080fd5b81356001600160401b03811115620039f257600080fd5b62003a008482850162003709565b949350505050565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003a6a5762003a6a62003a3f565b5060010190565b8082018082111562000855576200085562003a3f565b634e487b7160e01b600052601260045260246000fd5b60008262003aaf5762003aaf62003a87565b500490565b634e487b7160e01b600052603260045260246000fd5b60005b8381101562003ae757818101518382015260200162003acd565b50506000910152565b6000815180845262003b0a81602086016020860162003aca565b601f01601f19169290920160200192915050565b84815260006020858184015260408581850152608060608501528451608085015281850151606060a086015262003b5960e086018262003af0565b86830151868203607f190160c0880152805180835290850192506000918501905b8083101562003ba5578351805183528601518683015292850192600192909201919084019062003b7a565b509a9950505050505050505050565b60006020828403121562003bc757600080fd5b5051919050565b8181038181111562000855576200085562003a3f565b60008262003bf65762003bf662003a87565b500690565b600081600019048311821515161562003c185762003c1862003a3f565b500290565b815160009082906020808601845b8381101562003c495781518552938201939082019060010162003c2b565b50929695505050505050565b7f416363657373436f6e74726f6c3a206163636f756e742000000000000000000081526000835162003c8f81601785016020880162003aca565b7001034b99036b4b9b9b4b733903937b6329607d1b601791840191820152835162003cc281602884016020880162003aca565b01602801949350505050565b60208152600062000c47602083018462003af0565b60008162003cf55762003cf562003a3f565b506000190190565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161067738038061067783398101604081905261002f9161014a565b6100383361009a565b806001600160401b0381111561005057610050610163565b604051908082528060200260200182016040528015610079578160200160208202803683370190505b50805161008e916001916020909101906100ea565b50506000600255610179565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b828054828255906000526020600020908101928215610125579160200282015b8281111561012557825182559160200191906001019061010a565b50610131929150610135565b5090565b5b808211156101315760008155600101610136565b60006020828403121561015c57600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b6104ef806101886000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b6100956100903660046103ea565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b83660046103ea565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe3660046103ea565b610209565b6100bd6101113660046103ea565b61023e565b6100d3610124366004610403565b61029e565b60008061013d600254600180549050610317565b905060005b8181101561018a57836001828154811061015e5761015e61042c565b906000526020600020015403610178575060019392505050565b8061018281610458565b915050610142565b5060009392505050565b600061019e610331565b6002546001546000906101b19083610471565b905083600182815481106101c7576101c761042c565b90600052602060002001819055506001600260008282546101e89190610493565b9091555091949350505050565b6101fd610331565b610207600061038b565b565b6001546002546000919083108015610237575080610229600254836103db565b61023391906104a6565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610471565b8154811061028c5761028c61042c565b90600052602060002001549050919050565b6102a6610331565b6001600160a01b03811661030b5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610265565b6103148161038b565b50565b60008183106103265781610328565b825b90505b92915050565b6000546001600160a01b031633146102075760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65726044820152606401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116103265781610328565b6000602082840312156103fc57600080fd5b5035919050565b60006020828403121561041557600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161046a5761046a610442565b5060010190565b60008261048e57634e487b7160e01b600052601260045260246000fd5b500690565b8082018082111561032b5761032b610442565b8181038181111561032b5761032b61044256fea2646970667358221220ab4227e667a8cb673b86154f616db16af24f601e334d164960a5df4e7cbdcec464736f6c6343000810003365d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862aa2646970667358221220615b0dde46015bf49074fa72a78a10f3d8c0d4d883c68d4e4de31bc217fa055564736f6c63430008100033", + "bytecode": "0x60a06040523480156200001157600080fd5b506040516200478d3803806200478d83398101604081905262000034916200003d565b60805262000057565b6000602082840312156200005057600080fd5b5051919050565b6080516147136200007a60003960008181610611015261136401526147136000f3fe6080604052600436106200023b5760003560e01c80638456cb59116200012f578063bc8c11f811620000ad578063d547741f1162000078578063d547741f1462000714578063e63ab1e91462000739578063ebdec6d3146200075e578063f06820541462000783578063fd54b228146200079b57600080fd5b8063bc8c11f8146200067a578063c7dd522114620006b2578063ca15c87314620006ca578063cd6dc68714620006ef57600080fd5b806393e405a011620000fa57806393e405a014620005e55780639bbbfdbb14620005fd578063a217fddf1462000633578063b464b53e146200064a578063b8a409ac146200066257600080fd5b80638456cb59146200056b578063900cf0cf14620005835780639010d07c146200059b57806391d1485414620005c057600080fd5b806338d45e1011620001bd5780635c975abb11620001885780635c975abb14620004885780636d7ad0fc14620004b057806377e1982414620004d55780637d59070814620004ed57806380f55605146200053a57600080fd5b806338d45e10146200040a5780633f4ba83a14620004225780634282b532146200043a57806349aa3395146200045f57600080fd5b8063231b0268116200020a578063231b0268146200032d578063248a9ca314620003455780632f2ff15d146200036a57806331bae174146200038f57806336568abe14620003e557600080fd5b806301ffc9a71462000240578063127f0f07146200027a57806318a641ef14620002df5780631deb0fca1462000306575b600080fd5b3480156200024d57600080fd5b50620002656200025f36600462003872565b620007c9565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b5062000292620007f7565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b5062000304620002fe3660046200389e565b6200087e565b005b3480156200031357600080fd5b506200031e620008f4565b60405190815260200162000271565b3480156200033a57600080fd5b506200031e62000925565b3480156200035257600080fd5b506200031e620003643660046200389e565b6200093a565b3480156200037757600080fd5b506200030462000389366004620038d0565b6200095d565b3480156200039c57600080fd5b50620003b4620003ae366004620038ff565b62000985565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b348015620003f257600080fd5b506200030462000404366004620038d0565b62000b4e565b3480156200041757600080fd5b506200030462000b84565b3480156200042f57600080fd5b506200030462000bcc565b3480156200044757600080fd5b50620003b4620004593660046200389e565b62000bf1565b620004766200047036600462003b9e565b62000c7e565b60405162000271949392919062003c97565b3480156200049557600080fd5b50600080516020620046be8339815191525460ff1662000265565b348015620004bd57600080fd5b506200031e620004cf3660046200389e565b62000ed0565b348015620004e257600080fd5b506200031e62000ef0565b348015620004fa57600080fd5b50620005126200050c3660046200389e565b62000f07565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200054757600080fd5b506200055262000f5f565b6040516001600160a01b03909116815260200162000271565b3480156200057857600080fd5b506200030462000f7a565b3480156200059057600080fd5b506200031e62000f9f565b348015620005a857600080fd5b5062000552620005ba36600462003d1e565b62000fb4565b348015620005cd57600080fd5b5062000265620005df366004620038d0565b62000fe6565b348015620005f257600080fd5b506200031e6200101f565b3480156200060a57600080fd5b506200031e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156200064057600080fd5b506200031e600081565b3480156200065757600080fd5b506200029262001034565b3480156200066f57600080fd5b506200031e620010ad565b620006916200068b36600462003d41565b620010c2565b60408051948552602085019390935291830152606082015260800162000271565b348015620006bf57600080fd5b506200055262001244565b348015620006d757600080fd5b506200031e620006e93660046200389e565b62001262565b348015620006fc57600080fd5b50620003046200070e36600462003d79565b62001292565b3480156200072157600080fd5b506200030462000733366004620038d0565b62001415565b3480156200074657600080fd5b506200031e6000805160206200467e83398151915281565b3480156200076b57600080fd5b50620003046200077d36600462003da6565b62001437565b3480156200079057600080fd5b506200031e62001444565b348015620007a857600080fd5b50620007b362001459565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b1480620007f15750620007f182620014f9565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526200083362001530565b6040805160c0810182526007830154815260088301546020820152600983015491810191909152600a8201546060820152600b8201546080820152600c9091015460a0820152919050565b60006200088a62001530565b90508060100154431015620008bc5760405162461bcd60e51b8152600401620008b39062003dde565b60405180910390fd5b60005b828111620008ee57620008d162001554565b620008db57505050565b620008e68162003e2b565b9050620008bf565b505b5050565b6000806200090162001530565b9050620009118160010162001909565b6200091f8160010162001a52565b91505090565b60006200093162001530565b60100154905090565b60009081526000805160206200469e833981519152602052604090206001015490565b62000968826200093a565b620009738162001a8f565b6200097f838362001a9b565b50505050565b6040805160608101825260008082526020820181905291810182905290620009ac62001530565b9050620009b862000b84565b60018101546001600160801b0384161062000a225760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008b3565b600e8101546000905b8181111562000b05576000600262000a44848462003e47565b62000a50919062003e73565b905083600e01818154811062000a6a5762000a6a62003e8a565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290965087161062000ad35762000acb81600162003e47565b925062000afe565b84600001516001600160801b0316866001600160801b03161062000afa5750505050919050565b8091505b5062000a2b565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008b3565b6001600160a01b038116331462000b785760405163334bd91960e11b815260040160405180910390fd5b620008ee828262001ae6565b600062000b9062001530565b9050806010015443101562000bb95760405162461bcd60e51b8152600401620008b39062003dde565b62000bc362001554565b62000bb9575b50565b6000805160206200467e83398151915262000be78162001a8f565b62000bc962001b28565b604080516060810182526000808252602082018190529181019190915262000c1862001530565b600e01828154811062000c2f5762000c2f62003e8a565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910416938301939093526001909201549181019190915292915050565b60608060608062000c8e62001b8b565b600062000c9a62001530565b9050806010015443101562000cc35760405162461bcd60e51b8152600401620008b39062003dde565b8551806001600160401b0381111562000ce05762000ce06200392a565b60405190808252806020026020018201604052801562000d0a578160200160208202803683370190505b509550806001600160401b0381111562000d285762000d286200392a565b60405190808252806020026020018201604052801562000d52578160200160208202803683370190505b509450806001600160401b0381111562000d705762000d706200392a565b60405190808252806020026020018201604052801562000d9a578160200160208202803683370190505b509350806001600160401b0381111562000db85762000db86200392a565b60405190808252806020026020018201604052801562000de2578160200160208202803683370190505b50925060005b8181101562000ec65760008060008062000e1e8c868151811062000e105762000e1062003e8a565b6020026020010151620010c2565b9350935093509350838b868151811062000e3c5762000e3c62003e8a565b602002602001018181525050828a868151811062000e5e5762000e5e62003e8a565b6020026020010181815250508189868151811062000e805762000e8062003e8a565b6020026020010181815250508088868151811062000ea25762000ea262003e8a565b602002602001018181525050505050508062000ebe9062003e2b565b905062000de8565b5050509193509193565b600062000edc62001530565b6000928352600f0160205250604090205490565b60008062000efd62001530565b6004015492915050565b604080518082019091526000808252602082015262000f2562001530565b6000928352600d0160209081526040928390208351808501909452546001600160801b038082168552600160801b90910416908301525090565b600062000f6b62001530565b546001600160a01b0316919050565b6000805160206200467e83398151915262000f958162001a8f565b62000bc962001bc0565b600062000fab62001530565b60050154905090565b60008281526000805160206200465e83398151915260208190526040822062000fde908462001c0d565b949350505050565b60009182526000805160206200469e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006200102b62001530565b60060154905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052906200107062001530565b90508060100154431015620010995760405162461bcd60e51b8152600401620008b39062003dde565b620010a362000b84565b6200091f620007f7565b6000620010b962001530565b60040154905090565b600080600080620010d262001b8b565b6000620010de62001530565b90508060100154431015620011075760405162461bcd60e51b8152600401620008b39062003dde565b60006200111362001530565b9050620011208762001c1b565b620011635760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008b3565b6200116e8762001e8e565b92506200117a62000b84565b620011858762001ef9565b9350620011928762002064565b60048201805497509095506001906000620011ae838a62003e47565b90915550620011c290506001820162001909565b620011d08160010162001a52565b81600f016000888152602001908152602001600020819055508487602001516001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558887878c6000015160405162001233949392919062003edd565b60405180910390a350509193509193565b60006200125062001530565b601101546001600160a01b0316919050565b60008181526000805160206200465e8339815191526020819052604082206200128b9062002157565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015620012d85750825b90506000826001600160401b03166001148015620012f55750303b155b90508115801562001304575080155b15620013235760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200134e57845460ff60401b1916600160401b1785555b620013598762002162565b620013c5866200138a7f00000000000000000000000000000000000000000000000000000000000000004362003e47565b6103e86040516200139b9062003864565b908152602001604051809103906000f080158015620013be573d6000803e3d6000fd5b5062002277565b83156200140c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b62001420826200093a565b6200142b8162001a8f565b6200097f838362001ae6565b620008ee83838362002277565b60006200145062001530565b60120154905090565b60008060006200146862001530565b600101604051806060016040529081600082015481526020016001820154815260200160028201805480602002602001604051908101604052809291908181526020018280548015620014db57602002820191906000526020600020905b815481526020019060010190808311620014c6575b50505050508152505090508060000151816020015192509250509091565b60006001600160e01b03198216637965db0b60e01b1480620007f157506301ffc9a760e01b6001600160e01b0319831614620007f1565b7f2c76cc46aac583da4777117fb4419fbb43af6051f6353fccbce7a36d394f550090565b60006200156062001b8b565b60006200156c62001530565b6012810154600582015460108301549293506001010201438110620015945760009250505090565b620015a28260010162001909565b6000620015b28360010162001a52565b6011840154604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af115801562001601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001627919062003f78565b50600080436200163a85611fff62003e47565b10156200166c57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090508062001834565b620016778462002353565b6001860154604080516020810184905290810186905260608101919091529091506080016040516020818303038152906040528051906020012091506000856006015490506000866001016000015490506040518060400160405280836001600160801b03168152602001826001600160801b031681525087600d01600086815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555090505086600e016040518060600160405280846001600160801b03168152602001836001600160801b0316815260200186815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015550508660010160000154876006018190555050505b60018560050160008282546200184b919062003e47565b90915550506040805160c0810182526005870154808252602080830188905282840187905260018901546060808501829052608080860188905260a090950188905260078b0184905560088b018a905560098b01899055600a8b01829055600b8b01879055600c8b0188905560048b015486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a360019550505050505090565b60028101546001820154036200191c5750565b600281018054600180840154919260009290916200193a9162003f92565b815481106200194d576200194d62003e8a565b906000526020600020015490506000620019796001856001015462001973919062003f92565b62002385565b60018501549091505b8381101562001a4757604080516020808201869052818301859052825180830384018152606090920190925280519101208554620019c590600290841c62003fa8565b60000362001a0857809350620019db8262002385565b925080866002018381548110620019f657620019f662003e8a565b60009182526020909120015562001a31565b85600201828154811062001a205762001a2062003e8a565b906000526020600020015493508092505b508062001a3e8162003e2b565b91505062001982565b505050600190910155565b6002810180546000919062001a6a9060019062003f92565b8154811062001a7d5762001a7d62003e8a565b90600052602060002001549050919050565b62000bc9813362002fca565b60006000805160206200465e8339815191528162001aba858562003007565b9050801562000fde57600085815260208390526040902062001add9085620030b3565b50949350505050565b60006000805160206200465e8339815191528162001b058585620030ca565b9050801562000fde57600085815260208390526040902062001add90856200314b565b62001b3262003162565b600080516020620046be833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b600080516020620046be8339815191525460ff161562001bbe5760405163d93c066560e01b815260040160405180910390fd5b565b62001bca62001b8b565b600080516020620046be833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583362001b6d565b60006200128b838362003194565b60208101516000906001600160a01b031662001c3957506000919050565b815160408101515160000362001c525750600092915050565b604081015180516004919062001c6b9060019062003f92565b8151811062001c7e5762001c7e62003e8a565b602002602001015160200151826040015160008151811062001ca45762001ca462003e8a565b60200260200101516020015162001cbc919062003f92565b1062001ccb5750600092915050565b6040816040015160008151811062001ce75762001ce762003e8a565b6020026020010151602001511062001d025750600092915050565b60005b600182604001515162001d19919062003f92565b81101562001d9e578160400151818151811062001d3a5762001d3a62003e8a565b602002602001015160200151826040015182600162001d5a919062003e47565b8151811062001d6d5762001d6d62003e8a565b6020026020010151602001511062001d89575060009392505050565b8062001d958162003e2b565b91505062001d05565b50600062001dac8462001e8e565b905062001dbc6101008262003fbf565b8251111562001dcf575060009392505050565b6000601082101562001df05762001de860018362003f92565b905062001e62565b82604001515160010362001e0e5762001de8600483901c8362003f92565b6004836040015160008151811062001e2a5762001e2a62003e8a565b60200260200101516020015162001e42919062003f92565b62001e4f90600162003e47565b62001e5f906001901b8362003f92565b90505b62001e706101008262003fbf565b83511162001e8357506000949350505050565b506001949350505050565b805160009081805b82604001515181101562001ef1578260400151818151811062001ebd5762001ebd62003e8a565b6020026020010151602001516001901b8262001eda919062003e47565b91508062001ee88162003e2b565b91505062001e96565b509392505050565b60008062001f0662001530565b60018101805491925062001f1b9085620031c1565b835160005b81604001515181101562001fc45760008260400151828151811062001f495762001f4962003e8a565b602002602001015160000151905060008360400151838151811062001f725762001f7262003e8a565b6020026020010151602001519050600062001f9c8383896001016200331b9092919063ffffffff16565b90508360000362001fab578097505b505050808062001fbb9062003e2b565b91505062001f20565b50600062001fd3838662003f92565b9050600085856001016000015462001fec919062003f92565b8554604051636d3759b560e11b81526004810187905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b1580156200204157600080fd5b505af115801562002056573d6000803e3d6000fd5b505050505050505050919050565b80516040810151516000919082906001600160401b038111156200208c576200208c6200392a565b604051908082528060200260200182016040528015620020b6578160200160208202803683370190505b50905060005b826040015151811015620021245782604001518181518110620020e357620020e362003e8a565b60200260200101516000015182828151811062002104576200210462003e8a565b6020908102919091010152806200211b8162003e2b565b915050620020bc565b508060405160200162002138919062003fd9565b6040516020818303038152906040528051906020012092505050919050565b6000620007f1825490565b60006200216e62001530565b6001808201819055600382018054808301825560009182526020822001556002820155905080546001600160a01b0319166001600160a01b0383161781556000600582018190556040805160c081018252918252601083015460208301528101620021dc6001840162001a52565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706040808401829052606093840191909152835160078601559083015160088501558201516009840155810151600a8301556080810151600b83015560a00151600c8201556200225b60003362001a9b565b50620008ee6000805160206200467e8339815191523362001a9b565b60006200228362001530565b905080601201546000036200229a57601281018490555b8060100154600003620022af57601081018390555b60118101546001600160a01b03166200097f576001600160a01b0382166200232e576103e8604051620022e29062003864565b908152602001604051809103906000f08015801562002305573d6000803e3d6000fd5b506011820180546001600160a01b0319166001600160a01b03929092169190911790556200097f565b6011810180546001600160a01b0384166001600160a01b031990911617905550505050565b600043828103610100811180156200236d5750611fff8111155b6200237a57834062000fde565b62000fde84620034ba565b600081600003620023b757507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b81600103620023e757507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b816002036200241757507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b816003036200244757507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b816004036200247757507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b81600503620024a757507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b81600603620024d757507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b816007036200250757507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200253757507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200256757507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a036200259757507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b03620025c757507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c03620025f757507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d036200262757507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200265757507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200268757507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b81601003620026b757507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620026e757507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b816012036200271757507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200274757507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200277757507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b81601503620027a757507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620027d757507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b816017036200280757507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200283757507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200286757507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a036200289757507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b03620028c757507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c03620028f757507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d036200292757507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e036200295757507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f036200298757507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b81602003620029b757507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b81602103620029e757507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b8160220362002a1757507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b8160230362002a4757507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b8160240362002a7757507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b8160250362002aa757507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b8160260362002ad757507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b8160270362002b0757507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b8160280362002b3757507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b8160290362002b6757507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a0362002b9757507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b0362002bc757507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c0362002bf757507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d0362002c2757507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e0362002c5757507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f0362002c8757507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b8160300362002cb757507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b8160310362002ce757507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b8160320362002d1757507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b8160330362002d4757507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b8160340362002d7757507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b8160350362002da757507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b8160360362002dd757507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b8160370362002e0757507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b8160380362002e3757507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b8160390362002e6757507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a0362002e9757507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b0362002ec757507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c0362002ef757507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d0362002f2757507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e0362002f5757507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f0362002f8757507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008b3565b919050565b62002fd6828262000fe6565b620008f05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008b3565b60006000805160206200469e83398151915262003025848462000fe6565b620030a8576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556200305d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620007f1565b6000915050620007f1565b60006200128b836001600160a01b038416620034f0565b60006000805160206200469e833981519152620030e8848462000fe6565b15620030a8576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620007f1565b60006200128b836001600160a01b03841662003542565b600080516020620046be8339815191525460ff1662001bbe57604051638dfc202b60e01b815260040160405180910390fd5b6000826000018281548110620031ae57620031ae62003e8a565b9060005260206000200154905092915050565b6000620031ce8262001e8e565b905060006200320b8460000154846000015160400151600081518110620031f957620031f962003e8a565b6020026020010151602001516200363b565b90506101006200321e6104008262003fbf565b6200322a919062003e73565b62003236908262003fa8565b15801590620032af5750610100620032516104008262003fbf565b6200325d919062003e73565b60016200326b848462003e47565b62003277919062003f92565b62003283919062003e73565b610100620032946104008262003fbf565b620032a0919062003e73565b620032ac908362003e73565b14155b156200097f57610100620032c66104008262003fbf565b620032d2919062003e73565b620032de908262003fa8565b610100620032ef6104008262003fbf565b620032fb919062003e73565b62003307908362003e47565b62003313919062003f92565b845550505050565b6000806200332e8560000154846200363b565b90506000620033416001851b8362003e47565b6002870154909150620033579060019062003f92565b6001901b811115620033b4576200336e8662001909565b620033798662003679565b60028601546200338c9060019062003f92565b6001901b811115620033a957620033a38662003679565b62003379565b600286015460018701555b6002860154620033c5878662003715565b60008087875b848110156200349a57620033e3600288831c62003fa8565b6000036200342857818b600201828154811062003404576200340462003e8a565b6000918252602090912001556200341d81600162003e47565b60018c01556200349a565b8a600201818154811062003440576200344062003e8a565b9060005260206000200154935081925083836040516020016200346d929190918252602082015260400190565b60405160208183030381529060405280519060200120915080620034918162003e2b565b915050620033cb565b50620034aa6001891b8762003e47565b9099555092979650505050505050565b600081600052602060006020600071f90827f1c53a10cb7a02335b1753200029355afa60003d11161562002fc557505060005190565b60008181526001830160205260408120546200353957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620007f1565b506000620007f1565b60008181526001830160205260408120548015620030a85760006200356960018362003f92565b85549091506000906200357f9060019062003f92565b9050808214620035eb576000866000018281548110620035a357620035a362003e8a565b9060005260206000200154905080876000018481548110620035c957620035c962003e8a565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620035ff57620035ff62004011565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620007f1565b60008280820362003651576000915050620007f1565b6200365e60018262003f92565b831c90506200366f60018262003e47565b90921b9392505050565b600281018054906000906200369060018462003f92565b81548110620036a357620036a362003e8a565b60009182526020822001549150620036c16200197360018562003f92565b9050836002018282604051602001620036e4929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b808260010154111562003726575050565b60028201805460018085015491926000929091620037449162003f92565b8154811062003757576200375762003e8a565b9060005260206000200154905060006200377d6001866001015462001973919062003f92565b60018601549091505b838110156200385c57604080516020808201869052818301859052825180830384018152606090920190925280519101208654620037c990600290841c62003fa8565b6000036200381d57809350620037df8262002385565b925085821062003817578087600201838154811062003802576200380262003e8a565b60009182526020909120015550505050505050565b62003846565b86600201828154811062003835576200383562003e8a565b906000526020600020015493508092505b5080620038538162003e2b565b91505062003786565b505050505050565b610636806200402883390190565b6000602082840312156200388557600080fd5b81356001600160e01b0319811681146200128b57600080fd5b600060208284031215620038b157600080fd5b5035919050565b80356001600160a01b038116811462002fc557600080fd5b60008060408385031215620038e457600080fd5b82359150620038f660208401620038b8565b90509250929050565b6000602082840312156200391257600080fd5b81356001600160801b03811681146200128b57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156200396557620039656200392a565b60405290565b604051606081016001600160401b03811182821017156200396557620039656200392a565b604051601f8201601f191681016001600160401b0381118282101715620039bb57620039bb6200392a565b604052919050565b60006001600160401b03821115620039df57620039df6200392a565b5060051b60200190565b600082601f830112620039fb57600080fd5b8135602062003a1462003a0e83620039c3565b62003990565b82815260069290921b8401810191818101908684111562003a3457600080fd5b8286015b8481101562003a78576040818903121562003a535760008081fd5b62003a5d62003940565b81358152848201358582015283529183019160400162003a38565b509695505050505050565b60006040828403121562003a9657600080fd5b62003aa062003940565b905081356001600160401b038082111562003aba57600080fd5b908301906060828603121562003acf57600080fd5b62003ad96200396b565b823581526020808401358381111562003af157600080fd5b8401601f8101881362003b0357600080fd5b80358481111562003b185762003b186200392a565b62003b2c601f8201601f1916840162003990565b818152898483850101111562003b4157600080fd5b81848401858301376000848383010152808486015250505060408401358381111562003b6c57600080fd5b62003b7a88828701620039e9565b60408401525081855262003b90818701620038b8565b818601525050505092915050565b6000602080838503121562003bb257600080fd5b82356001600160401b038082111562003bca57600080fd5b818501915085601f83011262003bdf57600080fd5b813562003bf062003a0e82620039c3565b81815260059190911b8301840190848101908883111562003c1057600080fd5b8585015b8381101562003c4d5780358581111562003c2e5760008081fd5b62003c3e8b89838a010162003a83565b84525091860191860162003c14565b5098975050505050505050565b600081518084526020808501945080840160005b8381101562003c8c5781518752958201959082019060010162003c6e565b509495945050505050565b60808152600062003cac608083018762003c5a565b82810360208481019190915286518083528782019282019060005b8181101562003ce55784518352938301939183019160010162003cc7565b5050848103604086015262003cfb818862003c5a565b92505050828103606084015262003d13818562003c5a565b979650505050505050565b6000806040838503121562003d3257600080fd5b50508035926020909101359150565b60006020828403121562003d5457600080fd5b81356001600160401b0381111562003d6b57600080fd5b62000fde8482850162003a83565b6000806040838503121562003d8d57600080fd5b62003d9883620038b8565b946020939093013593505050565b60008060006060848603121562003dbc57600080fd5b833592506020840135915062003dd560408501620038b8565b90509250925092565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003e405762003e4062003e15565b5060010190565b80820180821115620007f157620007f162003e15565b634e487b7160e01b600052601260045260246000fd5b60008262003e855762003e8562003e5d565b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101562003c8c57815180518852830151838801526040909601959082019060010162003eb4565b848152600060208581840152846040840152608060608401528351608084015280840151606060a085015280518060e086015260005b8181101562003f32578281018401518682016101000152830162003f13565b5061010092506000838287010152601f19601f8201168501915050604085015160808583030160c086015262003f6b8383018262003ea0565b9998505050505050505050565b60006020828403121562003f8b57600080fd5b5051919050565b81810381811115620007f157620007f162003e15565b60008262003fba5762003fba62003e5d565b500690565b8082028115828204841417620007f157620007f162003e15565b815160009082906020808601845b83811015620040055781518552938201939082019060010162003fe7565b50929695505050505050565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161063638038061063683398101604081905261002f91610171565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e816100c1565b50806001600160401b038111156100775761007761018a565b6040519080825280602002602001820160405280156100a0578160200160208202803683370190505b5080516100b591600191602090910190610111565b505060006002556101a0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561014c579160200282015b8281111561014c578251825591602001919060010190610131565b5061015892915061015c565b5090565b5b80821115610158576000815560010161015d565b60006020828403121561018357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b610487806101af6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b610095610090366004610382565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b8366004610382565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe366004610382565b610209565b6100bd610111366004610382565b61023e565b6100d361012436600461039b565b61029e565b60008061013d6002546001805490506102dc565b905060005b8181101561018a57836001828154811061015e5761015e6103c4565b906000526020600020015403610178575060019392505050565b80610182816103f0565b915050610142565b5060009392505050565b600061019e6102f6565b6002546001546000906101b19083610409565b905083600182815481106101c7576101c76103c4565b90600052602060002001819055506001600260008282546101e8919061042b565b9091555091949350505050565b6101fd6102f6565b6102076000610323565b565b600154600254600091908310801561023757508061022960025483610373565b610233919061043e565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610409565b8154811061028c5761028c6103c4565b90600052602060002001549050919050565b6102a66102f6565b6001600160a01b0381166102d057604051631e4fbdf760e01b815260006004820152602401610265565b6102d981610323565b50565b60008183106102eb57816102ed565b825b90505b92915050565b6000546001600160a01b031633146102075760405163118cdaa760e01b8152336004820152602401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116102eb57816102ed565b60006020828403121561039457600080fd5b5035919050565b6000602082840312156103ad57600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610402576104026103da565b5060010190565b60008261042657634e487b7160e01b600052601260045260246000fd5b500690565b808201808211156102f0576102f06103da565b818103818111156102f0576102f06103da56fea2646970667358221220635494212f9012021fb76812bcb699d1b59e0137921bc1364e1859dad84af54164736f6c63430008140033c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122061c88f76e15baedcd49c7e7fcbb5bd2614f19dc80af0ff4e319914a8cabf819364736f6c63430008140033", + "deployedBytecode": "0x6080604052600436106200023b5760003560e01c80638456cb59116200012f578063bc8c11f811620000ad578063d547741f1162000078578063d547741f1462000714578063e63ab1e91462000739578063ebdec6d3146200075e578063f06820541462000783578063fd54b228146200079b57600080fd5b8063bc8c11f8146200067a578063c7dd522114620006b2578063ca15c87314620006ca578063cd6dc68714620006ef57600080fd5b806393e405a011620000fa57806393e405a014620005e55780639bbbfdbb14620005fd578063a217fddf1462000633578063b464b53e146200064a578063b8a409ac146200066257600080fd5b80638456cb59146200056b578063900cf0cf14620005835780639010d07c146200059b57806391d1485414620005c057600080fd5b806338d45e1011620001bd5780635c975abb11620001885780635c975abb14620004885780636d7ad0fc14620004b057806377e1982414620004d55780637d59070814620004ed57806380f55605146200053a57600080fd5b806338d45e10146200040a5780633f4ba83a14620004225780634282b532146200043a57806349aa3395146200045f57600080fd5b8063231b0268116200020a578063231b0268146200032d578063248a9ca314620003455780632f2ff15d146200036a57806331bae174146200038f57806336568abe14620003e557600080fd5b806301ffc9a71462000240578063127f0f07146200027a57806318a641ef14620002df5780631deb0fca1462000306575b600080fd5b3480156200024d57600080fd5b50620002656200025f36600462003872565b620007c9565b60405190151581526020015b60405180910390f35b3480156200028757600080fd5b5062000292620007f7565b604051620002719190600060c082019050825182526020830151602083015260408301516040830152606083015160608301526080830151608083015260a083015160a083015292915050565b348015620002ec57600080fd5b5062000304620002fe3660046200389e565b6200087e565b005b3480156200031357600080fd5b506200031e620008f4565b60405190815260200162000271565b3480156200033a57600080fd5b506200031e62000925565b3480156200035257600080fd5b506200031e620003643660046200389e565b6200093a565b3480156200037757600080fd5b506200030462000389366004620038d0565b6200095d565b3480156200039c57600080fd5b50620003b4620003ae366004620038ff565b62000985565b6040805182516001600160801b03908116825260208085015190911690820152918101519082015260600162000271565b348015620003f257600080fd5b506200030462000404366004620038d0565b62000b4e565b3480156200041757600080fd5b506200030462000b84565b3480156200042f57600080fd5b506200030462000bcc565b3480156200044757600080fd5b50620003b4620004593660046200389e565b62000bf1565b620004766200047036600462003b9e565b62000c7e565b60405162000271949392919062003c97565b3480156200049557600080fd5b50600080516020620046be8339815191525460ff1662000265565b348015620004bd57600080fd5b506200031e620004cf3660046200389e565b62000ed0565b348015620004e257600080fd5b506200031e62000ef0565b348015620004fa57600080fd5b50620005126200050c3660046200389e565b62000f07565b6040805182516001600160801b03908116825260209384015116928101929092520162000271565b3480156200054757600080fd5b506200055262000f5f565b6040516001600160a01b03909116815260200162000271565b3480156200057857600080fd5b506200030462000f7a565b3480156200059057600080fd5b506200031e62000f9f565b348015620005a857600080fd5b5062000552620005ba36600462003d1e565b62000fb4565b348015620005cd57600080fd5b5062000265620005df366004620038d0565b62000fe6565b348015620005f257600080fd5b506200031e6200101f565b3480156200060a57600080fd5b506200031e7f000000000000000000000000000000000000000000000000000000000000000081565b3480156200064057600080fd5b506200031e600081565b3480156200065757600080fd5b506200029262001034565b3480156200066f57600080fd5b506200031e620010ad565b620006916200068b36600462003d41565b620010c2565b60408051948552602085019390935291830152606082015260800162000271565b348015620006bf57600080fd5b506200055262001244565b348015620006d757600080fd5b506200031e620006e93660046200389e565b62001262565b348015620006fc57600080fd5b50620003046200070e36600462003d79565b62001292565b3480156200072157600080fd5b506200030462000733366004620038d0565b62001415565b3480156200074657600080fd5b506200031e6000805160206200467e83398151915281565b3480156200076b57600080fd5b50620003046200077d36600462003da6565b62001437565b3480156200079057600080fd5b506200031e62001444565b348015620007a857600080fd5b50620007b362001459565b6040805192835260208301919091520162000271565b60006001600160e01b03198216635a05180f60e01b1480620007f15750620007f182620014f9565b92915050565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091526200083362001530565b6040805160c0810182526007830154815260088301546020820152600983015491810191909152600a8201546060820152600b8201546080820152600c9091015460a0820152919050565b60006200088a62001530565b90508060100154431015620008bc5760405162461bcd60e51b8152600401620008b39062003dde565b60405180910390fd5b60005b828111620008ee57620008d162001554565b620008db57505050565b620008e68162003e2b565b9050620008bf565b505b5050565b6000806200090162001530565b9050620009118160010162001909565b6200091f8160010162001a52565b91505090565b60006200093162001530565b60100154905090565b60009081526000805160206200469e833981519152602052604090206001015490565b62000968826200093a565b620009738162001a8f565b6200097f838362001a9b565b50505050565b6040805160608101825260008082526020820181905291810182905290620009ac62001530565b9050620009b862000b84565b60018101546001600160801b0384161062000a225760405162461bcd60e51b8152602060048201526024808201527f5175657269656420706f736974696f6e206578636565647320757070657220626044820152631bdd5b9960e21b6064820152608401620008b3565b600e8101546000905b8181111562000b05576000600262000a44848462003e47565b62000a50919062003e73565b905083600e01818154811062000a6a5762000a6a62003e8a565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910481169484018590526001909101549183019190915290965087161062000ad35762000acb81600162003e47565b925062000afe565b84600001516001600160801b0316866001600160801b03161062000afa5750505050919050565b8091505b5062000a2b565b60405162461bcd60e51b815260206004820152601b60248201527f43616e206e6f742066696e642070726f70657220636f6e7465787400000000006044820152606401620008b3565b6001600160a01b038116331462000b785760405163334bd91960e11b815260040160405180910390fd5b620008ee828262001ae6565b600062000b9062001530565b9050806010015443101562000bb95760405162461bcd60e51b8152600401620008b39062003dde565b62000bc362001554565b62000bb9575b50565b6000805160206200467e83398151915262000be78162001a8f565b62000bc962001b28565b604080516060810182526000808252602082018190529181019190915262000c1862001530565b600e01828154811062000c2f5762000c2f62003e8a565b600091825260209182902060408051606081018252600290930290910180546001600160801b038082168552600160801b90910416938301939093526001909201549181019190915292915050565b60608060608062000c8e62001b8b565b600062000c9a62001530565b9050806010015443101562000cc35760405162461bcd60e51b8152600401620008b39062003dde565b8551806001600160401b0381111562000ce05762000ce06200392a565b60405190808252806020026020018201604052801562000d0a578160200160208202803683370190505b509550806001600160401b0381111562000d285762000d286200392a565b60405190808252806020026020018201604052801562000d52578160200160208202803683370190505b509450806001600160401b0381111562000d705762000d706200392a565b60405190808252806020026020018201604052801562000d9a578160200160208202803683370190505b509350806001600160401b0381111562000db85762000db86200392a565b60405190808252806020026020018201604052801562000de2578160200160208202803683370190505b50925060005b8181101562000ec65760008060008062000e1e8c868151811062000e105762000e1062003e8a565b6020026020010151620010c2565b9350935093509350838b868151811062000e3c5762000e3c62003e8a565b602002602001018181525050828a868151811062000e5e5762000e5e62003e8a565b6020026020010181815250508189868151811062000e805762000e8062003e8a565b6020026020010181815250508088868151811062000ea25762000ea262003e8a565b602002602001018181525050505050508062000ebe9062003e2b565b905062000de8565b5050509193509193565b600062000edc62001530565b6000928352600f0160205250604090205490565b60008062000efd62001530565b6004015492915050565b604080518082019091526000808252602082015262000f2562001530565b6000928352600d0160209081526040928390208351808501909452546001600160801b038082168552600160801b90910416908301525090565b600062000f6b62001530565b546001600160a01b0316919050565b6000805160206200467e83398151915262000f958162001a8f565b62000bc962001bc0565b600062000fab62001530565b60050154905090565b60008281526000805160206200465e83398151915260208190526040822062000fde908462001c0d565b949350505050565b60009182526000805160206200469e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b60006200102b62001530565b60060154905090565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101829052906200107062001530565b90508060100154431015620010995760405162461bcd60e51b8152600401620008b39062003dde565b620010a362000b84565b6200091f620007f7565b6000620010b962001530565b60040154905090565b600080600080620010d262001b8b565b6000620010de62001530565b90508060100154431015620011075760405162461bcd60e51b8152600401620008b39062003dde565b60006200111362001530565b9050620011208762001c1b565b620011635760405162461bcd60e51b815260206004820152601260248201527124b73b30b634b21039bab136b4b9b9b4b7b760711b6044820152606401620008b3565b6200116e8762001e8e565b92506200117a62000b84565b620011858762001ef9565b9350620011928762002064565b60048201805497509095506001906000620011ae838a62003e47565b90915550620011c290506001820162001909565b620011d08160010162001a52565b81600f016000888152602001908152602001600020819055508487602001516001600160a01b03167f167ce04d2aa1981994d3a31695da0d785373335b1078cec239a1a3a2c76755558887878c6000015160405162001233949392919062003edd565b60405180910390a350509193509193565b60006200125062001530565b601101546001600160a01b0316919050565b60008181526000805160206200465e8339815191526020819052604082206200128b9062002157565b9392505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015620012d85750825b90506000826001600160401b03166001148015620012f55750303b155b90508115801562001304575080155b15620013235760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156200134e57845460ff60401b1916600160401b1785555b620013598762002162565b620013c5866200138a7f00000000000000000000000000000000000000000000000000000000000000004362003e47565b6103e86040516200139b9062003864565b908152602001604051809103906000f080158015620013be573d6000803e3d6000fd5b5062002277565b83156200140c57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50505050505050565b62001420826200093a565b6200142b8162001a8f565b6200097f838362001ae6565b620008ee83838362002277565b60006200145062001530565b60120154905090565b60008060006200146862001530565b600101604051806060016040529081600082015481526020016001820154815260200160028201805480602002602001604051908101604052809291908181526020018280548015620014db57602002820191906000526020600020905b815481526020019060010190808311620014c6575b50505050508152505090508060000151816020015192509250509091565b60006001600160e01b03198216637965db0b60e01b1480620007f157506301ffc9a760e01b6001600160e01b0319831614620007f1565b7f2c76cc46aac583da4777117fb4419fbb43af6051f6353fccbce7a36d394f550090565b60006200156062001b8b565b60006200156c62001530565b6012810154600582015460108301549293506001010201438110620015945760009250505090565b620015a28260010162001909565b6000620015b28360010162001a52565b6011840154604051632d287e4360e01b8152600481018390529192506001600160a01b031690632d287e43906024016020604051808303816000875af115801562001601573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062001627919062003f78565b50600080436200163a85611fff62003e47565b10156200166c57507fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47090508062001834565b620016778462002353565b6001860154604080516020810184905290810186905260608101919091529091506080016040516020818303038152906040528051906020012091506000856006015490506000866001016000015490506040518060400160405280836001600160801b03168152602001826001600160801b031681525087600d01600086815260200190815260200160002060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b0316021790555090505086600e016040518060600160405280846001600160801b03168152602001836001600160801b0316815260200186815250908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a8154816001600160801b0302191690836001600160801b0316021790555060208201518160000160106101000a8154816001600160801b0302191690836001600160801b031602179055506040820151816001015550508660010160000154876006018190555050505b60018560050160008282546200184b919062003e47565b90915550506040805160c0810182526005870154808252602080830188905282840187905260018901546060808501829052608080860188905260a090950188905260078b0184905560088b018a905560098b01899055600a8b01829055600b8b01879055600c8b0188905560048b015486518a815293840152948201529283018590529133917fbc8a3fd82465d43f1709e44ed882f7e1af0147274196ef1ec009f5d52ff4e993910160405180910390a360019550505050505090565b60028101546001820154036200191c5750565b600281018054600180840154919260009290916200193a9162003f92565b815481106200194d576200194d62003e8a565b906000526020600020015490506000620019796001856001015462001973919062003f92565b62002385565b60018501549091505b8381101562001a4757604080516020808201869052818301859052825180830384018152606090920190925280519101208554620019c590600290841c62003fa8565b60000362001a0857809350620019db8262002385565b925080866002018381548110620019f657620019f662003e8a565b60009182526020909120015562001a31565b85600201828154811062001a205762001a2062003e8a565b906000526020600020015493508092505b508062001a3e8162003e2b565b91505062001982565b505050600190910155565b6002810180546000919062001a6a9060019062003f92565b8154811062001a7d5762001a7d62003e8a565b90600052602060002001549050919050565b62000bc9813362002fca565b60006000805160206200465e8339815191528162001aba858562003007565b9050801562000fde57600085815260208390526040902062001add9085620030b3565b50949350505050565b60006000805160206200465e8339815191528162001b058585620030ca565b9050801562000fde57600085815260208390526040902062001add90856200314b565b62001b3262003162565b600080516020620046be833981519152805460ff191681557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a150565b600080516020620046be8339815191525460ff161562001bbe5760405163d93c066560e01b815260040160405180910390fd5b565b62001bca62001b8b565b600080516020620046be833981519152805460ff191660011781557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2583362001b6d565b60006200128b838362003194565b60208101516000906001600160a01b031662001c3957506000919050565b815160408101515160000362001c525750600092915050565b604081015180516004919062001c6b9060019062003f92565b8151811062001c7e5762001c7e62003e8a565b602002602001015160200151826040015160008151811062001ca45762001ca462003e8a565b60200260200101516020015162001cbc919062003f92565b1062001ccb5750600092915050565b6040816040015160008151811062001ce75762001ce762003e8a565b6020026020010151602001511062001d025750600092915050565b60005b600182604001515162001d19919062003f92565b81101562001d9e578160400151818151811062001d3a5762001d3a62003e8a565b602002602001015160200151826040015182600162001d5a919062003e47565b8151811062001d6d5762001d6d62003e8a565b6020026020010151602001511062001d89575060009392505050565b8062001d958162003e2b565b91505062001d05565b50600062001dac8462001e8e565b905062001dbc6101008262003fbf565b8251111562001dcf575060009392505050565b6000601082101562001df05762001de860018362003f92565b905062001e62565b82604001515160010362001e0e5762001de8600483901c8362003f92565b6004836040015160008151811062001e2a5762001e2a62003e8a565b60200260200101516020015162001e42919062003f92565b62001e4f90600162003e47565b62001e5f906001901b8362003f92565b90505b62001e706101008262003fbf565b83511162001e8357506000949350505050565b506001949350505050565b805160009081805b82604001515181101562001ef1578260400151818151811062001ebd5762001ebd62003e8a565b6020026020010151602001516001901b8262001eda919062003e47565b91508062001ee88162003e2b565b91505062001e96565b509392505050565b60008062001f0662001530565b60018101805491925062001f1b9085620031c1565b835160005b81604001515181101562001fc45760008260400151828151811062001f495762001f4962003e8a565b602002602001015160000151905060008360400151838151811062001f725762001f7262003e8a565b6020026020010151602001519050600062001f9c8383896001016200331b9092919063ffffffff16565b90508360000362001fab578097505b505050808062001fbb9062003e2b565b91505062001f20565b50600062001fd3838662003f92565b9050600085856001016000015462001fec919062003f92565b8554604051636d3759b560e11b81526004810187905260248101839052604481018590529192506001600160a01b03169063da6eb36a90606401600060405180830381600087803b1580156200204157600080fd5b505af115801562002056573d6000803e3d6000fd5b505050505050505050919050565b80516040810151516000919082906001600160401b038111156200208c576200208c6200392a565b604051908082528060200260200182016040528015620020b6578160200160208202803683370190505b50905060005b826040015151811015620021245782604001518181518110620020e357620020e362003e8a565b60200260200101516000015182828151811062002104576200210462003e8a565b6020908102919091010152806200211b8162003e2b565b915050620020bc565b508060405160200162002138919062003fd9565b6040516020818303038152906040528051906020012092505050919050565b6000620007f1825490565b60006200216e62001530565b6001808201819055600382018054808301825560009182526020822001556002820155905080546001600160a01b0319166001600160a01b0383161781556000600582018190556040805160c081018252918252601083015460208301528101620021dc6001840162001a52565b815260016020808301919091527fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4706040808401829052606093840191909152835160078601559083015160088501558201516009840155810151600a8301556080810151600b83015560a00151600c8201556200225b60003362001a9b565b50620008ee6000805160206200467e8339815191523362001a9b565b60006200228362001530565b905080601201546000036200229a57601281018490555b8060100154600003620022af57601081018390555b60118101546001600160a01b03166200097f576001600160a01b0382166200232e576103e8604051620022e29062003864565b908152602001604051809103906000f08015801562002305573d6000803e3d6000fd5b506011820180546001600160a01b0319166001600160a01b03929092169190911790556200097f565b6011810180546001600160a01b0384166001600160a01b031990911617905550505050565b600043828103610100811180156200236d5750611fff8111155b6200237a57834062000fde565b62000fde84620034ba565b600081600003620023b757507fd397b3b043d87fcd6fad1291ff0bfd16401c274896d8c63a923727f077b8e0b5919050565b81600103620023e757507ff73e6947d7d1628b9976a6e40d7b278a8a16405e96324a68df45b12a51b7cfde919050565b816002036200241757507fa1520264ae93cac619e22e8718fc4fa7ebdd23f493cad602434d2a58ff4868fb919050565b816003036200244757507fde5747106ac1194a1fa9071dbd6cf19dc2bc7964497ef0afec7e4bdbcf08c47e919050565b816004036200247757507f09c7082879180d28c789c05fafe7030871c76cedbe82c948b165d6a1d66ac15b919050565b81600503620024a757507faa7a02bcf29fba687f84123c808b5b48834ff5395abe98e622fadc14e4180c95919050565b81600603620024d757507f7608fd46b710b589e0f2ee5a13cd9c41d432858a30d524f84c6d5db37f66273a919050565b816007036200250757507fa5d9a2f7f3573ac9a1366bc484688b4daf934b87ea9b3bf2e703da8fd9f09708919050565b816008036200253757507f6c1779477f4c3fca26b4607398859a43b90a286ce8062500744bd4949981757f919050565b816009036200256757507f45c22df3d952c33d5edce122eed85e5cda3fd61939e7ad7b3e03b6927bb598ea919050565b81600a036200259757507fe68d02859bb6211cec64f52368b77d422de3b8eac34bf615942b814b643301b5919050565b81600b03620025c757507f62d78399b954d51cb9728601738ad13ddc43b2300064660716bb661d2f4d686f919050565b81600c03620025f757507f6e250d9abdbbb3993fce08de0395cdb56f0483e67d8762a798de011f6a50866a919050565b81600d036200262757507f1d1a3a74062fd94078617e33eb901eaf16a830f67c387d8eed342db2ac5e2cc5919050565b81600e036200265757507f19b3b3886526917eae8650223d0be20a0301be960eb339696e673ad8a804440f919050565b81600f036200268757507fee9e05df53f10e62a897e5140a3f58732dd849e69cd1d62b21ed80ead711a014919050565b81601003620026b757507f2cc7aa6e611a113a34505dc1c96b220f14909b70e2c2c7b1a74655da21013c5e919050565b81601103620026e757507f949b52dfece7ca3bad3cb27f7750ecaee64cedb6243a275c35984e92956c530a919050565b816012036200271757507fb2680d060b763b932c150434c3812ba9fbc50937e0ebcf5758de884be81bab65919050565b816013036200274757507f523aebf4a085edbc9c8cdc99c83f46262e5f029b395ff7bf561a48a3f387e6b8919050565b816014036200277757507fc9ab73827ab33c0cedb7ecf0ed2e6e32583c0fe887133a7f381ea4ba84d95b76919050565b81601503620027a757507f23eb397dec7e564ebe97f160a5e1081a77d9861f316807079b6be4731beb331e919050565b81601603620027d757507fdfa44a274c60f090df034aaf75539fd40e94cfd6362dd53d26ed20c8ad529563919050565b816017036200280757507f15b13ee358e1044a53381243c094e54bf7aceb9b5325a0313d6b85fd44e8b3a5919050565b816018036200283757507f1a7a93871e2daa0f1860aa91d4ece4ccd012dac5fe581176a21b155cfeca6d40919050565b816019036200286757507fb12665fd0b884a7c7d1e0294d369170d7e672d9e125eb87784556305f98292df919050565b81601a036200289757507f2a5543b0b2f8cf550524390291774f4d6c8c0a25ff5393b09c44d75c92a5bd8e919050565b81601b03620028c757507ff9df1841a6e7164b67a1242f1c74975137085ffd9721831f6c469d3a4d5ba42e919050565b81601c03620028f757507fba24736b1b48246c1f7803be967be43ca0dddc9c2c0687a2957952249bc89371919050565b81601d036200292757507ff3f706b73790c73ca0a8f0460ac3a2a102e280415586b520e70cd5e8264388b4919050565b81601e036200295757507fc1f5a9a9f357e1c37814688cf7290c87a264ed3d6174a12b978da1c586f53825919050565b81601f036200298757507f766f7702e19ce23d426cdad03e4292a5a42c4669420101fed74400ec7cda3ac6919050565b81602003620029b757507f070fec213e105b3e4d9b0434ac2fc7ca721d35093dc741fb9419797003e2394a919050565b81602103620029e757507f9a7aade05b49e43f5fd3782571cc8c90eadacd5d660b53842b4e5b63d675ae0c919050565b8160220362002a1757507fb27b35a8236d0f9b6692820429c025ed58ed378dc98d316b762f0c865c68be6f919050565b8160230362002a4757507fdc567ad38d9b90cc9bea4e0f82ec05eca10b3aa94eddc7b63c4fd20c001bb53b919050565b8160240362002a7757507fb208dfc457c8b30661ae49544c8e57399818095aab8dd7a426fb8dd56bb8c559919050565b8160250362002aa757507fc4a72e1ff84f7a22631f3f95c61c392f98f52050360215a9d7e75d79b0bcd2ca919050565b8160260362002ad757507fbb093ec8c0d7defb1de668b5b5dd4f2619e5cd92d29cc144862364a83ab993a8919050565b8160270362002b0757507fe341796f2fe3975012c1e6badfa2e9c4523e43f911dc845082c3f4d7b4ff871d919050565b8160280362002b3757507f42d356a11a0b39243eca3c3263299cb6f8c3e9728af6d9d8b0ddb6d354f1890d919050565b8160290362002b6757507f0ce506e834e3a50a33f80074bc7fa16cf3c0712b36a41b69699177ea25de6c30919050565b81602a0362002b9757507fd8fa5bf130aeb7756b1ed09090cc80ed78dae0617978540f0fabd06dfb978938919050565b81602b0362002bc757507feed69a20fe36eb604f2153efa3b01c0e143cdf02229a1b8f741c9c2719059eb0919050565b81602c0362002bf757507f303c9c566ebf5bfe252796e5c131a99801226152a514688b5ca6883e99031d88919050565b81602d0362002c2757507fc7c3765ba96cfbccf3ae718393fa89791070cc8cd85f280b6ac46aea10d96042919050565b81602e0362002c5757507f1ca65b0a2b8034ee6bfb1fa4526832304e393af835c2c42b4dace58048746800919050565b81602f0362002c8757507f957add5e02350fd47de3a8e1da38fd774ceb31214d5897ed6315740a83cd634a919050565b8160300362002cb757507f787892cb439d5d358870774e163557cf02ec3cb87be6fde11abf1acee14eeaa4919050565b8160310362002ce757507f047c0962d4f5c8f60692c587de07739528c4d2059240d61dd34d2a547a438ee6919050565b8160320362002d1757507fc18727efc9e4df63020dcd90edc17dfd2ad14f02328c912b13898e0b53735556919050565b8160330362002d4757507fe38b9218987e451effe1648c3c9851ad03b64b052a5a3f5ca30f4d7b1ecf7120919050565b8160340362002d7757507f0e48ecb1a5418e6218289acc8cf723e67ac6eae3ecb80f644336ab4365a2f2b2919050565b8160350362002da757507fd60e66f5b8cd08d71a1a4d7798952a7afa5a6e93a886c587a46a5500ebef4a60919050565b8160360362002dd757507f5162aa9c31d9105f689cf6e71e19548bc9f0218b7d0f99ff7fa8bc2f19c68462919050565b8160370362002e0757507f6fa8519b4b0e8fb97a9b618e97627d97b9b9d29d04521fd96472e9c502700568919050565b8160380362002e3757507f41f5dcf0cdee270a2ad9a5f8130aaaab94b237463e09757c28b0321f09e24eb0919050565b8160390362002e6757507f87a119239fa90732197108adfd029938b4743874d959d3da79b3a30f4832899e919050565b81603a0362002e9757507f8e96dbaa5c72e84a5297b040ccc1a60750a3201166e3b7740d352837233608a1919050565b81603b0362002ec757507f01605058d167ce967af8c475d2f6c341c3e0b437babf899c9da73a520aa4ecb5919050565b81603c0362002ef757507f04529eb80532c5118949d700d8dfd2aa86850b1c6479b26276b9486784a145ff919050565b81603d0362002f2757507fd191814ad13f27361ae20a46cbac8f6e76c10ebe9af0806d6720492ee2f296f0919050565b81603e0362002f5757507fa28df63f78821060570da371c0be1312188346b92a7965cc4b980b26c134a4d7919050565b81603f0362002f8757507fb48a92d40b61dc995ceecee4cded6415050dcece448b1e0b5e5b6a0e6981f3ef919050565b60405162461bcd60e51b8152602060048201526012602482015271125b99195e081bdd5d081bd988189bdd5b9960721b6044820152606401620008b3565b919050565b62002fd6828262000fe6565b620008f05760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401620008b3565b60006000805160206200469e83398151915262003025848462000fe6565b620030a8576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556200305d3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050620007f1565b6000915050620007f1565b60006200128b836001600160a01b038416620034f0565b60006000805160206200469e833981519152620030e8848462000fe6565b15620030a8576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050620007f1565b60006200128b836001600160a01b03841662003542565b600080516020620046be8339815191525460ff1662001bbe57604051638dfc202b60e01b815260040160405180910390fd5b6000826000018281548110620031ae57620031ae62003e8a565b9060005260206000200154905092915050565b6000620031ce8262001e8e565b905060006200320b8460000154846000015160400151600081518110620031f957620031f962003e8a565b6020026020010151602001516200363b565b90506101006200321e6104008262003fbf565b6200322a919062003e73565b62003236908262003fa8565b15801590620032af5750610100620032516104008262003fbf565b6200325d919062003e73565b60016200326b848462003e47565b62003277919062003f92565b62003283919062003e73565b610100620032946104008262003fbf565b620032a0919062003e73565b620032ac908362003e73565b14155b156200097f57610100620032c66104008262003fbf565b620032d2919062003e73565b620032de908262003fa8565b610100620032ef6104008262003fbf565b620032fb919062003e73565b62003307908362003e47565b62003313919062003f92565b845550505050565b6000806200332e8560000154846200363b565b90506000620033416001851b8362003e47565b6002870154909150620033579060019062003f92565b6001901b811115620033b4576200336e8662001909565b620033798662003679565b60028601546200338c9060019062003f92565b6001901b811115620033a957620033a38662003679565b62003379565b600286015460018701555b6002860154620033c5878662003715565b60008087875b848110156200349a57620033e3600288831c62003fa8565b6000036200342857818b600201828154811062003404576200340462003e8a565b6000918252602090912001556200341d81600162003e47565b60018c01556200349a565b8a600201818154811062003440576200344062003e8a565b9060005260206000200154935081925083836040516020016200346d929190918252602082015260400190565b60405160208183030381529060405280519060200120915080620034918162003e2b565b915050620033cb565b50620034aa6001891b8762003e47565b9099555092979650505050505050565b600081600052602060006020600071f90827f1c53a10cb7a02335b1753200029355afa60003d11161562002fc557505060005190565b60008181526001830160205260408120546200353957508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620007f1565b506000620007f1565b60008181526001830160205260408120548015620030a85760006200356960018362003f92565b85549091506000906200357f9060019062003f92565b9050808214620035eb576000866000018281548110620035a357620035a362003e8a565b9060005260206000200154905080876000018481548110620035c957620035c962003e8a565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080620035ff57620035ff62004011565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050620007f1565b60008280820362003651576000915050620007f1565b6200365e60018262003f92565b831c90506200366f60018262003e47565b90921b9392505050565b600281018054906000906200369060018462003f92565b81548110620036a357620036a362003e8a565b60009182526020822001549150620036c16200197360018562003f92565b9050836002018282604051602001620036e4929190918252602082015260400190565b60408051601f1981840301815291905280516020918201208254600181018455600093845291909220015550505050565b808260010154111562003726575050565b60028201805460018085015491926000929091620037449162003f92565b8154811062003757576200375762003e8a565b9060005260206000200154905060006200377d6001866001015462001973919062003f92565b60018601549091505b838110156200385c57604080516020808201869052818301859052825180830384018152606090920190925280519101208654620037c990600290841c62003fa8565b6000036200381d57809350620037df8262002385565b925085821062003817578087600201838154811062003802576200380262003e8a565b60009182526020909120015550505050505050565b62003846565b86600201828154811062003835576200383562003e8a565b906000526020600020015493508092505b5080620038538162003e2b565b91505062003786565b505050505050565b610636806200402883390190565b6000602082840312156200388557600080fd5b81356001600160e01b0319811681146200128b57600080fd5b600060208284031215620038b157600080fd5b5035919050565b80356001600160a01b038116811462002fc557600080fd5b60008060408385031215620038e457600080fd5b82359150620038f660208401620038b8565b90509250929050565b6000602082840312156200391257600080fd5b81356001600160801b03811681146200128b57600080fd5b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b03811182821017156200396557620039656200392a565b60405290565b604051606081016001600160401b03811182821017156200396557620039656200392a565b604051601f8201601f191681016001600160401b0381118282101715620039bb57620039bb6200392a565b604052919050565b60006001600160401b03821115620039df57620039df6200392a565b5060051b60200190565b600082601f830112620039fb57600080fd5b8135602062003a1462003a0e83620039c3565b62003990565b82815260069290921b8401810191818101908684111562003a3457600080fd5b8286015b8481101562003a78576040818903121562003a535760008081fd5b62003a5d62003940565b81358152848201358582015283529183019160400162003a38565b509695505050505050565b60006040828403121562003a9657600080fd5b62003aa062003940565b905081356001600160401b038082111562003aba57600080fd5b908301906060828603121562003acf57600080fd5b62003ad96200396b565b823581526020808401358381111562003af157600080fd5b8401601f8101881362003b0357600080fd5b80358481111562003b185762003b186200392a565b62003b2c601f8201601f1916840162003990565b818152898483850101111562003b4157600080fd5b81848401858301376000848383010152808486015250505060408401358381111562003b6c57600080fd5b62003b7a88828701620039e9565b60408401525081855262003b90818701620038b8565b818601525050505092915050565b6000602080838503121562003bb257600080fd5b82356001600160401b038082111562003bca57600080fd5b818501915085601f83011262003bdf57600080fd5b813562003bf062003a0e82620039c3565b81815260059190911b8301840190848101908883111562003c1057600080fd5b8585015b8381101562003c4d5780358581111562003c2e5760008081fd5b62003c3e8b89838a010162003a83565b84525091860191860162003c14565b5098975050505050505050565b600081518084526020808501945080840160005b8381101562003c8c5781518752958201959082019060010162003c6e565b509495945050505050565b60808152600062003cac608083018762003c5a565b82810360208481019190915286518083528782019282019060005b8181101562003ce55784518352938301939183019160010162003cc7565b5050848103604086015262003cfb818862003c5a565b92505050828103606084015262003d13818562003c5a565b979650505050505050565b6000806040838503121562003d3257600080fd5b50508035926020909101359150565b60006020828403121562003d5457600080fd5b81356001600160401b0381111562003d6b57600080fd5b62000fde8482850162003a83565b6000806040838503121562003d8d57600080fd5b62003d9883620038b8565b946020939093013593505050565b60008060006060848603121562003dbc57600080fd5b833592506020840135915062003dd560408501620038b8565b90509250925092565b6020808252601a908201527f436f6e747261637420686173206e6f74206c61756e636865642e000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b60006001820162003e405762003e4062003e15565b5060010190565b80820180821115620007f157620007f162003e15565b634e487b7160e01b600052601260045260246000fd5b60008262003e855762003e8562003e5d565b500490565b634e487b7160e01b600052603260045260246000fd5b600081518084526020808501945080840160005b8381101562003c8c57815180518852830151838801526040909601959082019060010162003eb4565b848152600060208581840152846040840152608060608401528351608084015280840151606060a085015280518060e086015260005b8181101562003f32578281018401518682016101000152830162003f13565b5061010092506000838287010152601f19601f8201168501915050604085015160808583030160c086015262003f6b8383018262003ea0565b9998505050505050505050565b60006020828403121562003f8b57600080fd5b5051919050565b81810381811115620007f157620007f162003e15565b60008262003fba5762003fba62003e5d565b500690565b8082028115828204841417620007f157620007f162003e15565b815160009082906020808601845b83811015620040055781518552938201939082019060010162003fe7565b50929695505050505050565b634e487b7160e01b600052603160045260246000fdfe608060405234801561001057600080fd5b5060405161063638038061063683398101604081905261002f91610171565b338061005557604051631e4fbdf760e01b81526000600482015260240160405180910390fd5b61005e816100c1565b50806001600160401b038111156100775761007761018a565b6040519080825280602002602001820160405280156100a0578160200160208202803683370190505b5080516100b591600191602090910190610111565b505060006002556101a0565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b82805482825590600052602060002090810192821561014c579160200282015b8281111561014c578251825591602001919060010190610131565b5061015892915061015c565b5090565b5b80821115610158576000815560010161015d565b60006020828403121561018357600080fd5b5051919050565b634e487b7160e01b600052604160045260246000fd5b610487806101af6000396000f3fe608060405234801561001057600080fd5b506004361061007d5760003560e01c80638da5cb5b1161005b5780638da5cb5b146100d557806396e494e8146100f0578063e0886f9014610103578063f2fde38b1461011657600080fd5b80631d1a696d146100825780632d287e43146100aa578063715018a6146100cb575b600080fd5b610095610090366004610382565b610129565b60405190151581526020015b60405180910390f35b6100bd6100b8366004610382565b610194565b6040519081526020016100a1565b6100d36101f5565b005b6000546040516001600160a01b0390911681526020016100a1565b6100956100fe366004610382565b610209565b6100bd610111366004610382565b61023e565b6100d361012436600461039b565b61029e565b60008061013d6002546001805490506102dc565b905060005b8181101561018a57836001828154811061015e5761015e6103c4565b906000526020600020015403610178575060019392505050565b80610182816103f0565b915050610142565b5060009392505050565b600061019e6102f6565b6002546001546000906101b19083610409565b905083600182815481106101c7576101c76103c4565b90600052602060002001819055506001600260008282546101e8919061042b565b9091555091949350505050565b6101fd6102f6565b6102076000610323565b565b600154600254600091908310801561023757508061022960025483610373565b610233919061043e565b8310155b9392505050565b600061024982610209565b61026e5760405163b52d71f360e01b8152600481018390526024015b60405180910390fd5b6001805461027c9084610409565b8154811061028c5761028c6103c4565b90600052602060002001549050919050565b6102a66102f6565b6001600160a01b0381166102d057604051631e4fbdf760e01b815260006004820152602401610265565b6102d981610323565b50565b60008183106102eb57816102ed565b825b90505b92915050565b6000546001600160a01b031633146102075760405163118cdaa760e01b8152336004820152602401610265565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60008183116102eb57816102ed565b60006020828403121561039457600080fd5b5035919050565b6000602082840312156103ad57600080fd5b81356001600160a01b038116811461023757600080fd5b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b600060018201610402576104026103da565b5060010190565b60008261042657634e487b7160e01b600052601260045260246000fd5b500690565b808201808211156102f0576102f06103da565b818103818111156102f0576102f06103da56fea2646970667358221220635494212f9012021fb76812bcb699d1b59e0137921bc1364e1859dad84af54164736f6c63430008140033c1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e8237170593200065d7a28e3265b37a6474929f336521b332c1681b933f6cb9f3376673440d862a02dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800cd5ed15c6e187e77e9aee88184c21f4f2182ab5827cb3b7e07fbedcd63f03300a264697066735822122061c88f76e15baedcd49c7e7fcbb5bd2614f19dc80af0ff4e319914a8cabf819364736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/PoraMine.json b/storage-contracts-abis/PoraMine.json index e0fdc1d1..42b0167b 100644 --- a/storage-contracts-abis/PoraMine.json +++ b/storage-contracts-abis/PoraMine.json @@ -14,6 +14,55 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "MathOverflowedMulDiv", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -313,7 +362,7 @@ "inputs": [ { "internalType": "bytes32", - "name": "", + "name": "digest", "type": "bytes32" } ], @@ -414,6 +463,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "computeWorkerContextCaller", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "currentSubmissions", @@ -641,11 +703,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "difficulty", - "type": "uint256" - }, { "internalType": "address", "name": "flow_", @@ -655,6 +712,43 @@ "internalType": "address", "name": "reward_", "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "difficulty", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "targetMineBlocks", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "targetSubmissions", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxShards", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "nSubtasks", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "subtaskInterval", + "type": "uint256" + } + ], + "internalType": "struct PoraMine.MineInitParams", + "name": "params", + "type": "tuple" } ], "name": "initialize", @@ -664,12 +758,12 @@ }, { "inputs": [], - "name": "initialized", + "name": "lastMinedEpoch", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", @@ -677,12 +771,12 @@ }, { "inputs": [], - "name": "lastMinedEpoch", + "name": "maxShards", "outputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "", - "type": "uint256" + "type": "uint64" } ], "stateMutability": "view", @@ -690,12 +784,12 @@ }, { "inputs": [], - "name": "maxShards", + "name": "minDifficulty", "outputs": [ { - "internalType": "uint64", + "internalType": "uint256", "name": "", - "type": "uint64" + "type": "uint256" } ], "stateMutability": "view", @@ -703,7 +797,7 @@ }, { "inputs": [], - "name": "minDifficulty", + "name": "nSubtasks", "outputs": [ { "internalType": "uint256", @@ -716,7 +810,7 @@ }, { "inputs": [], - "name": "nSubtasks", + "name": "nSubtasksNextEpoch", "outputs": [ { "internalType": "uint256", @@ -855,7 +949,7 @@ }, { "internalType": "address", - "name": "account", + "name": "callerConfirmation", "type": "address" } ], @@ -978,6 +1072,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "subtaskInterval_", + "type": "uint256" + } + ], + "name": "setSubtaskInterval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1086,6 +1193,32 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "subtaskInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subtaskIntervalNextEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1163,8 +1296,8 @@ "type": "function" } ], - "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003ca238038062003ca2833981016040819052620000349162000052565b6001811615608052600281161560a052600416151560c0526200006c565b6000602082840312156200006557600080fd5b5051919050565b60805160a05160c051613bea620000b8600039600081816104c301528181611abc0152612f160152600081816104f3015261169501526000818161058001526116580152613bea6000f3fe608060405234801561001057600080fd5b50600436106102695760003560e01c80637bba7d6111610151578063ae722e82116100c3578063b776a51211610087578063b776a512146105f9578063ca15c87314610602578063d547741f14610615578063dddc61a814610628578063e282e27b14610631578063ffbc9bd01461063857600080fd5b8063ae722e82146105a2578063b0628ee0146105b5578063b15d20da146105c8578063b4988fd0146105dd578063b4a93283146105f057600080fd5b806391d148541161011557806391d148541461053b5780639dc787a21461054e578063a217fddf14610557578063a82791821461055f578063ad08fdfb14610568578063adaa7a0f1461057b57600080fd5b80637bba7d61146104be5780637eca5688146104e557806382975fe7146104ee5780638c0bca06146105155780639010d07c1461052857600080fd5b80632f2ff15d116101ea57806339cd53ee116101ae57806339cd53ee146104405780633baebb751461046957806348f614411461047c5780635bdca85514610485578063704d3c961461049857806378203ab6146104ab57600080fd5b80632f2ff15d146103f557806331223ba714610408578063331f3b9c14610411578063343aad821461041a57806336568abe1461042d57600080fd5b806316a4be6f1161023157806316a4be6f146102de578063228cb73314610309578063248a9ca314610334578063296beba7146103665780632a02573b146103e257600080fd5b806301ffc9a71461026e578063047c13f5146102965780630c655e1f146102ab578063158ef93e146102be5780631600c624146102cb575b600080fd5b61028161027c366004613340565b610640565b60405190151581526020015b60405180910390f35b6102a96102a4366004613398565b61066b565b005b6102a96102b93660046133cb565b610787565b6000546102819060ff1681565b6102a96102d93660046133cb565b6108e2565b600a546102f1906001600160401b031681565b6040516001600160401b03909116815260200161028d565b60045461031c906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b6103586103423660046133cb565b6000908152600160208190526040909120015490565b60405190815260200161028d565b6103796103743660046133cb565b610952565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b03166101008201526101200161028d565b6102a96103f03660046133e4565b610bcf565b6102a96104033660046133ff565b610cd5565b610358600b5481565b61035860065481565b60035461031c906001600160a01b031681565b6102a961043b3660046133ff565b610d00565b61031c61044e3660046133cb565b600e602052600090815260409020546001600160a01b031681565b6102a9610477366004613701565b610d7e565b610358600d5481565b6102a96104933660046133cb565b611020565b6102a96104a63660046133cb565b61104d565b6103586104b9366004613746565b6110bb565b6102817f000000000000000000000000000000000000000000000000000000000000000081565b61035860085481565b6102817f000000000000000000000000000000000000000000000000000000000000000081565b610358610523366004613771565b611208565b61031c6105363660046137b5565b611408565b6102816105493660046133ff565b611427565b61035860105481565b610358600081565b610358600c5481565b6102a96105763660046133cb565b611452565b6102817f000000000000000000000000000000000000000000000000000000000000000081565b6102a96105b03660046137d7565b61148c565b6102a96105c3366004613813565b611957565b610358600080516020613b9583398151915281565b6102a96105eb36600461383d565b611a17565b610358600f5481565b61035860075481565b6103586106103660046133cb565b611b43565b6102a96106233660046133ff565b611b5a565b61035860095481565b60016102f1565b610281611b80565b60006001600160e01b03198216635a05180f60e01b1480610665575061066582611c26565b92915050565b600061067860014361388f565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600e9093529120549091506001600160a01b03161561072d5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600e602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b600080516020613b9583398151915261079f81611c5b565b600082116107f95760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b6064820152608401610724565b600360009054906101000a90046001600160a01b03166001600160a01b031663f06820546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087091906138a2565b82106108dc5760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b6064820152608401610724565b50601055565b600080516020613b958339815191526108fa81611c5b565b61010082111561094c5760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d203235360000006044820152606401610724565b50600655565b604080516101408101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290528252602082018190529181018290526060810191909152816109e85760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610724565b6000828152600e60205260409020546001600160a01b031680610a4d5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610724565b600a546001600160401b0316606083015260035460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace91906138bb565b80835260105460a09091015160405160009291610af8918790602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610b1b919061394a565b9050600081846000015160200151610b33919061395e565b90508043111580610b4e5750600654610b4c824361388f565b115b15610b5b57505050919050565b835160a001516040805160208082019390935283408183015281518082038301815260609091018252805192019190912090850152600b548451511115610ba7578351610ba790611c68565b600754610bb5906002613971565b600c541015610bc757600d5460208501525b505050919050565b600080516020613b95833981519152610be781611c5b565b6000826001600160401b031611610c405760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f006044820152606401610724565b610c4b600183613990565b82166001600160401b0316600014610cb15760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b6064820152608401610724565b50600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008281526001602081905260409091200154610cf181611c5b565b610cfb8383611cf8565b505050565b6001600160a01b0381163314610d705760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610724565b610d7a8282611d1a565b5050565b815160a082015114610dd25760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610724565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a0015103610e455760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610724565b600754610e53906002613971565b600c5410610ea35760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610724565b6000610100610eb461040082613971565b610ebe91906139b0565b610100610ecd61040082613971565b610ed791906139b0565b8360600151610ee691906139b0565b610ef09190613971565b6060840151909150610f029082611d3c565b60035460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7591906139db565b90506000610100610f896104006004613971565b610f9391906139b0565b8560800151610fa2919061395e565b90508082600001516001600160801b0316108015610fcd57508082602001516001600160801b031610155b6110195760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610724565b5050505050565b600080516020613b9583398151915261103881611c5b565b6008829055600b54600003610d7a5750600755565b600080516020613b9583398151915261106581611c5b565b600082116110b55760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f0000006044820152606401610724565b50600955565b6000806010548460a00151846040516020016110e1929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c611104919061394a565b90506000818560200151611118919061395e565b905080431161117c5760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b6064820152608401610724565b600654611189824361388f565b11156111ce5760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b6044820152606401610724565b60a0850151604080516020810192909252824090820152606001604051602081830303815290604052805190602001209250505092915050565b604082015160009061125c5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610724565b6000604051806080016040528085604001518152602001856020015181526020018481526020016112908660600151611f80565b90529050600061129f82611fe8565b905060006112b06104006010613971565b6112be610400610100613971565b6112c891906139b0565b6112d56104006004613971565b6112e3610400610100613971565b6112ed91906139b0565b6112f791906139b0565b8660a00151611306919061394a565b90506113106132e4565b611318613303565b6113278860e001518486612060565b9250905061010061133b6104006004613971565b61134591906139b0565b8860a001516113549190613971565b611391826040516020016113689190613a35565b604051602081830303815290604052805190602001208a606001516121e090919063ffffffff16565b61139b919061395e565b8860800151146113ed5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610724565b6113fc8860a0015185846122e6565b98975050505050505050565b600082815260026020526040812061142090836124a4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613b9583398151915261146a81611c5b565b600f82905560006114796124b0565b905080600d541115610cfb57600d555050565b60408101516114d65760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610724565b6040808201516000908152600e60205220546001600160a01b03168061153e5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610724565b60035460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ad91906138bb565b90506115b881611c68565b60006115c88285604001516110bb565b90506115d48483610d7e565b600a5460608501516001600160401b03909116906115f1906124d7565b111561164e5760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b6064820152608401610724565b6116566132e4565b7f00000000000000000000000000000000000000000000000000000000000000001561168c5761168585612521565b9050611693565b5060e08401515b7f00000000000000000000000000000000000000000000000000000000000000001561171c5760006116c586836125d0565b90508360400151811461171a5760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610724565b505b6117246132e4565b905060006117328684611208565b905060006117518560600151886060015161284390919063ffffffff16565b9050604081600d5461176391906139b0565b901b8211156117b45760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610724565b60008281526005602052604090205460ff16156118135760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d6974746564000000000000006044820152606401610724565b6000828152600560205260409020805460ff191660011790556004546001600160a01b031663b7a3c04c61010061184c61040080613971565b61185890610400613971565b611863906008613971565b61186d91906139b0565b896080015161187c91906139b0565b6040808b015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b5050506040808901518751600c5460808c015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a38451600b55600c80546001919060009061194990849061395e565b909155505050505050505050565b6000818152600e60205260409020546001600160a01b031633146119bd5760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610724565b6000818152600e602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff1615611a765760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401610724565b6000805460ff19166001178155611a9390611a8e3390565b611cf8565b611aab600080516020613b9583398151915233611cf8565b611ab7836000196139b0565b600d557f000000000000000000000000000000000000000000000000000000000000000015611ae757600019600d555b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055506064600655600a600781905560088190556014600955805467ffffffffffffffff191660201790556001601055565b600081815260026020526040812061066590612983565b60008281526001602081905260409091200154611b7681611c5b565b610cfb8383611d1a565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc91906138bb565b9050600b5481600001511180611c205750600754611c1b906002613971565b600c54105b91505090565b60006001600160e01b03198216637965db0b60e01b148061066557506301ffc9a760e01b6001600160e01b0319831614610665565b611c65813361298d565b50565b600b5481511015611cc95760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610724565b600b548151118015611cdd57506000600b54115b15611c6557611cea6129e6565b6000600c5560085460075550565b611d028282612a26565b6000828152600260205260409020610cfb9082612a91565b611d248282612aa6565b6000828152600260205260409020610cfb9082612b0d565b610100611d4b61040080613971565b611d5790610400613971565b611d62906008613971565b611d6c91906139b0565b8251611d78919061394a565b15611dc55760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610724565b602082015182518291611dd79161395e565b1115611e1d5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610724565b6000611e28836124d7565b610100611e3761040080613971565b611e4390610400613971565b611e4f90610400613971565b611e5a906008613971565b611e6491906139b0565b611e6e9190613971565b90508083602001511115611ebc5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610724565b6000611ec88383612b22565b90508084602001511015611f175760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610724565b83606001518460400151166001600160401b0316600014611f7a5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610724565b50505050565b60008160000151826020015183604001518460600151604051602001611fcb949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b611ff0613303565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151604084015160608501516106659385939092909160806001612b38565b612068613303565b6120706132e4565b600061207b84612c51565b90506120a98160406120906104006004613971565b61209a91906139b0565b6120a49088613971565b612c6d565b60005b60808110156121395760408083208352822060208301528681608081106120d5576120d5613a66565b60200201518251188382608081106120ef576120ef613a66565b602002015286600182016080811061210957612109613a66565b602002015182600160200201511883826001016080811061212c5761212c613a66565b60200201526002016120ac565b506121cc81604061214d6104006004613971565b61215791906139b0565b6001886121676104006010613971565b612175610400610100613971565b61217f91906139b0565b61218c6104006004613971565b61219a610400610100613971565b6121a491906139b0565b6121ae91906139b0565b6121b8919061388f565b6121c2919061388f565b6120a49190613971565b6121d581612c51565b925050935093915050565b6000806101006121f261040082613971565b6121fc91906139b0565b846020015161220b91906139b0565b612215908461394a565b6040850151606086015160208701519293508316179061010061223a61040082613971565b61224491906139b0565b612257906001600160401b038416613971565b11156122a55760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610724565b6101006122b461040082613971565b6122be91906139b0565b6122d1906001600160401b038316613971565b85516122dd919061395e565b95945050505050565b60006122f0613303565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b6020808301919091528451908501516123569183918891906000608081612b38565b9050612360613321565b6080600060206123736104006004613971565b61237d91906139b0565b612388906020613971565b61239390608061395e565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c1016156124325760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b0361241857600182535b60408660d58a6009600019fa61242d57600198505b6123c7565b505050505050505080156124945760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b6064820152608401610724565b5050506020015195945050505050565b60006114208383612c8e565b6000600f546000036124c3575060001990565b600f546124d2906000196139b0565b905090565b606081015160009019815b6001600160401b03821615612512576124fc600183613990565b909116908061250a81613a7c565b9150506124e2565b600160ff9091161b9392505050565b6125296132e4565b60408083015160c08401516080850151925161255993906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e084018051519091188352519060009061258f6104006004613971565b61259991906139b0565b905081836020600184030281015b808210156125c6576020808420938101805190941892019182526125a7565b5050505050919050565b6000805b60206125e36104006004613971565b6125ed91906139b0565b81101561263b57610100602082028401208084836080811061261157612611613a66565b60200201818152505050602061010061262a91906139b0565b612634908261395e565b90506125d4565b50600061264b60206101006139b0565b90505b602061265d6104006004613971565b61266791906139b0565b81101561273a5760005b60206126806104006004613971565b61268a91906139b0565b8110156127315760008482608081106126a5576126a5613a66565b602002015190506000856126b9858561395e565b608081106126c9576126c9613a66565b6020020151905081816040516020016126ec929190918252602082015260400190565b6040516020818303038152906040528051906020012086846080811061271457612714613a66565b60200201525061272a9050600183901b8261395e565b9050612671565b5060011b61264e565b5081516127456132e4565b925060006101006127596104006004613971565b61276391906139b0565b856080015161277291906139b0565b905060005b856101000151518110156128395760008061279360028561394a565b6000036127c35784915087610100015183815181106127b4576127b4613a66565b602002602001015190506127e8565b87610100015183815181106127da576127da613a66565b602002602001015191508490505b604080516020810184905290810182905260600160405160208183030381529060405280519060200120945060028461282191906139b0565b93505050600181612832919061395e565b9050612777565b5090949350505050565b60008061010061285561040080613971565b61286190610400613971565b61286d90610400613971565b612878906008613971565b61288291906139b0565b831161288e57826128ca565b61010061289d61040080613971565b6128a990610400613971565b6128b590610400613971565b6128c0906008613971565b6128ca91906139b0565b905060006128d7856124d7565b6128e190856139b0565b905060006101006128f461040080613971565b61290090610400613971565b61290c90610400613971565b612917906008613971565b61292191906139b0565b821161292d5781612969565b61010061293c61040080613971565b61294890610400613971565b61295490610400613971565b61295f906008613971565b61296991906139b0565b905061297981604085901b6139b0565b9695505050505050565b6000610665825490565b6129978282611427565b610d7a576129a481612cb8565b6129af836020612cca565b6040516020016129c0929190613abf565b60408051601f198184030181529082905262461bcd60e51b825261072491600401613b34565b600c5460009015612a135760006010600d54901c9050612a0b81600654600c54612e65565b915050612a1d565b506001600160f01b035b611c6581612f14565b612a308282611427565b610d7a5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000611420836001600160a01b038416612ff9565b612ab08282611427565b15610d7a5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611420836001600160a01b038416613048565b6000818310612b315781611420565b5090919050565b612b40613303565b600c6000612b4d85613142565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa905080600003612c425760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b6064820152608401610724565b50505050979650505050505050565b612c59613303565b815181526020918201519181019190915290565b60005b81811015610cfb576040808420845283206020840152600101612c70565b6000826000018281548110612ca557612ca5613a66565b9060005260206000200154905092915050565b60606106656001600160a01b03831660145b60606000612cd9836002613971565b612ce490600261395e565b6001600160401b03811115612cfb57612cfb613422565b6040519080825280601f01601f191660200182016040528015612d25576020820181803683370190505b509050600360fc1b81600081518110612d4057612d40613a66565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612d6f57612d6f613a66565b60200101906001600160f81b031916908160001a9053506000612d93846002613971565b612d9e90600161395e565b90505b6001811115612e16576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612dd257612dd2613a66565b1a60f81b828281518110612de857612de8613a66565b60200101906001600160f81b031916908160001a90535060049490941c93612e0f81613b67565b9050612da1565b5083156114205760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610724565b6000808060001985870985870292508281108382030391505080600003612e9f57838281612e9557612e95613934565b0492505050611420565b808411612eab57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b7f000000000000000000000000000000000000000000000000000000000000000015612f3d5750565b600d5460095460109190911c9060008184612f5960018361388f565b612f639086613971565b612f6d919061395e565b612f7791906139b0565b9050612f84836002613971565b811115612f9957612f96836002613971565b90505b612fa46002846139b0565b811015612fb957612fb66002846139b0565b90505b6001600160f01b03811115612fd257506001600160f01b035b601081901b600d556000612fe46124b0565b905080600d54111561101957600d5550505050565b600081815260018301602052604081205461304057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610665565b506000610665565b6000818152600183016020526040812054801561313157600061306c60018361388f565b85549091506000906130809060019061388f565b90508181146130e55760008660000182815481106130a0576130a0613a66565b90600052602060002001549050808760000184815481106130c3576130c3613a66565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806130f6576130f6613b7e565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610665565b6000915050610665565b5092915050565b61314a613303565b6201000082101561318e57600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b6401000000008210156131ce57600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b031916613176565b680100000000000000008210156131e8576131768261327e565b600160801b821015613238576001600160401b038216604083901c61320c8261327e565b6001600160c01b03191683526132218161327e565b6001600160c01b0319166020840152506132799050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610724565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561335257600080fd5b81356001600160e01b03198116811461142057600080fd5b80356001600160a01b038116811461327957600080fd5b80356001600160401b038116811461327957600080fd5b600080604083850312156133ab57600080fd5b6133b48361336a565b91506133c260208401613381565b90509250929050565b6000602082840312156133dd57600080fd5b5035919050565b6000602082840312156133f657600080fd5b61142082613381565b6000806040838503121561341257600080fd5b823591506133c26020840161336a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561345b5761345b613422565b60405290565b60006080828403121561347357600080fd5b604051608081018181106001600160401b038211171561349557613495613422565b806040525080915082358152602083013560208201526134b760408401613381565b60408201526134c860608401613381565b60608201525092915050565b600082601f8301126134e557600080fd5b6040516110008082018281106001600160401b038211171561350957613509613422565b6040528301818582111561351c57600080fd5b845b8281101561353657803582526020918201910161351e565b509195945050505050565b600082601f83011261355257600080fd5b813560206001600160401b038083111561356e5761356e613422565b8260051b604051601f19603f8301168101818110848211171561359357613593613422565b6040529384528581018301938381019250878511156135b157600080fd5b83870191505b848210156135d0578135835291830191908301906135b7565b979650505050505050565b600061116082840312156135ee57600080fd5b6135f6613438565b905081358152602082013560208201526040820135604082015261361d8360608401613461565b606082015260e082013560808201526101008083013560a083015261012083013560c08301526136518461014085016134d4565b60e08301526111408301356001600160401b0381111561367057600080fd5b61367c85828601613541565b82840152505092915050565b600060c0828403121561369a57600080fd5b60405160c081018181106001600160401b03821117156136bc576136bc613422565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060e0838503121561371457600080fd5b82356001600160401b0381111561372a57600080fd5b613736858286016135db565b9250506133c28460208501613688565b60008060e0838503121561375957600080fd5b6137638484613688565b9460c0939093013593505050565b6000806040838503121561378457600080fd5b82356001600160401b0381111561379a57600080fd5b6137a6858286016135db565b95602094909401359450505050565b600080604083850312156137c857600080fd5b50508035926020909101359150565b6000602082840312156137e957600080fd5b81356001600160401b038111156137ff57600080fd5b61380b848285016135db565b949350505050565b6000806040838503121561382657600080fd5b61382f8361336a565b946020939093013593505050565b60008060006060848603121561385257600080fd5b833592506138626020850161336a565b91506138706040850161336a565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066557610665613879565b6000602082840312156138b457600080fd5b5051919050565b600060c082840312156138cd57600080fd5b60405160c081018181106001600160401b03821117156138ef576138ef613422565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b634e487b7160e01b600052601260045260246000fd5b60008261395957613959613934565b500690565b8082018082111561066557610665613879565b600081600019048311821515161561398b5761398b613879565b500290565b6001600160401b0382811682821603908082111561313b5761313b613879565b6000826139bf576139bf613934565b500490565b80516001600160801b038116811461327957600080fd5b6000604082840312156139ed57600080fd5b604051604081018181106001600160401b0382111715613a0f57613a0f613422565b604052613a1b836139c4565b8152613a29602084016139c4565b60208201529392505050565b60408101818360005b6002811015613a5d578151835260209283019290910190600101613a3e565b50505092915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103613a9257613a92613879565b60010192915050565b60005b83811015613ab6578181015183820152602001613a9e565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613af7816017850160208801613a9b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613b28816028840160208801613a9b565b01602801949350505050565b6020815260008251806020840152613b53816040850160208701613a9b565b601f01601f19169190910160400192915050565b600081613b7657613b76613879565b506000190190565b634e487b7160e01b600052603160045260246000fdfeb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a2646970667358221220626175fa9d9ac039060aa53d295ec36d797621c45b14b0ac421bfa1e774a56f264736f6c63430008100033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102695760003560e01c80637bba7d6111610151578063ae722e82116100c3578063b776a51211610087578063b776a512146105f9578063ca15c87314610602578063d547741f14610615578063dddc61a814610628578063e282e27b14610631578063ffbc9bd01461063857600080fd5b8063ae722e82146105a2578063b0628ee0146105b5578063b15d20da146105c8578063b4988fd0146105dd578063b4a93283146105f057600080fd5b806391d148541161011557806391d148541461053b5780639dc787a21461054e578063a217fddf14610557578063a82791821461055f578063ad08fdfb14610568578063adaa7a0f1461057b57600080fd5b80637bba7d61146104be5780637eca5688146104e557806382975fe7146104ee5780638c0bca06146105155780639010d07c1461052857600080fd5b80632f2ff15d116101ea57806339cd53ee116101ae57806339cd53ee146104405780633baebb751461046957806348f614411461047c5780635bdca85514610485578063704d3c961461049857806378203ab6146104ab57600080fd5b80632f2ff15d146103f557806331223ba714610408578063331f3b9c14610411578063343aad821461041a57806336568abe1461042d57600080fd5b806316a4be6f1161023157806316a4be6f146102de578063228cb73314610309578063248a9ca314610334578063296beba7146103665780632a02573b146103e257600080fd5b806301ffc9a71461026e578063047c13f5146102965780630c655e1f146102ab578063158ef93e146102be5780631600c624146102cb575b600080fd5b61028161027c366004613340565b610640565b60405190151581526020015b60405180910390f35b6102a96102a4366004613398565b61066b565b005b6102a96102b93660046133cb565b610787565b6000546102819060ff1681565b6102a96102d93660046133cb565b6108e2565b600a546102f1906001600160401b031681565b6040516001600160401b03909116815260200161028d565b60045461031c906001600160a01b031681565b6040516001600160a01b03909116815260200161028d565b6103586103423660046133cb565b6000908152600160208190526040909120015490565b60405190815260200161028d565b6103796103743660046133cb565b610952565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b03166101008201526101200161028d565b6102a96103f03660046133e4565b610bcf565b6102a96104033660046133ff565b610cd5565b610358600b5481565b61035860065481565b60035461031c906001600160a01b031681565b6102a961043b3660046133ff565b610d00565b61031c61044e3660046133cb565b600e602052600090815260409020546001600160a01b031681565b6102a9610477366004613701565b610d7e565b610358600d5481565b6102a96104933660046133cb565b611020565b6102a96104a63660046133cb565b61104d565b6103586104b9366004613746565b6110bb565b6102817f000000000000000000000000000000000000000000000000000000000000000081565b61035860085481565b6102817f000000000000000000000000000000000000000000000000000000000000000081565b610358610523366004613771565b611208565b61031c6105363660046137b5565b611408565b6102816105493660046133ff565b611427565b61035860105481565b610358600081565b610358600c5481565b6102a96105763660046133cb565b611452565b6102817f000000000000000000000000000000000000000000000000000000000000000081565b6102a96105b03660046137d7565b61148c565b6102a96105c3366004613813565b611957565b610358600080516020613b9583398151915281565b6102a96105eb36600461383d565b611a17565b610358600f5481565b61035860075481565b6103586106103660046133cb565b611b43565b6102a96106233660046133ff565b611b5a565b61035860095481565b60016102f1565b610281611b80565b60006001600160e01b03198216635a05180f60e01b1480610665575061066582611c26565b92915050565b600061067860014361388f565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600e9093529120549091506001600160a01b03161561072d5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600e602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b600080516020613b9583398151915261079f81611c5b565b600082116107f95760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b6064820152608401610724565b600360009054906101000a90046001600160a01b03166001600160a01b031663f06820546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561084c573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061087091906138a2565b82106108dc5760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b6064820152608401610724565b50601055565b600080516020613b958339815191526108fa81611c5b565b61010082111561094c5760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d203235360000006044820152606401610724565b50600655565b604080516101408101825260006080820181815260a0830182905260c0830182905260e08301829052610100830182905261012083018290528252602082018190529181018290526060810191909152816109e85760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610724565b6000828152600e60205260409020546001600160a01b031680610a4d5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610724565b600a546001600160401b0316606083015260035460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610aaa573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ace91906138bb565b80835260105460a09091015160405160009291610af8918790602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610b1b919061394a565b9050600081846000015160200151610b33919061395e565b90508043111580610b4e5750600654610b4c824361388f565b115b15610b5b57505050919050565b835160a001516040805160208082019390935283408183015281518082038301815260609091018252805192019190912090850152600b548451511115610ba7578351610ba790611c68565b600754610bb5906002613971565b600c541015610bc757600d5460208501525b505050919050565b600080516020613b95833981519152610be781611c5b565b6000826001600160401b031611610c405760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f006044820152606401610724565b610c4b600183613990565b82166001600160401b0316600014610cb15760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b6064820152608401610724565b50600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008281526001602081905260409091200154610cf181611c5b565b610cfb8383611cf8565b505050565b6001600160a01b0381163314610d705760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b6064820152608401610724565b610d7a8282611d1a565b5050565b815160a082015114610dd25760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610724565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a0015103610e455760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610724565b600754610e53906002613971565b600c5410610ea35760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610724565b6000610100610eb461040082613971565b610ebe91906139b0565b610100610ecd61040082613971565b610ed791906139b0565b8360600151610ee691906139b0565b610ef09190613971565b6060840151909150610f029082611d3c565b60035460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa158015610f51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f7591906139db565b90506000610100610f896104006004613971565b610f9391906139b0565b8560800151610fa2919061395e565b90508082600001516001600160801b0316108015610fcd57508082602001516001600160801b031610155b6110195760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610724565b5050505050565b600080516020613b9583398151915261103881611c5b565b6008829055600b54600003610d7a5750600755565b600080516020613b9583398151915261106581611c5b565b600082116110b55760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f0000006044820152606401610724565b50600955565b6000806010548460a00151846040516020016110e1929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c611104919061394a565b90506000818560200151611118919061395e565b905080431161117c5760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b6064820152608401610724565b600654611189824361388f565b11156111ce5760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b6044820152606401610724565b60a0850151604080516020810192909252824090820152606001604051602081830303815290604052805190602001209250505092915050565b604082015160009061125c5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610724565b6000604051806080016040528085604001518152602001856020015181526020018481526020016112908660600151611f80565b90529050600061129f82611fe8565b905060006112b06104006010613971565b6112be610400610100613971565b6112c891906139b0565b6112d56104006004613971565b6112e3610400610100613971565b6112ed91906139b0565b6112f791906139b0565b8660a00151611306919061394a565b90506113106132e4565b611318613303565b6113278860e001518486612060565b9250905061010061133b6104006004613971565b61134591906139b0565b8860a001516113549190613971565b611391826040516020016113689190613a35565b604051602081830303815290604052805190602001208a606001516121e090919063ffffffff16565b61139b919061395e565b8860800151146113ed5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610724565b6113fc8860a0015185846122e6565b98975050505050505050565b600082815260026020526040812061142090836124a4565b9392505050565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613b9583398151915261146a81611c5b565b600f82905560006114796124b0565b905080600d541115610cfb57600d555050565b60408101516114d65760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610724565b6040808201516000908152600e60205220546001600160a01b03168061153e5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610724565b60035460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611589573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115ad91906138bb565b90506115b881611c68565b60006115c88285604001516110bb565b90506115d48483610d7e565b600a5460608501516001600160401b03909116906115f1906124d7565b111561164e5760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b6064820152608401610724565b6116566132e4565b7f00000000000000000000000000000000000000000000000000000000000000001561168c5761168585612521565b9050611693565b5060e08401515b7f00000000000000000000000000000000000000000000000000000000000000001561171c5760006116c586836125d0565b90508360400151811461171a5760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610724565b505b6117246132e4565b905060006117328684611208565b905060006117518560600151886060015161284390919063ffffffff16565b9050604081600d5461176391906139b0565b901b8211156117b45760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610724565b60008281526005602052604090205460ff16156118135760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d6974746564000000000000006044820152606401610724565b6000828152600560205260409020805460ff191660011790556004546001600160a01b031663b7a3c04c61010061184c61040080613971565b61185890610400613971565b611863906008613971565b61186d91906139b0565b896080015161187c91906139b0565b6040808b015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b1580156118ce57600080fd5b505af11580156118e2573d6000803e3d6000fd5b5050506040808901518751600c5460808c015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a38451600b55600c80546001919060009061194990849061395e565b909155505050505050505050565b6000818152600e60205260409020546001600160a01b031633146119bd5760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610724565b6000818152600e602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff1615611a765760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b6064820152608401610724565b6000805460ff19166001178155611a9390611a8e3390565b611cf8565b611aab600080516020613b9583398151915233611cf8565b611ab7836000196139b0565b600d557f000000000000000000000000000000000000000000000000000000000000000015611ae757600019600d555b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055506064600655600a600781905560088190556014600955805467ffffffffffffffff191660201790556001601055565b600081815260026020526040812061066590612983565b60008281526001602081905260409091200154611b7681611c5b565b610cfb8383611d1a565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af1158015611bd8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611bfc91906138bb565b9050600b5481600001511180611c205750600754611c1b906002613971565b600c54105b91505090565b60006001600160e01b03198216637965db0b60e01b148061066557506301ffc9a760e01b6001600160e01b0319831614610665565b611c65813361298d565b50565b600b5481511015611cc95760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610724565b600b548151118015611cdd57506000600b54115b15611c6557611cea6129e6565b6000600c5560085460075550565b611d028282612a26565b6000828152600260205260409020610cfb9082612a91565b611d248282612aa6565b6000828152600260205260409020610cfb9082612b0d565b610100611d4b61040080613971565b611d5790610400613971565b611d62906008613971565b611d6c91906139b0565b8251611d78919061394a565b15611dc55760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610724565b602082015182518291611dd79161395e565b1115611e1d5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610724565b6000611e28836124d7565b610100611e3761040080613971565b611e4390610400613971565b611e4f90610400613971565b611e5a906008613971565b611e6491906139b0565b611e6e9190613971565b90508083602001511115611ebc5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610724565b6000611ec88383612b22565b90508084602001511015611f175760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610724565b83606001518460400151166001600160401b0316600014611f7a5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610724565b50505050565b60008160000151826020015183604001518460600151604051602001611fcb949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b611ff0613303565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151604084015160608501516106659385939092909160806001612b38565b612068613303565b6120706132e4565b600061207b84612c51565b90506120a98160406120906104006004613971565b61209a91906139b0565b6120a49088613971565b612c6d565b60005b60808110156121395760408083208352822060208301528681608081106120d5576120d5613a66565b60200201518251188382608081106120ef576120ef613a66565b602002015286600182016080811061210957612109613a66565b602002015182600160200201511883826001016080811061212c5761212c613a66565b60200201526002016120ac565b506121cc81604061214d6104006004613971565b61215791906139b0565b6001886121676104006010613971565b612175610400610100613971565b61217f91906139b0565b61218c6104006004613971565b61219a610400610100613971565b6121a491906139b0565b6121ae91906139b0565b6121b8919061388f565b6121c2919061388f565b6120a49190613971565b6121d581612c51565b925050935093915050565b6000806101006121f261040082613971565b6121fc91906139b0565b846020015161220b91906139b0565b612215908461394a565b6040850151606086015160208701519293508316179061010061223a61040082613971565b61224491906139b0565b612257906001600160401b038416613971565b11156122a55760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610724565b6101006122b461040082613971565b6122be91906139b0565b6122d1906001600160401b038316613971565b85516122dd919061395e565b95945050505050565b60006122f0613303565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b6020808301919091528451908501516123569183918891906000608081612b38565b9050612360613321565b6080600060206123736104006004613971565b61237d91906139b0565b612388906020613971565b61239390608061395e565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c1016156124325760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b0361241857600182535b60408660d58a6009600019fa61242d57600198505b6123c7565b505050505050505080156124945760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b6064820152608401610724565b5050506020015195945050505050565b60006114208383612c8e565b6000600f546000036124c3575060001990565b600f546124d2906000196139b0565b905090565b606081015160009019815b6001600160401b03821615612512576124fc600183613990565b909116908061250a81613a7c565b9150506124e2565b600160ff9091161b9392505050565b6125296132e4565b60408083015160c08401516080850151925161255993906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e084018051519091188352519060009061258f6104006004613971565b61259991906139b0565b905081836020600184030281015b808210156125c6576020808420938101805190941892019182526125a7565b5050505050919050565b6000805b60206125e36104006004613971565b6125ed91906139b0565b81101561263b57610100602082028401208084836080811061261157612611613a66565b60200201818152505050602061010061262a91906139b0565b612634908261395e565b90506125d4565b50600061264b60206101006139b0565b90505b602061265d6104006004613971565b61266791906139b0565b81101561273a5760005b60206126806104006004613971565b61268a91906139b0565b8110156127315760008482608081106126a5576126a5613a66565b602002015190506000856126b9858561395e565b608081106126c9576126c9613a66565b6020020151905081816040516020016126ec929190918252602082015260400190565b6040516020818303038152906040528051906020012086846080811061271457612714613a66565b60200201525061272a9050600183901b8261395e565b9050612671565b5060011b61264e565b5081516127456132e4565b925060006101006127596104006004613971565b61276391906139b0565b856080015161277291906139b0565b905060005b856101000151518110156128395760008061279360028561394a565b6000036127c35784915087610100015183815181106127b4576127b4613a66565b602002602001015190506127e8565b87610100015183815181106127da576127da613a66565b602002602001015191508490505b604080516020810184905290810182905260600160405160208183030381529060405280519060200120945060028461282191906139b0565b93505050600181612832919061395e565b9050612777565b5090949350505050565b60008061010061285561040080613971565b61286190610400613971565b61286d90610400613971565b612878906008613971565b61288291906139b0565b831161288e57826128ca565b61010061289d61040080613971565b6128a990610400613971565b6128b590610400613971565b6128c0906008613971565b6128ca91906139b0565b905060006128d7856124d7565b6128e190856139b0565b905060006101006128f461040080613971565b61290090610400613971565b61290c90610400613971565b612917906008613971565b61292191906139b0565b821161292d5781612969565b61010061293c61040080613971565b61294890610400613971565b61295490610400613971565b61295f906008613971565b61296991906139b0565b905061297981604085901b6139b0565b9695505050505050565b6000610665825490565b6129978282611427565b610d7a576129a481612cb8565b6129af836020612cca565b6040516020016129c0929190613abf565b60408051601f198184030181529082905262461bcd60e51b825261072491600401613b34565b600c5460009015612a135760006010600d54901c9050612a0b81600654600c54612e65565b915050612a1d565b506001600160f01b035b611c6581612f14565b612a308282611427565b610d7a5760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000611420836001600160a01b038416612ff9565b612ab08282611427565b15610d7a5760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611420836001600160a01b038416613048565b6000818310612b315781611420565b5090919050565b612b40613303565b600c6000612b4d85613142565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa905080600003612c425760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b6064820152608401610724565b50505050979650505050505050565b612c59613303565b815181526020918201519181019190915290565b60005b81811015610cfb576040808420845283206020840152600101612c70565b6000826000018281548110612ca557612ca5613a66565b9060005260206000200154905092915050565b60606106656001600160a01b03831660145b60606000612cd9836002613971565b612ce490600261395e565b6001600160401b03811115612cfb57612cfb613422565b6040519080825280601f01601f191660200182016040528015612d25576020820181803683370190505b509050600360fc1b81600081518110612d4057612d40613a66565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612d6f57612d6f613a66565b60200101906001600160f81b031916908160001a9053506000612d93846002613971565b612d9e90600161395e565b90505b6001811115612e16576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612dd257612dd2613a66565b1a60f81b828281518110612de857612de8613a66565b60200101906001600160f81b031916908160001a90535060049490941c93612e0f81613b67565b9050612da1565b5083156114205760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e746044820152606401610724565b6000808060001985870985870292508281108382030391505080600003612e9f57838281612e9557612e95613934565b0492505050611420565b808411612eab57600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b7f000000000000000000000000000000000000000000000000000000000000000015612f3d5750565b600d5460095460109190911c9060008184612f5960018361388f565b612f639086613971565b612f6d919061395e565b612f7791906139b0565b9050612f84836002613971565b811115612f9957612f96836002613971565b90505b612fa46002846139b0565b811015612fb957612fb66002846139b0565b90505b6001600160f01b03811115612fd257506001600160f01b035b601081901b600d556000612fe46124b0565b905080600d54111561101957600d5550505050565b600081815260018301602052604081205461304057508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610665565b506000610665565b6000818152600183016020526040812054801561313157600061306c60018361388f565b85549091506000906130809060019061388f565b90508181146130e55760008660000182815481106130a0576130a0613a66565b90600052602060002001549050808760000184815481106130c3576130c3613a66565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806130f6576130f6613b7e565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610665565b6000915050610665565b5092915050565b61314a613303565b6201000082101561318e57600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b6401000000008210156131ce57600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b031916613176565b680100000000000000008210156131e8576131768261327e565b600160801b821015613238576001600160401b038216604083901c61320c8261327e565b6001600160c01b03191683526132218161327e565b6001600160c01b0319166020840152506132799050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610724565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561335257600080fd5b81356001600160e01b03198116811461142057600080fd5b80356001600160a01b038116811461327957600080fd5b80356001600160401b038116811461327957600080fd5b600080604083850312156133ab57600080fd5b6133b48361336a565b91506133c260208401613381565b90509250929050565b6000602082840312156133dd57600080fd5b5035919050565b6000602082840312156133f657600080fd5b61142082613381565b6000806040838503121561341257600080fd5b823591506133c26020840161336a565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561345b5761345b613422565b60405290565b60006080828403121561347357600080fd5b604051608081018181106001600160401b038211171561349557613495613422565b806040525080915082358152602083013560208201526134b760408401613381565b60408201526134c860608401613381565b60608201525092915050565b600082601f8301126134e557600080fd5b6040516110008082018281106001600160401b038211171561350957613509613422565b6040528301818582111561351c57600080fd5b845b8281101561353657803582526020918201910161351e565b509195945050505050565b600082601f83011261355257600080fd5b813560206001600160401b038083111561356e5761356e613422565b8260051b604051601f19603f8301168101818110848211171561359357613593613422565b6040529384528581018301938381019250878511156135b157600080fd5b83870191505b848210156135d0578135835291830191908301906135b7565b979650505050505050565b600061116082840312156135ee57600080fd5b6135f6613438565b905081358152602082013560208201526040820135604082015261361d8360608401613461565b606082015260e082013560808201526101008083013560a083015261012083013560c08301526136518461014085016134d4565b60e08301526111408301356001600160401b0381111561367057600080fd5b61367c85828601613541565b82840152505092915050565b600060c0828403121561369a57600080fd5b60405160c081018181106001600160401b03821117156136bc576136bc613422565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060e0838503121561371457600080fd5b82356001600160401b0381111561372a57600080fd5b613736858286016135db565b9250506133c28460208501613688565b60008060e0838503121561375957600080fd5b6137638484613688565b9460c0939093013593505050565b6000806040838503121561378457600080fd5b82356001600160401b0381111561379a57600080fd5b6137a6858286016135db565b95602094909401359450505050565b600080604083850312156137c857600080fd5b50508035926020909101359150565b6000602082840312156137e957600080fd5b81356001600160401b038111156137ff57600080fd5b61380b848285016135db565b949350505050565b6000806040838503121561382657600080fd5b61382f8361336a565b946020939093013593505050565b60008060006060848603121561385257600080fd5b833592506138626020850161336a565b91506138706040850161336a565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066557610665613879565b6000602082840312156138b457600080fd5b5051919050565b600060c082840312156138cd57600080fd5b60405160c081018181106001600160401b03821117156138ef576138ef613422565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b634e487b7160e01b600052601260045260246000fd5b60008261395957613959613934565b500690565b8082018082111561066557610665613879565b600081600019048311821515161561398b5761398b613879565b500290565b6001600160401b0382811682821603908082111561313b5761313b613879565b6000826139bf576139bf613934565b500490565b80516001600160801b038116811461327957600080fd5b6000604082840312156139ed57600080fd5b604051604081018181106001600160401b0382111715613a0f57613a0f613422565b604052613a1b836139c4565b8152613a29602084016139c4565b60208201529392505050565b60408101818360005b6002811015613a5d578151835260209283019290910190600101613a3e565b50505092915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103613a9257613a92613879565b60010192915050565b60005b83811015613ab6578181015183820152602001613a9e565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613af7816017850160208801613a9b565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613b28816028840160208801613a9b565b01602801949350505050565b6020815260008251806020840152613b53816040850160208701613a9b565b601f01601f19169190910160400192915050565b600081613b7657613b76613879565b506000190190565b634e487b7160e01b600052603160045260246000fdfeb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a2646970667358221220626175fa9d9ac039060aa53d295ec36d797621c45b14b0ac421bfa1e774a56f264736f6c63430008100033", + "bytecode": "0x60e06040523480156200001157600080fd5b506040516200419b3803806200419b833981016040819052620000349162000052565b6001811615608052600281161560a052600416151560c0526200006c565b6000602082840312156200006557600080fd5b5051919050565b60805160a05160c0516140e3620000b8600039600081816104ba01528181610b3e01526134de0152600081816104e90152611d6b01526000818161058f0152611cbb01526140e36000f3fe608060405234801561001057600080fd5b50600436106102955760003560e01c80637bba7d6111610167578063adaa7a0f116100ce578063c10a729711610087578063c10a7297146105fc578063ca15c87314610603578063d547741f14610616578063dddc61a814610629578063e282e27b14610631578063ffbc9bd01461063857600080fd5b8063adaa7a0f1461058a578063ae722e82146105b1578063b0628ee0146105c4578063b15d20da146105d7578063b4a93283146105ec578063b776a512146105f457600080fd5b80639010d07c116101205780639010d07c1461053957806391d148541461054c5780639dc787a21461055f578063a217fddf14610567578063a82791821461056f578063ad08fdfb1461057757600080fd5b80637bba7d61146104b55780637eca5688146104dc57806382975fe7146104e457806384f96bb61461050b5780638c0bca061461051e5780638f375b361461053157600080fd5b80632a02573b1161020b57806339cd53ee116101c457806339cd53ee1461044e5780633baebb751461046157806348f61441146104745780635bdca8551461047c578063704d3c961461048f57806378203ab6146104a257600080fd5b80632a02573b146103fd5780632f2ff15d1461041057806331223ba714610423578063331f3b9c1461042b578063343aad821461043357806336568abe1461043b57600080fd5b80631600c6241161025d5780631600c6241461030857806316a4be6f1461031b578063228cb7331461033b578063248a9ca31461035b57806328812dbf1461036e578063296beba71461038157600080fd5b806301ffc9a71461029a5780630367e2dd146102c2578063047c13f5146102d85780630c655e1f146102ed5780630e2410ff14610300575b600080fd5b6102ad6102a83660046138b2565b610640565b60405190151581526020015b60405180910390f35b6102ca61066b565b6040519081526020016102b9565b6102eb6102e636600461390a565b61067e565b005b6102eb6102fb36600461393d565b6107ab565b6102ca610955565b6102eb61031636600461393d565b610968565b6103236109e7565b6040516001600160401b0390911681526020016102b9565b610343610a03565b6040516001600160a01b0390911681526020016102b9565b6102ca61036936600461393d565b610a1f565b6102eb61037c3660046139b7565b610a41565b61039461038f36600461393d565b610c55565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b0316610100820152610120016102b9565b6102eb61040b366004613a4b565b610f6e565b6102eb61041e366004613a66565b611081565b6102ca6110a3565b6102ca6110b6565b6103436110c9565b6102eb610449366004613a66565b6110e2565b61034361045c36600461393d565b611115565b6102eb61046f366004613d08565b61113c565b6102ca6113ef565b6102eb61048a36600461393d565b611402565b6102eb61049d36600461393d565b611444565b6102ca6104b0366004613d4d565b6114c2565b6102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6102ca611637565b6102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6102eb61051936600461393d565b61164a565b6102ca61052c366004613d78565b6117f1565b6102ca6119f1565b610343610547366004613dbc565b611a04565b6102ad61055a366004613a66565b611a33565b6102ca611a6b565b6102ca600081565b6102ca611a7e565b6102eb61058536600461393d565b611a91565b6102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6102eb6105bf366004613dde565b611adf565b6102eb6105d2366004613e12565b61203d565b6102ca60008051602061406e83398151915281565b6102ca61210f565b6102ca612122565b600a610343565b6102ca61061136600461393d565b612135565b6102eb610624366004613a66565b612162565b6102ca61217e565b6001610323565b6102ad612191565b60006001600160e01b03198216635a05180f60e01b148061066557506106658261224c565b92915050565b6000610675612281565b600c0154905090565b6000610688612281565b90506000610697600143613e52565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c085901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152601086019093529120549091506001600160a01b03161561074e5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b600081815260108301602052604080822080546001600160a01b0319166001600160a01b0388169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a350505050565b60008051602061406e8339815191526107c3816122a5565b60006107cd612281565b9050600083116108295760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b6064820152608401610745565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190613e65565b6002820154600e8301546108ab600187613e52565b6108b59190613e7e565b6108bf9190613e95565b6108ca906001613e95565b106109355760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b6064820152608401610745565b600c8101839055600781015460000361095057600b81018390555b505050565b600061095f612281565b600e0154905090565b60008051602061406e833981519152610980816122a5565b6101008211156109d25760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d203235360000006044820152606401610745565b60006109dc612281565b600201929092555050565b60006109f1612281565b600601546001600160401b0316919050565b6000610a0d612281565b600101546001600160a01b0316919050565b600090815260008051602061408e833981519152602052604090206001015490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a865750825b90506000826001600160401b03166001148015610aa25750303b155b905081158015610ab0575080155b15610ace5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610af857845460ff60401b1916600160401b1785555b6000610b02612281565b9050610b0f6000336122b2565b50610b2860008051602061406e833981519152336122b2565b508651610b3790600019613ebe565b60098201557f000000000000000000000000000000000000000000000000000000000000000015610b6b5760001960098201555b6014600582015580546001600160a01b03808b166001600160a01b0319928316178355600183018054918b16919092161790556020870151600282015560408701516003820181905560608801516006830180546001600160401b0390921667ffffffffffffffff199092169190911790556080880151600b8301819055600c830155600482015560a0870151600d8201819055600e909101558315610c4b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b604080516101408101825260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052606081019190915233600a14610d0f5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920617574686f72697a65642063616c6c65722063616e20636f6d70756044820152701d19481ddbdc9ad95c8818dbdb9d195e1d607a1b6064820152608401610745565b6000610d19612281565b905082610d615760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610745565b60008381526010820160205260409020546001600160a01b031680610dc85760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610745565b60068201546001600160401b03166060840152815460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190613ed2565b808452600b83015460a09091015160405160009291610e76918890602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610e999190613f2c565b9050600083600d015482610ead9190613e7e565b855160200151610ebd9190613e95565b90506000846002015482610ed19190613e95565b90508143111580610ee157508043115b15610ef0575050505050919050565b855160a00151604080516020808201939093528440818301528151808203830181526060909101825280519201919091209087015260078501548651511115610f3e578551610f3e906122f7565b6003850154610f4e906002613e7e565b85600801541015610f6457600985015460208701525b5050505050919050565b60008051602061406e833981519152610f86816122a5565b6000826001600160401b031611610fdf5760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f006044820152606401610745565b610fea600183613f40565b82166001600160401b03166000146110505760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b6064820152608401610745565b600061105a612281565b600601805467ffffffffffffffff19166001600160401b0394909416939093179092555050565b61108a82610a1f565b611093816122a5565b61109d83836122b2565b50505050565b60006110ad612281565b60070154905090565b60006110c0612281565b60020154905090565b60006110d3612281565b546001600160a01b0316919050565b6001600160a01b038116331461110b5760405163334bd91960e11b815260040160405180910390fd5b61095082826123b8565b600061111f612281565b60009283526010016020525060409020546001600160a01b031690565b6000611146612281565b835160a08401519192501461119d5760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610745565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708260a00151036112105760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610745565b6003810154611220906002613e7e565b8160080154106112725760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610745565b600061010061128361040082613e7e565b61128d9190613ebe565b61010061129c61040082613e7e565b6112a69190613ebe565b84606001516112b59190613ebe565b6112bf9190613e7e565b60608501519091506112d190826123f4565b815460c0850151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113439190613f77565b905060006101006113576104006004613e7e565b6113619190613ebe565b86608001516113709190613e95565b90508082600001516001600160801b031610801561139b57508082602001516001600160801b031610155b6113e75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610745565b505050505050565b60006113f9612281565b60090154905090565b60008051602061406e83398151915261141a816122a5565b6000611424612281565b600481018490556007810154909150600003610950576003019190915550565b60008051602061406e83398151915261145c816122a5565b6000611466612281565b9050600083116114b85760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f0000006044820152606401610745565b6005019190915550565b6000806114cd612281565b9050600081600b01548560a00151856040516020016114f6929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6115199190613f2c565b9050600082600d01548261152d9190613e7e565b866020015161153c9190613e95565b905060008360020154826115509190613e95565b90508143116115b45760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b6064820152608401610745565b804311156115fb5760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b6044820152606401610745565b60a08701516040805160208101929092528340908201526060016040516020818303038152906040528051906020012094505050505092915050565b6000611641612281565b60040154905090565b60008051602061406e833981519152611662816122a5565b600061166c612281565b9050600083116116be5760405162461bcd60e51b815260206004820152601f60248201527f5375627461736b20696e74657276616c2063616e6e6f74206265207a65726f006044820152606401610745565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa158015611707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172b9190613e65565b816002015484600184600c01546117429190613e52565b61174c9190613e7e565b6117569190613e95565b611761906001613e95565b106117d45760405162461bcd60e51b815260206004820152603e60248201527f4e756d626572206f66207375627461736b20696e74657276616c73206d75737460448201527f206265206c657373207468616e20626c6f636b73207065722065706f636800006064820152608401610745565b600e8101839055600781015460000361095057600d019190915550565b60408201516000906118455760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610745565b6000604051806080016040528085604001518152602001856020015181526020018481526020016118798660600151612632565b9052905060006118888261269a565b905060006118996104006010613e7e565b6118a7610400610100613e7e565b6118b19190613ebe565b6118be6104006004613e7e565b6118cc610400610100613e7e565b6118d69190613ebe565b6118e09190613ebe565b8660a001516118ef9190613f2c565b90506118f9613856565b611901613875565b6119108860e001518486612712565b925090506101006119246104006004613e7e565b61192e9190613ebe565b8860a0015161193d9190613e7e565b61197a826040516020016119519190613fd1565b604051602081830303815290604052805190602001208a6060015161289290919063ffffffff16565b6119849190613e95565b8860800151146119d65760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610745565b6119e58860a001518584612998565b98975050505050505050565b60006119fb612281565b600d0154905090565b600082815260008051602061404e833981519152602081905260408220611a2b9084612b56565b949350505050565b600091825260008051602061408e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611a75612281565b600b0154905090565b6000611a88612281565b60080154905090565b60008051602061406e833981519152611aa9816122a5565b6000611ab3612281565b600a810184905590506000611ac6612b62565b9050808260090154111561109d57600991909101555050565b6000611ae9612281565b6040830151909150611b365760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610745565b60408083015160009081526010830160205220546001600160a01b031680611ba05760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610745565b815460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0e9190613ed2565b9050611c19816122f7565b6000611c298286604001516114c2565b9050611c35858361113c565b600684015460608601516001600160401b0390911690611c5490612b9b565b1115611cb15760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b6064820152608401610745565b611cb9613856565b7f000000000000000000000000000000000000000000000000000000000000000015611d62577fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708660c0015103611d525760405162461bcd60e51b815260206004820152601b60248201527f5365616c206469676573742063616e6e6f7420626520656d70747900000000006044820152606401610745565b611d5b86612be5565b9050611d69565b5060e08501515b7f000000000000000000000000000000000000000000000000000000000000000015611df2576000611d9b8783612c8a565b905083604001518114611df05760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610745565b505b611dfa613856565b90506000611e0887846117f1565b90506000611e2785606001518960600151612efd90919063ffffffff16565b90506040818860090154611e3b9190613ebe565b901b821115611e8c5760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610745565b6000828152600f8801602052604090205460ff1615611eed5760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d6974746564000000000000006044820152606401610745565b6000828152600f880160205260409020805460ff191660019081179091558701546001600160a01b031663b7a3c04c610100611f2b61040080613e7e565b611f3790610400613e7e565b611f42906008613e7e565b611f4c9190613ebe565b8a60800151611f5b9190613ebe565b6040808c015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b158015611fad57600080fd5b505af1158015611fc1573d6000803e3d6000fd5b5050506040808a0151875160088b015460808d015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a3845160078801556008870180546001919060009061202e908490613e95565b90915550505050505050505050565b6000612047612281565b60008381526010820160205260409020549091506001600160a01b031633146120b25760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610745565b600082815260108201602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519091339185917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a4505050565b6000612119612281565b600a0154905090565b600061212c612281565b60030154905090565b600081815260008051602061404e83398151915260208190526040822061215b9061303d565b9392505050565b61216b82610a1f565b612174816122a5565b61109d83836123b8565b6000612188612281565b60050154905090565b60008061219c612281565b905060008160000160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190613ed2565b90508160070154816000015111806122455750600382015461223e906002613e7e565b8260080154105b9250505090565b60006001600160e01b03198216637965db0b60e01b148061066557506301ffc9a760e01b6001600160e01b0319831614610665565b7f11daa6f94f95391c200e8721026efe26699a21dbe0ead47ee9562dd85a6e300090565b6122af8133613047565b50565b600060008051602061404e833981519152816122ce8585613080565b90508015611a2b5760008581526020839052604090206122ee908561312c565b50949350505050565b6000612301612281565b90508060070154826000015110156123695760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610745565b60078101548251118015612381575060008160070154115b156123b45761238e613141565b6000600882015560048101546003820155600c810154600b820155600e810154600d8201555b5050565b600060008051602061404e833981519152816123d48585613196565b90508015611a2b5760008581526020839052604090206122ee9085613212565b61010061240361040080613e7e565b61240f90610400613e7e565b61241a906008613e7e565b6124249190613ebe565b82516124309190613f2c565b1561247d5760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610745565b60208201518251829161248f91613e95565b11156124d55760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610745565b60006124e083612b9b565b6101006124ef61040080613e7e565b6124fb90610400613e7e565b61250790610400613e7e565b612512906008613e7e565b61251c9190613ebe565b6125269190613e7e565b905080836020015111156125745760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610745565b60006125808383613227565b905080846020015110156125cf5760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610745565b83606001518460400151166001600160401b031660001461109d5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610745565b6000816000015182602001518360400151846060015160405160200161267d949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b6126a2613875565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b60208083019190915282519083015160408401516060850151610665938593909290916080600161323d565b61271a613875565b612722613856565b600061272d84613356565b905061275b8160406127426104006004613e7e565b61274c9190613ebe565b6127569088613e7e565b613372565b60005b60808110156127eb57604080832083528220602083015286816080811061278757612787614002565b60200201518251188382608081106127a1576127a1614002565b60200201528660018201608081106127bb576127bb614002565b60200201518260016020020151188382600101608081106127de576127de614002565b602002015260020161275e565b5061287e8160406127ff6104006004613e7e565b6128099190613ebe565b6001886128196104006010613e7e565b612827610400610100613e7e565b6128319190613ebe565b61283e6104006004613e7e565b61284c610400610100613e7e565b6128569190613ebe565b6128609190613ebe565b61286a9190613e52565b6128749190613e52565b6127569190613e7e565b61288781613356565b925050935093915050565b6000806101006128a461040082613e7e565b6128ae9190613ebe565b84602001516128bd9190613ebe565b6128c79084613f2c565b604085015160608601516020870151929350831617906101006128ec61040082613e7e565b6128f69190613ebe565b612909906001600160401b038416613e7e565b11156129575760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610745565b61010061296661040082613e7e565b6129709190613ebe565b612983906001600160401b038316613e7e565b855161298f9190613e95565b95945050505050565b60006129a2613875565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151612a08918391889190600060808161323d565b9050612a12613893565b608060006020612a256104006004613e7e565b612a2f9190613ebe565b612a3a906020613e7e565b612a45906080613e95565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c101615612ae45760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b03612aca57600182535b60408660d58a6009600019fa612adf57600198505b612a79565b50505050505050508015612b465760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b6064820152608401610745565b5050506020015195945050505050565b600061215b8383613393565b600080612b6d612281565b905080600a0154600003612b845760001991505090565b600a810154612b9590600019613ebe565b91505090565b606081015160009019815b6001600160401b03821615612bd657612bc0600183613f40565b9091169080612bce81614018565b915050612ba6565b600160ff9091161b9392505050565b612bed613856565b60408083015160c084015160808501519251612c1d93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e0840180515190911883525190600090612c536104006004613e7e565b612c5d9190613ebe565b905081836020600184030281015b80821015610f6457602080842093810180519094189201918252612c6b565b6000805b6020612c9d6104006004613e7e565b612ca79190613ebe565b811015612cf5576101006020820284012080848360808110612ccb57612ccb614002565b602002018181525050506020610100612ce49190613ebe565b612cee9082613e95565b9050612c8e565b506000612d056020610100613ebe565b90505b6020612d176104006004613e7e565b612d219190613ebe565b811015612df45760005b6020612d3a6104006004613e7e565b612d449190613ebe565b811015612deb576000848260808110612d5f57612d5f614002565b60200201519050600085612d738585613e95565b60808110612d8357612d83614002565b602002015190508181604051602001612da6929190918252602082015260400190565b60405160208183030381529060405280519060200120868460808110612dce57612dce614002565b602002015250612de49050600183901b82613e95565b9050612d2b565b5060011b612d08565b508151612dff613856565b92506000610100612e136104006004613e7e565b612e1d9190613ebe565b8560800151612e2c9190613ebe565b905060005b85610100015151811015612ef357600080612e4d600285613f2c565b600003612e7d578491508761010001518381518110612e6e57612e6e614002565b60200260200101519050612ea2565b8761010001518381518110612e9457612e94614002565b602002602001015191508490505b6040805160208101849052908101829052606001604051602081830303815290604052805190602001209450600284612edb9190613ebe565b93505050600181612eec9190613e95565b9050612e31565b5090949350505050565b600080610100612f0f61040080613e7e565b612f1b90610400613e7e565b612f2790610400613e7e565b612f32906008613e7e565b612f3c9190613ebe565b8311612f485782612f84565b610100612f5761040080613e7e565b612f6390610400613e7e565b612f6f90610400613e7e565b612f7a906008613e7e565b612f849190613ebe565b90506000612f9185612b9b565b612f9b9085613ebe565b90506000610100612fae61040080613e7e565b612fba90610400613e7e565b612fc690610400613e7e565b612fd1906008613e7e565b612fdb9190613ebe565b8211612fe75781613023565b610100612ff661040080613e7e565b61300290610400613e7e565b61300e90610400613e7e565b613019906008613e7e565b6130239190613ebe565b905061303381604085901b613ebe565b9695505050505050565b6000610665825490565b6130518282611a33565b6123b45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610745565b600060008051602061408e83398151915261309b8484611a33565b61311b576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556130d13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610665565b6000915050610665565b5092915050565b600061215b836001600160a01b0384166133bd565b600061314b612281565b90506000808260080154111561318357600060108360090154901c905061317b818460030154856008015461340c565b91505061318d565b506001600160f01b035b6123b4816134d0565b600060008051602061408e8339815191526131b18484611a33565b1561311b576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610665565b600061215b836001600160a01b0384166135d0565b6000818310613236578161215b565b5090919050565b613245613875565b600c6000613252856136b9565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa9050806000036133475760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b6064820152608401610745565b50505050979650505050505050565b61335e613875565b815181526020918201519181019190915290565b60005b81811015610950576040808420845283206020840152600101613375565b60008260000182815481106133aa576133aa614002565b9060005260206000200154905092915050565b600081815260018301602052604081205461340457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610665565b506000610665565b60008383028160001985870982811083820303915050806000036134435783828161343957613439613ea8565b049250505061215b565b8084116134635760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006134da612281565b90507f000000000000000000000000000000000000000000000000000000000000000015613506575050565b6009810154600582015460109190911c9060008185613526600183613e52565b6135309086613e7e565b61353a9190613e95565b6135449190613ebe565b9050613551836002613e7e565b81111561356657613563836002613e7e565b90505b613571600284613ebe565b81101561358657613583600284613ebe565b90505b6001600160f01b0381111561359f57506001600160f01b035b601081901b600985015560006135b3612b62565b905080856009015411156113e75760098501819055505050505050565b6000818152600183016020526040812054801561311b5760006135f4600183613e52565b855490915060009061360890600190613e52565b905080821461366d57600086600001828154811061362857613628614002565b906000526020600020015490508087600001848154811061364b5761364b614002565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061367e5761367e614037565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610665565b6136c1613875565b6201000082101561370557600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b64010000000082101561374557600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b0319166136ed565b600160401b82101561375a576136ed826137f0565b600160801b8210156137aa576001600160401b038216604083901c61377e826137f0565b6001600160c01b0319168352613793816137f0565b6001600160c01b0319166020840152506137eb9050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610745565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b6000602082840312156138c457600080fd5b81356001600160e01b03198116811461215b57600080fd5b80356001600160a01b03811681146137eb57600080fd5b80356001600160401b03811681146137eb57600080fd5b6000806040838503121561391d57600080fd5b613926836138dc565b9150613934602084016138f3565b90509250929050565b60006020828403121561394f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561398e5761398e613956565b60405290565b60405161012081016001600160401b038111828210171561398e5761398e613956565b60008060008385036101008112156139ce57600080fd5b6139d7856138dc565b93506139e5602086016138dc565b925060c0603f19820112156139f957600080fd5b50613a0261396c565b604085013581526060850135602082015260808501356040820152613a2960a086016138f3565b606082015260c0850135608082015260e09094013560a0850152509093909250565b600060208284031215613a5d57600080fd5b61215b826138f3565b60008060408385031215613a7957600080fd5b82359150613934602084016138dc565b600060808284031215613a9b57600080fd5b604051608081018181106001600160401b0382111715613abd57613abd613956565b80604052508091508235815260208301356020820152613adf604084016138f3565b6040820152613af0606084016138f3565b60608201525092915050565b600082601f830112613b0d57600080fd5b6040516110008082018281106001600160401b0382111715613b3157613b31613956565b60405283018185821115613b4457600080fd5b845b82811015613b5e578035825260209182019101613b46565b509195945050505050565b600082601f830112613b7a57600080fd5b813560206001600160401b0380831115613b9657613b96613956565b8260051b604051601f19603f83011681018181108482111715613bbb57613bbb613956565b604052938452858101830193838101925087851115613bd957600080fd5b83870191505b84821015613bf857813583529183019190830190613bdf565b979650505050505050565b60006111608284031215613c1657600080fd5b613c1e613994565b9050813581526020820135602082015260408201356040820152613c458360608401613a89565b606082015260e082013560808201526101008083013560a083015261012083013560c0830152613c79846101408501613afc565b60e08301526111408301356001600160401b03811115613c9857600080fd5b613ca485828601613b69565b82840152505092915050565b600060c08284031215613cc257600080fd5b613cca61396c565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b60008060e08385031215613d1b57600080fd5b82356001600160401b03811115613d3157600080fd5b613d3d85828601613c03565b9250506139348460208501613cb0565b60008060e08385031215613d6057600080fd5b613d6a8484613cb0565b9460c0939093013593505050565b60008060408385031215613d8b57600080fd5b82356001600160401b03811115613da157600080fd5b613dad85828601613c03565b95602094909401359450505050565b60008060408385031215613dcf57600080fd5b50508035926020909101359150565b600060208284031215613df057600080fd5b81356001600160401b03811115613e0657600080fd5b611a2b84828501613c03565b60008060408385031215613e2557600080fd5b613e2e836138dc565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066557610665613e3c565b600060208284031215613e7757600080fd5b5051919050565b808202811582820484141761066557610665613e3c565b8082018082111561066557610665613e3c565b634e487b7160e01b600052601260045260246000fd5b600082613ecd57613ecd613ea8565b500490565b600060c08284031215613ee457600080fd5b613eec61396c565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b600082613f3b57613f3b613ea8565b500690565b6001600160401b0382811682821603908082111561312557613125613e3c565b80516001600160801b03811681146137eb57600080fd5b600060408284031215613f8957600080fd5b604051604081018181106001600160401b0382111715613fab57613fab613956565b604052613fb783613f60565b8152613fc560208401613f60565b60208201529392505050565b60408101818360005b6002811015613ff9578151835260209283019290910190600101613fda565b50505092915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff810361402e5761402e613e3c565b60010192915050565b634e487b7160e01b600052603160045260246000fdfec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000b9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220ead748fdf82183aa192da3d057b20f9fe4e087eae7fb3d4ea4efd175d78b0f8264736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102955760003560e01c80637bba7d6111610167578063adaa7a0f116100ce578063c10a729711610087578063c10a7297146105fc578063ca15c87314610603578063d547741f14610616578063dddc61a814610629578063e282e27b14610631578063ffbc9bd01461063857600080fd5b8063adaa7a0f1461058a578063ae722e82146105b1578063b0628ee0146105c4578063b15d20da146105d7578063b4a93283146105ec578063b776a512146105f457600080fd5b80639010d07c116101205780639010d07c1461053957806391d148541461054c5780639dc787a21461055f578063a217fddf14610567578063a82791821461056f578063ad08fdfb1461057757600080fd5b80637bba7d61146104b55780637eca5688146104dc57806382975fe7146104e457806384f96bb61461050b5780638c0bca061461051e5780638f375b361461053157600080fd5b80632a02573b1161020b57806339cd53ee116101c457806339cd53ee1461044e5780633baebb751461046157806348f61441146104745780635bdca8551461047c578063704d3c961461048f57806378203ab6146104a257600080fd5b80632a02573b146103fd5780632f2ff15d1461041057806331223ba714610423578063331f3b9c1461042b578063343aad821461043357806336568abe1461043b57600080fd5b80631600c6241161025d5780631600c6241461030857806316a4be6f1461031b578063228cb7331461033b578063248a9ca31461035b57806328812dbf1461036e578063296beba71461038157600080fd5b806301ffc9a71461029a5780630367e2dd146102c2578063047c13f5146102d85780630c655e1f146102ed5780630e2410ff14610300575b600080fd5b6102ad6102a83660046138b2565b610640565b60405190151581526020015b60405180910390f35b6102ca61066b565b6040519081526020016102b9565b6102eb6102e636600461390a565b61067e565b005b6102eb6102fb36600461393d565b6107ab565b6102ca610955565b6102eb61031636600461393d565b610968565b6103236109e7565b6040516001600160401b0390911681526020016102b9565b610343610a03565b6040516001600160a01b0390911681526020016102b9565b6102ca61036936600461393d565b610a1f565b6102eb61037c3660046139b7565b610a41565b61039461038f36600461393d565b610c55565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b0316610100820152610120016102b9565b6102eb61040b366004613a4b565b610f6e565b6102eb61041e366004613a66565b611081565b6102ca6110a3565b6102ca6110b6565b6103436110c9565b6102eb610449366004613a66565b6110e2565b61034361045c36600461393d565b611115565b6102eb61046f366004613d08565b61113c565b6102ca6113ef565b6102eb61048a36600461393d565b611402565b6102eb61049d36600461393d565b611444565b6102ca6104b0366004613d4d565b6114c2565b6102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6102ca611637565b6102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6102eb61051936600461393d565b61164a565b6102ca61052c366004613d78565b6117f1565b6102ca6119f1565b610343610547366004613dbc565b611a04565b6102ad61055a366004613a66565b611a33565b6102ca611a6b565b6102ca600081565b6102ca611a7e565b6102eb61058536600461393d565b611a91565b6102ad7f000000000000000000000000000000000000000000000000000000000000000081565b6102eb6105bf366004613dde565b611adf565b6102eb6105d2366004613e12565b61203d565b6102ca60008051602061406e83398151915281565b6102ca61210f565b6102ca612122565b600a610343565b6102ca61061136600461393d565b612135565b6102eb610624366004613a66565b612162565b6102ca61217e565b6001610323565b6102ad612191565b60006001600160e01b03198216635a05180f60e01b148061066557506106658261224c565b92915050565b6000610675612281565b600c0154905090565b6000610688612281565b90506000610697600143613e52565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c085901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152601086019093529120549091506001600160a01b03161561074e5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b600081815260108301602052604080822080546001600160a01b0319166001600160a01b0388169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a350505050565b60008051602061406e8339815191526107c3816122a5565b60006107cd612281565b9050600083116108295760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b6064820152608401610745565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa158015610872573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108969190613e65565b6002820154600e8301546108ab600187613e52565b6108b59190613e7e565b6108bf9190613e95565b6108ca906001613e95565b106109355760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b6064820152608401610745565b600c8101839055600781015460000361095057600b81018390555b505050565b600061095f612281565b600e0154905090565b60008051602061406e833981519152610980816122a5565b6101008211156109d25760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d203235360000006044820152606401610745565b60006109dc612281565b600201929092555050565b60006109f1612281565b600601546001600160401b0316919050565b6000610a0d612281565b600101546001600160a01b0316919050565b600090815260008051602061408e833981519152602052604090206001015490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610a865750825b90506000826001600160401b03166001148015610aa25750303b155b905081158015610ab0575080155b15610ace5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610af857845460ff60401b1916600160401b1785555b6000610b02612281565b9050610b0f6000336122b2565b50610b2860008051602061406e833981519152336122b2565b508651610b3790600019613ebe565b60098201557f000000000000000000000000000000000000000000000000000000000000000015610b6b5760001960098201555b6014600582015580546001600160a01b03808b166001600160a01b0319928316178355600183018054918b16919092161790556020870151600282015560408701516003820181905560608801516006830180546001600160401b0390921667ffffffffffffffff199092169190911790556080880151600b8301819055600c830155600482015560a0870151600d8201819055600e909101558315610c4b57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b604080516101408101825260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052606081019190915233600a14610d0f5760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920617574686f72697a65642063616c6c65722063616e20636f6d70756044820152701d19481ddbdc9ad95c8818dbdb9d195e1d607a1b6064820152608401610745565b6000610d19612281565b905082610d615760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610745565b60008381526010820160205260409020546001600160a01b031680610dc85760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610745565b60068201546001600160401b03166060840152815460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610e26573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e4a9190613ed2565b808452600b83015460a09091015160405160009291610e76918890602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610e999190613f2c565b9050600083600d015482610ead9190613e7e565b855160200151610ebd9190613e95565b90506000846002015482610ed19190613e95565b90508143111580610ee157508043115b15610ef0575050505050919050565b855160a00151604080516020808201939093528440818301528151808203830181526060909101825280519201919091209087015260078501548651511115610f3e578551610f3e906122f7565b6003850154610f4e906002613e7e565b85600801541015610f6457600985015460208701525b5050505050919050565b60008051602061406e833981519152610f86816122a5565b6000826001600160401b031611610fdf5760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f006044820152606401610745565b610fea600183613f40565b82166001600160401b03166000146110505760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b6064820152608401610745565b600061105a612281565b600601805467ffffffffffffffff19166001600160401b0394909416939093179092555050565b61108a82610a1f565b611093816122a5565b61109d83836122b2565b50505050565b60006110ad612281565b60070154905090565b60006110c0612281565b60020154905090565b60006110d3612281565b546001600160a01b0316919050565b6001600160a01b038116331461110b5760405163334bd91960e11b815260040160405180910390fd5b61095082826123b8565b600061111f612281565b60009283526010016020525060409020546001600160a01b031690565b6000611146612281565b835160a08401519192501461119d5760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610745565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708260a00151036112105760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610745565b6003810154611220906002613e7e565b8160080154106112725760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610745565b600061010061128361040082613e7e565b61128d9190613ebe565b61010061129c61040082613e7e565b6112a69190613ebe565b84606001516112b59190613ebe565b6112bf9190613e7e565b60608501519091506112d190826123f4565b815460c0850151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa15801561131f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113439190613f77565b905060006101006113576104006004613e7e565b6113619190613ebe565b86608001516113709190613e95565b90508082600001516001600160801b031610801561139b57508082602001516001600160801b031610155b6113e75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610745565b505050505050565b60006113f9612281565b60090154905090565b60008051602061406e83398151915261141a816122a5565b6000611424612281565b600481018490556007810154909150600003610950576003019190915550565b60008051602061406e83398151915261145c816122a5565b6000611466612281565b9050600083116114b85760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f0000006044820152606401610745565b6005019190915550565b6000806114cd612281565b9050600081600b01548560a00151856040516020016114f6929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6115199190613f2c565b9050600082600d01548261152d9190613e7e565b866020015161153c9190613e95565b905060008360020154826115509190613e95565b90508143116115b45760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b6064820152608401610745565b804311156115fb5760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b6044820152606401610745565b60a08701516040805160208101929092528340908201526060016040516020818303038152906040528051906020012094505050505092915050565b6000611641612281565b60040154905090565b60008051602061406e833981519152611662816122a5565b600061166c612281565b9050600083116116be5760405162461bcd60e51b815260206004820152601f60248201527f5375627461736b20696e74657276616c2063616e6e6f74206265207a65726f006044820152606401610745565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa158015611707573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061172b9190613e65565b816002015484600184600c01546117429190613e52565b61174c9190613e7e565b6117569190613e95565b611761906001613e95565b106117d45760405162461bcd60e51b815260206004820152603e60248201527f4e756d626572206f66207375627461736b20696e74657276616c73206d75737460448201527f206265206c657373207468616e20626c6f636b73207065722065706f636800006064820152608401610745565b600e8101839055600781015460000361095057600d019190915550565b60408201516000906118455760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610745565b6000604051806080016040528085604001518152602001856020015181526020018481526020016118798660600151612632565b9052905060006118888261269a565b905060006118996104006010613e7e565b6118a7610400610100613e7e565b6118b19190613ebe565b6118be6104006004613e7e565b6118cc610400610100613e7e565b6118d69190613ebe565b6118e09190613ebe565b8660a001516118ef9190613f2c565b90506118f9613856565b611901613875565b6119108860e001518486612712565b925090506101006119246104006004613e7e565b61192e9190613ebe565b8860a0015161193d9190613e7e565b61197a826040516020016119519190613fd1565b604051602081830303815290604052805190602001208a6060015161289290919063ffffffff16565b6119849190613e95565b8860800151146119d65760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610745565b6119e58860a001518584612998565b98975050505050505050565b60006119fb612281565b600d0154905090565b600082815260008051602061404e833981519152602081905260408220611a2b9084612b56565b949350505050565b600091825260008051602061408e833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611a75612281565b600b0154905090565b6000611a88612281565b60080154905090565b60008051602061406e833981519152611aa9816122a5565b6000611ab3612281565b600a810184905590506000611ac6612b62565b9050808260090154111561109d57600991909101555050565b6000611ae9612281565b6040830151909150611b365760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610745565b60408083015160009081526010830160205220546001600160a01b031680611ba05760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610745565b815460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611bea573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c0e9190613ed2565b9050611c19816122f7565b6000611c298286604001516114c2565b9050611c35858361113c565b600684015460608601516001600160401b0390911690611c5490612b9b565b1115611cb15760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b6064820152608401610745565b611cb9613856565b7f000000000000000000000000000000000000000000000000000000000000000015611d62577fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708660c0015103611d525760405162461bcd60e51b815260206004820152601b60248201527f5365616c206469676573742063616e6e6f7420626520656d70747900000000006044820152606401610745565b611d5b86612be5565b9050611d69565b5060e08501515b7f000000000000000000000000000000000000000000000000000000000000000015611df2576000611d9b8783612c8a565b905083604001518114611df05760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610745565b505b611dfa613856565b90506000611e0887846117f1565b90506000611e2785606001518960600151612efd90919063ffffffff16565b90506040818860090154611e3b9190613ebe565b901b821115611e8c5760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610745565b6000828152600f8801602052604090205460ff1615611eed5760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d6974746564000000000000006044820152606401610745565b6000828152600f880160205260409020805460ff191660019081179091558701546001600160a01b031663b7a3c04c610100611f2b61040080613e7e565b611f3790610400613e7e565b611f42906008613e7e565b611f4c9190613ebe565b8a60800151611f5b9190613ebe565b6040808c015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b158015611fad57600080fd5b505af1158015611fc1573d6000803e3d6000fd5b5050506040808a0151875160088b015460808d015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a3845160078801556008870180546001919060009061202e908490613e95565b90915550505050505050505050565b6000612047612281565b60008381526010820160205260409020549091506001600160a01b031633146120b25760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610745565b600082815260108201602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519091339185917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a4505050565b6000612119612281565b600a0154905090565b600061212c612281565b60030154905090565b600081815260008051602061404e83398151915260208190526040822061215b9061303d565b9392505050565b61216b82610a1f565b612174816122a5565b61109d83836123b8565b6000612188612281565b60050154905090565b60008061219c612281565b905060008160000160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af11580156121f7573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061221b9190613ed2565b90508160070154816000015111806122455750600382015461223e906002613e7e565b8260080154105b9250505090565b60006001600160e01b03198216637965db0b60e01b148061066557506301ffc9a760e01b6001600160e01b0319831614610665565b7f11daa6f94f95391c200e8721026efe26699a21dbe0ead47ee9562dd85a6e300090565b6122af8133613047565b50565b600060008051602061404e833981519152816122ce8585613080565b90508015611a2b5760008581526020839052604090206122ee908561312c565b50949350505050565b6000612301612281565b90508060070154826000015110156123695760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610745565b60078101548251118015612381575060008160070154115b156123b45761238e613141565b6000600882015560048101546003820155600c810154600b820155600e810154600d8201555b5050565b600060008051602061404e833981519152816123d48585613196565b90508015611a2b5760008581526020839052604090206122ee9085613212565b61010061240361040080613e7e565b61240f90610400613e7e565b61241a906008613e7e565b6124249190613ebe565b82516124309190613f2c565b1561247d5760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610745565b60208201518251829161248f91613e95565b11156124d55760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610745565b60006124e083612b9b565b6101006124ef61040080613e7e565b6124fb90610400613e7e565b61250790610400613e7e565b612512906008613e7e565b61251c9190613ebe565b6125269190613e7e565b905080836020015111156125745760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610745565b60006125808383613227565b905080846020015110156125cf5760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610745565b83606001518460400151166001600160401b031660001461109d5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610745565b6000816000015182602001518360400151846060015160405160200161267d949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b6126a2613875565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b60208083019190915282519083015160408401516060850151610665938593909290916080600161323d565b61271a613875565b612722613856565b600061272d84613356565b905061275b8160406127426104006004613e7e565b61274c9190613ebe565b6127569088613e7e565b613372565b60005b60808110156127eb57604080832083528220602083015286816080811061278757612787614002565b60200201518251188382608081106127a1576127a1614002565b60200201528660018201608081106127bb576127bb614002565b60200201518260016020020151188382600101608081106127de576127de614002565b602002015260020161275e565b5061287e8160406127ff6104006004613e7e565b6128099190613ebe565b6001886128196104006010613e7e565b612827610400610100613e7e565b6128319190613ebe565b61283e6104006004613e7e565b61284c610400610100613e7e565b6128569190613ebe565b6128609190613ebe565b61286a9190613e52565b6128749190613e52565b6127569190613e7e565b61288781613356565b925050935093915050565b6000806101006128a461040082613e7e565b6128ae9190613ebe565b84602001516128bd9190613ebe565b6128c79084613f2c565b604085015160608601516020870151929350831617906101006128ec61040082613e7e565b6128f69190613ebe565b612909906001600160401b038416613e7e565b11156129575760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610745565b61010061296661040082613e7e565b6129709190613ebe565b612983906001600160401b038316613e7e565b855161298f9190613e95565b95945050505050565b60006129a2613875565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151612a08918391889190600060808161323d565b9050612a12613893565b608060006020612a256104006004613e7e565b612a2f9190613ebe565b612a3a906020613e7e565b612a45906080613e95565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c101615612ae45760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b03612aca57600182535b60408660d58a6009600019fa612adf57600198505b612a79565b50505050505050508015612b465760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b6064820152608401610745565b5050506020015195945050505050565b600061215b8383613393565b600080612b6d612281565b905080600a0154600003612b845760001991505090565b600a810154612b9590600019613ebe565b91505090565b606081015160009019815b6001600160401b03821615612bd657612bc0600183613f40565b9091169080612bce81614018565b915050612ba6565b600160ff9091161b9392505050565b612bed613856565b60408083015160c084015160808501519251612c1d93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e0840180515190911883525190600090612c536104006004613e7e565b612c5d9190613ebe565b905081836020600184030281015b80821015610f6457602080842093810180519094189201918252612c6b565b6000805b6020612c9d6104006004613e7e565b612ca79190613ebe565b811015612cf5576101006020820284012080848360808110612ccb57612ccb614002565b602002018181525050506020610100612ce49190613ebe565b612cee9082613e95565b9050612c8e565b506000612d056020610100613ebe565b90505b6020612d176104006004613e7e565b612d219190613ebe565b811015612df45760005b6020612d3a6104006004613e7e565b612d449190613ebe565b811015612deb576000848260808110612d5f57612d5f614002565b60200201519050600085612d738585613e95565b60808110612d8357612d83614002565b602002015190508181604051602001612da6929190918252602082015260400190565b60405160208183030381529060405280519060200120868460808110612dce57612dce614002565b602002015250612de49050600183901b82613e95565b9050612d2b565b5060011b612d08565b508151612dff613856565b92506000610100612e136104006004613e7e565b612e1d9190613ebe565b8560800151612e2c9190613ebe565b905060005b85610100015151811015612ef357600080612e4d600285613f2c565b600003612e7d578491508761010001518381518110612e6e57612e6e614002565b60200260200101519050612ea2565b8761010001518381518110612e9457612e94614002565b602002602001015191508490505b6040805160208101849052908101829052606001604051602081830303815290604052805190602001209450600284612edb9190613ebe565b93505050600181612eec9190613e95565b9050612e31565b5090949350505050565b600080610100612f0f61040080613e7e565b612f1b90610400613e7e565b612f2790610400613e7e565b612f32906008613e7e565b612f3c9190613ebe565b8311612f485782612f84565b610100612f5761040080613e7e565b612f6390610400613e7e565b612f6f90610400613e7e565b612f7a906008613e7e565b612f849190613ebe565b90506000612f9185612b9b565b612f9b9085613ebe565b90506000610100612fae61040080613e7e565b612fba90610400613e7e565b612fc690610400613e7e565b612fd1906008613e7e565b612fdb9190613ebe565b8211612fe75781613023565b610100612ff661040080613e7e565b61300290610400613e7e565b61300e90610400613e7e565b613019906008613e7e565b6130239190613ebe565b905061303381604085901b613ebe565b9695505050505050565b6000610665825490565b6130518282611a33565b6123b45760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610745565b600060008051602061408e83398151915261309b8484611a33565b61311b576000848152602082815260408083206001600160a01b03871684529091529020805460ff191660011790556130d13390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610665565b6000915050610665565b5092915050565b600061215b836001600160a01b0384166133bd565b600061314b612281565b90506000808260080154111561318357600060108360090154901c905061317b818460030154856008015461340c565b91505061318d565b506001600160f01b035b6123b4816134d0565b600060008051602061408e8339815191526131b18484611a33565b1561311b576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610665565b600061215b836001600160a01b0384166135d0565b6000818310613236578161215b565b5090919050565b613245613875565b600c6000613252856136b9565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa9050806000036133475760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b6064820152608401610745565b50505050979650505050505050565b61335e613875565b815181526020918201519181019190915290565b60005b81811015610950576040808420845283206020840152600101613375565b60008260000182815481106133aa576133aa614002565b9060005260206000200154905092915050565b600081815260018301602052604081205461340457508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610665565b506000610665565b60008383028160001985870982811083820303915050806000036134435783828161343957613439613ea8565b049250505061215b565b8084116134635760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006134da612281565b90507f000000000000000000000000000000000000000000000000000000000000000015613506575050565b6009810154600582015460109190911c9060008185613526600183613e52565b6135309086613e7e565b61353a9190613e95565b6135449190613ebe565b9050613551836002613e7e565b81111561356657613563836002613e7e565b90505b613571600284613ebe565b81101561358657613583600284613ebe565b90505b6001600160f01b0381111561359f57506001600160f01b035b601081901b600985015560006135b3612b62565b905080856009015411156113e75760098501819055505050505050565b6000818152600183016020526040812054801561311b5760006135f4600183613e52565b855490915060009061360890600190613e52565b905080821461366d57600086600001828154811061362857613628614002565b906000526020600020015490508087600001848154811061364b5761364b614002565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061367e5761367e614037565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610665565b6136c1613875565b6201000082101561370557600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b64010000000082101561374557600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b0319166136ed565b600160401b82101561375a576136ed826137f0565b600160801b8210156137aa576001600160401b038216604083901c61377e826137f0565b6001600160c01b0319168352613793816137f0565b6001600160c01b0319166020840152506137eb9050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610745565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b6000602082840312156138c457600080fd5b81356001600160e01b03198116811461215b57600080fd5b80356001600160a01b03811681146137eb57600080fd5b80356001600160401b03811681146137eb57600080fd5b6000806040838503121561391d57600080fd5b613926836138dc565b9150613934602084016138f3565b90509250929050565b60006020828403121561394f57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b038111828210171561398e5761398e613956565b60405290565b60405161012081016001600160401b038111828210171561398e5761398e613956565b60008060008385036101008112156139ce57600080fd5b6139d7856138dc565b93506139e5602086016138dc565b925060c0603f19820112156139f957600080fd5b50613a0261396c565b604085013581526060850135602082015260808501356040820152613a2960a086016138f3565b606082015260c0850135608082015260e09094013560a0850152509093909250565b600060208284031215613a5d57600080fd5b61215b826138f3565b60008060408385031215613a7957600080fd5b82359150613934602084016138dc565b600060808284031215613a9b57600080fd5b604051608081018181106001600160401b0382111715613abd57613abd613956565b80604052508091508235815260208301356020820152613adf604084016138f3565b6040820152613af0606084016138f3565b60608201525092915050565b600082601f830112613b0d57600080fd5b6040516110008082018281106001600160401b0382111715613b3157613b31613956565b60405283018185821115613b4457600080fd5b845b82811015613b5e578035825260209182019101613b46565b509195945050505050565b600082601f830112613b7a57600080fd5b813560206001600160401b0380831115613b9657613b96613956565b8260051b604051601f19603f83011681018181108482111715613bbb57613bbb613956565b604052938452858101830193838101925087851115613bd957600080fd5b83870191505b84821015613bf857813583529183019190830190613bdf565b979650505050505050565b60006111608284031215613c1657600080fd5b613c1e613994565b9050813581526020820135602082015260408201356040820152613c458360608401613a89565b606082015260e082013560808201526101008083013560a083015261012083013560c0830152613c79846101408501613afc565b60e08301526111408301356001600160401b03811115613c9857600080fd5b613ca485828601613b69565b82840152505092915050565b600060c08284031215613cc257600080fd5b613cca61396c565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b60008060e08385031215613d1b57600080fd5b82356001600160401b03811115613d3157600080fd5b613d3d85828601613c03565b9250506139348460208501613cb0565b60008060e08385031215613d6057600080fd5b613d6a8484613cb0565b9460c0939093013593505050565b60008060408385031215613d8b57600080fd5b82356001600160401b03811115613da157600080fd5b613dad85828601613c03565b95602094909401359450505050565b60008060408385031215613dcf57600080fd5b50508035926020909101359150565b600060208284031215613df057600080fd5b81356001600160401b03811115613e0657600080fd5b611a2b84828501613c03565b60008060408385031215613e2557600080fd5b613e2e836138dc565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561066557610665613e3c565b600060208284031215613e7757600080fd5b5051919050565b808202811582820484141761066557610665613e3c565b8082018082111561066557610665613e3c565b634e487b7160e01b600052601260045260246000fd5b600082613ecd57613ecd613ea8565b500490565b600060c08284031215613ee457600080fd5b613eec61396c565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b600082613f3b57613f3b613ea8565b500690565b6001600160401b0382811682821603908082111561312557613125613e3c565b80516001600160801b03811681146137eb57600080fd5b600060408284031215613f8957600080fd5b604051604081018181106001600160401b0382111715613fab57613fab613956565b604052613fb783613f60565b8152613fc560208401613f60565b60208201529392505050565b60408101818360005b6002811015613ff9578151835260209283019290910190600101613fda565b50505092915050565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff810361402e5761402e613e3c565b60010192915050565b634e487b7160e01b600052603160045260246000fdfec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000b9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a2646970667358221220ead748fdf82183aa192da3d057b20f9fe4e087eae7fb3d4ea4efd175d78b0f8264736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/storage-contracts-abis/PoraMineTest.json b/storage-contracts-abis/PoraMineTest.json index 2a88cd89..1cc44dbd 100644 --- a/storage-contracts-abis/PoraMineTest.json +++ b/storage-contracts-abis/PoraMineTest.json @@ -14,6 +14,55 @@ "stateMutability": "nonpayable", "type": "constructor" }, + { + "inputs": [], + "name": "AccessControlBadConfirmation", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + }, + { + "internalType": "bytes32", + "name": "neededRole", + "type": "bytes32" + } + ], + "name": "AccessControlUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidInitialization", + "type": "error" + }, + { + "inputs": [], + "name": "MathOverflowedMulDiv", + "type": "error" + }, + { + "inputs": [], + "name": "NotInitializing", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "uint64", + "name": "version", + "type": "uint64" + } + ], + "name": "Initialized", + "type": "event" + }, { "anonymous": false, "inputs": [ @@ -313,7 +362,7 @@ "inputs": [ { "internalType": "bytes32", - "name": "", + "name": "digest", "type": "bytes32" } ], @@ -414,6 +463,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "computeWorkerContextCaller", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "pure", + "type": "function" + }, { "inputs": [], "name": "currentSubmissions", @@ -641,11 +703,6 @@ }, { "inputs": [ - { - "internalType": "uint256", - "name": "difficulty", - "type": "uint256" - }, { "internalType": "address", "name": "flow_", @@ -655,6 +712,43 @@ "internalType": "address", "name": "reward_", "type": "address" + }, + { + "components": [ + { + "internalType": "uint256", + "name": "difficulty", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "targetMineBlocks", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "targetSubmissions", + "type": "uint256" + }, + { + "internalType": "uint64", + "name": "maxShards", + "type": "uint64" + }, + { + "internalType": "uint256", + "name": "nSubtasks", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "subtaskInterval", + "type": "uint256" + } + ], + "internalType": "struct PoraMine.MineInitParams", + "name": "params", + "type": "tuple" } ], "name": "initialize", @@ -664,12 +758,12 @@ }, { "inputs": [], - "name": "initialized", + "name": "lastMinedEpoch", "outputs": [ { - "internalType": "bool", + "internalType": "uint256", "name": "", - "type": "bool" + "type": "uint256" } ], "stateMutability": "view", @@ -677,12 +771,12 @@ }, { "inputs": [], - "name": "lastMinedEpoch", + "name": "maxShards", "outputs": [ { - "internalType": "uint256", + "internalType": "uint64", "name": "", - "type": "uint256" + "type": "uint64" } ], "stateMutability": "view", @@ -690,12 +784,12 @@ }, { "inputs": [], - "name": "maxShards", + "name": "minDifficulty", "outputs": [ { - "internalType": "uint64", + "internalType": "uint256", "name": "", - "type": "uint64" + "type": "uint256" } ], "stateMutability": "view", @@ -703,7 +797,7 @@ }, { "inputs": [], - "name": "minDifficulty", + "name": "nSubtasks", "outputs": [ { "internalType": "uint256", @@ -716,7 +810,7 @@ }, { "inputs": [], - "name": "nSubtasks", + "name": "nSubtasksNextEpoch", "outputs": [ { "internalType": "uint256", @@ -948,7 +1042,7 @@ }, { "internalType": "address", - "name": "account", + "name": "callerConfirmation", "type": "address" } ], @@ -1097,6 +1191,19 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { + "internalType": "uint256", + "name": "subtaskInterval_", + "type": "uint256" + } + ], + "name": "setSubtaskInterval", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, { "inputs": [ { @@ -1205,6 +1312,32 @@ "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "subtaskInterval", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "subtaskIntervalNextEpoch", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, { "inputs": [ { @@ -1457,8 +1590,8 @@ "type": "function" } ], - "bytecode": "0x60e06040523480156200001157600080fd5b5060405162003e1838038062003e18833981016040819052620000349162000052565b60016004909117818116156080526002161560a05260c0526200006c565b6000602082840312156200006557600080fd5b5051919050565b60805160a05160c051613d60620000b86000396000818161052d01528181611bc9015261301d01526000818161055d01526117700152600081816105ea01526117330152613d606000f3fe608060405234801561001057600080fd5b50600436106102a05760003560e01c80637eca568811610167578063b0628ee0116100ce578063ca15c87311610087578063ca15c873146106ad578063d547741f146106c0578063dddc61a8146106d3578063e1498cf9146106dc578063e282e27b146106ef578063ffbc9bd0146106f657600080fd5b8063b0628ee014610632578063b15d20da14610645578063b4988fd01461065a578063b4a932831461066d578063b51e039714610676578063b776a512146106a457600080fd5b8063a217fddf11610120578063a217fddf146105c1578063a8279182146105c9578063ad08fdfb146105d2578063adaa7a0f146105e5578063ae722e821461060c578063af31f9141461061f57600080fd5b80637eca56881461054f57806382975fe7146105585780638c0bca061461057f5780639010d07c1461059257806391d14854146105a55780639dc787a2146105b857600080fd5b8063331f3b9c1161020b57806359e7b5be116101c457806359e7b5be146104bc5780635bdca855146104dc5780636e9bb60b146104ef578063704d3c961461050257806378203ab6146105155780637bba7d611461052857600080fd5b8063331f3b9c14610448578063343aad821461045157806336568abe1461046457806339cd53ee146104775780633baebb75146104a057806348f61441146104b357600080fd5b8063228cb7331161025d578063228cb73314610340578063248a9ca31461036b578063296beba71461039d5780632a02573b146104195780632f2ff15d1461042c57806331223ba71461043f57600080fd5b806301ffc9a7146102a5578063047c13f5146102cd5780630c655e1f146102e2578063158ef93e146102f55780631600c6241461030257806316a4be6f14610315575b600080fd5b6102b86102b3366004613447565b6106fe565b60405190151581526020015b60405180910390f35b6102e06102db36600461349f565b610729565b005b6102e06102f03660046134d2565b610845565b6000546102b89060ff1681565b6102e06103103660046134d2565b6109a0565b600a54610328906001600160401b031681565b6040516001600160401b0390911681526020016102c4565b600454610353906001600160a01b031681565b6040516001600160a01b0390911681526020016102c4565b61038f6103793660046134d2565b6000908152600160208190526040909120015490565b6040519081526020016102c4565b6103b06103ab3660046134d2565b610a10565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b0316610100820152610120016102c4565b6102e06104273660046134eb565b610c8d565b6102e061043a366004613506565b610d93565b61038f600b5481565b61038f60065481565b600354610353906001600160a01b031681565b6102e0610472366004613506565b610dbe565b6103536104853660046134d2565b600e602052600090815260409020546001600160a01b031681565b6102e06104ae366004613808565b610e3c565b61038f600d5481565b6104cf6104ca36600461384d565b6110de565b6040516102c49190613889565b6102e06104ea3660046134d2565b6110ef565b61038f6104fd3660046138bb565b61111c565b6102e06105103660046134d2565b61112f565b61038f610523366004613901565b61119d565b6102b87f000000000000000000000000000000000000000000000000000000000000000081565b61038f60085481565b6102b87f000000000000000000000000000000000000000000000000000000000000000081565b61038f61058d36600461392c565b6112ea565b6103536105a0366004613970565b6114ea565b6102b86105b3366004613506565b611502565b61038f60105481565b61038f600081565b61038f600c5481565b6102e06105e03660046134d2565b61152d565b6102b87f000000000000000000000000000000000000000000000000000000000000000081565b6102e061061a36600461384d565b611567565b6102e061062d36600461392c565b611a32565b6102e0610640366004613992565b611a64565b61038f600080516020613d0b83398151915281565b6102e06106683660046139bc565b611b24565b61038f600f5481565b6102e06106843660046134d2565b6000908152600e6020526040902080546001600160a01b03191633179055565b61038f60075481565b61038f6106bb3660046134d2565b611c50565b6102e06106ce366004613506565b611c67565b61038f60095481565b6102e06106ea3660046134d2565b600d55565b6001610328565b6102b8611c8d565b60006001600160e01b03198216635a05180f60e01b1480610723575061072382611d33565b92915050565b6000610736600143613a0e565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600e9093529120549091506001600160a01b0316156107eb5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600e602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b600080516020613d0b83398151915261085d81611d68565b600082116108b75760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b60648201526084016107e2565b600360009054906101000a90046001600160a01b03166001600160a01b031663f06820546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092e9190613a21565b821061099a5760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b60648201526084016107e2565b50601055565b600080516020613d0b8339815191526109b881611d68565b610100821115610a0a5760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d2032353600000060448201526064016107e2565b50600655565b604080516101408101825260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052606081019190915281610aa65760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b60448201526064016107e2565b6000828152600e60205260409020546001600160a01b031680610b0b5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f742072656769737465726564000000000060448201526064016107e2565b600a546001600160401b0316606083015260035460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c9190613a3a565b80835260105460a09091015160405160009291610bb6918790602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610bd99190613ac9565b9050600081846000015160200151610bf19190613add565b90508043111580610c0c5750600654610c0a8243613a0e565b115b15610c1957505050919050565b835160a001516040805160208082019390935283408183015281518082038301815260609091018252805192019190912090850152600b548451511115610c65578351610c6590611d75565b600754610c73906002613af0565b600c541015610c8557600d5460208501525b505050919050565b600080516020613d0b833981519152610ca581611d68565b6000826001600160401b031611610cfe5760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f0060448201526064016107e2565b610d09600183613b0f565b82166001600160401b0316600014610d6f5760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b60648201526084016107e2565b50600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008281526001602081905260409091200154610daf81611d68565b610db98383611e05565b505050565b6001600160a01b0381163314610e2e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e2565b610e388282611e27565b5050565b815160a082015114610e905760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e672064696765737400000000000060448201526064016107e2565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a0015103610f035760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e650000000000000060448201526064016107e2565b600754610f11906002613af0565b600c5410610f615760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e730000000060448201526064016107e2565b6000610100610f7261040082613af0565b610f7c9190613b2f565b610100610f8b61040082613af0565b610f959190613b2f565b8360600151610fa49190613b2f565b610fae9190613af0565b6060840151909150610fc09082611e49565b60035460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa15801561100f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110339190613b5a565b905060006101006110476104006004613af0565b6110519190613b2f565b85608001516110609190613add565b90508082600001516001600160801b031610801561108b57508082602001516001600160801b031610155b6110d75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e746578742064696765737400000060448201526064016107e2565b5050505050565b6110e66133eb565b61072382612087565b600080516020613d0b83398151915261110781611d68565b6008829055600b54600003610e385750600755565b60006111288383612136565b9392505050565b600080516020613d0b83398151915261114781611d68565b600082116111975760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f00000060448201526064016107e2565b50600955565b6000806010548460a00151846040516020016111c3929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6111e69190613ac9565b905060008185602001516111fa9190613add565b905080431161125e5760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b60648201526084016107e2565b60065461126b8243613a0e565b11156112b05760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b60448201526064016107e2565b60a0850151604080516020810192909252824090820152606001604051602081830303815290604052805190602001209250505092915050565b604082015160009061133e5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d707479000000000000000060448201526064016107e2565b60006040518060800160405280856040015181526020018560200151815260200184815260200161137286606001516123a9565b90529050600061138182612411565b905060006113926104006010613af0565b6113a0610400610100613af0565b6113aa9190613b2f565b6113b76104006004613af0565b6113c5610400610100613af0565b6113cf9190613b2f565b6113d99190613b2f565b8660a001516113e89190613ac9565b90506113f26133eb565b6113fa61340a565b6114098860e001518486612489565b9250905061010061141d6104006004613af0565b6114279190613b2f565b8860a001516114369190613af0565b6114738260405160200161144a9190613bb4565b604051602081830303815290604052805190602001208a6060015161260990919063ffffffff16565b61147d9190613add565b8860800151146114cf5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e0000000000000060448201526064016107e2565b6114de8860a00151858461270f565b98975050505050505050565b600082815260026020526040812061112890836128cd565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613d0b83398151915261154581611d68565b600f82905560006115546128d9565b905080600d541115610db957600d555050565b60408101516115b15760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b60448201526064016107e2565b6040808201516000908152600e60205220546001600160a01b0316806116195760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f742072656769737465726564000000000060448201526064016107e2565b60035460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116889190613a3a565b905061169381611d75565b60006116a382856040015161119d565b90506116af8483610e3c565b600a5460608501516001600160401b03909116906116cc90612900565b11156117295760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b60648201526084016107e2565b6117316133eb565b7f0000000000000000000000000000000000000000000000000000000000000000156117675761176085612087565b905061176e565b5060e08401515b7f0000000000000000000000000000000000000000000000000000000000000000156117f75760006117a08683612136565b9050836040015181146117f55760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f74000000000000000060448201526064016107e2565b505b6117ff6133eb565b9050600061180d86846112ea565b9050600061182c8560600151886060015161294a90919063ffffffff16565b9050604081600d5461183e9190613b2f565b901b82111561188f5760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c697479000000000060448201526064016107e2565b60008281526005602052604090205460ff16156118ee5760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d69747465640000000000000060448201526064016107e2565b6000828152600560205260409020805460ff191660011790556004546001600160a01b031663b7a3c04c61010061192761040080613af0565b61193390610400613af0565b61193e906008613af0565b6119489190613b2f565b89608001516119579190613b2f565b6040808b015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b1580156119a957600080fd5b505af11580156119bd573d6000803e3d6000fd5b5050506040808901518751600c5460808c015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a38451600b55600c805460019190600090611a24908490613add565b909155505050505050505050565b6000611a3d83612087565b9050611a498382612136565b50611a526133eb565b9050611a5e83836112ea565b50505050565b6000818152600e60205260409020546001600160a01b03163314611aca5760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e65724964000000000060448201526064016107e2565b6000818152600e602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff1615611b835760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b60648201526084016107e2565b6000805460ff19166001178155611ba090611b9b3390565b611e05565b611bb8600080516020613d0b83398151915233611e05565b611bc483600019613b2f565b600d557f000000000000000000000000000000000000000000000000000000000000000015611bf457600019600d555b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055506064600655600a600781905560088190556014600955805467ffffffffffffffff191660201790556001601055565b600081815260026020526040812061072390612a8a565b60008281526001602081905260409091200154611c8381611d68565b610db98383611e27565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af1158015611ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d099190613a3a565b9050600b5481600001511180611d2d5750600754611d28906002613af0565b600c54105b91505090565b60006001600160e01b03198216637965db0b60e01b148061072357506301ffc9a760e01b6001600160e01b0319831614610723565b611d728133612a94565b50565b600b5481511015611dd65760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b60648201526084016107e2565b600b548151118015611dea57506000600b54115b15611d7257611df7612aed565b6000600c5560085460075550565b611e0f8282612b2d565b6000828152600260205260409020610db99082612b98565b611e318282612bad565b6000828152600260205260409020610db99082612c14565b610100611e5861040080613af0565b611e6490610400613af0565b611e6f906008613af0565b611e799190613b2f565b8251611e859190613ac9565b15611ed25760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e656400000060448201526064016107e2565b602082015182518291611ee491613add565b1115611f2a5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b60448201526064016107e2565b6000611f3583612900565b610100611f4461040080613af0565b611f5090610400613af0565b611f5c90610400613af0565b611f67906008613af0565b611f719190613b2f565b611f7b9190613af0565b90508083602001511115611fc95760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b60448201526064016107e2565b6000611fd58383612c29565b905080846020015110156120245760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b60448201526064016107e2565b83606001518460400151166001600160401b0316600014611a5e5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f00000000000060448201526064016107e2565b61208f6133eb565b60408083015160c0840151608085015192516120bf93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e08401805151909118835251906000906120f56104006004613af0565b6120ff9190613b2f565b905081836020600184030281015b8082101561212c5760208084209381018051909418920191825261210d565b5050505050919050565b6000805b60206121496104006004613af0565b6121539190613b2f565b8110156121a157610100602082028401208084836080811061217757612177613bdc565b6020020181815250505060206101006121909190613b2f565b61219a9082613add565b905061213a565b5060006121b16020610100613b2f565b90505b60206121c36104006004613af0565b6121cd9190613b2f565b8110156122a05760005b60206121e66104006004613af0565b6121f09190613b2f565b81101561229757600084826080811061220b5761220b613bdc565b6020020151905060008561221f8585613add565b6080811061222f5761222f613bdc565b602002015190508181604051602001612252929190918252602082015260400190565b6040516020818303038152906040528051906020012086846080811061227a5761227a613bdc565b6020020152506122909050600183901b82613add565b90506121d7565b5060011b6121b4565b5081516122ab6133eb565b925060006101006122bf6104006004613af0565b6122c99190613b2f565b85608001516122d89190613b2f565b905060005b8561010001515181101561239f576000806122f9600285613ac9565b60000361232957849150876101000151838151811061231a5761231a613bdc565b6020026020010151905061234e565b876101000151838151811061234057612340613bdc565b602002602001015191508490505b60408051602081018490529081018290526060016040516020818303038152906040528051906020012094506002846123879190613b2f565b935050506001816123989190613add565b90506122dd565b5090949350505050565b600081600001518260200151836040015184606001516040516020016123f4949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b61241961340a565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151604084015160608501516107239385939092909160806001612c3f565b61249161340a565b6124996133eb565b60006124a484612d58565b90506124d28160406124b96104006004613af0565b6124c39190613b2f565b6124cd9088613af0565b612d74565b60005b60808110156125625760408083208352822060208301528681608081106124fe576124fe613bdc565b602002015182511883826080811061251857612518613bdc565b602002015286600182016080811061253257612532613bdc565b602002015182600160200201511883826001016080811061255557612555613bdc565b60200201526002016124d5565b506125f58160406125766104006004613af0565b6125809190613b2f565b6001886125906104006010613af0565b61259e610400610100613af0565b6125a89190613b2f565b6125b56104006004613af0565b6125c3610400610100613af0565b6125cd9190613b2f565b6125d79190613b2f565b6125e19190613a0e565b6125eb9190613a0e565b6124cd9190613af0565b6125fe81612d58565b925050935093915050565b60008061010061261b61040082613af0565b6126259190613b2f565b84602001516126349190613b2f565b61263e9084613ac9565b6040850151606086015160208701519293508316179061010061266361040082613af0565b61266d9190613b2f565b612680906001600160401b038416613af0565b11156126ce5760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e640000000060448201526064016107e2565b6101006126dd61040082613af0565b6126e79190613b2f565b6126fa906001600160401b038316613af0565b85516127069190613add565b95945050505050565b600061271961340a565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b60208083019190915284519085015161277f9183918891906000608081612c3f565b9050612789613428565b60806000602061279c6104006004613af0565b6127a69190613b2f565b6127b1906020613af0565b6127bc906080613add565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c10161561285b5760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b0361284157600182535b60408660d58a6009600019fa61285657600198505b6127f0565b505050505050505080156128bd5760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b60648201526084016107e2565b5050506020015195945050505050565b60006111288383612d95565b6000600f546000036128ec575060001990565b600f546128fb90600019613b2f565b905090565b606081015160009019815b6001600160401b0382161561293b57612925600183613b0f565b909116908061293381613bf2565b91505061290b565b600160ff9091161b9392505050565b60008061010061295c61040080613af0565b61296890610400613af0565b61297490610400613af0565b61297f906008613af0565b6129899190613b2f565b831161299557826129d1565b6101006129a461040080613af0565b6129b090610400613af0565b6129bc90610400613af0565b6129c7906008613af0565b6129d19190613b2f565b905060006129de85612900565b6129e89085613b2f565b905060006101006129fb61040080613af0565b612a0790610400613af0565b612a1390610400613af0565b612a1e906008613af0565b612a289190613b2f565b8211612a345781612a70565b610100612a4361040080613af0565b612a4f90610400613af0565b612a5b90610400613af0565b612a66906008613af0565b612a709190613b2f565b9050612a8081604085901b613b2f565b9695505050505050565b6000610723825490565b612a9e8282611502565b610e3857612aab81612dbf565b612ab6836020612dd1565b604051602001612ac7929190613c35565b60408051601f198184030181529082905262461bcd60e51b82526107e291600401613caa565b600c5460009015612b1a5760006010600d54901c9050612b1281600654600c54612f6c565b915050612b24565b506001600160f01b035b611d728161301b565b612b378282611502565b610e385760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000611128836001600160a01b038416613100565b612bb78282611502565b15610e385760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611128836001600160a01b03841661314f565b6000818310612c385781611128565b5090919050565b612c4761340a565b600c6000612c5485613249565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa905080600003612d495760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b60648201526084016107e2565b50505050979650505050505050565b612d6061340a565b815181526020918201519181019190915290565b60005b81811015610db9576040808420845283206020840152600101612d77565b6000826000018281548110612dac57612dac613bdc565b9060005260206000200154905092915050565b60606107236001600160a01b03831660145b60606000612de0836002613af0565b612deb906002613add565b6001600160401b03811115612e0257612e02613529565b6040519080825280601f01601f191660200182016040528015612e2c576020820181803683370190505b509050600360fc1b81600081518110612e4757612e47613bdc565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e7657612e76613bdc565b60200101906001600160f81b031916908160001a9053506000612e9a846002613af0565b612ea5906001613add565b90505b6001811115612f1d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612ed957612ed9613bdc565b1a60f81b828281518110612eef57612eef613bdc565b60200101906001600160f81b031916908160001a90535060049490941c93612f1681613cdd565b9050612ea8565b5083156111285760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e2565b6000808060001985870985870292508281108382030391505080600003612fa657838281612f9c57612f9c613ab3565b0492505050611128565b808411612fb257600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b7f0000000000000000000000000000000000000000000000000000000000000000156130445750565b600d5460095460109190911c9060008184613060600183613a0e565b61306a9086613af0565b6130749190613add565b61307e9190613b2f565b905061308b836002613af0565b8111156130a05761309d836002613af0565b90505b6130ab600284613b2f565b8110156130c0576130bd600284613b2f565b90505b6001600160f01b038111156130d957506001600160f01b035b601081901b600d5560006130eb6128d9565b905080600d5411156110d757600d5550505050565b600081815260018301602052604081205461314757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610723565b506000610723565b60008181526001830160205260408120548015613238576000613173600183613a0e565b855490915060009061318790600190613a0e565b90508181146131ec5760008660000182815481106131a7576131a7613bdc565b90600052602060002001549050808760000184815481106131ca576131ca613bdc565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806131fd576131fd613cf4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610723565b6000915050610723565b5092915050565b61325161340a565b6201000082101561329557600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b6401000000008210156132d557600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b03191661327d565b680100000000000000008210156132ef5761327d82613385565b600160801b82101561333f576001600160401b038216604083901c61331382613385565b6001600160c01b031916835261332881613385565b6001600160c01b0319166020840152506133809050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b60448201526064016107e2565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561345957600080fd5b81356001600160e01b03198116811461112857600080fd5b80356001600160a01b038116811461338057600080fd5b80356001600160401b038116811461338057600080fd5b600080604083850312156134b257600080fd5b6134bb83613471565b91506134c960208401613488565b90509250929050565b6000602082840312156134e457600080fd5b5035919050565b6000602082840312156134fd57600080fd5b61112882613488565b6000806040838503121561351957600080fd5b823591506134c960208401613471565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561356257613562613529565b60405290565b60006080828403121561357a57600080fd5b604051608081018181106001600160401b038211171561359c5761359c613529565b806040525080915082358152602083013560208201526135be60408401613488565b60408201526135cf60608401613488565b60608201525092915050565b600082601f8301126135ec57600080fd5b6040516110008082018281106001600160401b038211171561361057613610613529565b6040528301818582111561362357600080fd5b845b8281101561363d578035825260209182019101613625565b509195945050505050565b600082601f83011261365957600080fd5b813560206001600160401b038083111561367557613675613529565b8260051b604051601f19603f8301168101818110848211171561369a5761369a613529565b6040529384528581018301938381019250878511156136b857600080fd5b83870191505b848210156136d7578135835291830191908301906136be565b979650505050505050565b600061116082840312156136f557600080fd5b6136fd61353f565b90508135815260208201356020820152604082013560408201526137248360608401613568565b606082015260e082013560808201526101008083013560a083015261012083013560c08301526137588461014085016135db565b60e08301526111408301356001600160401b0381111561377757600080fd5b61378385828601613648565b82840152505092915050565b600060c082840312156137a157600080fd5b60405160c081018181106001600160401b03821117156137c3576137c3613529565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060e0838503121561381b57600080fd5b82356001600160401b0381111561383157600080fd5b61383d858286016136e2565b9250506134c9846020850161378f565b60006020828403121561385f57600080fd5b81356001600160401b0381111561387557600080fd5b613881848285016136e2565b949350505050565b6110008101818360005b60808110156138b2578151835260209283019290910190600101613893565b50505092915050565b60008061102083850312156138cf57600080fd5b82356001600160401b038111156138e557600080fd5b6138f1858286016136e2565b9250506134c984602085016135db565b60008060e0838503121561391457600080fd5b61391e848461378f565b9460c0939093013593505050565b6000806040838503121561393f57600080fd5b82356001600160401b0381111561395557600080fd5b613961858286016136e2565b95602094909401359450505050565b6000806040838503121561398357600080fd5b50508035926020909101359150565b600080604083850312156139a557600080fd5b6139ae83613471565b946020939093013593505050565b6000806000606084860312156139d157600080fd5b833592506139e160208501613471565b91506139ef60408501613471565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b81810381811115610723576107236139f8565b600060208284031215613a3357600080fd5b5051919050565b600060c08284031215613a4c57600080fd5b60405160c081018181106001600160401b0382111715613a6e57613a6e613529565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b634e487b7160e01b600052601260045260246000fd5b600082613ad857613ad8613ab3565b500690565b80820180821115610723576107236139f8565b6000816000190483118215151615613b0a57613b0a6139f8565b500290565b6001600160401b03828116828216039080821115613242576132426139f8565b600082613b3e57613b3e613ab3565b500490565b80516001600160801b038116811461338057600080fd5b600060408284031215613b6c57600080fd5b604051604081018181106001600160401b0382111715613b8e57613b8e613529565b604052613b9a83613b43565b8152613ba860208401613b43565b60208201529392505050565b60408101818360005b60028110156138b2578151835260209283019290910190600101613bbd565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103613c0857613c086139f8565b60010192915050565b60005b83811015613c2c578181015183820152602001613c14565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613c6d816017850160208801613c11565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613c9e816028840160208801613c11565b01602801949350505050565b6020815260008251806020840152613cc9816040850160208701613c11565b601f01601f19169190910160400192915050565b600081613cec57613cec6139f8565b506000190190565b634e487b7160e01b600052603160045260246000fdfeb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a264697066735822122019a5be2e38a2f4afc1588dfacf5b2b58a9acc7fd44fceebfcfc4b1f1f282f06764736f6c63430008100033", - "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102a05760003560e01c80637eca568811610167578063b0628ee0116100ce578063ca15c87311610087578063ca15c873146106ad578063d547741f146106c0578063dddc61a8146106d3578063e1498cf9146106dc578063e282e27b146106ef578063ffbc9bd0146106f657600080fd5b8063b0628ee014610632578063b15d20da14610645578063b4988fd01461065a578063b4a932831461066d578063b51e039714610676578063b776a512146106a457600080fd5b8063a217fddf11610120578063a217fddf146105c1578063a8279182146105c9578063ad08fdfb146105d2578063adaa7a0f146105e5578063ae722e821461060c578063af31f9141461061f57600080fd5b80637eca56881461054f57806382975fe7146105585780638c0bca061461057f5780639010d07c1461059257806391d14854146105a55780639dc787a2146105b857600080fd5b8063331f3b9c1161020b57806359e7b5be116101c457806359e7b5be146104bc5780635bdca855146104dc5780636e9bb60b146104ef578063704d3c961461050257806378203ab6146105155780637bba7d611461052857600080fd5b8063331f3b9c14610448578063343aad821461045157806336568abe1461046457806339cd53ee146104775780633baebb75146104a057806348f61441146104b357600080fd5b8063228cb7331161025d578063228cb73314610340578063248a9ca31461036b578063296beba71461039d5780632a02573b146104195780632f2ff15d1461042c57806331223ba71461043f57600080fd5b806301ffc9a7146102a5578063047c13f5146102cd5780630c655e1f146102e2578063158ef93e146102f55780631600c6241461030257806316a4be6f14610315575b600080fd5b6102b86102b3366004613447565b6106fe565b60405190151581526020015b60405180910390f35b6102e06102db36600461349f565b610729565b005b6102e06102f03660046134d2565b610845565b6000546102b89060ff1681565b6102e06103103660046134d2565b6109a0565b600a54610328906001600160401b031681565b6040516001600160401b0390911681526020016102c4565b600454610353906001600160a01b031681565b6040516001600160a01b0390911681526020016102c4565b61038f6103793660046134d2565b6000908152600160208190526040909120015490565b6040519081526020016102c4565b6103b06103ab3660046134d2565b610a10565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b0316610100820152610120016102c4565b6102e06104273660046134eb565b610c8d565b6102e061043a366004613506565b610d93565b61038f600b5481565b61038f60065481565b600354610353906001600160a01b031681565b6102e0610472366004613506565b610dbe565b6103536104853660046134d2565b600e602052600090815260409020546001600160a01b031681565b6102e06104ae366004613808565b610e3c565b61038f600d5481565b6104cf6104ca36600461384d565b6110de565b6040516102c49190613889565b6102e06104ea3660046134d2565b6110ef565b61038f6104fd3660046138bb565b61111c565b6102e06105103660046134d2565b61112f565b61038f610523366004613901565b61119d565b6102b87f000000000000000000000000000000000000000000000000000000000000000081565b61038f60085481565b6102b87f000000000000000000000000000000000000000000000000000000000000000081565b61038f61058d36600461392c565b6112ea565b6103536105a0366004613970565b6114ea565b6102b86105b3366004613506565b611502565b61038f60105481565b61038f600081565b61038f600c5481565b6102e06105e03660046134d2565b61152d565b6102b87f000000000000000000000000000000000000000000000000000000000000000081565b6102e061061a36600461384d565b611567565b6102e061062d36600461392c565b611a32565b6102e0610640366004613992565b611a64565b61038f600080516020613d0b83398151915281565b6102e06106683660046139bc565b611b24565b61038f600f5481565b6102e06106843660046134d2565b6000908152600e6020526040902080546001600160a01b03191633179055565b61038f60075481565b61038f6106bb3660046134d2565b611c50565b6102e06106ce366004613506565b611c67565b61038f60095481565b6102e06106ea3660046134d2565b600d55565b6001610328565b6102b8611c8d565b60006001600160e01b03198216635a05180f60e01b1480610723575061072382611d33565b92915050565b6000610736600143613a0e565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c084901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152600e9093529120549091506001600160a01b0316156107eb5760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b6000818152600e602052604080822080546001600160a01b0319166001600160a01b0387169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a3505050565b600080516020613d0b83398151915261085d81611d68565b600082116108b75760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b60648201526084016107e2565b600360009054906101000a90046001600160a01b03166001600160a01b031663f06820546040518163ffffffff1660e01b8152600401602060405180830381865afa15801561090a573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061092e9190613a21565b821061099a5760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b60648201526084016107e2565b50601055565b600080516020613d0b8339815191526109b881611d68565b610100821115610a0a5760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d2032353600000060448201526064016107e2565b50600655565b604080516101408101825260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052606081019190915281610aa65760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b60448201526064016107e2565b6000828152600e60205260409020546001600160a01b031680610b0b5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f742072656769737465726564000000000060448201526064016107e2565b600a546001600160401b0316606083015260035460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610b68573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b8c9190613a3a565b80835260105460a09091015160405160009291610bb6918790602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610bd99190613ac9565b9050600081846000015160200151610bf19190613add565b90508043111580610c0c5750600654610c0a8243613a0e565b115b15610c1957505050919050565b835160a001516040805160208082019390935283408183015281518082038301815260609091018252805192019190912090850152600b548451511115610c65578351610c6590611d75565b600754610c73906002613af0565b600c541015610c8557600d5460208501525b505050919050565b600080516020613d0b833981519152610ca581611d68565b6000826001600160401b031611610cfe5760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f0060448201526064016107e2565b610d09600183613b0f565b82166001600160401b0316600014610d6f5760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b60648201526084016107e2565b50600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b60008281526001602081905260409091200154610daf81611d68565b610db98383611e05565b505050565b6001600160a01b0381163314610e2e5760405162461bcd60e51b815260206004820152602f60248201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560448201526e103937b632b9903337b91039b2b63360891b60648201526084016107e2565b610e388282611e27565b5050565b815160a082015114610e905760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e672064696765737400000000000060448201526064016107e2565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708160a0015103610f035760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e650000000000000060448201526064016107e2565b600754610f11906002613af0565b600c5410610f615760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e730000000060448201526064016107e2565b6000610100610f7261040082613af0565b610f7c9190613b2f565b610100610f8b61040082613af0565b610f959190613b2f565b8360600151610fa49190613b2f565b610fae9190613af0565b6060840151909150610fc09082611e49565b60035460c0840151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa15801561100f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110339190613b5a565b905060006101006110476104006004613af0565b6110519190613b2f565b85608001516110609190613add565b90508082600001516001600160801b031610801561108b57508082602001516001600160801b031610155b6110d75760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e746578742064696765737400000060448201526064016107e2565b5050505050565b6110e66133eb565b61072382612087565b600080516020613d0b83398151915261110781611d68565b6008829055600b54600003610e385750600755565b60006111288383612136565b9392505050565b600080516020613d0b83398151915261114781611d68565b600082116111975760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f00000060448201526064016107e2565b50600955565b6000806010548460a00151846040516020016111c3929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6111e69190613ac9565b905060008185602001516111fa9190613add565b905080431161125e5760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b60648201526084016107e2565b60065461126b8243613a0e565b11156112b05760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b60448201526064016107e2565b60a0850151604080516020810192909252824090820152606001604051602081830303815290604052805190602001209250505092915050565b604082015160009061133e5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d707479000000000000000060448201526064016107e2565b60006040518060800160405280856040015181526020018560200151815260200184815260200161137286606001516123a9565b90529050600061138182612411565b905060006113926104006010613af0565b6113a0610400610100613af0565b6113aa9190613b2f565b6113b76104006004613af0565b6113c5610400610100613af0565b6113cf9190613b2f565b6113d99190613b2f565b8660a001516113e89190613ac9565b90506113f26133eb565b6113fa61340a565b6114098860e001518486612489565b9250905061010061141d6104006004613af0565b6114279190613b2f565b8860a001516114369190613af0565b6114738260405160200161144a9190613bb4565b604051602081830303815290604052805190602001208a6060015161260990919063ffffffff16565b61147d9190613add565b8860800151146114cf5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e0000000000000060448201526064016107e2565b6114de8860a00151858461270f565b98975050505050505050565b600082815260026020526040812061112890836128cd565b60009182526001602090815260408084206001600160a01b0393909316845291905290205460ff1690565b600080516020613d0b83398151915261154581611d68565b600f82905560006115546128d9565b905080600d541115610db957600d555050565b60408101516115b15760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b60448201526064016107e2565b6040808201516000908152600e60205220546001600160a01b0316806116195760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f742072656769737465726564000000000060448201526064016107e2565b60035460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611664573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116889190613a3a565b905061169381611d75565b60006116a382856040015161119d565b90506116af8483610e3c565b600a5460608501516001600160401b03909116906116cc90612900565b11156117295760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b60648201526084016107e2565b6117316133eb565b7f0000000000000000000000000000000000000000000000000000000000000000156117675761176085612087565b905061176e565b5060e08401515b7f0000000000000000000000000000000000000000000000000000000000000000156117f75760006117a08683612136565b9050836040015181146117f55760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f74000000000000000060448201526064016107e2565b505b6117ff6133eb565b9050600061180d86846112ea565b9050600061182c8560600151886060015161294a90919063ffffffff16565b9050604081600d5461183e9190613b2f565b901b82111561188f5760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c697479000000000060448201526064016107e2565b60008281526005602052604090205460ff16156118ee5760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d69747465640000000000000060448201526064016107e2565b6000828152600560205260409020805460ff191660011790556004546001600160a01b031663b7a3c04c61010061192761040080613af0565b61193390610400613af0565b61193e906008613af0565b6119489190613b2f565b89608001516119579190613b2f565b6040808b015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b1580156119a957600080fd5b505af11580156119bd573d6000803e3d6000fd5b5050506040808901518751600c5460808c015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a38451600b55600c805460019190600090611a24908490613add565b909155505050505050505050565b6000611a3d83612087565b9050611a498382612136565b50611a526133eb565b9050611a5e83836112ea565b50505050565b6000818152600e60205260409020546001600160a01b03163314611aca5760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e65724964000000000060448201526064016107e2565b6000818152600e602052604080822080546001600160a01b0319166001600160a01b03861690811790915590519091339184917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a45050565b60005460ff1615611b835760405162461bcd60e51b8152602060048201526024808201527f5a67496e697469616c697a61626c653a20616c726561647920696e697469616c6044820152631a5e995960e21b60648201526084016107e2565b6000805460ff19166001178155611ba090611b9b3390565b611e05565b611bb8600080516020613d0b83398151915233611e05565b611bc483600019613b2f565b600d557f000000000000000000000000000000000000000000000000000000000000000015611bf457600019600d555b600380546001600160a01b039384166001600160a01b03199182161790915560048054929093169116179055506064600655600a600781905560088190556014600955805467ffffffffffffffff191660201790556001601055565b600081815260026020526040812061072390612a8a565b60008281526001602081905260409091200154611c8381611d68565b610db98383611e27565b600080600360009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af1158015611ce5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d099190613a3a565b9050600b5481600001511180611d2d5750600754611d28906002613af0565b600c54105b91505090565b60006001600160e01b03198216637965db0b60e01b148061072357506301ffc9a760e01b6001600160e01b0319831614610723565b611d728133612a94565b50565b600b5481511015611dd65760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b60648201526084016107e2565b600b548151118015611dea57506000600b54115b15611d7257611df7612aed565b6000600c5560085460075550565b611e0f8282612b2d565b6000828152600260205260409020610db99082612b98565b611e318282612bad565b6000828152600260205260409020610db99082612c14565b610100611e5861040080613af0565b611e6490610400613af0565b611e6f906008613af0565b611e799190613b2f565b8251611e859190613ac9565b15611ed25760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e656400000060448201526064016107e2565b602082015182518291611ee491613add565b1115611f2a5760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b60448201526064016107e2565b6000611f3583612900565b610100611f4461040080613af0565b611f5090610400613af0565b611f5c90610400613af0565b611f67906008613af0565b611f719190613b2f565b611f7b9190613af0565b90508083602001511115611fc95760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b60448201526064016107e2565b6000611fd58383612c29565b905080846020015110156120245760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b60448201526064016107e2565b83606001518460400151166001600160401b0316600014611a5e5760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f00000000000060448201526064016107e2565b61208f6133eb565b60408083015160c0840151608085015192516120bf93906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e08401805151909118835251906000906120f56104006004613af0565b6120ff9190613b2f565b905081836020600184030281015b8082101561212c5760208084209381018051909418920191825261210d565b5050505050919050565b6000805b60206121496104006004613af0565b6121539190613b2f565b8110156121a157610100602082028401208084836080811061217757612177613bdc565b6020020181815250505060206101006121909190613b2f565b61219a9082613add565b905061213a565b5060006121b16020610100613b2f565b90505b60206121c36104006004613af0565b6121cd9190613b2f565b8110156122a05760005b60206121e66104006004613af0565b6121f09190613b2f565b81101561229757600084826080811061220b5761220b613bdc565b6020020151905060008561221f8585613add565b6080811061222f5761222f613bdc565b602002015190508181604051602001612252929190918252602082015260400190565b6040516020818303038152906040528051906020012086846080811061227a5761227a613bdc565b6020020152506122909050600183901b82613add565b90506121d7565b5060011b6121b4565b5081516122ab6133eb565b925060006101006122bf6104006004613af0565b6122c99190613b2f565b85608001516122d89190613b2f565b905060005b8561010001515181101561239f576000806122f9600285613ac9565b60000361232957849150876101000151838151811061231a5761231a613bdc565b6020026020010151905061234e565b876101000151838151811061234057612340613bdc565b602002602001015191508490505b60408051602081018490529081018290526060016040516020818303038152906040528051906020012094506002846123879190613b2f565b935050506001816123989190613add565b90506122dd565b5090949350505050565b600081600001518260200151836040015184606001516040516020016123f4949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b61241961340a565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152825190830151604084015160608501516107239385939092909160806001612c3f565b61249161340a565b6124996133eb565b60006124a484612d58565b90506124d28160406124b96104006004613af0565b6124c39190613b2f565b6124cd9088613af0565b612d74565b60005b60808110156125625760408083208352822060208301528681608081106124fe576124fe613bdc565b602002015182511883826080811061251857612518613bdc565b602002015286600182016080811061253257612532613bdc565b602002015182600160200201511883826001016080811061255557612555613bdc565b60200201526002016124d5565b506125f58160406125766104006004613af0565b6125809190613b2f565b6001886125906104006010613af0565b61259e610400610100613af0565b6125a89190613b2f565b6125b56104006004613af0565b6125c3610400610100613af0565b6125cd9190613b2f565b6125d79190613b2f565b6125e19190613a0e565b6125eb9190613a0e565b6124cd9190613af0565b6125fe81612d58565b925050935093915050565b60008061010061261b61040082613af0565b6126259190613b2f565b84602001516126349190613b2f565b61263e9084613ac9565b6040850151606086015160208701519293508316179061010061266361040082613af0565b61266d9190613b2f565b612680906001600160401b038416613af0565b11156126ce5760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e640000000060448201526064016107e2565b6101006126dd61040082613af0565b6126e79190613b2f565b6126fa906001600160401b038316613af0565b85516127069190613add565b95945050505050565b600061271961340a565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b60208083019190915284519085015161277f9183918891906000608081612c3f565b9050612789613428565b60806000602061279c6104006004613af0565b6127a69190613b2f565b6127b1906020613af0565b6127bc906080613add565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c10161561285b5760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b0361284157600182535b60408660d58a6009600019fa61285657600198505b6127f0565b505050505050505080156128bd5760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b60648201526084016107e2565b5050506020015195945050505050565b60006111288383612d95565b6000600f546000036128ec575060001990565b600f546128fb90600019613b2f565b905090565b606081015160009019815b6001600160401b0382161561293b57612925600183613b0f565b909116908061293381613bf2565b91505061290b565b600160ff9091161b9392505050565b60008061010061295c61040080613af0565b61296890610400613af0565b61297490610400613af0565b61297f906008613af0565b6129899190613b2f565b831161299557826129d1565b6101006129a461040080613af0565b6129b090610400613af0565b6129bc90610400613af0565b6129c7906008613af0565b6129d19190613b2f565b905060006129de85612900565b6129e89085613b2f565b905060006101006129fb61040080613af0565b612a0790610400613af0565b612a1390610400613af0565b612a1e906008613af0565b612a289190613b2f565b8211612a345781612a70565b610100612a4361040080613af0565b612a4f90610400613af0565b612a5b90610400613af0565b612a66906008613af0565b612a709190613b2f565b9050612a8081604085901b613b2f565b9695505050505050565b6000610723825490565b612a9e8282611502565b610e3857612aab81612dbf565b612ab6836020612dd1565b604051602001612ac7929190613c35565b60408051601f198184030181529082905262461bcd60e51b82526107e291600401613caa565b600c5460009015612b1a5760006010600d54901c9050612b1281600654600c54612f6c565b915050612b24565b506001600160f01b035b611d728161301b565b612b378282611502565b610e385760008281526001602081815260408084206001600160a01b0386168086529252808420805460ff19169093179092559051339285917f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d9190a45050565b6000611128836001600160a01b038416613100565b612bb78282611502565b15610e385760008281526001602090815260408083206001600160a01b0385168085529252808320805460ff1916905551339285917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a45050565b6000611128836001600160a01b03841661314f565b6000818310612c385781611128565b5090919050565b612c4761340a565b600c6000612c5485613249565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa905080600003612d495760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b60648201526084016107e2565b50505050979650505050505050565b612d6061340a565b815181526020918201519181019190915290565b60005b81811015610db9576040808420845283206020840152600101612d77565b6000826000018281548110612dac57612dac613bdc565b9060005260206000200154905092915050565b60606107236001600160a01b03831660145b60606000612de0836002613af0565b612deb906002613add565b6001600160401b03811115612e0257612e02613529565b6040519080825280601f01601f191660200182016040528015612e2c576020820181803683370190505b509050600360fc1b81600081518110612e4757612e47613bdc565b60200101906001600160f81b031916908160001a905350600f60fb1b81600181518110612e7657612e76613bdc565b60200101906001600160f81b031916908160001a9053506000612e9a846002613af0565b612ea5906001613add565b90505b6001811115612f1d576f181899199a1a9b1b9c1cb0b131b232b360811b85600f1660108110612ed957612ed9613bdc565b1a60f81b828281518110612eef57612eef613bdc565b60200101906001600160f81b031916908160001a90535060049490941c93612f1681613cdd565b9050612ea8565b5083156111285760405162461bcd60e51b815260206004820181905260248201527f537472696e67733a20686578206c656e67746820696e73756666696369656e7460448201526064016107e2565b6000808060001985870985870292508281108382030391505080600003612fa657838281612f9c57612f9c613ab3565b0492505050611128565b808411612fb257600080fd5b60008486880960026001871981018816978890046003810283188082028403028082028403028082028403028082028403028082028403029081029092039091026000889003889004909101858311909403939093029303949094049190911702949350505050565b7f0000000000000000000000000000000000000000000000000000000000000000156130445750565b600d5460095460109190911c9060008184613060600183613a0e565b61306a9086613af0565b6130749190613add565b61307e9190613b2f565b905061308b836002613af0565b8111156130a05761309d836002613af0565b90505b6130ab600284613b2f565b8110156130c0576130bd600284613b2f565b90505b6001600160f01b038111156130d957506001600160f01b035b601081901b600d5560006130eb6128d9565b905080600d5411156110d757600d5550505050565b600081815260018301602052604081205461314757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610723565b506000610723565b60008181526001830160205260408120548015613238576000613173600183613a0e565b855490915060009061318790600190613a0e565b90508181146131ec5760008660000182815481106131a7576131a7613bdc565b90600052602060002001549050808760000184815481106131ca576131ca613bdc565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806131fd576131fd613cf4565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610723565b6000915050610723565b5092915050565b61325161340a565b6201000082101561329557600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b6401000000008210156132d557600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b03191661327d565b680100000000000000008210156132ef5761327d82613385565b600160801b82101561333f576001600160401b038216604083901c61331382613385565b6001600160c01b031916835261332881613385565b6001600160c01b0319166020840152506133809050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b60448201526064016107e2565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b60006020828403121561345957600080fd5b81356001600160e01b03198116811461112857600080fd5b80356001600160a01b038116811461338057600080fd5b80356001600160401b038116811461338057600080fd5b600080604083850312156134b257600080fd5b6134bb83613471565b91506134c960208401613488565b90509250929050565b6000602082840312156134e457600080fd5b5035919050565b6000602082840312156134fd57600080fd5b61112882613488565b6000806040838503121561351957600080fd5b823591506134c960208401613471565b634e487b7160e01b600052604160045260246000fd5b60405161012081016001600160401b038111828210171561356257613562613529565b60405290565b60006080828403121561357a57600080fd5b604051608081018181106001600160401b038211171561359c5761359c613529565b806040525080915082358152602083013560208201526135be60408401613488565b60408201526135cf60608401613488565b60608201525092915050565b600082601f8301126135ec57600080fd5b6040516110008082018281106001600160401b038211171561361057613610613529565b6040528301818582111561362357600080fd5b845b8281101561363d578035825260209182019101613625565b509195945050505050565b600082601f83011261365957600080fd5b813560206001600160401b038083111561367557613675613529565b8260051b604051601f19603f8301168101818110848211171561369a5761369a613529565b6040529384528581018301938381019250878511156136b857600080fd5b83870191505b848210156136d7578135835291830191908301906136be565b979650505050505050565b600061116082840312156136f557600080fd5b6136fd61353f565b90508135815260208201356020820152604082013560408201526137248360608401613568565b606082015260e082013560808201526101008083013560a083015261012083013560c08301526137588461014085016135db565b60e08301526111408301356001600160401b0381111561377757600080fd5b61378385828601613648565b82840152505092915050565b600060c082840312156137a157600080fd5b60405160c081018181106001600160401b03821117156137c3576137c3613529565b8060405250809150823581526020830135602082015260408301356040820152606083013560608201526080830135608082015260a083013560a08201525092915050565b60008060e0838503121561381b57600080fd5b82356001600160401b0381111561383157600080fd5b61383d858286016136e2565b9250506134c9846020850161378f565b60006020828403121561385f57600080fd5b81356001600160401b0381111561387557600080fd5b613881848285016136e2565b949350505050565b6110008101818360005b60808110156138b2578151835260209283019290910190600101613893565b50505092915050565b60008061102083850312156138cf57600080fd5b82356001600160401b038111156138e557600080fd5b6138f1858286016136e2565b9250506134c984602085016135db565b60008060e0838503121561391457600080fd5b61391e848461378f565b9460c0939093013593505050565b6000806040838503121561393f57600080fd5b82356001600160401b0381111561395557600080fd5b613961858286016136e2565b95602094909401359450505050565b6000806040838503121561398357600080fd5b50508035926020909101359150565b600080604083850312156139a557600080fd5b6139ae83613471565b946020939093013593505050565b6000806000606084860312156139d157600080fd5b833592506139e160208501613471565b91506139ef60408501613471565b90509250925092565b634e487b7160e01b600052601160045260246000fd5b81810381811115610723576107236139f8565b600060208284031215613a3357600080fd5b5051919050565b600060c08284031215613a4c57600080fd5b60405160c081018181106001600160401b0382111715613a6e57613a6e613529565b8060405250825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b634e487b7160e01b600052601260045260246000fd5b600082613ad857613ad8613ab3565b500690565b80820180821115610723576107236139f8565b6000816000190483118215151615613b0a57613b0a6139f8565b500290565b6001600160401b03828116828216039080821115613242576132426139f8565b600082613b3e57613b3e613ab3565b500490565b80516001600160801b038116811461338057600080fd5b600060408284031215613b6c57600080fd5b604051604081018181106001600160401b0382111715613b8e57613b8e613529565b604052613b9a83613b43565b8152613ba860208401613b43565b60208201529392505050565b60408101818360005b60028110156138b2578151835260209283019290910190600101613bbd565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff8103613c0857613c086139f8565b60010192915050565b60005b83811015613c2c578181015183820152602001613c14565b50506000910152565b7f416363657373436f6e74726f6c3a206163636f756e7420000000000000000000815260008351613c6d816017850160208801613c11565b7001034b99036b4b9b9b4b733903937b6329607d1b6017918401918201528351613c9e816028840160208801613c11565b01602801949350505050565b6020815260008251806020840152613cc9816040850160208701613c11565b601f01601f19169190910160400192915050565b600081613cec57613cec6139f8565b506000190190565b634e487b7160e01b600052603160045260246000fdfeb9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e5a264697066735822122019a5be2e38a2f4afc1588dfacf5b2b58a9acc7fd44fceebfcfc4b1f1f282f06764736f6c63430008100033", + "bytecode": "0x60e06040523480156200001157600080fd5b506040516200438838038062004388833981016040819052620000349162000052565b60016004909117818116156080526002161560a05260c0526200006c565b6000602082840312156200006557600080fd5b5051919050565b60805160a05160c0516142d0620000b86000396000818161056401528181610c21015261365c0152600081816105930152611e720152600081816106390152611dc201526142d06000f3fe608060405234801561001057600080fd5b506004361061030c5760003560e01c80637eca56881161019d578063af31f914116100e9578063c10a7297116100a2578063dddc61a81161007c578063dddc61a8146106f9578063e1498cf914610701578063e282e27b14610714578063ffbc9bd01461071b57600080fd5b8063c10a7297146106cc578063ca15c873146106d3578063d547741f146106e657600080fd5b8063af31f9141461066e578063b0628ee014610681578063b15d20da14610694578063b4a93283146106a9578063b51e0397146106b1578063b776a512146106c457600080fd5b806391d1485411610156578063a827918211610130578063a827918214610619578063ad08fdfb14610621578063adaa7a0f14610634578063ae722e821461065b57600080fd5b806391d14854146105f65780639dc787a214610609578063a217fddf1461061157600080fd5b80637eca56881461058657806382975fe71461058e57806384f96bb6146105b55780638c0bca06146105c85780638f375b36146105db5780639010d07c146105e357600080fd5b806331223ba71161025c57806348f61441116102155780636e9bb60b116101ef5780636e9bb60b14610526578063704d3c961461053957806378203ab61461054c5780637bba7d611461055f57600080fd5b806348f61441146104eb57806359e7b5be146104f35780635bdca8551461051357600080fd5b806331223ba71461049a578063331f3b9c146104a2578063343aad82146104aa57806336568abe146104b257806339cd53ee146104c55780633baebb75146104d857600080fd5b806316a4be6f116102c957806328812dbf116102a357806328812dbf146103e5578063296beba7146103f85780632a02573b146104745780632f2ff15d1461048757600080fd5b806316a4be6f14610392578063228cb733146103b2578063248a9ca3146103d257600080fd5b806301ffc9a7146103115780630367e2dd14610339578063047c13f51461034f5780630c655e1f146103645780630e2410ff146103775780631600c6241461037f575b600080fd5b61032461031f366004613a30565b610723565b60405190151581526020015b60405180910390f35b61034161074e565b604051908152602001610330565b61036261035d366004613a88565b610761565b005b610362610372366004613abb565b61088e565b610341610a38565b61036261038d366004613abb565b610a4b565b61039a610aca565b6040516001600160401b039091168152602001610330565b6103ba610ae6565b6040516001600160a01b039091168152602001610330565b6103416103e0366004613abb565b610b02565b6103626103f3366004613b35565b610b24565b61040b610406366004613abb565b610d38565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b031661010082015261012001610330565b610362610482366004613bc9565b611051565b610362610495366004613be4565b611164565b610341611186565b610341611199565b6103ba6111ac565b6103626104c0366004613be4565b6111c5565b6103ba6104d3366004613abb565b6111f8565b6103626104e6366004613e86565b61121f565b6103416114d2565b610506610501366004613ecb565b6114e5565b6040516103309190613eff565b610362610521366004613abb565b6114f6565b610341610534366004613f31565b611538565b610362610547366004613abb565b61154b565b61034161055a366004613f77565b6115c9565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b61034161173e565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b6103626105c3366004613abb565b611751565b6103416105d6366004613fa2565b6118f8565b610341611af8565b6103ba6105f1366004613fe6565b611b0b565b610324610604366004613be4565b611b3a565b610341611b72565b610341600081565b610341611b85565b61036261062f366004613abb565b611b98565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b610362610669366004613ecb565b611be6565b61036261067c366004613fa2565b612144565b61036261068f366004614008565b612170565b61034160008051602061425b83398151915281565b610341612242565b6103626106bf366004613abb565b612255565b610341612261565b600a6103ba565b6103416106e1366004613abb565b612274565b6103626106f4366004613be4565b61229a565b6103416122b6565b61036261070f366004613abb565b6122c9565b600161039a565b6103246122d2565b60006001600160e01b03198216635a05180f60e01b148061074857506107488261238d565b92915050565b60006107586123c2565b600c0154905090565b600061076b6123c2565b9050600061077a600143614048565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c085901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152601086019093529120549091506001600160a01b0316156108315760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b600081815260108301602052604080822080546001600160a01b0319166001600160a01b0388169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a350505050565b60008051602061425b8339815191526108a6816123e6565b60006108b06123c2565b90506000831161090c5760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b6064820152608401610828565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610979919061405b565b6002820154600e83015461098e600187614048565b6109989190614074565b6109a2919061408b565b6109ad90600161408b565b10610a185760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b6064820152608401610828565b600c81018390556007810154600003610a3357600b81018390555b505050565b6000610a426123c2565b600e0154905090565b60008051602061425b833981519152610a63816123e6565b610100821115610ab55760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d203235360000006044820152606401610828565b6000610abf6123c2565b600201929092555050565b6000610ad46123c2565b600601546001600160401b0316919050565b6000610af06123c2565b600101546001600160a01b0316919050565b600090815260008051602061427b833981519152602052604090206001015490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610b695750825b90506000826001600160401b03166001148015610b855750303b155b905081158015610b93575080155b15610bb15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bdb57845460ff60401b1916600160401b1785555b6000610be56123c2565b9050610bf26000336123f0565b50610c0b60008051602061425b833981519152336123f0565b508651610c1a906000196140b4565b60098201557f000000000000000000000000000000000000000000000000000000000000000015610c4e5760001960098201555b6014600582015580546001600160a01b03808b166001600160a01b0319928316178355600183018054918b16919092161790556020870151600282015560408701516003820181905560608801516006830180546001600160401b0390921667ffffffffffffffff199092169190911790556080880151600b8301819055600c830155600482015560a0870151600d8201819055600e909101558315610d2e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b604080516101408101825260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052606081019190915233600a14610df25760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920617574686f72697a65642063616c6c65722063616e20636f6d70756044820152701d19481ddbdc9ad95c8818dbdb9d195e1d607a1b6064820152608401610828565b6000610dfc6123c2565b905082610e445760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610828565b60008381526010820160205260409020546001600160a01b031680610eab5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610828565b60068201546001600160401b03166060840152815460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906140c8565b808452600b83015460a09091015160405160009291610f59918890602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610f7c9190614122565b9050600083600d015482610f909190614074565b855160200151610fa0919061408b565b90506000846002015482610fb4919061408b565b90508143111580610fc457508043115b15610fd3575050505050919050565b855160a0015160408051602080820193909352844081830152815180820383018152606090910182528051920191909120908701526007850154865151111561102157855161102190612435565b6003850154611031906002614074565b8560080154101561104757600985015460208701525b5050505050919050565b60008051602061425b833981519152611069816123e6565b6000826001600160401b0316116110c25760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f006044820152606401610828565b6110cd600183614136565b82166001600160401b03166000146111335760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b6064820152608401610828565b600061113d6123c2565b600601805467ffffffffffffffff19166001600160401b0394909416939093179092555050565b61116d82610b02565b611176816123e6565b61118083836123f0565b50505050565b60006111906123c2565b60070154905090565b60006111a36123c2565b60020154905090565b60006111b66123c2565b546001600160a01b0316919050565b6001600160a01b03811633146111ee5760405163334bd91960e11b815260040160405180910390fd5b610a3382826124f6565b60006112026123c2565b60009283526010016020525060409020546001600160a01b031690565b60006112296123c2565b835160a0840151919250146112805760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610828565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708260a00151036112f35760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610828565b6003810154611303906002614074565b8160080154106113555760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610828565b600061010061136661040082614074565b61137091906140b4565b61010061137f61040082614074565b61138991906140b4565b846060015161139891906140b4565b6113a29190614074565b60608501519091506113b49082612532565b815460c0850151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611426919061416d565b9050600061010061143a6104006004614074565b61144491906140b4565b8660800151611453919061408b565b90508082600001516001600160801b031610801561147e57508082602001516001600160801b031610155b6114ca5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610828565b505050505050565b60006114dc6123c2565b60090154905090565b6114ed6139d4565b61074882612770565b60008051602061425b83398151915261150e816123e6565b60006115186123c2565b600481018490556007810154909150600003610a33576003019190915550565b60006115448383612815565b9392505050565b60008051602061425b833981519152611563816123e6565b600061156d6123c2565b9050600083116115bf5760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f0000006044820152606401610828565b6005019190915550565b6000806115d46123c2565b9050600081600b01548560a00151856040516020016115fd929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6116209190614122565b9050600082600d0154826116349190614074565b8660200151611643919061408b565b90506000836002015482611657919061408b565b90508143116116bb5760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b6064820152608401610828565b804311156117025760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b6044820152606401610828565b60a08701516040805160208101929092528340908201526060016040516020818303038152906040528051906020012094505050505092915050565b60006117486123c2565b60040154905090565b60008051602061425b833981519152611769816123e6565b60006117736123c2565b9050600083116117c55760405162461bcd60e51b815260206004820152601f60248201527f5375627461736b20696e74657276616c2063616e6e6f74206265207a65726f006044820152606401610828565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611832919061405b565b816002015484600184600c01546118499190614048565b6118539190614074565b61185d919061408b565b61186890600161408b565b106118db5760405162461bcd60e51b815260206004820152603e60248201527f4e756d626572206f66207375627461736b20696e74657276616c73206d75737460448201527f206265206c657373207468616e20626c6f636b73207065722065706f636800006064820152608401610828565b600e81018390556007810154600003610a3357600d019190915550565b604082015160009061194c5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610828565b6000604051806080016040528085604001518152602001856020015181526020018481526020016119808660600151612a88565b90529050600061198f82612af0565b905060006119a06104006010614074565b6119ae610400610100614074565b6119b891906140b4565b6119c56104006004614074565b6119d3610400610100614074565b6119dd91906140b4565b6119e791906140b4565b8660a001516119f69190614122565b9050611a006139d4565b611a086139f3565b611a178860e001518486612b68565b92509050610100611a2b6104006004614074565b611a3591906140b4565b8860a00151611a449190614074565b611a8182604051602001611a5891906141c7565b604051602081830303815290604052805190602001208a60600151612ce890919063ffffffff16565b611a8b919061408b565b886080015114611add5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610828565b611aec8860a001518584612dee565b98975050505050505050565b6000611b026123c2565b600d0154905090565b600082815260008051602061423b833981519152602081905260408220611b329084612fac565b949350505050565b600091825260008051602061427b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611b7c6123c2565b600b0154905090565b6000611b8f6123c2565b60080154905090565b60008051602061425b833981519152611bb0816123e6565b6000611bba6123c2565b600a810184905590506000611bcd612fb8565b9050808260090154111561118057600991909101555050565b6000611bf06123c2565b6040830151909150611c3d5760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610828565b60408083015160009081526010830160205220546001600160a01b031680611ca75760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610828565b815460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1591906140c8565b9050611d2081612435565b6000611d308286604001516115c9565b9050611d3c858361121f565b600684015460608601516001600160401b0390911690611d5b90612ff1565b1115611db85760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b6064820152608401610828565b611dc06139d4565b7f000000000000000000000000000000000000000000000000000000000000000015611e69577fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708660c0015103611e595760405162461bcd60e51b815260206004820152601b60248201527f5365616c206469676573742063616e6e6f7420626520656d70747900000000006044820152606401610828565b611e6286612770565b9050611e70565b5060e08501515b7f000000000000000000000000000000000000000000000000000000000000000015611ef9576000611ea28783612815565b905083604001518114611ef75760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610828565b505b611f016139d4565b90506000611f0f87846118f8565b90506000611f2e8560600151896060015161303b90919063ffffffff16565b90506040818860090154611f4291906140b4565b901b821115611f935760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610828565b6000828152600f8801602052604090205460ff1615611ff45760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d6974746564000000000000006044820152606401610828565b6000828152600f880160205260409020805460ff191660019081179091558701546001600160a01b031663b7a3c04c61010061203261040080614074565b61203e90610400614074565b612049906008614074565b61205391906140b4565b8a6080015161206291906140b4565b6040808c015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b1580156120b457600080fd5b505af11580156120c8573d6000803e3d6000fd5b5050506040808a0151875160088b015460808d015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a3845160078801556008870180546001919060009061213590849061408b565b90915550505050505050505050565b600061214f83612770565b905061215b8382612815565b506121646139d4565b905061118083836118f8565b600061217a6123c2565b60008381526010820160205260409020549091506001600160a01b031633146121e55760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610828565b600082815260108201602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519091339185917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a4505050565b600061224c6123c2565b600a0154905090565b61225e8161317b565b50565b600061226b6123c2565b60030154905090565b600081815260008051602061423b833981519152602081905260408220611544906131a7565b6122a382610b02565b6122ac816123e6565b61118083836124f6565b60006122c06123c2565b60050154905090565b61225e816131b1565b6000806122dd6123c2565b905060008160000160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af1158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c91906140c8565b90508160070154816000015111806123865750600382015461237f906002614074565b8260080154105b9250505090565b60006001600160e01b03198216637965db0b60e01b148061074857506301ffc9a760e01b6001600160e01b0319831614610748565b7f11daa6f94f95391c200e8721026efe26699a21dbe0ead47ee9562dd85a6e300090565b61225e81336131c5565b600060008051602061423b8339815191528161240c85856131fe565b90508015611b3257600085815260208390526040902061242c90856132aa565b50949350505050565b600061243f6123c2565b90508060070154826000015110156124a75760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610828565b600781015482511180156124bf575060008160070154115b156124f2576124cc6132bf565b6000600882015560048101546003820155600c810154600b820155600e810154600d8201555b5050565b600060008051602061423b833981519152816125128585613314565b90508015611b3257600085815260208390526040902061242c9085613390565b61010061254161040080614074565b61254d90610400614074565b612558906008614074565b61256291906140b4565b825161256e9190614122565b156125bb5760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610828565b6020820151825182916125cd9161408b565b11156126135760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610828565b600061261e83612ff1565b61010061262d61040080614074565b61263990610400614074565b61264590610400614074565b612650906008614074565b61265a91906140b4565b6126649190614074565b905080836020015111156126b25760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610828565b60006126be83836133a5565b9050808460200151101561270d5760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610828565b83606001518460400151166001600160401b03166000146111805760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610828565b6127786139d4565b60408083015160c0840151608085015192516127a893906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e08401805151909118835251906000906127de6104006004614074565b6127e891906140b4565b905081836020600184030281015b80821015611047576020808420938101805190941892019182526127f6565b6000805b60206128286104006004614074565b61283291906140b4565b811015612880576101006020820284012080848360808110612856576128566141ef565b60200201818152505050602061010061286f91906140b4565b612879908261408b565b9050612819565b50600061289060206101006140b4565b90505b60206128a26104006004614074565b6128ac91906140b4565b81101561297f5760005b60206128c56104006004614074565b6128cf91906140b4565b8110156129765760008482608081106128ea576128ea6141ef565b602002015190506000856128fe858561408b565b6080811061290e5761290e6141ef565b602002015190508181604051602001612931929190918252602082015260400190565b60405160208183030381529060405280519060200120868460808110612959576129596141ef565b60200201525061296f9050600183901b8261408b565b90506128b6565b5060011b612893565b50815161298a6139d4565b9250600061010061299e6104006004614074565b6129a891906140b4565b85608001516129b791906140b4565b905060005b85610100015151811015612a7e576000806129d8600285614122565b600003612a085784915087610100015183815181106129f9576129f96141ef565b60200260200101519050612a2d565b8761010001518381518110612a1f57612a1f6141ef565b602002602001015191508490505b6040805160208101849052908101829052606001604051602081830303815290604052805190602001209450600284612a6691906140b4565b93505050600181612a77919061408b565b90506129bc565b5090949350505050565b60008160000151826020015183604001518460600151604051602001612ad3949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b612af86139f3565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b6020808301919091528251908301516040840151606085015161074893859390929091608060016133bb565b612b706139f3565b612b786139d4565b6000612b83846134d4565b9050612bb1816040612b986104006004614074565b612ba291906140b4565b612bac9088614074565b6134f0565b60005b6080811015612c41576040808320835282206020830152868160808110612bdd57612bdd6141ef565b6020020151825118838260808110612bf757612bf76141ef565b6020020152866001820160808110612c1157612c116141ef565b6020020151826001602002015118838260010160808110612c3457612c346141ef565b6020020152600201612bb4565b50612cd4816040612c556104006004614074565b612c5f91906140b4565b600188612c6f6104006010614074565b612c7d610400610100614074565b612c8791906140b4565b612c946104006004614074565b612ca2610400610100614074565b612cac91906140b4565b612cb691906140b4565b612cc09190614048565b612cca9190614048565b612bac9190614074565b612cdd816134d4565b925050935093915050565b600080610100612cfa61040082614074565b612d0491906140b4565b8460200151612d1391906140b4565b612d1d9084614122565b60408501516060860151602087015192935083161790610100612d4261040082614074565b612d4c91906140b4565b612d5f906001600160401b038416614074565b1115612dad5760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610828565b610100612dbc61040082614074565b612dc691906140b4565b612dd9906001600160401b038316614074565b8551612de5919061408b565b95945050505050565b6000612df86139f3565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151612e5e91839188919060006080816133bb565b9050612e68613a11565b608060006020612e7b6104006004614074565b612e8591906140b4565b612e90906020614074565b612e9b90608061408b565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c101615612f3a5760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b03612f2057600182535b60408660d58a6009600019fa612f3557600198505b612ecf565b50505050505050508015612f9c5760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b6064820152608401610828565b5050506020015195945050505050565b60006115448383613511565b600080612fc36123c2565b905080600a0154600003612fda5760001991505090565b600a810154612feb906000196140b4565b91505090565b606081015160009019815b6001600160401b0382161561302c57613016600183614136565b909116908061302481614205565b915050612ffc565b600160ff9091161b9392505050565b60008061010061304d61040080614074565b61305990610400614074565b61306590610400614074565b613070906008614074565b61307a91906140b4565b831161308657826130c2565b61010061309561040080614074565b6130a190610400614074565b6130ad90610400614074565b6130b8906008614074565b6130c291906140b4565b905060006130cf85612ff1565b6130d990856140b4565b905060006101006130ec61040080614074565b6130f890610400614074565b61310490610400614074565b61310f906008614074565b61311991906140b4565b82116131255781613161565b61010061313461040080614074565b61314090610400614074565b61314c90610400614074565b613157906008614074565b61316191906140b4565b905061317181604085901b6140b4565b9695505050505050565b60006131856123c2565b6000928352601001602052506040902080546001600160a01b03191633179055565b6000610748825490565b60006131bb6123c2565b6009019190915550565b6131cf8282611b3a565b6124f25760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610828565b600060008051602061427b8339815191526132198484611b3a565b613299576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561324f3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b5092915050565b6000611544836001600160a01b03841661353b565b60006132c96123c2565b90506000808260080154111561330157600060108360090154901c90506132f9818460030154856008015461358a565b91505061330b565b506001600160f01b035b6124f28161364e565b600060008051602061427b83398151915261332f8484611b3a565b15613299576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b6000611544836001600160a01b03841661374e565b60008183106133b45781611544565b5090919050565b6133c36139f3565b600c60006133d085613837565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa9050806000036134c55760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b6064820152608401610828565b50505050979650505050505050565b6134dc6139f3565b815181526020918201519181019190915290565b60005b81811015610a335760408084208452832060208401526001016134f3565b6000826000018281548110613528576135286141ef565b9060005260206000200154905092915050565b600081815260018301602052604081205461358257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610748565b506000610748565b60008383028160001985870982811083820303915050806000036135c1578382816135b7576135b761409e565b0492505050611544565b8084116135e15760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006136586123c2565b90507f000000000000000000000000000000000000000000000000000000000000000015613684575050565b6009810154600582015460109190911c90600081856136a4600183614048565b6136ae9086614074565b6136b8919061408b565b6136c291906140b4565b90506136cf836002614074565b8111156136e4576136e1836002614074565b90505b6136ef6002846140b4565b811015613704576137016002846140b4565b90505b6001600160f01b0381111561371d57506001600160f01b035b601081901b60098501556000613731612fb8565b905080856009015411156114ca5760098501819055505050505050565b60008181526001830160205260408120548015613299576000613772600183614048565b855490915060009061378690600190614048565b90508082146137eb5760008660000182815481106137a6576137a66141ef565b90600052602060002001549050808760000184815481106137c9576137c96141ef565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806137fc576137fc614224565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610748565b61383f6139f3565b6201000082101561388357600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b6401000000008210156138c357600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b03191661386b565b600160401b8210156138d85761386b8261396e565b600160801b821015613928576001600160401b038216604083901c6138fc8261396e565b6001600160c01b03191683526139118161396e565b6001600160c01b0319166020840152506139699050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610828565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b600060208284031215613a4257600080fd5b81356001600160e01b03198116811461154457600080fd5b80356001600160a01b038116811461396957600080fd5b80356001600160401b038116811461396957600080fd5b60008060408385031215613a9b57600080fd5b613aa483613a5a565b9150613ab260208401613a71565b90509250929050565b600060208284031215613acd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715613b0c57613b0c613ad4565b60405290565b60405161012081016001600160401b0381118282101715613b0c57613b0c613ad4565b6000806000838503610100811215613b4c57600080fd5b613b5585613a5a565b9350613b6360208601613a5a565b925060c0603f1982011215613b7757600080fd5b50613b80613aea565b604085013581526060850135602082015260808501356040820152613ba760a08601613a71565b606082015260c0850135608082015260e09094013560a0850152509093909250565b600060208284031215613bdb57600080fd5b61154482613a71565b60008060408385031215613bf757600080fd5b82359150613ab260208401613a5a565b600060808284031215613c1957600080fd5b604051608081018181106001600160401b0382111715613c3b57613c3b613ad4565b80604052508091508235815260208301356020820152613c5d60408401613a71565b6040820152613c6e60608401613a71565b60608201525092915050565b600082601f830112613c8b57600080fd5b6040516110008082018281106001600160401b0382111715613caf57613caf613ad4565b60405283018185821115613cc257600080fd5b845b82811015613cdc578035825260209182019101613cc4565b509195945050505050565b600082601f830112613cf857600080fd5b813560206001600160401b0380831115613d1457613d14613ad4565b8260051b604051601f19603f83011681018181108482111715613d3957613d39613ad4565b604052938452858101830193838101925087851115613d5757600080fd5b83870191505b84821015613d7657813583529183019190830190613d5d565b979650505050505050565b60006111608284031215613d9457600080fd5b613d9c613b12565b9050813581526020820135602082015260408201356040820152613dc38360608401613c07565b606082015260e082013560808201526101008083013560a083015261012083013560c0830152613df7846101408501613c7a565b60e08301526111408301356001600160401b03811115613e1657600080fd5b613e2285828601613ce7565b82840152505092915050565b600060c08284031215613e4057600080fd5b613e48613aea565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b60008060e08385031215613e9957600080fd5b82356001600160401b03811115613eaf57600080fd5b613ebb85828601613d81565b925050613ab28460208501613e2e565b600060208284031215613edd57600080fd5b81356001600160401b03811115613ef357600080fd5b611b3284828501613d81565b6110008101818360005b6080811015613f28578151835260209283019290910190600101613f09565b50505092915050565b6000806110208385031215613f4557600080fd5b82356001600160401b03811115613f5b57600080fd5b613f6785828601613d81565b925050613ab28460208501613c7a565b60008060e08385031215613f8a57600080fd5b613f948484613e2e565b9460c0939093013593505050565b60008060408385031215613fb557600080fd5b82356001600160401b03811115613fcb57600080fd5b613fd785828601613d81565b95602094909401359450505050565b60008060408385031215613ff957600080fd5b50508035926020909101359150565b6000806040838503121561401b57600080fd5b61402483613a5a565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074857610748614032565b60006020828403121561406d57600080fd5b5051919050565b808202811582820484141761074857610748614032565b8082018082111561074857610748614032565b634e487b7160e01b600052601260045260246000fd5b6000826140c3576140c361409e565b500490565b600060c082840312156140da57600080fd5b6140e2613aea565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000826141315761413161409e565b500690565b6001600160401b038281168282160390808211156132a3576132a3614032565b80516001600160801b038116811461396957600080fd5b60006040828403121561417f57600080fd5b604051604081018181106001600160401b03821117156141a1576141a1613ad4565b6040526141ad83614156565b81526141bb60208401614156565b60208201529392505050565b60408101818360005b6002811015613f285781518352602092830192909101906001016141d0565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff810361421b5761421b614032565b60010192915050565b634e487b7160e01b600052603160045260246000fdfec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000b9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122000d6a3544ea5d7ad1dc7a31309358891af54cd8add4b6f1e5546b20c55ba2fc064736f6c63430008140033", + "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061030c5760003560e01c80637eca56881161019d578063af31f914116100e9578063c10a7297116100a2578063dddc61a81161007c578063dddc61a8146106f9578063e1498cf914610701578063e282e27b14610714578063ffbc9bd01461071b57600080fd5b8063c10a7297146106cc578063ca15c873146106d3578063d547741f146106e657600080fd5b8063af31f9141461066e578063b0628ee014610681578063b15d20da14610694578063b4a93283146106a9578063b51e0397146106b1578063b776a512146106c457600080fd5b806391d1485411610156578063a827918211610130578063a827918214610619578063ad08fdfb14610621578063adaa7a0f14610634578063ae722e821461065b57600080fd5b806391d14854146105f65780639dc787a214610609578063a217fddf1461061157600080fd5b80637eca56881461058657806382975fe71461058e57806384f96bb6146105b55780638c0bca06146105c85780638f375b36146105db5780639010d07c146105e357600080fd5b806331223ba71161025c57806348f61441116102155780636e9bb60b116101ef5780636e9bb60b14610526578063704d3c961461053957806378203ab61461054c5780637bba7d611461055f57600080fd5b806348f61441146104eb57806359e7b5be146104f35780635bdca8551461051357600080fd5b806331223ba71461049a578063331f3b9c146104a2578063343aad82146104aa57806336568abe146104b257806339cd53ee146104c55780633baebb75146104d857600080fd5b806316a4be6f116102c957806328812dbf116102a357806328812dbf146103e5578063296beba7146103f85780632a02573b146104745780632f2ff15d1461048757600080fd5b806316a4be6f14610392578063228cb733146103b2578063248a9ca3146103d257600080fd5b806301ffc9a7146103115780630367e2dd14610339578063047c13f51461034f5780630c655e1f146103645780630e2410ff146103775780631600c6241461037f575b600080fd5b61032461031f366004613a30565b610723565b60405190151581526020015b60405180910390f35b61034161074e565b604051908152602001610330565b61036261035d366004613a88565b610761565b005b610362610372366004613abb565b61088e565b610341610a38565b61036261038d366004613abb565b610a4b565b61039a610aca565b6040516001600160401b039091168152602001610330565b6103ba610ae6565b6040516001600160a01b039091168152602001610330565b6103416103e0366004613abb565b610b02565b6103626103f3366004613b35565b610b24565b61040b610406366004613abb565b610d38565b60408051825180518252602080820151818401528184015183850152606080830151818501526080808401519085015260a0928301519284019290925284015160c08301529183015160e08201529101516001600160401b031661010082015261012001610330565b610362610482366004613bc9565b611051565b610362610495366004613be4565b611164565b610341611186565b610341611199565b6103ba6111ac565b6103626104c0366004613be4565b6111c5565b6103ba6104d3366004613abb565b6111f8565b6103626104e6366004613e86565b61121f565b6103416114d2565b610506610501366004613ecb565b6114e5565b6040516103309190613eff565b610362610521366004613abb565b6114f6565b610341610534366004613f31565b611538565b610362610547366004613abb565b61154b565b61034161055a366004613f77565b6115c9565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b61034161173e565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b6103626105c3366004613abb565b611751565b6103416105d6366004613fa2565b6118f8565b610341611af8565b6103ba6105f1366004613fe6565b611b0b565b610324610604366004613be4565b611b3a565b610341611b72565b610341600081565b610341611b85565b61036261062f366004613abb565b611b98565b6103247f000000000000000000000000000000000000000000000000000000000000000081565b610362610669366004613ecb565b611be6565b61036261067c366004613fa2565b612144565b61036261068f366004614008565b612170565b61034160008051602061425b83398151915281565b610341612242565b6103626106bf366004613abb565b612255565b610341612261565b600a6103ba565b6103416106e1366004613abb565b612274565b6103626106f4366004613be4565b61229a565b6103416122b6565b61036261070f366004613abb565b6122c9565b600161039a565b6103246122d2565b60006001600160e01b03198216635a05180f60e01b148061074857506107488261238d565b92915050565b60006107586123c2565b600c0154905090565b600061076b6123c2565b9050600061077a600143614048565b60408051914060208301526bffffffffffffffffffffffff193360601b16908201526001600160c01b031960c085901b166054820152605c0160408051601f1981840301815291815281516020928301206000818152601086019093529120549091506001600160a01b0316156108315760405162461bcd60e51b8152602060048201526016602482015275135a5b995c9259081a185cc81c9959da5cdd195c995960521b60448201526064015b60405180910390fd5b600081815260108301602052604080822080546001600160a01b0319166001600160a01b0388169081179091559051909183917fbfeb006f16aca8eb3d9953cf44db6b11b6f3041a313875dfa18f2e9d71bd309e9190a350505050565b60008051602061425b8339815191526108a6816123e6565b60006108b06123c2565b90506000831161090c5760405162461bcd60e51b815260206004820152602160248201527f4e756d626572206f66207375627461736b732063616e6e6f74206265207a65726044820152606f60f81b6064820152608401610828565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa158015610955573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610979919061405b565b6002820154600e83015461098e600187614048565b6109989190614074565b6109a2919061408b565b6109ad90600161408b565b10610a185760405162461bcd60e51b815260206004820152603560248201527f4e756d626572206f66207375627461736b73206d757374206265206c657373206044820152740e8d0c2dc40c4d8dec6d6e640e0cae440cae0dec6d605b1b6064820152608401610828565b600c81018390556007810154600003610a3357600b81018390555b505050565b6000610a426123c2565b600e0154905090565b60008051602061425b833981519152610a63816123e6565b610100821115610ab55760405162461bcd60e51b815260206004820152601d60248201527f746172676574206d696e6520626c6f636b206d757374203c3d203235360000006044820152606401610828565b6000610abf6123c2565b600201929092555050565b6000610ad46123c2565b600601546001600160401b0316919050565b6000610af06123c2565b600101546001600160a01b0316919050565b600090815260008051602061427b833981519152602052604090206001015490565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b0316600081158015610b695750825b90506000826001600160401b03166001148015610b855750303b155b905081158015610b93575080155b15610bb15760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610bdb57845460ff60401b1916600160401b1785555b6000610be56123c2565b9050610bf26000336123f0565b50610c0b60008051602061425b833981519152336123f0565b508651610c1a906000196140b4565b60098201557f000000000000000000000000000000000000000000000000000000000000000015610c4e5760001960098201555b6014600582015580546001600160a01b03808b166001600160a01b0319928316178355600183018054918b16919092161790556020870151600282015560408701516003820181905560608801516006830180546001600160401b0390921667ffffffffffffffff199092169190911790556080880151600b8301819055600c830155600482015560a0870151600d8201819055600e909101558315610d2e57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b5050505050505050565b604080516101408101825260006080820181815260a0830182905260c0830182905260e0830182905261010083018290526101208301829052825260208201819052918101829052606081019190915233600a14610df25760405162461bcd60e51b815260206004820152603160248201527f4f6e6c7920617574686f72697a65642063616c6c65722063616e20636f6d70756044820152701d19481ddbdc9ad95c8818dbdb9d195e1d607a1b6064820152608401610828565b6000610dfc6123c2565b905082610e445760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610828565b60008381526010820160205260409020546001600160a01b031680610eab5760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610828565b60068201546001600160401b03166060840152815460408051635a325a9f60e11b815290516001600160a01b039092169163b464b53e9160048082019260c09290919082900301816000875af1158015610f09573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f2d91906140c8565b808452600b83015460a09091015160405160009291610f59918890602001918252602082015260400190565b6040516020818303038152906040528051906020012060001c610f7c9190614122565b9050600083600d015482610f909190614074565b855160200151610fa0919061408b565b90506000846002015482610fb4919061408b565b90508143111580610fc457508043115b15610fd3575050505050919050565b855160a0015160408051602080820193909352844081830152815180820383018152606090910182528051920191909120908701526007850154865151111561102157855161102190612435565b6003850154611031906002614074565b8560080154101561104757600985015460208701525b5050505050919050565b60008051602061425b833981519152611069816123e6565b6000826001600160401b0316116110c25760405162461bcd60e51b815260206004820152601f60248201527f4d6178207368617264206e756d6265722063616e6e6f74206265207a65726f006044820152606401610828565b6110cd600183614136565b82166001600160401b03166000146111335760405162461bcd60e51b815260206004820152602360248201527f4d6178207368617264206e756d626572206d75737420626520706f776572206f60448201526233101960e91b6064820152608401610828565b600061113d6123c2565b600601805467ffffffffffffffff19166001600160401b0394909416939093179092555050565b61116d82610b02565b611176816123e6565b61118083836123f0565b50505050565b60006111906123c2565b60070154905090565b60006111a36123c2565b60020154905090565b60006111b66123c2565b546001600160a01b0316919050565b6001600160a01b03811633146111ee5760405163334bd91960e11b815260040160405180910390fd5b610a3382826124f6565b60006112026123c2565b60009283526010016020525060409020546001600160a01b031690565b60006112296123c2565b835160a0840151919250146112805760405162461bcd60e51b815260206004820152601a60248201527f496e636f6e73697374656e74206d696e696e67206469676573740000000000006044820152606401610828565b7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708260a00151036112f35760405162461bcd60e51b815260206004820152601960248201527f456d707479206469676573742063616e206e6f74206d696e65000000000000006044820152606401610828565b6003810154611303906002614074565b8160080154106113555760405162461bcd60e51b815260206004820152601c60248201527f45706f63682068617320656e6f756768207375626d697373696f6e73000000006044820152606401610828565b600061010061136661040082614074565b61137091906140b4565b61010061137f61040082614074565b61138991906140b4565b846060015161139891906140b4565b6113a29190614074565b60608501519091506113b49082612532565b815460c0850151604051630fab20e160e31b815260048101919091526000916001600160a01b031690637d590708906024016040805180830381865afa158015611402573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611426919061416d565b9050600061010061143a6104006004614074565b61144491906140b4565b8660800151611453919061408b565b90508082600001516001600160801b031610801561147e57508082602001516001600160801b031610155b6114ca5760405162461bcd60e51b815260206004820152601d60248201527f496e76616c6964207365616c656420636f6e74657874206469676573740000006044820152606401610828565b505050505050565b60006114dc6123c2565b60090154905090565b6114ed6139d4565b61074882612770565b60008051602061425b83398151915261150e816123e6565b60006115186123c2565b600481018490556007810154909150600003610a33576003019190915550565b60006115448383612815565b9392505050565b60008051602061425b833981519152611563816123e6565b600061156d6123c2565b9050600083116115bf5760405162461bcd60e51b815260206004820152601d60248201527f41646a75737420726174696f206d757374206265206e6f6e2d7a65726f0000006044820152606401610828565b6005019190915550565b6000806115d46123c2565b9050600081600b01548560a00151856040516020016115fd929190918252602082015260400190565b6040516020818303038152906040528051906020012060001c6116209190614122565b9050600082600d0154826116349190614074565b8660200151611643919061408b565b90506000836002015482611657919061408b565b90508143116116bb5760405162461bcd60e51b815260206004820152602a60248201527f4561726c696572207468616e206578706563746564207375627461736b20737460448201526930b93a10313637b1b59760b11b6064820152608401610828565b804311156117025760405162461bcd60e51b8152602060048201526014602482015273135a5b9948191958591b1a5b9948195e18d9595960621b6044820152606401610828565b60a08701516040805160208101929092528340908201526060016040516020818303038152906040528051906020012094505050505092915050565b60006117486123c2565b60040154905090565b60008051602061425b833981519152611769816123e6565b60006117736123c2565b9050600083116117c55760405162461bcd60e51b815260206004820152601f60248201527f5375627461736b20696e74657276616c2063616e6e6f74206265207a65726f006044820152606401610828565b805460408051633c1a081560e21b815290516001600160a01b039092169163f0682054916004808201926020929091908290030181865afa15801561180e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611832919061405b565b816002015484600184600c01546118499190614048565b6118539190614074565b61185d919061408b565b61186890600161408b565b106118db5760405162461bcd60e51b815260206004820152603e60248201527f4e756d626572206f66207375627461736b20696e74657276616c73206d75737460448201527f206265206c657373207468616e20626c6f636b73207065722065706f636800006064820152608401610828565b600e81018390556007810154600003610a3357600d019190915550565b604082015160009061194c5760405162461bcd60e51b815260206004820152601860248201527f4d696e65722049442063616e6e6f7420626520656d70747900000000000000006044820152606401610828565b6000604051806080016040528085604001518152602001856020015181526020018481526020016119808660600151612a88565b90529050600061198f82612af0565b905060006119a06104006010614074565b6119ae610400610100614074565b6119b891906140b4565b6119c56104006004614074565b6119d3610400610100614074565b6119dd91906140b4565b6119e791906140b4565b8660a001516119f69190614122565b9050611a006139d4565b611a086139f3565b611a178860e001518486612b68565b92509050610100611a2b6104006004614074565b611a3591906140b4565b8860a00151611a449190614074565b611a8182604051602001611a5891906141c7565b604051602081830303815290604052805190602001208a60600151612ce890919063ffffffff16565b611a8b919061408b565b886080015114611add5760405162461bcd60e51b815260206004820152601960248201527f496e636f727265637420726563616c6c20706f736974696f6e000000000000006044820152606401610828565b611aec8860a001518584612dee565b98975050505050505050565b6000611b026123c2565b600d0154905090565b600082815260008051602061423b833981519152602081905260408220611b329084612fac565b949350505050565b600091825260008051602061427b833981519152602090815260408084206001600160a01b0393909316845291905290205460ff1690565b6000611b7c6123c2565b600b0154905090565b6000611b8f6123c2565b60080154905090565b60008051602061425b833981519152611bb0816123e6565b6000611bba6123c2565b600a810184905590506000611bcd612fb8565b9050808260090154111561118057600991909101555050565b6000611bf06123c2565b6040830151909150611c3d5760405162461bcd60e51b81526020600482015260166024820152754d696e657249642063616e6e6f74206265207a65726f60501b6044820152606401610828565b60408083015160009081526010830160205220546001600160a01b031680611ca75760405162461bcd60e51b815260206004820152601b60248201527f4d696e6572496420646f6573206e6f74207265676973746572656400000000006044820152606401610828565b815460408051635a325a9f60e11b815290516000926001600160a01b03169163b464b53e9160048083019260c0929190829003018187875af1158015611cf1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d1591906140c8565b9050611d2081612435565b6000611d308286604001516115c9565b9050611d3c858361121f565b600684015460608601516001600160401b0390911690611d5b90612ff1565b1115611db85760405162461bcd60e51b815260206004820152602660248201527f457863656564696e672074686520616c6c6f776564206e756d626572206f662060448201526573686172647360d01b6064820152608401610828565b611dc06139d4565b7f000000000000000000000000000000000000000000000000000000000000000015611e69577fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a4708660c0015103611e595760405162461bcd60e51b815260206004820152601b60248201527f5365616c206469676573742063616e6e6f7420626520656d70747900000000006044820152606401610828565b611e6286612770565b9050611e70565b5060e08501515b7f000000000000000000000000000000000000000000000000000000000000000015611ef9576000611ea28783612815565b905083604001518114611ef75760405162461bcd60e51b815260206004820152601860248201527f496e636f6e73697374656e74206d65726b6c6520726f6f7400000000000000006044820152606401610828565b505b611f016139d4565b90506000611f0f87846118f8565b90506000611f2e8560600151896060015161303b90919063ffffffff16565b90506040818860090154611f4291906140b4565b901b821115611f935760405162461bcd60e51b815260206004820152601b60248201527f446f206e6f7420726561636820746172676574207175616c69747900000000006044820152606401610828565b6000828152600f8801602052604090205460ff1615611ff45760405162461bcd60e51b815260206004820152601960248201527f416e7377657220686173206265656e207375626d6974746564000000000000006044820152606401610828565b6000828152600f880160205260409020805460ff191660019081179091558701546001600160a01b031663b7a3c04c61010061203261040080614074565b61203e90610400614074565b612049906008614074565b61205391906140b4565b8a6080015161206291906140b4565b6040808c015190516001600160e01b031960e085901b16815260048101929092526001600160a01b038a1660248301526044820152606401600060405180830381600087803b1580156120b457600080fd5b505af11580156120c8573d6000803e3d6000fd5b5050506040808a0151875160088b015460808d015184519182526020820152919350917ffedd8f58059af8fd54b4394c01ea8d07cac041988be3b5a822fb779f9c8de3a4910160405180910390a3845160078801556008870180546001919060009061213590849061408b565b90915550505050505050505050565b600061214f83612770565b905061215b8382612815565b506121646139d4565b905061118083836118f8565b600061217a6123c2565b60008381526010820160205260409020549091506001600160a01b031633146121e55760405162461bcd60e51b815260206004820152601b60248201527f53656e64657220646f6573206e6f74206f776e206d696e6572496400000000006044820152606401610828565b600082815260108201602052604080822080546001600160a01b0319166001600160a01b03871690811790915590519091339185917f9a26a8e7fd42c501b452c02016def8048e3ea28c2bf15127a9b5e2029d989bf191a4505050565b600061224c6123c2565b600a0154905090565b61225e8161317b565b50565b600061226b6123c2565b60030154905090565b600081815260008051602061423b833981519152602081905260408220611544906131a7565b6122a382610b02565b6122ac816123e6565b61118083836124f6565b60006122c06123c2565b60050154905090565b61225e816131b1565b6000806122dd6123c2565b905060008160000160009054906101000a90046001600160a01b03166001600160a01b031663b464b53e6040518163ffffffff1660e01b815260040160c0604051808303816000875af1158015612338573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061235c91906140c8565b90508160070154816000015111806123865750600382015461237f906002614074565b8260080154105b9250505090565b60006001600160e01b03198216637965db0b60e01b148061074857506301ffc9a760e01b6001600160e01b0319831614610748565b7f11daa6f94f95391c200e8721026efe26699a21dbe0ead47ee9562dd85a6e300090565b61225e81336131c5565b600060008051602061423b8339815191528161240c85856131fe565b90508015611b3257600085815260208390526040902061242c90856132aa565b50949350505050565b600061243f6123c2565b90508060070154826000015110156124a75760405162461bcd60e51b815260206004820152602560248201527f496e7465726e616c206572726f723a2065706f6368206e756d62657220646563604482015264726561736560d81b6064820152608401610828565b600781015482511180156124bf575060008160070154115b156124f2576124cc6132bf565b6000600882015560048101546003820155600c810154600b820155600e810154600d8201555b5050565b600060008051602061423b833981519152816125128585613314565b90508015611b3257600085815260208390526040902061242c9085613390565b61010061254161040080614074565b61254d90610400614074565b612558906008614074565b61256291906140b4565b825161256e9190614122565b156125bb5760405162461bcd60e51b815260206004820152601d60248201527f537461727420706f736974696f6e206973206e6f7420616c69676e65640000006044820152606401610828565b6020820151825182916125cd9161408b565b11156126135760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e6765206f766572666c6f7760581b6044820152606401610828565b600061261e83612ff1565b61010061262d61040080614074565b61263990610400614074565b61264590610400614074565b612650906008614074565b61265a91906140b4565b6126649190614074565b905080836020015111156126b25760405162461bcd60e51b81526020600482015260156024820152744d696e696e672072616e676520746f6f206c6f6e6760581b6044820152606401610828565b60006126be83836133a5565b9050808460200151101561270d5760405162461bcd60e51b8152602060048201526016602482015275135a5b9a5b99c81c985b99d9481d1bdbc81cda1bdc9d60521b6044820152606401610828565b83606001518460400151166001600160401b03166000146111805760405162461bcd60e51b815260206004820152601a60248201527f4d61736b656420626974732073686f756c64206265207a65726f0000000000006044820152606401610828565b6127786139d4565b60408083015160c0840151608085015192516127a893906020019283526020830191909152604082015260600190565b60408051808303601f19018152919052805160209182012060e08401805151909118835251906000906127de6104006004614074565b6127e891906140b4565b905081836020600184030281015b80821015611047576020808420938101805190941892019182526127f6565b6000805b60206128286104006004614074565b61283291906140b4565b811015612880576101006020820284012080848360808110612856576128566141ef565b60200201818152505050602061010061286f91906140b4565b612879908261408b565b9050612819565b50600061289060206101006140b4565b90505b60206128a26104006004614074565b6128ac91906140b4565b81101561297f5760005b60206128c56104006004614074565b6128cf91906140b4565b8110156129765760008482608081106128ea576128ea6141ef565b602002015190506000856128fe858561408b565b6080811061290e5761290e6141ef565b602002015190508181604051602001612931929190918252602082015260400190565b60405160208183030381529060405280519060200120868460808110612959576129596141ef565b60200201525061296f9050600183901b8261408b565b90506128b6565b5060011b612893565b50815161298a6139d4565b9250600061010061299e6104006004614074565b6129a891906140b4565b85608001516129b791906140b4565b905060005b85610100015151811015612a7e576000806129d8600285614122565b600003612a085784915087610100015183815181106129f9576129f96141ef565b60200260200101519050612a2d565b8761010001518381518110612a1f57612a1f6141ef565b602002602001015191508490505b6040805160208101849052908101829052606001604051602081830303815290604052805190602001209450600284612a6691906140b4565b93505050600181612a77919061408b565b90506129bc565b5090949350505050565b60008160000151826020015183604001518460600151604051602001612ad3949392919093845260208401929092526001600160401b03908116604084015216606082015260800190565b604051602081830303815290604052805190602001209050919050565b612af86139f3565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b6020808301919091528251908301516040840151606085015161074893859390929091608060016133bb565b612b706139f3565b612b786139d4565b6000612b83846134d4565b9050612bb1816040612b986104006004614074565b612ba291906140b4565b612bac9088614074565b6134f0565b60005b6080811015612c41576040808320835282206020830152868160808110612bdd57612bdd6141ef565b6020020151825118838260808110612bf757612bf76141ef565b6020020152866001820160808110612c1157612c116141ef565b6020020151826001602002015118838260010160808110612c3457612c346141ef565b6020020152600201612bb4565b50612cd4816040612c556104006004614074565b612c5f91906140b4565b600188612c6f6104006010614074565b612c7d610400610100614074565b612c8791906140b4565b612c946104006004614074565b612ca2610400610100614074565b612cac91906140b4565b612cb691906140b4565b612cc09190614048565b612cca9190614048565b612bac9190614074565b612cdd816134d4565b925050935093915050565b600080610100612cfa61040082614074565b612d0491906140b4565b8460200151612d1391906140b4565b612d1d9084614122565b60408501516060860151602087015192935083161790610100612d4261040082614074565b612d4c91906140b4565b612d5f906001600160401b038416614074565b1115612dad5760405162461bcd60e51b815260206004820152601c60248201527f526563616c6c20706f736974696f6e206f7574206f6620626f756e64000000006044820152606401610828565b610100612dbc61040082614074565b612dc691906140b4565b612dd9906001600160401b038316614074565b8551612de5919061408b565b95945050505050565b6000612df86139f3565b7f48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa581527fd182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b602080830191909152845190850151612e5e91839188919060006080816133bb565b9050612e68613a11565b608060006020612e7b6104006004614074565b612e8591906140b4565b612e90906020614074565b612e9b90608061408b565b90506000601c8401601f8501602086016060870160e0880160e1890160f08a018d600c87538c51865260208d015160208701525b88198a8c101615612f3a5760808b019a5060ff8b1684538a60081c835380518552602081015160208601526040810151604086015260608101516060860152608081019050898b03612f2057600182535b60408660d58a6009600019fa612f3557600198505b612ecf565b50505050505050508015612f9c5760405162461bcd60e51b815260206004820152602360248201527f626c616b65326220696e7465726e616c206572726f7220617420506f524120686044820152620c2e6d60eb1b6064820152608401610828565b5050506020015195945050505050565b60006115448383613511565b600080612fc36123c2565b905080600a0154600003612fda5760001991505090565b600a810154612feb906000196140b4565b91505090565b606081015160009019815b6001600160401b0382161561302c57613016600183614136565b909116908061302481614205565b915050612ffc565b600160ff9091161b9392505050565b60008061010061304d61040080614074565b61305990610400614074565b61306590610400614074565b613070906008614074565b61307a91906140b4565b831161308657826130c2565b61010061309561040080614074565b6130a190610400614074565b6130ad90610400614074565b6130b8906008614074565b6130c291906140b4565b905060006130cf85612ff1565b6130d990856140b4565b905060006101006130ec61040080614074565b6130f890610400614074565b61310490610400614074565b61310f906008614074565b61311991906140b4565b82116131255781613161565b61010061313461040080614074565b61314090610400614074565b61314c90610400614074565b613157906008614074565b61316191906140b4565b905061317181604085901b6140b4565b9695505050505050565b60006131856123c2565b6000928352601001602052506040902080546001600160a01b03191633179055565b6000610748825490565b60006131bb6123c2565b6009019190915550565b6131cf8282611b3a565b6124f25760405163e2517d3f60e01b81526001600160a01b038216600482015260248101839052604401610828565b600060008051602061427b8339815191526132198484611b3a565b613299576000848152602082815260408083206001600160a01b03871684529091529020805460ff1916600117905561324f3390565b6001600160a01b0316836001600160a01b0316857f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a46001915050610748565b6000915050610748565b5092915050565b6000611544836001600160a01b03841661353b565b60006132c96123c2565b90506000808260080154111561330157600060108360090154901c90506132f9818460030154856008015461358a565b91505061330b565b506001600160f01b035b6124f28161364e565b600060008051602061427b83398151915261332f8484611b3a565b15613299576000848152602082815260408083206001600160a01b0387168085529252808320805460ff1916905551339287917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a46001915050610748565b6000611544836001600160a01b03841661374e565b60008183106133b45781611544565b5090919050565b6133c36139f3565b600c60006133d085613837565b8a516020808d0151835184830151604080516001600160e01b031960e08b901b168187015260248101969096526044860193909352606485018f9052608485018e905260a485018d905260c485018c90526001600160c01b031991821660e48601521660ec84015287151560f81b60f4840152805160d58185038101825260f59094018252939450600092909187919085016009600019fa9050806000036134c55760405162461bcd60e51b815260206004820152602260248201527f626c616b65326220696e7465726e616c206572726f7220617420626c616b6532604482015261312360f11b6064820152608401610828565b50505050979650505050505050565b6134dc6139f3565b815181526020918201519181019190915290565b60005b81811015610a335760408084208452832060208401526001016134f3565b6000826000018281548110613528576135286141ef565b9060005260206000200154905092915050565b600081815260018301602052604081205461358257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610748565b506000610748565b60008383028160001985870982811083820303915050806000036135c1578382816135b7576135b761409e565b0492505050611544565b8084116135e15760405163227bc15360e01b815260040160405180910390fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a02909103029181900381900460010186841190950394909402919094039290920491909117919091029150509392505050565b60006136586123c2565b90507f000000000000000000000000000000000000000000000000000000000000000015613684575050565b6009810154600582015460109190911c90600081856136a4600183614048565b6136ae9086614074565b6136b8919061408b565b6136c291906140b4565b90506136cf836002614074565b8111156136e4576136e1836002614074565b90505b6136ef6002846140b4565b811015613704576137016002846140b4565b90505b6001600160f01b0381111561371d57506001600160f01b035b601081901b60098501556000613731612fb8565b905080856009015411156114ca5760098501819055505050505050565b60008181526001830160205260408120548015613299576000613772600183614048565b855490915060009061378690600190614048565b90508082146137eb5760008660000182815481106137a6576137a66141ef565b90600052602060002001549050808760000184815481106137c9576137c96141ef565b6000918252602080832090910192909255918252600188019052604090208390555b85548690806137fc576137fc614224565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610748565b61383f6139f3565b6201000082101561388357600882811c66ffffffffffffff169083901b67ffffffffffffff00161760f01b5b6001600160c01b031916815260006020820152919050565b6401000000008210156138c357600882811b63ff00ff001662ff00ff9184901c9190911617601081811b91901c1760e01b6001600160e01b03191661386b565b600160401b8210156138d85761386b8261396e565b600160801b821015613928576001600160401b038216604083901c6138fc8261396e565b6001600160c01b03191683526139118161396e565b6001600160c01b0319166020840152506139699050565b60405162461bcd60e51b8152602060048201526016602482015275626c616b65326220696e70757420746f6f206c6f6e6760501b6044820152606401610828565b919050565b65ff000000ff00600882811b91821664ff000000ff9390911c92831617601090811b67ff000000ff0000009290921666ff000000ff0000939093169290921790911c17602081811b6bffffffffffffffff000000001691901c63ffffffff161760c01b90565b6040518061100001604052806080906020820280368337509192915050565b60405180604001604052806002906020820280368337509192915050565b6040518061010001604052806008906020820280368337509192915050565b600060208284031215613a4257600080fd5b81356001600160e01b03198116811461154457600080fd5b80356001600160a01b038116811461396957600080fd5b80356001600160401b038116811461396957600080fd5b60008060408385031215613a9b57600080fd5b613aa483613a5a565b9150613ab260208401613a71565b90509250929050565b600060208284031215613acd57600080fd5b5035919050565b634e487b7160e01b600052604160045260246000fd5b60405160c081016001600160401b0381118282101715613b0c57613b0c613ad4565b60405290565b60405161012081016001600160401b0381118282101715613b0c57613b0c613ad4565b6000806000838503610100811215613b4c57600080fd5b613b5585613a5a565b9350613b6360208601613a5a565b925060c0603f1982011215613b7757600080fd5b50613b80613aea565b604085013581526060850135602082015260808501356040820152613ba760a08601613a71565b606082015260c0850135608082015260e09094013560a0850152509093909250565b600060208284031215613bdb57600080fd5b61154482613a71565b60008060408385031215613bf757600080fd5b82359150613ab260208401613a5a565b600060808284031215613c1957600080fd5b604051608081018181106001600160401b0382111715613c3b57613c3b613ad4565b80604052508091508235815260208301356020820152613c5d60408401613a71565b6040820152613c6e60608401613a71565b60608201525092915050565b600082601f830112613c8b57600080fd5b6040516110008082018281106001600160401b0382111715613caf57613caf613ad4565b60405283018185821115613cc257600080fd5b845b82811015613cdc578035825260209182019101613cc4565b509195945050505050565b600082601f830112613cf857600080fd5b813560206001600160401b0380831115613d1457613d14613ad4565b8260051b604051601f19603f83011681018181108482111715613d3957613d39613ad4565b604052938452858101830193838101925087851115613d5757600080fd5b83870191505b84821015613d7657813583529183019190830190613d5d565b979650505050505050565b60006111608284031215613d9457600080fd5b613d9c613b12565b9050813581526020820135602082015260408201356040820152613dc38360608401613c07565b606082015260e082013560808201526101008083013560a083015261012083013560c0830152613df7846101408501613c7a565b60e08301526111408301356001600160401b03811115613e1657600080fd5b613e2285828601613ce7565b82840152505092915050565b600060c08284031215613e4057600080fd5b613e48613aea565b9050813581526020820135602082015260408201356040820152606082013560608201526080820135608082015260a082013560a082015292915050565b60008060e08385031215613e9957600080fd5b82356001600160401b03811115613eaf57600080fd5b613ebb85828601613d81565b925050613ab28460208501613e2e565b600060208284031215613edd57600080fd5b81356001600160401b03811115613ef357600080fd5b611b3284828501613d81565b6110008101818360005b6080811015613f28578151835260209283019290910190600101613f09565b50505092915050565b6000806110208385031215613f4557600080fd5b82356001600160401b03811115613f5b57600080fd5b613f6785828601613d81565b925050613ab28460208501613c7a565b60008060e08385031215613f8a57600080fd5b613f948484613e2e565b9460c0939093013593505050565b60008060408385031215613fb557600080fd5b82356001600160401b03811115613fcb57600080fd5b613fd785828601613d81565b95602094909401359450505050565b60008060408385031215613ff957600080fd5b50508035926020909101359150565b6000806040838503121561401b57600080fd5b61402483613a5a565b946020939093013593505050565b634e487b7160e01b600052601160045260246000fd5b8181038181111561074857610748614032565b60006020828403121561406d57600080fd5b5051919050565b808202811582820484141761074857610748614032565b8082018082111561074857610748614032565b634e487b7160e01b600052601260045260246000fd5b6000826140c3576140c361409e565b500490565b600060c082840312156140da57600080fd5b6140e2613aea565b825181526020830151602082015260408301516040820152606083015160608201526080830151608082015260a083015160a08201528091505092915050565b6000826141315761413161409e565b500690565b6001600160401b038281168282160390808211156132a3576132a3614032565b80516001600160801b038116811461396957600080fd5b60006040828403121561417f57600080fd5b604051604081018181106001600160401b03821117156141a1576141a1613ad4565b6040526141ad83614156565b81526141bb60208401614156565b60208201529392505050565b60408101818360005b6002811015613f285781518352602092830192909101906001016141d0565b634e487b7160e01b600052603260045260246000fd5b600060ff821660ff810361421b5761421b614032565b60010192915050565b634e487b7160e01b600052603160045260246000fdfec1f6fe24621ce81ec5827caf0253cadb74709b061630e6b55e82371705932000b9d69e0ca90be54a40811e436234a7f7908b87ff2bec27e64f878b166da8e8e502dd7bc7dec4dceedda775e58dd541e08a116c6c53815c0bd028192f7b626800a264697066735822122000d6a3544ea5d7ad1dc7a31309358891af54cd8add4b6f1e5546b20c55ba2fc064736f6c63430008140033", "linkReferences": {}, "deployedLinkReferences": {} } diff --git a/tests/cache_test.py b/tests/cache_test.py index 9d40ced6..69e318fe 100755 --- a/tests/cache_test.py +++ b/tests/cache_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, data_to_segments from utility.utils import wait_until @@ -10,7 +11,7 @@ def run_test(self): client = self.nodes[0] chunk_data = b"\x01" * 256 * 1025 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) segments = data_to_segments(chunk_data) client.zgs_upload_segment(segments[0]) @@ -22,7 +23,10 @@ def run_test(self): and client.zgs_get_file_info(data_root)["uploadedSegNum"] == 1 ) client.zgs_upload_segment(segments[1]) - wait_until(lambda: client.zgs_get_file_info(data_root)["finalized"]) + wait_until( + lambda: client.zgs_get_file_info(data_root)["finalized"], + timeout=180 + ) if __name__ == "__main__": diff --git a/tests/cli_submission_test.py b/tests/cli_submission_test.py index 8212414c..88b10da6 100755 --- a/tests/cli_submission_test.py +++ b/tests/cli_submission_test.py @@ -52,7 +52,6 @@ def __test_upload_file_with_cli(self, size, submission_index, rand_data=True): root = self._upload_file_use_cli( self.blockchain_nodes[0].rpc_url, - self.contract.address(), GENESIS_ACCOUNT.key, self.nodes[node_idx].rpc_url, file_to_upload, diff --git a/tests/config/cosmos-genesis.json b/tests/config/cosmos-genesis.json index 43b63b38..e35a89e8 100644 --- a/tests/config/cosmos-genesis.json +++ b/tests/config/cosmos-genesis.json @@ -1,7 +1,7 @@ { "app_name": "0gchaind", "app_version": "v0.2.0-alpha.4-892-g6b920eb40", - "genesis_time": "2026-01-20T14:50:46.697383Z", + "genesis_time": "2026-01-22T08:49:21.946878Z", "chain_id": "0gchaind-local", "initial_height": 1, "app_hash": null, diff --git a/tests/config/spec.toml b/tests/config/spec.toml index f9d7d363..55da7128 100644 --- a/tests/config/spec.toml +++ b/tests/config/spec.toml @@ -29,7 +29,7 @@ deposit-contract-address = "0x4242424242424242424242424242424242424242" max-deposits-per-block = 16 deposit-eth1-chain-id = 16601 eth1-follow-distance = 1 -target-seconds-per-eth1-block = 2 +target-seconds-per-eth1-block = 1 # Fork-related values genesis-time = 0 diff --git a/tests/config/zgs/network/enr.dat b/tests/config/zgs/network/enr.dat index 88a7d6f6..7d6d978e 100644 --- a/tests/config/zgs/network/enr.dat +++ b/tests/config/zgs/network/enr.dat @@ -1 +1 @@ -enr:-Ly4QM3rmg1s_cxxIWF6nuB1YrxFfUTmsCU4TsAK6-NXdnR9X9QuKHQLdY3qM3b9XrHG5JdjNCrolTGHItrDf4HDgswDgmlkgnY0gmlwhH8AAAGQbmV0d29ya19pZGVudGl0eZ_ZQAAAAAAAADPyz8cpvYcPpUtQMmYOBrTPKn-UAAQAiXNlY3AyNTZrMaEDeDdgnDgLPkxNxB39jKb9f1Na30t6R9vVolpTk5zu-hODdGNwgml4g3VkcIJpeA \ No newline at end of file +enr:-Ly4QC6XTSmoSGQn9CIK6MV1LdzrAc6KUdOedPD62nIIFncUMDQaJoTLEk9H4l_6lVTPnRwwoY8ykNtdKFgkI1RFdvgGgmlkgnY0gmlwhH8AAAGQbmV0d29ya19pZGVudGl0eZ_ZQAAAAAAAADPyz8cpvYcPpUtQMmYOBrTPKn-UAAQAiXNlY3AyNTZrMaEDeDdgnDgLPkxNxB39jKb9f1Na30t6R9vVolpTk5zu-hODdGNwgml4g3VkcIJpeA \ No newline at end of file diff --git a/tests/crash_test.py b/tests/crash_test.py index a4846450..e2d50720 100755 --- a/tests/crash_test.py +++ b/tests/crash_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, submit_data from utility.utils import wait_until @@ -13,7 +14,7 @@ def setup_params(self): def run_test(self): # 1. all nodes are running chunk_data = b"\x01" * 256 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 1) wait_until(lambda: self.nodes[0].zgs_get_file_info(data_root) is not None) @@ -37,7 +38,7 @@ def run_test(self): self.nodes[i].stop(kill=True) chunk_data = b"\x02" * 256 * 1024 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 2) wait_until(lambda: self.nodes[0].zgs_get_file_info(data_root) is not None) @@ -72,7 +73,7 @@ def run_test(self): self.nodes[0].wait_for_rpc_connection() chunk_data = b"\x03" * 256 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 3) wait_until(lambda: self.nodes[0].zgs_get_file_info(data_root) is not None) @@ -98,7 +99,7 @@ def run_test(self): self.nodes[0].wait_for_rpc_connection() chunk_data = b"\x04" * 256 * 1561 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 4) wait_until(lambda: self.nodes[0].zgs_get_file_info(data_root) is not None) @@ -107,7 +108,7 @@ def run_test(self): self.nodes[i].stop(kill=True) chunk_data1 = b"\x05" * 256 - submissions1, data_root1 = create_submission(chunk_data1) + submissions1, data_root1 = create_submission(chunk_data1, TX_PARAMS['from']) self.contract.submit(submissions1) wait_until(lambda: self.contract.num_submissions() == 5) wait_until(lambda: self.nodes[0].zgs_get_file_info(data_root1) is not None) diff --git a/tests/example_test.py b/tests/example_test.py index 19ff56c2..addaf0e2 100755 --- a/tests/example_test.py +++ b/tests/example_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, submit_data from utility.utils import wait_until @@ -10,7 +11,7 @@ def run_test(self): client = self.nodes[0] chunk_data = b"\x02" * 5253123 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) diff --git a/tests/fuzz_test.py b/tests/fuzz_test.py index c1fefa47..29cc388f 100644 --- a/tests/fuzz_test.py +++ b/tests/fuzz_test.py @@ -31,13 +31,14 @@ def run_chunk_size(sizes, nodes, contract, log): log.info("submission %s, data size: %s", i, v) chunk_data = random.randbytes(v) - submissions, data_root = create_submission(chunk_data) account_lock.acquire() - account_idx = random.randint(0, len(accounts) - 1) - contract.submit(submissions, tx_prarams=accounts[account_idx]) + account = random.choice(accounts) account_lock.release() + submissions, data_root = create_submission(chunk_data, account['from']) + contract.submit(submissions, tx_prarams=account) + lock.acquire() client_idx = random.randint(0, len(nodes_index) - 1) idx = nodes_index[client_idx] diff --git a/tests/long_time_mine_test_local.py b/tests/long_time_mine_test_local.py index 744bd75a..1a1db8f0 100755 --- a/tests/long_time_mine_test_local.py +++ b/tests/long_time_mine_test_local.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 from test_framework.test_framework import TestFramework -from config.node_config import MINER_ID, GENESIS_PRIV_KEY +from config.node_config import MINER_ID, GENESIS_PRIV_KEY, TX_PARAMS from utility.submission import create_submission, submit_data from utility.utils import wait_until @@ -22,7 +22,7 @@ def submit_data(self, item, size): submissions_before = self.contract.num_submissions() client = self.nodes[0] chunk_data = item * 256 * size - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == submissions_before + 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) diff --git a/tests/mine_test.py b/tests/mine_test.py index e4bff480..83141954 100755 --- a/tests/mine_test.py +++ b/tests/mine_test.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 from test_framework.test_framework import TestFramework -from config.node_config import GENESIS_PRIV_KEY +from config.node_config import GENESIS_PRIV_KEY, TX_PARAMS from utility.submission import create_submission, submit_data from utility.utils import wait_until, estimate_st_performance from test_framework.blockchain_node import BlockChainNodeType @@ -13,7 +13,7 @@ def setup_params(self): self.zgs_node_configs[0] = { "miner_key": GENESIS_PRIV_KEY, } - self.mine_period = int(45 / self.block_time) + self.mine_period = 60 self.launch_wait_seconds = 15 self.log.info( "Contract Info: Est. block time %.2f, Mine period %d", @@ -25,7 +25,7 @@ def submit_data(self, item, size): submissions_before = self.contract.num_submissions() client = self.nodes[0] chunk_data = item * 256 * size - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == submissions_before + 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) @@ -47,10 +47,7 @@ def run_test(self): first_block + self.mine_period, ) wait_until(lambda: self.contract.epoch() >= 1, timeout=180) - - quality = int(2**256 / 100 / estimate_st_performance()) - self.mine_contract.set_quality(quality) - + self.log.info("Submit the first data chunk") self.submit_data(b"\x11", 2000) diff --git a/tests/mine_with_market_test.py b/tests/mine_with_market_test.py index fad64e86..ee12c46e 100755 --- a/tests/mine_with_market_test.py +++ b/tests/mine_with_market_test.py @@ -1,6 +1,6 @@ #!/usr/bin/env python3 from test_framework.test_framework import TestFramework -from config.node_config import MINER_ID, GENESIS_PRIV_KEY +from config.node_config import MINER_ID, GENESIS_PRIV_KEY, TX_PARAMS from utility.submission import create_submission, submit_data from utility.utils import ( wait_until, @@ -23,10 +23,10 @@ def setup_params(self): self.zgs_node_configs[0] = { "db_max_num_sectors": 2**30, "miner_key": GENESIS_PRIV_KEY, - "shard_position": "3 / 32", + "shard_position": "3 / 256", } self.enable_market = True - self.mine_period = int(45 / self.block_time) + self.mine_period = 60 self.launch_wait_seconds = 15 self.log.info( "Contract Info: Est. block time %.2f, Mine period %d", @@ -38,7 +38,7 @@ def submit_data(self, item, size, no_submit=False): submissions_before = self.contract.num_submissions() client = self.nodes[0] chunk_data = item * 256 * size - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) value = int(size * PRICE_PER_SECTOR * 1.1) self.contract.submit(submissions, tx_prarams={"value": value}) wait_until(lambda: self.contract.num_submissions() == submissions_before + 1) @@ -54,9 +54,6 @@ def run_test(self): self.log.info("flow address: %s", self.contract.address()) self.log.info("mine address: %s", self.mine_contract.address()) - difficulty = int(2**256 / 5) - self.mine_contract.set_quality(difficulty) - SECTORS_PER_PRICING = int(8 * (2**30) / 256) first_block = self.contract.first_block() diff --git a/tests/node_cache_test.py b/tests/node_cache_test.py index 354cc01e..dca08824 100755 --- a/tests/node_cache_test.py +++ b/tests/node_cache_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, submit_data from utility.utils import wait_until @@ -15,7 +16,7 @@ def run_test(self): client = self.nodes[0] chunk_data = b"\x02" * 256 * 1024 * 1024 * 3 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) @@ -29,7 +30,7 @@ def run_test(self): self.nodes[0].wait_for_rpc_connection() chunk_data = b"\x03" * 256 * (1024 * 765 + 5) - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 2) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) diff --git a/tests/parallel_submission_test.py b/tests/parallel_submission_test.py index 3ad254fd..e47349af 100644 --- a/tests/parallel_submission_test.py +++ b/tests/parallel_submission_test.py @@ -3,6 +3,7 @@ import random import threading +from config.node_config import TX_PARAMS from utility.submission import create_submission, submit_data from utility.utils import ( wait_until, @@ -51,8 +52,8 @@ def generate_data(self, size, num): res = [] for _ in range(num): chunk_data = random.randbytes(size) - submission = create_submission(chunk_data) - res.append((submission[0], submission[1], chunk_data)) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) + res.append((submissions, data_root, chunk_data)) return res diff --git a/tests/partial_submission_test.py b/tests/partial_submission_test.py index 32fa70a2..dbe54823 100755 --- a/tests/partial_submission_test.py +++ b/tests/partial_submission_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, data_to_segments from utility.utils import wait_until @@ -10,7 +11,7 @@ def run_test(self): client = self.nodes[0] chunk_data = b"\x01" * 256 * 1025 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) diff --git a/tests/pruner_test.py b/tests/pruner_test.py index 9692bcd5..099c1235 100755 --- a/tests/pruner_test.py +++ b/tests/pruner_test.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import time +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from mine_with_market_test import PRICE_PER_SECTOR from utility.submission import create_submission, submit_data @@ -33,7 +34,7 @@ def run_test(self): chunk_data = b"\x02" * 16 * 256 * 1024 # chunk_data = b"\x02" * 5 * 1024 * 1024 * 1024 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit( submissions, tx_prarams={"value": int(len(chunk_data) / 256 * PRICE_PER_SECTOR * 1.1)}, diff --git a/tests/random_test.py b/tests/random_test.py index 50f9555a..fb492da3 100755 --- a/tests/random_test.py +++ b/tests/random_test.py @@ -2,6 +2,7 @@ import random +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission from utility.submission import submit_data @@ -39,7 +40,7 @@ def run_test(self): client = self.nodes[chosen_node] chunk_data = random.randbytes(size) - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == i + 1) wait_until( diff --git a/tests/recovery_test.py b/tests/recovery_test.py index fe23c44e..2121b98f 100755 --- a/tests/recovery_test.py +++ b/tests/recovery_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, submit_data from utility.utils import wait_until @@ -10,7 +11,7 @@ def run_test(self): client = self.nodes[0] chunk_data = b"\x01" * 256 * 5 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) @@ -21,7 +22,7 @@ def run_test(self): self.stop_storage_node(0) chunk_data = b"\x02" * 256 * 7 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 2) self.start_storage_node(0) @@ -38,7 +39,7 @@ def run_test(self): # Test with larger data. chunk_data = b"\x03" * 256 * 1024 * 19 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 3) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) diff --git a/tests/root_consistency_test.py b/tests/root_consistency_test.py index 0a380d49..684cf39b 100755 --- a/tests/root_consistency_test.py +++ b/tests/root_consistency_test.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, submit_data from utility.utils import wait_until, assert_equal @@ -13,7 +14,7 @@ def submit_data(self, item, size): submissions_before = self.contract.num_submissions() client = self.nodes[0] chunk_data = item * 256 * size - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == submissions_before + 1) wait_until(lambda: client.zgs_get_file_info(data_root) is not None) diff --git a/tests/rpc_test.py b/tests/rpc_test.py index f47979b8..70d4143b 100755 --- a/tests/rpc_test.py +++ b/tests/rpc_test.py @@ -2,7 +2,7 @@ import tempfile -from config.node_config import GENESIS_ACCOUNT +from config.node_config import GENESIS_ACCOUNT, TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import create_submission, submit_data from utility.utils import ( @@ -21,7 +21,7 @@ def run_test(self): client2 = self.nodes[1] chunk_data = b"\x00" * 256 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) wait_until(lambda: self.contract.num_submissions() == 1) @@ -62,7 +62,6 @@ def __test_upload_file_with_cli(self, client1): root = self._upload_file_use_cli( self.blockchain_nodes[0].rpc_url, - self.contract.address(), GENESIS_ACCOUNT.key, self.nodes[0].rpc_url, file_to_upload, diff --git a/tests/same_root_test.py b/tests/same_root_test.py index f75cbbfb..6d5b03f4 100755 --- a/tests/same_root_test.py +++ b/tests/same_root_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import random +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import submit_data from utility.submission import create_submission @@ -48,7 +49,7 @@ def run_test(self): next_tx_seq += 1 def submit_tx_for_data(self, chunk_data, tx_seq, data_finalized=False, node_idx=0): - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.log.info("data root: %s, submissions: %s", data_root, submissions) self.contract.submit(submissions) @@ -62,7 +63,7 @@ def submit_tx_for_data(self, chunk_data, tx_seq, data_finalized=False, node_idx= ) def submit_data(self, chunk_data, node_idx=0): - _, data_root = create_submission(chunk_data) + _, data_root = create_submission(chunk_data, TX_PARAMS['from']) client = self.nodes[node_idx] segments = submit_data(client, chunk_data) self.log.debug( diff --git a/tests/shard_submission_test.py b/tests/shard_submission_test.py index 00d92b23..27d9fea0 100644 --- a/tests/shard_submission_test.py +++ b/tests/shard_submission_test.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 import random +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import submit_data from utility.submission import create_submission @@ -59,7 +60,7 @@ def submission_data(self, size, submission_index, rand_data=True): self.log.info("file size: %d", size) chunk_data = random.randbytes(size) if rand_data else b"\x10" * size - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.log.info("data root: %s, submissions: %s", data_root, submissions) self.contract.submit(submissions) diff --git a/tests/shard_sync_test.py b/tests/shard_sync_test.py index 3648e094..c0abf6f1 100755 --- a/tests/shard_sync_test.py +++ b/tests/shard_sync_test.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import time +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from mine_with_market_test import PRICE_PER_SECTOR from utility.submission import create_submission, data_to_segments @@ -30,7 +31,7 @@ def run_test(self): client = self.nodes[0] chunk_data = b"\x02" * 8 * 256 * 1024 - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit( submissions, tx_prarams={"value": int(len(chunk_data) / 256 * PRICE_PER_SECTOR * 1.1)}, diff --git a/tests/submission_test.py b/tests/submission_test.py index 5d8f83e9..4006dd55 100755 --- a/tests/submission_test.py +++ b/tests/submission_test.py @@ -2,6 +2,7 @@ import base64 import random +from config.node_config import TX_PARAMS from test_framework.test_framework import TestFramework from utility.submission import ENTRY_SIZE, submit_data from utility.submission import create_submission @@ -44,7 +45,7 @@ def submission_data(self, size, submission_index, rand_data=True): self.log.info("node index: %d, file size: %d", node_idx, size) chunk_data = random.randbytes(size) if rand_data else b"\x10" * size - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.log.info("data root: %s, submissions: %s", data_root, submissions) self.contract.submit(submissions) diff --git a/tests/test_framework/blockchain_node.py b/tests/test_framework/blockchain_node.py index 188c465c..f4df31cb 100644 --- a/tests/test_framework/blockchain_node.py +++ b/tests/test_framework/blockchain_node.py @@ -22,7 +22,7 @@ class BlockChainNodeType(Enum): def block_time(self): if self == BlockChainNodeType.ZG: - return 0.5 + return 1 else: raise AssertionError("Unsupported blockchain type") @@ -254,6 +254,15 @@ def setup_contract(self, enable_market, mine_period, lifetime_seconds): SignAndSendRawMiddlewareBuilder.build([account1, account2]) ) + mine_init_params = ( + 1, # difficulty + mine_period, # targetMineBlocks + 2, # targetSubmissions + 256, # maxShards + 1, # nSubtasks + 1, # subtaskInterval + ) + def deploy_contract(name, args=None): if args is None: args = [] @@ -291,10 +300,8 @@ def deploy_no_market(): self.log.debug("Mine deployed") mine_contract.functions.initialize( - 1, flow_contract.address, dummy_reward_contract.address + flow_contract.address, dummy_reward_contract.address, mine_init_params ).transact(TX_PARAMS) - mine_contract.functions.setDifficultyAdjustRatio(1).transact(TX_PARAMS) - mine_contract.functions.setTargetSubmissions(2).transact(TX_PARAMS) self.log.debug("Mine Initialized") flow_initialize_hash = flow_contract.functions.initialize( @@ -333,10 +340,8 @@ def deploy_with_market(lifetime_seconds): self.log.debug("Flow deployed") mine_contract.functions.initialize( - 1, flow_contract.address, reward_contract.address + flow_contract.address, reward_contract.address, mine_init_params ).transact(TX_PARAMS) - mine_contract.functions.setDifficultyAdjustRatio(1).transact(TX_PARAMS) - mine_contract.functions.setTargetSubmissions(2).transact(TX_PARAMS) self.log.debug("Mine Initialized") market_contract.functions.initialize( @@ -347,7 +352,7 @@ def deploy_with_market(lifetime_seconds): self.log.debug("Market Initialized") reward_contract.functions.initialize( - market_contract.address, mine_contract.address + market_contract.address, mine_contract.address, TX_PARAMS['from'] ).transact(TX_PARAMS) reward_contract.functions.setBaseReward(10**18).transact(TX_PARAMS) self.log.debug("Reward Initialized") diff --git a/tests/test_framework/test_framework.py b/tests/test_framework/test_framework.py index 2d5ceee3..470ce057 100644 --- a/tests/test_framework/test_framework.py +++ b/tests/test_framework/test_framework.py @@ -22,6 +22,7 @@ from test_framework.zgs_node import ZgsNode from test_framework.blockchain_node import BlockChainNodeType from test_framework.zg_node import ZGNode, zg_node_init_genesis +from config.node_config import TX_PARAMS from utility.utils import PortMin, is_windows_platform, wait_until, assert_equal from utility.build_binary import build_cli from utility.submission import create_submission, submit_data @@ -292,7 +293,6 @@ def _check_cli_binary(self): def _upload_file_use_cli( self, blockchain_node_rpc_url, - contract_address, key, ionion_node_rpc_url, file_to_upload, @@ -362,7 +362,7 @@ def _upload_file_use_cli( return root def __submit_file__(self, chunk_data: bytes) -> str: - submissions, data_root = create_submission(chunk_data) + submissions, data_root = create_submission(chunk_data, TX_PARAMS['from']) self.contract.submit(submissions) self.num_deployed_contracts += 1 wait_until( diff --git a/tests/utility/run_all.py b/tests/utility/run_all.py index 8b43b60b..b998d3ef 100644 --- a/tests/utility/run_all.py +++ b/tests/utility/run_all.py @@ -135,6 +135,18 @@ def run_all( py = "python" i = 0 + # Run single tests one by one + for script in single_run_tests: + f = executor.submit( + run_single_test, py, script, test_dir, i, options.port_min, options.port_max + ) + try: + f.result() + except subprocess.CalledProcessError as err: + print("CalledProcessError " + repr(err)) + failed.add(script) + i += 1 + # Start slow tests first to avoid waiting for long-tail jobs for script in slow_tests: f = executor.submit( @@ -142,6 +154,7 @@ def run_all( ) test_results.append((script, f)) i += 1 + for script in TEST_SCRIPTS: f = executor.submit( run_single_test, py, script, test_dir, i, options.port_min, options.port_max @@ -157,18 +170,6 @@ def run_all( print("CalledProcessError " + repr(err)) failed.add(script) - # Run single tests one by one - for script in single_run_tests: - f = executor.submit( - run_single_test, py, script, test_dir, i, options.port_min, options.port_max - ) - try: - f.result() - except subprocess.CalledProcessError as err: - print("CalledProcessError " + repr(err)) - failed.add(script) - i += 1 - print("Elapsed: " + str(int(time.time() - start_time)) + " seconds", flush=True) if len(failed) > 0: diff --git a/tests/utility/submission.py b/tests/utility/submission.py index 4028b6e0..62755167 100644 --- a/tests/utility/submission.py +++ b/tests/utility/submission.py @@ -29,12 +29,11 @@ def bytes_to_entries(size_bytes): else: return size_bytes // ENTRY_SIZE + 1 - -def create_submission(data): - submission = [] - submission.append(len(data)) - submission.append(b"") - submission.append([]) +def create_submission(data, submitter): + submission_data = [] + submission_data.append(len(data)) + submission_data.append(b"") + submission_data.append([]) offset = 0 nodes = [] @@ -43,7 +42,7 @@ def create_submission(data): nodes.append(node_hash) height = int(log2(chunks)) - submission[2].append([decode_hex(node_hash.decode("utf-8")), height]) + submission_data[2].append([decode_hex(node_hash.decode("utf-8")), height]) offset += chunks * ENTRY_SIZE root_hash = nodes[-1] @@ -53,9 +52,9 @@ def create_submission(data): tree.add_leaf(Leaf(root_hash)) root_hash = tree.get_root_hash() + submission = [submission_data, submitter] return submission, add_0x_prefix(root_hash.decode("utf-8")) - def split_nodes(data_len): nodes = []