0 txs
21.58m calls
constructor
constructor(address _factory, uint256 _defaultScalingFactor, uint256 _defaultFeeCap, address[] _pools, uint24[] _fees)
functions
customFee
viewfunction customFee(address _pool) view returns (uint24)
defaultFeeCap
viewfunction defaultFeeCap() view returns (uint256)
defaultScalingFactor
viewfunction defaultScalingFactor() view returns (uint256)
discounted
viewfunction discounted(address) view returns (uint24)
dynamicFeeConfig
viewfunction dynamicFeeConfig(address) view returns (uint24 baseFee, uint24 feeCap, uint64 scalingFactor)
factory
viewfunction factory() view returns (address)
getFee
viewfunction getFee(address _pool) view returns (uint24)
MAX_BASE_FEE
viewfunction MAX_BASE_FEE() view returns (uint256)
MAX_DISCOUNT
viewfunction MAX_DISCOUNT() view returns (uint256)
MAX_FEE_CAP
viewfunction MAX_FEE_CAP() view returns (uint256)
MAX_SCALING_FACTOR
viewfunction MAX_SCALING_FACTOR() view returns (uint256)
MAX_SECONDS_AGO
viewfunction MAX_SECONDS_AGO() view returns (uint32)
MIN_SECONDS_AGO
viewfunction MIN_SECONDS_AGO() view returns (uint32)
SCALING_PRECISION
viewfunction SCALING_PRECISION() view returns (uint256)
secondsAgo
viewfunction secondsAgo() view returns (uint32)
ZERO_FEE_INDICATOR
viewfunction ZERO_FEE_INDICATOR() view returns (uint256)
bulkUpdateFees
nonpayablefunction bulkUpdateFees(address[] _pools, uint24[] _fees)
deregisterDiscounted
nonpayablefunction deregisterDiscounted(address _discountOver)
registerDiscounted
nonpayablefunction registerDiscounted(address _discountReceiver, uint24 _discount)
resetDynamicFee
nonpayablefunction resetDynamicFee(address _pool)
setCustomFee
nonpayablefunction setCustomFee(address _pool, uint24 _fee)
setDefaultFeeCap
nonpayablefunction setDefaultFeeCap(uint256 _defaultFeeCap)
setDefaultScalingFactor
nonpayablefunction setDefaultScalingFactor(uint256 _defaultScalingFactor)
setFeeCap
nonpayablefunction setFeeCap(address _pool, uint24 _feeCap)
setScalingFactor
nonpayablefunction setScalingFactor(address _pool, uint64 _scalingFactor)
setSecondsAgo
nonpayablefunction setSecondsAgo(uint32 _secondsAgo)
events
CustomFeeSet
event CustomFeeSet(address indexed pool, uint24 indexed fee)
DefaultFeeCapSet
event DefaultFeeCapSet(uint256 indexed defaultFeeCap)
DefaultScalingFactorSet
event DefaultScalingFactorSet(uint256 indexed defaultScalingFactor)
DiscountedDeregistered
event DiscountedDeregistered(address indexed discountOver)
DiscountedRegistered
event DiscountedRegistered(address indexed discountReceiver, uint24 indexed discount)
DynamicFeeReset
event DynamicFeeReset(address indexed pool)
FeeCapSet
event FeeCapSet(address indexed pool, uint256 indexed feeCap)
ScalingFactorSet
event ScalingFactorSet(address indexed pool, uint256 indexed scalingFactor)
SecondsAgoSet
event SecondsAgoSet(uint32 indexed secondsAgo)
errors
No errors.
creation bytecode
0x60a06040526002805463ffffffff19166102581790553480156200002257600080fd5b50604051620022ef380380620022ef833981810160405260a08110156200004857600080fd5b8151602083015160408085015160608601805192519496939591949391820192846401000000008211156200007c57600080fd5b9083019060208201858111156200009257600080fd5b8251866020820283011164010000000082111715620000b057600080fd5b82525081516020918201928201910280838360005b83811015620000df578181015183820152602001620000c5565b50505050905001604052602001805160405193929190846401000000008211156200010957600080fd5b9083019060208201858111156200011f57600080fd5b82518660208202830111640100000000821117156200013d57600080fd5b82525081516020918201928201910280838360005b838110156200016c57818101518382015260200162000152565b50505050905001604052505050670de0b6b3a7640000841115620001bd576040805162461bcd60e51b815260206004820152600360248201526224a9a360e91b604482015290519081900360640190fd5b61c350831115620001fb576040805162461bcd60e51b81526020600482015260036024820152624d464360e81b604482015290519081900360640190fd5b6001600160601b0319606086901b16608052600084905560018390556200022485838362000285565b60405184907faccdee3168908f06c20b1d22a0720fc9310a4e0540bf5070d1f2cc3478ab4e3690600090a260405183907f7e32f98c3f8b49356115aabb08e354ae2bd994c337ff1ea63ad3e8424b346fd290600090a2505050505062000442565b815181518114620002c3576040805162461bcd60e51b81526020600482015260036024820152624c4d4d60e81b604482015290519081900360640190fd5b60008060005b838110156200043957848181518110620002df57fe5b602002602001015192506175308362ffffff161115806200030657506101a48362ffffff16145b6200033e576040805162461bcd60e51b815260206004820152600360248201526226a12360e91b604482015290519081900360640190fd5b8581815181106200034b57fe5b60200260200101519150866001600160a01b0316635b16ebb7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015620003a357600080fd5b505afa158015620003b8573d6000803e3d6000fd5b505050506040513d6020811015620003cf57600080fd5b5051620003db57600080fd5b6001600160a01b038216600081815260046020526040808220805462ffffff191662ffffff881690811790915590519092917fe2150e4054ad34f299189d809c507f52c0c572bfef0504af03f43be0870cd35491a3600101620002c9565b50505050505050565b60805160601c611e3f620004b06000398061054d528061061452806107a4528061093b5280610a055280610add5280610c405280610d075280610e905280610fca52806110dc52806112195280611333528061148752806116195280611644528061170b5250611e3f6000f3fe608060405234801561001057600080fd5b506004361061018d5760003560e01c80638c0186c6116100de578063d06152dd11610097578063da13da9111610071578063da13da911461050d578063dcf4eb2714610515578063e34955691461051d578063f6c013ef146105255761018d565b8063d06152dd146104d7578063d195d336146104df578063d71b77ae146105055761018d565b80638c0186c61461042f57806398cc7a371461044c578063a89196b614610454578063b88c914814610485578063ba743e38146104ab578063c45a0155146104b35761018d565b80635bb525ff1161014b578063689e5efa11610125578063689e5efa1461038a57806375397ff1146103bb578063838640e3146103ec578063892d3145146104095761018d565b80635bb525ff1461030b57806360b3042c14610361578063633dd145146103825761018d565b80624dd0fe146101925780631ad7b127146101ca57806338c55d46146101ed578063448384b8146102075780634d419abc1461020f57806351ac4e0b1461024d575b600080fd5b6101c8600480360360408110156101a857600080fd5b5080356001600160a01b0316906020013567ffffffffffffffff1661054b565b005b6101c8600480360360208110156101e057600080fd5b503563ffffffff166107a2565b6101f5610903565b60408051918252519081900360200190f35b6101f5610909565b6102356004803603602081101561022557600080fd5b50356001600160a01b0316610915565b6040805162ffffff9092168252519081900360200190f35b6101c86004803603604081101561026357600080fd5b810190602081018135600160201b81111561027d57600080fd5b82018360208201111561028f57600080fd5b803590602001918460208302840111600160201b831117156102b057600080fd5b919390929091602081019035600160201b8111156102cd57600080fd5b8201836020820111156102df57600080fd5b803590602001918460208302840111600160201b8311171561030057600080fd5b509092509050610939565b6103316004803603602081101561032157600080fd5b50356001600160a01b0316610a94565b6040805162ffffff948516815292909316602083015267ffffffffffffffff168183015290519081900360600190f35b610369610aca565b6040805163ffffffff9092168252519081900360200190f35b610369610acf565b6101c8600480360360408110156103a057600080fd5b5080356001600160a01b0316906020013562ffffff16610adb565b6101c8600480360360408110156103d157600080fd5b5080356001600160a01b0316906020013562ffffff16610c3e565b6101c86004803603602081101561040257600080fd5b5035610e8e565b6101c86004803603602081101561041f57600080fd5b50356001600160a01b0316610fc8565b6101c86004803603602081101561044557600080fd5b50356110da565b6101f5611211565b6101c86004803603604081101561046a57600080fd5b5080356001600160a01b0316906020013562ffffff16611217565b6102356004803603602081101561049b57600080fd5b50356001600160a01b031661142c565b6101f5611611565b6104bb611617565b604080516001600160a01b039092168252519081900360200190f35b6101f561163b565b6101c8600480360360208110156104f557600080fd5b50356001600160a01b0316611642565b6101f5611801565b610369611807565b6101f561180e565b6101f5611814565b6102356004803603602081101561053b57600080fd5b50356001600160a01b031661181b565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b1580156105a457600080fd5b505afa1580156105b8573d6000803e3d6000fd5b505050506040513d60208110156105ce57600080fd5b50516001600160a01b03163314610612576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b16ebb7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561067f57600080fd5b505afa158015610693573d6000803e3d6000fd5b505050506040513d60208110156106a957600080fd5b50516106b457600080fd5b6001600160a01b0382166000908152600460205260409020546301000000900462ffffff16158015906106f95750670de0b6b3a76400008167ffffffffffffffff1611155b610730576040805162461bcd60e51b815260206004820152600360248201526224a9a360e91b604482015290519081900360640190fd5b6001600160a01b03821660008181526004602052604080822080546dffffffffffffffff0000000000001916600160301b67ffffffffffffffff87169081029190911790915590519092917f30c247ef0dda66710b7fde1079bd6f5194755e8f285b64fb79d8124f7e42183091a35050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b1580156107fb57600080fd5b505afa15801561080f573d6000803e3d6000fd5b505050506040513d602081101561082557600080fd5b50516001600160a01b03163314610869576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b600263ffffffff82161080159061088857506201fffe63ffffffff8216105b6108bf576040805162461bcd60e51b815260206004820152600360248201526249534160e81b604482015290519081900360640190fd5b6002805463ffffffff191663ffffffff83169081179091556040517f7a30af0ec8d2cdbaa589a5d6743a47a62b12f68a8d8df30747c7fcc9c69436ad90600090a250565b6101a481565b670de0b6b3a764000081565b6001600160a01b03811660009081526004602052604090205462ffffff165b919050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b15801561099257600080fd5b505afa1580156109a6573d6000803e3d6000fd5b505050506040513d60208110156109bc57600080fd5b50516001600160a01b03163314610a00576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b610a8e7f00000000000000000000000000000000000000000000000000000000000000008585808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152505060408051602080890282810182019093528882529093508892508791829185019084908082843760009201919091525061183292505050565b50505050565b60046020526000908152604090205462ffffff808216916301000000810490911690600160301b900467ffffffffffffffff1683565b600281565b60025463ffffffff1681565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b158015610b3457600080fd5b505afa158015610b48573d6000803e3d6000fd5b505050506040513d6020811015610b5e57600080fd5b50516001600160a01b03163314610ba2576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b6207a1208162ffffff161115610be5576040805162461bcd60e51b81526020600482015260036024820152624d444360e81b604482015290519081900360640190fd5b6001600160a01b038216600081815260036020526040808220805462ffffff191662ffffff861690811790915590519092917fee3dd15d73f7ef85ed01fc28ee4377bc8f2f8ef1c7d184a76232198b5a36033a91a35050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b158015610c9757600080fd5b505afa158015610cab573d6000803e3d6000fd5b505050506040513d6020811015610cc157600080fd5b50516001600160a01b03163314610d05576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b16ebb7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b158015610d7257600080fd5b505afa158015610d86573d6000803e3d6000fd5b505050506040513d6020811015610d9c57600080fd5b5051610da757600080fd5b60008162ffffff1611610de7576040805162461bcd60e51b815260206004820152600360248201526204643360ec1b604482015290519081900360640190fd5b61c3508162ffffff161115610e29576040805162461bcd60e51b81526020600482015260036024820152624d464360e81b604482015290519081900360640190fd5b6001600160a01b038216600081815260046020526040808220805465ffffff0000001916630100000062ffffff87169081029190911790915590519092917f580e5cae1c3e7e91049a0dce5893866a73af11163fd52389d95c2117d8df053b91a35050565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b158015610ee757600080fd5b505afa158015610efb573d6000803e3d6000fd5b505050506040513d6020811015610f1157600080fd5b50516001600160a01b03163314610f55576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b670de0b6b3a7640000811115610f98576040805162461bcd60e51b815260206004820152600360248201526224a9a360e91b604482015290519081900360640190fd5b600081815560405182917faccdee3168908f06c20b1d22a0720fc9310a4e0540bf5070d1f2cc3478ab4e3691a250565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b15801561102157600080fd5b505afa158015611035573d6000803e3d6000fd5b505050506040513d602081101561104b57600080fd5b50516001600160a01b0316331461108f576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b6001600160a01b038116600081815260036020526040808220805462ffffff19169055517fe8221b863d410fc656f2cf857231979f0e9df138aea7aadc275b1e4613311d2e9190a250565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b15801561113357600080fd5b505afa158015611147573d6000803e3d6000fd5b505050506040513d602081101561115d57600080fd5b50516001600160a01b031633146111a1576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b61c3508111156111de576040805162461bcd60e51b81526020600482015260036024820152624d464360e81b604482015290519081900360640190fd5b600181905560405181907f7e32f98c3f8b49356115aabb08e354ae2bd994c337ff1ea63ad3e8424b346fd290600090a250565b61753081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b15801561127057600080fd5b505afa158015611284573d6000803e3d6000fd5b505050506040513d602081101561129a57600080fd5b50516001600160a01b031633146112de576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b6175308162ffffff161115806112fa57506101a48162ffffff16145b611331576040805162461bcd60e51b815260206004820152600360248201526226a12360e91b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b16ebb7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561139e57600080fd5b505afa1580156113b2573d6000803e3d6000fd5b505050506040513d60208110156113c857600080fd5b50516113d357600080fd5b6001600160a01b038216600081815260046020526040808220805462ffffff191662ffffff861690811790915590519092917fe2150e4054ad34f299189d809c507f52c0c572bfef0504af03f43be0870cd35491a35050565b6001600160a01b0381166000908152600460205260408120805462ffffff8082169167ffffffffffffffff600160301b820416916301000000909104166101a4831415611480576000945050505050610934565b8261158f577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663380dc1c2876001600160a01b031663d0c93a7c6040518163ffffffff1660e01b815260040160206040518083038186803b1580156114ed57600080fd5b505afa158015611501573d6000803e3d6000fd5b505050506040513d602081101561151757600080fd5b5051604080516001600160e01b031960e085901b16815260029290920b6004830152516024808301926020929190829003018186803b15801561155957600080fd5b505afa15801561156d573d6000803e3d6000fd5b505050506040513d602081101561158357600080fd5b505162ffffff16611591565b825b9250816115a15750506000546001545b60006115ad87846119e4565b840190508181106115be57816115c0565b805b3260009081526003602052604090205490915062ffffff1615611607573260009081526003602052604081205461160190839062ffffff16620f4240611d1f565b90910390505b9695505050505050565b60005481565b7f000000000000000000000000000000000000000000000000000000000000000081565b620f424081565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663d574afa96040518163ffffffff1660e01b815260040160206040518083038186803b15801561169b57600080fd5b505afa1580156116af573d6000803e3d6000fd5b505050506040513d60208110156116c557600080fd5b50516001600160a01b03163314611709576040805162461bcd60e51b81526020600482015260036024820152624e464d60e81b604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635b16ebb7826040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561177657600080fd5b505afa15801561178a573d6000803e3d6000fd5b505050506040513d60208110156117a057600080fd5b50516117ab57600080fd5b6001600160a01b03811660008181526004602052604080822080546dffffffffffffffffffffff00000019169055517fc468f70535e94886b35ff615ecae1df3a7149178689eb6db7d69861cd9247d059190a250565b61c35081565b6201fffe81565b60015481565b6207a12081565b60036020526000908152604090205462ffffff1681565b81518151811461186f576040805162461bcd60e51b81526020600482015260036024820152624c4d4d60e81b604482015290519081900360640190fd5b60008060005b838110156119db5784818151811061188957fe5b602002602001015192506175308362ffffff161115806118af57506101a48362ffffff16145b6118e6576040805162461bcd60e51b815260206004820152600360248201526226a12360e91b604482015290519081900360640190fd5b8581815181106118f257fe5b60200260200101519150866001600160a01b0316635b16ebb7836040518263ffffffff1660e01b815260040180826001600160a01b0316815260200191505060206040518083038186803b15801561194957600080fd5b505afa15801561195d573d6000803e3d6000fd5b505050506040513d602081101561197357600080fd5b505161197e57600080fd5b6001600160a01b038216600081815260046020526040808220805462ffffff191662ffffff881690811790915590519092917fe2150e4054ad34f299189d809c507f52c0c572bfef0504af03f43be0870cd35491a3600101611875565b50505050505050565b6000806000846001600160a01b0316633850c7bd6040518163ffffffff1660e01b815260040160c06040518083038186803b158015611a2257600080fd5b505afa158015611a36573d6000803e3d6000fd5b505050506040513d60c0811015611a4c57600080fd5b5060208101516060909101516002805492945090925063ffffffff90911690810463ffffffff168261ffff161015611a8a5760009350505050611d19565b6040805160028082526060820183526000926020830190803683370190505090508181600081518110611ab957fe5b63ffffffff90921660209283029190910182015260405163883bdbfd60e01b8152600481018281528351602483015283516000936001600160a01b038c169363883bdbfd938793909283926044019185820191028083838b5b83811015611b2a578181015183820152602001611b12565b505050509050019250505060006040518083038186803b158015611b4d57600080fd5b505afa925050508015611c9357506040513d6000823e601f3d908101601f191682016040908152811015611b8057600080fd5b8101908080516040519392919084600160201b821115611b9f57600080fd5b908301906020820185811115611bb457600080fd5b82518660208202830111600160201b82111715611bd057600080fd5b82525081516020918201928201910280838360005b83811015611bfd578181015183820152602001611be5565b5050505090500160405260200180516040519392919084600160201b821115611c2557600080fd5b908301906020820185811115611c3a57600080fd5b82518660208202830111600160201b82111715611c5657600080fd5b82525081516020918201928201910280838360005b83811015611c83578181015183820152602001611c6b565b5050505090500160405250505060015b611ca557600095505050505050611d19565b8463ffffffff1682600081518110611cb957fe5b602002602001015183600181518110611cce57fe5b60200260200101510360060b81611ce157fe5b05925050508085036000600282900b8113611cfc5781611d01565b816000035b620f424062ffffff9091168a02049750505050505050505b92915050565b6000611d2c848484611d5a565b905060008280611d3857fe5b8486091115611d53576000198110611d4f57600080fd5b6001015b9392505050565b6000808060001985870986860292508281109083900303905080611d905760008411611d8557600080fd5b508290049050611d53565b808411611d9c57600080fd5b6000848688096000868103871696879004966002600389028118808a02820302808a02820302808a02820302808a02820302808a02820302808a0290910302918190038190046001018684119095039490940291909403929092049190911791909102915050939250505056fea264697066735822122023205da80836e707ba0614e45f447a4b562c87949af7c42ab830e21ceb12b97564736f6c634300070600330000000000000000000000005e7bb104d84c7cb9b682aac2f3d509f5f406809a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000001440000000000000000000000000000000000000000000000000000000000000009c000000000000000000000000b2cc224c1c9fee385f8ad6a55b4d94e92359dc5900000000000000000000000047ca96ea59c13f72745928887f84c9f52c3d7348000000000000000000000000861a2922be165a5bd41b1e482b49216b465e1b5f000000000000000000000000afb62448929664bfccb0aae22f232520e765ba88000000000000000000000000dc7ead706795eda3feda08ad519d9452badf2c0d0000000000000000000000004e829f8a5213c42535ab84aa40bd4adcce9cba02000000000000000000000000f8d5df4d3408acd52a3ff54e8dbce0b3b28aa744000000000000000000000000565aecf84b5d30a6e79a5cef3f0da0fc4280debc0000000000000000000000004833fecccaa80396e9f6f6f6fa864e24750ae1e900000000000000000000000074e4c08bb50619b70550733d32b7e60424e9628e000000000000000000000000bd3cd0d9d429b41f0a2e1c026552bd598294d5e000000000000000000000000043b97febdadad12afde21baa96eb762bc26d13f30000000000000000000000002b5fd674f93e329d54371dba980a67f3ff3bc1190000000000000000000000004d69971ccd4a636c403a3c1b00c85e99bb9b560600000000000000000000000014b1ece9c009f8154dcee1710f3a65fbd21eda7f00000000000000000000000087cd18069b6547a0e88b6155dd657e71779500ea00000000000000000000000060c8a6a62874a4109b37e718c14440c44779e2700000000000000000000000007ce345561e1690445eefa0db04f59d64b65598a80000000000000000000000003d797bc54d4ba41cb105a020a56ce55f223ee2a2000000000000000000000000088c39ee29fc30df8adc394e9f7dea33e3a26507000000000000000000000000d9932a538e4c7621d9ab1b45de31a5d60e672b1c00000000000000000000000067c9abd95eb6fa27e95f1b9a702c8a86370223ad000000000000000000000000b211a9ddff3a10806c8fdb92dbc4c34596a23f84000000000000000000000000aa500dbeda452cc2807185da993b6e3779333aca00000000000000000000000082321f3beb69f503380d6b233857d5c43562e2d0000000000000000000000000c29dc26b28fff463e32834ce6325b5c74fac7098000000000000000000000000a4eb9849f46e1e9db3700bcdadb62096a7bc4aab000000000000000000000000c5caa75d63379e4fd78b5643af419a2b8e5d041000000000000000000000000095b9ff408700af5a1092cd218e33084a71e4be97000000000000000000000000defe76cd3c5c25728fd45de93b000c23048c992f0000000000000000000000002ae9df02539887d4ebce0230168a302d34784c82000000000000000000000000c5ffc8827678786de4a65f7b36287289e0710b2c000000000000000000000000178904d6f5f49074fc3fdb918f0170e0dbb1677e000000000000000000000000fd7abc461df4e496a25898cab0c6ea88cdd94cf9000000000000000000000000e782b72a1157b7bea1a9452835cce214962ad43b000000000000000000000000ebec4772aba30d82bc64bbb99187b4ca29928e2e00000000000000000000000096331fcb46a7757854d9e26aff3aca2815d623fd0000000000000000000000008007c70789b44f93bf2f2a668adaee73c5e46af00000000000000000000000009be60b89d29613da9e5163a9f4ed9cc3738d59dc00000000000000000000000061504fdfa282fe0cde0d9d2f89725ee4747285a1000000000000000000000000cedc84a17836ea69bec1a5d2a8af3ab211cb629e00000000000000000000000012ccdd646241412f2a5d44a6994aa29086dedc610000000000000000000000004ef1e503c4f1e5664ac98294d0e42ddc9c0ff961000000000000000000000000efb02e6287bb46ac9196de3e4120e3749e8de59a000000000000000000000000de5ff829fef54d1bdec957d9538a306f0ead13680000000000000000000000005f94ad60d862fd34c98b463614f3a64363f90fee0000000000000000000000003aa6e2b5a4217e41c75efa23ddc388325b95cfe2000000000000000000000000f9b787c6e6111442778a9f6f8850f2d446d44a7c0000000000000000000000008d628d22d298b4a6e3dc9171d4b7aa5229e2353c00000000000000000000000066cf97095c07de36ca947de946ec3a6ae5cc59410000000000000000000000009efdf5b3e05e52c2957bda3e89ea35c5296a78f00000000000000000000000006f8e210030f6ee6933b032628a0e148a1ccff6a6000000000000000000000000ad04be2b6613586f83049d5953611baa23971340000000000000000000000000919e084bdc0b4b58513c6d9f2b0a3f40dabc9d6d000000000000000000000000988702fe529a3461ec7fd09eea3f962856709fd900000000000000000000000075118b598433430da15fb1340e486461f2a7c07f0000000000000000000000001a0df4c294b4ccc947c948c6840ec8f5c98c7ead000000000000000000000000a01a2513e95263b9bace60b573ce874e1e7a5246000000000000000000000000a19acc3b4f11c46c2b1fc36b5f592af422ee338c000000000000000000000000c286ecd3910c62df30fbbfd2c95a3043076d39120000000000000000000000000a7021c9843c2fb3b98c02ed7f93354774286109000000000000000000000000220cd22a10f4b1fa1b8fb42d707ff0b9642c7dd80000000000000000000000004961c5380d8b3fdf6c14cbf5f122962db42ede0f00000000000000000000000051c230951b82dbf7b8696b6fcd2be199cc10779f000000000000000000000000a4463789e8f3c6a599b3dfb608dde55513bcf28900000000000000000000000086c1e27208c81484cb467a70ce26d7a9ad1d183f0000000000000000000000005904b467d8ff78675384e121fdb63d5831d3b7fd000000000000000000000000a7423f6bec29a511d365b0c934e8000720128ae3000000000000000000000000cf88b8bf7ccce2d836878e538197eb20fc673bce000000000000000000000000326841efd63340767e02ec88e583f18a82af4a480000000000000000000000009785ef59e2b499fb741674ecf6faf912df7b3c1b000000000000000000000000fd22d75b2fb405ee185155d57b0277b9db2f8e290000000000000000000000003333e1d9174720d6ec2cf815e65b82915a9eae1e000000000000000000000000fad14c545e464e04c737d00643296144eb20c7f80000000000000000000000006446021f4e396da3df4235c62537431372195d380000000000000000000000008dd9751961621fcfc394d90969e5ae0c5babe1470000000000000000000000003cacb8007d50f3e4166d7c5fd303c1a6ed3375310000000000000000000000004510f0822a40f28c83d9bc91b4e49246058a94b3000000000000000000000000a09c286813ca11e842eb940397504e7d4b5772650000000000000000000000000511a888d009029781f34696996742b0a55db5850000000000000000000000004ba1e3e9280facbacafa7baf4ae0b78bea60beca000000000000000000000000b378137c90444bbcecd44a1f766851fbf53d2a9e0000000000000000000000001da71ce5ebf772f9fdd44e29bec53c7185e188ba00000000000000000000000008361c463c8ec4fc1c7addfadb006f5ca7951fc1000000000000000000000000090d9c28e1edca0e693a9e553b256e07ca2af0210000000000000000000000005d7411a51442d287d742ffefc02658d2c9865f29000000000000000000000000aea775cb2879f54e197ec085f9bb08e4b59f1d9e000000000000000000000000f4cb4506281f9385816b7411563cd5c07bda8453000000000000000000000000af61a867867a95836a08a025220f8e6879f8badb00000000000000000000000024ee0b4dcce323a03fba842190ceaa451ff7ca5b0000000000000000000000006bfdf73dc419f2d9393af8e68459491395ea88a20000000000000000000000006641ffd33cf3ef95c75f2afc75a4791cd2c1b4480000000000000000000000002c206c7de24787f85b5c52d2ea339adc6d5af40f000000000000000000000000a4513d1f6bda04bd733462b58d1790514ddcf5de000000000000000000000000bba4bca62dc6ac976b160f4f513e517d3326759f0000000000000000000000004af439d988328a62c6206c75bbbaab9b23f7b16e000000000000000000000000e48582f49989fb7d2b880e810072d1bbc9b071cb000000000000000000000000c200f21efe67c7f41b81a854c26f9cda805930650000000000000000000000003c5428b3d6e07f6de38b0c7f84ea9d30b3b27231000000000000000000000000b6b777577a05d85ffca7d9ebc7476fb344b92445000000000000000000000000ce8893c143059e7359d261a7ae4bab7273cd0c270000000000000000000000005d332dc44fac918e66d335fb874fdcdab73560c2000000000000000000000000aef61f2410b14626157c950ceee2ddac90195250000000000000000000000000b6f851fb32e1f586595f2d322f93beb7b764b055000000000000000000000000c5e51044eb7318950b1afb044fccfb25782c48c1000000000000000000000000346edb1aaa704df6ddbfc604724aafcdc12b2fed0000000000000000000000003ba9ce0f19cf3ccb631b973c83712c7e6e9585ae000000000000000000000000a7c2693022cfb693c198eaa743e9b54d7921588e0000000000000000000000006bce1aaa2efe9de37bec193f3499484082b261c2000000000000000000000000140511dbe5bcad98993e8ded6d0c2190101fa70900000000000000000000000058c5649e6bc93969f4530673e8892faf762cc7e700000000000000000000000080fda26eef8eaefbbb2c75b84bf351c99c2a6d4700000000000000000000000022a52bb644f855ebd5ca2edb643ff70222d70c3100000000000000000000000052f38a65dab3cf23478cc567110bec90162ab832000000000000000000000000d23fe2db317e1a96454a2d1c7e8fc0dbf19bb000000000000000000000000000948e80fbb383694b462f79557a3a44a25416dc72000000000000000000000000dfe5f275020def30993f042174fc2d335678b626000000000000000000000000db20b9455deb2d616727cbdae4ac9f8eeb9ac899000000000000000000000000b5f0b4ae66c14f7efaa9aa1468e8fc536a3e288c000000000000000000000000eb4ab2038ef5662ff00acabbb76a09abd7440d1000000000000000000000000003cd22d89bba07b109b869da1b5fd344d0ad6b40000000000000000000000000bae6f0e8d43e6158d3df940b332adc75beeba75f000000000000000000000000a1b6f148f208ffe9eb04c68bcbfea3525f2536d60000000000000000000000002a36148a416cba81699b555120bd65f4682bdfd200000000000000000000000047f6f4b438b9d91e7387d6c1cf953a86bf5de1a5000000000000000000000000cc08a1870681a41e2ffdbfacd6eb21ca64b3861d000000000000000000000000512dbfba265c5279377d6305b49fdd722043252c0000000000000000000000009d029df22ceefc6245d382a41bc232c8dc988bf90000000000000000000000007c42dd1556754be827e187ce0870e70c5e571f350000000000000000000000008a86610952343beff5f1a906fd5bd9185c031a9000000000000000000000000028a9ec9928a689410e82e579fd9418fbbf6452f300000000000000000000000079eaaf090d3a84a313ad620edd7e8d8fb02f167d00000000000000000000000048d0cc084d274889131986925fb3b348a4405811000000000000000000000000016df91005f30039c9f1a89b44db5e8c6061360300000000000000000000000054cdd0222df6b3bc17754c2c1b3d7d4203fe3d89000000000000000000000000b7068556049df8fb3ae77ccbb9611fe0e85b2641000000000000000000000000fd4f716cb3c493afddd40c67d3f42426aeb2d9020000000000000000000000009f1d904d8a68032fdf093bce1550631e9d540695000000000000000000000000ee16ce7cf7f4714c9fc20463ab6c5223e826a2eb0000000000000000000000005535b3174f3d335c87475e54d3682099c1f9fb700000000000000000000000003f0296bf652e19bca772ec3df08b32732f93014a000000000000000000000000b0f400ded843b39370b059ad49acff6eb7365eef000000000000000000000000eda5c8f08e92e6983ae29ab2d5dc244342bf70c80000000000000000000000001807af3897aa6419e770d4642df7b8b06e542c02000000000000000000000000984faeed533d60b53f142ad76b629d64849ea5070000000000000000000000001d6aaa7ae38856fffc37e5e3c99d1c392631f450000000000000000000000000027256310ddd3773bc410f1cbd83524c42321cd0000000000000000000000000a0e2bac96ab51c92d3284781aee1eec817f6f9c20000000000000000000000000675d5771434e8bb2e4ef74abb8c3368056974b6000000000000000000000000cdd442e2de893c07146b2f1072f8e077559f9aa40000000000000000000000000c40e7f5b43f6759060a3c4d2fb406dfecf03b5700000000000000000000000046d398a5b33709877f50c8918a7ee96f1be1d7dd000000000000000000000000f626a16a51af59306912fbab692d7d10ec4857010000000000000000000000007ec6c9d993d9832aa654593f2dbc21303650bc6c000000000000000000000000c96fa108b551e24609ba22f177a652ffaa05e3a5000000000000000000000000b099c658e784b41ee435d48a8eb67e8f27285c93000000000000000000000000000000000000000000000000000000000000009c000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000190000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000005dc00000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000003e800000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000138800000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000177000000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000004e200000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000000a8c00000000000000000000000000000000000000000000000000000000000001900000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000000640000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000a8c000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000013880000000000000000000000000000000000000000000000000000000000000bb800000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000a8c00000000000000000000000000000000000000000000000000000000000009c40000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000012c0000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000000000000000177000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000000a8c000000000000000000000000000000000000000000000000000000000000232800000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000000a8c000000000000000000000000000000000000000000000000000000000000177000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000000a8c00000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001b5800000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000001b58000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000002328000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000001b580000000000000000000000000000000000000000000000000000000000001388000000000000000000000000000000000000000000000000000000000000232800000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000000a8c0000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000000bb8000000000000000000000000000000000000000000000000000000000000232800000000000000000000000000000000000000000000000000000000000017700000000000000000000000000000000000000000000000000000000000001770000000000000000000000000000000000000000000000000000000000000019000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000000000000000000000000000000000000000023280000000000000000000000000000000000000000000000000000000000001f400000000000000000000000000000000000000000000000000000000000000bb80000000000000000000000000000000000000000000000000000000000001f40000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000009c400000000000000000000000000000000000000000000000000000000000009c4