[ { "inputs": [ { "internalType": "address", "name": "_PT", "type": "address" }, { "internalType": "int256", "name": "_scalarRoot", "type": "int256" }, { "internalType": "int256", "name": "_initialAnchor", "type": "int256" }, { "internalType": "uint80", "name": "_lnFeeRateRoot", "type": "uint80" }, { "internalType": "address", "name": "_vePendle", "type": "address" }, { "internalType": "address", "name": "_gaugeController", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "inputs": [], "name": "InvalidShortString", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "exchangeRate", "type": "int256" } ], "name": "MarketExchangeRateBelowOne", "type": "error" }, { "inputs": [], "name": "MarketExpired", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "currentAmount", "type": "int256" }, { "internalType": "int256", "name": "requiredAmount", "type": "int256" } ], "name": "MarketInsufficientPtForTrade", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "actualBalance", "type": "uint256" }, { "internalType": "uint256", "name": "requiredBalance", "type": "uint256" } ], "name": "MarketInsufficientPtReceived", "type": "error" }, { "inputs": [ { "internalType": "uint256", "name": "actualBalance", "type": "uint256" }, { "internalType": "uint256", "name": "requiredBalance", "type": "uint256" } ], "name": "MarketInsufficientSyReceived", "type": "error" }, { "inputs": [], "name": "MarketProportionMustNotEqualOne", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "proportion", "type": "int256" }, { "internalType": "int256", "name": "maxProportion", "type": "int256" } ], "name": "MarketProportionTooHigh", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "rateScalar", "type": "int256" } ], "name": "MarketRateScalarBelowZero", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "scalarRoot", "type": "int256" } ], "name": "MarketScalarRootBelowZero", "type": "error" }, { "inputs": [], "name": "MarketZeroAmountsInput", "type": "error" }, { "inputs": [], "name": "MarketZeroAmountsOutput", "type": "error" }, { "inputs": [], "name": "MarketZeroLnImpliedRate", "type": "error" }, { "inputs": [ { "internalType": "int256", "name": "totalPt", "type": "int256" }, { "internalType": "int256", "name": "totalAsset", "type": "int256" } ], "name": "MarketZeroTotalPtOrTotalAsset", "type": "error" }, { "inputs": [ { "internalType": "string", "name": "str", "type": "string" } ], "name": "StringTooLong", "type": "error" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Approval", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiverSy", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiverPt", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "netLpBurned", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netSyOut", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netPtOut", "type": "uint256" } ], "name": "Burn", "type": "event" }, { "anonymous": false, "inputs": [], "name": "EIP712DomainChanged", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": false, "internalType": "uint16", "name": "observationCardinalityNextOld", "type": "uint16" }, { "indexed": false, "internalType": "uint16", "name": "observationCardinalityNextNew", "type": "uint16" } ], "name": "IncreaseObservationCardinalityNext", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "netLpMinted", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netSyUsed", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netPtUsed", "type": "uint256" } ], "name": "Mint", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "user", "type": "address" }, { "indexed": false, "internalType": "uint256[]", "name": "rewardsOut", "type": "uint256[]" } ], "name": "RedeemRewards", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "caller", "type": "address" }, { "indexed": true, "internalType": "address", "name": "receiver", "type": "address" }, { "indexed": false, "internalType": "int256", "name": "netPtOut", "type": "int256" }, { "indexed": false, "internalType": "int256", "name": "netSyOut", "type": "int256" }, { "indexed": false, "internalType": "uint256", "name": "netSyFee", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "netSyToReserve", "type": "uint256" } ], "name": "Swap", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } ], "name": "Transfer", "type": "event" }, { "anonymous": false, "inputs": [ { "indexed": true, "internalType": "uint256", "name": "timestamp", "type": "uint256" }, { "indexed": false, "internalType": "uint256", "name": "lnLastImpliedRate", "type": "uint256" } ], "name": "UpdateImpliedRate", "type": "event" }, { "inputs": [], "name": "DOMAIN_SEPARATOR", "outputs": [ { "internalType": "bytes32", "name": "", "type": "bytes32" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "_storage", "outputs": [ { "internalType": "int128", "name": "totalPt", "type": "int128" }, { "internalType": "int128", "name": "totalSy", "type": "int128" }, { "internalType": "uint96", "name": "lastLnImpliedRate", "type": "uint96" }, { "internalType": "uint16", "name": "observationIndex", "type": "uint16" }, { "internalType": "uint16", "name": "observationCardinality", "type": "uint16" }, { "internalType": "uint16", "name": "observationCardinalityNext", "type": "uint16" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "activeBalance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" } ], "name": "allowance", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "approve", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "account", "type": "address" } ], "name": "balanceOf", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiverSy", "type": "address" }, { "internalType": "address", "name": "receiverPt", "type": "address" }, { "internalType": "uint256", "name": "netLpToBurn", "type": "uint256" } ], "name": "burn", "outputs": [ { "internalType": "uint256", "name": "netSyOut", "type": "uint256" }, { "internalType": "uint256", "name": "netPtOut", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "decimals", "outputs": [ { "internalType": "uint8", "name": "", "type": "uint8" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "eip712Domain", "outputs": [ { "internalType": "bytes1", "name": "fields", "type": "bytes1" }, { "internalType": "string", "name": "name", "type": "string" }, { "internalType": "string", "name": "version", "type": "string" }, { "internalType": "uint256", "name": "chainId", "type": "uint256" }, { "internalType": "address", "name": "verifyingContract", "type": "address" }, { "internalType": "bytes32", "name": "salt", "type": "bytes32" }, { "internalType": "uint256[]", "name": "extensions", "type": "uint256[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "expiry", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "factory", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getNonOverrideLnFeeRateRoot", "outputs": [ { "internalType": "uint80", "name": "", "type": "uint80" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "getRewardTokens", "outputs": [ { "internalType": "address[]", "name": "", "type": "address[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint16", "name": "cardinalityNext", "type": "uint16" } ], "name": "increaseObservationsCardinalityNext", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "isExpired", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "lastRewardBlock", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "netSyDesired", "type": "uint256" }, { "internalType": "uint256", "name": "netPtDesired", "type": "uint256" } ], "name": "mint", "outputs": [ { "internalType": "uint256", "name": "netLpOut", "type": "uint256" }, { "internalType": "uint256", "name": "netSyUsed", "type": "uint256" }, { "internalType": "uint256", "name": "netPtUsed", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "name", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" } ], "name": "nonces", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "name": "observations", "outputs": [ { "internalType": "uint32", "name": "blockTimestamp", "type": "uint32" }, { "internalType": "uint216", "name": "lnImpliedRateCumulative", "type": "uint216" }, { "internalType": "bool", "name": "initialized", "type": "bool" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "uint32[]", "name": "secondsAgos", "type": "uint32[]" } ], "name": "observe", "outputs": [ { "internalType": "uint216[]", "name": "lnImpliedRateCumulative", "type": "uint216[]" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "owner", "type": "address" }, { "internalType": "address", "name": "spender", "type": "address" }, { "internalType": "uint256", "name": "value", "type": "uint256" }, { "internalType": "uint256", "name": "deadline", "type": "uint256" }, { "internalType": "uint8", "name": "v", "type": "uint8" }, { "internalType": "bytes32", "name": "r", "type": "bytes32" }, { "internalType": "bytes32", "name": "s", "type": "bytes32" } ], "name": "permit", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "router", "type": "address" } ], "name": "readState", "outputs": [ { "components": [ { "internalType": "int256", "name": "totalPt", "type": "int256" }, { "internalType": "int256", "name": "totalSy", "type": "int256" }, { "internalType": "int256", "name": "totalLp", "type": "int256" }, { "internalType": "address", "name": "treasury", "type": "address" }, { "internalType": "int256", "name": "scalarRoot", "type": "int256" }, { "internalType": "uint256", "name": "expiry", "type": "uint256" }, { "internalType": "uint256", "name": "lnFeeRateRoot", "type": "uint256" }, { "internalType": "uint256", "name": "reserveFeePercent", "type": "uint256" }, { "internalType": "uint256", "name": "lastLnImpliedRate", "type": "uint256" } ], "internalType": "struct MarketState", "name": "market", "type": "tuple" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "readTokens", "outputs": [ { "internalType": "contract IStandardizedYield", "name": "_SY", "type": "address" }, { "internalType": "contract IPPrincipalToken", "name": "_PT", "type": "address" }, { "internalType": "contract IPYieldToken", "name": "_YT", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "user", "type": "address" } ], "name": "redeemRewards", "outputs": [ { "internalType": "uint256[]", "name": "", "type": "uint256[]" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" } ], "name": "rewardState", "outputs": [ { "internalType": "uint128", "name": "index", "type": "uint128" }, { "internalType": "uint128", "name": "lastBalance", "type": "uint128" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "skim", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "exactPtIn", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "swapExactPtForSy", "outputs": [ { "internalType": "uint256", "name": "netSyOut", "type": "uint256" }, { "internalType": "uint256", "name": "netSyFee", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "receiver", "type": "address" }, { "internalType": "uint256", "name": "exactPtOut", "type": "uint256" }, { "internalType": "bytes", "name": "data", "type": "bytes" } ], "name": "swapSyForExactPt", "outputs": [ { "internalType": "uint256", "name": "netSyIn", "type": "uint256" }, { "internalType": "uint256", "name": "netSyFee", "type": "uint256" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [], "name": "symbol", "outputs": [ { "internalType": "string", "name": "", "type": "string" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalActiveSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [], "name": "totalSupply", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transfer", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "from", "type": "address" }, { "internalType": "address", "name": "to", "type": "address" }, { "internalType": "uint256", "name": "amount", "type": "uint256" } ], "name": "transferFrom", "outputs": [ { "internalType": "bool", "name": "", "type": "bool" } ], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "", "type": "address" }, { "internalType": "address", "name": "", "type": "address" } ], "name": "userReward", "outputs": [ { "internalType": "uint128", "name": "index", "type": "uint128" }, { "internalType": "uint128", "name": "accrued", "type": "uint128" } ], "stateMutability": "view", "type": "function" } ]
6103008060405234620005fa5760c08162006bb18038038091620000248285620009ed565b833981010312620005fa576200003a8162000a11565b60208201516040830151606084015191936001600160501b0383168303620005fa576200007860a0620000706080840162000a11565b920162000a11565b60405163afd27bf560e01b8152906020826004816001600160a01b038a165afa91821562000608576000926200098d575b5060405190620000b982620009d1565b600d82526c14195b991b194813585c9ad95d609a1b602083015260405191620000e283620009d1565b600a8352691411539113114b53141560b21b6020840152604051926200010884620009d1565b60018452603160f81b602085015281516001600160401b0381116200074257600354600181811c9116801562000982575b60208210146200086557601f81116200091c575b50806020601f8211600114620008925760009162000886575b508160011b916000199060031b1c1916176003555b8051906001600160401b038211620007425760045490600182811c921680156200087b575b6020831014620008655781601f849311620007f3575b50602090601f8311600114620007645760009262000758575b50508160011b916000199060031b1c1916176004555b6012608052600280546001600160f81b0316600160f81b1790556200020a8162000a36565b61014052620002198362000bfa565b6101605260208151910120918261010052602081519101209384610120524660c0526040519460208601937f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8552604087015260608601524660808601523060a086015260a0855260c085019385851060018060401b0386111762000742576040859052855190932060a0523060e052610180929092526001600160a01b039182166101c0526101e0819052635162986d60e11b835260209183916004918391600091165af1918215620006085760009262000703575b50506101a0526001600160a01b03831661020081905260405163afd27bf560e01b815290602090829060049082905afa9081156200060857600091620006c1575b506001600160a01b03908116610220526102005160405163781c18db60e01b81529160209183916004918391165afa90811562000608576000916200067f575b506001600160a01b0316610240526040805163329f6acb60e21b8152600f60048201524263ffffffff166024820152908160448173c6378a93725e499a20df8f00ae31d9ce9d09f1ca5af490811562000608576000906000926200062d575b50600e805463ffffffff60701b191660809390931b61ffff60801b169290921760709190911b61ffff60701b161790556000841315620006145790602092916004946102a0526102c0526102e052604051928380926370c264df60e11b825260018060a01b03165afa9081156200060857600091620005cb575b50610280523361026052604051615dfe62000db38239608051816118d4015260a0518161381d015260c051816138e9015260e051816137ee0152610100518161386c01526101205181613892015261014051816110de01526101605181611108015261018051818181613b43015261512c01526101a05181613b7601526101c051818181612770015261576201526101e0518161516401526102005181818161040f015281816116550152818161197c01528181611b4e01528181611f3b01526123fb015261022051818181610443015281816114920152818161195701528181611b1601528181611cdc01528181611f7c01526123b40152610240518181816113f0015281816119a301528181611a6d015261211901526102605181818161097b0152612e63015261028051818181610691015281816113bc0152818161191101528181611a39015281816120e50152612eff01526102a05181612edc01526102c051816125a001526102e0518181816106550152612eb70152615dfe90f35b90506020813d602011620005ff575b81620005e960209383620009ed565b81010312620005fa5751386200044a565b600080fd5b3d9150620005da565b6040513d6000823e3d90fd5b60405163483512b160e11b815260048101859052602490fd5b9150506040813d60401162000676575b816200064c60409383620009ed565b81010312620005fa576200066e6020620006668362000a26565b920162000a26565b9038620003d0565b3d91506200063d565b90506020813d602011620006b8575b816200069d60209383620009ed565b81010312620005fa57620006b19062000a11565b3862000371565b3d91506200068e565b90506020813d602011620006fa575b81620006df60209383620009ed565b81010312620005fa57620006f39062000a11565b3862000331565b3d9150620006d0565b6020809293503d83116200073a575b6200071e8185620009ed565b81010312620005fa57620007329062000a11565b3880620002f0565b503d62000712565b634e487b7160e01b600052604160045260246000fd5b015190503880620001cf565b6004600090815293507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b91905b601f1984168510620007d7576001945083601f19811610620007bd575b505050811b01600455620001e5565b015160001960f88460031b161c19169055388080620007ae565b8181015183556020948501946001909301929091019062000791565b60046000529091507f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b601f840160051c8101602085106200085d575b90849392915b601f830160051c820181106200084d575050620001b6565b6000815585945060010162000835565b50806200082f565b634e487b7160e01b600052602260045260246000fd5b91607f1691620001a0565b90508301513862000166565b6003600090815292507fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b905b601f198316841062000903576001935082601f19811610620008e9575b5050811b016003556200017b565b85015160001960f88460031b161c191690553880620008db565b85810151825560209384019360019092019101620008be565b60036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c8101602084106200097a575b601f830160051c820181106200096d5750506200014d565b6000815560010162000955565b508062000955565b90607f169062000139565b9091506020813d602011620009c8575b81620009ac60209383620009ed565b81010312620005fa57620009c09062000a11565b9038620000a9565b3d91506200099d565b604081019081106001600160401b038211176200074257604052565b601f909101601f19168101906001600160401b038211908210176200074257604052565b51906001600160a01b0382168203620005fa57565b519061ffff82168203620005fa57565b8051602091908281101562000ad5575090601f82511162000a74578082519201519080831062000a6557501790565b82600019910360031b1b161790565b90604051809263305a27a960e01b82528060048301528251908160248401526000935b82851062000abb575050604492506000838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935062000a97565b6001600160401b03811162000742576005928354926001938481811c9116801562000bef575b838210146200086557601f811162000bb8575b5081601f841160011462000b4e575092829391839260009462000b42575b50501b916000199060031b1c191617905560ff90565b01519250388062000b2c565b919083601f1981168760005284600020946000905b8883831062000b9d575050501062000b83575b505050811b01905560ff90565b015160001960f88460031b161c1916905538808062000b76565b85870151885590960195948501948793509081019062000b63565b8560005284601f846000209201871c820191601f8601881c015b82811062000be257505062000b0e565b6000815501859062000bd2565b90607f169062000afb565b80516020908181101562000c885750601f82511162000c27578082519201519080831062000a6557501790565b90604051809263305a27a960e01b82528060048301528251908160248401526000935b82851062000c6e575050604492506000838284010152601f80199101168101030190fd5b848101820151868601604401529381019385935062000c4a565b906001600160401b0382116200074257600654926001938481811c9116801562000da7575b838210146200086557601f811162000d6d575b5081601f841160011462000d01575092829391839260009462000cf5575b50501b916000199060031b1c19161760065560ff90565b01519250388062000cde565b919083601f198116600660005284600020946000905b8883831062000d52575050501062000d38575b505050811b0160065560ff90565b015160001960f88460031b161c1916905538808062000d2a565b85870151885590960195948501948793509081019062000d17565b600660005284601f84600020920160051c820191601f860160051c015b82811062000d9a57505062000cc0565b6000815501859062000d8a565b90607f169062000cad56fe608080604052600436101561001357600080fd5b60e0600035811c91826306fdde0314612a19575081630892cd8b146129df578163095ea7b3146129ae578163156e29f61461206957816318160ddd1461202a5781631dd19cb414611eb957816323b872dd14611d6c578163252c09d714611d0857816329910b11146119ca5781632c8ce6bc146119365781632f13b60c146118f8578163313ce567146118ba5781633644e5151461189f57816337d45e3a146116ab5781635b709f171461134d5781635cbadbe4146112dd57816370a082311461129d578163720692641461127f578163794052f3146111f85781637ecebe00146111be57816384b0196e146110c8578163883bdbfd14610e435781639262187b14610bdb57816395d89b4114610ada578163a9059cbb14610a24578163a9f8d18114610a06578163c3fb90d61461099f578163c45a01551461095b578163c4f59f9b146108f4578163d505accf1461070657508063dd62ed3e146106b4578063e184c9be14610679578063e4f8b2e914610632578063ea64a820146105d35763f6b911bc146101a257600080fd5b3461046f576101b036612b30565b9160028054906101c5818360f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80931617815561021533612d68565b30156105695761022430614b0a565b30600052602092600084526040600020548781106104ff57879030600052600086520360406000205580871161046f578254818816828216038281116104d057827fff000000000000000000000000000000000000000000000000000000000000009116911617835560006040518881527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef863092a36102c330614bb3565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff871161046f5786156104a657838201956102ff8751896137a5565b956103106040850197885190613cfc565b9761032761031f86518c6137a5565b895190613cfc565b9789158061049e575b6104745761033f8b8251614c9a565b905261034c888651614c9a565b8552610359898251614c9a565b90526000881261046f576000871261046f577f4cf25bc1d991c17529c25213d3cc0cda295eeaad5f13f361969b12ea48015f908860409a6103e17f0100000000000000000000000000000000000000000000000000000000000000976001600160a01b03808716968530890361043c575b50508c81891698308a03610409575b5050506131a8565b8b51908152602081019190915260408101899052606090a38254161790558351928352820152f35b610434927f0000000000000000000000000000000000000000000000000000000000000000166133cd565b388c816103d9565b61046891837f0000000000000000000000000000000000000000000000000000000000000000166133cd565b38856103ca565b600080fd5b60046040517fccbf5468000000000000000000000000000000000000000000000000000000008152fd5b508815610330565b60046040517f25daaec3000000000000000000000000000000000000000000000000000000008152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6084856040519062461bcd60e51b82526004820152602260248201527f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60448201527f63650000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360448201527f73000000000000000000000000000000000000000000000000000000000000006064820152fd5b3461046f57602060031936011261046f576001600160a01b036105f4612b04565b166000908152600a60209081526040918290205482516fffffffffffffffffffffffffffffffff8216815260809190911c91810191909152f35b0390f35b3461046f57600060031936011261046f57602060405169ffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461046f57600060031936011261046f5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461046f57604060031936011261046f576106cd612b04565b6106d5612b1a565b906001600160a01b038091166000526001602052604060002091166000526020526020604060002054604051908152f35b3461046f578060031936011261046f5761071e612b04565b90610727612b1a565b604435916084359060643560ff8316830361046f578042116108b0576001600160a01b0391828716938460005260076020526040600020918254926001840190556040519360208501937f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98552876040870152868916606087015289608087015260a086015260c085015260c0845283019183831067ffffffffffffffff8411176108815761082c93610824936040525190206107e26137e4565b90604051917f190100000000000000000000000000000000000000000000000000000000000083526002830152602282015260c43591604260a4359220614603565b919091614692565b160361083d5761083b92612fe9565b005b606460405162461bcd60e51b815260206004820152601e60248201527f45524332305065726d69743a20696e76616c6964207369676e617475726500006044820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b606460405162461bcd60e51b815260206004820152601d60248201527f45524332305065726d69743a206578706972656420646561646c696e650000006044820152fd5b3461046f57600060031936011261046f5761090d613b0a565b6040518091602080830160208452825180915260206040850193019160005b82811061093b57505050500390f35b83516001600160a01b03168552869550938101939281019260010161092c565b3461046f57600060031936011261046f5760206040516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461046f57600060031936011261046f5760c0600d54600e5461ffff906040519280600f0b845260801d600f0b60208401526bffffffffffffffffffffffff81166040840152818160601c166060840152818160701c16608084015260801c1660a0820152f35b3461046f57600060031936011261046f576020600954604051908152f35b3461046f57604060031936011261046f577f0100000000000000000000000000000000000000000000000000000000000000610a5e612b04565b610ac760025491610a7560028460f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176002556024359033613531565b6002541617600255602060405160018152f35b3461046f57600060031936011261046f57604051600454600082610afd83612c66565b9182825260209360019085600182169182600014610b9d575050600114610b40575b50610b2c92500383612c2b565b61062e604051928284938452830190612ac4565b84915060046000527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b906000915b858310610b85575050610b2c935082010185610b1f565b80548389018501528794508693909201918101610b6e565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001685820152610b2c95151560051b8501019250879150610b1f9050565b3461046f5760208060031936011261046f57610bf5612b04565b9060025490610c0a60028360f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80931617600255610c5b83614b0a565b610c6483614bb3565b610c6c613b0a565b92610c778451612fb8565b9060006001600160a01b0395868316915b8151811015610dcb5787610c9c828461457b565b5116600052600890818752604060002084600052875260406000205491608092831c610cc8838961457b565b52610cd3828861457b565b51610ce4575b506001915001610c88565b89610cef838661457b565b5116600052875260406000208460005287526040600020916fffffffffffffffffffffffffffffffff92838154169055610d29828861457b565b519083821161046f578a610d3d848761457b565b5116600052600a89528360406000209216908254901c039283116104d057600192610da391906fffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffff0000000000000000000000000000000083549260801b169116179055565b610dc589610db1838661457b565b511686610dbe848a61457b565b5191614c1a565b89610cd9565b84867f010000000000000000000000000000000000000000000000000000000000000089867f78d61a0c27b13f43911095f9f356f14daa3cd8b125eea1aa22421245e90e813d60405185815280610e2487820189612bc7565b0390a2600254161760025561062e604051928284938452830190612bc7565b3461046f5760208060031936011261046f5767ffffffffffffffff60043581811161046f573660238201121561046f578060040135610e8181612c4e565b91610e8f6040519384612c2b565b8183528483016024819360051b8301019136831161046f57602401905b8282106110ac5750505063ffffffff91600e5461ffff906040519485937f1dd421ce00000000000000000000000000000000000000000000000000000000855260c4850190600f6004870152824216602487015260c060448701525180915260e4850195916000905b8a83831061108f578a88600081808d8c8c6bffffffffffffffffffffffff81166064850152818160601c16608485015260701c1660a4830152038173c6378a93725e499a20df8f00ae31d9ce9d09f1ca5af491821561108357600092610fd8575b5050906040519181839283018184528251809152816040850193019160005b828110610fa457505050500390f35b83517affffffffffffffffffffffffffffffffffffffffffffffffffffff1685528695509381019392810192600101610f95565b9091503d806000843e610feb8184612c2b565b820191838184031261046f57805191821161046f57019080601f8301121561046f57815161101881612c4e565b926110266040519485612c2b565b818452848085019260051b82010192831161046f578401905b828210611050575050508280610f76565b81517affffffffffffffffffffffffffffffffffffffffffffffffffffff8116810361046f57815290840190840161103f565b6040513d6000823e3d90fd5b845182168952978801978997509093019260019190910190610f15565b813563ffffffff8116810361046f578152908601908601610eac565b3461046f57600060031936011261046f576111027f000000000000000000000000000000000000000000000000000000000000000061390f565b9061112c7f0000000000000000000000000000000000000000000000000000000000000000613a4a565b6040516020810181811067ffffffffffffffff8211176108815761062e9261119d916040526000835261118f6040519687967f0f000000000000000000000000000000000000000000000000000000000000008852806020890152870190612ac4565b908582036040870152612ac4565b90466060850152306080850152600060a085015283820360c0850152612bc7565b3461046f57602060031936011261046f576001600160a01b036111df612b04565b1660005260076020526020604060002054604051908152f35b3461046f57602060031936011261046f576101209061121d611218612b04565b612d68565b604051918151835260208201516020840152604082015160408401526001600160a01b0360608301511660608401526080820151608084015260a082015160a084015260c082015160c084015280820151908301526101008091015190820152f35b3461046f57600060031936011261046f576020600b54604051908152f35b3461046f57602060031936011261046f5760206112d56112bb612b04565b6001600160a01b0316600052600060205260406000205490565b604051908152f35b3461046f57604060031936011261046f576112f6612b04565b6112fe612b1a565b6001600160a01b0391821660009081526008602090815260408083209390941682529182528290205482516fffffffffffffffffffffffffffffffff8216815260809190911c91810191909152f35b3461046f5761135b36612b65565b91929060025461137160028260f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600255427f00000000000000000000000000000000000000000000000000000000000000001115611681576113ea33612d68565b926114147f000000000000000000000000000000000000000000000000000000000000000061311d565b937f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90818811908161046f5761145061145a978a429184614089565b9791989098613771565b9860008a1261046f576000891261046f576000881261046f576001600160a01b0391828716968c30890361164e575b50506114bf89847f00000000000000000000000000000000000000000000000000000000000000001694606087015116856133cd565b6114c8846131a8565b816115d1575b505060206114db8261337b565b9201918251906000821261046f571061158757505061046f57851161046f576040957f829000a5bc6a12d46e30cdcecd7c56b1efd88f6d7d059da6734a04f3764557c4857f01000000000000000000000000000000000000000000000000000000000000009561157061154d8a613771565b8b5195865260208601526040850192909252606084015233929081906080820190565b0390a3600254161760025582519182526020820152f35b6115909061337b565b9051906000821261046f57604491604051917ff62951c700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b6000945090858b1161046f576115e68b613771565b333b1561046f578c61162860009360405195869485947ffa483e7200000000000000000000000000000000000000000000000000000000865260048601612d11565b038183335af180156110835761163f575b806114ce565b61164890612bfb565b8a611639565b61167a91857f0000000000000000000000000000000000000000000000000000000000000000166133cd565b8c8c611489565b60046040517fb2094b59000000000000000000000000000000000000000000000000000000008152fd5b3461046f5760208060031936011261046f576004359061ffff9081831680930361046f57600254916116e360028460f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8094161760025580600e5460801c16604051947f587cdc06000000000000000000000000000000000000000000000000000000008652600f60048701528160248701526044860152828560648173c6378a93725e499a20df8f00ae31d9ce9d09f1ca5af491821561108357600092611849575b7f0100000000000000000000000000000000000000000000000000000000000000955082168082036117d0575b60028054861687179055005b7fac49e518f90a358f652e4400164f05a5d8f7e35e7747279bc3a93dbf584e125a936040937fffffffffffffffffffffffffffff0000ffffffffffffffffffffffffffffffff71ffff00000000000000000000000000000000600e549260801b16911617600e558351928352820152a1828080806117c4565b91508285813d8311611898575b6118608183612c2b565b8101031261046f576118927f010000000000000000000000000000000000000000000000000000000000000095612d45565b91611797565b503d611856565b3461046f57600060031936011261046f5760206112d56137e4565b3461046f57600060031936011261046f57602060405160ff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b3461046f57600060031936011261046f576020604051427f000000000000000000000000000000000000000000000000000000000000000011158152f35b3461046f57600060031936011261046f5760606040516001600160a01b03807f0000000000000000000000000000000000000000000000000000000000000000168252807f00000000000000000000000000000000000000000000000000000000000000001660208301527f0000000000000000000000000000000000000000000000000000000000000000166040820152f35b3461046f576119d836612b65565b9091926002546119ee60028260f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600255427f0000000000000000000000000000000000000000000000000000000000000000111561168157611a6733612d68565b91611a917f000000000000000000000000000000000000000000000000000000000000000061311d565b957f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff96878211908161046f57611ad3904290611acc85613771565b9088614089565b969198909760008a1261046f576000891261046f576000881261046f576001600160a01b0391828716968b308903611cd5575b5050611b3b8984606087015116857f0000000000000000000000000000000000000000000000000000000000000000166133cd565b611b44846131a8565b81611c56575b50507f000000000000000000000000000000000000000000000000000000000000000016611b778161337b565b8251906000821261046f5710611c0c57505061046f57611b9690613771565b95851161046f576040957f829000a5bc6a12d46e30cdcecd7c56b1efd88f6d7d059da6734a04f3764557c46115707f0100000000000000000000000000000000000000000000000000000000000000958951918291898b3397859094939260609260808301968352602083015260408201520152565b611c159061337b565b9051906000821261046f57604491604051917f2c49ea0f00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b6000945090611c6486613771565b908c8c1161046f57333b1561046f57600091611caf8d9260405195869485947ffa483e7200000000000000000000000000000000000000000000000000000000865260048601612d11565b038183335af1801561108357611cc6575b80611b4a565b611ccf90612bfb565b8a611cc0565b611d0191857f0000000000000000000000000000000000000000000000000000000000000000166133cd565b8c8b611b06565b3461046f57602060031936011261046f5760043561ffff81101561046f57606090600f01546040519063ffffffff811682527affffffffffffffffffffffffffffffffffffffffffffffffffffff8160201c16602083015260f81c15156040820152f35b3461046f57611d7a36612b30565b60025491611d8e60028460f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff809416176002556001600160a01b03841660005260016020526040600020336000526020526040600020546000198103611e31575b5090610ac7917f010000000000000000000000000000000000000000000000000000000000000094613531565b9190818310611e75577f010000000000000000000000000000000000000000000000000000000000000094611e6c83610ac795033383612fe9565b94509091611e04565b606460405162461bcd60e51b815260206004820152601d60248201527f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000006044820152fd5b3461046f57600060031936011261046f57600254611edd60028260f81c1415612cb9565b7f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80921617600255611f2e33612d68565b906001600160a01b0391827f00000000000000000000000000000000000000000000000000000000000000001692611f658461337b565b82516000811261046f57611f7891612d04565b90807f00000000000000000000000000000000000000000000000000000000000000001690611fa68261337b565b956020850151966000881261046f577f010000000000000000000000000000000000000000000000000000000000000097611fe091612d04565b9380612012575b505082611ffa5760028054861687179055005b606061200994015116906133cd565b828080806117c4565b6120239183606088015116906133cd565b8680611fe7565b3461046f57600060031936011261046f5760207effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b3461046f57606060031936011261046f57612082612b04565b602435604435917f02000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002546120dd60028260f81c1415612cb9565b1617600255427f000000000000000000000000000000000000000000000000000000000000000011156116815761211333612d68565b9061213d7f000000000000000000000000000000000000000000000000000000000000000061311d565b917f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384811161046f5784861161046f57600093811580156129a6575b6104a65760a08301954287511115611681576040840195865180156000146129295750506121a888846137a5565b906000821261046f576000600383111561291a5750816001908060011c600181018091116104d05791905b8483106128ff575050505b811161046f577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc1881019081136001166104d057956103e89297955b600088131561047457612230896020870151613d9e565b6020860152612240878651613d9e565b855261225661224f858a613d9e565b8251613d9e565b90526000831261046f576000871261046f576000881261046f576000861261046f5782612576575b5050506001600160a01b038216156125325761229982614b0a565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff841161046f576002547effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80861681831601116104d0577fff000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80871681841601169116176002556001600160a01b0382166000526000602052604060002061235f85825461319b565b905560405184815260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60206001600160a01b03861693a36123a182614bb3565b6123aa816131a8565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166123dd8161337b565b6020830151906000821261046f57106124e557506001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166124248161337b565b8251906000821261046f5710611c0c575050604080518481526020810186905290810183905261062e92916001600160a01b0316907fb4c03061fb5b7fed76389d5af8f2e0ddb09f8c70d1333abbb62582835e10accb90606090a27f01000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6002541617600255604051938493846040919493926060820195825260208201520152565b6124f060209161337b565b910151906000821261046f57604491604051917ff62951c700000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606460405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f2061646472657373006044820152fd5b42815111156116815761259d6125946125d293602087015190613dba565b91429051612d04565b907f0000000000000000000000000000000000000000000000000000000000000000906125ca8387613e32565b908651613ec4565b6101008301526125e0614961565b7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161046f57600254907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff831601917effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83116104d05760206000927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef927fff000000000000000000000000000000000000000000000000000000000000007effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60019716911617600255848452838252604084206126fd82825461319b565b9055604051908152a3306001141580612718575b808061227e565b61272190615551565b600160005260006020526040600020546040517fe268b3a40000000000000000000000000000000000000000000000000000000081526001600482015260408160248160006001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015611083576000916000916128b8575b50826028810204602814831517156104d05760646028840204916fffffffffffffffffffffffffffffffff8116612845575b50509080821060001461283e57505b61280981612804600b546001600052600c60205260406000205490612d04565b61319b565b600b556001600052600c6020527fd421a5181c571bba3f01190c922c3b2a896fc1d84e86c9f17ac10e67ebef8b5c5585612711565b90506127e4565b9061288b6fffffffffffffffffffffffffffffffff80612890941692167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416613e1f565b613eba565b90603c820291808304603c14901517156104d05760646128b192049061319b565b87806127d5565b9150506040813d6040116128f7575b816128d460409383612c2b565b8101031261046f576128f160206128ea83615dab565b9201615dab565b886127a3565b3d91506128c7565b90919350612911846128048184613eba565b821c91906121d3565b91156121de57600191506121de565b8998925061293d906129459295989a6137a5565b855190613cfc565b6129508951886137a5565b966129616020870198895190613cfc565b908183121561298257505061031f8161297c929998516137a5565b97612219565b9850989650506129a061299889989986516137a5565b875190613cfc565b95612219565b50861561217a565b3461046f57604060031936011261046f576129d46129ca612b04565b6024359033612fe9565b602060405160018152f35b3461046f57602060031936011261046f576001600160a01b03612a00612b04565b16600052600c6020526020604060002054604051908152f35b3461046f57600060031936011261046f57600354600082612a3983612c66565b9182825260209360019085600182169182600014610b9d575050600114612a675750610b2c92500383612c2b565b84915060036000527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b906000915b858310612aac575050610b2c935082010185610b1f565b80548389018501528794508693909201918101612a95565b919082519283825260005b848110612af0575050601f19601f8460006020809697860101520116010190565b602081830181015184830182015201612acf565b600435906001600160a01b038216820361046f57565b602435906001600160a01b038216820361046f57565b600319606091011261046f576001600160a01b0390600435828116810361046f5791602435908116810361046f579060443590565b90606060031983011261046f576004356001600160a01b038116810361046f57916024359160443567ffffffffffffffff9283821161046f578060238301121561046f57816004013593841161046f576024848301011161046f576024019190565b90815180825260208080930193019160005b828110612be7575050505090565b835185529381019392810192600101612bd9565b67ffffffffffffffff811161088157604052565b6040810190811067ffffffffffffffff82111761088157604052565b90601f601f19910116810190811067ffffffffffffffff82111761088157604052565b67ffffffffffffffff81116108815760051b60200190565b90600182811c92168015612caf575b6020831014612c8057565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b91607f1691612c75565b15612cc057565b606460405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006044820152fd5b919082039182116104d057565b929380608095601f1994601f9487526020870152606060408701528160608701528686013760008582860101520116010190565b519061ffff8216820361046f57565b51906001600160a01b038216820361046f57565b906040805192610120840184811067ffffffffffffffff82111761088157825260608401600090818152608086019180835260a087019381855260c088019282845260e089018381526101008a01978489528a600d5480600f0b825260801d600f0b60208201527effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416907f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211612f9a578201526001600160a01b0391828251957f5c098c11000000000000000000000000000000000000000000000000000000008752306004880152166024860152606085604481867f0000000000000000000000000000000000000000000000000000000000000000165afa8015612fae57869287968892612f3a575b505060ff16905216905269ffffffffffffffffffff9150808216612f3557507f00000000000000000000000000000000000000000000000000000000000000005b1690527f000000000000000000000000000000000000000000000000000000000000000090527f000000000000000000000000000000000000000000000000000000000000000090526bffffffffffffffffffffffff600e54169052565b612ed7565b93509550506060823d606011612fa6575b81612f5860609383612c2b565b81010312612fa257612f6982612d54565b9460208301519269ffffffffffffffffffff84168403612f9e5701519460ff86168603612f9a57919460ff38612e96565b8680fd5b8780fd5b8580fd5b3d9150612f4b565b82513d88823e3d90fd5b90612fc282612c4e565b612fcf6040519182612c2b565b828152601f19612fdf8294612c4e565b0190602036910137565b6001600160a01b038091169182156130b4571691821561304a5760207f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925918360005260018252604060002085600052825280604060002055604051908152a3565b608460405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152fd5b60206001600160a01b03600460009360405194859384927f1d52edc4000000000000000000000000000000000000000000000000000000008452165af19081156110835760009161316c575090565b90506020813d602011613193575b8161318760209383612c2b565b8101031261046f575190565b3d915061317a565b919082018092116104d057565b610100810180516bffffffffffffffffffffffff80821161046f576131da60206131d2865161403a565b95015161403a565b93600e549161ffff956040968751947f4af74b68000000000000000000000000000000000000000000000000000000008652600f6004870152818160601c16602487015263ffffffff421660448701528381166064870152818160701c16608487015260801c1660a4850152868460c48173c6378a93725e499a20df8f00ae31d9ce9d09f1ca5af49182156133705760009360009361331a575b6dffff0000000000000000000000009495507fffffffffffffffffffffffffffffffff00000000000000000000000000000000809360801b16906fffffffffffffffffffffffffffffffff1617600d556fffff0000000000000000000000000000600e549360701b1695169116179160601b161717600e555190519081527f5c0e21d57bb4cf91d8fe238d6f92e2685a695371b19209afcce6217b478f83e160204292a2565b925092508684813d8311613369575b6133338183612c2b565b8101031261046f576dffff00000000000000000000000092613360602061335987612d45565b9601612d45565b92859450613274565b503d613329565b87513d6000823e3d90fd5b60206001600160a01b03916024604051809481937f70a08231000000000000000000000000000000000000000000000000000000008352306004840152165afa9081156110835760009161316c575090565b9060405160208101937fa9059cbb0000000000000000000000000000000000000000000000000000000085526001600160a01b038093166024830152604482015260448152608081019181831067ffffffffffffffff841117610881576134819383604052169061343d83612c0f565b602083527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460a0820152600080958192519082855af161347b614bda565b916158e8565b908151918215928315613503575b5050501561349957565b608460405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60448201527f6f742073756363656564000000000000000000000000000000000000000000006064820152fd5b81929350906020918101031261352d576020015190811515820361352a575038808061348f565b80fd5b5080fd5b9190916001600160a01b0380821690811561370757841692831561369d57838214613659576135608584614b51565b6000908282528160205260408220548181106135ef5760208260408587957fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef95878c99528286520382822055868152206135bb82825461319b565b9055604051908152a330036135e0575b5030036135d55750565b6135de90615707565b565b6135e990615707565b386135cb565b608460405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206260448201527f616c616e636500000000000000000000000000000000000000000000000000006064820152fd5b606460405162461bcd60e51b815260206004820152601760248201527f45524332303a207472616e7366657220746f2073656c660000000000000000006044820152fd5b608460405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152fd5b608460405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152fd5b90816000039180830560001914901517156104d057565b90670de0b6b3a7640000918281029281840514901517156104d057565b8181029291600082127f80000000000000000000000000000000000000000000000000000000000000008214166104d05781840514901517156104d057565b6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000163014806138e6575b1561383f577f000000000000000000000000000000000000000000000000000000000000000090565b60405160208101907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f82527f000000000000000000000000000000000000000000000000000000000000000060408201527f000000000000000000000000000000000000000000000000000000000000000060608201524660808201523060a082015260a0815260c0810181811067ffffffffffffffff8211176108815760405251902090565b507f00000000000000000000000000000000000000000000000000000000000000004614613816565b60ff81146139655760ff811690601f821161393b576040519161393183612c0f565b8252602082015290565b60046040517fb3512b0c000000000000000000000000000000000000000000000000000000008152fd5b5060405160055481600061397883612c66565b80835292602090600190818116908115613a0757506001146139a6575b50506139a392500382612c2b565b90565b91509260056000527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0936000925b8284106139ef57506139a39450505081016020013880613995565b855487850183015294850194869450928101926139d4565b9050602093506139a39592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201013880613995565b60ff8114613a6c5760ff811690601f821161393b576040519161393183612c0f565b50604051600654816000613a7f83612c66565b80835292602090600190818116908115613a075750600114613aa95750506139a392500382612c2b565b91509260066000527ff652222313e28459528d920b65115c16c04f3efc82aaedc97be59f3f377c0d3f936000925b828410613af257506139a39450505081016020013880613995565b85548785018301529485019486945092810192613ad7565b6001600160a01b036040517fc4f59f9b0000000000000000000000000000000000000000000000000000000081526000918282600481847f0000000000000000000000000000000000000000000000000000000000000000165afa918215613cf1578392613c52575b507f000000000000000000000000000000000000000000000000000000000000000091613ba083826145be565b613c4b578051906001906001830195868411613c1e57601f19613bdb613bc589612c4e565b98613bd36040519a8b612c2b565b808a52612c4e565b013660208901375b838110613bfe57505050613bf7908461457b565b9116905290565b8085613c0b85938561457b565b5116613c17828a61457b565b5201613be3565b807f4e487b7100000000000000000000000000000000000000000000000000000000602492526011600452fd5b9250505090565b9091503d8084833e613c648183612c2b565b8101906020908181840312613ced5780519067ffffffffffffffff8211612fa257019180601f84011215613ced578251613c9d81612c4e565b93613cab6040519586612c2b565b818552838086019260051b820101928311612f9a578301905b828210613cd657505050509038613b73565b838091613ce284612d54565b815201910190613cc4565b8480fd5b6040513d85823e3d90fd5b8115613d335760001982147f80000000000000000000000000000000000000000000000000000000000000008214166104d0570590565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b90670de0b6b3a7640000600083820393128184128116918413901516176104d057565b818103929160001380158285131691841216176104d057565b919091600083820193841291129080158216911516176104d057565b613de3670de0b6b3a76400009160008412600014613e1457613dde600019946147dd565b613e1f565b047f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161046f576139a3916137a5565b613dde6001946147dd565b818102929181159184041417156104d057565b60800151906301e13380918281029281840514901517156104d0577f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161046f57613e7d91613cfc565b906000821315613e8957565b602482604051907f1ca418760000000000000000000000000000000000000000000000000000000082526004820152fd5b8115613d33570490565b9493929190600095868112613ff657613ee9613ee3613eee9383613d9e565b91613788565b614830565b670d529ae9e8600000808213613fbf5750613f1d9291613ee9613f13613f1893614cab565b613788565b613d9e565b670de0b6b3a76400008112613f8e57613f359061483a565b838112613f8a576301e1338090818102918183041490151715613f5d576139a3929350613eba565b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b8380fd5b602490604051907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b60449250604051917ffc68d09e00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b606460405162461bcd60e51b815260206004820152600860248201527f6e656761746976650000000000000000000000000000000000000000000000006044820152fd5b807fffffffffffffffffffffffffffffffff8000000000000000000000000000000013158061406f575b1561046f57600f0b90565b506f7fffffffffffffffffffffffffffffff811315614064565b93909360a081019484865111156116815781518481131561454457506040918251946080860186811067ffffffffffffffff82111761088157845260009586815260208101938785528582019088825260608301948986528a8c51111561451b576140f58b8d51612d04565b956141008783613e32565b85526020820196614112885185613dba565b808a5283519081158015614513575b6144dd57505082516101008401998a5192808251938a51956141496301e13380948592613e1f565b04957f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff968781116144d65761417d906159cf565b91670de0b6b3a7640000968784126144a3576141bd92613ee9613f136141b285613ee9613ee36141b7976141c99c9b99613d9e565b614cab565b90613d85565b8a5260c0880151613e1f565b0483811161449f57906141dc8a926159cf565b85526142018651915191613ee9613ee38c51946141fb8d519785614c9a565b93613d9e565b670d529ae9e860000080821361446957506142269291613ee9613f13613f1893614cab565b818112614439578d9061424461423f82613ee98d613788565b613771565b9451918a13156144145781613ee961425b92613788565b8281126143e457506142766142708392613d62565b856137a5565b059c5b60e085015183811161352d578e606461429561429c93836137a5565b0595613d85565b9181831280156143cc57156143c1576142b7600019936147dd565b81810291818304149015171561439457866142d19161319b565b600019810190811161439457866142e791613eba565b92831161352a5750614304916142fc916137a5565b9b5b84615048565b9061430f9084615048565b9a8b919c819e519061432091612d04565b9683519061432d91614c9a565b835287519161433b91613d9e565b61434491614c9a565b809652519461435291613dba565b915190519161436094613ec4565b8091521561436b5750565b600490517faa69ae1e000000000000000000000000000000000000000000000000000000008152fd5b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b6142b76001936147dd565b50505061430491506143de9085615048565b9b6142fe565b6024908d51907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b5061423f8161442e61442861443394613d62565b876137a5565b613cfc565b9c614279565b6024908c51907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b604492508e51917ffc68d09e00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b8e80fd5b5050506024908f51907fca78c8a40000000000000000000000000000000000000000000000000000000082526004820152fd5b5050508f80fd5b604492508b51917fb1c4aefb00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b508015614121565b600488517fb2094b59000000000000000000000000000000000000000000000000000000008152fd5b60449085604051917f8615426c00000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b805182101561458f5760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9081519160005b8381106145d55750505050600090565b6001600160a01b03806145e8838561457b565b5116908416146145fa576001016145c5565b50505050600190565b9291907f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a083116146865791608094939160ff602094604051948552168484015260408301526060820152600093849182805260015afa156146795781516001600160a01b03811615614673579190565b50600190565b50604051903d90823e3d90fd5b50505050600090600390565b60058110156147ae57806146a35750565b600181036146ef57606460405162461bcd60e51b815260206004820152601860248201527f45434453413a20696e76616c6964207369676e617475726500000000000000006044820152fd5b6002810361473b57606460405162461bcd60e51b815260206004820152601f60248201527f45434453413a20696e76616c6964207369676e6174757265206c656e677468006044820152fd5b60031461474457565b608460405162461bcd60e51b815260206004820152602260248201527f45434453413a20696e76616c6964207369676e6174757265202773272076616c60448201527f75650000000000000000000000000000000000000000000000000000000000006064820152fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6000808213156147eb575090565b7f80000000000000000000000000000000000000000000000000000000000000008214613c1e570390565b8015613d33576ec097ce7bc90715b34b9f10000000000590565b8115613d33570590565b600081131561491d5780670c7d713b49da0000128061490c575b1561490357670de0b6b3a7640000906ec097ce7bc90715b34b9f1000000000906148a7908302828101907fffffffffffffffffffffffffffffffffff3f68318436f8ea4cb460f000000000018302614830565b9080828002059181838202058284820205838582020591848684020593858786020595808888020597880205600f900596600d900595600b900594600990059360079005926005900591600390050101010101010160011b0590565b6139a390614cfc565b50670f43fc2c04ee00008112614854565b606460405162461bcd60e51b815260206004820152600d60248201527f6f7574206f6620626f756e6473000000000000000000000000000000000000006044820152fd5b6149696150bc565b815115614b0657600190308214159081614984575b50505050565b6149918395949392615551565b6000828152602090600c8252604091828220549582985b6149b9575b5050505083945061497e565b8051891015614b01576001600160a01b036149d48a8361457b565b5116986149e1818761457b565b519980855260089081855286862089875285526fffffffffffffffffffffffffffffffff8088882054168015614afa575b8d8114614aea5781614a588f92614a3c8f614a36670de0b6b3a76400009387612d04565b90613e1f565b04858b52868a528d8c8c20908c528a528b8b205460801c61319b565b9111612f9e57818111612f9e5792614ae192828c9d9e9f93958d97968c5195614a8087612c0f565b1685521688840152885286528787208488528652878720815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b019897966149a8565b5050505086979899508690614ae1565b5089614a12565b6149ad565b5050565b614b126150bc565b90805115614b4c576001600160a01b0383168015159081614b41575b50614b3857505050565b6135de92615587565b905030141538614b2e565b505050565b614b596150bc565b9181511561497e576001600160a01b039083838383168015159081614ba8575b50614b97575b50505083168015159081614b415750614b3857505050565b614ba092615587565b388383614b7f565b905030141538614b79565b6001600160a01b0381168015159081614bcf575b506135d55750565b905030141538614bc7565b3d15614c15573d9067ffffffffffffffff82116108815760405191614c096020601f19601f8401160184612c2b565b82523d6000602084013e565b606090565b9190918115614b4c576001600160a01b03169182614c91576000809350809281925af1614c45614bda565b5015614c4d57565b606460405162461bcd60e51b815260206004820152600f60248201527f6574682073656e64206661696c656400000000000000000000000000000000006044820152fd5b6135de926133cd565b90808212613ff6576139a391613d85565b670de0b6b3a76400008114614cd257614ccd81613ee9613ee36139a394613d62565b61483a565b60046040517fa9c8b14d000000000000000000000000000000000000000000000000000000008152fd5b670de0b6b3a764000081126150315760649060007e1600ef3172e58d2e933ec884fde10064c63b5372d805e203c0000000000000821215615006575b73011798004d755d3c8bc8e03204cf44619e000000821215614fe5575b820290808302906e01855144814a7ff805980ff00840009081831215614fc2575b50506b02df0ab5a80a22c61ab5a70080821215614fa2575b50693f1fce3da636ea5cf85080821215614f82575b50690127fa27722cc06cc5e280821215614f62575b5068280e60114edb805d0380821215614f42575b50680ebc5fb4174612111080821215614f2b575b506808f00f760a4b2db55d80821215614f0b575b506806f5f177578893793780821215614eeb575b506806248f33704b28660380821215614ecc575b506805c548670b9510e7ac80821215614ead575b50614e6c68056bc75e2d6310000091827ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000818301920102614830565b9080828002059181838202058284820205916003600560076009600b888a89020598808b8b02059a8b0205059805960594059205010101010160011b010590565b68056bc75e2d631000006756bc75e2d631000092020591019038614e30565b68056bc75e2d6310000067ad78ebc5ac62000092020591019038614e1c565b68056bc75e2d6310000068015af1d78b58c4000092020591019038614e08565b68056bc75e2d631000006802b5e3af16b188000092020591019038614df4565b68056bc75e2d631000008092020591019038614de0565b68056bc75e2d63100000680ad78ebc5ac620000092020591019038614dcc565b68056bc75e2d631000006815af1d78b58c40000092020591019038614db8565b68056bc75e2d63100000682b5e3af16b1880000092020591019038614da3565b68056bc75e2d631000006856bc75e2d63100000092020591019038614d8e565b68ad78ebc5ac62000000925069021e19e0c9bab240000002059101903880614d76565b906b1425982cf597cd205cef73806803782dace9d900000091059101614d55565b50770195e54c5dd42177f53a27172fa9ec63026282700000000090056806f05b59d3b2000000614d38565b61503d61504291614816565b614cfc565b60000390565b60008212156150b15761505d600019926147dd565b90670de0b6b3a7640000918281029281840414901517156104d05761508191613eba565b7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811161046f576139a3916137a5565b61505d6001926147dd565b6150c4613b0a565b906150cf8251612fb8565b918051926000931561554b5760095443146154f35743600955600b5490604051947fef5cfb8c0000000000000000000000000000000000000000000000000000000086526004953060048201528181602481836001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000165af1801561545e57615469575b506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016803b1561352d578180916004604051809481937f58f3d1630000000000000000000000000000000000000000000000000000000083525af1801561545e5761544f575b5090815b8451811015615446576001600160a01b036151e6828761457b565b511690818452600a918260205260408520906040519161520583612c0f565b54916fffffffffffffffffffffffffffffffff8316815260208360801c9101526fffffffffffffffffffffffffffffffff8216916001600160a01b0361524b858b61457b565b5116806153ba5750615262475b8260801c90612d04565b6fffffffffffffffffffffffffffffffff8216156153b1575b8861534f575b6fffffffffffffffffffffffffffffffff841161046f576152a49160801c61319b565b6fffffffffffffffffffffffffffffffff811161046f5760019461533e926fffffffffffffffffffffffffffffffff604051936152e085612c0f565b8187168552166020840152885260205260408720815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b615348828561457b565b52016151cb565b92670de0b6b3a764000080850290858204148515171561538357906153778a61537d93613eba565b9061319b565b92615281565b60118d7f4e487b71000000000000000000000000000000000000000000000000000000006000525260246000fd5b6001935061527b565b60208c6024604051809481937f70a0823100000000000000000000000000000000000000000000000000000000835230908301525afa801561543b578890615407575b6152629150615258565b506020813d602011615433575b8161542160209383612c2b565b8101031261046f5761526290516153fd565b3d9150615414565b6040513d8a823e3d90fd5b50939294505050565b61545890612bfb565b386151c7565b6040513d84823e3d90fd5b3d8083833e6154788183612c2b565b81016020918281830312613f8a5780519067ffffffffffffffff8211613ced570181601f82011215613f8a5780519083806154b284612c4e565b6154bf6040519182612c2b565b848152019260051b820101928311613ced578301905b8282106154e457505050615159565b815181529083019083016154d5565b9092805b845181101561554657806001600160a01b036155156001938861457b565b51168352600a6020526fffffffffffffffffffffffffffffffff60408420541661553f828661457b565b52016154f7565b505090565b92509190565b1561555857565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b929190926001600160a01b03809116801515806156fd575b6155a890615551565b600094818652602090600c82526040938488205491885b81518110156156f157826155d3828461457b565b5116908a6155e1828b61457b565b5183825260088089528a83208a845289526fffffffffffffffffffffffffffffffff94858c8520541680156156e9575b8381146156db57670de0b6b3a76400006156376156316156529387612d04565b8c613e1f565b04828652838c528d86208d87528c528d86205460801c61319b565b9386841161352a5786851161352a57866156d5956001988f519661567588612c0f565b168652168b850152528852898d20898e528852898d20815160209092015160801b7fffffffffffffffffffffffffffffffff00000000000000000000000000000000166fffffffffffffffffffffffffffffffff92909216919091179055565b016155bf565b5050505050600191506156d5565b506001615611565b50505050505050509050565b503081141561559f565b6001600160a01b0361572881831692831515806158de575b6112bb90615551565b9060409182517fe268b3a40000000000000000000000000000000000000000000000000000000081528460048201528381602481600080977f0000000000000000000000000000000000000000000000000000000000000000165af19081156158d45783908492615893575b506fffffffffffffffffffffffffffffffff8091169060288402848104602814851517156158665760649004928261580a575b505050908082106000146158025750925b6157f484612804600b54848652600c6020528686205490612d04565b600b558152600c6020522055565b9050926157d8565b61583d929161288b91167effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60025416613e1f565b603c810290808204603c1490151715613f5d5790606461585e92049061319b565b3880806157c7565b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b809250858092503d83116158cd575b6158ac8183612c2b565b810103126158c9576158c260206128ea83615dab565b9038615794565b8280fd5b503d6158a2565b84513d85823e3d90fd5b503084141561571f565b9192901561594957508151156158fc575090565b3b156159055790565b606460405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152fd5b82519091501561595c5750805190602001fd5b6159809060405191829162461bcd60e51b8352602060048401526024830190612ac4565b0390fd5b1561598b57565b606460405162461bcd60e51b815260206004820152601060248201527f496e76616c6964206578706f6e656e74000000000000000000000000000000006044820152fd5b7ffffffffffffffffffffffffffffffffffffffffffffffffdc702bd3a30fc000081121580615d98575b615a0290615984565b60008112615d83576064906806f05b59d3b20000008112615d20577ffffffffffffffffffffffffffffffffffffffffffffffff90fa4a62c4e0000000168056bc75e2d6310000082770195e54c5dd42177f53a27172fa9ec630262827000000000925b02819068ad78ebc5ac62000000811215615ce7575b6856bc75e2d631000000811215615cad575b682b5e3af16b18800000811215615c75575b6815af1d78b58c400000811215615c3d575b680ad78ebc5ac6200000811215615c06575b82811215615bcf575b6802b5e3af16b1880000811215615b98575b68015af1d78b58c40000811215615b61575b60028382800205058360038184840205056004828583020505600583868302050560068487830205056007858883020505906008868984020505926009878a8602050594600a888b8802050596600b898c8a02050599600c8a8d8d0205059b0101010101010101010101010205020590565b6806f5f17757889379377ffffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c000084920192020590615aef565b6808f00f760a4b2db55d7ffffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e78000084920192020590615add565b680ebc5fb417461211107ffffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf0000084920192020590615acb565b68280e60114edb805d037ffffffffffffffffffffffffffffffffffffffffffffffff5287143a539e0000084920192020590615ac2565b690127fa27722cc06cc5e27fffffffffffffffffffffffffffffffffffffffffffffffea50e2874a73c0000084920192020590615ab0565b693f1fce3da636ea5cf8507fffffffffffffffffffffffffffffffffffffffffffffffd4a1c50e94e780000084920192020590615a9e565b6b02df0ab5a80a22c61ab5a7007fffffffffffffffffffffffffffffffffffffffffffffffa9438a1d29cf00000084920192020590615a8c565b6e01855144814a7ff805980ff008400091507fffffffffffffffffffffffffffffffffffffffffffffff5287143a539e00000001615a7a565b6803782dace9d90000008112615d70577ffffffffffffffffffffffffffffffffffffffffffffffffc87d25316270000000168056bc75e2d63100000826b1425982cf597cd205cef738092615a65565b68056bc75e2d6310000082600192615a65565b615d8f906000036159cf565b6139a390614816565b5068070c1cc73b00c800008113156159f9565b51906fffffffffffffffffffffffffffffffff8216820361046f5756fea2646970667358221220dd257a25d999d85784fa1161ac2b518a57338a6aa5ef9dcba72e6202dcd0648564736f6c63430008170033000000000000000000000000386bf9105ef88e79fb8ca53dcc9a4e6f04be01020000000000000000000000000000000000000000000000015a68e464f76dba000000000000000000000000000000000000000000000000000ed35c2cc6c428000000000000000000000000000000000000000000000000000001c6a23a403a400000000000000000000000004f30a9d41b80ecc5b94306ab4364951ae317021000000000000000000000000047d74516b33ed5d70dde7119a40839f6fcc24e57