@uniswap/v4-core
Version:
🦄 Core smart contracts of Uniswap v4
1 lines • 558 kB
JSON
{"abi":[{"type":"receive","stateMutability":"payable"},{"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":"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_delegateCallFromExternalToPrivateMethodWithModifier_revertsWithDelegateCallNotAllowed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_delegateCallNoModifier","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_delegateCallWithModifier_revertsWithDelegateCallNotAllowed","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_donate_noDelegateCall","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_externalCallToPrivateMethodWithModifier_succeeds","inputs":[],"outputs":[],"stateMutability":"view"},{"type":"function","name":"test_gas_noDelegateCall","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_modifyLiquidity_noDelegateCall","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"test_swap_noDelegateCall","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":"0x60806040523461016457600160ff19600c541617600c55600160ff19601f541617601f555f606061002e610168565b607719815260786020820152670de0b6b3a7640000604082015201526378ffff8865ffffffffffff196020541617602055670de0b6b3a76400006021555f6022555f606061007a610168565b607719815260786020820152670de0b6b3a763ffff19604082015201526378ffff8865ffffffffffff196023541617602355670de0b6b3a763ffff196024555f6025556040516060810181811060018060401b038211176101505760409081526001808352606319602084018190526bb504f333f9de6484597d89b39383018490526026805460ff1916909217909155602755602880546001600160a01b03199081169093179055604280548316600e17905560438054909216614000600160a01b0317909155516201bf579081620001888239f35b634e487b7160e01b5f52604160045260245ffd5b5f80fd5b60405190608082016001600160401b038111838210176101505760405256fe608080604052600436101561001c575b50361561001a575f80fd5b005b5f905f3560e01c90816304d2913f14612314575080630a9254e4146119905780631ed7831c146118e7578063226c0f221461169a5780632ade38801461146e57806339cd20131461140d5780633e5e3c23146113645780633f7286f4146112bb578063542524dd1461126e57806366d9a9a0146111135780637e86e3fc14610d4a57806385226c8114610ca25780638cf68fa614610b75578063916a17c614610aa057806393ad73ed14610a3b578063b0464fdc14610966578063b1a73b8a146108fe578063b5508aa914610856578063ba414fa614610813578063bb0763f614610604578063c7b8e15d146105c6578063e20c9f711461050d578063ea081416146102cd578063f52da4b214610231578063f6d79c11146101855763fa7626d40361000f573461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257602060ff601f54166040519015158152f35b80fd5b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610182578073ffffffffffffffffffffffffffffffffffffffff60445416803b1561022e5781600491604051928380927f642701640000000000000000000000000000000000000000000000000000000082525afa8015610223576102125750f35b8161021c91612698565b6101825780f35b6040513d84823e3d90fd5b50fd5b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610182576102ca818073ffffffffffffffffffffffffffffffffffffffff6044541660405160208101907ff45f416e000000000000000000000000000000000000000000000000000000008252602081526102b8604082612698565b51915af46102c46126d9565b50612bdd565b80f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561018257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0d89438e000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610223576104f8575b506104ae9073ffffffffffffffffffffffffffffffffffffffff6030541660209283916040516103bc8482612698565b8481527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840136858301376040519485809481937f234266d700000000000000000000000000000000000000000000000000000000835261048d6004840173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b606460a484015260c860c484015261010060e4840152610104830190612496565b03925af180156104ed576104c0578280f35b816104df92903d106104e6575b6104d78183612698565b810190612736565b505f808280f35b503d6104cd565b6040513d85823e3d90fd5b8161050291612698565b61018257805f61038c565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760405180916020601554928381520191601582527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec475915b81811061059a576105968561058a81870382612698565b60405191829182612447565b0390f35b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201610573565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760206040516401000276a48152f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825773ffffffffffffffffffffffffffffffffffffffff60445416604051907f3c7c8dd0000000000000000000000000000000000000000000000000000000008252602082600481845afa9182156104ed5783926107de575b506020600491604051928380927f3045a6e00000000000000000000000000000000000000000000000000000000082525afa9081156104ed5783916107a8575b50810390811161077b578190737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561022e57604051907f51db805a00000000000000000000000000000000000000000000000000000000825260406004830152600e60448301527f4e6f44656c656761746543616c6c00000000000000000000000000000000000060648301526024820152818160848183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610223576102125750f35b6024827f4e487b710000000000000000000000000000000000000000000000000000000081526011600452fd5b90506020813d6020116107d6575b816107c360209383612698565b810103126107d257515f6106ca565b5f80fd5b3d91506107b6565b9091506020813d60201161080b575b816107fa60209383612698565b810103126107d2575190602061068a565b3d91506107ed565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257602061084c612b04565b6040519015158152f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760195461089181612745565b9161089f6040519384612698565b818352601981527f944998273e477b495144fb8794c914197f3ccb46be2900f4698fd0ef743c9695602084015b8383106108e15760405180610596878261252e565b6001602081926108f08561275d565b8152019201920191906108cc565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257606060ff6026541660275473ffffffffffffffffffffffffffffffffffffffff6028541690604051921515835260208301526040820152f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257601c546109a181612745565b916109af6040519384612698565b818352601c81527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a211602084015b8383106109f1576040518061059687826125ab565b60026020600192604051610a048161264f565b73ffffffffffffffffffffffffffffffffffffffff8654168152610a29858701612860565b838201528152019201920191906109dc565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610182576020805460215460225460408051600285810b825260189590951c90940b94840194909452928201526060810191909152608090f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257601d54610adb81612745565b91610ae96040519384612698565b818352601d81527f6d4407e7be21f808e6509aa9fa9143369579dd7d760fe20a2c09680fc146134f602084015b838310610b2b576040518061059687826125ab565b60026020600192604051610b3e8161264f565b73ffffffffffffffffffffffffffffffffffffffff8654168152610b63858701612860565b83820152815201920192019190610b16565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561018257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0d89438e000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561022357610c8d575b50806102ca9173ffffffffffffffffffffffffffffffffffffffff6044541660405160208101907f423ecb05000000000000000000000000000000000000000000000000000000008252602081526102b8604082612698565b81610c9791612698565b61018257805f610c34565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257601a54610cdd81612745565b91610ceb6040519384612698565b818352601a81527f057c384a7d1c54f3a1b2e5e67b2617b8224fdfd1ea7234eea573a6ff665ff63e602084015b838310610d2d5760405180610596878261252e565b600160208192610d3c8561275d565b815201920192019190610d18565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b1561018257806040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0d89438e000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610223576110fe575b505073ffffffffffffffffffffffffffffffffffffffff602c5416816020918183610f1f60405193610e3b8386612698565b8385527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08301948536858301376040517f5a6bcfda000000000000000000000000000000000000000000000000000000008152603c5473ffffffffffffffffffffffffffffffffffffffff9081166004830152603d54808216602484015260a081901c62ffffff16604484015260b81c60020b6064830152603e54166084820152948593849283919087548060020b60a485015260181c60020b60c484015260215460e4840152602254610104840152610140610124840152610144830190612496565b03925af180156104ed576110d0575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156110cc57604051907fc31eb0e00000000000000000000000000000000000000000000000000000000082527f0d89438e000000000000000000000000000000000000000000000000000000006004830152828260248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156104ed57849284916110b1575b50506104ae9073ffffffffffffffffffffffffffffffffffffffff602c54169060405190610ff18583612698565b85825236858301376040517f5a6bcfda000000000000000000000000000000000000000000000000000000008152603c5473ffffffffffffffffffffffffffffffffffffffff9081166004830152603d54808216602484015260a081901c62ffffff16604484015260b81c60020b6064830152603e5416608482015294859384928391906023548060020b60a485015260181c60020b60c484015260245460e4840152602554610104840152610140610124840152610144830190612496565b81929350906110bf91612698565b6110cc578290825f610fc3565b5080fd5b91508282813d83116110f7575b6110e78183612698565b810103126107d257839151610f2e565b503d6110dd565b8161110891612698565b61018257805f610e09565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257601b5461114e81612745565b61115b6040519182612698565b818152601b83526020810191837f3ad8aa4f87544323a9d1e5dd902f40c356527a7955687113db5f9a85ad579dc1845b83831061123357868587604051928392602084019060208552518091526040840160408260051b8601019392905b8282106111c857505050500390f35b91936020611223827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc06001959799849503018652885190836112138351604084526040840190612496565b92015190848184039101526124d9565b96019201920185949391926111b9565b600260206001926040516112468161264f565b61124f8661275d565b815261125c858701612860565b8382015281520192019201919061118b565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257602060405173fffd8963efd1fc6a506488495d951d5263988d258152f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760405180916020601754928381520191601782527fc624b66cc0138b8fabc209247f72d758e1cf3343756d543badbf24212bed8c15915b818110611338576105968561058a81870382612698565b825473ffffffffffffffffffffffffffffffffffffffff16845260209093019260019283019201611321565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760405180916020601854928381520191601882527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e915b8181106113e1576105968561058a81870382612698565b825473ffffffffffffffffffffffffffffffffffffffff168452602090930192600192830192016113ca565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760235460245460255460408051600285810b825260189590951c90940b60208501528301919091526060820152608090f35b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257601e546114a981612745565b6114b66040519182612698565b818152601e83526020810191837f50bb669a95c7b50b7e8a6f09454034b2b14cf2b85c730dca9a539ca82cb6e350845b8383106116045786858760405192839260208401906020855251809152604084019160408260051b8601019392815b8383106115225786860387f35b9193957fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc09086929496030183528551906020604082019273ffffffffffffffffffffffffffffffffffffffff81511683520151916040602083015282518091526060820190602060608260051b850101940192855b8281106115bb57505050505060208060019297019301930190928695949293611515565b90919293946020806115f7837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa087600196030189528951612496565b9701950193929101611597565b6040516116108161264f565b73ffffffffffffffffffffffffffffffffffffffff835416815260018301805461163981612745565b916116476040519384612698565b8183528a526020808b20908b9084015b83821061167d5750505050600192826020928360029501528152019201920191906114e6565b60016020819261168c8661275d565b815201930191019091611657565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610182576040516116d58161264f565b81815260208101828152737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156118e357826040517fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0d89438e000000000000000000000000000000000000000000000000000000006004820152818160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af18015610223576118ce575b50506104ae9073ffffffffffffffffffffffffffffffffffffffff602f541692602093849286604051936117a38686612698565b8185527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe086013687870137604051968795869485937f2229d0b40000000000000000000000000000000000000000000000000000000085526118756004860173ffffffffffffffffffffffffffffffffffffffff60365416815260375473ffffffffffffffffffffffffffffffffffffffff8116602083015262ffffff8160a01c16604083015260b81c60020b6060820152608073ffffffffffffffffffffffffffffffffffffffff60385416910152565b60ff60265416151560a486015260275460c486015273ffffffffffffffffffffffffffffffffffffffff6028541660e4860152511515610104850152511515610124840152610160610144840152610164830190612496565b816118d891612698565b6118e357825f61176f565b8280fd5b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126101825760405180916020601654928381520191601682527fd833147d7dc355ba459fc788f669e58cfaf9dc25ddcd0702e87d69c7b5124289915b818110611964576105968561058a81870382612698565b825473ffffffffffffffffffffffffffffffffffffffff1684526020909301926001928301920161194d565b503461018257807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261018257604051615e828082019082821067ffffffffffffffff8311176122e757602091839162002c5a833930815203019082f080156122da576040519061394f908183019183831067ffffffffffffffff8411176121f0579173ffffffffffffffffffffffffffffffffffffffff84926020946201788d853916815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff16807fffffffffffffffffffffffff0000000000000000000000000000000000000000602b541617602b5560405190611bb9908183019183831067ffffffffffffffff8411176121f05791839160209362014db28439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602f541617602f5573ffffffffffffffffffffffffffffffffffffffff602b541660405190610d6f908183019183831067ffffffffffffffff8411176121f0579183916020936201b1dc8439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602e541617602e5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611835908183019183831067ffffffffffffffff8411176121f0579183916020936200d4948439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602c541617602c5573ffffffffffffffffffffffffffffffffffffffff602b541660405190611315908183019183831067ffffffffffffffff8411176121f0579183916020936200ecc98439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000602d541617602d5573ffffffffffffffffffffffffffffffffffffffff602b5416604051906112d2908183019183831067ffffffffffffffff8411176121f0579183916020936200c1c28439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603054161760305573ffffffffffffffffffffffffffffffffffffffff602b541660405190610f22908183019183831067ffffffffffffffff8411176121f0579183916020936201696b8439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603154161760315573ffffffffffffffffffffffffffffffffffffffff602b541660405190610c38908183019183831067ffffffffffffffff8411176121f0579183916020936200b58a8439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603354161760335573ffffffffffffffffffffffffffffffffffffffff602b541660405190614dd4908183019183831067ffffffffffffffff8411176121f0579183916020936200ffde8439815203019082f080156122da5773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff0000000000000000000000000000000000000000603454161760345560408051611ef88282612698565b600d815282602082017f666565436f6e74726f6c6c65720000000000000000000000000000000000000081528351600d6020820192835e82602d820152600d8152611f44602d82612698565b5190208351907fffa186490000000000000000000000000000000000000000000000000000000082526004820152602081602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561228157829161228b575b50737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156110cc578173ffffffffffffffffffffffffffffffffffffffff61201592865193849283927fc657c71800000000000000000000000000000000000000000000000000000000845216968760048401528860248401526044830190612496565b038183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af180156122815761226c575b50507fffffffffffffffffffffffff0000000000000000000000000000000000000000603554161760355573ffffffffffffffffffffffffffffffffffffffff602b541681519061284b908183019183831067ffffffffffffffff84111761223f5791839160209362008adc8439815203019083f080156121e55773ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffff000000000000000000000000000000000000000060325416176032558173ffffffffffffffffffffffffffffffffffffffff602b541673ffffffffffffffffffffffffffffffffffffffff60355416813b156118e357829160248392865194859384927f2d77138900000000000000000000000000000000000000000000000000000000845260048401525af180156122325761221d575b505080516102638082019082821067ffffffffffffffff8311176121f0579082916200b3278339039083f080156121e55773ffffffffffffffffffffffffffffffffffffffff9150167fffffffffffffffffffffffff0000000000000000000000000000000000000000604454161760445580f35b5051903d90823e3d90fd5b6024857f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161222791612698565b6110cc57815f612170565b50505051903d90823e3d90fd5b6024867f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b8161227691612698565b6118e357825f61203a565b84513d84823e3d90fd5b90506020813d6020116122d2575b816122a660209383612698565b810103126110cc575173ffffffffffffffffffffffffffffffffffffffff811681036110cc575f611f9d565b3d9150612299565b50604051903d90823e3d90fd5b6024847f4e487b710000000000000000000000000000000000000000000000000000000081526041600452fd5b9050346107d2575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126107d257737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107d2577fc31eb0e00000000000000000000000000000000000000000000000000000000081527f0d89438e0000000000000000000000000000000000000000000000000000000060048201525f8160248183737109709ecfa91a80626ff3989d68f67f5b1dd12d5af1801561243c57612429575b506102ca818073ffffffffffffffffffffffffffffffffffffffff6044541660405160208101907f64270164000000000000000000000000000000000000000000000000000000008252602081526102b8604082612698565b61243591505f90612698565b5f806123d0565b6040513d5f823e3d90fd5b60206040818301928281528451809452019201905f5b81811061246a5750505090565b825173ffffffffffffffffffffffffffffffffffffffff1684526020938401939092019160010161245d565b907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f602080948051918291828752018686015e5f8582860101520116010190565b90602080835192838152019201905f5b8181106124f65750505090565b82517fffffffff00000000000000000000000000000000000000000000000000000000168452602093840193909201916001016124e9565b602081016020825282518091526040820191602060408360051b8301019401925f915b83831061256057505050505090565b909192939460208061259c837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187528951612496565b97019301930191939290612551565b602081016020825282518091526040820191602060408360051b8301019401925f915b8383106125dd57505050505090565b9091929394602080612640837fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc086600196030187526040838b5173ffffffffffffffffffffffffffffffffffffffff8151168452015191818582015201906124d9565b970193019301919392906125ce565b6040810190811067ffffffffffffffff82111761266b57604052565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff82111761266b57604052565b3d15612731573d9067ffffffffffffffff821161266b5760405191612726601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01660200184612698565b82523d5f602084013e565b606090565b908160209103126107d2575190565b67ffffffffffffffff811161266b5760051b60200190565b90604051915f8154908160011c9260018316928315612856575b6020851084146128295784875286939081156127e957506001146127a5575b506127a392500383612698565b565b90505f9291925260205f20905f915b8183106127cd5750509060206127a3928201015f612796565b60209193508060019154838589010152019101909184926127b4565b602093506127a39592507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0091501682840152151560051b8201015f612796565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b93607f1693612777565b90604051918281549182825260208201905f5260205f20925f905b806007830110612a77576127a3945491818110612a41575b818110612a0b575b8181106129d5575b81811061299f575b818110612969575b818110612933575b8181106128fe575b106128d1575b500383612698565b7fffffffff000000000000000000000000000000000000000000000000000000001681526020015f6128c9565b9260206001917fffffffff0000000000000000000000000000000000000000000000000000000085831b1681520193016128c3565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560401b1681520193016128bb565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560601b1681520193016128b3565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560801b1681520193016128ab565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560a01b1681520193016128a3565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560c01b16815201930161289b565b9260206001917fffffffff000000000000000000000000000000000000000000000000000000008560e01b168152019301612893565b9160089193506101006001917fffffffff000000000000000000000000000000000000000000000000000000008754818160e01b168352818160c01b166020840152818160a01b166040840152818160801b166060840152818160601b166080840152818160401b1660a0840152818160201b1660c08401521660e082015201940192018592939161287b565b60085460ff168015612b135790565b506040517f667f9d70000000000000000000000000000000000000000000000000000000008152737109709ecfa91a80626ff3989d68f67f5b1dd12d60048201527f6661696c656400000000000000000000000000000000000000000000000000006024820152602081604481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa90811561243c575f91612bab575b50151590565b90506020813d602011612bd5575b81612bc660209383612698565b810103126107d257515f612ba5565b3d9150612bb9565b737109709ecfa91a80626ff3989d68f67f5b1dd12d3b156107d257604051907f0c9fd581000000000000000000000000000000000000000000000000000000008252151560048201525f81602481737109709ecfa91a80626ff3989d68f67f5b1dd12d5afa801561243c57612c4f5750565b5f6127a39161269856fe60a03460a057601f615e8238819003918201601f19168301916001600160401b0383118484101760a45780849260209460405283398101031260a057516001600160a01b0381169081900360a0575f80546001600160a01b0319168217815560405191907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e08180a330608052615dc990816100b98239608051816135260152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60a0806040526004361015610012575f80fd5b5f3560e01c908162fdd58e14612cd55750806301ffc9a714612c16578063095bcdb614612b6c5780630b0d9c0914612ae057806311da60b414612a85578063156e29f6146129d55780631e2eaeaf1461299b578063234266d7146126fc5780632d7713891461265157806335fd631a146125dd5780633dd45adb14612579578063426a8493146124f557806348c894911461226a5780635275965114612152578063558a72971461207b578063598af9e714611fe35780635a6bcfda1461144f5780636276cbbe14610f965780637e87ce7d14610e5957806380f0b44c14610d875780638161b87414610c315780638da5cb5b14610be157806397e8cd4e14610b7e5780639bf6645f14610b31578063a584119414610a66578063b6363cf2146109d5578063dbd035ff1461097f578063f02de3b21461092e578063f135baaa146108f4578063f2fde38b14610848578063f3cd914c146104ff578063f5298aca146103345763fe99049a14610186575f80fd5b346103305760807ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576101bd612d3f565b6101c5612d62565b90604435917f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac72885961027973ffffffffffffffffffffffffffffffffffffffff80606435951693843314158061030d575b610287575b845f52600460205260405f20875f5260205260405f2061023a878254612fed565b90551693845f52600460205260405f20865f5260205260405f2061025f828254612ffa565b905560408051338152602081019290925290918291820190565b0390a4602060405160018152f35b845f52600560205260405f208233165f5260205260405f20875f5260205260405f2054867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036102da575b5050610219565b6102e391612fed565b855f52600560205260405f208333165f5260205260405f20885f5260205260405f20555f866102d3565b50845f52600360205260405f208233165f5260205260ff60405f20541615610214565b5f80fd5b346103305761034236612d85565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d7577f1b3d7edb2e9c0b0e7c525b20aaaef0f5940d2ed71663c7d39266ecafac7288596103ed73ffffffffffffffffffffffffffffffffffffffff805f9516956103bb6103b3866130aa565b3390896130f0565b169233841415806104a0575b6103f2575b8385526004602052604085208686526020526040852061025f828254612fed565b0390a4005b83855260056020526040852073ffffffffffffffffffffffffffffffffffffffff33168652602052604085208686526020526040852054817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203610459575b50506103cc565b61046291612fed565b84865260056020526040862073ffffffffffffffffffffffffffffffffffffffff331687526020526040862087875260205260408620558681610452565b5083855260036020526040852073ffffffffffffffffffffffffffffffffffffffff3316865260205260ff604086205416156103c7565b7f54e3ca0d000000000000000000000000000000000000000000000000000000005f5260045ffd5b34610330576101207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761053836612e81565b60607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c360112610330576040519061056f82612df6565b60a4358015158103610330578252602082019060c435825260e4359073ffffffffffffffffffffffffffffffffffffffff8216820361033057604084019182526101043567ffffffffffffffff8111610330576105d0903690600401612f4d565b9290937fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761060261350f565b51156108205760a0822092835f52600660205260405f209061062382613576565b60808401958482828a8a5173ffffffffffffffffffffffffffffffffffffffff169361064e94613b44565b90949195606088015160020b908b511515905173ffffffffffffffffffffffffffffffffffffffff1691604051986106858a612e12565b895260208901526040880152606087015262ffffff166080860152885115155f149862ffffff6107a2986106db61078f9860209d6108005773ffffffffffffffffffffffffffffffffffffffff8b511695614959565b9492968291926107d3575b505073ffffffffffffffffffffffffffffffffffffffff845116938e6fffffffffffffffffffffffffffffffff60408301511691015160020b90604051958860801d600f0b875288600f0b60208801526040870152606086015260808501521660a08301527f40e9cecb9f5f1f1c5b9c97dec2917b7ee92e57ba5563708daca94dd84ad7112f60c03393a38673ffffffffffffffffffffffffffffffffffffffff8a5116613d81565b809491946107aa575b5050823391613652565b604051908152f35b73ffffffffffffffffffffffffffffffffffffffff6107cc9251169083613652565b8480610798565b73ffffffffffffffffffffffffffffffffffffffff165f5260018f5260405f209081540190558e806106e6565b73ffffffffffffffffffffffffffffffffffffffff8e8c01511695614959565b7fbe8b8507000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330577fffffffffffffffffffffffff00000000000000000000000000000000000000006108a0612d3f565b73ffffffffffffffffffffffffffffffffffffffff5f54916108c58284163314613007565b1691829116175f55337f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3005b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576004355c5f5260205ff35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff60025416604051908152f35b346103305761098d36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355481520191019084838210156109cc5750602080916109b0565b60408186030190f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a0c612d3f565b73ffffffffffffffffffffffffffffffffffffffff610a29612d62565b91165f52600360205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610a9d612d3f565b73ffffffffffffffffffffffffffffffffffffffff81169081610ae15750505f7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d005b610aea90613a92565b907f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95d7f1e0745a7db1623981f0b2a5d4232364c00787266eb75ad546f190e6cebe9bd955d005b3461033057610b3f36612f7b565b6040519160408360208152836020820152019160051b8301916020806040850193925b83355c81520191019084838210156109cc575060208091610b62565b346103305760207ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305773ffffffffffffffffffffffffffffffffffffffff610bca612d3f565b165f526001602052602060405f2054604051908152f35b34610330575f7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057602073ffffffffffffffffffffffffffffffffffffffff5f5416604051908152f35b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610c68612d3f565b610c70612d62565b60443573ffffffffffffffffffffffffffffffffffffffff600254163303610d5f5773ffffffffffffffffffffffffffffffffffffffff821680151580610d1f575b610cf7576020936107a29280610cef5750815f526001855260405f20549384925b5f526001865260405f20610ce8848254612fed565b90556131f8565b938492610cd3565b7fc79e5948000000000000000000000000000000000000000000000000000000005f5260045ffd5b508073ffffffffffffffffffffffffffffffffffffffff7f27e098c505d44ec3574004bca052aabf76bd35004c182099d8c575fb238593b95c1614610cb2565b7f48f5c3ed000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610dbe612d3f565b7fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d757335f90815273ffffffffffffffffffffffffffffffffffffffff8216602052604090205c610e146024356130aa565b9081600f0b03610e3157610e2f9133915f03600f0b906130f0565b005b7fbda73abf000000000000000000000000000000000000000000000000000000005f5260045ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610e9136612e81565b610e99612e6f565b9073ffffffffffffffffffffffffffffffffffffffff600254163303610d5f57623e900062fff0008316106103e9610fff8416101615610f6557602060a07fe9c42593e71f84403b84352cd168d693e2c9fcd1fdbcc3feb21d92b43e6696f9922092835f526006825260405f20610f0f81613576565b805479ffffff00000000000000000000000000000000000000000000008360b81b16907fffffffffffff000000ffffffffffffffffffffffffffffffffffffffffffffff1617905562ffffff60405191168152a2005b62ffffff827fa7abe2f7000000000000000000000000000000000000000000000000000000005f521660045260245ffd5b346103305760c07ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc36011261033057610fce36612e81565b60a4359073ffffffffffffffffffffffffffffffffffffffff821680830361033057610ff861350f565b6060820191825160020b617fff81136114245750825160020b600181126113f9575073ffffffffffffffffffffffffffffffffffffffff815116602082019073ffffffffffffffffffffffffffffffffffffffff825116808210156113c2575050608082019073ffffffffffffffffffffffffffffffffffffffff82511690604084019161108c62ffffff845116826139b7565b1561139757506110a162ffffff835116613a75565b96835173ffffffffffffffffffffffffffffffffffffffff8116908133036112e0575b505060a0852090815f52600660205260405f2090815473ffffffffffffffffffffffffffffffffffffffff166112b8576020997fdd466e674ea557f56295e2d0218a125ea4b4f0f6f3307b95f85e6110838d6438927cffffff000000000000000000000000000000000000000000000000000061114260a0946145fc565b9260d01b168a76ffffff000000000000000000000000000000000000000084861b161717905562ffffff73ffffffffffffffffffffffffffffffffffffffff808a5116965116965116995160020b73ffffffffffffffffffffffffffffffffffffffff885116906040519b8c528c8c015260408b01528860608b015260020b98896080820152a45173ffffffffffffffffffffffffffffffffffffffff8116908133036111f4575b8585604051908152f35b61100016611203575b806111ea565b6112af9261128d604051937f6fe7e6eb0000000000000000000000000000000000000000000000000000000088860152336024860152604485019073ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b60e48301528361010483015261010482526112aa61012483612e2e565b613f25565b508280806111fd565b7f7983c051000000000000000000000000000000000000000000000000000000005f5260045ffd5b612000166112ef575b806110c4565b61139090604051907fdc98354e00000000000000000000000000000000000000000000000000000000602083015233602483015261137a604483018973ffffffffffffffffffffffffffffffffffffffff6080809282815116855282602082015116602086015262ffffff6040820151166040860152606081015160020b6060860152015116910152565b8860e483015260e482526112aa61010483612e2e565b50886112e9565b7fe65af6a0000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60449250604051917f6e6c983000000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7fe9e90588000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7fb70024f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b34610330576101407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761148836612e81565b60807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5c36011261033057604051906114bf82612dda565b60a4358060020b810361033057825260c4358060020b810361033057602083015260e43560408301526101043560608301526101243567ffffffffffffffff811161033057611512903690600401612f4d565b90927fc090fc4683624cfc3884e9d8de5eca132f2d0ec062aff75d43c0465d5ceeab235c156104d75761154361350f565b60a0832093845f52600660205260405f20608052611562608051613576565b608084015173ffffffffffffffffffffffffffffffffffffffff811690813303611ede575b5050815160020b92602083015160020b916115a56040850151613785565b93606087015160020b9760608201516040519960c08b018b811067ffffffffffffffff821117611eb157604052338b528860208c01528660408c015287600f0b60608c015260808b015260a08a01525f9185881215611e7a577ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276188812611e4e57620d89e88613611e22576040519261163c84612dda565b5f84525f60208501525f60408501525f606085015287600f0b611b25575b600460805101978960020b5f528860205260405f20988860020b5f5260205260405f206080515460a01c60020b8b81125f14611acf575060028060018c0154600184015490039b015491015490039b5b60a073ffffffffffffffffffffffffffffffffffffffff825116910151906040519160268301528960068301528b600383015281525f603a600c83012091816040820152816020820152525f5260066080510160205260405f20976fffffffffffffffffffffffffffffffff8954169982600f0b155f14611a72578a15611a4a5761176f61176960409f9b61184e9c6118609e5b60018301956117616002611755848a548503615703565b95019283548503615703565b9655556130aa565b916130aa565b6fffffffffffffffffffffffffffffffff169060801b179a8b965f84600f0b126119dc575b5082600f0b611898575b5050506117c46117b58560801d8360801d01613785565b9185600f0b90600f0b01613785565b6fffffffffffffffffffffffffffffffff169060801b1791815160020b90602083015160020b8c8401516060850151918e5194855260208501528d84015260608301527ff208f4912782fd25c7f114ca3723a2d5dd6f3bcc3ac8db5af63baa85f711d5ec60803393a38873ffffffffffffffffffffffffffffffffffffffff60808201511661385b565b8094919461186c575b50833391613652565b82519182526020820152f35b6118929073ffffffffffffffffffffffffffffffffffffffff6080840151169083613652565b85611857565b60805154929350909173ffffffffffffffffffffffffffffffffffffffff81169060a01c60020b828112156118fe575050906118f2926118e76118dd6118ed94614158565b91600f0b92614158565b90614527565b613785565b60801b5b8b808061179e565b92809193125f146119a95761193d9161192a6118ed6118ed9361192488600f0b91614158565b87614527565b9361193886600f0b92614158565b6144ca565b6fffffffffffffffffffffffffffffffff169060801b17906fffffffffffffffffffffffffffffffff61197c60036080510192600f0b8284541661456e565b167fffffffffffffffffffffffffffffffff000000000000000000000000000000008254161790556118f6565b906118ed9250926119bf6118dd6119c595614158565b906144ca565b6fffffffffffffffffffffffffffffffff166118f6565b808f9151611a1e575b01516119f2575b8e611794565b611a198260805160049160020b5f52016020525f6002604082208281558260018201550155565b6119ec565b611a458360805160049160020b5f52016020525f6002604082208281558260018201550155565b6119e5565b7faefeb924000000000000000000000000000000000000000000000000000000005f5260045ffd5b61176f61176960409f9b61184e9c6118609e6fffffffffffffffffffffffffffffffff611aa289600f0b8361456e565b167fffffffffffffffffffffffffffffffff0000000000000000000000000000000084541617835561173e565b9099908913611af55760028060018c0154600184015490039b015491015490039b6116aa565b9860026001608051015460018c01549003600183015490039a81806080510154910154900391015490039b6116aa565b6004608051018960020b5f5280602052898960405f20611b7e81546fffffffffffffffffffffffffffffffff611b6181831695600f0b8661456e565b16931594858515141595611dee575b508d600f0b9060801d613d3a565b60801b82179055602087015285528760020b5f5260205260405f208054906fffffffffffffffffffffffffffffffff8216611bbc8b600f0b8261456e565b901592836fffffffffffffffffffffffffffffffff831615141593611dc1575b8b600f0b9060801d600f0b03916f7fffffffffffffffffffffffffffffff83137fffffffffffffffffffffffffffffffff80000000000000000000000000000000841217611d9457826fffffffffffffffffffffffffffffffff935060801b83831617905516606086015260408501525f88600f0b1215611ca1575b8351611c85575b60408401511561165a57611c8060808c015160020b8860056080510161410c565b61165a565b611c9c60808c015160020b8a60056080510161410c565b611c5f565b60808b015160020b6fffffffffffffffffffffffffffffffff600181602088015116925f817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff276180712817ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff27618050390620d89e8050301810416809111611d68576fffffffffffffffffffffffffffffffff6060860151161115611c5857867fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b897fb8e3c385000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b6080515460a01c60020b8b13611bdc57600160805101546001840155600260805101546002840155611bdc565b6080515460a01c60020b1215611e05575b8e611b70565b600160805101546001840155600260805101546002840155611dff565b857f1ad777f8000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b877fd5e2f7ab000000000000000000000000000000000000000000000000000000005f5260045260245ffd5b60448887604051917fc4433ed500000000000000000000000000000000000000000000000000000000835260048301526024820152fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b5f604085015113808091611fd6575b15611f6b5750506040517f259982e5000000000000000000000000000000000000000000000000000000006020820152611f62916112aa82611f368887898c33602487016136cb565b037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08101845283612e2e565b505b8580611587565b159081611fc8575b50611f7f575b50611f64565b6040517f21d0ee70000000000000000000000000000000000000000000000000000000006020820152611fc1916112aa82611f368887898c33602487016136cb565b5085611f79565b610200915016151587611f73565b5061080082161515611eed565b346103305760607ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc3601126103305761201a612d3f565b73ffffffffffffffffffffffffffffffffffffffff612037612d62565b91165f52600560205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f5260205260405f206044355f52602052602060405f2054604051908152f35b346103305760407ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc360112610330576120b2612d3f565b602435908115158092036103305773ffffffffffffffffffffffffffffffffffffffff90335f52600360205260405f208282165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0081541660ff851617905560405192835216907fceb576d9f15e4e200fdb5096d64d5dfd667e16def20c1eefd14256d8e3faa26760