UNPKG

@layerzerolabs/oft-alt-evm

Version:

LayerZero Labs reference EVM OmniChain Fungible Token (OFT) implementation

1 lines 175 kB
{"abi":[{"type":"constructor","inputs":[{"name":"_endpoint","type":"address","internalType":"address"},{"name":"_receiveUln301","type":"address","internalType":"address"},{"name":"_messageLibs","type":"address[]","internalType":"address[]"},{"name":"_priceFeed","type":"address","internalType":"address"},{"name":"_roleAdmin","type":"address","internalType":"address"},{"name":"_admins","type":"address[]","internalType":"address[]"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"allowlistSize","inputs":[],"outputs":[{"name":"","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"assignJob","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_calldataSize","type":"uint256","internalType":"uint256"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"assignJob","inputs":[{"name":"_sender","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"nonpayable"},{"type":"function","name":"compose302","inputs":[{"name":"_from","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_guid","type":"bytes32","internalType":"bytes32"},{"name":"_index","type":"uint16","internalType":"uint16"},{"name":"_message","type":"bytes","internalType":"bytes"},{"name":"_extraData","type":"bytes","internalType":"bytes"},{"name":"_gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"defaultMultiplierBps","inputs":[],"outputs":[{"name":"","type":"uint16","internalType":"uint16"}],"stateMutability":"view"},{"type":"function","name":"dstConfig","inputs":[{"name":"dstEid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"}],"stateMutability":"view"},{"type":"function","name":"endpoint","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"execute301","inputs":[{"name":"_packet","type":"bytes","internalType":"bytes"},{"name":"_gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute302","inputs":[{"name":"_executionParams","type":"tuple","internalType":"struct IExecutor.ExecutionParams","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"extraData","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getFee","inputs":[{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_sender","type":"address","internalType":"address"},{"name":"_calldataSize","type":"uint256","internalType":"uint256"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getFee","inputs":[{"name":"_sender","type":"address","internalType":"address"},{"name":"_options","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"fee","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"getSupportedOptionTypes","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"}],"outputs":[{"name":"","type":"uint8[]","internalType":"uint8[]"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasAcl","inputs":[{"name":"_sender","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"localEidV2","inputs":[],"outputs":[{"name":"","type":"uint32","internalType":"uint32"}],"stateMutability":"view"},{"type":"function","name":"nativeDrop","inputs":[{"name":"_origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"_dstEid","type":"uint32","internalType":"uint32"},{"name":"_oapp","type":"address","internalType":"address"},{"name":"_nativeDropParams","type":"tuple[]","internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"_nativeDropGasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nativeDropAndExecute301","inputs":[{"name":"_origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"_nativeDropParams","type":"tuple[]","internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"_nativeDropGasLimit","type":"uint256","internalType":"uint256"},{"name":"_packet","type":"bytes","internalType":"bytes"},{"name":"_gasLimit","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"nativeDropAndExecute302","inputs":[{"name":"_nativeDropParams","type":"tuple[]","internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"_nativeDropGasLimit","type":"uint256","internalType":"uint256"},{"name":"_executionParams","type":"tuple","internalType":"struct IExecutor.ExecutionParams","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"origin","type":"tuple","internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"guid","type":"bytes32","internalType":"bytes32"},{"name":"message","type":"bytes","internalType":"bytes"},{"name":"extraData","type":"bytes","internalType":"bytes"},{"name":"gasLimit","type":"uint256","internalType":"uint256"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"paused","inputs":[],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"priceFeed","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"receiveUln301","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"renounceRole","inputs":[{"name":"","type":"bytes32","internalType":"bytes32"},{"name":"","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"pure"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDefaultMultiplierBps","inputs":[{"name":"_multiplierBps","type":"uint16","internalType":"uint16"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setDstConfig","inputs":[{"name":"_params","type":"tuple[]","internalType":"struct IExecutor.DstConfigParam[]","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"}]}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPaused","inputs":[{"name":"_paused","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setPriceFeed","inputs":[{"name":"_priceFeed","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setSupportedOptionTypes","inputs":[{"name":"_eid","type":"uint32","internalType":"uint32"},{"name":"_optionTypes","type":"uint8[]","internalType":"uint8[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setWorkerFeeLib","inputs":[{"name":"_workerFeeLib","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"withdrawFee","inputs":[{"name":"_lib","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"withdrawToken","inputs":[{"name":"_token","type":"address","internalType":"address"},{"name":"_to","type":"address","internalType":"address"},{"name":"_amount","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"workerFeeLib","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"event","name":"DstConfigSet","inputs":[{"name":"params","type":"tuple[]","indexed":false,"internalType":"struct IExecutor.DstConfigParam[]","components":[{"name":"dstEid","type":"uint32","internalType":"uint32"},{"name":"lzReceiveBaseGas","type":"uint64","internalType":"uint64"},{"name":"lzComposeBaseGas","type":"uint64","internalType":"uint64"},{"name":"multiplierBps","type":"uint16","internalType":"uint16"},{"name":"floorMarginUSD","type":"uint128","internalType":"uint128"},{"name":"nativeCap","type":"uint128","internalType":"uint128"}]}],"anonymous":false},{"type":"event","name":"NativeDropApplied","inputs":[{"name":"origin","type":"tuple","indexed":false,"internalType":"struct Origin","components":[{"name":"srcEid","type":"uint32","internalType":"uint32"},{"name":"sender","type":"bytes32","internalType":"bytes32"},{"name":"nonce","type":"uint64","internalType":"uint64"}]},{"name":"dstEid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"oapp","type":"address","indexed":false,"internalType":"address"},{"name":"params","type":"tuple[]","indexed":false,"internalType":"struct IExecutor.NativeDropParams[]","components":[{"name":"receiver","type":"address","internalType":"address"},{"name":"amount","type":"uint256","internalType":"uint256"}]},{"name":"success","type":"bool[]","indexed":false,"internalType":"bool[]"}],"anonymous":false},{"type":"event","name":"Paused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetDefaultMultiplierBps","inputs":[{"name":"multiplierBps","type":"uint16","indexed":false,"internalType":"uint16"}],"anonymous":false},{"type":"event","name":"SetPriceFeed","inputs":[{"name":"priceFeed","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"SetSupportedOptionTypes","inputs":[{"name":"dstEid","type":"uint32","indexed":false,"internalType":"uint32"},{"name":"optionTypes","type":"uint8[]","indexed":false,"internalType":"uint8[]"}],"anonymous":false},{"type":"event","name":"SetWorkerLib","inputs":[{"name":"workerLib","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Unpaused","inputs":[{"name":"account","type":"address","indexed":false,"internalType":"address"}],"anonymous":false},{"type":"event","name":"Withdraw","inputs":[{"name":"lib","type":"address","indexed":false,"internalType":"address"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"amount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]},{"type":"error","name":"EnforcedPause","inputs":[]},{"type":"error","name":"ExpectedPause","inputs":[]},{"type":"error","name":"ReentrancyGuardReentrantCall","inputs":[]},{"type":"error","name":"SafeERC20FailedOperation","inputs":[{"name":"token","type":"address","internalType":"address"}]},{"type":"error","name":"Transfer_NativeFailed","inputs":[{"name":"_to","type":"address","internalType":"address"},{"name":"_value","type":"uint256","internalType":"uint256"}]},{"type":"error","name":"Transfer_ToAddressIsZero","inputs":[]},{"type":"error","name":"Worker_NotAllowed","inputs":[]},{"type":"error","name":"Worker_OnlyMessageLib","inputs":[]},{"type":"error","name":"Worker_RoleRenouncingDisabled","inputs":[]}],"bytecode":{"object":"0x608060405234801562000010575f80fd5b5060405162003af938038062003af983398101604081905262000033916200045e565b6001805460ff61ffff60e81b01191661017760ed1b179055600280546001600160a01b0319166001600160a01b038581169190911790915584908490612ee090859085908216156200008d576200008b5f8362000220565b505b5f5b8551811015620000f157620000e77f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de878381518110620000d357620000d36200050c565b60200260200101516200022060201b60201c565b506001016200008f565b505f5b81518110156200014257620001387fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775838381518110620000d357620000d36200050c565b50600101620000f4565b505060016004908155600680546001600160a01b0319166001600160a01b038d169081179091556040805163416ecebf60e01b8152905191965063416ecebf95508083019450602093509091908290030181865afa158015620001a7573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001cd919062000520565b6006805463ffffffff92909216600160a01b0263ffffffff60a01b199092169190911790555050600780546001600160a01b039094166001600160a01b0319909416939093179092555062000586915050565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca831480156200027157505f838152602081815260408083206001600160a01b038616845290915290205460ff16155b15620002be57600180546015906200029990600160a81b90046001600160401b03166200054c565b91906101000a8154816001600160401b0302191690836001600160401b031602179055505b620002ca8383620002d6565b50600190505b92915050565b5f828152602081815260408083206001600160a01b038516845290915281205460ff1662000379575f838152602081815260408083206001600160a01b03861684529091529020805460ff19166001179055620003303390565b6001600160a01b0316826001600160a01b0316847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001620002d0565b505f620002d0565b80516001600160a01b038116811462000398575f80fd5b919050565b634e487b7160e01b5f52604160045260245ffd5b5f82601f830112620003c1575f80fd5b815160206001600160401b0380831115620003e057620003e06200039d565b8260051b604051601f19603f830116810181811084821117156200040857620004086200039d565b604052938452602081870181019490810192508785111562000428575f80fd5b6020870191505b848210156200045357620004438262000381565b835291830191908301906200042f565b979650505050505050565b5f805f805f8060c0878903121562000474575f80fd5b6200047f8762000381565b95506200048f6020880162000381565b60408801519095506001600160401b0380821115620004ac575f80fd5b620004ba8a838b01620003b1565b9550620004ca60608a0162000381565b9450620004da60808a0162000381565b935060a0890151915080821115620004f0575f80fd5b50620004ff89828a01620003b1565b9150509295509295509295565b634e487b7160e01b5f52603260045260245ffd5b5f6020828403121562000531575f80fd5b815163ffffffff8116811462000545575f80fd5b9392505050565b5f6001600160401b038281166002600160401b031981016200057c57634e487b7160e01b5f52601160045260245ffd5b6001019392505050565b61356580620005945f395ff3fe608060405260043610610242575f3560e01c8063724e78da11610131578063c358de0a116100ac578063cd88b9031161007c578063d2ae210411610062578063d2ae2104146107ae578063d547741f14610800578063e395eb5c1461081f575f80fd5b8063cd88b9031461077c578063cfc325701461079b575f80fd5b8063c358de0a146106ee578063c416aa511461070d578063c7b2370b1461073e578063c8f8dcd11461075d575f80fd5b806391d1485411610101578063a217fddf116100e7578063a217fddf14610690578063c015bb7d146106a3578063c2803b2c146106c2575f80fd5b806391d14854146105675780639e944965146105b6575f80fd5b8063724e78da146104f6578063741bef1a146105155780637cd44734146105415780638624ba0714610554575f80fd5b80633146646a116101c1578063475b6d9e116101915780635e280f11116101775780635e280f1114610467578063709eb664146104b8578063717e8a42146104d7575f80fd5b8063475b6d9e1461043d5780635c975abb14610450575f80fd5b80633146646a146103cd57806336568abe146103ec5780633927c0751461040b5780633d85ac331461041e575f80fd5b806316c38b3c1161021657806326e67a37116101fc57806326e67a37146103635780632de113761461038f5780632f2ff15d146103ae575f80fd5b806316c38b3c14610308578063248a9ca314610327575f80fd5b8062bf2e801461024657806301e336671461029957806301ffc9a7146102ba5780631095b6d7146102e9575b5f80fd5b348015610251575f80fd5b50600154610281907d010000000000000000000000000000000000000000000000000000000000900461ffff1681565b60405161ffff90911681526020015b60405180910390f35b3480156102a4575f80fd5b506102b86102b336600461267b565b610868565b005b3480156102c5575f80fd5b506102d96102d43660046126b4565b6108a3565b6040519015158152602001610290565b3480156102f4575f80fd5b506102b861030336600461267b565b61093b565b348015610313575f80fd5b506102b86103223660046126f3565b610ac4565b348015610332575f80fd5b50610355610341366004612712565b5f9081526020819052604090206001015490565b604051908152602001610290565b34801561036e575f80fd5b5061038261037d36600461273c565b610ae8565b6040516102909190612755565b34801561039a575f80fd5b506102d96103a936600461279b565b610b6b565b3480156103b9575f80fd5b506102b86103c83660046127b4565b610c4c565b3480156103d8575f80fd5b506102b86103e7366004612823565b610c70565b3480156103f7575f80fd5b506102b86104063660046127b4565b610d33565b6102b86104193660046128c2565b610d65565b348015610429575f80fd5b506102b8610438366004612a3b565b610e53565b6102b861044b366004612b50565b611035565b34801561045b575f80fd5b5060015460ff166102d9565b348015610472575f80fd5b506006546104939073ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610290565b3480156104c3575f80fd5b506103556104d2366004612bca565b611089565b3480156104e2575f80fd5b506103556104f1366004612bca565b6111e5565b348015610501575f80fd5b506102b861051036600461279b565b611365565b348015610520575f80fd5b506002546104939073ffffffffffffffffffffffffffffffffffffffff1681565b6102b861054f366004612c34565b611402565b6102b8610562366004612cf0565b6114e1565b348015610572575f80fd5b506102d96105813660046127b4565b5f9182526020828152604080842073ffffffffffffffffffffffffffffffffffffffff93909316845291905290205460ff1690565b3480156105c1575f80fd5b506106436105d036600461273c565b60056020525f90815260409020805460019091015467ffffffffffffffff8083169261ffff68010000000000000000820416926fffffffffffffffffffffffffffffffff6a0100000000000000000000909204821692918116917001000000000000000000000000000000009091041685565b6040805167ffffffffffffffff968716815261ffff90951660208601526fffffffffffffffffffffffffffffffff938416908501529116606083015291909116608082015260a001610290565b34801561069b575f80fd5b506103555f81565b3480156106ae575f80fd5b506103556106bd366004612d5e565b611616565b3480156106cd575f80fd5b506007546104939073ffffffffffffffffffffffffffffffffffffffff1681565b3480156106f9575f80fd5b506102b8610708366004612dad565b6117a3565b348015610718575f80fd5b5060015461049390610100900473ffffffffffffffffffffffffffffffffffffffff1681565b348015610749575f80fd5b506102b861075836600461279b565b611851565b348015610768575f80fd5b50610355610777366004612d5e565b6118f5565b348015610787575f80fd5b506102b8610796366004612dc6565b611a56565b6102b86107a9366004612e45565b611a9f565b3480156107b9575f80fd5b506001546107e7907501000000000000000000000000000000000000000000900467ffffffffffffffff1681565b60405167ffffffffffffffff9091168152602001610290565b34801561080b575f80fd5b506102b861081a3660046127b4565b611b7d565b34801561082a575f80fd5b506006546108539074010000000000000000000000000000000000000000900463ffffffff1681565b60405163ffffffff9091168152602001610290565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561089281611ba1565b61089d848484611bae565b50505050565b5f7fffffffff0000000000000000000000000000000000000000000000000000000082167f7965db0b00000000000000000000000000000000000000000000000000000000148061093557507f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561096581611ba1565b73ffffffffffffffffffffffffffffffffffffffff84165f9081527f9b50f4667d2d24216ccbf0dce3a90c0f620fa4d895e7b069d80ff6247fd25620602052604090205460ff166109e2576040517f5ee08b9700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040517ffd9be52200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84811660048301526024820184905285169063fd9be522906044015f604051808303815f87803b158015610a4f575f80fd5b505af1158015610a61573d5f803e3d5ffd5b50506040805173ffffffffffffffffffffffffffffffffffffffff8089168252871660208201529081018590527f9b1bfa7fa9ee420a16e124f794c35ac9f90472acc99140eb2f6447c714cad8eb9250606001905060405180910390a150505050565b5f610ace81611ba1565b8115610ae057610adc611be3565b5050565b610adc611c62565b63ffffffff81165f90815260036020908152604091829020805483518184028101840190945280845260609392830182828015610b5f57602002820191905f5260205f20905f905b825461010083900a900460ff16815260206001928301818104948501949093039092029101808411610b305790505b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff81165f9081527f93c430521711328044ae92d0f1f1286cf040bc4a382f1642bd89984e86630553602052604081205460ff1615610bbe57505f919050565b6001547501000000000000000000000000000000000000000000900467ffffffffffffffff161580610c33575073ffffffffffffffffffffffffffffffffffffffff82165f9081527f4ac82e3087b7dedf7f532cbc6915c722df8c1e31f1388c318a617b52760eaf8b602052604090205460ff165b15610c4057506001919050565b505f919050565b919050565b5f82815260208190526040902060010154610c6681611ba1565b61089d8383611cb9565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610c9a81611ba1565b610ca2611d89565b6007546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f890610cfc90879087908790600401612ec6565b5f604051808303815f87803b158015610d13575f80fd5b505af1158015610d25573d5f803e3d5ffd5b5050505061089d6001600455565b6040517fdec9f03100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610d8f81611ba1565b610d97611d89565b610db788610da58686611dcc565b610daf8787611dee565b8a8a8a611e06565b506007546040517fe65106f800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091169063e65106f890610e1290879087908790600401612ec6565b5f604051808303815f87803b158015610e29575f80fd5b505af1158015610e3b573d5f803e3d5ffd5b50505050610e496001600455565b5050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775610e7d81611ba1565b5f5b8251811015610ff9575f838281518110610e9b57610e9b612ee9565b6020908102919091018101516040805160a080820183528385015167ffffffffffffffff908116835260608086015161ffff9081168589019081526080808901516fffffffffffffffffffffffffffffffff908116888a01908152968a01518116948801948552888a01518616918801918252985163ffffffff165f9081526005909a5296909820945185549851945188166a0100000000000000000000027fffffffffffff00000000000000000000000000000000ffffffffffffffffffff9590921668010000000000000000027fffffffffffffffffffffffffffffffffffffffffffff0000000000000000000090991690841617979097179290921695909517825551600191820180549351909516700100000000000000000000000000000000027fffffffffffffffff00000000000000000000000000000000000000000000000090931693169290921717909155919091019050610e7f565b507fb99f6de5e22c60c178b03bfacf2daeb4b6089f5b37e0fe2c48a5d5141191fc53826040516110299190612f16565b60405180910390a15050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561105f81611ba1565b611067611d89565b611075878787878787611e06565b506110806001600455565b50505050505050565b5f8461109481610b6b565b6110ca576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6110d2611f73565b6040805160a08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8a1660208084018290528a831684860152606084018a905260015461ffff7d01000000000000000000000000000000000000000000000000000000000082041660808601525f92835260059091529084902093517f434ee01600000000000000000000000000000000000000000000000000000000815292936101009091049091169163434ee0169161119a918591908a908a90600401612fbc565b602060405180830381865afa1580156111b5573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111d99190613079565b98975050505050505050565b5f7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de61121081611ba1565b8561121a81610b6b565b611250576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160a08101825260025473ffffffffffffffffffffffffffffffffffffffff908116825263ffffffff8b1660208084018290528b831684860152606084018b905260015461ffff7d01000000000000000000000000000000000000000000000000000000000082041660808601525f92835260059091529084902093517f566ef76200000000000000000000000000000000000000000000000000000000815292936101009091049091169163566ef76291611318918591908b908b90600401612fbc565b6020604051808303815f875af1158015611334573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113589190613079565b9998505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561138f81611ba1565b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff84169081179091556040519081527ff724a45d041687842411f2b977ef22ab8f43c8f1104f4592b42a00f9b34a643d90602001611029565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561142c81611ba1565b611434611d89565b6006546040517f91d20fa100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906391d20fa1908490349061149c908f908f908f908f908f908f908f908f90600401613090565b5f604051808303818589803b1580156114b3575f80fd5b5088f11580156114c5573d5f803e3d5ffd5b5050505050506114d56001600455565b50505050505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561150b81611ba1565b611513611d89565b6006545f9061155190602085019074010000000000000000000000000000000000000000900463ffffffff16611549828761279b565b898989611e06565b90505f61155e8234613128565b60065490915073ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e08601358360208801611593818a61279b565b60808a01356115a560a08c018c61313b565b6115b260c08e018e61313b565b6040518a63ffffffff1660e01b81526004016115d497969594939291906131d6565b5f604051808303818589803b1580156115eb575f80fd5b5088f11580156115fd573d5f803e3d5ffd5b505050505050505061160f6001600455565b5050505050565b5f7f724aface199fe5bed93ae8508474576a9adf3dc443b2c451842a2242919f19de61164181611ba1565b8461164b81610b6b565b611681576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608101825260025473ffffffffffffffffffffffffffffffffffffffff90811682528881166020808401919091526001547d010000000000000000000000000000000000000000000000000000000000810461ffff168486015260065474010000000000000000000000000000000000000000900463ffffffff165f90815260059092529084902093517f65003784000000000000000000000000000000000000000000000000000000008152929361010090910490911691636500378491611758918591908b908b90600401613239565b6020604051808303815f875af1158015611774573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117989190613079565b979650505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c217756117cd81611ba1565b600180547fff0000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffff167d01000000000000000000000000000000000000000000000000000000000061ffff8516908102919091179091556040519081527f7af0ac740036ffb1c97b03697859d729e80a44ae5030543d64971c313565ab4d90602001611029565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c2177561187b81611ba1565b600180547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff8516908102919091179091556040519081527f1399be28223800f8669b3ba5f8721d9fc16fc4e8d0bbf98378791c8c5a3015e090602001611029565b5f8361190081610b6b565b611936576040517f4ab5ebcd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6040805160608101825260025473ffffffffffffffffffffffffffffffffffffffff90811682528781166020808401919091526001547d010000000000000000000000000000000000000000000000000000000000810461ffff168486015260065474010000000000000000000000000000000000000000900463ffffffff165f90815260059092529084902093517f337c7a9e00000000000000000000000000000000000000000000000000000000815292936101009091049091169163337c7a9e91611a0d918591908a908a90600401613239565b602060405180830381865afa158015611a28573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613079565b9695505050505050565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611a8081611ba1565b63ffffffff84165f90815260036020526040902061160f9084846125a0565b7fa49807205ce4d355092ef5a8a18f56e8913cf4a201fbe287825b095693c21775611ac981611ba1565b611ad1611d89565b60065473ffffffffffffffffffffffffffffffffffffffff16630c0c389e60e08401353460208601611b03818861279b565b6080880135611b1560a08a018a61313b565b611b2260c08c018c61313b565b6040518a63ffffffff1660e01b8152600401611b4497969594939291906131d6565b5f604051808303818589803b158015611b5b575f80fd5b5088f1158015611b6d573d5f803e3d5ffd5b505050505050610adc6001600455565b5f82815260208190526040902060010154611b9781611ba1565b61089d8383611fb2565b611bab8133612077565b50565b73ffffffffffffffffffffffffffffffffffffffff8316611bd857611bd38282612101565b505050565b611bd3838383612203565b611beb611f73565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016811790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258335b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200160405180910390a1565b611c6a612271565b600180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33611c38565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca83148015611d1657505f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff16155b15611d755760018054601590611d4e907501000000000000000000000000000000000000000000900467ffffffffffffffff166132e9565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b611d7f83836122ad565b5060019392505050565b600260045403611dc5576040517f3ee5aeb500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002600455565b5f611ddb6031602d848661330f565b611de491613336565b60e01c9392505050565b5f611dff611dfc84846123a6565b90565b9392505050565b5f808367ffffffffffffffff811115611e2157611e2161294f565b604051908082528060200260200182016040528015611e4a578160200160208202803683370190505b5090505f5b84811015611f26575f868683818110611e6a57611e6a612ee9565b905060400201803603810190611e80919061337e565b90505f815f015173ffffffffffffffffffffffffffffffffffffffff16826020015187906040515f60405180830381858888f193505050503d805f8114611ee2576040519150601f19603f3d011682016040523d82523d5f602084013e611ee7565b606091505b5050905080848481518110611efe57611efe612ee9565b911515602092830291909101820152820151611f1a90866133d3565b94505050600101611e4f565b507f1f48172553121d8bf273ce457a5a3dd180d464e0add3e0143045b7fa039c3468888888888886604051611f6096959493929190613422565b60405180910390a1509695505050505050565b60015460ff1615611fb0576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f7f74845de37cfabd357633214b47fa91ccd19b05b7c5a08ac22c187f811fb62bca8314801561200e57505f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616845290915290205460ff165b1561206d5760018054601590612046907501000000000000000000000000000000000000000000900467ffffffffffffffff166134b2565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b611d7f83836123be565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915290205460ff16610adc576040517fe2517d3f00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff82166004820152602481018390526044015b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff821661214e576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff16826040515f6040518083038185875af1925050503d805f81146121a4576040519150601f19603f3d011682016040523d82523d5f602084013e6121a9565b606091505b5050905080611bd3576040517f465bc83400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602481018390526044016120f8565b73ffffffffffffffffffffffffffffffffffffffff8216612250576040517f6b7a931000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b611bd373ffffffffffffffffffffffffffffffffffffffff84168383612477565b60015460ff16611fb0576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff1661239f575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff86168452909152902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016600117905561233d3390565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16847f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a4506001610935565b505f610935565b5f6123b560516031848661330f565b611dff916134f3565b5f8281526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8516845290915281205460ff161561239f575f8381526020818152604080832073ffffffffffffffffffffffffffffffffffffffff8616808552925280832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016905551339286917ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b9190a4506001610935565b6040805173ffffffffffffffffffffffffffffffffffffffff841660248201526044808201849052825180830390910181526064909101909152602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781528251611bd393879390925f9283929183919082885af180612520576040513d5f823e3d81fd5b50505f513d91508115612537578060011415612551565b73ffffffffffffffffffffffffffffffffffffffff84163b155b1561089d576040517f5274afe700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff851660048201526024016120f8565b828054828255905f5260205f2090601f01602090048101928215612634579160200282015f5b8382111561260657833560ff1683826101000a81548160ff021916908360ff16021790555092602001926001016020815f010492830192600103026125c6565b80156126325782816101000a81549060ff02191690556001016020815f01049283019260010302612606565b505b50612640929150612644565b5090565b5b80821115612640575f8155600101612645565b803573ffffffffffffffffffffffffffffffffffffffff81168114610c47575f80fd5b5f805f6060848603121561268d575f80fd5b61269684612658565b92506126a460208501612658565b9150604084013590509250925092565b5f602082840312156126c4575f80fd5b81357fffffffff0000000000000000000000000000000000000000000000000000000081168114611dff575f80fd5b5f60208284031215612703575f80fd5b81358015158114611dff575f80fd5b5f60208284031215612722575f80fd5b5035919050565b803563ffffffff81168114610c47575f80fd5b5f6020828403121561274c575f80fd5b611dff82612729565b602080825282518282018190525f9190848201906040850190845b8181101561278f57835160ff1683529284019291840191600101612770565b50909695505050505050565b5f602082840312156127ab575f80fd5b611dff82612658565b5f80604083850312156127c5575f80fd5b823591506127d560208401612658565b90509250929050565b5f8083601f8401126127ee575f80fd5b50813567ffffffffffffffff811115612805575f80fd5b60208301915083602082850101111561281c575f80fd5b9250929050565b5f805f60408486031215612835575f80fd5b833567ffffffffffffffff81111561284b575f80fd5b612857868287016127de565b909790965060209590950135949350505050565b5f6060828403121561287b575f80fd5b50919050565b5f8083601f840112612891575f80fd5b50813567ffffffffffffffff8111156128a8575f80fd5b6020830191508360208260061b850101111561281c575f80fd5b5f805f805f805f60e0888a0312156128d8575f80fd5b6128e2898961286b565b9650606088013567ffffffffffffffff808211156128fe575f80fd5b61290a8b838c01612881565b909850965060808a0135955060a08a0135915080821115612929575f80fd5b506129368a828b016127de565b989b979a5095989497959660c090950135949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405160c0810167ffffffffffffffff8111828210171561299f5761299f61294f565b60405290565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff811182821017156129ec576129ec61294f565b604052919050565b803567ffffffffffffffff81168114610c47575f80fd5b803561ffff81168114610c47575f80fd5b80356fffffffffffffffffffffffffffffffff81168114610c47575f80fd5b5f6020808385031215612a4c575f80fd5b823567ffffffffffffffff80821115612a63575f80fd5b818501915085601f830112612a76575f80fd5b813581811115612a8857612a8861294f565b612a96848260051b016129a5565b818152848101925060c0918202840185019188831115612ab4575f80fd5b938501935b82851015612b445780858a031215612acf575f80fd5b612ad761297c565b612ae086612729565b8152612aed8787016129f4565b878201526040612afe8188016129f4565b908201526060612b0f878201612a0b565b908201526080612b20878201612a1c565b9082015260a0612b31878201612a1c565b9082015284529384019392850192612ab9565b50979650505050505050565b5f805f805f8060e08789031215612b65575f80fd5b612b6f888861286b565b9550612b7d60608801612729565b9450612b8b60808801612658565b935060a087013567ffffffffffffffff811115612ba6575f80fd5b612bb289828a01612881565b979a969950949794969560c090950135949350505050565b5f805f805f60808688031215612bde575f80fd5b612be786612729565b9450612bf560208701612658565b935060408601359250606086013567ffffffffffffffff811115612c17575f80fd5b612c23888289016127de565b969995985093965092949392505050565b5f805f805f805f805f60e08a8c031215612c4c575f80fd5b612c558a612658565b9850612c6360208b01612658565b975060408a01359650612c7860608b01612a0b565b955060808a013567ffffffffffffffff80821115612c94575f80fd5b612ca08d838e016127de565b909750955060a08c0135915080821115612cb8575f80fd5b50612cc58c828d016127de565b9a9d999c50979a9699959894979660c00135949350505050565b5f610100828403121561287b575f80fd5b5f805f8060608587031215612d03575f80fd5b843567ffffffffffffffff80821115612d1a575f80fd5b612d2688838901612881565b9096509450602087013593506040870135915080821115612d45575f80fd5b50612d5287828801612cdf565b91505092959194509250565b5f805f60408486031215612d70575f80fd5b612d7984612658565b9250602084013567ffffffffffffffff811115612d94575f80fd5b612da0868287016127de565b9497909650939450505050565b5f60208284031215612dbd575f80fd5b611dff82612a0b565b5f805f60408486031215612dd8575f80fd5b612de184612729565b9250602084013567ffffffffffffffff80821115612dfd575f80fd5b818601915086601f830112612e10575f80fd5b813581811115612e1e575f80fd5b8760208260051b8501011115612e32575f80fd5b6020830194508093505050509250925092565b5f60208284031215612e55575f80fd5b813567ffffffffffffffff811115612e6b575f80fd5b612e7784828501612cdf565b949350505050565b81835281816020850137505f602082840101525f60207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b604081525f612ed9604083018587612e7f565b9050826020830152949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b602080825282518282018190525f919060409081850190868401855b82811015612faf578151805163ffffffff1685528681015167ffffffffffffffff9081168887015286820151168686015260608082015161ffff16908601526080808201516fffffffffffffffffffffffffffffffff9081169187019190915260a091820151169085015260c09093019290850190600101612f32565b5091979650505050505050565b845173ffffffffffffffffffffffffffffffffffffffff908116825260208087015163ffffffff1690830152604080870151909116818301526060808701519083015260808087015161ffff90811682850152865467ffffffffffffffff80821660a08701529381901c90911660c085015260501c6fffffffffffffffffffffffffffffffff90811660e08501526001870154908116610100850152901c166101208201525f610160806101408401526117988184018587612e7f565b5f60208284031215613089575f80fd5b5051919050565b5f73ffffffffffffffffffffffffffffffffffffffff808b168352808a1660208401525087604083015261ffff8716606083015260c060808301526130d960c083018688612e7f565b82810360a08401526130ec818587612e7f565b9b9a5050505050505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b81810381811115610935576109356130fb565b5f8083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261316e575f80fd5b83018035915067ffffffffffffffff821115613188575f80fd5b60200191503681900382131561281c575f80fd5b63ffffffff6131aa82612729565b1682526020810135602083015267ffffffffffffffff6131cc604083016129f4565b1660408301525050565b6131e0818961319c565b73ffffffffffffffffffffffffffffffffffffffff8716606082015285608082015260e060a08201525f61321860e083018688612e7f565b82810360c084015261322b818587612e7f565b9a9950505050505050505050565b5f61012073ffffffffffffffffffffffffffffffffffffffff8088511684528060208901511660208501525061ffff60408801511660408401526132d56060840187805467ffffffffffffffff808216845261ffff8260401c1660208501526fffffffffffffffffffffffffffffffff808360501c16604086015260018401549250808316606086015250808260801c16608085015250505050565b806101008401526117988184018587612e7f565b5f67ffffffffffffffff808316818103613305576133056130fb565b6001019392505050565b5f808585111561331d575f80fd5b83861115613329575f80fd5b5050820193919092039150565b7fffffffff0000000000000000000000000000000000000000000000000000000081358181169160048510156133765780818660040360031b1b83161692505b505092915050565b5f6040828403121561338e575f80fd5b6040516040810181811067ffffffffffffffff821117156133b1576133b161294f565b6040526133bd83612658565b8152602083013560208201528091505092915050565b80820180821115610935576109356130fb565b5f815180845260208085019450602084015f5b838110156134175781511515875295820195908201906001016133f9565b509495945050505050565b5f60e08201613431838a61319c565b63ffffffff8816606084015273ffffffffffffffffffffffffffffffffffffffff878116608085015260e060a085015290859052859061010084015f5b8781101561349f578261348085612658565b168252602084810135908301526040938401939091019060010161346e565b5084810360c08601526130ec81876133e6565b5f67ffffffffffffffff8216806134cb576134cb6130fb565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0192915050565b80356020831015610935577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b169291505056fea2646970667358221220bf4067662d56dc81125eda238718adb88046662d26b0b352f03d651c8af9702b64736f6c63430008160033","sourceMap":"881:6700:82:-:0;;;1175:404;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1231:7:129;:15;;-1:-1:-1;;;;;;1699:44:89;-1:-1:-1;;;1699:44:89;;;1753:9;:22;;-1:-1:-1;;;;;;1753:22:89;-1:-1:-1;;;;;1753:22:89;;;;;;;;;;1388:12:82;;1753:22:89;;1414:5:82;;1421:10;;1433:7;;1790:26:89;;;1786:144;;1832:42;2232:4:114;1863:10:89;1832;:42::i;:::-;;1786:144;1945:9;1940:120;1964:12;:19;1960:1;:23;1940:120;;;2004:45;654:29;2033:12;2046:1;2033:15;;;;;;;;:::i;:::-;;;;;;;2004:10;;;:45;;:::i;:::-;-1:-1:-1;1985:3:89;;1940:120;;;;2075:9;2070:104;2094:7;:14;2090:1;:18;2070:104;;;2129:34;858:23;2152:7;2160:1;2152:10;;;;;;;;:::i;2129:34::-;-1:-1:-1;2110:3:89;;2070:104;;;-1:-1:-1;;1857:1:130;2061:7;:21;;;1452:8:82::1;:20:::0;;-1:-1:-1;;;;;;1452:20:82::1;-1:-1:-1::0;;;;;1452:20:82;::::1;::::0;;::::1;::::0;;;1495:37:::1;::::0;;-1:-1:-1;;;1495:37:82;;;;1452:20;;-1:-1:-1;1495:35:82::1;::::0;-1:-1:-1;1495:37:82;;::::1;::::0;-1:-1:-1;1495:37:82::1;::::0;-1:-1:-1;1495:37:82;;;;;;;;1452:20;1495:37:::1;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1482:10;:50:::0;;::::1;::::0;;;::::1;-1:-1:-1::0;;;1482:50:82::1;-1:-1:-1::0;;;;1482:50:82;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;1542:13:82::1;:30:::0;;-1:-1:-1;;;;;1542:30:82;;::::1;-1:-1:-1::0;;;;;;1542:30:82;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;881:6700:82;;-1:-1:-1;;881:6700:82;5627:259:89;5707:4;727:22;5727:5;:18;:47;;;;-1:-1:-1;2931:4:114;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:114;;;;;;;;;;;;5749:25:89;5727:47;5723:93;;;5792:13;5790:15;;5792:13;;5790:15;;-1:-1:-1;;;5790:15:89;;-1:-1:-1;;;;;5790:15:89;;:::i;:::-;;;;;;;;-1:-1:-1;;;;;5790:15:89;;;;;-1:-1:-1;;;;;5790:15:89;;;;;;5723:93;5825:33;5842:5;5849:8;5825:16;:33::i;:::-;;5875:4;5868:11;;5627:259;;;;;:::o;6179:316:114:-;6256:4;2954:12;;;;;;;;;;;-1:-1:-1;;;;;2954:29:114;;;;;;;;;;;;6272:217;;6315:6;:12;;;;;;;;;;;-1:-1:-1;;;;;6315:29:114;;;;;;;;;:36;;-1:-1:-1;;6315:36:114;6347:4;6315:36;;;6397:12;735:10:126;;656:96;6397:12:114;-1:-1:-1;;;;;6370:40:114;6388:7;-1:-1:-1;;;;;6370:40:114;6382:4;6370:40;;;;;;;;;;-1:-1:-1;6431:4:114;6424:11;;6272:217;-1:-1:-1;6473:5:114;6466:12;;14:177:141;93:13;;-1:-1:-1;;;;;135:31:141;;125:42;;115:70;;181:1;178;171:12;115:70;14:177;;;:::o;196:127::-;257:10;252:3;248:20;245:1;238:31;288:4;285:1;278:15;312:4;309:1;302:15;328:929;393:5;446:3;439:4;431:6;427:17;423:27;413:55;;464:1;461;454:12;413:55;487:13;;519:4;-1:-1:-1;;;;;572:10:141;;;569:36;;;585:18;;:::i;:::-;631:2;628:1;624:10;663:2;657:9;726:2;722:7;717:2;713;709:11;705:25;697:6;693:38;781:6;769:10;766:22;761:2;749:10;746:18;743:46;740:72;;;792:18;;:::i;:::-;828:2;821:22;878:18;;;924:4;956:15;;;952:26;;;912:17;;;;-1:-1:-1;990:15:141;;;987:35;;;1018:1;1015;1008:12;987:35;1054:4;1046:6;1042:17;1031:28;;1068:159;1084:6;1079:3;1076:15;1068:159;;;1150:34;1180:3;1150:34;:::i;:::-;1138:47;;1205:12;;;;1101;;;;1068:159;;;1245:6;328:929;-1:-1:-1;;;;;;;328:929:141:o;1262:957::-;1427:6;1435;1443;1451;1459;1467;1520:3;1508:9;1499:7;1495:23;1491:33;1488:53;;;1537:1;1534;1527:12;1488:53;1560:40;1590:9;1560:40;:::i;:::-;1550:50;;1619:49;1664:2;1653:9;1649:18;1619:49;:::i;:::-;1712:2;1697:18;;1691:25;1609:59;;-1:-1:-1;;;;;;1765:14:141;;;1762:34;;;1792:1;1789;1782:12;1762:34;1815:72;1879:7;1870:6;1859:9;1855:22;1815:72;:::i;:::-;1805:82;;1906:49;1951:2;1940:9;1936:18;1906:49;:::i;:::-;1896:59;;1974:50;2019:3;2008:9;2004:19;1974:50;:::i;:::-;1964:60;;2070:3;2059:9;2055:19;2049:26;2033:42;;2100:2;2090:8;2087:16;2084:36;;;2116:1;2113;2106:12;2084:36;;2139:74;2205:7;2194:8;2183:9;2179:24;2139:74;:::i;:::-;2129:84;;;1262:957;;;;;;;;:::o;2224:127::-;2285:10;2280:3;2276:20;2273:1;2266:31;2316:4;2313:1;2306:15;2340:4;2337:1;2330:15;2356:280;2425:6;2478:2;2466:9;2457:7;2453:23;2449:32;2446:52;;;2494:1;2491;2484:12;2446:52;2526:9;2520:16;2576:10;2569:5;2565:22;2558:5;2555:33;2545:61;;2602:1;2599;2592:12;2545:61;2625:5;2356:280;-1:-1:-1;;;2356:280:141:o;2641:306::-;2679:3;-1:-1:-1;;;;;2749:14:141;;;-1:-1: