@uniswap/v4-periphery
Version:
🦄 Peripheral smart contracts for interacting with Uniswap v4
1 lines • 789 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"type":"function","name":"IS_SCRIPT","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"MIN_PRICE_LIMIT","inputs":[],"outputs":[{"name":"","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"REMOVE_LIQUIDITY_PARAMS","inputs":[],"outputs":[{"name":"tickLower","type":"int24","internalType":"int24"},{"name":"tickUpper","type":"int24","internalType":"int24"},{"name":"liquidityDelta","type":"int256","internalType":"int256"},{"name":"salt","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"SWAP_PARAMS","inputs":[],"outputs":[{"name":"zeroForOne","type":"bool","internalType":"bool"},{"name":"amountSpecified","type":"int256","internalType":"int256"},{"name":"sqrtPriceLimitX96","type":"uint160","internalType":"uint160"}],"stateMutability":"view"},{"type":"function","name":"_WETH9","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IWETH9"}],"stateMutability":"view"},{"type":"function","name":"deployAndApprovePosm","inputs":[{"name":"poolManager","type":"address","internalType":"contract IPoolManager"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPermit2","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookModifyLiquidities","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"deployPosmHookSavesDelta","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"excludeArtifacts","inputs":[],"outputs":[{"name":"excludedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"excludeContracts","inputs":[],"outputs":[{"name":"excludedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"excludeSelectors","inputs":[],"outputs":[{"name":"excludedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"excludeSenders","inputs":[],"outputs":[{"name":"excludedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"failed","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"positionDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IPositionDescriptor"}],"stateMutability":"view"},{"type":"function","name":"run","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"nonpayable"},{"type":"function","name":"setUp","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"targetArtifactSelectors","inputs":[],"outputs":[{"name":"targetedArtifactSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzArtifactSelector[]","components":[{"name":"artifact","type":"string","internalType":"string"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetArtifacts","inputs":[],"outputs":[{"name":"targetedArtifacts_","type":"string[]","internalType":"string[]"}],"stateMutability":"view"},{"type":"function","name":"targetContracts","inputs":[],"outputs":[{"name":"targetedContracts_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"targetInterfaces","inputs":[],"outputs":[{"name":"targetedInterfaces_","type":"tuple[]","internalType":"struct StdInvariant.FuzzInterface[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"artifacts","type":"string[]","internalType":"string[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSelectors","inputs":[],"outputs":[{"name":"targetedSelectors_","type":"tuple[]","internalType":"struct StdInvariant.FuzzSelector[]","components":[{"name":"addr","type":"address","internalType":"address"},{"name":"selectors","type":"bytes4[]","internalType":"bytes4[]"}]}],"stateMutability":"view"},{"type":"function","name":"targetSenders","inputs":[],"outputs":[{"name":"targetedSenders_","type":"address[]","internalType":"address[]"}],"stateMutability":"view"},{"type":"function","name":"test_domainSeparator","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_fuzz_noPermit_revokeRevert","inputs":[{"name":"nonce","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_noPermit_collectRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_noPermit_decreaseLiquidityRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_noPermit_increaseLiquidityRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permit_collect","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permit_decreaseLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permit_increaseLiquidity","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permit_notOwnerRevert","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permit_operatorSelfPermit","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_permit_thirdParty","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"log","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_address","inputs":[{"name":"","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_array","inputs":[{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_bytes","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_bytes32","inputs":[{"name":"","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_int","inputs":[{"name":"","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_address","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256[]","indexed":false,"internalType":"uint256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256[]","indexed":false,"internalType":"int256[]"}],"anonymous":false},{"type":"event","name":"log_named_array","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"address[]","indexed":false,"internalType":"address[]"}],"anonymous":false},{"type":"event","name":"log_named_bytes","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"log_named_bytes32","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"bytes32","indexed":false,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"log_named_decimal_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_decimal_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"decimals","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_named_int","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"int256","indexed":false,"internalType":"int256"}],"anonymous":false},{"type":"event","name":"log_named_string","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_named_uint","inputs":[{"name":"key","type":"string","indexed":false,"internalType":"string"},{"name":"val","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"log_string","inputs":[{"name":"","type":"string","indexed":false,"internalType":"string"}],"anonymous":false},{"type":"event","name":"log_uint","inputs":[{"name":"","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"logs","inputs":[{"name":"","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false}],"bytecode":{"object":"0x600c805460ff199081166001908117909255601f80548216831790556077196080819052607860a0819052670de0b6b3a764000060c08190525f60e0819052602080546378ffff8865ffffffffffff19918216811790925560219390935560228290556101009490945261012092909252670de0b6b3a763ffff196101408190526101608390526023805490921690931790556024919091556025556101e06040526101808290526063196101a08190526bb504f333f9de6484597d89b36101c0819052602680549093168417909255602755602880546001600160a01b0319908116909217905560428054909116600e17905560438054614000600160a11b036001600160a81b031990911617905561011a9042906101ae565b604555604b80546001600160a01b03191661050017905560405161013d906101a0565b604051809103905ff080158015610156573d5f803e3d5ffd5b50604c80546001600160a01b03929092166001600160a01b0319928316179055604e8054821661abcd17905560508054909116610f8017905534801561019a575f80fd5b506101d3565b61121e806202518483390190565b808201808211156101cd57634e487b7160e01b5f52601160045260245ffd5b92915050565b62024fa280620001e25f395ff3fe608060405260043610610260575f3560e01c80636b9381dd1161014b578063ba414fa6116100c6578063e20c9f711161007c578063f8ccbf4711610062578063f8ccbf4714610686578063fa7626d4146106b7578063ffe08f35146106d0575f80fd5b8063e20c9f7114610653578063f37840f214610667575f80fd5b8063c7b8e15d116100ac578063c7b8e15d14610617578063c9ec18721461062b578063cb6953901461063f575f80fd5b8063ba414fa6146105df578063c040622614610603575f80fd5b8063916a17c61161011b578063b0464fdc11610101578063b0464fdc1461054d578063b1a73b8a14610561578063b5508aa9146105cb575f80fd5b8063916a17c6146104ff57806393ad73ed14610520575f80fd5b80636b9381dd146104a25780637f988613146104b65780638063f660146104ca57806385226c81146104de575f80fd5b806339852474116101db5780633f7286f4116101ab57806363e8f7281161019157806363e8f7281461044157806366d9a9a01461046d57806367382c051461048e575f80fd5b80633f7286f414610419578063542524dd1461042d575f80fd5b8063398524741461038857806339cd20131461039c5780633c184b05146103f15780633e5e3c2314610405575f80fd5b80631ed7831c116102305780632e94f495116102165780632e94f4951461034c57806333151ad71461036057806334ebb3ab14610374575f80fd5b80631ed7831c1461030a5780632ade38801461032b575f80fd5b806303ef31f61461026b5780630a5e02d71461028c5780630a9254e4146102a0578063106d0231146102b4575f80fd5b3661026757005b5f80fd5b348015610276575f80fd5b5061028a610285366004617616565b6106e4565b005b348015610297575f80fd5b5061028a6106f8565b3480156102ab575f80fd5b5061028a610bf9565b3480156102bf575f80fd5b506047546102e09073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff90911681526020015b60405180910390f35b348015610315575f80fd5b5061031e611076565b6040516103019190617638565b348015610336575f80fd5b5061033f6110e3565b60405161030191906176dc565b348015610357575f80fd5b5061028a61122c565b34801561036b575f80fd5b5061028a611357565b34801561037f575f80fd5b5061028a611aec565b348015610393575f80fd5b5061028a6120e7565b3480156103a7575f80fd5b506023546024546025546103c992600281810b936301000000909204900b9184565b60408051600295860b81529390940b6020840152928201526060810191909152608001610301565b3480156103fc575f80fd5b5061028a61283b565b348015610410575f80fd5b5061031e612ce2565b348015610424575f80fd5b5061031e612d4d565b348015610438575f80fd5b506102e0612db8565b34801561044c575f80fd5b50604d546102e09073ffffffffffffffffffffffffffffffffffffffff1681565b348015610478575f80fd5b50610481612dda565b604051610301919061784a565b348015610499575f80fd5b5061028a612f53565b3480156104ad575f80fd5b5061028a613067565b3480156104c1575f80fd5b5061028a6135c2565b3480156104d5575f80fd5b5061028a613b3a565b3480156104e9575f80fd5b506104f2613dfb565b60405161030191906178e6565b34801561050a575f80fd5b50610513613ec6565b604051610301919061795b565b34801561052b575f80fd5b506020546021546022546103c992600281810b936301000000909204900b9184565b348015610558575f80fd5b50610513613fc9565b34801561056c575f80fd5b506026546027546028546105989260ff16919073ffffffffffffffffffffffffffffffffffffffff1683565b604080519315158452602084019290925273ffffffffffffffffffffffffffffffffffffffff1690820152606001610301565b3480156105d6575f80fd5b506104f26140cc565b3480156105ea575f80fd5b506105f3614197565b6040519015158152602001610301565b34801561060e575f80fd5b506102e0614267565b348015610622575f80fd5b506102e061432d565b348015610636575f80fd5b506102e061433d565b34801561064a575f80fd5b5061028a61434b565b34801561065e575f80fd5b5061031e6144d3565b348015610672575f80fd5b5061028a6106813660046179fd565b61453e565b348015610691575f80fd5b506043546105f39074010000000000000000000000000000000000000000900460ff1681565b3480156106c2575f80fd5b50601f546105f39060ff1681565b3480156106db575f80fd5b5061028a614aa8565b6106ed81614ff0565b6106f5615193565b50565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b15801561077e575f80fd5b505af1158015610790573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b9282019290925260555461087994509092508491165f5b6040519080825280601f01601f191660200182016040528015610873576020820181803683370190505b506151d7565b5f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156108e6573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061090a9190617a41565b6109149190617a85565b60565460575491925061094091839073ffffffffffffffffffffffffffffffffffffffff166001615258565b6057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015267062ad3720a2f000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156109c6575f80fd5b505af11580156109d8573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602084015263010000009004900b91810191909152610abc9250849150835f5b6040519080825280601f01601f191660200182016040528015610ab6576020820181803683370190505b50615492565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610b23575f80fd5b505af1158015610b35573d5f803e3d5ffd5b50506044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018690525f935073ffffffffffffffffffffffffffffffffffffffff9091169150631efeed3390602401602060405180830381865afa158015610ba8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610bcc9190617a98565b6fffffffffffffffffffffffffffffffff169050610bf381610bee8487617a85565b61549f565b50505050565b610c376040518060400160405280600581526020017f414c494345000000000000000000000000000000000000000000000000000000815250615523565b605655605580547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117905560408051808201909152600381527f424f4200000000000000000000000000000000000000000000000000000000006020820152610cbc90615523565b605855605780547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055610d0c61567e565b610d14615c61565b5050602954602a54610d519173ffffffffffffffffffffffffffffffffffffffff90811691165f610bb86c01000000000000000000000000615ce2565b6054558051603680547fffffffffffffffffffffffff000000000000000000000000000000000000000090811673ffffffffffffffffffffffffffffffffffffffff93841617909155602083015160378054604086015160608701519386167fffffffffffffffffff0000000000000000000000000000000000000000000000909216919091177401000000000000000000000000000000000000000062ffffff92831602177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff167701000000000000000000000000000000000000000000000091909316029190911790556080909201516038805490931690821617909155602b54610e5e91166106e4565b605554610e809073ffffffffffffffffffffffffffffffffffffffff16615e3e565b605754610ea29073ffffffffffffffffffffffffffffffffffffffff16615e3e565b605554610ec49073ffffffffffffffffffffffffffffffffffffffff16615f8b565b605754610ee69073ffffffffffffffffffffffffffffffffffffffff16615f8b565b604080516101008101825260365473ffffffffffffffffffffffffffffffffffffffff90811660608301818152603754808416608086018190527401000000000000000000000000000000000000000080830462ffffff90811660a089018190527701000000000000000000000000000000000000000000000094859004600281900b60c08b015260385490981660e08a018190529589527ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed460208a015261012c9890990197909752605980547fffffffffffffffffffffffff00000000000000000000000000000000000000009081169096179055605a80547fffffffffffffffffff0000000000000000000000000000000000000000000000169092179702969096177fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff169390941690930291909117909255605b8054909216179055605c80547fffffffffffffffffffffffffffffffffffffffffffffffffffff0000000000001664012cfffed4179055565b606060168054806020026020016040519081016040528092919081815260200182805480156110d957602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ae575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b82821015611223575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b8282101561120c578382905f5260205f2001805461118190617ac7565b80601f01602080910402602001604051908101604052809291908181526020018280546111ad90617ac7565b80156111f85780601f106111cf576101008083540402835291602001916111f8565b820191905f5260205f20905b8154815290600101906020018083116111db57829003601f168201915b505050505081526020019060010190611164565b505050508152505081526020019060010190611106565b50505050905090565b604454604080517f3644e51500000000000000000000000000000000000000000000000000000000815290516113559273ffffffffffffffffffffffffffffffffffffffff1691633644e5159160048083019260209291908290030181865afa15801561129b573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112bf9190617a41565b604454604080517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a86660208201527f7cdd38ae70f02d5eb954d5bafbadb6e6ee2067b58a9dbed8e6c370c9a571913e9181019190915246606082015273ffffffffffffffffffffffffffffffffffffffff909116608082015260a00160405160208183030381529060405280519060200120616088565b565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156113dd575f80fd5b505af11580156113ef573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b928201929092526055546114ac94509092508491165f610849565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611513575f80fd5b505af1158015611525573d5f803e3d5ffd5b505050505f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611596573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115ba9190617a41565b6115c49190617a85565b6057549091506001905f906115fa9073ffffffffffffffffffffffffffffffffffffffff1684846115f54282617b18565b6160e0565b6056546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015611675573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906116999190617b2b565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152828201909152600782527f434841524c494500000000000000000000000000000000000000000000000000602083015291505f9061174b90616249565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156117c6575f80fd5b505af11580156117d8573d5f803e3d5ffd5b505060445460575473ffffffffffffffffffffffffffffffffffffffff9182169350630f5730f19250168a61180e426001617b18565b8b876040518663ffffffff1660e01b8152600401611830959493929190617b64565b5f604051808303815f87803b158015611847575f80fd5b505af1158015611859573d5f803e3d5ffd5b50506057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015267062ad3720a2f00009250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d56906024015f604051808303815f87803b1580156118e3575f80fd5b505af11580156118f5573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602084015263010000009004900b918101919091526119ad92508b9150835f610a8c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611a14575f80fd5b505af1158015611a26573d5f803e3d5ffd5b50506044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018d90525f935073ffffffffffffffffffffffffffffffffffffffff9091169150631efeed3390602401602060405180830381865afa158015611a99573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611abd9190617a98565b6fffffffffffffffffffffffffffffffff169050611adf81610bee848e617a85565b5050505050505050505050565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015611b72575f80fd5b505af1158015611b84573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b92820192909252605554611c4194509092508491165f610849565b5f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611cae573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611cd29190617a41565b611cdc9190617a85565b603054604080515f815260208101918290527f234266d70000000000000000000000000000000000000000000000000000000090915291925067062ad3720a2f00009167031569b9051780009173ffffffffffffffffffffffffffffffffffffffff169063234266d790611d5a906036908690869060248101617ba4565b6020604051808303815f875af1158015611d76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611d9a9190617a41565b50604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015274010000000000000000000000000000000000000000810462ffffff1660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602080850191909152630100000090910490910b8284015282515f80825291810190935291611e5d91869161625a565b6057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611edc575f80fd5b505af1158015611eee573d5f803e3d5ffd5b50506057546040805173ffffffffffffffffffffffffffffffffffffffff90921660248084019190915281518084039091018152604490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ca968d800000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb39250611fc09190600401617c65565b5f604051808303815f87803b158015611fd7575f80fd5b505af1158015611fe9573d5f803e3d5ffd5b505060445473ffffffffffffffffffffffffffffffffffffffff16915063dd46508f905082612019426001617b18565b6040518363ffffffff1660e01b8152600401612036929190617c77565b5f604051808303815f87803b15801561204d575f80fd5b505af115801561205f573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156120ca575f80fd5b505af11580156120dc573d5f803e3d5ffd5b505050505050505050565b6055546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b15801561216d575f80fd5b505af115801561217f573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b9282019290925260555461223c94509092508491165f610849565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156122a3575f80fd5b505af11580156122b5573d5f803e3d5ffd5b505050505f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612326573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061234a9190617a41565b6123549190617a85565b6057549091506001905f906123859073ffffffffffffffffffffffffffffffffffffffff1684846115f54282617b18565b6056546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015612400573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906124249190617b2b565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526057547fca669fa700000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612516575f80fd5b505af1158015612528573d5f803e3d5ffd5b505060445460575473ffffffffffffffffffffffffffffffffffffffff9182169350630f5730f19250168961255e426001617b18565b8a866040518663ffffffff1660e01b8152600401612580959493929190617b64565b5f604051808303815f87803b158015612597575f80fd5b505af11580156125a9573d5f803e3d5ffd5b50506057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015267062ad3720a2f00009250737109709ecfa91a80626ff3989d68f67f5b1dd12d91506306447d56906024015f604051808303815f87803b158015612633575f80fd5b505af1158015612645573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602084015263010000009004900b918101919091526126fd92508a9150835f610a8c565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612764575f80fd5b505af1158015612776573d5f803e3d5ffd5b50506044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018c90525f935073ffffffffffffffffffffffffffffffffffffffff9091169150631efeed3390602401602060405180830381865afa1580156127e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061280d9190617a98565b6fffffffffffffffffffffffffffffffff16905061282f81610bee848d617a85565b50505050505050505050565b604454604080517f75794a3c0000000000000000000000000000000000000000000000000000000081529051670de0b6b3a7640000925f9273ffffffffffffffffffffffffffffffffffffffff909116916375794a3c916004808201926020929091908290030181865afa1580156128b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906128d99190617a41565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015612958575f80fd5b505af115801561296a573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b92820192909252605554612a2794509092508591165f610849565b605654605754612a519190839073ffffffffffffffffffffffffffffffffffffffff166001615258565b6057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116600482015267062ad3720a2f000090737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612ad7575f80fd5b505af1158015612ae9573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602080850191909152630100000090910490910b8284015282515f8152908101909252612bb09350859250908490616271565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612c17575f80fd5b505af1158015612c29573d5f803e3d5ffd5b50506044546040517f1efeed33000000000000000000000000000000000000000000000000000000008152600481018690525f935073ffffffffffffffffffffffffffffffffffffffff9091169150631efeed3390602401602060405180830381865afa158015612c9c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612cc09190617a98565b6fffffffffffffffffffffffffffffffff169050610bf381610bee8487617b18565b606060188054806020026020016040519081016040528092919081815260200182805480156110d957602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ae575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156110d957602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ae575050505050905090565b612dd7600173fffd8963efd1fc6a506488495d951d5263988d26617c98565b81565b6060601b805480602002602001604051908101604052809291908181526020015f905b82821015611223578382905f5260205f2090600202016040518060400160405290815f82018054612e2d90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054612e5990617ac7565b8015612ea45780601f10612e7b57610100808354040283529160200191612ea4565b820191905f5260205f20905b815481529060010190602001808311612e8757829003601f168201915b5050505050815260200160018201805480602002602001604051908101604052809291908181526020018280548015612f3b57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411612ee85790505b50505050508152505081526020019060010190612dfd565b5f604051612f609061753f565b604051809103905ff080158015612f79573d5f803e3d5ffd5b50604b546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b8152600401612ff0929190617cc4565b5f604051808303815f87803b158015613007575f80fd5b505af1158015613019573d5f803e3d5ffd5b5050604b54604a80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055505050565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156130ed575f80fd5b505af11580156130ff573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b928201929092526055546131bc94509092508491165f610849565b5f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613229573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061324d9190617a41565b6132579190617a85565b604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015274010000000000000000000000000000000000000000810462ffffff1660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602080850191909152630100000090910490910b8284015282515f80825291810190935292935067062ad3720a2f00009291613328918591859061627a565b6057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156133a7575f80fd5b505af11580156133b9573d5f803e3d5ffd5b50506057546040805173ffffffffffffffffffffffffffffffffffffffff90921660248084019190915281518084039091018152604490920181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f0ca968d800000000000000000000000000000000000000000000000000000000179052517ff28dceb3000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d935063f28dceb3925061348b9190600401617c65565b5f604051808303815f87803b1580156134a2575f80fd5b505af11580156134b4573d5f803e3d5ffd5b50506044546045546040517fdd46508f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909216935063dd46508f925061351291859190600401617c77565b5f604051808303815f87803b158015613529575f80fd5b505af115801561353b573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156135a6575f80fd5b505af11580156135b8573d5f803e3d5ffd5b5050505050505050565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613648575f80fd5b505af115801561365a573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b9282019290925260555461371794509092508491165f610849565b5f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613784573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906137a89190617a41565b6137b29190617a85565b603054604080515f815260208101918290527f234266d70000000000000000000000000000000000000000000000000000000090915291925067062ad3720a2f00009167031569b9051780009173ffffffffffffffffffffffffffffffffffffffff169063234266d790613830906036908690869060248101617ba4565b6020604051808303815f875af115801561384c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906138709190617a41565b5060565460575461389b9190859073ffffffffffffffffffffffffffffffffffffffff166001615258565b60575460295473ffffffffffffffffffffffffffffffffffffffff918216915f916138c79116836162a3565b605754602a549192505f916138f59173ffffffffffffffffffffffffffffffffffffffff91821691166162a3565b6057546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613974575f80fd5b505af1158015613986573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602080850191909152630100000090910490910b8284015282515f8152908101909252613a4b935089925090616374565b7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015613ab2575f80fd5b505af1158015613ac4573d5f803e3d5ffd5b5050602954613b009250613aef915073ffffffffffffffffffffffffffffffffffffffff16856162a3565b613af98785617b18565b60016163f4565b602a54613b3190613b279073ffffffffffffffffffffffffffffffffffffffff16856162a3565b613af98684617b18565b50505050505050565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613bc0575f80fd5b505af1158015613bd2573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b92820192909252605554613c8f94509092508491165f610849565b5f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613cfc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d209190617a41565b613d2a9190617a85565b604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015274010000000000000000000000000000000000000000810462ffffff1660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b5490921660e08401528252605c5480820b602080850191909152630100000090910490910b8284015282515f80825291810190935292935067062ad3720a2f000092916133289185918590616476565b6060601a805480602002602001604051908101604052809291908181526020015f905b82821015611223578382905f5260205f20018054613e3b90617ac7565b80601f0160208091040260200160405190810160405280929190818152602001828054613e6790617ac7565b8015613eb25780601f10613e8957610100808354040283529160200191613eb2565b820191905f5260205f20905b815481529060010190602001808311613e9557829003601f168201915b505050505081526020019060010190613e1e565b6060601d805480602002602001604051908101604052809291908181526020015f905b82821015611223575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939491938583019392830182828015613fb157602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681526020019060040190602082600301049283019260010382029150808411613f5e5790505b50505050508152505081526020019060010190613ee9565b6060601c805480602002602001604051908101604052809291908181526020015f905b82821015611223575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156140b457602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116140615790505b50505050508152505081526020019060010190613fec565b60606019805480602002602001604051908101604052809291908181526020015f905b82821015611223578382905f5260205f2001805461410c90617ac7565b80601f016020809104026020016040519081016040528092919081815260200182805461413890617ac7565b80156141835780601f1061415a57610100808354040283529160200191614183565b820191905f5260205f20905b81548152906001019060200180831161416657829003601f168201915b5050505050815260200190600101906140ef565b6008545f9060ff16156141ae575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa15801561423c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906142609190617a41565b1415905090565b5f80604051806123e001604052806123c0815260200162022bd66123c091396040517fb4d6c782000000000000000000000000000000000000000000000000000000008152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063b4d6c782906142ea906e22d473030f116ddee9f6b43ac78ba3908590600401617cc4565b5f604051808303815f87803b158015614301575f80fd5b505af1158015614313573d5f803e3d5ffd5b505050506e22d473030f116ddee9f6b43ac78ba391505090565b612dd76401000276a36001617cf2565b5f614346614267565b905090565b5f6040516143589061754d565b604051809103905ff080158015614371573d5f803e3d5ffd5b506050546040805173ffffffffffffffffffffffffffffffffffffffff808516803b8381016020908101909552808452959650737109709ecfa91a80626ff3989d68f67f5b1dd12d9563b4d6c78295909216935f91908401903c6040518363ffffffff1660e01b81526004016143e8929190617cc4565b5f604051808303815f87803b1580156143ff575f80fd5b505af1158015614411573d5f803e3d5ffd5b5050605054604f80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff928316908117909155604480546046546040517f90107afe000000000000000000000000000000000000000000000000000000008152918516600483015290931660248401529093506390107afe9250015b5f604051808303815f87803b1580156144ba575f80fd5b505af11580156144cc573d5f803e3d5ffd5b5050505050565b606060158054806020026020016040519081016040528092919081815260200182805480156110d957602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff1681526001909101906020018083116110ae575050505050905090565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156145c4575f80fd5b505af11580156145d6573d5f803e3d5ffd5b5050604080516101008101825260595473ffffffffffffffffffffffffffffffffffffffff90811660608301908152605a54808316608085015262ffffff7401000000000000000000000000000000000000000082041660a0850152770100000000000000000000000000000000000000000000009004600290810b60c0850152605b54831660e0850152908352605c5480820b602085015263010000009004900b9282019290925260555461469394509092508491165f610849565b5f600160445f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166375794a3c6040518163ffffffff1660e01b8152600401602060405180830381865afa158015614700573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906147249190617a41565b61472e9190617a85565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156147ad575f80fd5b505af11580156147bf573d5f803e3d5ffd5b50506044546040517f05c1ee200000000000000000000000000000000000000000000000000000000081526004810187905273ffffffffffffffffffffffffffffffffffffffff90911692506305c1ee2091506024015f604051808303815f87803b15801561482c575f80fd5b505af115801561483e573d5f803e3d5ffd5b50506057545f925061486e915073ffffffffffffffffffffffffffffffffffffffff1683866115f5426001617b18565b6056546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa1580156148e9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061490d9190617b2b565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527fc31eb0e00000000000000000000000000000000000000000000000000000000082527f1fb09b800000000000000000000000000000000000000000000000000000000060048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b158015614a07575f80fd5b505af1158015614a19573d5f803e3d5ffd5b505060445460575473ffffffffffffffffffffffffffffffffffffffff9182169350630f5730f192501688614a4f426001617b18565b8c866040518663ffffffff1660e01b8152600401614a71959493929190617b64565b5f604051808303815f87803b158015614a88575f80fd5b505af1158015614a9a573d5f803e3d5ffd5b505050505050505050505050565b6055546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152670de0b6b3a764000090737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015614b2e575f