diff --git a/core/gethwrappers/ccip/generated/price_registry/price_registry.go b/core/gethwrappers/ccip/generated/price_registry/price_registry.go index 244df2f649..5972413626 100644 --- a/core/gethwrappers/ccip/generated/price_registry/price_registry.go +++ b/core/gethwrappers/ccip/generated/price_registry/price_registry.go @@ -164,8 +164,8 @@ type PriceRegistryTokenTransferFeeConfigSingleTokenArgs struct { } var PriceRegistryMetaData = &bind.MetaData{ - ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"}],\"internalType\":\"structPriceRegistry.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"priceUpdaters\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"feeTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"stalenessThreshold\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"feedConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenPriceFeedUpdate[]\",\"name\":\"tokenPriceFeeds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigSingleTokenArgs[]\",\"name\":\"tokenTransferFeeConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"internalType\":\"structPriceRegistry.PremiumMultiplierWeiPerEthArgs[]\",\"name\":\"premiumMultiplierWeiPerEthArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfigArgs[]\",\"name\":\"destChainConfigArgs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chain\",\"type\":\"uint64\"}],\"name\":\"ChainNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataFeedValueOutOfUint224Range\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"DestinationChainNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExtraArgOutOfOrderExecutionMustBeTrue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"}],\"name\":\"InvalidDestBytesOverhead\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidDestChainConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidEVMAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStalenessThreshold\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStaticConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgFeeJuels\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint256\"}],\"name\":\"MessageFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageGasLimitTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualSize\",\"type\":\"uint256\"}],\"name\":\"MessageTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"NotAFeeToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SourceTokenDataTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timePassed\",\"type\":\"uint256\"}],\"name\":\"StaleGasPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedNumberOfTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"DestChainDynamicConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"name\":\"PremiumMultiplierWeiPerEthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"priceFeedConfig\",\"type\":\"tuple\"}],\"name\":\"PriceFeedPerTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"priceUpdater\",\"type\":\"address\"}],\"name\":\"PriceUpdaterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"priceUpdater\",\"type\":\"address\"}],\"name\":\"PriceUpdaterSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenTransferFeeConfigDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"name\":\"TokenTransferFeeConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"UsdPerTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChain\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"UsdPerUnitGasUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"addedCallers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"removedCallers\",\"type\":\"address[]\"}],\"internalType\":\"structAuthorizedCallers.AuthorizedCallerArgs\",\"name\":\"authorizedCallerArgs\",\"type\":\"tuple\"}],\"name\":\"applyAuthorizedCallerUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfigArgs[]\",\"name\":\"destChainConfigArgs\",\"type\":\"tuple[]\"}],\"name\":\"applyDestChainConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"feeTokensToAdd\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"feeTokensToRemove\",\"type\":\"address[]\"}],\"name\":\"applyFeeTokensUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"internalType\":\"structPriceRegistry.PremiumMultiplierWeiPerEthArgs[]\",\"name\":\"premiumMultiplierWeiPerEthArgs\",\"type\":\"tuple[]\"}],\"name\":\"applyPremiumMultiplierWeiPerEthUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigSingleTokenArgs[]\",\"name\":\"tokenTransferFeeConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigRemoveArgs[]\",\"name\":\"tokensToUseDefaultFeeConfigs\",\"type\":\"tuple[]\"}],\"name\":\"applyTokenTransferFeeConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"}],\"name\":\"convertTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAuthorizedCallers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"getDestChainDynamicConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"getDestinationChainGasPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"value\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"internalType\":\"structInternal.TimestampedPackedUint224\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPremiumMultiplierWeiPerEth\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStalenessThreshold\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"}],\"internalType\":\"structPriceRegistry.StaticConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"getTokenAndGasPrices\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"tokenPrice\",\"type\":\"uint224\"},{\"internalType\":\"uint224\",\"name\":\"gasPriceValue\",\"type\":\"uint224\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"value\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"internalType\":\"structInternal.TimestampedPackedUint224\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenPriceFeedConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getTokenPrices\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"value\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"internalType\":\"structInternal.TimestampedPackedUint224[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTransferFeeConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structClient.EVM2AnyMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"getValidatedFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"structInternal.RampMessageHeader\",\"name\":\"header\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"destTokenAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structInternal.RampTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.EVM2AnyRampMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"sourceTokenAmounts\",\"type\":\"tuple[]\"}],\"name\":\"getValidatedRampMessageParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"msgFeeJuels\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOutOfOrderExecution\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"convertedExtraArgs\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getValidatedTokenPrice\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"\",\"type\":\"uint224\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"internalType\":\"uint224\",\"name\":\"usdPerToken\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.TokenPriceUpdate[]\",\"name\":\"tokenPriceUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint224\",\"name\":\"usdPerUnitGas\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.GasPriceUpdate[]\",\"name\":\"gasPriceUpdates\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.PriceUpdates\",\"name\":\"priceUpdates\",\"type\":\"tuple\"}],\"name\":\"updatePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"feedConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenPriceFeedUpdate[]\",\"name\":\"tokenPriceFeedUpdates\",\"type\":\"tuple[]\"}],\"name\":\"updateTokenPriceFeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", - Bin: "0x60e06040523480156200001157600080fd5b5060405162006d9238038062006d9283398101604081905262000034916200173c565b8633806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf8162000219565b5050604080518082018252838152815160008152602080820190935291810191909152620000ee9150620002c4565b5060208801516001600160a01b0316158062000112575087516001600160601b0316155b15620001315760405163d794ef9560e01b815260040160405180910390fd5b6020888101516001600160a01b031660a05288516001600160601b031660805263ffffffff861660c052604080516000815291820190526200017590879062000413565b62000180846200055b565b8463ffffffff16600003620001a857604051631151410960e11b815260040160405180910390fd5b620001b3816200062c565b620001be82620009ff565b604080516000808252602082019092526200020b9185919062000204565b6040805180820190915260008082526020820152815260200190600190039081620001dc5790505b5062000acb565b505050505050505062001a12565b336001600160a01b03821603620002735760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b602081015160005b815181101562000354576000828281518110620002ed57620002ed6200186d565b602090810291909101015190506200030760028262000dfe565b156200034a576040516001600160a01b03821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b50600101620002cc565b50815160005b81518110156200040d5760008282815181106200037b576200037b6200186d565b6020026020010151905060006001600160a01b0316816001600160a01b031603620003b9576040516342bcdf7f60e11b815260040160405180910390fd5b620003c660028262000e1e565b506040516001600160a01b03821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a1506001016200035a565b50505050565b60005b8251811015620004b457620004528382815181106200043957620004396200186d565b6020026020010151600c62000e1e60201b90919060201c565b15620004ab578281815181106200046d576200046d6200186d565b60200260200101516001600160a01b03167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba2360405160405180910390a25b60010162000416565b5060005b81518110156200055657620004f4828281518110620004db57620004db6200186d565b6020026020010151600c62000dfe60201b90919060201c565b156200054d578181815181106200050f576200050f6200186d565b60200260200101516001600160a01b03167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f9160405160405180910390a25b600101620004b8565b505050565b60005b8151811015620006285760008282815181106200057f576200057f6200186d565b6020908102919091018101518051818301516001600160a01b0380831660008181526006875260409081902084518154868a018051929096166001600160a81b03199091168117600160a01b60ff9384160217909255825191825293519093169683019690965293955091939092917f08a5f7f5bb38a81d8e43aca13ecd76431dbf8816ae4699affff7b00b2fc1c464910160405180910390a25050508060010190506200055e565b5050565b60005b8151811015620006285760008282815181106200065057620006506200186d565b6020026020010151905060008383815181106200067157620006716200186d565b6020026020010151600001519050806001600160401b031660001480620006a85750602082015161018001516001600160401b0316155b80620006ce5750602082015161020001516001600160e01b031916630a04b54b60e21b14155b15620006f95760405163c35aa79d60e01b81526001600160401b038216600482015260240162000083565b816020015160086000836001600160401b03166001600160401b0316815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548161ffff021916908361ffff16021790555060408201518160000160036101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160076101000a81548163ffffffff021916908363ffffffff160217905550608082015181600001600b6101000a81548163ffffffff021916908363ffffffff16021790555060a082015181600001600f6101000a81548161ffff021916908361ffff16021790555060c08201518160000160116101000a81548163ffffffff021916908363ffffffff16021790555060e08201518160000160156101000a81548161ffff021916908361ffff1602179055506101008201518160000160176101000a81548161ffff021916908361ffff1602179055506101208201518160000160196101000a81548161ffff021916908361ffff16021790555061014082015181600001601b6101000a81548163ffffffff021916908363ffffffff1602179055506101608201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055506101808201518160010160046101000a8154816001600160401b0302191690836001600160401b031602179055506101a082015181600101600c6101000a8154816001600160401b0302191690836001600160401b031602179055506101c08201518160010160146101000a81548163ffffffff021916908363ffffffff1602179055506101e08201518160010160186101000a81548160ff0219169083151502179055506102008201518160010160196101000a81548163ffffffff021916908360e01c0217905550905050806001600160401b03167fd42d3a670a4f1ab5d8703efa22bb17041446365cfcfa33980ced685a080cf7cb8360200151604051620009ec919062001883565b60405180910390a250506001016200062f565b60005b81518110156200062857600082828151811062000a235762000a236200186d565b6020026020010151600001519050600083838151811062000a485762000a486200186d565b6020908102919091018101518101516001600160a01b03841660008181526007845260409081902080546001600160401b0319166001600160401b0385169081179091559051908152919350917fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d910160405180910390a2505060010162000a02565b60005b825181101562000d3857600083828151811062000aef5762000aef6200186d565b6020026020010151905060008160000151905060005b82602001515181101562000d295760008360200151828151811062000b2e5762000b2e6200186d565b602002602001015160200151905060008460200151838151811062000b575762000b576200186d565b60200260200101516000015190506020826080015163ffffffff16101562000bb05760808201516040516312766e0160e11b81526001600160a01b038316600482015263ffffffff909116602482015260440162000083565b6001600160401b03841660008181526009602090815260408083206001600160a01b0386168085529083529281902086518154938801518389015160608a015160808b015160a08c01511515600160901b0260ff60901b1963ffffffff928316600160701b021664ffffffffff60701b199383166a01000000000000000000000263ffffffff60501b1961ffff90961668010000000000000000029590951665ffffffffffff60401b19968416640100000000026001600160401b0319909b16939097169290921798909817939093169390931717919091161792909217909155519091907f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b59062000d16908690600060c08201905063ffffffff80845116835280602085015116602084015261ffff60408501511660408401528060608501511660608401528060808501511660808401525060a0830151151560a083015292915050565b60405180910390a3505060010162000b05565b50505080600101905062000ace565b5060005b81518110156200055657600082828151811062000d5d5762000d5d6200186d565b6020026020010151600001519050600083838151811062000d825762000d826200186d565b6020908102919091018101518101516001600160401b03841660008181526009845260408082206001600160a01b038516808452955280822080546001600160981b03191690555192945090917f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b9190a3505060010162000d3c565b600062000e15836001600160a01b03841662000e35565b90505b92915050565b600062000e15836001600160a01b03841662000f39565b6000818152600183016020526040812054801562000f2e57600062000e5c600183620019da565b855490915060009062000e7290600190620019da565b905081811462000ede57600086600001828154811062000e965762000e966200186d565b906000526020600020015490508087600001848154811062000ebc5762000ebc6200186d565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062000ef25762000ef2620019fc565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000e18565b600091505062000e18565b600081815260018301602052604081205462000f825750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000e18565b50600062000e18565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562000fc65762000fc662000f8b565b60405290565b60405160c081016001600160401b038111828210171562000fc65762000fc662000f8b565b60405161022081016001600160401b038111828210171562000fc65762000fc662000f8b565b604051601f8201601f191681016001600160401b038111828210171562001042576200104262000f8b565b604052919050565b80516001600160a01b03811681146200106257600080fd5b919050565b6000604082840312156200107a57600080fd5b6200108462000fa1565b82519091506001600160601b03811681146200109f57600080fd5b8152620010af602083016200104a565b602082015292915050565b60006001600160401b03821115620010d657620010d662000f8b565b5060051b60200190565b600082601f830112620010f257600080fd5b815160206200110b6200110583620010ba565b62001017565b8083825260208201915060208460051b8701019350868411156200112e57600080fd5b602086015b84811015620011555762001147816200104a565b835291830191830162001133565b509695505050505050565b805163ffffffff811681146200106257600080fd5b600082601f8301126200118757600080fd5b815160206200119a6200110583620010ba565b82815260609283028501820192828201919087851115620011ba57600080fd5b8387015b858110156200124d5780890382811215620011d95760008081fd5b620011e362000fa1565b620011ee836200104a565b8152604080601f1984011215620012055760008081fd5b6200120f62000fa1565b92506200121e8885016200104a565b835283015160ff81168114620012345760008081fd5b82880152808701919091528452928401928101620011be565b5090979650505050505050565b80516001600160401b03811681146200106257600080fd5b805161ffff811681146200106257600080fd5b805180151581146200106257600080fd5b600082601f830112620012a857600080fd5b81516020620012bb6200110583620010ba565b82815260059290921b84018101918181019086841115620012db57600080fd5b8286015b84811015620011555780516001600160401b03808211156200130057600080fd5b908801906040601f19838c0381018213156200131b57600080fd5b6200132562000fa1565b620013328986016200125a565b815282850151848111156200134657600080fd5b8086019550508c603f8601126200135c57600080fd5b888501519350620013716200110585620010ba565b84815260e09094028501830193898101908e8611156200139057600080fd5b958401955b858710156200146957868f0360e0811215620013b057600080fd5b620013ba62000fa1565b620013c5896200104a565b815260c08683011215620013d857600080fd5b620013e262000fcc565b9150620013f18d8a0162001160565b825262001400878a0162001160565b8d8301526200141260608a0162001272565b878301526200142460808a0162001160565b60608301526200143760a08a0162001160565b60808301526200144a60c08a0162001285565b60a0830152808d0191909152825260e09690960195908a019062001395565b828b015250875250505092840192508301620012df565b600082601f8301126200149257600080fd5b81516020620014a56200110583620010ba565b82815260069290921b84018101918181019086841115620014c557600080fd5b8286015b84811015620011555760408189031215620014e45760008081fd5b620014ee62000fa1565b620014f9826200104a565b8152620015088583016200125a565b81860152835291830191604001620014c9565b80516001600160e01b0319811681146200106257600080fd5b600082601f8301126200154657600080fd5b81516020620015596200110583620010ba565b82815261024092830285018201928282019190878511156200157a57600080fd5b8387015b858110156200124d5780890382811215620015995760008081fd5b620015a362000fa1565b620015ae836200125a565b815261022080601f1984011215620015c65760008081fd5b620015d062000ff1565b9250620015df88850162001285565b83526040620015f081860162001272565b8985015260606200160381870162001160565b82860152608091506200161882870162001160565b9085015260a06200162b86820162001160565b8286015260c091506200164082870162001272565b9085015260e06200165386820162001160565b8286015261010091506200166982870162001272565b908501526101206200167d86820162001272565b8286015261014091506200169382870162001272565b90850152610160620016a786820162001160565b828601526101809150620016bd82870162001160565b908501526101a0620016d18682016200125a565b828601526101c09150620016e78287016200125a565b908501526101e0620016fb86820162001160565b8286015261020091506200171182870162001285565b90850152620017228583016200151b565b90840152508087019190915284529284019281016200157e565b600080600080600080600080610120898b0312156200175a57600080fd5b620017668a8a62001067565b60408a01519098506001600160401b03808211156200178457600080fd5b620017928c838d01620010e0565b985060608b0151915080821115620017a957600080fd5b620017b78c838d01620010e0565b9750620017c760808c0162001160565b965060a08b0151915080821115620017de57600080fd5b620017ec8c838d0162001175565b955060c08b01519150808211156200180357600080fd5b620018118c838d0162001296565b945060e08b01519150808211156200182857600080fd5b620018368c838d0162001480565b93506101008b01519150808211156200184e57600080fd5b506200185d8b828c0162001534565b9150509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b81511515815261022081016020830151620018a4602084018261ffff169052565b506040830151620018bd604084018263ffffffff169052565b506060830151620018d6606084018263ffffffff169052565b506080830151620018ef608084018263ffffffff169052565b5060a08301516200190660a084018261ffff169052565b5060c08301516200191f60c084018263ffffffff169052565b5060e08301516200193660e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151909116908301526101408084015163ffffffff9081169184019190915261016080850151821690840152610180808501516001600160401b03908116918501919091526101a080860151909116908401526101c080850151909116908301526101e080840151151590830152610200928301516001600160e01b031916929091019190915290565b8181038181111562000e1857634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c05161532662001a6c6000396000818161067f01528181612001015261206a0152600081816102a00152818161123901526112b0015260008181610266015281816112d9015261134901526153266000f3fe608060405234801561001057600080fd5b50600436106101b85760003560e01c806382b49eb0116100f9578063ca64321311610097578063d8694ccd11610071578063d8694ccd14610784578063eedeb98214610797578063f2fde38b14610a3b578063ffdb4b3714610a4e57600080fd5b8063ca64321314610756578063cdc73d5114610769578063d02641a01461077157600080fd5b8063997fb26b116100d3578063997fb26b14610640578063a69c64c014610662578063a6c94a7314610675578063bf78e03f146106a957600080fd5b806382b49eb0146104955780638da5cb5b1461060557806391a2749a1461062d57600080fd5b8063407e108611610166578063514e8cff11610140578063514e8cff146103c4578063770e2dc41461046757806379ba50971461047a5780637afac3221461048257600080fd5b8063407e10861461035157806345ac924d146103645780634ab35b0b1461038457600080fd5b8063181f5a7711610197578063181f5a77146102de5780632451a627146103275780633937306f1461033c57600080fd5b806241e5be146101bd578063061877e3146101e357806306285c691461023c575b600080fd5b6101d06101cb366004613d4a565b610a96565b6040519081526020015b60405180910390f35b6102236101f1366004613d86565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205467ffffffffffffffff1690565b60405167ffffffffffffffff90911681526020016101da565b6040805180820182526000808252602091820152815180830183526bffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680825273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169284019283528451918252915190911691810191909152016101da565b61031a6040518060400160405280601781526020017f5072696365526567697374727920312e362e302d64657600000000000000000081525081565b6040516101da9190613e05565b61032f610b04565b6040516101da9190613e18565b61034f61034a366004613e72565b610b15565b005b61034f61035f366004613fce565b610de9565b6103776103723660046140e7565b610dfd565b6040516101da919061415c565b610397610392366004613d86565b610ec8565b6040517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101da565b61045a6103d23660046141ef565b60408051808201909152600080825260208201525067ffffffffffffffff166000908152600460209081526040918290208251808401909352547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811683527c0100000000000000000000000000000000000000000000000000000000900463ffffffff169082015290565b6040516101da919061420a565b61034f61047536600461431c565b610ed3565b61034f610ee9565b61034f610490366004614636565b610feb565b6105a56104a336600461469a565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091525067ffffffffffffffff91909116600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292815290829020825160c081018452905463ffffffff8082168352640100000000820481169383019390935268010000000000000000810461ffff16938201939093526a01000000000000000000008304821660608201526e01000000000000000000000000000083049091166080820152720100000000000000000000000000000000000090910460ff16151560a082015290565b6040516101da9190600060c08201905063ffffffff80845116835280602085015116602084015261ffff60408501511660408401528060608501511660608401528060808501511660808401525060a0830151151560a083015292915050565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101da565b61034f61063b3660046146c4565b610ffd565b61065361064e366004614755565b61100e565b6040516101da939291906147f8565b61034f610670366004614822565b6115c4565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101da565b6107226106b7366004613d86565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff93841681526006825282902082518084019093525492831682527401000000000000000000000000000000000000000090920460ff169181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260209283015160ff1692810192909252016101da565b61034f610764366004614917565b6115d5565b61032f6115e6565b61045a61077f366004613d86565b6115f2565b6101d0610792366004614b37565b6116ee565b610a2e6107a53660046141ef565b6040805161022081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101919091525067ffffffffffffffff908116600090815260086020908152604091829020825161022081018452815460ff8082161515835261ffff61010080840482169685019690965263ffffffff630100000084048116978501979097526701000000000000008304871660608501526b0100000000000000000000008304871660808501526f010000000000000000000000000000008304811660a0850152710100000000000000000000000000000000008304871660c085015275010000000000000000000000000000000000000000008304811660e0808601919091527701000000000000000000000000000000000000000000000084048216968501969096527901000000000000000000000000000000000000000000000000008084049091166101208501527b010000000000000000000000000000000000000000000000000000009092048616610140840152600190930154808616610160840152640100000000810487166101808401526c0100000000000000000000000081049096166101a08301527401000000000000000000000000000000000000000086049094166101c08201527801000000000000000000000000000000000000000000000000850490911615156101e08201527fffffffff0000000000000000000000000000000000000000000000000000000092909304901b1661020082015290565b6040516101da9190614b8c565b61034f610a49366004613d86565b611f1c565b610a61610a5c366004614cf8565b611f2d565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101da565b6000610aa1826120b8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610ac8856120b8565b610af0907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685614d51565b610afa9190614d68565b90505b9392505050565b6060610b106002612152565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3c57610b3c61215f565b6000610b488280614da3565b9050905060005b81811015610c92576000610b638480614da3565b83818110610b7357610b73614e0b565b905060400201803603810190610b899190614e66565b604080518082018252602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908116845263ffffffff42818116858701908152885173ffffffffffffffffffffffffffffffffffffffff9081166000908152600590975295889020965190519092167c010000000000000000000000000000000000000000000000000000000002919092161790935584519051935194955016927f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a92610c819290917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a250600101610b4f565b506000610ca26020840184614da3565b9050905060005b81811015610de3576000610cc06020860186614da3565b83818110610cd057610cd0614e0b565b905060400201803603810190610ce69190614ea3565b604080518082018252602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908116845263ffffffff42818116858701908152885167ffffffffffffffff9081166000908152600490975295889020965190519092167c010000000000000000000000000000000000000000000000000000000002919092161790935584519051935194955016927fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e92610dd29290917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a250600101610ca9565b50505050565b610df16121a4565b610dfa81612225565b50565b60608160008167ffffffffffffffff811115610e1b57610e1b613ead565b604051908082528060200260200182016040528015610e6057816020015b6040805180820190915260008082526020820152815260200190600190039081610e395790505b50905060005b82811015610ebd57610e98868683818110610e8357610e83614e0b565b905060200201602081019061077f9190613d86565b828281518110610eaa57610eaa614e0b565b6020908102919091010152600101610e66565b509150505b92915050565b6000610ec2826120b8565b610edb6121a4565b610ee58282612323565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610f6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610ff36121a4565b610ee5828261272f565b6110056121a4565b610dfa81612876565b600080606081611023878301604089016141ef565b67ffffffffffffffff811660009081526008602052604081209192505b61104e6101608a018a614ec6565b905081101561122157600088888381811061106b5761106b614e0b565b6110819260206040909202019081019150613d86565b905060006110936101608c018c614ec6565b848181106110a3576110a3614e0b565b90506020028101906110b59190614f2e565b6110c3906040810190614f6c565b915050602081118015611127575067ffffffffffffffff8516600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020546e010000000000000000000000000000900463ffffffff1681115b15611176576040517f36f536ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f66565b600184015461121790790100000000000000000000000000000000000000000000000000900460e01b6111ad6101608e018e614ec6565b868181106111bd576111bd614e0b565b90506020028101906111cf9190614f2e565b6111dd906020810190614f6c565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a0292505050565b5050600101611040565b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661126b6101408a016101208b01613d86565b73ffffffffffffffffffffffffffffffffffffffff16036112935787610140013594506112d7565b6112d46112a86101408a016101208b01613d86565b8961014001357f0000000000000000000000000000000000000000000000000000000000000000610a96565b94505b7f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16851115611376576040517f6a92a483000000000000000000000000000000000000000000000000000000008152600481018690526bffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152604401610f66565b60006115736113896101008b018b614f6c565b6040805161022081018252865460ff8082161515835261ffff6101008084048216602086015263ffffffff630100000085048116968601969096526701000000000000008404861660608601526b0100000000000000000000008404861660808601526f010000000000000000000000000000008404821660a0860152710100000000000000000000000000000000008404861660c086015275010000000000000000000000000000000000000000008404821660e0808701919091527701000000000000000000000000000000000000000000000085048316918601919091527901000000000000000000000000000000000000000000000000008085049092166101208601527b01000000000000000000000000000000000000000000000000000000909304851661014085015260018a015480861661016086015267ffffffffffffffff640100000000820481166101808701526c010000000000000000000000008204166101a08601527401000000000000000000000000000000000000000081049095166101c08501527801000000000000000000000000000000000000000000000000850490911615156101e08401527fffffffff000000000000000000000000000000000000000000000000000000009304901b91909116610200820152612a54565b9050806020015194508585826040516020016115a391908151815260209182015115159181019190915260400190565b60405160208183030381529060405295509550955050505093509350939050565b6115cc6121a4565b610dfa81612b0f565b6115dd6121a4565b610dfa81612bf9565b6060610b10600c612152565b604080518082019091526000808252602082015273ffffffffffffffffffffffffffffffffffffffff8281166000908152600660209081526040918290208251808401909352549283168083527401000000000000000000000000000000000000000090930460ff1690820152906116e557505073ffffffffffffffffffffffffffffffffffffffff166000908152600560209081526040918290208251808401909352547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811683527c0100000000000000000000000000000000000000000000000000000000900463ffffffff169082015290565b610afd81613012565b67ffffffffffffffff82166000908152600860205260408120805460ff1661174e576040517f99ac52f200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff85166004820152602401610f66565b600061175d6040850185614da3565b6040805161022081018252855460ff8082161515835261ffff610100808404821660208087019190915263ffffffff630100000086048116978701979097526701000000000000008504871660608701526b0100000000000000000000008504871660808701526f010000000000000000000000000000008504831660a0870152710100000000000000000000000000000000008504871660c087015275010000000000000000000000000000000000000000008504831660e0808801919091527701000000000000000000000000000000000000000000000086048416928701929092527901000000000000000000000000000000000000000000000000008086049093166101208701527b01000000000000000000000000000000000000000000000000000000909404861661014086015260018a015480871661016087015267ffffffffffffffff640100000000820481166101808801526c010000000000000000000000008204166101a08701527401000000000000000000000000000000000000000081049096166101c08601527801000000000000000000000000000000000000000000000000860490921615156101e08501527fffffffff000000000000000000000000000000000000000000000000000000009404901b929092166102008201529193506119a1925061195a90870187614f6c565b9050836119678880614f6c565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061325592505050565b60006007816119b66080880160608901613d86565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160009081205467ffffffffffffffff169150819003611a4d57611a026080860160608701613d86565b6040517fa7499d2000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610f66565b600080611a69611a636080890160608a01613d86565b89611f2d565b9092509050600080808615611aab57611a9f8b611a8c60808d0160608e01613d86565b87611a9a60408f018f614da3565b6132ff565b91945092509050611ae2565b6001880154611adf9074010000000000000000000000000000000000000000900463ffffffff16662386f26fc10000614d51565b92505b875460009077010000000000000000000000000000000000000000000000900461ffff1615611b3d57611b3a8c6dffffffffffffffffffffffffffff607088901c16611b3160208f018f614f6c565b90508b86613635565b90505b885460009063ffffffff8516906f01000000000000000000000000000000900461ffff16611b6e60208f018f614f6c565b611b79929150614d51565b8b54611b9a91906b010000000000000000000000900463ffffffff16614fd1565b611ba49190614fd1565b9050611e61611bb660808e018e614f6c565b8c604051806102200160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900461ffff1661ffff1661ffff1681526020016000820160039054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160079054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600b9054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600f9054906101000a900461ffff1661ffff1661ffff1681526020016000820160119054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160159054906101000a900461ffff1661ffff1661ffff1681526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160018201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160189054906101000a900460ff161515151581526020016001820160199054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050612a54565b51611e6c9082614fd1565b60018b01549091506000906c01000000000000000000000000900467ffffffffffffffff16611eab836dffffffffffffffffffffffffffff8a16614d51565b611eb59190614d51565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff88168382611eec67ffffffffffffffff8d168a614d51565b611ef69190614fd1565b611f009190614fd1565b611f0a9190614d68565b9e9d5050505050505050505050505050565b611f246121a4565b610dfa8161373b565b67ffffffffffffffff811660009081526004602090815260408083208151808301909252547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c0100000000000000000000000000000000000000000000000000000000900463ffffffff1691810182905282918203611fe5576040517f2e59db3a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff85166004820152602401610f66565b6000816020015163ffffffff1642611ffd9190614fe4565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681111561209e576040517ff08bcb3e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8616600482015263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260448101829052606401610f66565b6120a7866120b8565b9151919350909150505b9250929050565b6000806120c4836115f2565b9050806020015163ffffffff16600014806120fc575080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b1561214b576040517f06439c6b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f66565b5192915050565b60606000610afd83613830565b61216a60023361388c565b6121a2576040517fd86ad9cf000000000000000000000000000000000000000000000000000000008152336004820152602401610f66565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610f66565b60005b8151811015610ee557600082828151811061224557612245614e0b565b60209081029190910181015180518183015173ffffffffffffffffffffffffffffffffffffffff80831660008181526006875260409081902084518154868a018051929096167fffffffffffffffffffffff00000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000060ff9384160217909255825191825293519093169683019690965293955091939092917f08a5f7f5bb38a81d8e43aca13ecd76431dbf8816ae4699affff7b00b2fc1c464910160405180910390a2505050806001019050612228565b60005b825181101561264657600083828151811061234357612343614e0b565b6020026020010151905060008160000151905060005b8260200151518110156126385760008360200151828151811061237e5761237e614e0b565b60200260200101516020015190506000846020015183815181106123a4576123a4614e0b565b60200260200101516000015190506020826080015163ffffffff1610156124215760808201516040517f24ecdc0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015263ffffffff9091166024820152604401610f66565b67ffffffffffffffff8416600081815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168085529083529281902086518154938801518389015160608a015160808b015160a08c015115157201000000000000000000000000000000000000027fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff63ffffffff9283166e01000000000000000000000000000002167fffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff9383166a0100000000000000000000027fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff61ffff9096166801000000000000000002959095167fffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff968416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909b16939097169290921798909817939093169390931717919091161792909217909155519091907f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b590612626908690600060c08201905063ffffffff80845116835280602085015116602084015261ffff60408501511660408401528060608501511660608401528060808501511660808401525060a0830151151560a083015292915050565b60405180910390a35050600101612359565b505050806001019050612326565b5060005b815181101561272a57600082828151811061266757612667614e0b565b6020026020010151600001519050600083838151811061268957612689614e0b565b60209081029190910181015181015167ffffffffffffffff8416600081815260098452604080822073ffffffffffffffffffffffffffffffffffffffff8516808452955280822080547fffffffffffffffffffffffffff000000000000000000000000000000000000001690555192945090917f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b9190a3505060010161264a565b505050565b60005b82518110156127d25761276883828151811061275057612750614e0b565b6020026020010151600c6138bb90919063ffffffff16565b156127ca5782818151811061277f5761277f614e0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba2360405160405180910390a25b600101612732565b5060005b815181101561272a5761280c8282815181106127f4576127f4614e0b565b6020026020010151600c6138dd90919063ffffffff16565b1561286e5781818151811061282357612823614e0b565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f9160405160405180910390a25b6001016127d6565b602081015160005b815181101561291157600082828151811061289b5761289b614e0b565b602002602001015190506128b98160026138dd90919063ffffffff16565b156129085760405173ffffffffffffffffffffffffffffffffffffffff821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b5060010161287e565b50815160005b8151811015610de357600082828151811061293457612934614e0b565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129a4576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129af6002826138bb565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a150600101612917565b7fd7ed2ad4000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610ee55761272a816138ff565b60408051808201909152600080825260208201526000612a7a858585610180015161395a565b9050826060015163ffffffff1681600001511115612ac4576040517f4c4fc93a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826101e001518015612ad857508060200151155b15610afa576040517fee433e9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8151811015610ee5576000828281518110612b2f57612b2f614e0b565b60200260200101516000015190506000838381518110612b5157612b51614e0b565b60209081029190910181015181015173ffffffffffffffffffffffffffffffffffffffff841660008181526007845260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff85169081179091559051908152919350917fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d910160405180910390a25050600101612b12565b60005b8151811015610ee5576000828281518110612c1957612c19614e0b565b602002602001015190506000838381518110612c3757612c37614e0b565b60200260200101516000015190508067ffffffffffffffff1660001480612c6f57506020820151610180015167ffffffffffffffff16155b80612cc55750602082015161020001517fffffffff00000000000000000000000000000000000000000000000000000000167f2812d52c0000000000000000000000000000000000000000000000000000000014155b15612d08576040517fc35aa79d00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff82166004820152602401610f66565b8160200151600860008367ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548161ffff021916908361ffff16021790555060408201518160000160036101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160076101000a81548163ffffffff021916908363ffffffff160217905550608082015181600001600b6101000a81548163ffffffff021916908363ffffffff16021790555060a082015181600001600f6101000a81548161ffff021916908361ffff16021790555060c08201518160000160116101000a81548163ffffffff021916908363ffffffff16021790555060e08201518160000160156101000a81548161ffff021916908361ffff1602179055506101008201518160000160176101000a81548161ffff021916908361ffff1602179055506101208201518160000160196101000a81548161ffff021916908361ffff16021790555061014082015181600001601b6101000a81548163ffffffff021916908363ffffffff1602179055506101608201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055506101808201518160010160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101a082015181600101600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101c08201518160010160146101000a81548163ffffffff021916908363ffffffff1602179055506101e08201518160010160186101000a81548160ff0219169083151502179055506102008201518160010160196101000a81548163ffffffff021916908360e01c02179055509050508067ffffffffffffffff167fd42d3a670a4f1ab5d8703efa22bb17041446365cfcfa33980ced685a080cf7cb83602001516040516130009190614b8c565b60405180910390a25050600101612bfc565b604080518082019091526000808252602082015260008260000151905060008173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa15801561307c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130a09190615011565b50505091505060008112156130e1576040517f10cb51d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050600085602001518473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015613138573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315c9190615061565b613166919061507e565b905060248160ff16111561319b5761317f602482615097565b61318a90600a6151d0565b6131949083614d68565b91506131be565b6131a6816024615097565b6131b190600a6151d0565b6131bb9083614d51565b91505b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff821115613214576040517f10cb51d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080518082019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116815263ffffffff42166020820152949350505050565b836040015163ffffffff168311156132ae5760408085015190517f8693378900000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260248101849052604401610f66565b836020015161ffff168211156132f0576040517f4c056b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610de384610200015182612a02565b6000808083815b8181101561362857600087878381811061332257613322614e0b565b90506040020180360381019061333891906151df565b67ffffffffffffffff8c166000908152600960209081526040808320845173ffffffffffffffffffffffffffffffffffffffff168452825291829020825160c081018452905463ffffffff8082168352640100000000820481169383019390935268010000000000000000810461ffff16938201939093526a01000000000000000000008304821660608201526e01000000000000000000000000000083049091166080820152720100000000000000000000000000000000000090910460ff16151560a08201819052919250906134b75767ffffffffffffffff8c166000908152600860205260409020805461345790790100000000000000000000000000000000000000000000000000900461ffff16662386f26fc10000614d51565b6134619089614fd1565b8154909850613495907b01000000000000000000000000000000000000000000000000000000900463ffffffff1688615218565b60018201549097506134ad9063ffffffff1687615218565b9550505050613620565b604081015160009061ffff16156135705760008c73ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff161461351357835161350c906120b8565b9050613516565b508a5b620186a0836040015161ffff166135588660200151847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613b0390919063ffffffff16565b6135629190614d51565b61356c9190614d68565b9150505b606082015161357f9088615218565b96508160800151866135919190615218565b82519096506000906135b09063ffffffff16662386f26fc10000614d51565b9050808210156135cf576135c4818a614fd1565b985050505050613620565b6000836020015163ffffffff16662386f26fc100006135ee9190614d51565b90508083111561360e57613602818b614fd1565b99505050505050613620565b613618838b614fd1565b995050505050505b600101613306565b5050955095509592505050565b60008063ffffffff831661364a60e086614d51565b613656876101c0614fd1565b6136609190614fd1565b61366a9190614fd1565b67ffffffffffffffff8816600090815260086020526040812080549293509171010000000000000000000000000000000000810463ffffffff16906136cc907501000000000000000000000000000000000000000000900461ffff1685614d51565b6136d69190614fd1565b825490915077010000000000000000000000000000000000000000000000900461ffff166137146dffffffffffffffffffffffffffff8a1683614d51565b61371e9190614d51565b61372e90655af3107a4000614d51565b9998505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff8216036137ba576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610f66565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60608160000180548060200260200160405190810160405280929190818152602001828054801561388057602002820191906000526020600020905b81548152602001906001019080831161386c575b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610afd565b6000610afd8373ffffffffffffffffffffffffffffffffffffffff8416613b40565b6000610afd8373ffffffffffffffffffffffffffffffffffffffff8416613b8f565b6000815160201461393e57816040517f8d666f60000000000000000000000000000000000000000000000000000000008152600401610f669190613e05565b610ec2828060200190518101906139559190615235565b613c89565b6040805180820190915260008082526020820152600083900361399b57506040805180820190915267ffffffffffffffff8216815260006020820152610afd565b60006139a7848661524e565b905060006139b88560048189615294565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050507fffffffff0000000000000000000000000000000000000000000000000000000082167fe7e230f00000000000000000000000000000000000000000000000000000000001613a555780806020019051810190613a4c91906152be565b92505050610afd565b7f6859a837000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601613ad157604051806040016040528082806020019051810190613abd9190615235565b815260006020909101529250610afd915050565b6040517f5247fdce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000670de0b6b3a7640000613b36837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616614d51565b610afd9190614d68565b6000818152600183016020526040812054613b8757508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ec2565b506000610ec2565b60008181526001830160205260408120548015613c78576000613bb3600183614fe4565b8554909150600090613bc790600190614fe4565b9050818114613c2c576000866000018281548110613be757613be7614e0b565b9060005260206000200154905080876000018481548110613c0a57613c0a614e0b565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613c3d57613c3d6152ea565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610ec2565b6000915050610ec2565b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff821180613cae575061040082105b15613d1d57604080516020810184905201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f8d666f60000000000000000000000000000000000000000000000000000000008252610f6691600401613e05565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114613d4557600080fd5b919050565b600080600060608486031215613d5f57600080fd5b613d6884613d21565b925060208401359150613d7d60408501613d21565b90509250925092565b600060208284031215613d9857600080fd5b610afd82613d21565b6000815180845260005b81811015613dc757602081850181015186830182015201613dab565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610afd6020830184613da1565b6020808252825182820181905260009190848201906040850190845b81811015613e6657835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613e34565b50909695505050505050565b600060208284031215613e8457600080fd5b813567ffffffffffffffff811115613e9b57600080fd5b820160408185031215610afd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613eff57613eff613ead565b60405290565b60405160c0810167ffffffffffffffff81118282101715613eff57613eff613ead565b604051610220810167ffffffffffffffff81118282101715613eff57613eff613ead565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff81118282101715613f9357613f93613ead565b604052919050565b600067ffffffffffffffff821115613fb557613fb5613ead565b5060051b60200190565b60ff81168114610dfa57600080fd5b60006020808385031215613fe157600080fd5b823567ffffffffffffffff811115613ff857600080fd5b8301601f8101851361400957600080fd5b803561401c61401782613f9b565b613f4c565b8181526060918202830184019184820191908884111561403b57600080fd5b938501935b838510156140db57848903818112156140595760008081fd5b614061613edc565b61406a87613d21565b81526040807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08401121561409e5760008081fd5b6140a6613edc565b92506140b3898901613d21565b83528701356140c181613fbf565b828901528088019190915283529384019391850191614040565b50979650505050505050565b600080602083850312156140fa57600080fd5b823567ffffffffffffffff8082111561411257600080fd5b818501915085601f83011261412657600080fd5b81358181111561413557600080fd5b8660208260051b850101111561414a57600080fd5b60209290920196919550909350505050565b602080825282518282018190526000919060409081850190868401855b828110156141ca576141ba84835180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16825260209081015163ffffffff16910152565b9284019290850190600101614179565b5091979650505050505050565b803567ffffffffffffffff81168114613d4557600080fd5b60006020828403121561420157600080fd5b610afd826141d7565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260208083015163ffffffff169082015260408101610ec2565b803563ffffffff81168114613d4557600080fd5b803561ffff81168114613d4557600080fd5b8015158114610dfa57600080fd5b8035613d458161426b565b600082601f83011261429557600080fd5b813560206142a561401783613f9b565b82815260069290921b840181019181810190868411156142c457600080fd5b8286015b8481101561431157604081890312156142e15760008081fd5b6142e9613edc565b6142f2826141d7565b81526142ff858301613d21565b818601528352918301916040016142c8565b509695505050505050565b6000806040838503121561432f57600080fd5b67ffffffffffffffff8335111561434557600080fd5b83601f84358501011261435757600080fd5b6143676140178435850135613f9b565b8335840180358083526020808401939260059290921b9091010186101561438d57600080fd5b602085358601015b85358601803560051b0160200181101561459a5767ffffffffffffffff813511156143bf57600080fd5b8035863587010160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828a030112156143f857600080fd5b614400613edc565b61440c602083016141d7565b815267ffffffffffffffff6040830135111561442757600080fd5b88603f60408401358401011261443c57600080fd5b6144526140176020604085013585010135613f9b565b6020604084810135850182810135808552928401939260e00201018b101561447957600080fd5b6040808501358501015b6040858101358601602081013560e002010181101561457b5760e0818d0312156144ac57600080fd5b6144b4613edc565b6144bd82613d21565b815260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838f030112156144f157600080fd5b6144f9613f05565b61450560208401614245565b815261451360408401614245565b602082015261452460608401614259565b604082015261453560808401614245565b606082015261454660a08401614245565b608082015261455860c084013561426b565b60c083013560a0820152602082810191909152908452929092019160e001614483565b5080602084015250508085525050602083019250602081019050614395565b5092505067ffffffffffffffff602084013511156145b757600080fd5b6145c78460208501358501614284565b90509250929050565b600082601f8301126145e157600080fd5b813560206145f161401783613f9b565b8083825260208201915060208460051b87010193508684111561461357600080fd5b602086015b848110156143115761462981613d21565b8352918301918301614618565b6000806040838503121561464957600080fd5b823567ffffffffffffffff8082111561466157600080fd5b61466d868387016145d0565b9350602085013591508082111561468357600080fd5b50614690858286016145d0565b9150509250929050565b600080604083850312156146ad57600080fd5b6146b6836141d7565b91506145c760208401613d21565b6000602082840312156146d657600080fd5b813567ffffffffffffffff808211156146ee57600080fd5b908301906040828603121561470257600080fd5b61470a613edc565b82358281111561471957600080fd5b614725878286016145d0565b82525060208301358281111561473a57600080fd5b614746878286016145d0565b60208301525095945050505050565b60008060006040848603121561476a57600080fd5b833567ffffffffffffffff8082111561478257600080fd5b90850190610180828803121561479757600080fd5b909350602085013590808211156147ad57600080fd5b818601915086601f8301126147c157600080fd5b8135818111156147d057600080fd5b8760208260061b85010111156147e557600080fd5b6020830194508093505050509250925092565b83815282151560208201526060604082015260006148196060830184613da1565b95945050505050565b6000602080838503121561483557600080fd5b823567ffffffffffffffff81111561484c57600080fd5b8301601f8101851361485d57600080fd5b803561486b61401782613f9b565b81815260069190911b8201830190838101908783111561488a57600080fd5b928401925b828410156148dc57604084890312156148a85760008081fd5b6148b0613edc565b6148b985613d21565b81526148c68686016141d7565b818701528252604093909301929084019061488f565b979650505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613d4557600080fd5b6000602080838503121561492a57600080fd5b823567ffffffffffffffff81111561494157600080fd5b8301601f8101851361495257600080fd5b803561496061401782613f9b565b818152610240918202830184019184820191908884111561498057600080fd5b938501935b838510156140db578489038181121561499e5760008081fd5b6149a6613edc565b6149af876141d7565b8152610220807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840112156149e45760008081fd5b6149ec613f28565b92506149f9898901614279565b83526040614a08818a01614259565b8a8501526060614a19818b01614245565b8286015260809150614a2c828b01614245565b9085015260a0614a3d8a8201614245565b8286015260c09150614a50828b01614259565b9085015260e0614a618a8201614245565b828601526101009150614a75828b01614259565b90850152610120614a878a8201614259565b828601526101409150614a9b828b01614259565b90850152610160614aad8a8201614245565b828601526101809150614ac1828b01614245565b908501526101a0614ad38a82016141d7565b828601526101c09150614ae7828b016141d7565b908501526101e0614af98a8201614245565b828601526102009150614b0d828b01614279565b90850152614b1c8983016148e7565b90840152508088019190915283529384019391850191614985565b60008060408385031215614b4a57600080fd5b614b53836141d7565b9150602083013567ffffffffffffffff811115614b6f57600080fd5b830160a08186031215614b8157600080fd5b809150509250929050565b81511515815261022081016020830151614bac602084018261ffff169052565b506040830151614bc4604084018263ffffffff169052565b506060830151614bdc606084018263ffffffff169052565b506080830151614bf4608084018263ffffffff169052565b5060a0830151614c0a60a084018261ffff169052565b5060c0830151614c2260c084018263ffffffff169052565b5060e0830151614c3860e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151909116908301526101408084015163ffffffff90811691840191909152610160808501518216908401526101808085015167ffffffffffffffff908116918501919091526101a080860151909116908401526101c080850151909116908301526101e080840151151590830152610200808401517fffffffff000000000000000000000000000000000000000000000000000000008116828501525b505092915050565b60008060408385031215614d0b57600080fd5b614d1483613d21565b91506145c7602084016141d7565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610ec257610ec2614d22565b600082614d9e577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614dd857600080fd5b83018035915067ffffffffffffffff821115614df357600080fd5b6020019150600681901b36038213156120b157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168114613d4557600080fd5b600060408284031215614e7857600080fd5b614e80613edc565b614e8983613d21565b8152614e9760208401614e3a565b60208201529392505050565b600060408284031215614eb557600080fd5b614ebd613edc565b614e89836141d7565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614efb57600080fd5b83018035915067ffffffffffffffff821115614f1657600080fd5b6020019150600581901b36038213156120b157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81833603018112614f6257600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614fa157600080fd5b83018035915067ffffffffffffffff821115614fbc57600080fd5b6020019150368190038213156120b157600080fd5b80820180821115610ec257610ec2614d22565b81810381811115610ec257610ec2614d22565b805169ffffffffffffffffffff81168114613d4557600080fd5b600080600080600060a0868803121561502957600080fd5b61503286614ff7565b945060208601519350604086015192506060860151915061505560808701614ff7565b90509295509295909350565b60006020828403121561507357600080fd5b8151610afd81613fbf565b60ff8181168382160190811115610ec257610ec2614d22565b60ff8281168282160390811115610ec257610ec2614d22565b600181815b8085111561510957817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156150ef576150ef614d22565b808516156150fc57918102915b93841c93908002906150b5565b509250929050565b60008261512057506001610ec2565b8161512d57506000610ec2565b8160018114615143576002811461514d57615169565b6001915050610ec2565b60ff84111561515e5761515e614d22565b50506001821b610ec2565b5060208310610133831016604e8410600b841016171561518c575081810a610ec2565b61519683836150b0565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048211156151c8576151c8614d22565b029392505050565b6000610afd60ff841683615111565b6000604082840312156151f157600080fd5b6151f9613edc565b61520283613d21565b8152602083013560208201528091505092915050565b63ffffffff818116838216019080821115613c8257613c82614d22565b60006020828403121561524757600080fd5b5051919050565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015614cf05760049490940360031b84901b1690921692915050565b600080858511156152a457600080fd5b838611156152b157600080fd5b5050820193919092039150565b6000604082840312156152d057600080fd5b6152d8613edc565b825181526020830151614e978161426b565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", + ABI: "[{\"inputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"}],\"internalType\":\"structPriceRegistry.StaticConfig\",\"name\":\"staticConfig\",\"type\":\"tuple\"},{\"internalType\":\"address[]\",\"name\":\"priceUpdaters\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"feeTokens\",\"type\":\"address[]\"},{\"internalType\":\"uint32\",\"name\":\"stalenessThreshold\",\"type\":\"uint32\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"feedConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenPriceFeedUpdate[]\",\"name\":\"tokenPriceFeeds\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigSingleTokenArgs[]\",\"name\":\"tokenTransferFeeConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"internalType\":\"structPriceRegistry.PremiumMultiplierWeiPerEthArgs[]\",\"name\":\"premiumMultiplierWeiPerEthArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfigArgs[]\",\"name\":\"destChainConfigArgs\",\"type\":\"tuple[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"chain\",\"type\":\"uint64\"}],\"name\":\"ChainNotSupported\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"DataFeedValueOutOfUint224Range\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"DestinationChainNotEnabled\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ExtraArgOutOfOrderExecutionMustBeTrue\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"}],\"name\":\"InvalidDestBytesOverhead\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"InvalidDestChainConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"encodedAddress\",\"type\":\"bytes\"}],\"name\":\"InvalidEVMAddress\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidExtraArgsTag\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStalenessThreshold\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"InvalidStaticConfig\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"msgFeeJuels\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint256\"}],\"name\":\"MessageFeeTooHigh\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"MessageGasLimitTooHigh\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"maxSize\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"actualSize\",\"type\":\"uint256\"}],\"name\":\"MessageTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"NotAFeeToken\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"SourceTokenDataTooLarge\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint256\",\"name\":\"threshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"timePassed\",\"type\":\"uint256\"}],\"name\":\"StaleGasPrice\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenNotSupported\",\"type\":\"error\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"UnauthorizedCaller\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"UnsupportedNumberOfTokens\",\"type\":\"error\"},{\"inputs\":[],\"name\":\"ZeroAddressNotAllowed\",\"type\":\"error\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"}],\"name\":\"AuthorizedCallerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"DestChainAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"indexed\":false,\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"name\":\"DestChainDynamicConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"}],\"name\":\"FeeTokenRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"OwnershipTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"name\":\"PremiumMultiplierWeiPerEthUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"indexed\":false,\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"priceFeedConfig\",\"type\":\"tuple\"}],\"name\":\"PriceFeedPerTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"priceUpdater\",\"type\":\"address\"}],\"name\":\"PriceUpdaterRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"priceUpdater\",\"type\":\"address\"}],\"name\":\"PriceUpdaterSet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"TokenTransferFeeConfigDeleted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"indexed\":false,\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"name\":\"TokenTransferFeeConfigUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"UsdPerTokenUpdated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint64\",\"name\":\"destChain\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"timestamp\",\"type\":\"uint256\"}],\"name\":\"UsdPerUnitGasUpdated\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"acceptOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address[]\",\"name\":\"addedCallers\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"removedCallers\",\"type\":\"address[]\"}],\"internalType\":\"structAuthorizedCallers.AuthorizedCallerArgs\",\"name\":\"authorizedCallerArgs\",\"type\":\"tuple\"}],\"name\":\"applyAuthorizedCallerUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"dynamicConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfigArgs[]\",\"name\":\"destChainConfigArgs\",\"type\":\"tuple[]\"}],\"name\":\"applyDestChainConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"feeTokensToAdd\",\"type\":\"address[]\"},{\"internalType\":\"address[]\",\"name\":\"feeTokensToRemove\",\"type\":\"address[]\"}],\"name\":\"applyFeeTokensUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"internalType\":\"structPriceRegistry.PremiumMultiplierWeiPerEthArgs[]\",\"name\":\"premiumMultiplierWeiPerEthArgs\",\"type\":\"tuple[]\"}],\"name\":\"applyPremiumMultiplierWeiPerEthUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigSingleTokenArgs[]\",\"name\":\"tokenTransferFeeConfigs\",\"type\":\"tuple[]\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigArgs[]\",\"name\":\"tokenTransferFeeConfigArgs\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfigRemoveArgs[]\",\"name\":\"tokensToUseDefaultFeeConfigs\",\"type\":\"tuple[]\"}],\"name\":\"applyTokenTransferFeeConfigUpdates\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"fromToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"fromTokenAmount\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"toToken\",\"type\":\"address\"}],\"name\":\"convertTokenAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getAllAuthorizedCallers\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"getDestChainDynamicConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"},{\"internalType\":\"uint16\",\"name\":\"maxNumberOfTokensPerMsg\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"maxDataBytes\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxPerMsgGasLimit\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerPayloadByte\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destDataAvailabilityOverheadGas\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"destGasPerDataAvailabilityByte\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"destDataAvailabilityMultiplierBps\",\"type\":\"uint16\"},{\"internalType\":\"uint16\",\"name\":\"defaultTokenFeeUSDCents\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"defaultTokenDestBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint64\",\"name\":\"defaultTxGasLimit\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"gasMultiplierWeiPerEth\",\"type\":\"uint64\"},{\"internalType\":\"uint32\",\"name\":\"networkFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"enforceOutOfOrder\",\"type\":\"bool\"},{\"internalType\":\"bytes4\",\"name\":\"chainFamilySelector\",\"type\":\"bytes4\"}],\"internalType\":\"structPriceRegistry.DestChainDynamicConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"getDestinationChainGasPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"value\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"internalType\":\"structInternal.TimestampedPackedUint224\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getPremiumMultiplierWeiPerEth\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"premiumMultiplierWeiPerEth\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStalenessThreshold\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getStaticConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint96\",\"name\":\"maxFeeJuelsPerMsg\",\"type\":\"uint96\"},{\"internalType\":\"address\",\"name\":\"linkToken\",\"type\":\"address\"}],\"internalType\":\"structPriceRegistry.StaticConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"}],\"name\":\"getTokenAndGasPrices\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"tokenPrice\",\"type\":\"uint224\"},{\"internalType\":\"uint224\",\"name\":\"gasPriceValue\",\"type\":\"uint224\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenPrice\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"value\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"internalType\":\"structInternal.TimestampedPackedUint224\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenPriceFeedConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"tokens\",\"type\":\"address[]\"}],\"name\":\"getTokenPrices\",\"outputs\":[{\"components\":[{\"internalType\":\"uint224\",\"name\":\"value\",\"type\":\"uint224\"},{\"internalType\":\"uint32\",\"name\":\"timestamp\",\"type\":\"uint32\"}],\"internalType\":\"structInternal.TimestampedPackedUint224[]\",\"name\":\"\",\"type\":\"tuple[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getTokenTransferFeeConfig\",\"outputs\":[{\"components\":[{\"internalType\":\"uint32\",\"name\":\"minFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"maxFeeUSDCents\",\"type\":\"uint32\"},{\"internalType\":\"uint16\",\"name\":\"deciBps\",\"type\":\"uint16\"},{\"internalType\":\"uint32\",\"name\":\"destGasOverhead\",\"type\":\"uint32\"},{\"internalType\":\"uint32\",\"name\":\"destBytesOverhead\",\"type\":\"uint32\"},{\"internalType\":\"bool\",\"name\":\"isEnabled\",\"type\":\"bool\"}],\"internalType\":\"structPriceRegistry.TokenTransferFeeConfig\",\"name\":\"tokenTransferFeeConfig\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"}],\"internalType\":\"structClient.EVM2AnyMessage\",\"name\":\"message\",\"type\":\"tuple\"}],\"name\":\"getValidatedFee\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"bytes32\",\"name\":\"messageId\",\"type\":\"bytes32\"},{\"internalType\":\"uint64\",\"name\":\"sourceChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"sequenceNumber\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"internalType\":\"structInternal.RampMessageHeader\",\"name\":\"header\",\"type\":\"tuple\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"receiver\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraArgs\",\"type\":\"bytes\"},{\"internalType\":\"address\",\"name\":\"feeToken\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"feeTokenAmount\",\"type\":\"uint256\"},{\"components\":[{\"internalType\":\"bytes\",\"name\":\"sourcePoolAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"destTokenAddress\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"extraData\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structInternal.RampTokenAmount[]\",\"name\":\"tokenAmounts\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.EVM2AnyRampMessage\",\"name\":\"message\",\"type\":\"tuple\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"internalType\":\"structClient.EVMTokenAmount[]\",\"name\":\"sourceTokenAmounts\",\"type\":\"tuple[]\"}],\"name\":\"getValidatedRampMessageParams\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"msgFeeJuels\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"isOutOfOrderExecution\",\"type\":\"bool\"},{\"internalType\":\"bytes\",\"name\":\"convertedExtraArgs\",\"type\":\"bytes\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getValidatedTokenPrice\",\"outputs\":[{\"internalType\":\"uint224\",\"name\":\"\",\"type\":\"uint224\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"typeAndVersion\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"internalType\":\"uint224\",\"name\":\"usdPerToken\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.TokenPriceUpdate[]\",\"name\":\"tokenPriceUpdates\",\"type\":\"tuple[]\"},{\"components\":[{\"internalType\":\"uint64\",\"name\":\"destChainSelector\",\"type\":\"uint64\"},{\"internalType\":\"uint224\",\"name\":\"usdPerUnitGas\",\"type\":\"uint224\"}],\"internalType\":\"structInternal.GasPriceUpdate[]\",\"name\":\"gasPriceUpdates\",\"type\":\"tuple[]\"}],\"internalType\":\"structInternal.PriceUpdates\",\"name\":\"priceUpdates\",\"type\":\"tuple\"}],\"name\":\"updatePrices\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"components\":[{\"internalType\":\"address\",\"name\":\"sourceToken\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"dataFeedAddress\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"internalType\":\"structIPriceRegistry.TokenPriceFeedConfig\",\"name\":\"feedConfig\",\"type\":\"tuple\"}],\"internalType\":\"structPriceRegistry.TokenPriceFeedUpdate[]\",\"name\":\"tokenPriceFeedUpdates\",\"type\":\"tuple[]\"}],\"name\":\"updateTokenPriceFeeds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]", + Bin: "0x60e06040523480156200001157600080fd5b5060405162006eba38038062006eba8339810160408190526200003491620017ba565b8633806000816200008c5760405162461bcd60e51b815260206004820152601860248201527f43616e6e6f7420736574206f776e657220746f207a65726f000000000000000060448201526064015b60405180910390fd5b600080546001600160a01b0319166001600160a01b0384811691909117909155811615620000bf57620000bf8162000219565b5050604080518082018252838152815160008152602080820190935291810191909152620000ee9150620002c4565b5060208801516001600160a01b0316158062000112575087516001600160601b0316155b15620001315760405163d794ef9560e01b815260040160405180910390fd5b6020888101516001600160a01b031660a05288516001600160601b031660805263ffffffff861660c052604080516000815291820190526200017590879062000413565b62000180846200055b565b8463ffffffff16600003620001a857604051631151410960e11b815260040160405180910390fd5b620001b3816200062c565b620001be8262000a7d565b604080516000808252602082019092526200020b9185919062000204565b6040805180820190915260008082526020820152815260200190600190039081620001dc5790505b5062000b49565b505050505050505062001a90565b336001600160a01b03821603620002735760405162461bcd60e51b815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000604482015260640162000083565b600180546001600160a01b0319166001600160a01b0383811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b602081015160005b815181101562000354576000828281518110620002ed57620002ed620018eb565b602090810291909101015190506200030760028262000e7c565b156200034a576040516001600160a01b03821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b50600101620002cc565b50815160005b81518110156200040d5760008282815181106200037b576200037b620018eb565b6020026020010151905060006001600160a01b0316816001600160a01b031603620003b9576040516342bcdf7f60e11b815260040160405180910390fd5b620003c660028262000e9c565b506040516001600160a01b03821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a1506001016200035a565b50505050565b60005b8251811015620004b45762000452838281518110620004395762000439620018eb565b6020026020010151600c62000e9c60201b90919060201c565b15620004ab578281815181106200046d576200046d620018eb565b60200260200101516001600160a01b03167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba2360405160405180910390a25b60010162000416565b5060005b81518110156200055657620004f4828281518110620004db57620004db620018eb565b6020026020010151600c62000e7c60201b90919060201c565b156200054d578181815181106200050f576200050f620018eb565b60200260200101516001600160a01b03167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f9160405160405180910390a25b600101620004b8565b505050565b60005b8151811015620006285760008282815181106200057f576200057f620018eb565b6020908102919091018101518051818301516001600160a01b0380831660008181526006875260409081902084518154868a018051929096166001600160a81b03199091168117600160a01b60ff9384160217909255825191825293519093169683019690965293955091939092917f08a5f7f5bb38a81d8e43aca13ecd76431dbf8816ae4699affff7b00b2fc1c464910160405180910390a25050508060010190506200055e565b5050565b60005b815181101562000628576000828281518110620006505762000650620018eb565b602002602001015190506000838381518110620006715762000671620018eb565b6020026020010151600001519050600082602001519050816001600160401b031660001480620006ad57506101808101516001600160401b0316155b80620006cf57506102008101516001600160e01b031916630a04b54b60e21b14155b15620006fa5760405163c35aa79d60e01b81526001600160401b038316600482015260240162000083565b6001600160401b038216600090815260086020526040812060010154600160c81b900460e01b6001600160e01b03191690036200077a57816001600160401b03167fd883f18d08e8ea5c2af22d13fb6cab86cc057d795d2735f83a8ff137d39d1b8f826040516200076c919062001901565b60405180910390a2620007be565b816001600160401b03167fd42d3a670a4f1ab5d8703efa22bb17041446365cfcfa33980ced685a080cf7cb82604051620007b5919062001901565b60405180910390a25b8060086000846001600160401b03166001600160401b0316815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548161ffff021916908361ffff16021790555060408201518160000160036101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160076101000a81548163ffffffff021916908363ffffffff160217905550608082015181600001600b6101000a81548163ffffffff021916908363ffffffff16021790555060a082015181600001600f6101000a81548161ffff021916908361ffff16021790555060c08201518160000160116101000a81548163ffffffff021916908363ffffffff16021790555060e08201518160000160156101000a81548161ffff021916908361ffff1602179055506101008201518160000160176101000a81548161ffff021916908361ffff1602179055506101208201518160000160196101000a81548161ffff021916908361ffff16021790555061014082015181600001601b6101000a81548163ffffffff021916908363ffffffff1602179055506101608201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055506101808201518160010160046101000a8154816001600160401b0302191690836001600160401b031602179055506101a082015181600101600c6101000a8154816001600160401b0302191690836001600160401b031602179055506101c08201518160010160146101000a81548163ffffffff021916908363ffffffff1602179055506101e08201518160010160186101000a81548160ff0219169083151502179055506102008201518160010160196101000a81548163ffffffff021916908360e01c02179055509050505050508060010190506200062f565b60005b81518110156200062857600082828151811062000aa15762000aa1620018eb565b6020026020010151600001519050600083838151811062000ac65762000ac6620018eb565b6020908102919091018101518101516001600160a01b03841660008181526007845260409081902080546001600160401b0319166001600160401b0385169081179091559051908152919350917fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d910160405180910390a2505060010162000a80565b60005b825181101562000db657600083828151811062000b6d5762000b6d620018eb565b6020026020010151905060008160000151905060005b82602001515181101562000da75760008360200151828151811062000bac5762000bac620018eb565b602002602001015160200151905060008460200151838151811062000bd55762000bd5620018eb565b60200260200101516000015190506020826080015163ffffffff16101562000c2e5760808201516040516312766e0160e11b81526001600160a01b038316600482015263ffffffff909116602482015260440162000083565b6001600160401b03841660008181526009602090815260408083206001600160a01b0386168085529083529281902086518154938801518389015160608a015160808b015160a08c01511515600160901b0260ff60901b1963ffffffff928316600160701b021664ffffffffff60701b199383166a01000000000000000000000263ffffffff60501b1961ffff90961668010000000000000000029590951665ffffffffffff60401b19968416640100000000026001600160401b0319909b16939097169290921798909817939093169390931717919091161792909217909155519091907f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b59062000d94908690600060c08201905063ffffffff80845116835280602085015116602084015261ffff60408501511660408401528060608501511660608401528060808501511660808401525060a0830151151560a083015292915050565b60405180910390a3505060010162000b83565b50505080600101905062000b4c565b5060005b81518110156200055657600082828151811062000ddb5762000ddb620018eb565b6020026020010151600001519050600083838151811062000e005762000e00620018eb565b6020908102919091018101518101516001600160401b03841660008181526009845260408082206001600160a01b038516808452955280822080546001600160981b03191690555192945090917f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b9190a3505060010162000dba565b600062000e93836001600160a01b03841662000eb3565b90505b92915050565b600062000e93836001600160a01b03841662000fb7565b6000818152600183016020526040812054801562000fac57600062000eda60018362001a58565b855490915060009062000ef09060019062001a58565b905081811462000f5c57600086600001828154811062000f145762000f14620018eb565b906000526020600020015490508087600001848154811062000f3a5762000f3a620018eb565b6000918252602080832090910192909255918252600188019052604090208390555b855486908062000f705762000f7062001a7a565b60019003818190600052602060002001600090559055856001016000868152602001908152602001600020600090556001935050505062000e96565b600091505062000e96565b6000818152600183016020526040812054620010005750815460018181018455600084815260208082209093018490558454848252828601909352604090209190915562000e96565b50600062000e96565b634e487b7160e01b600052604160045260246000fd5b604080519081016001600160401b038111828210171562001044576200104462001009565b60405290565b60405160c081016001600160401b038111828210171562001044576200104462001009565b60405161022081016001600160401b038111828210171562001044576200104462001009565b604051601f8201601f191681016001600160401b0381118282101715620010c057620010c062001009565b604052919050565b80516001600160a01b0381168114620010e057600080fd5b919050565b600060408284031215620010f857600080fd5b620011026200101f565b82519091506001600160601b03811681146200111d57600080fd5b81526200112d60208301620010c8565b602082015292915050565b60006001600160401b0382111562001154576200115462001009565b5060051b60200190565b600082601f8301126200117057600080fd5b8151602062001189620011838362001138565b62001095565b8083825260208201915060208460051b870101935086841115620011ac57600080fd5b602086015b84811015620011d357620011c581620010c8565b8352918301918301620011b1565b509695505050505050565b805163ffffffff81168114620010e057600080fd5b600082601f8301126200120557600080fd5b8151602062001218620011838362001138565b828152606092830285018201928282019190878511156200123857600080fd5b8387015b85811015620012cb5780890382811215620012575760008081fd5b620012616200101f565b6200126c83620010c8565b8152604080601f1984011215620012835760008081fd5b6200128d6200101f565b92506200129c888501620010c8565b835283015160ff81168114620012b25760008081fd5b828801528087019190915284529284019281016200123c565b5090979650505050505050565b80516001600160401b0381168114620010e057600080fd5b805161ffff81168114620010e057600080fd5b80518015158114620010e057600080fd5b600082601f8301126200132657600080fd5b8151602062001339620011838362001138565b82815260059290921b840181019181810190868411156200135957600080fd5b8286015b84811015620011d35780516001600160401b03808211156200137e57600080fd5b908801906040601f19838c0381018213156200139957600080fd5b620013a36200101f565b620013b0898601620012d8565b81528285015184811115620013c457600080fd5b8086019550508c603f860112620013da57600080fd5b888501519350620013ef620011838562001138565b84815260e09094028501830193898101908e8611156200140e57600080fd5b958401955b85871015620014e757868f0360e08112156200142e57600080fd5b620014386200101f565b6200144389620010c8565b815260c086830112156200145657600080fd5b620014606200104a565b91506200146f8d8a01620011de565b82526200147e878a01620011de565b8d8301526200149060608a01620012f0565b87830152620014a260808a01620011de565b6060830152620014b560a08a01620011de565b6080830152620014c860c08a0162001303565b60a0830152808d0191909152825260e09690960195908a019062001413565b828b0152508752505050928401925083016200135d565b600082601f8301126200151057600080fd5b8151602062001523620011838362001138565b82815260069290921b840181019181810190868411156200154357600080fd5b8286015b84811015620011d35760408189031215620015625760008081fd5b6200156c6200101f565b6200157782620010c8565b815262001586858301620012d8565b8186015283529183019160400162001547565b80516001600160e01b031981168114620010e057600080fd5b600082601f830112620015c457600080fd5b81516020620015d7620011838362001138565b8281526102409283028501820192828201919087851115620015f857600080fd5b8387015b85811015620012cb5780890382811215620016175760008081fd5b620016216200101f565b6200162c83620012d8565b815261022080601f1984011215620016445760008081fd5b6200164e6200106f565b92506200165d88850162001303565b835260406200166e818601620012f0565b89850152606062001681818701620011de565b828601526080915062001696828701620011de565b9085015260a0620016a9868201620011de565b8286015260c09150620016be828701620012f0565b9085015260e0620016d1868201620011de565b828601526101009150620016e7828701620012f0565b90850152610120620016fb868201620012f0565b82860152610140915062001711828701620012f0565b9085015261016062001725868201620011de565b8286015261018091506200173b828701620011de565b908501526101a06200174f868201620012d8565b828601526101c0915062001765828701620012d8565b908501526101e062001779868201620011de565b8286015261020091506200178f82870162001303565b90850152620017a085830162001599565b9084015250808701919091528452928401928101620015fc565b600080600080600080600080610120898b031215620017d857600080fd5b620017e48a8a620010e5565b60408a01519098506001600160401b03808211156200180257600080fd5b620018108c838d016200115e565b985060608b01519150808211156200182757600080fd5b620018358c838d016200115e565b97506200184560808c01620011de565b965060a08b01519150808211156200185c57600080fd5b6200186a8c838d01620011f3565b955060c08b01519150808211156200188157600080fd5b6200188f8c838d0162001314565b945060e08b0151915080821115620018a657600080fd5b620018b48c838d01620014fe565b93506101008b0151915080821115620018cc57600080fd5b50620018db8b828c01620015b2565b9150509295985092959890939650565b634e487b7160e01b600052603260045260246000fd5b8151151581526102208101602083015162001922602084018261ffff169052565b5060408301516200193b604084018263ffffffff169052565b50606083015162001954606084018263ffffffff169052565b5060808301516200196d608084018263ffffffff169052565b5060a08301516200198460a084018261ffff169052565b5060c08301516200199d60c084018263ffffffff169052565b5060e0830151620019b460e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151909116908301526101408084015163ffffffff9081169184019190915261016080850151821690840152610180808501516001600160401b03908116918501919091526101a080860151909116908401526101c080850151909116908301526101e080840151151590830152610200928301516001600160e01b031916929091019190915290565b8181038181111562000e9657634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60805160a05160c0516153d062001aea6000396000818161067f01528181612001015261206a0152600081816102a00152818161123901526112b0015260008181610266015281816112d9015261134901526153d06000f3fe608060405234801561001057600080fd5b50600436106101b85760003560e01c806382b49eb0116100f9578063ca64321311610097578063d8694ccd11610071578063d8694ccd14610784578063eedeb98214610797578063f2fde38b14610a3b578063ffdb4b3714610a4e57600080fd5b8063ca64321314610756578063cdc73d5114610769578063d02641a01461077157600080fd5b8063997fb26b116100d3578063997fb26b14610640578063a69c64c014610662578063a6c94a7314610675578063bf78e03f146106a957600080fd5b806382b49eb0146104955780638da5cb5b1461060557806391a2749a1461062d57600080fd5b8063407e108611610166578063514e8cff11610140578063514e8cff146103c4578063770e2dc41461046757806379ba50971461047a5780637afac3221461048257600080fd5b8063407e10861461035157806345ac924d146103645780634ab35b0b1461038457600080fd5b8063181f5a7711610197578063181f5a77146102de5780632451a627146103275780633937306f1461033c57600080fd5b806241e5be146101bd578063061877e3146101e357806306285c691461023c575b600080fd5b6101d06101cb366004613df4565b610a96565b6040519081526020015b60405180910390f35b6102236101f1366004613e30565b73ffffffffffffffffffffffffffffffffffffffff1660009081526007602052604090205467ffffffffffffffff1690565b60405167ffffffffffffffff90911681526020016101da565b6040805180820182526000808252602091820152815180830183526bffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001680825273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000081169284019283528451918252915190911691810191909152016101da565b61031a6040518060400160405280601781526020017f5072696365526567697374727920312e362e302d64657600000000000000000081525081565b6040516101da9190613eaf565b61032f610b04565b6040516101da9190613ec2565b61034f61034a366004613f1c565b610b15565b005b61034f61035f366004614078565b610de9565b610377610372366004614191565b610dfd565b6040516101da9190614206565b610397610392366004613e30565b610ec8565b6040517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff90911681526020016101da565b61045a6103d2366004614299565b60408051808201909152600080825260208201525067ffffffffffffffff166000908152600460209081526040918290208251808401909352547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811683527c0100000000000000000000000000000000000000000000000000000000900463ffffffff169082015290565b6040516101da91906142b4565b61034f6104753660046143c6565b610ed3565b61034f610ee9565b61034f6104903660046146e0565b610feb565b6105a56104a3366004614744565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091525067ffffffffffffffff91909116600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff94909416835292815290829020825160c081018452905463ffffffff8082168352640100000000820481169383019390935268010000000000000000810461ffff16938201939093526a01000000000000000000008304821660608201526e01000000000000000000000000000083049091166080820152720100000000000000000000000000000000000090910460ff16151560a082015290565b6040516101da9190600060c08201905063ffffffff80845116835280602085015116602084015261ffff60408501511660408401528060608501511660608401528060808501511660808401525060a0830151151560a083015292915050565b60005460405173ffffffffffffffffffffffffffffffffffffffff90911681526020016101da565b61034f61063b36600461476e565b610ffd565b61065361064e3660046147ff565b61100e565b6040516101da939291906148a2565b61034f6106703660046148cc565b6115c4565b60405163ffffffff7f00000000000000000000000000000000000000000000000000000000000000001681526020016101da565b6107226106b7366004613e30565b6040805180820182526000808252602091820181905273ffffffffffffffffffffffffffffffffffffffff93841681526006825282902082518084019093525492831682527401000000000000000000000000000000000000000090920460ff169181019190915290565b60408051825173ffffffffffffffffffffffffffffffffffffffff16815260209283015160ff1692810192909252016101da565b61034f6107643660046149c1565b6115d5565b61032f6115e6565b61045a61077f366004613e30565b6115f2565b6101d0610792366004614be1565b6116ee565b610a2e6107a5366004614299565b6040805161022081018252600080825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081018290526101c081018290526101e081018290526102008101919091525067ffffffffffffffff908116600090815260086020908152604091829020825161022081018452815460ff8082161515835261ffff61010080840482169685019690965263ffffffff630100000084048116978501979097526701000000000000008304871660608501526b0100000000000000000000008304871660808501526f010000000000000000000000000000008304811660a0850152710100000000000000000000000000000000008304871660c085015275010000000000000000000000000000000000000000008304811660e0808601919091527701000000000000000000000000000000000000000000000084048216968501969096527901000000000000000000000000000000000000000000000000008084049091166101208501527b010000000000000000000000000000000000000000000000000000009092048616610140840152600190930154808616610160840152640100000000810487166101808401526c0100000000000000000000000081049096166101a08301527401000000000000000000000000000000000000000086049094166101c08201527801000000000000000000000000000000000000000000000000850490911615156101e08201527fffffffff0000000000000000000000000000000000000000000000000000000092909304901b1661020082015290565b6040516101da9190614c36565b61034f610a49366004613e30565b611f1c565b610a61610a5c366004614da2565b611f2d565b604080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff9384168152929091166020830152016101da565b6000610aa1826120b8565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16610ac8856120b8565b610af0907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1685614dfb565b610afa9190614e12565b90505b9392505050565b6060610b106002612152565b905090565b60005473ffffffffffffffffffffffffffffffffffffffff163314610b3c57610b3c61215f565b6000610b488280614e4d565b9050905060005b81811015610c92576000610b638480614e4d565b83818110610b7357610b73614eb5565b905060400201803603810190610b899190614f10565b604080518082018252602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908116845263ffffffff42818116858701908152885173ffffffffffffffffffffffffffffffffffffffff9081166000908152600590975295889020965190519092167c010000000000000000000000000000000000000000000000000000000002919092161790935584519051935194955016927f52f50aa6d1a95a4595361ecf953d095f125d442e4673716dede699e049de148a92610c819290917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a250600101610b4f565b506000610ca26020840184614e4d565b9050905060005b81811015610de3576000610cc06020860186614e4d565b83818110610cd057610cd0614eb5565b905060400201803603810190610ce69190614f4d565b604080518082018252602080840180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff908116845263ffffffff42818116858701908152885167ffffffffffffffff9081166000908152600490975295889020965190519092167c010000000000000000000000000000000000000000000000000000000002919092161790935584519051935194955016927fdd84a3fa9ef9409f550d54d6affec7e9c480c878c6ab27b78912a03e1b371c6e92610dd29290917bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b60405180910390a250600101610ca9565b50505050565b610df16121a4565b610dfa81612225565b50565b60608160008167ffffffffffffffff811115610e1b57610e1b613f57565b604051908082528060200260200182016040528015610e6057816020015b6040805180820190915260008082526020820152815260200190600190039081610e395790505b50905060005b82811015610ebd57610e98868683818110610e8357610e83614eb5565b905060200201602081019061077f9190613e30565b828281518110610eaa57610eaa614eb5565b6020908102919091010152600101610e66565b509150505b92915050565b6000610ec2826120b8565b610edb6121a4565b610ee58282612323565b5050565b60015473ffffffffffffffffffffffffffffffffffffffff163314610f6f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4d7573742062652070726f706f736564206f776e65720000000000000000000060448201526064015b60405180910390fd5b60008054337fffffffffffffffffffffffff00000000000000000000000000000000000000008083168217845560018054909116905560405173ffffffffffffffffffffffffffffffffffffffff90921692909183917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a350565b610ff36121a4565b610ee5828261272f565b6110056121a4565b610dfa81612876565b60008060608161102387830160408901614299565b67ffffffffffffffff811660009081526008602052604081209192505b61104e6101608a018a614f70565b905081101561122157600088888381811061106b5761106b614eb5565b6110819260206040909202019081019150613e30565b905060006110936101608c018c614f70565b848181106110a3576110a3614eb5565b90506020028101906110b59190614fd8565b6110c3906040810190615016565b915050602081118015611127575067ffffffffffffffff8516600090815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff861684529091529020546e010000000000000000000000000000900463ffffffff1681115b15611176576040517f36f536ca00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff83166004820152602401610f66565b600184015461121790790100000000000000000000000000000000000000000000000000900460e01b6111ad6101608e018e614f70565b868181106111bd576111bd614eb5565b90506020028101906111cf9190614fd8565b6111dd906020810190615016565b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250612a0292505050565b5050600101611040565b5073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001661126b6101408a016101208b01613e30565b73ffffffffffffffffffffffffffffffffffffffff16036112935787610140013594506112d7565b6112d46112a86101408a016101208b01613e30565b8961014001357f0000000000000000000000000000000000000000000000000000000000000000610a96565b94505b7f00000000000000000000000000000000000000000000000000000000000000006bffffffffffffffffffffffff16851115611376576040517f6a92a483000000000000000000000000000000000000000000000000000000008152600481018690526bffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000166024820152604401610f66565b60006115736113896101008b018b615016565b6040805161022081018252865460ff8082161515835261ffff6101008084048216602086015263ffffffff630100000085048116968601969096526701000000000000008404861660608601526b0100000000000000000000008404861660808601526f010000000000000000000000000000008404821660a0860152710100000000000000000000000000000000008404861660c086015275010000000000000000000000000000000000000000008404821660e0808701919091527701000000000000000000000000000000000000000000000085048316918601919091527901000000000000000000000000000000000000000000000000008085049092166101208601527b01000000000000000000000000000000000000000000000000000000909304851661014085015260018a015480861661016086015267ffffffffffffffff640100000000820481166101808701526c010000000000000000000000008204166101a08601527401000000000000000000000000000000000000000081049095166101c08501527801000000000000000000000000000000000000000000000000850490911615156101e08401527fffffffff000000000000000000000000000000000000000000000000000000009304901b91909116610200820152612a54565b9050806020015194508585826040516020016115a391908151815260209182015115159181019190915260400190565b60405160208183030381529060405295509550955050505093509350939050565b6115cc6121a4565b610dfa81612b0f565b6115dd6121a4565b610dfa81612bf9565b6060610b10600c612152565b604080518082019091526000808252602082015273ffffffffffffffffffffffffffffffffffffffff8281166000908152600660209081526040918290208251808401909352549283168083527401000000000000000000000000000000000000000090930460ff1690820152906116e557505073ffffffffffffffffffffffffffffffffffffffff166000908152600560209081526040918290208251808401909352547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811683527c0100000000000000000000000000000000000000000000000000000000900463ffffffff169082015290565b610afd816130bc565b67ffffffffffffffff82166000908152600860205260408120805460ff1661174e576040517f99ac52f200000000000000000000000000000000000000000000000000000000815267ffffffffffffffff85166004820152602401610f66565b600061175d6040850185614e4d565b6040805161022081018252855460ff8082161515835261ffff610100808404821660208087019190915263ffffffff630100000086048116978701979097526701000000000000008504871660608701526b0100000000000000000000008504871660808701526f010000000000000000000000000000008504831660a0870152710100000000000000000000000000000000008504871660c087015275010000000000000000000000000000000000000000008504831660e0808801919091527701000000000000000000000000000000000000000000000086048416928701929092527901000000000000000000000000000000000000000000000000008086049093166101208701527b01000000000000000000000000000000000000000000000000000000909404861661014086015260018a015480871661016087015267ffffffffffffffff640100000000820481166101808801526c010000000000000000000000008204166101a08701527401000000000000000000000000000000000000000081049096166101c08601527801000000000000000000000000000000000000000000000000860490921615156101e08501527fffffffff000000000000000000000000000000000000000000000000000000009404901b929092166102008201529193506119a1925061195a90870187615016565b9050836119678880615016565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152506132ff92505050565b60006007816119b66080880160608901613e30565b73ffffffffffffffffffffffffffffffffffffffff168152602081019190915260400160009081205467ffffffffffffffff169150819003611a4d57611a026080860160608701613e30565b6040517fa7499d2000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff9091166004820152602401610f66565b600080611a69611a636080890160608a01613e30565b89611f2d565b9092509050600080808615611aab57611a9f8b611a8c60808d0160608e01613e30565b87611a9a60408f018f614e4d565b6133a9565b91945092509050611ae2565b6001880154611adf9074010000000000000000000000000000000000000000900463ffffffff16662386f26fc10000614dfb565b92505b875460009077010000000000000000000000000000000000000000000000900461ffff1615611b3d57611b3a8c6dffffffffffffffffffffffffffff607088901c16611b3160208f018f615016565b90508b866136df565b90505b885460009063ffffffff8516906f01000000000000000000000000000000900461ffff16611b6e60208f018f615016565b611b79929150614dfb565b8b54611b9a91906b010000000000000000000000900463ffffffff1661507b565b611ba4919061507b565b9050611e61611bb660808e018e615016565b8c604051806102200160405290816000820160009054906101000a900460ff161515151581526020016000820160019054906101000a900461ffff1661ffff1661ffff1681526020016000820160039054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160079054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600b9054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200160008201600f9054906101000a900461ffff1661ffff1661ffff1681526020016000820160119054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016000820160159054906101000a900461ffff1661ffff1661ffff1681526020016000820160179054906101000a900461ffff1661ffff1661ffff1681526020016000820160199054906101000a900461ffff1661ffff1661ffff16815260200160008201601b9054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160049054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160018201600c9054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016001820160149054906101000a900463ffffffff1663ffffffff1663ffffffff1681526020016001820160189054906101000a900460ff161515151581526020016001820160199054906101000a900460e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191681525050612a54565b51611e6c908261507b565b60018b01549091506000906c01000000000000000000000000900467ffffffffffffffff16611eab836dffffffffffffffffffffffffffff8a16614dfb565b611eb59190614dfb565b90507bffffffffffffffffffffffffffffffffffffffffffffffffffffffff88168382611eec67ffffffffffffffff8d168a614dfb565b611ef6919061507b565b611f00919061507b565b611f0a9190614e12565b9e9d5050505050505050505050505050565b611f246121a4565b610dfa816137e5565b67ffffffffffffffff811660009081526004602090815260408083208151808301909252547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff811682527c0100000000000000000000000000000000000000000000000000000000900463ffffffff1691810182905282918203611fe5576040517f2e59db3a00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff85166004820152602401610f66565b6000816020015163ffffffff1642611ffd919061508e565b90507f000000000000000000000000000000000000000000000000000000000000000063ffffffff1681111561209e576040517ff08bcb3e00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff8616600482015263ffffffff7f000000000000000000000000000000000000000000000000000000000000000016602482015260448101829052606401610f66565b6120a7866120b8565b9151919350909150505b9250929050565b6000806120c4836115f2565b9050806020015163ffffffff16600014806120fc575080517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16155b1561214b576040517f06439c6b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff84166004820152602401610f66565b5192915050565b60606000610afd836138da565b61216a600233613936565b6121a2576040517fd86ad9cf000000000000000000000000000000000000000000000000000000008152336004820152602401610f66565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146121a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4f6e6c792063616c6c61626c65206279206f776e6572000000000000000000006044820152606401610f66565b60005b8151811015610ee557600082828151811061224557612245614eb5565b60209081029190910181015180518183015173ffffffffffffffffffffffffffffffffffffffff80831660008181526006875260409081902084518154868a018051929096167fffffffffffffffffffffff00000000000000000000000000000000000000000090911681177401000000000000000000000000000000000000000060ff9384160217909255825191825293519093169683019690965293955091939092917f08a5f7f5bb38a81d8e43aca13ecd76431dbf8816ae4699affff7b00b2fc1c464910160405180910390a2505050806001019050612228565b60005b825181101561264657600083828151811061234357612343614eb5565b6020026020010151905060008160000151905060005b8260200151518110156126385760008360200151828151811061237e5761237e614eb5565b60200260200101516020015190506000846020015183815181106123a4576123a4614eb5565b60200260200101516000015190506020826080015163ffffffff1610156124215760808201516040517f24ecdc0200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015263ffffffff9091166024820152604401610f66565b67ffffffffffffffff8416600081815260096020908152604080832073ffffffffffffffffffffffffffffffffffffffff86168085529083529281902086518154938801518389015160608a015160808b015160a08c015115157201000000000000000000000000000000000000027fffffffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffff63ffffffff9283166e01000000000000000000000000000002167fffffffffffffffffffffffffff0000000000ffffffffffffffffffffffffffff9383166a0100000000000000000000027fffffffffffffffffffffffffffffffffffff00000000ffffffffffffffffffff61ffff9096166801000000000000000002959095167fffffffffffffffffffffffffffffffffffff000000000000ffffffffffffffff968416640100000000027fffffffffffffffffffffffffffffffffffffffffffffffff0000000000000000909b16939097169290921798909817939093169390931717919091161792909217909155519091907f94967ae9ea7729ad4f54021c1981765d2b1d954f7c92fbec340aa0a54f46b8b590612626908690600060c08201905063ffffffff80845116835280602085015116602084015261ffff60408501511660408401528060608501511660608401528060808501511660808401525060a0830151151560a083015292915050565b60405180910390a35050600101612359565b505050806001019050612326565b5060005b815181101561272a57600082828151811061266757612667614eb5565b6020026020010151600001519050600083838151811061268957612689614eb5565b60209081029190910181015181015167ffffffffffffffff8416600081815260098452604080822073ffffffffffffffffffffffffffffffffffffffff8516808452955280822080547fffffffffffffffffffffffffff000000000000000000000000000000000000001690555192945090917f4de5b1bcbca6018c11303a2c3f4a4b4f22a1c741d8c4ba430d246ac06c5ddf8b9190a3505060010161264a565b505050565b60005b82518110156127d25761276883828151811061275057612750614eb5565b6020026020010151600c61396590919063ffffffff16565b156127ca5782818151811061277f5761277f614eb5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167fdf1b1bd32a69711488d71554706bb130b1fc63a5fa1a2cd85e8440f84065ba2360405160405180910390a25b600101612732565b5060005b815181101561272a5761280c8282815181106127f4576127f4614eb5565b6020026020010151600c61398790919063ffffffff16565b1561286e5781818151811061282357612823614eb5565b602002602001015173ffffffffffffffffffffffffffffffffffffffff167f1795838dc8ab2ffc5f431a1729a6afa0b587f982f7b2be0b9d7187a1ef547f9160405160405180910390a25b6001016127d6565b602081015160005b815181101561291157600082828151811061289b5761289b614eb5565b602002602001015190506128b981600261398790919063ffffffff16565b156129085760405173ffffffffffffffffffffffffffffffffffffffff821681527fc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda775809060200160405180910390a15b5060010161287e565b50815160005b8151811015610de357600082828151811061293457612934614eb5565b60200260200101519050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036129a4576040517f8579befe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6129af600282613965565b5060405173ffffffffffffffffffffffffffffffffffffffff821681527feb1b9b92e50b7f88f9ff25d56765095ac6e91540eee214906f4036a908ffbdef9060200160405180910390a150600101612917565b7fd7ed2ad4000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601610ee55761272a816139a9565b60408051808201909152600080825260208201526000612a7a8585856101800151613a04565b9050826060015163ffffffff1681600001511115612ac4576040517f4c4fc93a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826101e001518015612ad857508060200151155b15610afa576040517fee433e9900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8151811015610ee5576000828281518110612b2f57612b2f614eb5565b60200260200101516000015190506000838381518110612b5157612b51614eb5565b60209081029190910181015181015173ffffffffffffffffffffffffffffffffffffffff841660008181526007845260409081902080547fffffffffffffffffffffffffffffffffffffffffffffffff00000000000000001667ffffffffffffffff85169081179091559051908152919350917fbb77da6f7210cdd16904228a9360133d1d7dfff99b1bc75f128da5b53e28f97d910160405180910390a25050600101612b12565b60005b8151811015610ee5576000828281518110612c1957612c19614eb5565b602002602001015190506000838381518110612c3757612c37614eb5565b60200260200101516000015190506000826020015190508167ffffffffffffffff1660001480612c74575061018081015167ffffffffffffffff16155b80612cc657506102008101517fffffffff00000000000000000000000000000000000000000000000000000000167f2812d52c0000000000000000000000000000000000000000000000000000000014155b15612d09576040517fc35aa79d00000000000000000000000000000000000000000000000000000000815267ffffffffffffffff83166004820152602401610f66565b67ffffffffffffffff8216600090815260086020526040812060010154790100000000000000000000000000000000000000000000000000900460e01b7fffffffff00000000000000000000000000000000000000000000000000000000169003612db5578167ffffffffffffffff167fd883f18d08e8ea5c2af22d13fb6cab86cc057d795d2735f83a8ff137d39d1b8f82604051612da89190614c36565b60405180910390a2612df8565b8167ffffffffffffffff167fd42d3a670a4f1ab5d8703efa22bb17041446365cfcfa33980ced685a080cf7cb82604051612def9190614c36565b60405180910390a25b80600860008467ffffffffffffffff1667ffffffffffffffff16815260200190815260200160002060008201518160000160006101000a81548160ff02191690831515021790555060208201518160000160016101000a81548161ffff021916908361ffff16021790555060408201518160000160036101000a81548163ffffffff021916908363ffffffff16021790555060608201518160000160076101000a81548163ffffffff021916908363ffffffff160217905550608082015181600001600b6101000a81548163ffffffff021916908363ffffffff16021790555060a082015181600001600f6101000a81548161ffff021916908361ffff16021790555060c08201518160000160116101000a81548163ffffffff021916908363ffffffff16021790555060e08201518160000160156101000a81548161ffff021916908361ffff1602179055506101008201518160000160176101000a81548161ffff021916908361ffff1602179055506101208201518160000160196101000a81548161ffff021916908361ffff16021790555061014082015181600001601b6101000a81548163ffffffff021916908363ffffffff1602179055506101608201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055506101808201518160010160046101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101a082015181600101600c6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506101c08201518160010160146101000a81548163ffffffff021916908363ffffffff1602179055506101e08201518160010160186101000a81548160ff0219169083151502179055506102008201518160010160196101000a81548163ffffffff021916908360e01c0217905550905050505050806001019050612bfc565b604080518082019091526000808252602082015260008260000151905060008173ffffffffffffffffffffffffffffffffffffffff1663feaf968c6040518163ffffffff1660e01b815260040160a060405180830381865afa158015613126573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061314a91906150bb565b505050915050600081121561318b576040517f10cb51d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000819050600085602001518473ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa1580156131e2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613206919061510b565b6132109190615128565b905060248160ff16111561324557613229602482615141565b61323490600a61527a565b61323e9083614e12565b9150613268565b613250816024615141565b61325b90600a61527a565b6132659083614dfb565b91505b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8211156132be576040517f10cb51d100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50604080518082019091527bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909116815263ffffffff42166020820152949350505050565b836040015163ffffffff168311156133585760408085015190517f8693378900000000000000000000000000000000000000000000000000000000815263ffffffff909116600482015260248101849052604401610f66565b836020015161ffff1682111561339a576040517f4c056b6a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610de384610200015182612a02565b6000808083815b818110156136d25760008787838181106133cc576133cc614eb5565b9050604002018036038101906133e29190615289565b67ffffffffffffffff8c166000908152600960209081526040808320845173ffffffffffffffffffffffffffffffffffffffff168452825291829020825160c081018452905463ffffffff8082168352640100000000820481169383019390935268010000000000000000810461ffff16938201939093526a01000000000000000000008304821660608201526e01000000000000000000000000000083049091166080820152720100000000000000000000000000000000000090910460ff16151560a08201819052919250906135615767ffffffffffffffff8c166000908152600860205260409020805461350190790100000000000000000000000000000000000000000000000000900461ffff16662386f26fc10000614dfb565b61350b908961507b565b815490985061353f907b01000000000000000000000000000000000000000000000000000000900463ffffffff16886152c2565b60018201549097506135579063ffffffff16876152c2565b95505050506136ca565b604081015160009061ffff161561361a5760008c73ffffffffffffffffffffffffffffffffffffffff16846000015173ffffffffffffffffffffffffffffffffffffffff16146135bd5783516135b6906120b8565b90506135c0565b508a5b620186a0836040015161ffff166136028660200151847bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16613bad90919063ffffffff16565b61360c9190614dfb565b6136169190614e12565b9150505b606082015161362990886152c2565b965081608001518661363b91906152c2565b825190965060009061365a9063ffffffff16662386f26fc10000614dfb565b9050808210156136795761366e818a61507b565b9850505050506136ca565b6000836020015163ffffffff16662386f26fc100006136989190614dfb565b9050808311156136b8576136ac818b61507b565b995050505050506136ca565b6136c2838b61507b565b995050505050505b6001016133b0565b5050955095509592505050565b60008063ffffffff83166136f460e086614dfb565b613700876101c061507b565b61370a919061507b565b613714919061507b565b67ffffffffffffffff8816600090815260086020526040812080549293509171010000000000000000000000000000000000810463ffffffff1690613776907501000000000000000000000000000000000000000000900461ffff1685614dfb565b613780919061507b565b825490915077010000000000000000000000000000000000000000000000900461ffff166137be6dffffffffffffffffffffffffffff8a1683614dfb565b6137c89190614dfb565b6137d890655af3107a4000614dfb565b9998505050505050505050565b3373ffffffffffffffffffffffffffffffffffffffff821603613864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f43616e6e6f74207472616e7366657220746f2073656c660000000000000000006044820152606401610f66565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff83811691821790925560008054604051929316917fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae12789190a350565b60608160000180548060200260200160405190810160405280929190818152602001828054801561392a57602002820191906000526020600020905b815481526020019060010190808311613916575b50505050509050919050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526001830160205260408120541515610afd565b6000610afd8373ffffffffffffffffffffffffffffffffffffffff8416613bea565b6000610afd8373ffffffffffffffffffffffffffffffffffffffff8416613c39565b600081516020146139e857816040517f8d666f60000000000000000000000000000000000000000000000000000000008152600401610f669190613eaf565b610ec2828060200190518101906139ff91906152df565b613d33565b60408051808201909152600080825260208201526000839003613a4557506040805180820190915267ffffffffffffffff8216815260006020820152610afd565b6000613a5184866152f8565b90506000613a62856004818961533e565b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509293505050507fffffffff0000000000000000000000000000000000000000000000000000000082167fe7e230f00000000000000000000000000000000000000000000000000000000001613aff5780806020019051810190613af69190615368565b92505050610afd565b7f6859a837000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831601613b7b57604051806040016040528082806020019051810190613b6791906152df565b815260006020909101529250610afd915050565b6040517f5247fdce00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000670de0b6b3a7640000613be0837bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8616614dfb565b610afd9190614e12565b6000818152600183016020526040812054613c3157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ec2565b506000610ec2565b60008181526001830160205260408120548015613d22576000613c5d60018361508e565b8554909150600090613c719060019061508e565b9050818114613cd6576000866000018281548110613c9157613c91614eb5565b9060005260206000200154905080876000018481548110613cb457613cb4614eb5565b6000918252602080832090910192909255918252600188019052604090208390555b8554869080613ce757613ce7615394565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610ec2565b6000915050610ec2565b5092915050565b600073ffffffffffffffffffffffffffffffffffffffff821180613d58575061040082105b15613dc757604080516020810184905201604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0818403018152908290527f8d666f60000000000000000000000000000000000000000000000000000000008252610f6691600401613eaf565b5090565b803573ffffffffffffffffffffffffffffffffffffffff81168114613def57600080fd5b919050565b600080600060608486031215613e0957600080fd5b613e1284613dcb565b925060208401359150613e2760408501613dcb565b90509250925092565b600060208284031215613e4257600080fd5b610afd82613dcb565b6000815180845260005b81811015613e7157602081850181015186830182015201613e55565b5060006020828601015260207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011685010191505092915050565b602081526000610afd6020830184613e4b565b6020808252825182820181905260009190848201906040850190845b81811015613f1057835173ffffffffffffffffffffffffffffffffffffffff1683529284019291840191600101613ede565b50909695505050505050565b600060208284031215613f2e57600080fd5b813567ffffffffffffffff811115613f4557600080fd5b820160408185031215610afd57600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040805190810167ffffffffffffffff81118282101715613fa957613fa9613f57565b60405290565b60405160c0810167ffffffffffffffff81118282101715613fa957613fa9613f57565b604051610220810167ffffffffffffffff81118282101715613fa957613fa9613f57565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe016810167ffffffffffffffff8111828210171561403d5761403d613f57565b604052919050565b600067ffffffffffffffff82111561405f5761405f613f57565b5060051b60200190565b60ff81168114610dfa57600080fd5b6000602080838503121561408b57600080fd5b823567ffffffffffffffff8111156140a257600080fd5b8301601f810185136140b357600080fd5b80356140c66140c182614045565b613ff6565b818152606091820283018401918482019190888411156140e557600080fd5b938501935b8385101561418557848903818112156141035760008081fd5b61410b613f86565b61411487613dcb565b81526040807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0840112156141485760008081fd5b614150613f86565b925061415d898901613dcb565b835287013561416b81614069565b8289015280880191909152835293840193918501916140ea565b50979650505050505050565b600080602083850312156141a457600080fd5b823567ffffffffffffffff808211156141bc57600080fd5b818501915085601f8301126141d057600080fd5b8135818111156141df57600080fd5b8660208260051b85010111156141f457600080fd5b60209290920196919550909350505050565b602080825282518282018190526000919060409081850190868401855b828110156142745761426484835180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16825260209081015163ffffffff16910152565b9284019290850190600101614223565b5091979650505050505050565b803567ffffffffffffffff81168114613def57600080fd5b6000602082840312156142ab57600080fd5b610afd82614281565b81517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff16815260208083015163ffffffff169082015260408101610ec2565b803563ffffffff81168114613def57600080fd5b803561ffff81168114613def57600080fd5b8015158114610dfa57600080fd5b8035613def81614315565b600082601f83011261433f57600080fd5b8135602061434f6140c183614045565b82815260069290921b8401810191818101908684111561436e57600080fd5b8286015b848110156143bb576040818903121561438b5760008081fd5b614393613f86565b61439c82614281565b81526143a9858301613dcb565b81860152835291830191604001614372565b509695505050505050565b600080604083850312156143d957600080fd5b67ffffffffffffffff833511156143ef57600080fd5b83601f84358501011261440157600080fd5b6144116140c18435850135614045565b8335840180358083526020808401939260059290921b9091010186101561443757600080fd5b602085358601015b85358601803560051b016020018110156146445767ffffffffffffffff8135111561446957600080fd5b8035863587010160407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0828a030112156144a257600080fd5b6144aa613f86565b6144b660208301614281565b815267ffffffffffffffff604083013511156144d157600080fd5b88603f6040840135840101126144e657600080fd5b6144fc6140c16020604085013585010135614045565b6020604084810135850182810135808552928401939260e00201018b101561452357600080fd5b6040808501358501015b6040858101358601602081013560e00201018110156146255760e0818d03121561455657600080fd5b61455e613f86565b61456782613dcb565b815260c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838f0301121561459b57600080fd5b6145a3613faf565b6145af602084016142ef565b81526145bd604084016142ef565b60208201526145ce60608401614303565b60408201526145df608084016142ef565b60608201526145f060a084016142ef565b608082015261460260c0840135614315565b60c083013560a0820152602082810191909152908452929092019160e00161452d565b508060208401525050808552505060208301925060208101905061443f565b5092505067ffffffffffffffff6020840135111561466157600080fd5b614671846020850135850161432e565b90509250929050565b600082601f83011261468b57600080fd5b8135602061469b6140c183614045565b8083825260208201915060208460051b8701019350868411156146bd57600080fd5b602086015b848110156143bb576146d381613dcb565b83529183019183016146c2565b600080604083850312156146f357600080fd5b823567ffffffffffffffff8082111561470b57600080fd5b6147178683870161467a565b9350602085013591508082111561472d57600080fd5b5061473a8582860161467a565b9150509250929050565b6000806040838503121561475757600080fd5b61476083614281565b915061467160208401613dcb565b60006020828403121561478057600080fd5b813567ffffffffffffffff8082111561479857600080fd5b90830190604082860312156147ac57600080fd5b6147b4613f86565b8235828111156147c357600080fd5b6147cf8782860161467a565b8252506020830135828111156147e457600080fd5b6147f08782860161467a565b60208301525095945050505050565b60008060006040848603121561481457600080fd5b833567ffffffffffffffff8082111561482c57600080fd5b90850190610180828803121561484157600080fd5b9093506020850135908082111561485757600080fd5b818601915086601f83011261486b57600080fd5b81358181111561487a57600080fd5b8760208260061b850101111561488f57600080fd5b6020830194508093505050509250925092565b83815282151560208201526060604082015260006148c36060830184613e4b565b95945050505050565b600060208083850312156148df57600080fd5b823567ffffffffffffffff8111156148f657600080fd5b8301601f8101851361490757600080fd5b80356149156140c182614045565b81815260069190911b8201830190838101908783111561493457600080fd5b928401925b8284101561498657604084890312156149525760008081fd5b61495a613f86565b61496385613dcb565b8152614970868601614281565b8187015282526040939093019290840190614939565b979650505050505050565b80357fffffffff0000000000000000000000000000000000000000000000000000000081168114613def57600080fd5b600060208083850312156149d457600080fd5b823567ffffffffffffffff8111156149eb57600080fd5b8301601f810185136149fc57600080fd5b8035614a0a6140c182614045565b8181526102409182028301840191848201919088841115614a2a57600080fd5b938501935b838510156141855784890381811215614a485760008081fd5b614a50613f86565b614a5987614281565b8152610220807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe084011215614a8e5760008081fd5b614a96613fd2565b9250614aa3898901614323565b83526040614ab2818a01614303565b8a8501526060614ac3818b016142ef565b8286015260809150614ad6828b016142ef565b9085015260a0614ae78a82016142ef565b8286015260c09150614afa828b01614303565b9085015260e0614b0b8a82016142ef565b828601526101009150614b1f828b01614303565b90850152610120614b318a8201614303565b828601526101409150614b45828b01614303565b90850152610160614b578a82016142ef565b828601526101809150614b6b828b016142ef565b908501526101a0614b7d8a8201614281565b828601526101c09150614b91828b01614281565b908501526101e0614ba38a82016142ef565b828601526102009150614bb7828b01614323565b90850152614bc6898301614991565b90840152508088019190915283529384019391850191614a2f565b60008060408385031215614bf457600080fd5b614bfd83614281565b9150602083013567ffffffffffffffff811115614c1957600080fd5b830160a08186031215614c2b57600080fd5b809150509250929050565b81511515815261022081016020830151614c56602084018261ffff169052565b506040830151614c6e604084018263ffffffff169052565b506060830151614c86606084018263ffffffff169052565b506080830151614c9e608084018263ffffffff169052565b5060a0830151614cb460a084018261ffff169052565b5060c0830151614ccc60c084018263ffffffff169052565b5060e0830151614ce260e084018261ffff169052565b506101008381015161ffff9081169184019190915261012080850151909116908301526101408084015163ffffffff90811691840191909152610160808501518216908401526101808085015167ffffffffffffffff908116918501919091526101a080860151909116908401526101c080850151909116908301526101e080840151151590830152610200808401517fffffffff000000000000000000000000000000000000000000000000000000008116828501525b505092915050565b60008060408385031215614db557600080fd5b614dbe83613dcb565b915061467160208401614281565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b8082028115828204841417610ec257610ec2614dcc565b600082614e48577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614e8257600080fd5b83018035915067ffffffffffffffff821115614e9d57600080fd5b6020019150600681901b36038213156120b157600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b80357bffffffffffffffffffffffffffffffffffffffffffffffffffffffff81168114613def57600080fd5b600060408284031215614f2257600080fd5b614f2a613f86565b614f3383613dcb565b8152614f4160208401614ee4565b60208201529392505050565b600060408284031215614f5f57600080fd5b614f67613f86565b614f3383614281565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1843603018112614fa557600080fd5b83018035915067ffffffffffffffff821115614fc057600080fd5b6020019150600581901b36038213156120b157600080fd5b600082357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8183360301811261500c57600080fd5b9190910192915050565b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe184360301811261504b57600080fd5b83018035915067ffffffffffffffff82111561506657600080fd5b6020019150368190038213156120b157600080fd5b80820180821115610ec257610ec2614dcc565b81810381811115610ec257610ec2614dcc565b805169ffffffffffffffffffff81168114613def57600080fd5b600080600080600060a086880312156150d357600080fd5b6150dc866150a1565b94506020860151935060408601519250606086015191506150ff608087016150a1565b90509295509295909350565b60006020828403121561511d57600080fd5b8151610afd81614069565b60ff8181168382160190811115610ec257610ec2614dcc565b60ff8281168282160390811115610ec257610ec2614dcc565b600181815b808511156151b357817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561519957615199614dcc565b808516156151a657918102915b93841c939080029061515f565b509250929050565b6000826151ca57506001610ec2565b816151d757506000610ec2565b81600181146151ed57600281146151f757615213565b6001915050610ec2565b60ff84111561520857615208614dcc565b50506001821b610ec2565b5060208310610133831016604e8410600b8410161715615236575081810a610ec2565b615240838361515a565b807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0482111561527257615272614dcc565b029392505050565b6000610afd60ff8416836151bb565b60006040828403121561529b57600080fd5b6152a3613f86565b6152ac83613dcb565b8152602083013560208201528091505092915050565b63ffffffff818116838216019080821115613d2c57613d2c614dcc565b6000602082840312156152f157600080fd5b5051919050565b7fffffffff000000000000000000000000000000000000000000000000000000008135818116916004851015614d9a5760049490940360031b84901b1690921692915050565b6000808585111561534e57600080fd5b8386111561535b57600080fd5b5050820193919092039150565b60006040828403121561537a57600080fd5b615382613f86565b825181526020830151614f4181614315565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fdfea164736f6c6343000818000a", } var PriceRegistryABI = PriceRegistryMetaData.ABI @@ -1059,6 +1059,134 @@ func (_PriceRegistry *PriceRegistryFilterer) ParseAuthorizedCallerRemoved(log ty return event, nil } +type PriceRegistryDestChainAddedIterator struct { + Event *PriceRegistryDestChainAdded + + contract *bind.BoundContract + event string + + logs chan types.Log + sub ethereum.Subscription + done bool + fail error +} + +func (it *PriceRegistryDestChainAddedIterator) Next() bool { + + if it.fail != nil { + return false + } + + if it.done { + select { + case log := <-it.logs: + it.Event = new(PriceRegistryDestChainAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + default: + return false + } + } + + select { + case log := <-it.logs: + it.Event = new(PriceRegistryDestChainAdded) + if err := it.contract.UnpackLog(it.Event, it.event, log); err != nil { + it.fail = err + return false + } + it.Event.Raw = log + return true + + case err := <-it.sub.Err(): + it.done = true + it.fail = err + return it.Next() + } +} + +func (it *PriceRegistryDestChainAddedIterator) Error() error { + return it.fail +} + +func (it *PriceRegistryDestChainAddedIterator) Close() error { + it.sub.Unsubscribe() + return nil +} + +type PriceRegistryDestChainAdded struct { + DestChainSelector uint64 + DynamicConfig PriceRegistryDestChainDynamicConfig + Raw types.Log +} + +func (_PriceRegistry *PriceRegistryFilterer) FilterDestChainAdded(opts *bind.FilterOpts, destChainSelector []uint64) (*PriceRegistryDestChainAddedIterator, error) { + + var destChainSelectorRule []interface{} + for _, destChainSelectorItem := range destChainSelector { + destChainSelectorRule = append(destChainSelectorRule, destChainSelectorItem) + } + + logs, sub, err := _PriceRegistry.contract.FilterLogs(opts, "DestChainAdded", destChainSelectorRule) + if err != nil { + return nil, err + } + return &PriceRegistryDestChainAddedIterator{contract: _PriceRegistry.contract, event: "DestChainAdded", logs: logs, sub: sub}, nil +} + +func (_PriceRegistry *PriceRegistryFilterer) WatchDestChainAdded(opts *bind.WatchOpts, sink chan<- *PriceRegistryDestChainAdded, destChainSelector []uint64) (event.Subscription, error) { + + var destChainSelectorRule []interface{} + for _, destChainSelectorItem := range destChainSelector { + destChainSelectorRule = append(destChainSelectorRule, destChainSelectorItem) + } + + logs, sub, err := _PriceRegistry.contract.WatchLogs(opts, "DestChainAdded", destChainSelectorRule) + if err != nil { + return nil, err + } + return event.NewSubscription(func(quit <-chan struct{}) error { + defer sub.Unsubscribe() + for { + select { + case log := <-logs: + + event := new(PriceRegistryDestChainAdded) + if err := _PriceRegistry.contract.UnpackLog(event, "DestChainAdded", log); err != nil { + return err + } + event.Raw = log + + select { + case sink <- event: + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + case err := <-sub.Err(): + return err + case <-quit: + return nil + } + } + }), nil +} + +func (_PriceRegistry *PriceRegistryFilterer) ParseDestChainAdded(log types.Log) (*PriceRegistryDestChainAdded, error) { + event := new(PriceRegistryDestChainAdded) + if err := _PriceRegistry.contract.UnpackLog(event, "DestChainAdded", log); err != nil { + return nil, err + } + event.Raw = log + return event, nil +} + type PriceRegistryDestChainDynamicConfigUpdatedIterator struct { Event *PriceRegistryDestChainDynamicConfigUpdated @@ -2770,6 +2898,8 @@ func (_PriceRegistry *PriceRegistry) ParseLog(log types.Log) (generated.AbigenLo return _PriceRegistry.ParseAuthorizedCallerAdded(log) case _PriceRegistry.abi.Events["AuthorizedCallerRemoved"].ID: return _PriceRegistry.ParseAuthorizedCallerRemoved(log) + case _PriceRegistry.abi.Events["DestChainAdded"].ID: + return _PriceRegistry.ParseDestChainAdded(log) case _PriceRegistry.abi.Events["DestChainDynamicConfigUpdated"].ID: return _PriceRegistry.ParseDestChainDynamicConfigUpdated(log) case _PriceRegistry.abi.Events["FeeTokenAdded"].ID: @@ -2810,6 +2940,10 @@ func (PriceRegistryAuthorizedCallerRemoved) Topic() common.Hash { return common.HexToHash("0xc3803387881faad271c47728894e3e36fac830ffc8602ca6fc07733cbda77580") } +func (PriceRegistryDestChainAdded) Topic() common.Hash { + return common.HexToHash("0xd883f18d08e8ea5c2af22d13fb6cab86cc057d795d2735f83a8ff137d39d1b8f") +} + func (PriceRegistryDestChainDynamicConfigUpdated) Topic() common.Hash { return common.HexToHash("0xd42d3a670a4f1ab5d8703efa22bb17041446365cfcfa33980ced685a080cf7cb") } @@ -2937,6 +3071,12 @@ type PriceRegistryInterface interface { ParseAuthorizedCallerRemoved(log types.Log) (*PriceRegistryAuthorizedCallerRemoved, error) + FilterDestChainAdded(opts *bind.FilterOpts, destChainSelector []uint64) (*PriceRegistryDestChainAddedIterator, error) + + WatchDestChainAdded(opts *bind.WatchOpts, sink chan<- *PriceRegistryDestChainAdded, destChainSelector []uint64) (event.Subscription, error) + + ParseDestChainAdded(log types.Log) (*PriceRegistryDestChainAdded, error) + FilterDestChainDynamicConfigUpdated(opts *bind.FilterOpts, destChainSelector []uint64) (*PriceRegistryDestChainDynamicConfigUpdatedIterator, error) WatchDestChainDynamicConfigUpdated(opts *bind.WatchOpts, sink chan<- *PriceRegistryDestChainDynamicConfigUpdated, destChainSelector []uint64) (event.Subscription, error) diff --git a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt index 5f797ec1b8..3ea6d3e50f 100644 --- a/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt +++ b/core/gethwrappers/ccip/generation/generated-wrapper-dependency-versions-do-not-edit.txt @@ -25,7 +25,7 @@ multi_aggregate_rate_limiter: ../../../contracts/solc/v0.8.24/MultiAggregateRate nonce_manager: ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.abi ../../../contracts/solc/v0.8.24/NonceManager/NonceManager.bin cdc11c1ab4c1c3fd77f30215e9c579404a6e60eb9adc213d73ca0773c3bb5784 ocr3_config_encoder: ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.abi ../../../contracts/solc/v0.8.24/IOCR3ConfigEncoder/IOCR3ConfigEncoder.bin e21180898e1ad54a045ee20add85a2793c681425ea06f66d1a9e5cab128b6487 ping_pong_demo: ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.abi ../../../contracts/solc/v0.8.24/PingPongDemo/PingPongDemo.bin 1588313bb5e781d181a825247d30828f59007700f36b4b9b00391592b06ff4b4 -price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin f1dc5cc852481faf99db4c88edeab64fee36e6f191cbd3a0b569f8619f4297b9 +price_registry: ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.abi ../../../contracts/solc/v0.8.24/PriceRegistry/PriceRegistry.bin f7f42ec570da7b855b29c9e4220ba97199351cfd21409868f85061d8ebbfeca5 registry_module_owner_custom: ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.abi ../../../contracts/solc/v0.8.24/RegistryModuleOwnerCustom/RegistryModuleOwnerCustom.bin cbe7698bfd811b485ac3856daf073a7bdebeefdf2583403ca4a19d5b7e2d4ae8 router: ../../../contracts/solc/v0.8.24/Router/Router.abi ../../../contracts/solc/v0.8.24/Router/Router.bin 42576577e81beea9a069bd9229caaa9a71227fbaef3871a1a2e69fd218216290 self_funded_ping_pong: ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.abi ../../../contracts/solc/v0.8.24/SelfFundedPingPong/SelfFundedPingPong.bin 86e169636e5633854ed0b709c804066b615040bceba25aa5137450fbe6f76fa3