From eb6bbb6e78daddb72ab0bbd1525735fd08dff735 Mon Sep 17 00:00:00 2001 From: Amir Bandeali Date: Wed, 6 Nov 2019 22:43:01 -0800 Subject: [PATCH] Replace Staking artifact with TestStaking to allow params to be passed into constructor --- .../contract-artifacts/artifacts/Staking.json | 39 ++++++++++++------- 1 file changed, 25 insertions(+), 14 deletions(-) diff --git a/packages/contract-artifacts/artifacts/Staking.json b/packages/contract-artifacts/artifacts/Staking.json index fb94c6ae64..53e0f56bb5 100644 --- a/packages/contract-artifacts/artifacts/Staking.json +++ b/packages/contract-artifacts/artifacts/Staking.json @@ -5,8 +5,8 @@ "abi": [ { "inputs": [ - { "internalType": "address", "name": "wethAddress_", "type": "address" }, - { "internalType": "address", "name": "zrxVaultAddress_", "type": "address" } + { "internalType": "address", "name": "wethAddress", "type": "address" }, + { "internalType": "address", "name": "zrxVaultAddress", "type": "address" } ], "payable": false, "stateMutability": "nonpayable", @@ -519,7 +519,7 @@ "constant": true, "inputs": [], "name": "getWethContract", - "outputs": [{ "internalType": "contract IEtherToken", "name": "wethContract", "type": "address" }], + "outputs": [{ "internalType": "contract IEtherToken", "name": "", "type": "address" }], "payable": false, "stateMutability": "view", "type": "function" @@ -726,6 +726,24 @@ "stateMutability": "view", "type": "function" }, + { + "constant": true, + "inputs": [], + "name": "testWethAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, + { + "constant": true, + "inputs": [], + "name": "testZrxVaultAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "payable": false, + "stateMutability": "view", + "type": "function" + }, { "constant": false, "inputs": [{ "internalType": "address", "name": "newOwner", "type": "address" }], @@ -861,14 +879,7 @@ "params": { "poolId": "Unique Id of pool." }, "return": "Total stake delegated to pool." }, - "getWethContract()": { - "details": "Returns the current weth contract address", - "return": "wethContract The WETH contract instance." - }, - "getZrxVault()": { - "details": "Returns the current zrxVault address.", - "return": "zrxVault The zrxVault contract." - }, + "getWethContract()": { "details": "Overridden to use testWethAddress;" }, "init()": { "details": "Initialize storage owned by this contract. This function should not be called directly. The StakingProxy contract will call it in `attachStakingContract()`." }, @@ -933,10 +944,10 @@ }, "evm": { "bytecode": { - "object": "0x60806040523480156200001157600080fd5b506040516200577538038062005775833981016040819052620000349162000071565b600080546001600160a01b03199081163317909155601880546001600160a01b0394851690831617905560198054929093169116179055620000c8565b6000806040838503121562000084578182fd5b82516200009181620000af565b6020840151909250620000a481620000af565b809150509250929050565b6001600160a01b0381168114620000c557600080fd5b50565b61569d80620000d86000396000f3fe6080604052600436106103295760003560e01c80638da5cb5b116101a5578063bb7ef7e0116100ec578063e8eeb3f811610095578063f18765321161006f578063f1876532146108bf578063f252b7a1146108df578063f2fde38b146108ff578063ff691b111461091f57610329565b8063e8eeb3f814610875578063e907f0031461088a578063ee99205c146108aa57610329565b8063e0ee036e116100c6578063e0ee036e1461082b578063e1c7392a14610840578063e804d0a41461085557610329565b8063bb7ef7e0146107c9578063c18c9141146107e9578063d39de6e91461080957610329565b8063a694fc3a1161014e578063b3e3337911610128578063b3e3337914610769578063b510879f14610789578063b9181611146107a957610329565b8063a694fc3a1461071f578063b05315241461073f578063b2baa33e1461075457610329565b8063a26171e21161017f578063a26171e2146106e2578063a3b4a327146106f7578063a657e5791461070a57610329565b80638da5cb5b1461068d5780639ad26744146106a25780639c3ccc82146106c257610329565b80634bcc3f6711610274578063624a72321161021d57806370712939116101f757806370712939146106165780637667180814610636578063816667961461064b5780638a2e271a1461066d57610329565b8063624a7232146105cc57806363403801146105e157806368a7d6cd146105f657610329565b80635bd4ab731161024e5780635bd4ab73146105595780635d91121d146105865780635e615a6b146105a657610329565b80634bcc3f67146104f7578063587da0231461052457806358f6c7e31461053957610329565b80633c277fc5116102d657806344a6958b116102b057806344a6958b1461048a57806346b97959146104aa578063494503d4146104d757610329565b80633c277fc51461041b5780633e4ad7321461043d57806342f1181e1461046a57610329565b80632a94c279116103075780632a94c2791461039b5780632e17de78146103ca57806338229d93146103ea57610329565b806301e28d841461032e5780630b9663db146103505780631e7ff8f61461037b575b600080fd5b34801561033a57600080fd5b5061034e610349366004614fb8565b61093f565b005b34801561035c57600080fd5b50610365610a0d565b6040516103729190615318565b60405180910390f35b34801561038757600080fd5b50610365610396366004614fb8565b610b5a565b3480156103a757600080fd5b506103bb6103b63660046150cc565b610bf4565b60405161037293929190615505565b3480156103d657600080fd5b5061034e6103e5366004615090565b610c20565b3480156103f657600080fd5b5061040a610405366004615090565b610dd5565b604051610372959493929190615536565b34801561042757600080fd5b50610430610e04565b6040516103729190615215565b34801561044957600080fd5b5061045d610458366004615090565b610e20565b60405161037291906154c6565b34801561047657600080fd5b5061034e610485366004614fb8565b610e3f565b34801561049657600080fd5b5061045d6104a536600461503d565b610e53565b3480156104b657600080fd5b506104ca6104c5366004615090565b610eb2565b6040516103729190615472565b3480156104e357600080fd5b506104306104f2366004615090565b610efd565b34801561050357600080fd5b50610517610512366004615090565b610f31565b6040516103729190615493565b34801561053057600080fd5b50610365610f93565b34801561054557600080fd5b5061034e610554366004615135565b610f99565b34801561056557600080fd5b50610579610574366004614fb8565b611196565b604051610372919061530d565b34801561059257600080fd5b5061034e6105a13660046150ed565b6111ab565b3480156105b257600080fd5b506105bb611274565b604051610372959493929190615559565b3480156105d857600080fd5b5061043061129d565b3480156105ed57600080fd5b506103656112b9565b34801561060257600080fd5b506103656106113660046151e8565b6112bf565b34801561062257600080fd5b5061034e610631366004614fb8565b6113f8565b34801561064257600080fd5b506103656114ad565b34801561065757600080fd5b506106606114b3565b604051610372919061559d565b34801561067957600080fd5b5061034e610688366004614fb8565b6114bf565b34801561069957600080fd5b50610430611581565b3480156106ae57600080fd5b5061034e6106bd366004615013565b61159d565b3480156106ce57600080fd5b5061034e6106dd36600461518a565b6115af565b3480156106ee57600080fd5b50610365611629565b61034e610705366004614fd3565b61162f565b34801561071657600080fd5b5061036561187f565b34801561072b57600080fd5b5061034e61073a366004615090565b611885565b34801561074b57600080fd5b5061036561199a565b34801561076057600080fd5b506103656119a0565b34801561077557600080fd5b5061034e610784366004615090565b6119be565b34801561079557600080fd5b5061034e6107a4366004615090565b6119fe565b3480156107b557600080fd5b506105796107c4366004614fb8565b611a08565b3480156107d557600080fd5b506103656107e4366004615090565b611a1d565b3480156107f557600080fd5b50610365610804366004615090565b611aa8565b34801561081557600080fd5b5061081e611aba565b60405161037291906152b4565b34801561083757600080fd5b50610660611b29565b34801561084c57600080fd5b5061034e611b35565b34801561086157600080fd5b5061045d610870366004615119565b611b4f565b34801561088157600080fd5b50610660611c9f565b34801561089657600080fd5b506103656108a53660046150a8565b611cb3565b3480156108b657600080fd5b50610430611d50565b3480156108cb57600080fd5b506103656108da366004614fb8565b611d6c565b3480156108eb57600080fd5b5061045d6108fa366004615013565b611d7e565b34801561090b57600080fd5b5061034e61091a366004614fb8565b611dbf565b34801561092b57600080fd5b5061034e61093a366004615090565b611e62565b61094761208f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610987576109876109826001836120b2565b612154565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a02908390615215565b60405180910390a150565b600c5460009081610a2582600163ffffffff61215c16565b6000818152601660205260409020600101549091508015610a4d57610a4d610982838361217b565b610a55612198565b610a5d61220b565b600084815260166020526040902055610a74614ea0565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610af6949193929161551b565b60405180910390a2610b066122af565b6020810151610b4d57805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610b4491600091615363565b60405180910390a25b6020015193505050505b90565b6000610b6461129d565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610b9c9190615215565b60206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec9190810190615172565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610c29614ecf565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610c76906122f2565b90506000610ca882602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff16612398565b905080841115610cbf57610cbf61098285836123ae565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0d90856123cb565b610d1561129d565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610d4f92919061528e565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610dc79190615318565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b60185473ffffffffffffffffffffffffffffffffffffffff1690565b610e28614ecf565b6000828152600760205260409020610bec906122f2565b610e47612452565b610e5081612499565b50565b610e5b614ecf565b610ea960056000846001811115610e6e57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8816825290925290206122f2565b90505b92915050565b610eba614eef565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b60028181548110610f0a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610f39614f10565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b600d5481565b3381610fa55750611191565b6000610fb46020860186615119565b6001811115610fbf57fe5b148015610fe357506000610fd66020850185615119565b6001811115610fe157fe5b145b15610fee5750611191565b6001610ffd6020860186615119565b600181111561100857fe5b141561101d5761101d846020013582846125ca565b600161102c6020850185615119565b600181111561103757fe5b141561104c5761104c83602001358284612663565b600060058161105e6020880188615119565b600181111561106957fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff86168252835290812092509060059082906110b390880188615119565b60018111156110be57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff87168252909252902090506111018282866126fc565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d908890611153908c615119565b600181111561115e57fe5b61116b60208c018c615119565b600181111561117657fe5b60405161118593929190615584565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b816111b5816127f5565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff166111ed84828561282e565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610dc790849087906155ae565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b60195473ffffffffffffffffffffffffffffffffffffffff1690565b60115481565b60085460009033906112d890600163ffffffff61287516565b600881905591506112ed82620f42408661282e565b6112f5614f10565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906113d990859085908990615321565b60405180910390a183156113f0576113f0836119be565b505092915050565b611400612452565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166114395761143961098282612891565b60005b6002548110156114a9578173ffffffffffffffffffffffffffffffffffffffff166002828154811061146a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156114a15761149c8282612930565b6114a9565b60010161143c565b5050565b600c5481565b60145463ffffffff1681565b6114c761208f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff1615611503576115036109826000836120b2565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a02908390615215565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6115a5612452565b6114a98282612930565b6115b761208f565b6115c48585858585612b7f565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b15801561160a57600080fd5b505afa15801561161e573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff166116525761165261098233612c42565b61165b81612c5d565b3461173557611668610e04565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b81526004016116a49392919061525d565b602060405180830381600087803b1580156116be57600080fd5b505af11580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f69190810190615074565b611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c9061543b565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260096020526040902054806117665750611191565b600061177182610e20565b602001516bffffffffffffffffffffffff169050601354811015611796575050611191565b600c54600083815260156020908152604080832084845282528083206016909252909120815480611845576000806117ce8888612c7e565b6002870182905560018701819055600386015491935091506117f6908263ffffffff61287516565b60038501556001808501546118109163ffffffff61287516565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b611855818863ffffffff61287516565b8355600282015461186c908863ffffffff61287516565b8260020181905550505050505050505050565b60085481565b3361188e61129d565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b81526004016118c892919061528e565b600060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090206119489083612d0a565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a8360405161198e9190615318565b60405180910390a25050565b60175481565b60006119b9601154600d5461287590919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610e508133612d74565b60016020526000908152604090205460ff1681565b6000611a27614f10565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611a8b85612f4c565b91509150611a9e83602001518383613009565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611b1f57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611af4575b5050505050905090565b60125463ffffffff1681565b611b3d61208f565b611b4561304a565b611b4d61305d565b565b611b57614ecf565b60016000526004602052611b8a7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe056122f2565b90506000826001811115611b9a57fe5b1415610bef576000611baa61129d565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611bef57600080fd5b505afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c279190810190615172565b9050611c56611c5183602001516bffffffffffffffffffffffff168361215c90919063ffffffff16565b613088565b6bffffffffffffffffffffffff90811660208401526040830151611c8691611c519184911663ffffffff61215c16565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611cbd614f10565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611d2186612f4c565b915091506000611d3684602001518484613009565b915050611d45878783856130ac565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611d86614ecf565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610ea9906122f2565b611dc7612452565b73ffffffffffffffffffffffffffffffffffffffff8116611df257611ded6109826131f9565b610e50565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c546000611e7882600163ffffffff61215c16565b9050611e82614ea0565b50600081815260166020908152604091829020825160a08101845281548152600182015492810183905260028201549381019390935260038101546060840152600401546080830152611ed757505050610e50565b611edf614eef565b5060008481526015602090815260408083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611f2d5750505050610e50565b6000858152601560209081526040808320868452909152812081815560018101829055600201819055611f608284613230565b9050600080611f74888486604001516132a5565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c8484604051611fab929190615363565b60405180910390a36000611fc5838363ffffffff61287516565b6080870151909150611fdd908263ffffffff61287516565b6080870181905260008881526016602090815260409091206004019190915586015161201090600163ffffffff61215c16565b602080880182815260008a815260169092526040909120600101919091555161161e576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b29161206e908263ffffffff61215c16565b60405161207c929190615363565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611b4d57611b4d610982336133f5565b606063b9588e4360e01b83836040516024016120cf9291906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b6000828211156121755761217561098260028585613410565b50900390565b606063614b800a60e01b83836040516024016120cf929190615363565b30318015610e50576121a8610e04565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ef57600080fd5b505af1158015612203573d6000803e3d6000fd5b505050505050565b60006119b960175461221b610e04565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122539190615215565b60206040518083038186803b15801561226b57600080fd5b505afa15801561227f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a39190810190615172565b9063ffffffff61215c16565b4260006122ba6119a0565b9050818111156122d1576122d161098282846134b5565b600c546000906122e890600163ffffffff61287516565b600c555050600d55565b6122fa614ecf565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c5490918111156123925761236d816134d2565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b60008183106123a75781610ea9565b5090919050565b60606384c8b7c960e01b83836040516024016120cf929190615363565b6123d3614ecf565b6123dc836122f2565b9050612406611c518383604001516bffffffffffffffffffffffff1661215c90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161243591611c5191168463ffffffff61215c16565b6bffffffffffffffffffffffff16602082015261119183826134f2565b60005473ffffffffffffffffffffffffffffffffffffffff163314611b4d57600054611b4d9061098290339073ffffffffffffffffffffffffffffffffffffffff166135ac565b73ffffffffffffffffffffffffffffffffffffffff81166124bf576124bf6109826135c9565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156124f9576124f961098282613600565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6125d38361361b565b6125dd8383612d74565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126179082613652565b600083815260076020526040902061262f9082613652565b600160005260046020526111917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0582613652565b61266c8361361b565b6126768383612d74565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126b090826136aa565b60008381526007602052604090206126c890826136aa565b600160005260046020526111917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826136aa565b61270683836136e5565b1561271057611191565b612718614ecf565b612721846122f2565b905061272b614ecf565b612734846122f2565b905081604001516bffffffffffffffffffffffff1683111561276f5761276f6109828484604001516bffffffffffffffffffffffff166123ae565b604082015161279690611c51906bffffffffffffffffffffffff168563ffffffff61215c16565b6bffffffffffffffffffffffff9081166040808501919091528201516127c791611c5191168563ffffffff61287516565b6bffffffffffffffffffffffff1660408201526127e485836134f2565b6127ee84826134f2565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff163381146114a9576114a961098233846136ec565b620f424063ffffffff821611156128535761284e61098260008584613709565b611191565b8163ffffffff168163ffffffff16106111915761119161098260018584613709565b600082820183811015610ea957610ea961098260008686613410565b606063eb5108a260e01b826040516024016128ac9190615215565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166129695761296961098283612891565b60025481106129845761298461098282600280549050613728565b8173ffffffffffffffffffffffffffffffffffffffff16600282815481106129a857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612a0a57612a0a610982600283815481106129e257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684613745565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612a8557fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612ab857fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b379082614f27565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612c339087908790879087908790615559565b60405180910390a15050505050565b606063b56d2df060e01b826040516024016128ac9190615215565b803414158015612c6c57503415155b15610e5057610e506109828234613762565b6000828152600a602052604081205481908190612cb19073ffffffffffffffffffffffffffffffffffffffff1686611d7e565b602001516bffffffffffffffffffffffff169050612cd5848263ffffffff61215c16565b601254909350612d0090612cf39063ffffffff16620f42408661377f565b829063ffffffff61287516565b9150509250929050565b612d12614ecf565b612d1b836122f2565b9050612d45611c518383604001516bffffffffffffffffffffffff1661287590919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161243591611c5191168463ffffffff61287516565b612d7d826137a1565b6000612d8c83836000806130ac565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208784529091529020909150612dc8906122f2565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff95861602179092167401000000000000000000000000000000000000000093909216929092021790558015612f4357612ead8382613815565b612eb5610e04565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612eef92919061528e565b602060405180830381600087803b158015612f0957600080fd5b505af1158015612f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f419190810190615074565b505b6111918361385d565b6000806000612f676001600c5461215c90919063ffffffff16565b9050612f71614eef565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290612ff9908290613230565b9350806040015192505050915091565b6000808261301957839150613042565b61302d63ffffffff8616620f42408661386a565b915061303f848363ffffffff61215c16565b90505b935093915050565b6130526138a0565b42600d556001600c55565b6130656138b5565b620d2f00620dbba068056bc75e2d63100000600260036127ee8585858585612b7f565b806bffffffffffffffffffffffff81168114610bef57610bef61098260028461391a565b600c546000906130ba614ecf565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811694840194909452740100000000000000000000000000000000000000009091049092169281019290925282141561315b576000925050506131f1565b61316781838787613937565b815190935060009061318a9067ffffffffffffffff16600163ffffffff61287516565b90506131c86131bb8984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff16856139ba565b859063ffffffff61287516565b93506131eb6131bb8984604001516bffffffffffffffffffffffff1684876139ba565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061323e57610eac565b8151835160408401516020860151606086015160145461327495949392919063ffffffff80821691640100000000900416613a53565b608083015183519192506000916132909163ffffffff61215c16565b90508181101561329e578091505b5092915050565b6000806132b0614f10565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff16908201819052613314908686613009565b909350915082156133d157613327610e04565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb9161337d91879060040161528e565b602060405180830381600087803b15801561339757600080fd5b505af11580156133ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133cf9190810190615074565b505b81156133ec576133e18683613b16565b6133ec868386613b57565b50935093915050565b606063b65a25b960e01b826040516024016128ac9190615215565b606063e946c1bb60e01b84848460405160240161342f93929190615371565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016120cf929190615363565b8067ffffffffffffffff81168114610bef57610bef61098260018461391a565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b83836040516024016120cf929190615236565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016128ac9190615215565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e5057610e50610982826000613c40565b61365a614ecf565b613663836122f2565b905061368d611c518383604001516bffffffffffffffffffffffff1661215c90919063ffffffff16565b6bffffffffffffffffffffffff16604082015261119183826134f2565b6136b2614ecf565b6136bb836122f2565b905061368d611c518383604001516bffffffffffffffffffffffff1661287590919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016120cf92919061528e565b60606322df959760e01b84848460405160240161342f939291906153dd565b606063e9f8377160e01b83836040516024016120cf929190615363565b606063140a84db60e01b83836040516024016120cf929190615236565b60606331d7a50560e01b83836040516024016120cf929190615363565b60006131f183613795868563ffffffff613c5d16565b9063ffffffff613c8e16565b600c546000906137b890600163ffffffff61215c16565b90506137c2614eef565b506000828152601560209081526040808320848452825291829020825160608101845281548082526001830154938201939093526002909101549281019290925215611191576111916109828484613cb8565b6000828152600b6020526040902054613834908263ffffffff61215c16565b6000838152600b6020526040902055601754613856908263ffffffff61215c16565b6017555050565b610e508160006001613b57565b60006131f18361379561388482600163ffffffff61215c16565b613894888763ffffffff613c5d16565b9063ffffffff61287516565b600d5415611b4d57611b4d6109826000613cd5565b601154158015906138cd575060125463ffffffff1615155b80156138da575060135415155b80156138ed575060145463ffffffff1615155b80156139085750601454640100000000900463ffffffff1615155b15611b4d57611b4d6109826001613cd5565b606063c996af7b60e01b83836040516024016120cf929190615393565b6000821580613944575081155b15613951575060006131f1565b600061396485600163ffffffff61215c16565b865167ffffffffffffffff161015613980578560400151613986565b85602001515b6bffffffffffffffffffffffff169050806139a55760009150506131f1565b6139b084848361377f565b9695505050505050565b60008315806139c857508183145b156139d5575060006131f1565b818310613a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90615404565b613a16614f4b565b613a208685613d14565b9050613a2a614f4b565b613a348785613d14565b9050611d4581600001518260200151846000015185602001518a613e32565b600080613a608888613ebe565b90506000613a6e8787613ebe565b9050811580613a7b575080155b15613a8c575060009150611d459050565b600081831315613aa557613aa08284613f10565b613aaf565b613aaf8383613f10565b9050613ad8613ad3613ac083613f2f565b8863ffffffff168863ffffffff166145d1565b6145e0565b905081831315613af157613aec8282613f10565b613afb565b613afb8282614bca565b9050613b07818c614bf6565b9b9a5050505050505050505050565b6000828152600b6020526040902054613b35908263ffffffff61287516565b6000838152600b6020526040902055601754613856908263ffffffff61287516565b6000838152600f6020526040902054600c5480821415613b78575050611191565b613b80614f4b565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613bb7614f4b565b613bc082614c38565b15613bf957613bd9826000015183602001518888614c41565b60208301819052818352613bed9190614ca3565b60208301528152613c04565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b83836040516024016120cf929190615353565b600082613c6c57506000610eac565b82820282848281613c7957fe5b0414610ea957610ea961098260018686613410565b600081613ca457613ca461098260038585613410565b6000828481613caf57fe5b04949350505050565b6060635caa0b0560e01b83836040516024016120cf929190615363565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613d0457fe5b6040516024016128ac91906155c5565b613d1c614f4b565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613d5481614c38565b15613d5e57610eac565b6000613d7183600163ffffffff61215c16565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613dac82614c38565b15613db75750610eac565b6000848152600f602052604090205483811015613e14576000858152600e6020908152604080832084845282529182902082518084019093528054835260010154908201529250613e0783614c38565b15613e145750610eac9050565b50506040805180820190915260008152600160208201529392505050565b600081613e4157506000613eb5565b83613e6157613e5a85613795848963ffffffff613c5d16565b9050613eb5565b6000613e86613e76868863ffffffff613c5d16565b6122a3898763ffffffff613c5d16565b90506000613e9a828663ffffffff613c8e16565b9050613eb087613795868463ffffffff613c5d16565b925050505b95945050505050565b600080831215613ed657613ed6610982600185614ccc565b6000821215613eed57613eed610982600184614ccc565b610ea9613f0a846f80000000000000000000000000000000614d0d565b83614d3f565b6000610ea9613f0a846f80000000000000000000000000000000614d0d565b60006f80000000000000000000000000000000821315613f5757613f57610982600184614dc0565b60008213613f6d57613f6d610982600084614dc0565b6f80000000000000000000000000000000821415613f8d57506000610bef565b640733048c5a8213613fc057507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610bef565b60008060006a01c8464f76164760000000851361401f577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e90000000000000851361407d577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d7800000000000000085136140df577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec000000000000000008513614143577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136141a7577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de70000000000000000000851361420b577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be5828000000000000000000851361426f577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c00000000000000000085136142d3577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d8513614337577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816143ad57fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa038302816143de57fe5b05840193506f80000000000000000000000000000000818302816143fe57fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161442f57fe5b05840193506f800000000000000000000000000000008183028161444f57fe5b059150700400000000000000000000000000000000836f924924924924924924924924924924920383028161448057fe5b05840193506f80000000000000000000000000000000818302816144a057fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e038302816144d157fe5b05840193506f80000000000000000000000000000000818302816144f157fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161452257fe5b05840193506f800000000000000000000000000000008183028161454257fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d890383028161457357fe5b05840193506f800000000000000000000000000000008183028161459357fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816145c457fe5b0584019350505050919050565b60006131f1613f0a8585614d0d565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561461257506000610bef565b8161462e57506f80000000000000000000000000000000610bef565b600082131561464557614645610982600184614dc0565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816146b157fe5b05905080670168244fdac7800002830192506f80000000000000000000000000000000828202816146de57fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161470a57fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161473657fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161476257fe5b059050806536e0f639b80002830192506f800000000000000000000000000000008282028161478d57fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816147b857fe5b05905080649c197dcc0002830192506f80000000000000000000000000000000828202816147e257fe5b05905080640e30dce40002830192506f800000000000000000000000000000008282028161480c57fe5b0590508064012ebd130002830192506f800000000000000000000000000000008282028161483657fe5b059050806317499f0002830192506f800000000000000000000000000000008282028161485f57fe5b059050806301a9d48002830192506f800000000000000000000000000000008282028161488857fe5b05905080621c638002830192506f80000000000000000000000000000000828202816148b057fe5b059050806201c63802830192506f80000000000000000000000000000000828202816148d857fe5b05905080611ab802830192506f80000000000000000000000000000000828202816148ff57fe5b0590508061017c02830192506f800000000000000000000000000000008282028161492657fe5b05905080601402830192506f800000000000000000000000000000008282028161494c57fe5b600095909503946721c3677c82b400009190059384010582016f80000000000000000000000000000000019290507010000000000000000000000000000000008416156149bb577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b7008000000000000000000000000000000008416156149fd577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614a3f57701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614a81577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614ac35770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614b03576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614b43576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614b83576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614bc3576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614be78484614d0d565b81614bee57fe5b059392505050565b600080821215614c0e57614c0e610982600184614ccc565b6000614c1a8484614d0d565b905060008113614c2e576000915050610eac565b607f1c9392505050565b60200151151590565b60008085614c53575082905081614c9a565b83614c62575084905083614c9a565b614c85614c75858763ffffffff613c5d16565b613894888663ffffffff613c5d16565b9150614c97858463ffffffff613c5d16565b90505b94509492505050565b600080614cc184846f80000000000000000000000000000000614def565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614cfb57fe5b836040516024016120cf9291906155d3565b600082614d1c57506000610eac565b5081810281838281614d2a57fe5b0514610eac57610eac61098260018585614e5d565b600081614d5557614d5561098260028585614e5d565b7f800000000000000000000000000000000000000000000000000000000000000083148015614da35750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15614db757614db761098260038585614e5d565b818381614bee57fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614cfb57fe5b60008082851180614dff57508284115b15614e5457600084861015614e145784614e16565b855b9050614e28818563ffffffff613c8e16565b9050614e3a868263ffffffff613c8e16565b9250614e4c858263ffffffff613c8e16565b915050613042565b50929391925050565b60607f8c12dfe700000000000000000000000000000000000000000000000000000000846003811115614e8c57fe5b848460405160240161342f939291906155e6565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b81548183558181111561119157600083815260209020611191918101908301614f65565b604051806040016040528060008152602001600081525090565b610b5791905b80821115614f7f5760008155600101614f6b565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610eac57600080fd5b600060408284031215612392578081fd5b600060208284031215614fc9578081fd5b610ea98383614f83565b600080600060608486031215614fe7578182fd5b8335614ff28161560b565b925060208401356150028161560b565b929592945050506040919091013590565b60008060408385031215615025578182fd5b61502f8484614f83565b946020939093013593505050565b6000806040838503121561504f578182fd5b6150598484614f83565b915060208301356150698161563b565b809150509250929050565b600060208284031215615085578081fd5b8151610ea98161562d565b6000602082840312156150a1578081fd5b5035919050565b600080604083850312156150ba578182fd5b8235915060208301356150698161560b565b600080604083850312156150de578182fd5b50508035926020909101359150565b600080604083850312156150ff578182fd5b82359150602083013563ffffffff81168114615069578182fd5b60006020828403121561512a578081fd5b8135610ea98161563b565b600080600060a08486031215615149578283fd5b6151538585614fa7565b92506151628560408601614fa7565b9150608084013590509250925092565b600060208284031215615183578081fd5b5051919050565b600080600080600060a086880312156151a1578283fd5b8535945060208601356151b381615648565b93506040860135925060608601356151ca81615648565b915060808601356151da81615648565b809150509295509295909350565b600080604083850312156151fa578182fd5b823561520581615648565b915060208301356150698161562d565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561530257835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152ce565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b606081016004851061537f57fe5b938152602081019290925260409091015290565b60408101600384106153a157fe5b9281526020015290565b604081016153b884615601565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016153ea85615601565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610e5057fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610e5057600080fd5b8015158114610e5057600080fd5b60028110610e5057600080fd5b63ffffffff81168114610e5057600080fdfea365627a7a72315820405f679c9973463d3088bfe457347d17202e3319adf7067235fc4905ae0f29646c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x60806040523480156200001157600080fd5b50604051620059be380380620059be833981016040819052620000349162000071565b600080546001600160a01b03199081163317909155601880546001600160a01b0394851690831617905560198054929093169116179055620000c8565b6000806040838503121562000084578182fd5b82516200009181620000af565b6020840151909250620000a481620000af565b809150509250929050565b6001600160a01b0381168114620000c557600080fd5b50565b6158e680620000d86000396000f3fe6080604052600436106103555760003560e01c80639051c3ee116101bb578063bb7ef7e0116100f7578063e8eeb3f811610095578063f18765321161006f578063f187653214610955578063f252b7a114610975578063f2fde38b14610995578063ff691b11146109b557610355565b8063e8eeb3f81461090b578063e907f00314610920578063ee99205c1461094057610355565b8063dcb31f76116100d1578063dcb31f76146108ac578063e0ee036e146108c1578063e1c7392a146108d6578063e804d0a4146108eb57610355565b8063bb7ef7e01461084a578063c18c91411461086a578063d39de6e91461088a57610355565b8063a694fc3a11610164578063b2baa33e1161013e578063b2baa33e146107d5578063b3e33379146107ea578063b510879f1461080a578063b91816111461082a57610355565b8063a694fc3a14610780578063abe0906a146107a0578063b0531524146107c057610355565b8063a26171e211610195578063a26171e214610743578063a3b4a32714610758578063a657e5791461076b57610355565b80639051c3ee146106ee5780639ad26744146107035780639c3ccc821461072357610355565b80634e67339f116102955780636340380111610233578063766718081161020d578063766718081461068257806381666796146106975780638a2e271a146106b95780638da5cb5b146106d957610355565b8063634038011461062d57806368a7d6cd14610642578063707129391461066257610355565b80635bd4ab731161026f5780635bd4ab73146105a55780635d91121d146105d25780635e615a6b146105f2578063624a72321461061857610355565b80634e67339f14610550578063587da0231461057057806358f6c7e31461058557610355565b80633c277fc51161030257806344a6958b116102dc57806344a6958b146104b657806346b97959146104d6578063494503d4146105035780634bcc3f671461052357610355565b80633c277fc5146104475780633e4ad7321461046957806342f1181e1461049657610355565b80632a94c279116103335780632a94c279146103c75780632e17de78146103f657806338229d931461041657610355565b806301e28d841461035a5780630b9663db1461037c5780631e7ff8f6146103a7575b600080fd5b34801561036657600080fd5b5061037a6103753660046151e2565b6109d5565b005b34801561038857600080fd5b50610391610aa3565b60405161039e9190615561565b60405180910390f35b3480156103b357600080fd5b506103916103c23660046151e2565b610bf0565b3480156103d357600080fd5b506103e76103e2366004615315565b610c8a565b60405161039e9392919061574e565b34801561040257600080fd5b5061037a6104113660046152d9565b610cb6565b34801561042257600080fd5b506104366104313660046152d9565b610e6b565b60405161039e95949392919061577f565b34801561045357600080fd5b5061045c610e9a565b60405161039e919061545e565b34801561047557600080fd5b506104896104843660046152d9565b610f43565b60405161039e919061570f565b3480156104a257600080fd5b5061037a6104b13660046151e2565b610f62565b3480156104c257600080fd5b506104896104d1366004615285565b610f76565b3480156104e257600080fd5b506104f66104f13660046152d9565b610fd5565b60405161039e91906156bb565b34801561050f57600080fd5b5061045c61051e3660046152d9565b611020565b34801561052f57600080fd5b5061054361053e3660046152d9565b611054565b60405161039e91906156dc565b34801561055c57600080fd5b5061037a61056b3660046151e2565b6110b6565b34801561057c57600080fd5b506103916110fd565b34801561059157600080fd5b5061037a6105a036600461537e565b611103565b3480156105b157600080fd5b506105c56105c03660046151e2565b611300565b60405161039e9190615556565b3480156105de57600080fd5b5061037a6105ed366004615336565b611315565b3480156105fe57600080fd5b506106076113de565b60405161039e9594939291906157a2565b34801561062457600080fd5b5061045c611407565b34801561063957600080fd5b50610391611472565b34801561064e57600080fd5b5061039161065d366004615431565b611478565b34801561066e57600080fd5b5061037a61067d3660046151e2565b6115b1565b34801561068e57600080fd5b50610391611666565b3480156106a357600080fd5b506106ac61166c565b60405161039e91906157e6565b3480156106c557600080fd5b5061037a6106d43660046151e2565b611678565b3480156106e557600080fd5b5061045c61173a565b3480156106fa57600080fd5b5061045c611756565b34801561070f57600080fd5b5061037a61071e36600461525a565b611772565b34801561072f57600080fd5b5061037a61073e3660046153d3565b611784565b34801561074f57600080fd5b506103916117fe565b61037a61076636600461521a565b611804565b34801561077757600080fd5b50610391611a54565b34801561078c57600080fd5b5061037a61079b3660046152d9565b611a5a565b3480156107ac57600080fd5b5061037a6107bb3660046151e2565b611b6f565b3480156107cc57600080fd5b50610391611bb6565b3480156107e157600080fd5b50610391611bbc565b3480156107f657600080fd5b5061037a6108053660046152d9565b611bda565b34801561081657600080fd5b5061037a6108253660046152d9565b611c1a565b34801561083657600080fd5b506105c56108453660046151e2565b611c24565b34801561085657600080fd5b506103916108653660046152d9565b611c39565b34801561087657600080fd5b506103916108853660046152d9565b611cc4565b34801561089657600080fd5b5061089f611cd6565b60405161039e91906154fd565b3480156108b857600080fd5b5061045c611d45565b3480156108cd57600080fd5b506106ac611d61565b3480156108e257600080fd5b5061037a611d6d565b3480156108f757600080fd5b50610489610906366004615362565b611d87565b34801561091757600080fd5b506106ac611ed7565b34801561092c57600080fd5b5061039161093b3660046152f1565b611eeb565b34801561094c57600080fd5b5061045c611f88565b34801561096157600080fd5b506103916109703660046151e2565b611fa4565b34801561098157600080fd5b5061048961099036600461525a565b611fb6565b3480156109a157600080fd5b5061037a6109b03660046151e2565b611ff7565b3480156109c157600080fd5b5061037a6109d03660046152d9565b61209a565b6109dd6122c7565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610a1d57610a1d610a186001836122ea565b61238c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a9890839061545e565b60405180910390a150565b600c5460009081610abb82600163ffffffff61239416565b6000818152601660205260409020600101549091508015610ae357610ae3610a1883836123b3565b610aeb6123d0565b610af3612443565b600084815260166020526040902055610b0a6150ee565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610b8c9491939291615764565b60405180910390a2610b9c6124e7565b6020810151610be357805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610bda916000916155ac565b60405180910390a25b6020015193505050505b90565b6000610bfa611407565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610c32919061545e565b60206040518083038186803b158015610c4a57600080fd5b505afa158015610c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c8291908101906153bb565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610cbf61511d565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0c9061252a565b90506000610d3e82602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff166125d0565b905080841115610d5557610d55610a1885836125e6565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610da39085612603565b610dab611407565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610de59291906154d7565b600060405180830381600087803b158015610dff57600080fd5b505af1158015610e13573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610e5d9190615561565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcb31f766040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3d91908101906151fe565b91505090565b610f4b61511d565b6000828152600760205260409020610c829061252a565b610f6a61268a565b610f73816126d1565b50565b610f7e61511d565b610fcc60056000846001811115610f9157fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff88168252909252902061252a565b90505b92915050565b610fdd61513d565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b6002818154811061102d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b61105c61515e565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600d5481565b338161110f57506112fb565b600061111e6020860186615362565b600181111561112957fe5b14801561114d575060006111406020850185615362565b600181111561114b57fe5b145b1561115857506112fb565b60016111676020860186615362565b600181111561117257fe5b14156111875761118784602001358284612802565b60016111966020850185615362565b60018111156111a157fe5b14156111b6576111b68360200135828461289b565b60006005816111c86020880188615362565b60018111156111d357fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff861682528352908120925090600590829061121d90880188615362565b600181111561122857fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff871682529092529020905061126b828286612934565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d9088906112bd908c615362565b60018111156112c857fe5b6112d560208c018c615362565b60018111156112e057fe5b6040516112ef939291906157cd565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b8161131f81612a2d565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff16611357848285612a66565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610e5d90849087906157f7565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639051c3ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0557600080fd5b60115481565b600854600090339061149190600163ffffffff612aad16565b600881905591506114a682620f424086612a66565b6114ae61515e565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906115929085908590899061556a565b60405180910390a183156115a9576115a983611bda565b505092915050565b6115b961268a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166115f2576115f2610a1882612ac9565b60005b600254811015611662578173ffffffffffffffffffffffffffffffffffffffff166002828154811061162357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561165a576116558282612b68565b611662565b6001016115f5565b5050565b600c5481565b60145463ffffffff1681565b6116806122c7565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16156116bc576116bc610a186000836122ea565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a9890839061545e565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60195473ffffffffffffffffffffffffffffffffffffffff1681565b61177a61268a565b6116628282612b68565b61178c6122c7565b6117998585858585612db7565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b1580156117df57600080fd5b505afa1580156117f3573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff1661182757611827610a1833612e7a565b61183081612e95565b3461190a5761183d610e9a565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b8152600401611879939291906154a6565b602060405180830381600087803b15801561189357600080fd5b505af11580156118a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118cb91908101906152bd565b61190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190615684565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020548061193b57506112fb565b600061194682610f43565b602001516bffffffffffffffffffffffff16905060135481101561196b5750506112fb565b600c54600083815260156020908152604080832084845282528083206016909252909120815480611a1a576000806119a38888612eb6565b6002870182905560018701819055600386015491935091506119cb908263ffffffff612aad16565b60038501556001808501546119e59163ffffffff612aad16565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b611a2a818863ffffffff612aad16565b83556002820154611a41908863ffffffff612aad16565b8260020181905550505050505050505050565b60085481565b33611a63611407565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b8152600401611a9d9291906154d7565b600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020611b1d9083612f42565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a83604051611b639190615561565b60405180910390a25050565b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60175481565b6000611bd5601154600d54612aad90919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610f738133612fac565b60016020526000908152604090205460ff1681565b6000611c4361515e565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611ca785613184565b91509150611cba83602001518383613241565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611d3b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611d10575b5050505050905090565b60185473ffffffffffffffffffffffffffffffffffffffff1681565b60125463ffffffff1681565b611d756122c7565b611d7d613282565b611d85613295565b565b611d8f61511d565b60016000526004602052611dc27fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0561252a565b90506000826001811115611dd257fe5b1415610c85576000611de2611407565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2757600080fd5b505afa158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e5f91908101906153bb565b9050611e8e611e8983602001516bffffffffffffffffffffffff168361239490919063ffffffff16565b6132c0565b6bffffffffffffffffffffffff90811660208401526040830151611ebe91611e899184911663ffffffff61239416565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611ef561515e565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611f5986613184565b915091506000611f6e84602001518484613241565b915050611f7d878783856132e4565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611fbe61511d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610fcc9061252a565b611fff61268a565b73ffffffffffffffffffffffffffffffffffffffff811661202a57612025610a18613431565b610f73565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c5460006120b082600163ffffffff61239416565b90506120ba6150ee565b50600081815260166020908152604091829020825160a0810184528154815260018201549281018390526002820154938101939093526003810154606084015260040154608083015261210f57505050610f73565b61211761513d565b50600084815260156020908152604080832085845282529182902082516060810184528154808252600183015493820193909352600290910154928101929092526121655750505050610f73565b60008581526015602090815260408083208684529091528120818155600181018290556002018190556121988284613468565b90506000806121ac888486604001516134dd565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c84846040516121e39291906155ac565b60405180910390a360006121fd838363ffffffff612aad16565b6080870151909150612215908263ffffffff612aad16565b6080870181905260008881526016602090815260409091206004019190915586015161224890600163ffffffff61239416565b602080880182815260008a81526016909252604090912060010191909155516117f3576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b2916122a6908263ffffffff61239416565b6040516122b49291906155ac565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611d8557611d85610a183361362d565b606063b9588e4360e01b83836040516024016123079291906155f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b6000828211156123ad576123ad610a1860028585613648565b50900390565b606063614b800a60e01b83836040516024016123079291906155ac565b30318015610f73576123e0610e9a565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561242757600080fd5b505af115801561243b573d6000803e3d6000fd5b505050505050565b6000611bd5601754612453610e9a565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161248b919061545e565b60206040518083038186803b1580156124a357600080fd5b505afa1580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124db91908101906153bb565b9063ffffffff61239416565b4260006124f2611bbc565b90508181111561250957612509610a1882846136ed565b600c5460009061252090600163ffffffff612aad16565b600c555050600d55565b61253261511d565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c5490918111156125ca576125a58161370a565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b60008183106125df5781610fcc565b5090919050565b60606384c8b7c960e01b83836040516024016123079291906155ac565b61260b61511d565b6126148361252a565b905061263e611e898383604001516bffffffffffffffffffffffff1661239490919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161266d91611e8991168463ffffffff61239416565b6bffffffffffffffffffffffff1660208201526112fb838261372a565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8557600054611d8590610a1890339073ffffffffffffffffffffffffffffffffffffffff166137e4565b73ffffffffffffffffffffffffffffffffffffffff81166126f7576126f7610a18613801565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561273157612731610a1882613838565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b61280b83613853565b6128158383612fac565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660209081526040808320868452909152902061284f908261388a565b6000838152600760205260409020612867908261388a565b600160005260046020526112fb7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe058261388a565b6128a483613853565b6128ae8383612fac565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206128e890826138e2565b600083815260076020526040902061290090826138e2565b600160005260046020526112fb7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826138e2565b61293e838361391d565b15612948576112fb565b61295061511d565b6129598461252a565b905061296361511d565b61296c8461252a565b905081604001516bffffffffffffffffffffffff168311156129a7576129a7610a188484604001516bffffffffffffffffffffffff166125e6565b60408201516129ce90611e89906bffffffffffffffffffffffff168563ffffffff61239416565b6bffffffffffffffffffffffff9081166040808501919091528201516129ff91611e8991168563ffffffff612aad16565b6bffffffffffffffffffffffff166040820152612a1c858361372a565b612a26848261372a565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811461166257611662610a183384613924565b620f424063ffffffff82161115612a8b57612a86610a1860008584613941565b6112fb565b8163ffffffff168163ffffffff16106112fb576112fb610a1860018584613941565b600082820183811015610fcc57610fcc610a1860008686613648565b606063eb5108a260e01b82604051602401612ae4919061545e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16612ba157612ba1610a1883612ac9565b6002548110612bbc57612bbc610a1882600280549050613960565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110612be057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612c4257612c42610a1860028381548110612c1a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461397d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612cbd57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612cf057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612d6f9082615175565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612e6b90879087908790879087906157a2565b60405180910390a15050505050565b606063b56d2df060e01b82604051602401612ae4919061545e565b803414158015612ea457503415155b15610f7357610f73610a18823461399a565b6000828152600a602052604081205481908190612ee99073ffffffffffffffffffffffffffffffffffffffff1686611fb6565b602001516bffffffffffffffffffffffff169050612f0d848263ffffffff61239416565b601254909350612f3890612f2b9063ffffffff16620f4240866139b7565b829063ffffffff612aad16565b9150509250929050565b612f4a61511d565b612f538361252a565b9050612f7d611e898383604001516bffffffffffffffffffffffff16612aad90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161266d91611e8991168463ffffffff612aad16565b612fb5826139d9565b6000612fc483836000806132e4565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260066020908152604080832087845290915290209091506130009061252a565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff9586160217909216740100000000000000000000000000000000000000009390921692909202179055801561317b576130e58382613a4d565b6130ed610e9a565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016131279291906154d7565b602060405180830381600087803b15801561314157600080fd5b505af1158015613155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317991908101906152bd565b505b6112fb83613a95565b600080600061319f6001600c5461239490919063ffffffff16565b90506131a961513d565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290613231908290613468565b9350806040015192505050915091565b600080826132515783915061327a565b61326563ffffffff8616620f424086613aa2565b9150613277848363ffffffff61239416565b90505b935093915050565b61328a613ad8565b42600d556001600c55565b61329d613aed565b620d2f00620dbba068056bc75e2d6310000060026003612a268585858585612db7565b806bffffffffffffffffffffffff81168114610c8557610c85610a18600284613b52565b600c546000906132f261511d565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811694840194909452740100000000000000000000000000000000000000009091049092169281019290925282141561339357600092505050613429565b61339f81838787613b6f565b81519093506000906133c29067ffffffffffffffff16600163ffffffff612aad16565b90506134006133f38984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff1685613bf2565b859063ffffffff612aad16565b93506134236133f38984604001516bffffffffffffffffffffffff168487613bf2565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061347657610fcf565b815183516040840151602086015160608601516014546134ac95949392919063ffffffff80821691640100000000900416613c8b565b608083015183519192506000916134c89163ffffffff61239416565b9050818110156134d6578091505b5092915050565b6000806134e861515e565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff1690820181905261354c908686613241565b909350915082156136095761355f610e9a565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb916135b59187906004016154d7565b602060405180830381600087803b1580156135cf57600080fd5b505af11580156135e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061360791908101906152bd565b505b8115613624576136198683613d4e565b613624868386613d8f565b50935093915050565b606063b65a25b960e01b82604051602401612ae4919061545e565b606063e946c1bb60e01b848484604051602401613667939291906155ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016123079291906155ac565b8067ffffffffffffffff81168114610c8557610c85610a18600184613b52565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b838360405160240161230792919061547f565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401612ae4919061545e565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610f7357610f73610a18826000613e78565b61389261511d565b61389b8361252a565b90506138c5611e898383604001516bffffffffffffffffffffffff1661239490919063ffffffff16565b6bffffffffffffffffffffffff1660408201526112fb838261372a565b6138ea61511d565b6138f38361252a565b90506138c5611e898383604001516bffffffffffffffffffffffff16612aad90919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016123079291906154d7565b60606322df959760e01b84848460405160240161366793929190615626565b606063e9f8377160e01b83836040516024016123079291906155ac565b606063140a84db60e01b838360405160240161230792919061547f565b60606331d7a50560e01b83836040516024016123079291906155ac565b6000613429836139cd868563ffffffff613e9516565b9063ffffffff613ec616565b600c546000906139f090600163ffffffff61239416565b90506139fa61513d565b5060008281526015602090815260408083208484528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252156112fb576112fb610a188484613ef0565b6000828152600b6020526040902054613a6c908263ffffffff61239416565b6000838152600b6020526040902055601754613a8e908263ffffffff61239416565b6017555050565b610f738160006001613d8f565b6000613429836139cd613abc82600163ffffffff61239416565b613acc888763ffffffff613e9516565b9063ffffffff612aad16565b600d5415611d8557611d85610a186000613f0d565b60115415801590613b05575060125463ffffffff1615155b8015613b12575060135415155b8015613b25575060145463ffffffff1615155b8015613b405750601454640100000000900463ffffffff1615155b15611d8557611d85610a186001613f0d565b606063c996af7b60e01b83836040516024016123079291906155dc565b6000821580613b7c575081155b15613b8957506000613429565b6000613b9c85600163ffffffff61239416565b865167ffffffffffffffff161015613bb8578560400151613bbe565b85602001515b6bffffffffffffffffffffffff16905080613bdd576000915050613429565b613be88484836139b7565b9695505050505050565b6000831580613c0057508183145b15613c0d57506000613429565b818310613c46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119019061564d565b613c4e615199565b613c588685613f4c565b9050613c62615199565b613c6c8785613f4c565b9050611f7d81600001518260200151846000015185602001518a61406a565b600080613c9888886140f6565b90506000613ca687876140f6565b9050811580613cb3575080155b15613cc4575060009150611f7d9050565b600081831315613cdd57613cd88284614148565b613ce7565b613ce78383614148565b9050613d10613d0b613cf883614167565b8863ffffffff168863ffffffff16614809565b614818565b905081831315613d2957613d248282614148565b613d33565b613d338282614e02565b9050613d3f818c614e2e565b9b9a5050505050505050505050565b6000828152600b6020526040902054613d6d908263ffffffff612aad16565b6000838152600b6020526040902055601754613a8e908263ffffffff612aad16565b6000838152600f6020526040902054600c5480821415613db05750506112fb565b613db8615199565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613def615199565b613df882614e70565b15613e3157613e11826000015183602001518888614e79565b60208301819052818352613e259190614edb565b60208301528152613e3c565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b838360405160240161230792919061559c565b600082613ea457506000610fcf565b82820282848281613eb157fe5b0414610fcc57610fcc610a1860018686613648565b600081613edc57613edc610a1860038585613648565b6000828481613ee757fe5b04949350505050565b6060635caa0b0560e01b83836040516024016123079291906155ac565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613f3c57fe5b604051602401612ae4919061580e565b613f54615199565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613f8c81614e70565b15613f9657610fcf565b6000613fa983600163ffffffff61239416565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613fe482614e70565b15613fef5750610fcf565b6000848152600f60205260409020548381101561404c576000858152600e602090815260408083208484528252918290208251808401909352805483526001015490820152925061403f83614e70565b1561404c5750610fcf9050565b50506040805180820190915260008152600160208201529392505050565b600081614079575060006140ed565b8361409957614092856139cd848963ffffffff613e9516565b90506140ed565b60006140be6140ae868863ffffffff613e9516565b6124db898763ffffffff613e9516565b905060006140d2828663ffffffff613ec616565b90506140e8876139cd868463ffffffff613e9516565b925050505b95945050505050565b60008083121561410e5761410e610a18600185614f04565b600082121561412557614125610a18600184614f04565b610fcc614142846f80000000000000000000000000000000614f45565b83614f8d565b6000610fcc614142846f80000000000000000000000000000000614f45565b60006f8000000000000000000000000000000082131561418f5761418f610a1860018461500e565b600082136141a5576141a5610a1860008461500e565b6f800000000000000000000000000000008214156141c557506000610c85565b640733048c5a82136141f857507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610c85565b60008060006a01c8464f761647600000008513614257577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e9000000000000085136142b5577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d780000000000000008513614317577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec00000000000000000851361437b577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136143df577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de700000000000000000008513614443577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be582800000000000000000085136144a7577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c000000000000000000851361450b577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d851361456f577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816145e557fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0383028161461657fe5b05840193506f800000000000000000000000000000008183028161463657fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161466757fe5b05840193506f800000000000000000000000000000008183028161468757fe5b059150700400000000000000000000000000000000836f92492492492492492492492492492492038302816146b857fe5b05840193506f80000000000000000000000000000000818302816146d857fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e0383028161470957fe5b05840193506f800000000000000000000000000000008183028161472957fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161475a57fe5b05840193506f800000000000000000000000000000008183028161477a57fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d89038302816147ab57fe5b05840193506f80000000000000000000000000000000818302816147cb57fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816147fc57fe5b0584019350505050919050565b60006134296141428585614f45565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561484a57506000610c85565b8161486657506f80000000000000000000000000000000610c85565b600082131561487d5761487d610a1860018461500e565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816148e957fe5b05905080670168244fdac7800002830192506f800000000000000000000000000000008282028161491657fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161494257fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161496e57fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161499a57fe5b059050806536e0f639b80002830192506f80000000000000000000000000000000828202816149c557fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816149f057fe5b05905080649c197dcc0002830192506f8000000000000000000000000000000082820281614a1a57fe5b05905080640e30dce40002830192506f8000000000000000000000000000000082820281614a4457fe5b0590508064012ebd130002830192506f8000000000000000000000000000000082820281614a6e57fe5b059050806317499f0002830192506f8000000000000000000000000000000082820281614a9757fe5b059050806301a9d48002830192506f8000000000000000000000000000000082820281614ac057fe5b05905080621c638002830192506f8000000000000000000000000000000082820281614ae857fe5b059050806201c63802830192506f8000000000000000000000000000000082820281614b1057fe5b05905080611ab802830192506f8000000000000000000000000000000082820281614b3757fe5b0590508061017c02830192506f8000000000000000000000000000000082820281614b5e57fe5b05905080601402830192506f8000000000000000000000000000000082820281614b8457fe5b600095909503946721c3677c82b400009190059384010582016f8000000000000000000000000000000001929050701000000000000000000000000000000000841615614bf3577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b700800000000000000000000000000000000841615614c35577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614c7757701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614cb9577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614cfb5770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614d3b576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614d7b576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614dbb576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614dfb576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614e1f8484614f45565b81614e2657fe5b059392505050565b600080821215614e4657614e46610a18600184614f04565b6000614e528484614f45565b905060008113614e66576000915050610fcf565b607f1c9392505050565b60200151151590565b60008085614e8b575082905081614ed2565b83614e9a575084905083614ed2565b614ebd614ead858763ffffffff613e9516565b613acc888663ffffffff613e9516565b9150614ecf858463ffffffff613e9516565b90505b94509492505050565b600080614ef984846f8000000000000000000000000000000061503d565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614f3357fe5b8360405160240161230792919061581c565b600082614f5457506000610fcf565b5081810281838281614f6257fe5b05141580614f79575082828281614f7557fe5b0514155b15610fcf57610fcf610a18600185856150ab565b600081614fa357614fa3610a18600285856150ab565b7f800000000000000000000000000000000000000000000000000000000000000083148015614ff15750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b1561500557615005610a18600385856150ab565b818381614e2657fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614f3357fe5b6000808285118061504d57508284115b156150a2576000848610156150625784615064565b855b9050615076818563ffffffff613ec616565b9050615088868263ffffffff613ec616565b925061509a858263ffffffff613ec616565b91505061327a565b50929391925050565b60607f8c12dfe7000000000000000000000000000000000000000000000000000000008460038111156150da57fe5b84846040516024016136679392919061582f565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b8154818355818111156112fb576000838152602090206112fb9181019083016151b3565b604051806040016040528060008152602001600081525090565b610bed91905b808211156151cd57600081556001016151b9565b5090565b6000604082840312156125ca578081fd5b6000602082840312156151f3578081fd5b8135610fcc81615854565b60006020828403121561520f578081fd5b8151610fcc81615854565b60008060006060848603121561522e578182fd5b833561523981615854565b9250602084013561524981615854565b929592945050506040919091013590565b6000806040838503121561526c578182fd5b823561527781615854565b946020939093013593505050565b60008060408385031215615297578182fd5b82356152a281615854565b915060208301356152b281615884565b809150509250929050565b6000602082840312156152ce578081fd5b8151610fcc81615876565b6000602082840312156152ea578081fd5b5035919050565b60008060408385031215615303578182fd5b8235915060208301356152b281615854565b60008060408385031215615327578182fd5b50508035926020909101359150565b60008060408385031215615348578182fd5b82359150602083013563ffffffff811681146152b2578182fd5b600060208284031215615373578081fd5b8135610fcc81615884565b600080600060a08486031215615392578283fd5b61539c85856151d1565b92506153ab85604086016151d1565b9150608084013590509250925092565b6000602082840312156153cc578081fd5b5051919050565b600080600080600060a086880312156153ea578283fd5b8535945060208601356153fc81615891565b935060408601359250606086013561541381615891565b9150608086013561542381615891565b809150509295509295909350565b60008060408385031215615443578182fd5b823561544e81615891565b915060208301356152b281615876565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561554b57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101615517565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b60608101600485106155c857fe5b938152602081019290925260409091015290565b60408101600384106155ea57fe5b9281526020015290565b604081016156018461584a565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016156338561584a565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610f7357fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610f7357600080fd5b8015158114610f7357600080fd5b60028110610f7357600080fd5b63ffffffff81168114610f7357600080fdfea365627a7a72315820cd4dcb64a07325df26d38404ffcca0f57d30f570cbe815c03c543316add5e5a46c6578706572696d656e74616cf564736f6c634300050c0040" }, "deployedBytecode": { - "object": "0x6080604052600436106103295760003560e01c80638da5cb5b116101a5578063bb7ef7e0116100ec578063e8eeb3f811610095578063f18765321161006f578063f1876532146108bf578063f252b7a1146108df578063f2fde38b146108ff578063ff691b111461091f57610329565b8063e8eeb3f814610875578063e907f0031461088a578063ee99205c146108aa57610329565b8063e0ee036e116100c6578063e0ee036e1461082b578063e1c7392a14610840578063e804d0a41461085557610329565b8063bb7ef7e0146107c9578063c18c9141146107e9578063d39de6e91461080957610329565b8063a694fc3a1161014e578063b3e3337911610128578063b3e3337914610769578063b510879f14610789578063b9181611146107a957610329565b8063a694fc3a1461071f578063b05315241461073f578063b2baa33e1461075457610329565b8063a26171e21161017f578063a26171e2146106e2578063a3b4a327146106f7578063a657e5791461070a57610329565b80638da5cb5b1461068d5780639ad26744146106a25780639c3ccc82146106c257610329565b80634bcc3f6711610274578063624a72321161021d57806370712939116101f757806370712939146106165780637667180814610636578063816667961461064b5780638a2e271a1461066d57610329565b8063624a7232146105cc57806363403801146105e157806368a7d6cd146105f657610329565b80635bd4ab731161024e5780635bd4ab73146105595780635d91121d146105865780635e615a6b146105a657610329565b80634bcc3f67146104f7578063587da0231461052457806358f6c7e31461053957610329565b80633c277fc5116102d657806344a6958b116102b057806344a6958b1461048a57806346b97959146104aa578063494503d4146104d757610329565b80633c277fc51461041b5780633e4ad7321461043d57806342f1181e1461046a57610329565b80632a94c279116103075780632a94c2791461039b5780632e17de78146103ca57806338229d93146103ea57610329565b806301e28d841461032e5780630b9663db146103505780631e7ff8f61461037b575b600080fd5b34801561033a57600080fd5b5061034e610349366004614fb8565b61093f565b005b34801561035c57600080fd5b50610365610a0d565b6040516103729190615318565b60405180910390f35b34801561038757600080fd5b50610365610396366004614fb8565b610b5a565b3480156103a757600080fd5b506103bb6103b63660046150cc565b610bf4565b60405161037293929190615505565b3480156103d657600080fd5b5061034e6103e5366004615090565b610c20565b3480156103f657600080fd5b5061040a610405366004615090565b610dd5565b604051610372959493929190615536565b34801561042757600080fd5b50610430610e04565b6040516103729190615215565b34801561044957600080fd5b5061045d610458366004615090565b610e20565b60405161037291906154c6565b34801561047657600080fd5b5061034e610485366004614fb8565b610e3f565b34801561049657600080fd5b5061045d6104a536600461503d565b610e53565b3480156104b657600080fd5b506104ca6104c5366004615090565b610eb2565b6040516103729190615472565b3480156104e357600080fd5b506104306104f2366004615090565b610efd565b34801561050357600080fd5b50610517610512366004615090565b610f31565b6040516103729190615493565b34801561053057600080fd5b50610365610f93565b34801561054557600080fd5b5061034e610554366004615135565b610f99565b34801561056557600080fd5b50610579610574366004614fb8565b611196565b604051610372919061530d565b34801561059257600080fd5b5061034e6105a13660046150ed565b6111ab565b3480156105b257600080fd5b506105bb611274565b604051610372959493929190615559565b3480156105d857600080fd5b5061043061129d565b3480156105ed57600080fd5b506103656112b9565b34801561060257600080fd5b506103656106113660046151e8565b6112bf565b34801561062257600080fd5b5061034e610631366004614fb8565b6113f8565b34801561064257600080fd5b506103656114ad565b34801561065757600080fd5b506106606114b3565b604051610372919061559d565b34801561067957600080fd5b5061034e610688366004614fb8565b6114bf565b34801561069957600080fd5b50610430611581565b3480156106ae57600080fd5b5061034e6106bd366004615013565b61159d565b3480156106ce57600080fd5b5061034e6106dd36600461518a565b6115af565b3480156106ee57600080fd5b50610365611629565b61034e610705366004614fd3565b61162f565b34801561071657600080fd5b5061036561187f565b34801561072b57600080fd5b5061034e61073a366004615090565b611885565b34801561074b57600080fd5b5061036561199a565b34801561076057600080fd5b506103656119a0565b34801561077557600080fd5b5061034e610784366004615090565b6119be565b34801561079557600080fd5b5061034e6107a4366004615090565b6119fe565b3480156107b557600080fd5b506105796107c4366004614fb8565b611a08565b3480156107d557600080fd5b506103656107e4366004615090565b611a1d565b3480156107f557600080fd5b50610365610804366004615090565b611aa8565b34801561081557600080fd5b5061081e611aba565b60405161037291906152b4565b34801561083757600080fd5b50610660611b29565b34801561084c57600080fd5b5061034e611b35565b34801561086157600080fd5b5061045d610870366004615119565b611b4f565b34801561088157600080fd5b50610660611c9f565b34801561089657600080fd5b506103656108a53660046150a8565b611cb3565b3480156108b657600080fd5b50610430611d50565b3480156108cb57600080fd5b506103656108da366004614fb8565b611d6c565b3480156108eb57600080fd5b5061045d6108fa366004615013565b611d7e565b34801561090b57600080fd5b5061034e61091a366004614fb8565b611dbf565b34801561092b57600080fd5b5061034e61093a366004615090565b611e62565b61094761208f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610987576109876109826001836120b2565b612154565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a02908390615215565b60405180910390a150565b600c5460009081610a2582600163ffffffff61215c16565b6000818152601660205260409020600101549091508015610a4d57610a4d610982838361217b565b610a55612198565b610a5d61220b565b600084815260166020526040902055610a74614ea0565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610af6949193929161551b565b60405180910390a2610b066122af565b6020810151610b4d57805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610b4491600091615363565b60405180910390a25b6020015193505050505b90565b6000610b6461129d565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610b9c9190615215565b60206040518083038186803b158015610bb457600080fd5b505afa158015610bc8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610bec9190810190615172565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610c29614ecf565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610c76906122f2565b90506000610ca882602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff16612398565b905080841115610cbf57610cbf61098285836123ae565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0d90856123cb565b610d1561129d565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610d4f92919061528e565b600060405180830381600087803b158015610d6957600080fd5b505af1158015610d7d573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610dc79190615318565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b60185473ffffffffffffffffffffffffffffffffffffffff1690565b610e28614ecf565b6000828152600760205260409020610bec906122f2565b610e47612452565b610e5081612499565b50565b610e5b614ecf565b610ea960056000846001811115610e6e57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff8816825290925290206122f2565b90505b92915050565b610eba614eef565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b60028181548110610f0a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b610f39614f10565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b600d5481565b3381610fa55750611191565b6000610fb46020860186615119565b6001811115610fbf57fe5b148015610fe357506000610fd66020850185615119565b6001811115610fe157fe5b145b15610fee5750611191565b6001610ffd6020860186615119565b600181111561100857fe5b141561101d5761101d846020013582846125ca565b600161102c6020850185615119565b600181111561103757fe5b141561104c5761104c83602001358284612663565b600060058161105e6020880188615119565b600181111561106957fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff86168252835290812092509060059082906110b390880188615119565b60018111156110be57fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff87168252909252902090506111018282866126fc565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d908890611153908c615119565b600181111561115e57fe5b61116b60208c018c615119565b600181111561117657fe5b60405161118593929190615584565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b816111b5816127f5565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff166111ed84828561282e565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610dc790849087906155ae565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b60195473ffffffffffffffffffffffffffffffffffffffff1690565b60115481565b60085460009033906112d890600163ffffffff61287516565b600881905591506112ed82620f42408661282e565b6112f5614f10565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906113d990859085908990615321565b60405180910390a183156113f0576113f0836119be565b505092915050565b611400612452565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166114395761143961098282612891565b60005b6002548110156114a9578173ffffffffffffffffffffffffffffffffffffffff166002828154811061146a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614156114a15761149c8282612930565b6114a9565b60010161143c565b5050565b600c5481565b60145463ffffffff1681565b6114c761208f565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff1615611503576115036109826000836120b2565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a02908390615215565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6115a5612452565b6114a98282612930565b6115b761208f565b6115c48585858585612b7f565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b15801561160a57600080fd5b505afa15801561161e573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff166116525761165261098233612c42565b61165b81612c5d565b3461173557611668610e04565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b81526004016116a49392919061525d565b602060405180830381600087803b1580156116be57600080fd5b505af11580156116d2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506116f69190810190615074565b611735576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c9061543b565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260096020526040902054806117665750611191565b600061177182610e20565b602001516bffffffffffffffffffffffff169050601354811015611796575050611191565b600c54600083815260156020908152604080832084845282528083206016909252909120815480611845576000806117ce8888612c7e565b6002870182905560018701819055600386015491935091506117f6908263ffffffff61287516565b60038501556001808501546118109163ffffffff61287516565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b611855818863ffffffff61287516565b8355600282015461186c908863ffffffff61287516565b8260020181905550505050505050505050565b60085481565b3361188e61129d565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b81526004016118c892919061528e565b600060405180830381600087803b1580156118e257600080fd5b505af11580156118f6573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc602052604090206119489083612d0a565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a8360405161198e9190615318565b60405180910390a25050565b60175481565b60006119b9601154600d5461287590919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610e508133612d74565b60016020526000908152604090205460ff1681565b6000611a27614f10565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611a8b85612f4c565b91509150611a9e83602001518383613009565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611b1f57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611af4575b5050505050905090565b60125463ffffffff1681565b611b3d61208f565b611b4561304a565b611b4d61305d565b565b611b57614ecf565b60016000526004602052611b8a7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe056122f2565b90506000826001811115611b9a57fe5b1415610bef576000611baa61129d565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611bef57600080fd5b505afa158015611c03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611c279190810190615172565b9050611c56611c5183602001516bffffffffffffffffffffffff168361215c90919063ffffffff16565b613088565b6bffffffffffffffffffffffff90811660208401526040830151611c8691611c519184911663ffffffff61215c16565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611cbd614f10565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611d2186612f4c565b915091506000611d3684602001518484613009565b915050611d45878783856130ac565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611d86614ecf565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610ea9906122f2565b611dc7612452565b73ffffffffffffffffffffffffffffffffffffffff8116611df257611ded6109826131f9565b610e50565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c546000611e7882600163ffffffff61215c16565b9050611e82614ea0565b50600081815260166020908152604091829020825160a08101845281548152600182015492810183905260028201549381019390935260038101546060840152600401546080830152611ed757505050610e50565b611edf614eef565b5060008481526015602090815260408083208584528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252611f2d5750505050610e50565b6000858152601560209081526040808320868452909152812081815560018101829055600201819055611f608284613230565b9050600080611f74888486604001516132a5565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c8484604051611fab929190615363565b60405180910390a36000611fc5838363ffffffff61287516565b6080870151909150611fdd908263ffffffff61287516565b6080870181905260008881526016602090815260409091206004019190915586015161201090600163ffffffff61215c16565b602080880182815260008a815260169092526040909120600101919091555161161e576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b29161206e908263ffffffff61215c16565b60405161207c929190615363565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611b4d57611b4d610982336133f5565b606063b9588e4360e01b83836040516024016120cf9291906153ab565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b6000828211156121755761217561098260028585613410565b50900390565b606063614b800a60e01b83836040516024016120cf929190615363565b30318015610e50576121a8610e04565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b1580156121ef57600080fd5b505af1158015612203573d6000803e3d6000fd5b505050505050565b60006119b960175461221b610e04565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016122539190615215565b60206040518083038186803b15801561226b57600080fd5b505afa15801561227f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506122a39190810190615172565b9063ffffffff61215c16565b4260006122ba6119a0565b9050818111156122d1576122d161098282846134b5565b600c546000906122e890600163ffffffff61287516565b600c555050600d55565b6122fa614ecf565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c5490918111156123925761236d816134d2565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b60008183106123a75781610ea9565b5090919050565b60606384c8b7c960e01b83836040516024016120cf929190615363565b6123d3614ecf565b6123dc836122f2565b9050612406611c518383604001516bffffffffffffffffffffffff1661215c90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161243591611c5191168463ffffffff61215c16565b6bffffffffffffffffffffffff16602082015261119183826134f2565b60005473ffffffffffffffffffffffffffffffffffffffff163314611b4d57600054611b4d9061098290339073ffffffffffffffffffffffffffffffffffffffff166135ac565b73ffffffffffffffffffffffffffffffffffffffff81166124bf576124bf6109826135c9565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff16156124f9576124f961098282613600565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b6125d38361361b565b6125dd8383612d74565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126179082613652565b600083815260076020526040902061262f9082613652565b600160005260046020526111917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0582613652565b61266c8361361b565b6126768383612d74565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206126b090826136aa565b60008381526007602052604090206126c890826136aa565b600160005260046020526111917fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826136aa565b61270683836136e5565b1561271057611191565b612718614ecf565b612721846122f2565b905061272b614ecf565b612734846122f2565b905081604001516bffffffffffffffffffffffff1683111561276f5761276f6109828484604001516bffffffffffffffffffffffff166123ae565b604082015161279690611c51906bffffffffffffffffffffffff168563ffffffff61215c16565b6bffffffffffffffffffffffff9081166040808501919091528201516127c791611c5191168563ffffffff61287516565b6bffffffffffffffffffffffff1660408201526127e485836134f2565b6127ee84826134f2565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff163381146114a9576114a961098233846136ec565b620f424063ffffffff821611156128535761284e61098260008584613709565b611191565b8163ffffffff168163ffffffff16106111915761119161098260018584613709565b600082820183811015610ea957610ea961098260008686613410565b606063eb5108a260e01b826040516024016128ac9190615215565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff166129695761296961098283612891565b60025481106129845761298461098282600280549050613728565b8173ffffffffffffffffffffffffffffffffffffffff16600282815481106129a857fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612a0a57612a0a610982600283815481106129e257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1684613745565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612a8557fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612ab857fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612b379082614f27565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612c339087908790879087908790615559565b60405180910390a15050505050565b606063b56d2df060e01b826040516024016128ac9190615215565b803414158015612c6c57503415155b15610e5057610e506109828234613762565b6000828152600a602052604081205481908190612cb19073ffffffffffffffffffffffffffffffffffffffff1686611d7e565b602001516bffffffffffffffffffffffff169050612cd5848263ffffffff61215c16565b601254909350612d0090612cf39063ffffffff16620f42408661377f565b829063ffffffff61287516565b9150509250929050565b612d12614ecf565b612d1b836122f2565b9050612d45611c518383604001516bffffffffffffffffffffffff1661287590919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161243591611c5191168463ffffffff61287516565b612d7d826137a1565b6000612d8c83836000806130ac565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208784529091529020909150612dc8906122f2565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff95861602179092167401000000000000000000000000000000000000000093909216929092021790558015612f4357612ead8382613815565b612eb5610e04565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b8152600401612eef92919061528e565b602060405180830381600087803b158015612f0957600080fd5b505af1158015612f1d573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250612f419190810190615074565b505b6111918361385d565b6000806000612f676001600c5461215c90919063ffffffff16565b9050612f71614eef565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290612ff9908290613230565b9350806040015192505050915091565b6000808261301957839150613042565b61302d63ffffffff8616620f42408661386a565b915061303f848363ffffffff61215c16565b90505b935093915050565b6130526138a0565b42600d556001600c55565b6130656138b5565b620d2f00620dbba068056bc75e2d63100000600260036127ee8585858585612b7f565b806bffffffffffffffffffffffff81168114610bef57610bef61098260028461391a565b600c546000906130ba614ecf565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811694840194909452740100000000000000000000000000000000000000009091049092169281019290925282141561315b576000925050506131f1565b61316781838787613937565b815190935060009061318a9067ffffffffffffffff16600163ffffffff61287516565b90506131c86131bb8984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff16856139ba565b859063ffffffff61287516565b93506131eb6131bb8984604001516bffffffffffffffffffffffff1684876139ba565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061323e57610eac565b8151835160408401516020860151606086015160145461327495949392919063ffffffff80821691640100000000900416613a53565b608083015183519192506000916132909163ffffffff61215c16565b90508181101561329e578091505b5092915050565b6000806132b0614f10565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff16908201819052613314908686613009565b909350915082156133d157613327610e04565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb9161337d91879060040161528e565b602060405180830381600087803b15801561339757600080fd5b505af11580156133ab573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506133cf9190810190615074565b505b81156133ec576133e18683613b16565b6133ec868386613b57565b50935093915050565b606063b65a25b960e01b826040516024016128ac9190615215565b606063e946c1bb60e01b84848460405160240161342f93929190615371565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016120cf929190615363565b8067ffffffffffffffff81168114610bef57610bef61098260018461391a565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b83836040516024016120cf929190615236565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b826040516024016128ac9190615215565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610e5057610e50610982826000613c40565b61365a614ecf565b613663836122f2565b905061368d611c518383604001516bffffffffffffffffffffffff1661215c90919063ffffffff16565b6bffffffffffffffffffffffff16604082015261119183826134f2565b6136b2614ecf565b6136bb836122f2565b905061368d611c518383604001516bffffffffffffffffffffffff1661287590919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016120cf92919061528e565b60606322df959760e01b84848460405160240161342f939291906153dd565b606063e9f8377160e01b83836040516024016120cf929190615363565b606063140a84db60e01b83836040516024016120cf929190615236565b60606331d7a50560e01b83836040516024016120cf929190615363565b60006131f183613795868563ffffffff613c5d16565b9063ffffffff613c8e16565b600c546000906137b890600163ffffffff61215c16565b90506137c2614eef565b506000828152601560209081526040808320848452825291829020825160608101845281548082526001830154938201939093526002909101549281019290925215611191576111916109828484613cb8565b6000828152600b6020526040902054613834908263ffffffff61215c16565b6000838152600b6020526040902055601754613856908263ffffffff61215c16565b6017555050565b610e508160006001613b57565b60006131f18361379561388482600163ffffffff61215c16565b613894888763ffffffff613c5d16565b9063ffffffff61287516565b600d5415611b4d57611b4d6109826000613cd5565b601154158015906138cd575060125463ffffffff1615155b80156138da575060135415155b80156138ed575060145463ffffffff1615155b80156139085750601454640100000000900463ffffffff1615155b15611b4d57611b4d6109826001613cd5565b606063c996af7b60e01b83836040516024016120cf929190615393565b6000821580613944575081155b15613951575060006131f1565b600061396485600163ffffffff61215c16565b865167ffffffffffffffff161015613980578560400151613986565b85602001515b6bffffffffffffffffffffffff169050806139a55760009150506131f1565b6139b084848361377f565b9695505050505050565b60008315806139c857508183145b156139d5575060006131f1565b818310613a0e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172c90615404565b613a16614f4b565b613a208685613d14565b9050613a2a614f4b565b613a348785613d14565b9050611d4581600001518260200151846000015185602001518a613e32565b600080613a608888613ebe565b90506000613a6e8787613ebe565b9050811580613a7b575080155b15613a8c575060009150611d459050565b600081831315613aa557613aa08284613f10565b613aaf565b613aaf8383613f10565b9050613ad8613ad3613ac083613f2f565b8863ffffffff168863ffffffff166145d1565b6145e0565b905081831315613af157613aec8282613f10565b613afb565b613afb8282614bca565b9050613b07818c614bf6565b9b9a5050505050505050505050565b6000828152600b6020526040902054613b35908263ffffffff61287516565b6000838152600b6020526040902055601754613856908263ffffffff61287516565b6000838152600f6020526040902054600c5480821415613b78575050611191565b613b80614f4b565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613bb7614f4b565b613bc082614c38565b15613bf957613bd9826000015183602001518888614c41565b60208301819052818352613bed9190614ca3565b60208301528152613c04565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b83836040516024016120cf929190615353565b600082613c6c57506000610eac565b82820282848281613c7957fe5b0414610ea957610ea961098260018686613410565b600081613ca457613ca461098260038585613410565b6000828481613caf57fe5b04949350505050565b6060635caa0b0560e01b83836040516024016120cf929190615363565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613d0457fe5b6040516024016128ac91906155c5565b613d1c614f4b565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613d5481614c38565b15613d5e57610eac565b6000613d7183600163ffffffff61215c16565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613dac82614c38565b15613db75750610eac565b6000848152600f602052604090205483811015613e14576000858152600e6020908152604080832084845282529182902082518084019093528054835260010154908201529250613e0783614c38565b15613e145750610eac9050565b50506040805180820190915260008152600160208201529392505050565b600081613e4157506000613eb5565b83613e6157613e5a85613795848963ffffffff613c5d16565b9050613eb5565b6000613e86613e76868863ffffffff613c5d16565b6122a3898763ffffffff613c5d16565b90506000613e9a828663ffffffff613c8e16565b9050613eb087613795868463ffffffff613c5d16565b925050505b95945050505050565b600080831215613ed657613ed6610982600185614ccc565b6000821215613eed57613eed610982600184614ccc565b610ea9613f0a846f80000000000000000000000000000000614d0d565b83614d3f565b6000610ea9613f0a846f80000000000000000000000000000000614d0d565b60006f80000000000000000000000000000000821315613f5757613f57610982600184614dc0565b60008213613f6d57613f6d610982600084614dc0565b6f80000000000000000000000000000000821415613f8d57506000610bef565b640733048c5a8213613fc057507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610bef565b60008060006a01c8464f76164760000000851361401f577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e90000000000000851361407d577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d7800000000000000085136140df577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec000000000000000008513614143577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136141a7577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de70000000000000000000851361420b577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be5828000000000000000000851361426f577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c00000000000000000085136142d3577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d8513614337577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816143ad57fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa038302816143de57fe5b05840193506f80000000000000000000000000000000818302816143fe57fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161442f57fe5b05840193506f800000000000000000000000000000008183028161444f57fe5b059150700400000000000000000000000000000000836f924924924924924924924924924924920383028161448057fe5b05840193506f80000000000000000000000000000000818302816144a057fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e038302816144d157fe5b05840193506f80000000000000000000000000000000818302816144f157fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161452257fe5b05840193506f800000000000000000000000000000008183028161454257fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d890383028161457357fe5b05840193506f800000000000000000000000000000008183028161459357fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816145c457fe5b0584019350505050919050565b60006131f1613f0a8585614d0d565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561461257506000610bef565b8161462e57506f80000000000000000000000000000000610bef565b600082131561464557614645610982600184614dc0565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816146b157fe5b05905080670168244fdac7800002830192506f80000000000000000000000000000000828202816146de57fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161470a57fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161473657fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161476257fe5b059050806536e0f639b80002830192506f800000000000000000000000000000008282028161478d57fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816147b857fe5b05905080649c197dcc0002830192506f80000000000000000000000000000000828202816147e257fe5b05905080640e30dce40002830192506f800000000000000000000000000000008282028161480c57fe5b0590508064012ebd130002830192506f800000000000000000000000000000008282028161483657fe5b059050806317499f0002830192506f800000000000000000000000000000008282028161485f57fe5b059050806301a9d48002830192506f800000000000000000000000000000008282028161488857fe5b05905080621c638002830192506f80000000000000000000000000000000828202816148b057fe5b059050806201c63802830192506f80000000000000000000000000000000828202816148d857fe5b05905080611ab802830192506f80000000000000000000000000000000828202816148ff57fe5b0590508061017c02830192506f800000000000000000000000000000008282028161492657fe5b05905080601402830192506f800000000000000000000000000000008282028161494c57fe5b600095909503946721c3677c82b400009190059384010582016f80000000000000000000000000000000019290507010000000000000000000000000000000008416156149bb577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b7008000000000000000000000000000000008416156149fd577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614a3f57701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614a81577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614ac35770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614b03576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614b43576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614b83576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614bc3576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614be78484614d0d565b81614bee57fe5b059392505050565b600080821215614c0e57614c0e610982600184614ccc565b6000614c1a8484614d0d565b905060008113614c2e576000915050610eac565b607f1c9392505050565b60200151151590565b60008085614c53575082905081614c9a565b83614c62575084905083614c9a565b614c85614c75858763ffffffff613c5d16565b613894888663ffffffff613c5d16565b9150614c97858463ffffffff613c5d16565b90505b94509492505050565b600080614cc184846f80000000000000000000000000000000614def565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614cfb57fe5b836040516024016120cf9291906155d3565b600082614d1c57506000610eac565b5081810281838281614d2a57fe5b0514610eac57610eac61098260018585614e5d565b600081614d5557614d5561098260028585614e5d565b7f800000000000000000000000000000000000000000000000000000000000000083148015614da35750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b15614db757614db761098260038585614e5d565b818381614bee57fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614cfb57fe5b60008082851180614dff57508284115b15614e5457600084861015614e145784614e16565b855b9050614e28818563ffffffff613c8e16565b9050614e3a868263ffffffff613c8e16565b9250614e4c858263ffffffff613c8e16565b915050613042565b50929391925050565b60607f8c12dfe700000000000000000000000000000000000000000000000000000000846003811115614e8c57fe5b848460405160240161342f939291906155e6565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b81548183558181111561119157600083815260209020611191918101908301614f65565b604051806040016040528060008152602001600081525090565b610b5791905b80821115614f7f5760008155600101614f6b565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114610eac57600080fd5b600060408284031215612392578081fd5b600060208284031215614fc9578081fd5b610ea98383614f83565b600080600060608486031215614fe7578182fd5b8335614ff28161560b565b925060208401356150028161560b565b929592945050506040919091013590565b60008060408385031215615025578182fd5b61502f8484614f83565b946020939093013593505050565b6000806040838503121561504f578182fd5b6150598484614f83565b915060208301356150698161563b565b809150509250929050565b600060208284031215615085578081fd5b8151610ea98161562d565b6000602082840312156150a1578081fd5b5035919050565b600080604083850312156150ba578182fd5b8235915060208301356150698161560b565b600080604083850312156150de578182fd5b50508035926020909101359150565b600080604083850312156150ff578182fd5b82359150602083013563ffffffff81168114615069578182fd5b60006020828403121561512a578081fd5b8135610ea98161563b565b600080600060a08486031215615149578283fd5b6151538585614fa7565b92506151628560408601614fa7565b9150608084013590509250925092565b600060208284031215615183578081fd5b5051919050565b600080600080600060a086880312156151a1578283fd5b8535945060208601356151b381615648565b93506040860135925060608601356151ca81615648565b915060808601356151da81615648565b809150509295509295909350565b600080604083850312156151fa578182fd5b823561520581615648565b915060208301356150698161562d565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561530257835173ffffffffffffffffffffffffffffffffffffffff168352602093840193909201916001016152ce565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b606081016004851061537f57fe5b938152602081019290925260409091015290565b60408101600384106153a157fe5b9281526020015290565b604081016153b884615601565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016153ea85615601565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610e5057fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610e5057600080fd5b8015158114610e5057600080fd5b60028110610e5057600080fd5b63ffffffff81168114610e5057600080fdfea365627a7a72315820405f679c9973463d3088bfe457347d17202e3319adf7067235fc4905ae0f29646c6578706572696d656e74616cf564736f6c634300050c0040" + "object": "0x6080604052600436106103555760003560e01c80639051c3ee116101bb578063bb7ef7e0116100f7578063e8eeb3f811610095578063f18765321161006f578063f187653214610955578063f252b7a114610975578063f2fde38b14610995578063ff691b11146109b557610355565b8063e8eeb3f81461090b578063e907f00314610920578063ee99205c1461094057610355565b8063dcb31f76116100d1578063dcb31f76146108ac578063e0ee036e146108c1578063e1c7392a146108d6578063e804d0a4146108eb57610355565b8063bb7ef7e01461084a578063c18c91411461086a578063d39de6e91461088a57610355565b8063a694fc3a11610164578063b2baa33e1161013e578063b2baa33e146107d5578063b3e33379146107ea578063b510879f1461080a578063b91816111461082a57610355565b8063a694fc3a14610780578063abe0906a146107a0578063b0531524146107c057610355565b8063a26171e211610195578063a26171e214610743578063a3b4a32714610758578063a657e5791461076b57610355565b80639051c3ee146106ee5780639ad26744146107035780639c3ccc821461072357610355565b80634e67339f116102955780636340380111610233578063766718081161020d578063766718081461068257806381666796146106975780638a2e271a146106b95780638da5cb5b146106d957610355565b8063634038011461062d57806368a7d6cd14610642578063707129391461066257610355565b80635bd4ab731161026f5780635bd4ab73146105a55780635d91121d146105d25780635e615a6b146105f2578063624a72321461061857610355565b80634e67339f14610550578063587da0231461057057806358f6c7e31461058557610355565b80633c277fc51161030257806344a6958b116102dc57806344a6958b146104b657806346b97959146104d6578063494503d4146105035780634bcc3f671461052357610355565b80633c277fc5146104475780633e4ad7321461046957806342f1181e1461049657610355565b80632a94c279116103335780632a94c279146103c75780632e17de78146103f657806338229d931461041657610355565b806301e28d841461035a5780630b9663db1461037c5780631e7ff8f6146103a7575b600080fd5b34801561036657600080fd5b5061037a6103753660046151e2565b6109d5565b005b34801561038857600080fd5b50610391610aa3565b60405161039e9190615561565b60405180910390f35b3480156103b357600080fd5b506103916103c23660046151e2565b610bf0565b3480156103d357600080fd5b506103e76103e2366004615315565b610c8a565b60405161039e9392919061574e565b34801561040257600080fd5b5061037a6104113660046152d9565b610cb6565b34801561042257600080fd5b506104366104313660046152d9565b610e6b565b60405161039e95949392919061577f565b34801561045357600080fd5b5061045c610e9a565b60405161039e919061545e565b34801561047557600080fd5b506104896104843660046152d9565b610f43565b60405161039e919061570f565b3480156104a257600080fd5b5061037a6104b13660046151e2565b610f62565b3480156104c257600080fd5b506104896104d1366004615285565b610f76565b3480156104e257600080fd5b506104f66104f13660046152d9565b610fd5565b60405161039e91906156bb565b34801561050f57600080fd5b5061045c61051e3660046152d9565b611020565b34801561052f57600080fd5b5061054361053e3660046152d9565b611054565b60405161039e91906156dc565b34801561055c57600080fd5b5061037a61056b3660046151e2565b6110b6565b34801561057c57600080fd5b506103916110fd565b34801561059157600080fd5b5061037a6105a036600461537e565b611103565b3480156105b157600080fd5b506105c56105c03660046151e2565b611300565b60405161039e9190615556565b3480156105de57600080fd5b5061037a6105ed366004615336565b611315565b3480156105fe57600080fd5b506106076113de565b60405161039e9594939291906157a2565b34801561062457600080fd5b5061045c611407565b34801561063957600080fd5b50610391611472565b34801561064e57600080fd5b5061039161065d366004615431565b611478565b34801561066e57600080fd5b5061037a61067d3660046151e2565b6115b1565b34801561068e57600080fd5b50610391611666565b3480156106a357600080fd5b506106ac61166c565b60405161039e91906157e6565b3480156106c557600080fd5b5061037a6106d43660046151e2565b611678565b3480156106e557600080fd5b5061045c61173a565b3480156106fa57600080fd5b5061045c611756565b34801561070f57600080fd5b5061037a61071e36600461525a565b611772565b34801561072f57600080fd5b5061037a61073e3660046153d3565b611784565b34801561074f57600080fd5b506103916117fe565b61037a61076636600461521a565b611804565b34801561077757600080fd5b50610391611a54565b34801561078c57600080fd5b5061037a61079b3660046152d9565b611a5a565b3480156107ac57600080fd5b5061037a6107bb3660046151e2565b611b6f565b3480156107cc57600080fd5b50610391611bb6565b3480156107e157600080fd5b50610391611bbc565b3480156107f657600080fd5b5061037a6108053660046152d9565b611bda565b34801561081657600080fd5b5061037a6108253660046152d9565b611c1a565b34801561083657600080fd5b506105c56108453660046151e2565b611c24565b34801561085657600080fd5b506103916108653660046152d9565b611c39565b34801561087657600080fd5b506103916108853660046152d9565b611cc4565b34801561089657600080fd5b5061089f611cd6565b60405161039e91906154fd565b3480156108b857600080fd5b5061045c611d45565b3480156108cd57600080fd5b506106ac611d61565b3480156108e257600080fd5b5061037a611d6d565b3480156108f757600080fd5b50610489610906366004615362565b611d87565b34801561091757600080fd5b506106ac611ed7565b34801561092c57600080fd5b5061039161093b3660046152f1565b611eeb565b34801561094c57600080fd5b5061045c611f88565b34801561096157600080fd5b506103916109703660046151e2565b611fa4565b34801561098157600080fd5b5061048961099036600461525a565b611fb6565b3480156109a157600080fd5b5061037a6109b03660046151e2565b611ff7565b3480156109c157600080fd5b5061037a6109d03660046152d9565b61209a565b6109dd6122c7565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16610a1d57610a1d610a186001836122ea565b61238c565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055517ff50d0d312d501878616eb5e78ebf3ed6dcd3955aaef8165af9c6b057cc4832fb90610a9890839061545e565b60405180910390a150565b600c5460009081610abb82600163ffffffff61239416565b6000818152601660205260409020600101549091508015610ae357610ae3610a1883836123b3565b610aeb6123d0565b610af3612443565b600084815260166020526040902055610b0a6150ee565b50600083815260166020908152604091829020825160a08101845281548082526001830154938201849052600283015482860181905260038401546060840181905260049094015460808401529451919488947fbb4a26fa0ace13ee4da343896c20eaa44a618fb9071fdd8c2e2c960a4583189d94610b8c9491939291615764565b60405180910390a2610b9c6124e7565b6020810151610be357805160405185917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b291610bda916000916155ac565b60405180910390a25b6020015193505050505b90565b6000610bfa611407565b73ffffffffffffffffffffffffffffffffffffffff166370a08231836040518263ffffffff1660e01b8152600401610c32919061545e565b60206040518083038186803b158015610c4a57600080fd5b505afa158015610c5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610c8291908101906153bb565b90505b919050565b601560209081526000928352604080842090915290825290208054600182015460029092015490919083565b33610cbf61511d565b73ffffffffffffffffffffffffffffffffffffffff821660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610d0c9061252a565b90506000610d3e82602001516bffffffffffffffffffffffff1683604001516bffffffffffffffffffffffff166125d0565b905080841115610d5557610d55610a1885836125e6565b73ffffffffffffffffffffffffffffffffffffffff831660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020610da39085612603565b610dab611407565b73ffffffffffffffffffffffffffffffffffffffff16639470b0bd84866040518363ffffffff1660e01b8152600401610de59291906154d7565b600060405180830381600087803b158015610dff57600080fd5b505af1158015610e13573d6000803e3d6000fd5b505050508273ffffffffffffffffffffffffffffffffffffffff167f85082129d87b2fe11527cb1b3b7a520aeb5aa6913f88a3d8757fe40d1db02fdd85604051610e5d9190615561565b60405180910390a250505050565b601660205260009081526040902080546001820154600283015460038401546004909401549293919290919085565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dcb31f766040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0557600080fd5b505afa158015610f19573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250610f3d91908101906151fe565b91505090565b610f4b61511d565b6000828152600760205260409020610c829061252a565b610f6a61268a565b610f73816126d1565b50565b610f7e61511d565b610fcc60056000846001811115610f9157fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff88168252909252902061252a565b90505b92915050565b610fdd61513d565b506000908152601560209081526040808320600c548452825291829020825160608101845281548152600182015492810192909252600201549181019190915290565b6002818154811061102d57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b61105c61515e565b506000908152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff169082015290565b601980547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600d5481565b338161110f57506112fb565b600061111e6020860186615362565b600181111561112957fe5b14801561114d575060006111406020850185615362565b600181111561114b57fe5b145b1561115857506112fb565b60016111676020860186615362565b600181111561117257fe5b14156111875761118784602001358284612802565b60016111966020850185615362565b60018111156111a157fe5b14156111b6576111b68360200135828461289b565b60006005816111c86020880188615362565b60018111156111d357fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff861682528352908120925090600590829061121d90880188615362565b600181111561122857fe5b60ff1681526020808201929092526040908101600090812073ffffffffffffffffffffffffffffffffffffffff871682529092529020905061126b828286612934565b60208086013590870180359073ffffffffffffffffffffffffffffffffffffffff8616907f7d3ad1dcf03b9027064d1d9a474a69e0cecc31324c541d3eb9b5e6fa2f106c8d9088906112bd908c615362565b60018111156112c857fe5b6112d560208c018c615362565b60018111156112e057fe5b6040516112ef939291906157cd565b60405180910390a45050505b505050565b60106020526000908152604090205460ff1681565b8161131f81612a2d565b6000838152600a602052604090205474010000000000000000000000000000000000000000900463ffffffff16611357848285612a66565b6000848152600a60205260409081902080547fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000063ffffffff8716021790555184907f8ea2a7a959bd25f226b7b0a4393613f7fdcaa8404e8bad96aa52dc1c1459016790610e5d90849087906157f7565b601154601254601354601454929363ffffffff9283169391928281169264010000000090041690565b600080600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639051c3ee6040518163ffffffff1660e01b815260040160206040518083038186803b158015610f0557600080fd5b60115481565b600854600090339061149190600163ffffffff612aad16565b600881905591506114a682620f424086612a66565b6114ae61515e565b5060408051808201825273ffffffffffffffffffffffffffffffffffffffff838116825263ffffffff87811660208085019182526000888152600a9091528590208451815492517fffffffffffffffffffffffff00000000000000000000000000000000000000009093169416939093177fffffffffffffffff00000000ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000919092160217905590517fcec6fc86ea644053f6edff1160dfe3fa5c61e7a5ef9f873f145bb03a0bd319e7906115929085908590899061556a565b60405180910390a183156115a9576115a983611bda565b505092915050565b6115b961268a565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff166115f2576115f2610a1882612ac9565b60005b600254811015611662578173ffffffffffffffffffffffffffffffffffffffff166002828154811061162357fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16141561165a576116558282612b68565b611662565b6001016115f5565b5050565b600c5481565b60145463ffffffff1681565b6116806122c7565b73ffffffffffffffffffffffffffffffffffffffff811660009081526010602052604090205460ff16156116bc576116bc610a186000836122ea565b73ffffffffffffffffffffffffffffffffffffffff81166000908152601060205260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055517f3e535d1ab441ef41c268fd9b52b478aee02d693c5ca2a84b5d26b89e0922e5e190610a9890839061545e565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b60195473ffffffffffffffffffffffffffffffffffffffff1681565b61177a61268a565b6116628282612b68565b61178c6122c7565b6117998585858585612db7565b3073ffffffffffffffffffffffffffffffffffffffff1663c6f3a4276040518163ffffffff1660e01b815260040160006040518083038186803b1580156117df57600080fd5b505afa1580156117f3573d6000803e3d6000fd5b505050505050505050565b60135481565b3360009081526010602052604090205460ff1661182757611827610a1833612e7a565b61183081612e95565b3461190a5761183d610e9a565b73ffffffffffffffffffffffffffffffffffffffff166323b872dd8330846040518463ffffffff1660e01b8152600401611879939291906154a6565b602060405180830381600087803b15801561189357600080fd5b505af11580156118a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506118cb91908101906152bd565b61190a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190190615684565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff83166000908152600960205260409020548061193b57506112fb565b600061194682610f43565b602001516bffffffffffffffffffffffff16905060135481101561196b5750506112fb565b600c54600083815260156020908152604080832084845282528083206016909252909120815480611a1a576000806119a38888612eb6565b6002870182905560018701819055600386015491935091506119cb908263ffffffff612aad16565b60038501556001808501546119e59163ffffffff612aad16565b6001850155604051889087907f14b098103235344975b17508c2391721cc9ac3f3fa2b56c7ff46f8480dfd074f90600090a350505b611a2a818863ffffffff612aad16565b83556002820154611a41908863ffffffff612aad16565b8260020181905550505050505050505050565b60085481565b33611a63611407565b73ffffffffffffffffffffffffffffffffffffffff166315cc36f282846040518363ffffffff1660e01b8152600401611a9d9291906154d7565b600060405180830381600087803b158015611ab757600080fd5b505af1158015611acb573d6000803e3d6000fd5b5050505073ffffffffffffffffffffffffffffffffffffffff811660009081527f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc60205260409020611b1d9083612f42565b8073ffffffffffffffffffffffffffffffffffffffff167febedb8b3c678666e7f36970bc8f57abf6d8fa2e828c0da91ea5b75bf68ed101a83604051611b639190615561565b60405180910390a25050565b601880547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60175481565b6000611bd5601154600d54612aad90919063ffffffff16565b905090565b3360008181526009602052604080822084905551839183917f5640833634fce74eb9211d1209a91dd5a1c8c6a751696bff9323b4db67f815139190a35050565b610f738133612fac565b60016020526000908152604090205460ff1681565b6000611c4361515e565b506000828152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611ca785613184565b91509150611cba83602001518383613241565b5095945050505050565b600b6020526000908152604090205481565b60606002805480602002602001604051908101604052809291908181526020018280548015611d3b57602002820191906000526020600020905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611d10575b5050505050905090565b60185473ffffffffffffffffffffffffffffffffffffffff1681565b60125463ffffffff1681565b611d756122c7565b611d7d613282565b611d85613295565b565b611d8f61511d565b60016000526004602052611dc27fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe0561252a565b90506000826001811115611dd257fe5b1415610c85576000611de2611407565b73ffffffffffffffffffffffffffffffffffffffff16639706e0c06040518163ffffffff1660e01b815260040160206040518083038186803b158015611e2757600080fd5b505afa158015611e3b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250611e5f91908101906153bb565b9050611e8e611e8983602001516bffffffffffffffffffffffff168361239490919063ffffffff16565b6132c0565b6bffffffffffffffffffffffff90811660208401526040830151611ebe91611e899184911663ffffffff61239416565b6bffffffffffffffffffffffff16604083015250919050565b601454640100000000900463ffffffff1681565b6000611ef561515e565b506000838152600a6020908152604080832081518083019092525473ffffffffffffffffffffffffffffffffffffffff8116825274010000000000000000000000000000000000000000900463ffffffff16918101919091529080611f5986613184565b915091506000611f6e84602001518484613241565b915050611f7d878783856132e4565b979650505050505050565b60035473ffffffffffffffffffffffffffffffffffffffff1681565b60096020526000908152604090205481565b611fbe61511d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526006602090815260408083208584529091529020610fcc9061252a565b611fff61268a565b73ffffffffffffffffffffffffffffffffffffffff811661202a57612025610a18613431565b610f73565b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83169081178255604051909133917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a350565b600c5460006120b082600163ffffffff61239416565b90506120ba6150ee565b50600081815260166020908152604091829020825160a0810184528154815260018201549281018390526002820154938101939093526003810154606084015260040154608083015261210f57505050610f73565b61211761513d565b50600084815260156020908152604080832085845282529182902082516060810184528154808252600183015493820193909352600290910154928101929092526121655750505050610f73565b60008581526015602090815260408083208684529091528120818155600181018290556002018190556121988284613468565b90506000806121ac888486604001516134dd565b9150915087877ff1116b309178aa62dcb6bf8c3b8bc2321724907c7ebf52192d14c8ce3aa9194c84846040516121e39291906155ac565b60405180910390a360006121fd838363ffffffff612aad16565b6080870151909150612215908263ffffffff612aad16565b6080870181905260008881526016602090815260409091206004019190915586015161224890600163ffffffff61239416565b602080880182815260008a81526016909252604090912060010191909155516117f3576080860151865188917fb463d19ecf455be65365092cf8e1db6934a0334cf8cd532ddf9964d01f36b5b2916122a6908263ffffffff61239416565b6040516122b49291906155ac565b60405180910390a2505050505050505050565b3360009081526001602052604090205460ff16611d8557611d85610a183361362d565b606063b9588e4360e01b83836040516024016123079291906155f4565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090931692909217909152905092915050565b805160208201fd5b6000828211156123ad576123ad610a1860028585613648565b50900390565b606063614b800a60e01b83836040516024016123079291906155ac565b30318015610f73576123e0610e9a565b73ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561242757600080fd5b505af115801561243b573d6000803e3d6000fd5b505050505050565b6000611bd5601754612453610e9a565b73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161248b919061545e565b60206040518083038186803b1580156124a357600080fd5b505afa1580156124b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506124db91908101906153bb565b9063ffffffff61239416565b4260006124f2611bbc565b90508181111561250957612509610a1882846136ed565b600c5460009061252090600163ffffffff612aad16565b600c555050600d55565b61253261511d565b5060408051606081018252825467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811660208501527401000000000000000000000000000000000000000090920490911692820192909252600c5490918111156125ca576125a58161370a565b67ffffffffffffffff16825260408201516bffffffffffffffffffffffff1660208301525b50919050565b60008183106125df5781610fcc565b5090919050565b60606384c8b7c960e01b83836040516024016123079291906155ac565b61260b61511d565b6126148361252a565b905061263e611e898383604001516bffffffffffffffffffffffff1661239490919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161266d91611e8991168463ffffffff61239416565b6bffffffffffffffffffffffff1660208201526112fb838261372a565b60005473ffffffffffffffffffffffffffffffffffffffff163314611d8557600054611d8590610a1890339073ffffffffffffffffffffffffffffffffffffffff166137e4565b73ffffffffffffffffffffffffffffffffffffffff81166126f7576126f7610a18613801565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001602052604090205460ff161561273157612731610a1882613838565b73ffffffffffffffffffffffffffffffffffffffff8116600081815260016020819052604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168317905560028054928301815583527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace90910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001684179055513392917f3147867c59d17e8fa9d522465651d44aae0a9e38f902f3475b97e58072f0ed4c91a350565b61280b83613853565b6128158383612fac565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600660209081526040808320868452909152902061284f908261388a565b6000838152600760205260409020612867908261388a565b600160005260046020526112fb7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe058261388a565b6128a483613853565b6128ae8383612fac565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260066020908152604080832086845290915290206128e890826138e2565b600083815260076020526040902061290090826138e2565b600160005260046020526112fb7fabd6e7cb50984ff9c2f3e18a2660c3353dadf4e3291deeb275dae2cd1e44fe05826138e2565b61293e838361391d565b15612948576112fb565b61295061511d565b6129598461252a565b905061296361511d565b61296c8461252a565b905081604001516bffffffffffffffffffffffff168311156129a7576129a7610a188484604001516bffffffffffffffffffffffff166125e6565b60408201516129ce90611e89906bffffffffffffffffffffffff168563ffffffff61239416565b6bffffffffffffffffffffffff9081166040808501919091528201516129ff91611e8991168563ffffffff612aad16565b6bffffffffffffffffffffffff166040820152612a1c858361372a565b612a26848261372a565b5050505050565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811461166257611662610a183384613924565b620f424063ffffffff82161115612a8b57612a86610a1860008584613941565b6112fb565b8163ffffffff168163ffffffff16106112fb576112fb610a1860018584613941565b600082820183811015610fcc57610fcc610a1860008686613648565b606063eb5108a260e01b82604051602401612ae4919061545e565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091529050919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526001602052604090205460ff16612ba157612ba1610a1883612ac9565b6002548110612bbc57612bbc610a1882600280549050613960565b8173ffffffffffffffffffffffffffffffffffffffff1660028281548110612be057fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff1614612c4257612c42610a1860028381548110612c1a57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff168461397d565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00169055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110612cbd57fe5b6000918252602090912001546002805473ffffffffffffffffffffffffffffffffffffffff9092169183908110612cf057fe5b600091825260209091200180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055600280547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190612d6f9082615175565b50604051339073ffffffffffffffffffffffffffffffffffffffff8416907f1f32c1b084e2de0713b8fb16bd46bb9df710a3dbeae2f3ca93af46e016dcc6b090600090a35050565b60118590556012805463ffffffff8087167fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000000092831617909255601385905560148054848416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff00000000ffffffff9487169190931617929092161790556040517f613157dbb0e920deab8ad6ddd3805e87cbf57344b9fe780f1764790ec789754290612e6b90879087908790879087906157a2565b60405180910390a15050505050565b606063b56d2df060e01b82604051602401612ae4919061545e565b803414158015612ea457503415155b15610f7357610f73610a18823461399a565b6000828152600a602052604081205481908190612ee99073ffffffffffffffffffffffffffffffffffffffff1686611fb6565b602001516bffffffffffffffffffffffff169050612f0d848263ffffffff61239416565b601254909350612f3890612f2b9063ffffffff16620f4240866139b7565b829063ffffffff612aad16565b9150509250929050565b612f4a61511d565b612f538361252a565b9050612f7d611e898383604001516bffffffffffffffffffffffff16612aad90919063ffffffff16565b6bffffffffffffffffffffffff9081166040830152602082015161266d91611e8991168463ffffffff612aad16565b612fb5826139d9565b6000612fc483836000806132e4565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260066020908152604080832087845290915290209091506130009061252a565b73ffffffffffffffffffffffffffffffffffffffff8381166000908152600660209081526040808320888452825291829020845181549286015195909301517fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090921667ffffffffffffffff909316929092177fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff16680100000000000000006bffffffffffffffffffffffff9586160217909216740100000000000000000000000000000000000000009390921692909202179055801561317b576130e58382613a4d565b6130ed610e9a565b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb83836040518363ffffffff1660e01b81526004016131279291906154d7565b602060405180830381600087803b15801561314157600080fd5b505af1158015613155573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061317991908101906152bd565b505b6112fb83613a95565b600080600061319f6001600c5461239490919063ffffffff16565b90506131a961513d565b50600084815260156020908152604080832084845282528083208151606080820184528254825260018084015483870152600293840154838601528787526016865295849020845160a0810186528154815296810154958701959095529184015492850192909252600383015490840152600490910154608083015290613231908290613468565b9350806040015192505050915091565b600080826132515783915061327a565b61326563ffffffff8616620f424086613aa2565b9150613277848363ffffffff61239416565b90505b935093915050565b61328a613ad8565b42600d556001600c55565b61329d613aed565b620d2f00620dbba068056bc75e2d6310000060026003612a268585858585612db7565b806bffffffffffffffffffffffff81168114610c8557610c85610a18600284613b52565b600c546000906132f261511d565b5073ffffffffffffffffffffffffffffffffffffffff851660009081526006602090815260408083208984528252918290208251606081018452905467ffffffffffffffff81168083526bffffffffffffffffffffffff680100000000000000008304811694840194909452740100000000000000000000000000000000000000009091049092169281019290925282141561339357600092505050613429565b61339f81838787613b6f565b81519093506000906133c29067ffffffffffffffff16600163ffffffff612aad16565b90506134006133f38984602001516bffffffffffffffffffffffff16856000015167ffffffffffffffff1685613bf2565b859063ffffffff612aad16565b93506134236133f38984604001516bffffffffffffffffffffffff168487613bf2565b93505050505b949350505050565b60408051808201909152600481527fe69edc3e00000000000000000000000000000000000000000000000000000000602082015290565b815160009061347657610fcf565b815183516040840151602086015160608601516014546134ac95949392919063ffffffff80821691640100000000900416613c8b565b608083015183519192506000916134c89163ffffffff61239416565b9050818110156134d6578091505b5092915050565b6000806134e861515e565b506000858152600a602090815260409182902082518084019093525473ffffffffffffffffffffffffffffffffffffffff8116835274010000000000000000000000000000000000000000900463ffffffff1690820181905261354c908686613241565b909350915082156136095761355f610e9a565b81516040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff929092169163a9059cbb916135b59187906004016154d7565b602060405180830381600087803b1580156135cf57600080fd5b505af11580156135e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525061360791908101906152bd565b505b8115613624576136198683613d4e565b613624868386613d8f565b50935093915050565b606063b65a25b960e01b82604051602401612ae4919061545e565b606063e946c1bb60e01b848484604051602401613667939291906155ba565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915290509392505050565b606063a6bcde4760e01b83836040516024016123079291906155ac565b8067ffffffffffffffff81168114610c8557610c85610a18600184613b52565b8051825460408301516020909301516bffffffffffffffffffffffff90811668010000000000000000027fffffffffffffffffffffffff000000000000000000000000ffffffffffffffff91909416740100000000000000000000000000000000000000000273ffffffffffffffffffffffffffffffffffffffff67ffffffffffffffff9094167fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000090931692909217929092161716179055565b6060631de45ad160e01b838360405160240161230792919061547f565b60408051808201909152600481527f57654fe400000000000000000000000000000000000000000000000000000000602082015290565b606063de16f1a060e01b82604051602401612ae4919061545e565b6000818152600a602052604090205473ffffffffffffffffffffffffffffffffffffffff16610f7357610f73610a18826000613e78565b61389261511d565b61389b8361252a565b90506138c5611e898383604001516bffffffffffffffffffffffff1661239490919063ffffffff16565b6bffffffffffffffffffffffff1660408201526112fb838261372a565b6138ea61511d565b6138f38361252a565b90506138c5611e898383604001516bffffffffffffffffffffffff16612aad90919063ffffffff16565b1460011690565b60606382ded78560e01b83836040516024016123079291906154d7565b60606322df959760e01b84848460405160240161366793929190615626565b606063e9f8377160e01b83836040516024016123079291906155ac565b606063140a84db60e01b838360405160240161230792919061547f565b60606331d7a50560e01b83836040516024016123079291906155ac565b6000613429836139cd868563ffffffff613e9516565b9063ffffffff613ec616565b600c546000906139f090600163ffffffff61239416565b90506139fa61513d565b5060008281526015602090815260408083208484528252918290208251606081018452815480825260018301549382019390935260029091015492810192909252156112fb576112fb610a188484613ef0565b6000828152600b6020526040902054613a6c908263ffffffff61239416565b6000838152600b6020526040902055601754613a8e908263ffffffff61239416565b6017555050565b610f738160006001613d8f565b6000613429836139cd613abc82600163ffffffff61239416565b613acc888763ffffffff613e9516565b9063ffffffff612aad16565b600d5415611d8557611d85610a186000613f0d565b60115415801590613b05575060125463ffffffff1615155b8015613b12575060135415155b8015613b25575060145463ffffffff1615155b8015613b405750601454640100000000900463ffffffff1615155b15611d8557611d85610a186001613f0d565b606063c996af7b60e01b83836040516024016123079291906155dc565b6000821580613b7c575081155b15613b8957506000613429565b6000613b9c85600163ffffffff61239416565b865167ffffffffffffffff161015613bb8578560400151613bbe565b85602001515b6bffffffffffffffffffffffff16905080613bdd576000915050613429565b613be88484836139b7565b9695505050505050565b6000831580613c0057508183145b15613c0d57506000613429565b818310613c46576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119019061564d565b613c4e615199565b613c588685613f4c565b9050613c62615199565b613c6c8785613f4c565b9050611f7d81600001518260200151846000015185602001518a61406a565b600080613c9888886140f6565b90506000613ca687876140f6565b9050811580613cb3575080155b15613cc4575060009150611f7d9050565b600081831315613cdd57613cd88284614148565b613ce7565b613ce78383614148565b9050613d10613d0b613cf883614167565b8863ffffffff168863ffffffff16614809565b614818565b905081831315613d2957613d248282614148565b613d33565b613d338282614e02565b9050613d3f818c614e2e565b9b9a5050505050505050505050565b6000828152600b6020526040902054613d6d908263ffffffff612aad16565b6000838152600b6020526040902055601754613a8e908263ffffffff612aad16565b6000838152600f6020526040902054600c5480821415613db05750506112fb565b613db8615199565b506000858152600e602090815260408083208584528252918290208251808401909352805483526001015490820152613def615199565b613df882614e70565b15613e3157613e11826000015183602001518888614e79565b60208301819052818352613e259190614edb565b60208301528152613e3c565b602081018590528581525b6000878152600e6020908152604080832086845282528083208451815593820151600190940193909355978152600f9097529095205550505050565b6060639ae94f0160e01b838360405160240161230792919061559c565b600082613ea457506000610fcf565b82820282848281613eb157fe5b0414610fcc57610fcc610a1860018686613648565b600081613edc57613edc610a1860038585613648565b6000828481613ee757fe5b04949350505050565b6060635caa0b0560e01b83836040516024016123079291906155ac565b60607f0b02d77300000000000000000000000000000000000000000000000000000000826001811115613f3c57fe5b604051602401612ae4919061580e565b613f54615199565b506000828152600e602090815260408083208484528252918290208251808401909352805483526001015490820152613f8c81614e70565b15613f9657610fcf565b6000613fa983600163ffffffff61239416565b6000858152600e60209081526040808320848452825291829020825180840190935280548352600101549082015292509050613fe482614e70565b15613fef5750610fcf565b6000848152600f60205260409020548381101561404c576000858152600e602090815260408083208484528252918290208251808401909352805483526001015490820152925061403f83614e70565b1561404c5750610fcf9050565b50506040805180820190915260008152600160208201529392505050565b600081614079575060006140ed565b8361409957614092856139cd848963ffffffff613e9516565b90506140ed565b60006140be6140ae868863ffffffff613e9516565b6124db898763ffffffff613e9516565b905060006140d2828663ffffffff613ec616565b90506140e8876139cd868463ffffffff613e9516565b925050505b95945050505050565b60008083121561410e5761410e610a18600185614f04565b600082121561412557614125610a18600184614f04565b610fcc614142846f80000000000000000000000000000000614f45565b83614f8d565b6000610fcc614142846f80000000000000000000000000000000614f45565b60006f8000000000000000000000000000000082131561418f5761418f610a1860018461500e565b600082136141a5576141a5610a1860008461500e565b6f800000000000000000000000000000008214156141c557506000610c85565b640733048c5a82136141f857507fffffffffffffffffffffffffffffffe010000000000000000000000000000000610c85565b60008060006a01c8464f761647600000008513614257577ffffffffffffffffffffffffffffffff000000000000000000000000000000000909301926a01c8464f761647600000006f8000000000000000000000000000000086020594505b6cf1aaddd7742e9000000000000085136142b5577ffffffffffffffffffffffffffffffff800000000000000000000000000000000909301926cf1aaddd7742e900000000000006f8000000000000000000000000000000086020594505b6e0afe10820813d780000000000000008513614317577ffffffffffffffffffffffffffffffffc00000000000000000000000000000000909301926e0afe10820813d780000000000000006f8000000000000000000000000000000086020594505b6f02582ab704279ec00000000000000000851361437b577ffffffffffffffffffffffffffffffffe00000000000000000000000000000000909301926f02582ab704279ec000000000000000006f8000000000000000000000000000000086020594505b6f1152aaa3bf81cc00000000000000000085136143df577fffffffffffffffffffffffffffffffff00000000000000000000000000000000909301926f1152aaa3bf81cc0000000000000000006f8000000000000000000000000000000086020594505b6f2f16ac6c59de700000000000000000008513614443577fffffffffffffffffffffffffffffffff80000000000000000000000000000000909301926f2f16ac6c59de700000000000000000006f8000000000000000000000000000000086020594505b6f4da2cbf1be582800000000000000000085136144a7577fffffffffffffffffffffffffffffffffc0000000000000000000000000000000909301926f4da2cbf1be58280000000000000000006f8000000000000000000000000000000086020594505b6f63afbe7ab2082c000000000000000000851361450b577fffffffffffffffffffffffffffffffffe0000000000000000000000000000000909301926f63afbe7ab2082c0000000000000000006f8000000000000000000000000000000086020594505b6f70f5a893b608861e1f58934f97aea57d851361456f577ffffffffffffffffffffffffffffffffff0000000000000000000000000000000909301926f70f5a893b608861e1f58934f97aea57d6f8000000000000000000000000000000086020594505b7fffffffffffffffffffffffffffffffff80000000000000000000000000000000850192508291506f80000000000000000000000000000000828002059050700100000000000000000000000000000000838103830205840193506f80000000000000000000000000000000818302816145e557fe5b059150700200000000000000000000000000000000836faaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa0383028161461657fe5b05840193506f800000000000000000000000000000008183028161463657fe5b059150700300000000000000000000000000000000836f999999999999999999999999999999990383028161466757fe5b05840193506f800000000000000000000000000000008183028161468757fe5b059150700400000000000000000000000000000000836f92492492492492492492492492492492038302816146b857fe5b05840193506f80000000000000000000000000000000818302816146d857fe5b059150700500000000000000000000000000000000836f8e38e38e38e38e38e38e38e38e38e38e0383028161470957fe5b05840193506f800000000000000000000000000000008183028161472957fe5b059150700600000000000000000000000000000000836f8ba2e8ba2e8ba2e8ba2e8ba2e8ba2e8b0383028161475a57fe5b05840193506f800000000000000000000000000000008183028161477a57fe5b059150700700000000000000000000000000000000836f89d89d89d89d89d89d89d89d89d89d89038302816147ab57fe5b05840193506f80000000000000000000000000000000818302816147cb57fe5b059150700800000000000000000000000000000000836f88888888888888888888888888888888038302816147fc57fe5b0584019350505050919050565b60006134296141428585614f45565b60007fffffffffffffffffffffffffffffffe01000000000000000000000000000000082121561484a57506000610c85565b8161486657506f80000000000000000000000000000000610c85565b600082131561487d5761487d610a1860018461500e565b6f800000000000000000000000000000006f1000000000000000000000000000000083078080028290056710e1b3be415a0000810293909301929091818302059050806705a0913f6b1e000002830192506f80000000000000000000000000000000828202816148e957fe5b05905080670168244fdac7800002830192506f800000000000000000000000000000008282028161491657fe5b05905080664807432bc1800002830192506f800000000000000000000000000000008282028161494257fe5b05905080660c0135dca0400002830192506f800000000000000000000000000000008282028161496e57fe5b059050806601b707b1cdc00002830192506f800000000000000000000000000000008282028161499a57fe5b059050806536e0f639b80002830192506f80000000000000000000000000000000828202816149c557fe5b05905080650618fee9f80002830192506f80000000000000000000000000000000828202816149f057fe5b05905080649c197dcc0002830192506f8000000000000000000000000000000082820281614a1a57fe5b05905080640e30dce40002830192506f8000000000000000000000000000000082820281614a4457fe5b0590508064012ebd130002830192506f8000000000000000000000000000000082820281614a6e57fe5b059050806317499f0002830192506f8000000000000000000000000000000082820281614a9757fe5b059050806301a9d48002830192506f8000000000000000000000000000000082820281614ac057fe5b05905080621c638002830192506f8000000000000000000000000000000082820281614ae857fe5b059050806201c63802830192506f8000000000000000000000000000000082820281614b1057fe5b05905080611ab802830192506f8000000000000000000000000000000082820281614b3757fe5b0590508061017c02830192506f8000000000000000000000000000000082820281614b5e57fe5b05905080601402830192506f8000000000000000000000000000000082820281614b8457fe5b600095909503946721c3677c82b400009190059384010582016f8000000000000000000000000000000001929050701000000000000000000000000000000000841615614bf3577243cbaf42a000812488fc5c220ad7b97bf6e99e6cf1aaddd7742e56d32fb9f9974484020592505b700800000000000000000000000000000000841615614c35577105d27a9f51c31b7c2f8038212a05747799916e0afe10820813d65dfe6a33c07f738f84020592505b700400000000000000000000000000000000841615614c7757701b4c902e273a58678d6d3bfdb93db96d026f02582ab704279e8efd15e0265855c47a84020592505b700200000000000000000000000000000000841615614cb9577003b1cc971a9bb5b9867477440d6d1577506f1152aaa3bf81cb9fdb76eae12d02957184020592505b700100000000000000000000000000000000841615614cfb5770015bf0a8b1457695355fb8ac404e7a79e36f2f16ac6c59de6f8d5d6f63c1482a7c8684020592505b6f80000000000000000000000000000000841615614d3b576fd3094c70f034de4b96ff7d5b6f99fcd86f4da2cbf1be5827f9eb3ad1aa9866ebb384020592505b6f40000000000000000000000000000000841615614d7b576fa45af1e1f40c333b3de1db4dd55f29a76f63afbe7ab2082ba1a0ae5e4eb1b479dc84020592505b6f20000000000000000000000000000000841615614dbb576f910b022db7ae67ce76b441c27035c6a16f70f5a893b608861e1f58934f97aea57d84020592505b6f10000000000000000000000000000000841615614dfb576f88415abbe9a76bead8d00cf112e4d4a86f783eafef1c0a8f3978c7f81824d62ebf84020592505b5050919050565b60006f80000000000000000000000000000000614e1f8484614f45565b81614e2657fe5b059392505050565b600080821215614e4657614e46610a18600184614f04565b6000614e528484614f45565b905060008113614e66576000915050610fcf565b607f1c9392505050565b60200151151590565b60008085614e8b575082905081614ed2565b83614e9a575084905083614ed2565b614ebd614ead858763ffffffff613e9516565b613acc888663ffffffff613e9516565b9150614ecf858463ffffffff613e9516565b90505b94509492505050565b600080614ef984846f8000000000000000000000000000000061503d565b915091509250929050565b60607fbd79545f00000000000000000000000000000000000000000000000000000000836001811115614f3357fe5b8360405160240161230792919061581c565b600082614f5457506000610fcf565b5081810281838281614f6257fe5b05141580614f79575082828281614f7557fe5b0514155b15610fcf57610fcf610a18600185856150ab565b600081614fa357614fa3610a18600285856150ab565b7f800000000000000000000000000000000000000000000000000000000000000083148015614ff15750817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff145b1561500557615005610a18600385856150ab565b818381614e2657fe5b60607fed2f26a100000000000000000000000000000000000000000000000000000000836001811115614f3357fe5b6000808285118061504d57508284115b156150a2576000848610156150625784615064565b855b9050615076818563ffffffff613ec616565b9050615088868263ffffffff613ec616565b925061509a858263ffffffff613ec616565b91505061327a565b50929391925050565b60607f8c12dfe7000000000000000000000000000000000000000000000000000000008460038111156150da57fe5b84846040516024016136679392919061582f565b6040518060a0016040528060008152602001600081526020016000815260200160008152602001600081525090565b604080516060810182526000808252602082018190529181019190915290565b60405180606001604052806000815260200160008152602001600081525090565b604080518082019091526000808252602082015290565b8154818355818111156112fb576000838152602090206112fb9181019083016151b3565b604051806040016040528060008152602001600081525090565b610bed91905b808211156151cd57600081556001016151b9565b5090565b6000604082840312156125ca578081fd5b6000602082840312156151f3578081fd5b8135610fcc81615854565b60006020828403121561520f578081fd5b8151610fcc81615854565b60008060006060848603121561522e578182fd5b833561523981615854565b9250602084013561524981615854565b929592945050506040919091013590565b6000806040838503121561526c578182fd5b823561527781615854565b946020939093013593505050565b60008060408385031215615297578182fd5b82356152a281615854565b915060208301356152b281615884565b809150509250929050565b6000602082840312156152ce578081fd5b8151610fcc81615876565b6000602082840312156152ea578081fd5b5035919050565b60008060408385031215615303578182fd5b8235915060208301356152b281615854565b60008060408385031215615327578182fd5b50508035926020909101359150565b60008060408385031215615348578182fd5b82359150602083013563ffffffff811681146152b2578182fd5b600060208284031215615373578081fd5b8135610fcc81615884565b600080600060a08486031215615392578283fd5b61539c85856151d1565b92506153ab85604086016151d1565b9150608084013590509250925092565b6000602082840312156153cc578081fd5b5051919050565b600080600080600060a086880312156153ea578283fd5b8535945060208601356153fc81615891565b935060408601359250606086013561541381615891565b9150608086013561542381615891565b809150509295509295909350565b60008060408385031215615443578182fd5b823561544e81615891565b915060208301356152b281615876565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b602080825282518282018190526000918401906040840190835b8181101561554b57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101615517565b509095945050505050565b901515815260200190565b90815260200190565b92835273ffffffffffffffffffffffffffffffffffffffff91909116602083015263ffffffff16604082015260600190565b9182521515602082015260400190565b918252602082015260400190565b60608101600485106155c857fe5b938152602081019290925260409091015290565b60408101600384106155ea57fe5b9281526020015290565b604081016156018461584a565b92815273ffffffffffffffffffffffffffffffffffffffff9190911660209091015290565b606081016156338561584a565b938152602081019290925263ffffffff1660409091015290565b60208082526013908201527f43525f494e54455256414c5f494e56414c494400000000000000000000000000604082015260600190565b60208082526014908201527f574554485f5452414e534645525f4641494c4544000000000000000000000000604082015260600190565b81518152602080830151908201526040918201519181019190915260600190565b815173ffffffffffffffffffffffffffffffffffffffff16815260209182015163ffffffff169181019190915260400190565b815167ffffffffffffffff1681526020808301516bffffffffffffffffffffffff90811691830191909152604092830151169181019190915260600190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b948552602085019390935260408401919091526060830152608082015260a00190565b94855263ffffffff938416602086015260408501929092528216606084015216608082015260a00190565b92835260ff918216602084015216604082015260600190565b63ffffffff91909116815260200190565b63ffffffff92831681529116602082015260400190565b60ff91909116815260200190565b60ff929092168252602082015260400190565b60ff9390931683526020830191909152604082015260600190565b60028110610f7357fe5b73ffffffffffffffffffffffffffffffffffffffff81168114610f7357600080fd5b8015158114610f7357600080fd5b60028110610f7357600080fd5b63ffffffff81168114610f7357600080fdfea365627a7a72315820cd4dcb64a07325df26d38404ffcca0f57d30f570cbe815c03c543316add5e5a46c6578706572696d656e74616cf564736f6c634300050c0040" } } }, @@ -964,5 +975,5 @@ "evmVersion": "constantinople" } }, - "networks": {} + "chains": {} }