UNPKG

@uniswap/v4-periphery

Version:

🦄 Peripheral smart contracts for interacting with Uniswap v4

1 lines • 202 kB
{"abi":[{"type":"function","name":"IS_TEST","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"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":"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_approve","inputs":[{"name":"spender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_approve_unauthorizedRevert","inputs":[{"name":"caller","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_approvedOperator_reapproves","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721Permit_SignatureDeadlineExpired","inputs":[{"name":"spender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permit_caller","inputs":[{"name":"caller","type":"address","internalType":"address"},{"name":"spender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permit_nonceAlreadyUsed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permit_nonceAlreadyUsed_twoPositions","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permit_spender","inputs":[{"name":"spender","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_erc721permit_unauthorized","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_fuzz_permitHash","inputs":[{"name":"spender","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"nonce","type":"uint256","internalType":"uint256"},{"name":"deadline","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"test_permitTypeHash","inputs":[],"outputs":[],"stateMutability":"pure"},{"type":"event","name":"Approval","inputs":[{"name":"_owner","type":"address","indexed":true,"internalType":"address"},{"name":"_approved","type":"address","indexed":true,"internalType":"address"},{"name":"_tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"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":"0x6080604052600c8054600160ff199182168117909255601f80549091169091179055348015602b575f80fd5b506172a0806100395f395ff3fe608060405234801561000f575f80fd5b506004361061019a575f3560e01c806366d9a9a0116100e8578063b0464fdc11610093578063d2e6984e1161006e578063d2e6984e146102e4578063e20c9f71146102ec578063e5e62262146102f4578063fa7626d414610307575f80fd5b8063b0464fdc146102bc578063b5508aa9146102c4578063ba414fa6146102cc575f80fd5b8063916a17c6116100c3578063916a17c61461028c5780639d5ea803146102a1578063a296426a146102b4575f80fd5b806366d9a9a01461024f57806385226c8114610264578063882b41f314610279575f80fd5b80632e94f4951161014857806353a8dad71161012357806353a8dad7146102215780636167d22e1461023457806362744e1d14610247575f80fd5b80632e94f495146102095780633e5e3c23146102115780633f7286f414610219575f80fd5b80630a9254e4116101785780630a9254e4146101ce5780631ed7831c146101d65780632ade3880146101f4575f80fd5b806303ec83ea1461019e578063046d43b2146101b3578063079a6f6b146101bb575b5f80fd5b6101b16101ac366004614cf0565b610314565b005b6101b1610b82565b6101b16101c9366004614cf0565b611048565b6101b1611362565b6101de61154e565b6040516101eb9190614d12565b60405180910390f35b6101fc6115bb565b6040516101eb9190614db6565b6101b1611704565b6101de611866565b6101de6118d1565b6101b161022f366004614ec8565b61193c565b6101b1610242366004614cf0565b611e56565b6101b16126e0565b61025761270a565b6040516101eb9190614f5b565b61026c612883565b6040516101eb9190614ff7565b6101b1610287366004614ec8565b61294e565b610294613148565b6040516101eb919061506c565b6101b16102af36600461510e565b61324b565b6101b1613310565b61029461390a565b61026c613a0d565b6102d4613ad8565b60405190151581526020016101eb565b6101b1613ba8565b6101de6142dd565b6101b1610302366004614cf0565b614348565b601f546102d49060ff1681565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015610390575f80fd5b505af11580156103a2573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610413573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104379190615146565b90505f600190505f7f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff1663796b89b96040518163ffffffff1660e01b8152600401602060405180830381865afa1580156104aa573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104ce9190615146565b90505f6104dd858585856145ad565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015610558573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061057c919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018b90529092506106959161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc906024015b602060405180830381865afa15801561066b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061068f9190615196565b5f614715565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528b821660248201526107429261010090049091169063e985e9c5906044015b602060405180830381865afa158015610718573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061073c91906151b1565b5f6147a7565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260088a901c602482018190529260ff8b16926107ff926001851b9261010090049091169063502e1a16906044015b602060405180830381865afa1580156107d4573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906107f89190615146565b165f614801565b6108096001614859565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015610881575f80fd5b505af1158015610893573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f5a9165ff000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b158015610919575f80fd5b505af115801561092b573d5f803e3d5ffd5b5050601f546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169250630f5730f19150610991908e908e908d908f908a906004016151d0565b5f604051808303815f87803b1580156109a8575f80fd5b505af11580156109ba573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015610a25575f80fd5b505af1158015610a37573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018e9052610a9a935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401610650565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528d82166024820152610b069261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101859052610b75926001851b92610100909104169063502e1a16906044016107b9565b5050505050505050505050565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015610bfe575f80fd5b505af1158015610c10573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015610c81573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ca59190615146565b602154602254919250600191610cd49190849073ffffffffffffffffffffffffffffffffffffffff16846148c4565b6022545f90610cfb9073ffffffffffffffffffffffffffffffffffffffff168484426145ad565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015610d76573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d9a919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526020547f06447d5600000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015610e8c575f80fd5b505af1158015610e9e573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1fb09b80000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b158015610f24575f80fd5b505af1158015610f36573d5f803e3d5ffd5b5050601f546022546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff9081169450630f5730f19350610fa2929116908b9042908c9088906004016151d0565b5f604051808303815f87803b158015610fb9575f80fd5b505af1158015610fcb573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611036575f80fd5b505af1158015610b75573d5f803e3d5ffd5b5f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156110b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d99190615146565b601f546040517f081812fc0000000000000000000000000000000000000000000000000000000081526004810183905291925061113b9161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401610650565b601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906381bad6f39060a4015f604051808303815f87803b1580156111d7575f80fd5b505af11580156111e9573d5f803e3d5ffd5b505060405183925073ffffffffffffffffffffffffffffffffffffffff8516915030907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925905f90a4601f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490526101009092049091169063095ea7b3906044015f604051808303815f87803b1580156112a8575f80fd5b505af11580156112ba573d5f803e3d5ffd5b5050601f546040517f081812fc0000000000000000000000000000000000000000000000000000000081526004810185905261135e935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc906024015b602060405180830381865afa158015611334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113589190615196565b83614715565b5050565b6113a06040518060400160405280600581526020017f414c494345000000000000000000000000000000000000000000000000000000815250614b0c565b602155602080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9290921691909117815560408051808201909152600381527f424f4200000000000000000000000000000000000000000000000000000000009181019190915261142790614b0c565b602355602280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055604080518082018252601481527f4d6f636b204552433732315065726d69745f763400000000000000000000000060208083019190915282518084018452600781527f4d4f434b373231000000000000000000000000000000000000000000000000009181019190915291519091906114e790614cbf565b6114f292919061521b565b604051809103905ff08015801561150b573d5f803e3d5ffd5b50601f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b606060168054806020026020016040519081016040528092919081815260200182805480156115b157602002820191905f5260205f20905b815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611586575b5050505050905090565b6060601e805480602002602001604051908101604052809291908181526020015f905b828210156116fb575f848152602080822060408051808201825260028702909201805473ffffffffffffffffffffffffffffffffffffffff168352600181018054835181870281018701909452808452939591948681019491929084015b828210156116e4578382905f5260205f2001805461165990615248565b80601f016020809104026020016040519081016040528092919081815260200182805461168590615248565b80156116d05780601f106116a7576101008083540402835291602001916116d0565b820191905f5260205f20905b8154815290600101906020018083116116b357829003601f168201915b50505050508152602001906001019061163c565b5050505081525050815260200190600101906115de565b50505050905090565b611864601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633644e5156040518163ffffffff1660e01b8152600401602060405180830381865afa158015611772573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117969190615146565b604080518082018252601481527f4d6f636b204552433732315065726d69745f7634000000000000000000000000602091820152601f5482517f8cad95687ba82c2ce50e74f7b754645e5117c3a5bec8151c0726d5857980a866928101929092527f4b8c600c4e53999e10552bd49101e75d7d27e48443867f6ce07f76888f61f6d99282019290925246606082015261010090910473ffffffffffffffffffffffffffffffffffffffff16608082015260a00160405160208183030381529060405280519060200120614c67565b565b606060188054806020026020016040519081016040528092919081815260200182805480156115b157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611586575050505050905090565b606060178054806020026020016040519081016040528092919081815260200182805480156115b157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611586575050505050905090565b5f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156119a9573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906119cd9190615146565b601f546040517fa22cb46500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8681166004830152600160248301529293506101009091049091169063a22cb465906044015f604051808303815f87803b158015611a47575f80fd5b505af1158015611a59573d5f803e3d5ffd5b5050601f546040517fe985e9c500000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8781166024830152611b069450610100909204909116915063e985e9c590604401602060405180830381865afa158015611adb573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611aff91906151b1565b60016147a7565b601f546040517f081812fc00000000000000000000000000000000000000000000000000000000815260048101839052611b6491610100900473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401610650565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015611bdc575f80fd5b505af1158015611bee573d5f803e3d5ffd5b5050601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a4015f604051808303815f87803b158015611c8e575f80fd5b505af1158015611ca0573d5f803e3d5ffd5b505060405183925073ffffffffffffffffffffffffffffffffffffffff8516915030907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925905f90a4601f546040517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8481166004830152602482018490526101009092049091169063095ea7b3906044015f604051808303815f87803b158015611d5f575f80fd5b505af1158015611d71573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015611ddc575f80fd5b505af1158015611dee573d5f803e3d5ffd5b5050601f546040517f081812fc00000000000000000000000000000000000000000000000000000000815260048101859052611e51935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401611319565b505050565b6020546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e562906024015f6040518083038186803b158015611ed8575f80fd5b505afa158015611eea573d5f803e3d5ffd5b50506020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015611f6a575f80fd5b505af1158015611f7c573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015611fed573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120119190615146565b905060015f612022848484426145ad565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801561209d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120c1919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018a90529092506121999161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401610650565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528a821660248201526122059261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600889901c602482018190529260ff8a1692612280926001851b9261010090049091169063502e1a16906044016107b9565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8b166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b1580156122f8575f80fd5b505af115801561230a573d5f803e3d5ffd5b5050601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a4015f604051808303815f87803b1580156123aa575f80fd5b505af11580156123bc573d5f803e3d5ffd5b50506020546040518c935073ffffffffffffffffffffffffffffffffffffffff8e81169350909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925905f90a4601f546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690630f5730f19061246c908d908d9042908e908a906004016151d0565b5f604051808303815f87803b158015612483575f80fd5b505af1158015612495573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612500575f80fd5b505af1158015612512573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018d90526125b6935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc906024015b602060405180830381865afa15801561258c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906125b09190615196565b8b614715565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528c821660248201526126229261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018590526126d4926001851b92610100909104169063502e1a16906044015b602060405180830381865afa1580156126a8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906126cc9190615146565b166002614801565b50505050505050505050565b6118647f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad80614c67565b6060601b805480602002602001604051908101604052809291908181526020015f905b828210156116fb578382905f5260205f2090600202016040518060400160405290815f8201805461275d90615248565b80601f016020809104026020016040519081016040528092919081815260200182805461278990615248565b80156127d45780601f106127ab576101008083540402835291602001916127d4565b820191905f5260205f20905b8154815290600101906020018083116127b757829003601f168201915b505050505081526020016001820180548060200260200160405190810160405280929190818152602001828054801561286b57602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116128185790505b5050505050815250508152602001906001019061272d565b6060601a805480602002602001604051908101604052809291908181526020015f905b828210156116fb578382905f5260205f200180546128c390615248565b80601f01602080910402602001604051908101604052809291908181526020018280546128ef90615248565b801561293a5780601f106129115761010080835404028352916020019161293a565b820191905f5260205f20905b81548152906001019060200180831161291d57829003601f168201915b5050505050815260200190600101906128a6565b6020546040517f4c63e56200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff838116921691909114156004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d90634c63e562906024015f6040518083038186803b1580156129d0575f80fd5b505afa1580156129e2573d5f803e3d5ffd5b50506020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063ca669fa791506024015f604051808303815f87803b158015612a62575f80fd5b505af1158015612a74573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015612ae5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612b099190615146565b905060015f612b1a848484426145ad565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015612b95573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612bb9919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018a9052909250612c919161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401610650565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528a82166024820152612cfd9261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600889901c602482018190529260ff8a1692612d78926001851b9261010090049091169063502e1a16906044016107b9565b6040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015612df0575f80fd5b505af1158015612e02573d5f803e3d5ffd5b5050601f546040517f81bad6f30000000000000000000000000000000000000000000000000000000081526001600482018190526024820181905260448201819052606482015261010090910473ffffffffffffffffffffffffffffffffffffffff166084820152737109709ecfa91a80626ff3989d68f67f5b1dd12d92506381bad6f3915060a4015f604051808303815f87803b158015612ea2575f80fd5b505af1158015612eb4573d5f803e3d5ffd5b50506020546040518c935073ffffffffffffffffffffffffffffffffffffffff8e81169350909116907f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925905f90a4601f546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff1690630f5730f190612f64908d908d9042908e908a906004016151d0565b5f604051808303815f87803b158015612f7b575f80fd5b505af1158015612f8d573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b158015612ff8575f80fd5b505af115801561300a573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018d905261306d935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401612571565b601f546020546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff91821660048201528c821660248201526130d99261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff918216600482015260248101859052610b75926001851b92610100909104169063502e1a169060440161268d565b6060601d805480602002602001604051908101604052809291908181526020015f905b828210156116fb575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff16835260018101805483518187028101870190945280845293949193858301939283018282801561323357602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116131e05790505b5050505050815250508152602001906001019061316b565b604080517f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad602080830182905273ffffffffffffffffffffffffffffffffffffffff8816838501819052606084018890526080840187905260a080850187905285518086038201815260c0860196879052805193019290922092855260e08401908152610100840188815261012085018881526101409095018781529286205f96879052918690528590529284905292909252613309908290614c67565b5050505050565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b15801561338c575f80fd5b505af115801561339e573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af115801561340f573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906134339190615146565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b1580156134b2575f80fd5b505af11580156134c4573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015613535573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906135599190615146565b6021546022549192506001916135889190859073ffffffffffffffffffffffffffffffffffffffff16846148c4565b6022545f906135af9073ffffffffffffffffffffffffffffffffffffffff168484426145ad565b6021546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa15801561362a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061364e919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290526020547f06447d5600000000000000000000000000000000000000000000000000000000835273ffffffffffffffffffffffffffffffffffffffff1660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613740575f80fd5b505af1158015613752573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f1fb09b80000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b1580156137d8575f80fd5b505af11580156137ea573d5f803e3d5ffd5b5050601f546022546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff9081169450630f5730f19350613856929116908b9042908c9088906004016151d0565b5f604051808303815f87803b15801561386d575f80fd5b505af115801561387f573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b1580156138ea575f80fd5b505af11580156138fc573d5f803e3d5ffd5b505050505050505050505050565b6060601c805480602002602001604051908101604052809291908181526020015f905b828210156116fb575f84815260209081902060408051808201825260028602909201805473ffffffffffffffffffffffffffffffffffffffff1683526001810180548351818702810187019094528084529394919385830193928301828280156139f557602002820191905f5260205f20905f905b82829054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916815260200190600401906020826003010492830192600103820291508084116139a25790505b5050505050815250508152602001906001019061392d565b60606019805480602002602001604051908101604052809291908181526020015f905b828210156116fb578382905f5260205f20018054613a4d90615248565b80601f0160208091040260200160405190810160405280929190818152602001828054613a7990615248565b8015613ac45780601f10613a9b57610100808354040283529160200191613ac4565b820191905f5260205f20905b815481529060010190602001808311613aa757829003601f168201915b505050505081526020019060010190613a30565b6008545f9060ff1615613aef575060085460ff1690565b6040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d600482018190527f6661696c6564000000000000000000000000000000000000000000000000000060248301525f9163667f9d7090604401602060405180830381865afa158015613b7d573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ba19190615146565b1415905090565b6020546040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015613c24575f80fd5b505af1158015613c36573d5f803e3d5ffd5b505050505f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af1158015613ca7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613ccb9190615146565b6022549091506001905f90613cf89073ffffffffffffffffffffffffffffffffffffffff168484426145ad565b6023546040517fe341eaa40000000000000000000000000000000000000000000000000000000081526004810191909152602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015613d73573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190613d97919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe001815290829052601f547f081812fc000000000000000000000000000000000000000000000000000000008352600483018a9052909250613e6f9161010090910473ffffffffffffffffffffffffffffffffffffffff169063081812fc90602401610650565b601f546020546022546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff92831660048201529082166024820152613ede9261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152600889901c602482018190529260ff8a1692613f59926001851b9261010090049091169063502e1a16906044016107b9565b6022546040517f06447d5600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d906306447d56906024015f604051808303815f87803b158015613fd5575f80fd5b505af1158015613fe7573d5f803e3d5ffd5b50506040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f815e1d64000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d925063c31eb0e091506024015f604051808303815f87803b15801561406d575f80fd5b505af115801561407f573d5f803e3d5ffd5b5050601f546022546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090920473ffffffffffffffffffffffffffffffffffffffff9081169450630f5730f193506140eb929116908d9042908e908a906004016151d0565b5f604051808303815f87803b158015614102575f80fd5b505af1158015614114573d5f803e3d5ffd5b505050507f885cb69240a935d632d79c317109709ecfa91a80626ff3989d68f67f5b1dd12d5f1c73ffffffffffffffffffffffffffffffffffffffff166390c5013b6040518163ffffffff1660e01b81526004015f604051808303815f87803b15801561417f575f80fd5b505af1158015614191573d5f803e3d5ffd5b5050601f546040517f081812fc000000000000000000000000000000000000000000000000000000008152600481018d90526141f4935061010090910473ffffffffffffffffffffffffffffffffffffffff16915063081812fc90602401610650565b601f546020546022546040517fe985e9c500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015290821660248201526142639261010090049091169063e985e9c5906044016106fd565b601f546020546040517f502e1a1600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9182166004820152602481018590526142d2926001851b92610100909104169063502e1a16906044016107b9565b505050505050505050565b606060158054806020026020016040519081016040528092919081815260200182805480156115b157602002820191905f5260205f2090815473ffffffffffffffffffffffffffffffffffffffff168152600190910190602001808311611586575050505050905090565b5f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16631249c58b6040518163ffffffff1660e01b81526004016020604051808303815f875af11580156143b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906143d99190615146565b6040517fca669fa700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152909150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015614454575f80fd5b505af1158015614466573d5f803e3d5ffd5b5050505073ffffffffffffffffffffffffffffffffffffffff82163014614520576040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f82b42900000000000000000000000000000000000000000000000000000000006004820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c31eb0e0906024015f604051808303815f87803b158015614509575f80fd5b505af115801561451b573d5f803e3d5ffd5b505050505b601f546040517f095ea7b30000000000000000000000000000000000000000000000000000000081523060048201526024810183905261010090910473ffffffffffffffffffffffffffffffffffffffff169063095ea7b3906044015f604051808303815f87803b158015614593575f80fd5b505af11580156145a5573d5f803e3d5ffd5b505050505050565b5f601f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633644e5156040518163ffffffff1660e01b8152600401602060405180830381865afa158015614619573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061463d9190615146565b604080517f49ecf333e5b8c95c40fdafc95c1ad136e8914a8fb55e9dc8bb01eaa83a2df9ad602082015273ffffffffffffffffffffffffffffffffffffffff881691810191909152606081018690526080810185905260a0810184905260c001604051602081830303815290604052805190602001206040516020016146f59291907f190100000000000000000000000000000000000000000000000000000000000081526002810192909252602282015260420190565b604051602081830303815290604052805190602001209050949350505050565b6040517f515361f600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff808416600483015282166024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063515361f6906044015b5f6040518083038186803b158015614795575f80fd5b505afa1580156145a5573d5f803e3d5ffd5b6040517ff7fe347700000000000000000000000000000000000000000000000000000000815282151560048201528115156024820152737109709ecfa91a80626ff3989d68f67f5b1dd12d9063f7fe34779060440161477f565b6040517f98296c540000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d906398296c549060440161477f565b737109709ecfa91a80626ff3989d68f67f5b1dd12d63e5d6bf0261487d8342615299565b6040518263ffffffff1660e01b815260040161489b91815260200190565b5f604051808303815f87803b1580156148b2575f80fd5b505af1158015613309573d5f803e3d5ffd5b5f6148d1838584426145ad565b6040517fe341eaa400000000000000000000000000000000000000000000000000000000815260048101879052602481018290529091505f9081908190737109709ecfa91a80626ff3989d68f67f5b1dd12d9063e341eaa490604401606060405180830381865afa158015614948573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061496c919061515d565b60408051602081018490529081018290527fff0000000000000000000000000000000000000000000000000000000000000060f885901b16606082015292955090935091505f90606101604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0018152908290527fca669fa700000000000000000000000000000000000000000000000000000000825273ffffffffffffffffffffffffffffffffffffffff891660048301529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ca669fa7906024015f604051808303815f87803b158015614a5c575f80fd5b505af1158015614a6e573d5f803e3d5ffd5b5050601f546040517f0f5730f100000000000000000000000000000000000000000000000000000000815261010090910473ffffffffffffffffffffffffffffffffffffffff169250630f5730f19150614ad4908a908c9042908c9088906004016151d0565b5f604051808303815f87803b158015614aeb575f80fd5b505af1158015614afd573d5f803e3d5ffd5b50505050505050505050505050565b5f8082604051602001614b1f91906152d7565b604080518083037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe00181529082905280516020909101207fffa18649000000000000000000000000000000000000000000000000000000008252600482018190529150737109709ecfa91a80626ff3989d68f67f5b1dd12d9063ffa1864990602401602060405180830381865afa158015614bbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190614be09190615196565b6040517fc657c718000000000000000000000000000000000000000000000000000000008152909250737109709ecfa91a80626ff3989d68f67f5b1dd12d9063c657c71890614c3590859087906004016152ed565b5f604051808303815f87803b158015614c4c575f80fd5b505af1158015614c5e573d5f803e3d5ffd5b50505050915091565b6040517f7c84c69b0000000000000000000000000000000000000000000000000000000081526004810183905260248101829052737109709ecfa91a80626ff3989d68f67f5b1dd12d90637c84c69b9060440161477f565b611f708061532483390190565b73ffffffffffffffffffffffffffffffffffffffff81168114614ced575f80fd5b50565b5f60208284031215614d00575f80fd5b8135614d0b81614ccc565b9392505050565b602080825282518282018190525f918401906040840190835b81811015614d5f57835173ffffffffffffffffffffffffffffffffffffffff16835260209384019390920191600101614d2b565b509095945050505050565b5f81518084528060208401602086015e5f6020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b5f602082016020835280845180835260408501915060408160051b8601019250602086015f5b82811015614ebc577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc08786030184528151805173ffffffffffffffffffffffffffffffffffffffff168652602090810151604082880181905281519088018190529101906060600582901b8801810191908801905f5b81811015614ea2577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa08a8503018352614e8c848651614d6a565b6020958601959094509290920191600101614e52565b509197505050602094850194929092019150600101614ddc565b50929695505050505050565b5f8060408385031215614ed9575f80fd5b8235614ee481614ccc565b91506020830135614ef481614ccc565b809150509250929050565b5f8151808452602084019350602083015f5b82811015614f515781517fffffffff0000000000000000000000000000000000000000000000000000000016865260209586019590910190600101614f11565b5093949350505050565b5f602082016020835280845180835260408501915060408160051b860101925060208