@whetstone-research/doppler-sdk 1.0.39 → 1.0.41

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/evm/index.js CHANGED
@@ -1,162 +1,177 @@
1
1
  import '../chunk-PZ5AY32C.js';
2
- import { parseEther, formatEther, getAddress, encodeAbiParameters, keccak256, isAddress, zeroAddress, decodeEventLog, decodeAbiParameters, encodePacked, toHex, ContractFunctionRevertedError, ExecutionRevertedError, BaseError, encodeFunctionData, erc20Abi, zeroHash, multicall3Abi, decodeFunctionResult, ContractFunctionZeroDataError, isHex, decodeErrorResult } from 'viem';
2
+ import { parseEther, formatEther, getAddress, encodeAbiParameters, keccak256, isAddress, zeroAddress, decodeEventLog, encodePacked, toHex, decodeAbiParameters, ContractFunctionRevertedError, ExecutionRevertedError, BaseError, encodeFunctionData, erc20Abi, parseEventLogs, isAddressEqual, zeroHash, multicall3Abi, decodeFunctionResult, ContractFunctionZeroDataError, decodeErrorResult } from 'viem';
3
3
 
4
4
  // src/evm/deployments.generated.ts
5
5
  var GENERATED_DOPPLER_DEPLOYMENTS = {
6
6
  "1": {
7
7
  Airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
8
8
  Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
9
- DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
10
- DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
11
- DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
12
- DopplerERC20V1Factory: "0x89C261C05B5F9b6BcBA07C199b8DeE7cFaD45292",
9
+ DN404Factory: "0x2615cfB676925949312B34069Ee477205e49Ae0A",
10
+ DopplerCreateXDeployer: "0x00000000005caf9bA78B1dFa98C47d9BF76Db8b8",
11
+ DopplerDeployer: "0x95e91A1A24834aeB4e8d253D9247ae1F4E36B085",
12
+ DopplerERC20V1: "0xeDf3f3981E98077591c1B909BCCff0e572bD50f8",
13
+ DopplerERC20V1Factory: "0xf1542Dd2D46394C16372FB00f2c339b53CeF2cE5",
13
14
  DopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
14
- DopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
15
+ DopplerHookMigrator: "0xb3B7ceE86eF22fe1c3212B48efeBc1AB4B7220C4",
15
16
  GovernanceFactory: "0x9F309D79BEe3E8b2f56FaCF74b7195Df176c8F61",
16
17
  LaunchpadGovernanceFactory: "0x2A8DA67F277442cFF7Dc2143e52Fdd0cBF5A8175",
17
- LockableUniswapV3Initializer: "0xA2E0435225D52a8B950122752978007D758056d7",
18
+ LockableUniswapV3Initializer: "0xD09dEd1867d885fcDB41ADC957165D04aE917683",
18
19
  NoOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
19
20
  NoOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5",
20
- Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
21
- RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
22
- RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
23
- StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
21
+ Quoter: "0x0a4070Fd5FDac83E576ed6Bba30BE8db10B2299E",
22
+ RehypeDopplerHookInitializer: "0xe2AEbc987592593b667ec29178D0A83929Db78b6",
23
+ StreamableFeesLockerV2: "0xA8Bdf3A8e9415C4ec1FF55899c34105E0FD66375",
24
24
  TimelockFactory: "0x9fd40af2baAfAF03513f091444e821c0d5b06ea0",
25
- TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
26
- UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
27
- UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
28
- UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
25
+ UniswapV2Locker: "0xEa7f0777a6FD7BB6Dfff290aE44154c75DAAa5cA",
26
+ UniswapV2MigratorSplit: "0x44E30C4724DB30E4170cBC160D17e1a1aFf2f21F",
27
+ UniswapV4Initializer: "0xFDFD7D27089f306eEF279b5DA6BFe878250cB6bb"
28
+ },
29
+ "56": {
30
+ Airlock: "0x14870A3282bd707b252e3C0f356A68B4c8F6D2ff",
31
+ Bundler: "0x3d1adeD02C8658c8679B3E1432e276FccC90Da43",
32
+ DN404Factory: "0x46Af39801ACA4A3Fe4b6e42ABec7BB5675CfC693",
33
+ DopplerCreateXDeployer: "0x00000000005caf9bA78B1dFa98C47d9BF76Db8b8",
34
+ DopplerDeployer: "0x1507d177085FC9840BB321a60CB397069F952b34",
35
+ DopplerERC20V1: "0xD26E23c3f83CC40a50469abA9E97F905e2b2256c",
36
+ DopplerERC20V1Factory: "0xFB5120a4d3c69BCeBD138986A87fae2fD0DDC893",
37
+ DopplerHookInitializer: "0xF0d631d54c7e1040CCFa1c2ed737973D6A652544",
38
+ DopplerHookMigrator: "0x425C16133940f66824dBd6347610D93e44C360c4",
39
+ DopplerLensQuoter: "0x11c420Bdf1d82831516ad118717F2EA03bF86Ea1",
40
+ GovernanceFactory: "0x42c3B403f82406B72d380404E835eD35E580c03f",
41
+ LaunchpadGovernanceFactory: "0xFDcAAd19744d2C723862fF49e85139cBEf76Ec14",
42
+ LockableUniswapV3Initializer: "0xAfc12583675A5d2F7D1dF8B7765B67fB192C3034",
43
+ NoOpGovernanceFactory: "0x7f604b5A8096b06d2CC305b6a843829Eea9F4ba9",
44
+ NoOpMigrator: "0x95eC4FD6d64Df5299F6dEDaA5dF96E45836c5781",
45
+ Quoter: "0x30fb0c09e2Fc575DfA2BC6eAA9852ddEB21dce1c",
46
+ RehypeDopplerHookInitializer: "0xA7465b9d101cf3B2381D6CD42f2C5E72f9453984",
47
+ StreamableFeesLockerV2: "0x64e811c32eeFBfEe1BEb0fE068A7794Df0119ad9",
48
+ SwapRestrictorDopplerHook: "0xC8B56E57C592f542574EcD4293082dE856d67a58",
49
+ TimelockFactory: "0x7bc626670e2bb5AC23D0c1640B311166ef255C18",
50
+ UniswapV2Locker: "0x7a3Ac7Cb49DDb0D2BDAEe6e892C3B36b8d6a00cA",
51
+ UniswapV2MigratorSplit: "0x873d88786F9Fb3E233b97a5cDf588242B9862A44",
52
+ UniswapV4Initializer: "0x9430C153A5cd86Fa61d8c130f87a3C24Ad07cD43"
29
53
  },
30
54
  "143": {
31
55
  Airlock: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12",
32
56
  Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
33
- DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
34
- DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
35
- DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
36
- DopplerERC20V1Factory: "0x89C261C05B5F9b6BcBA07C199b8DeE7cFaD45292",
57
+ DN404Factory: "0x2615cfB676925949312B34069Ee477205e49Ae0A",
58
+ DopplerCreateXDeployer: "0x00000000005caf9bA78B1dFa98C47d9BF76Db8b8",
59
+ DopplerDeployer: "0x95e91A1A24834aeB4e8d253D9247ae1F4E36B085",
60
+ DopplerERC20V1: "0xeDf3f3981E98077591c1B909BCCff0e572bD50f8",
61
+ DopplerERC20V1Factory: "0xf1542Dd2D46394C16372FB00f2c339b53CeF2cE5",
37
62
  DopplerHookInitializer: "0x56ea13Da5f39863D3B3d54826187306Af7ada544",
38
- DopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
63
+ DopplerHookMigrator: "0xb3B7ceE86eF22fe1c3212B48efeBc1AB4B7220C4",
39
64
  GovernanceFactory: "0xFAafdE6a5b658684cC5eb0C5c2c755B00A246F45",
40
65
  LaunchpadGovernanceFactory: "0x5FBe931dc4B923A7abe4c47aD68d5bF9Eda5B76D",
41
- LockableUniswapV3Initializer: "0x8b4C7DB9121FC885689C0A50D5a1429F15AEc2a0",
66
+ LockableUniswapV3Initializer: "0xD09dEd1867d885fcDB41ADC957165D04aE917683",
42
67
  NoOpGovernanceFactory: "0xb4deE32EB70A5E55f3D2d861F49Fb3D79f7a14d9",
43
68
  NoOpMigrator: "0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731",
44
- Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
45
- RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
46
- RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
47
- StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
69
+ Quoter: "0x0a4070Fd5FDac83E576ed6Bba30BE8db10B2299E",
70
+ RehypeDopplerHookInitializer: "0xe2AEbc987592593b667ec29178D0A83929Db78b6",
71
+ StreamableFeesLockerV2: "0xA8Bdf3A8e9415C4ec1FF55899c34105E0FD66375",
48
72
  TimelockFactory: "0x44610355465c1F5914C8B8ea0E7c887CC67459b2",
49
- TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
50
- UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
51
- UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
52
- UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
73
+ UniswapV2Locker: "0xEa7f0777a6FD7BB6Dfff290aE44154c75DAAa5cA",
74
+ UniswapV2MigratorSplit: "0x44E30C4724DB30E4170cBC160D17e1a1aFf2f21F",
75
+ UniswapV4Initializer: "0xFDFD7D27089f306eEF279b5DA6BFe878250cB6bb"
53
76
  },
54
77
  "4663": {
55
78
  Airlock: "0xeb7C034704eF8Dcd2D32324c1545f62fB4aD0862",
56
79
  Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
57
- DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
58
- DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
59
- DopplerDeployer: "0x4389AD34938B14F25cff7ED983c53f5a42A2573f",
60
- DopplerERC20V1: "0x3Be8B97Fd0e713B5aBE0649Fa830223B6B4BC599",
61
- DopplerERC20V1Factory: "0x1B37D3a72082029c44B35B604Ea473617580b69a",
80
+ DN404Factory: "0x2615cfB676925949312B34069Ee477205e49Ae0A",
81
+ DopplerCreateXDeployer: "0x00000000005caf9bA78B1dFa98C47d9BF76Db8b8",
82
+ DopplerDeployer: "0x95e91A1A24834aeB4e8d253D9247ae1F4E36B085",
83
+ DopplerERC20V1: "0xeDf3f3981E98077591c1B909BCCff0e572bD50f8",
84
+ DopplerERC20V1Factory: "0xf1542Dd2D46394C16372FB00f2c339b53CeF2cE5",
62
85
  DopplerHookInitializer: "0x4e3468951D49f2EEa976eD0D6e75fFCb44a9a544",
63
- DopplerHookMigrator: "0x7BF319d8e969f7596B1Bc171Da9ce322f67Ae0c4",
86
+ DopplerHookMigrator: "0xb3B7ceE86eF22fe1c3212B48efeBc1AB4B7220C4",
64
87
  DopplerLensQuoter: "0xf4c22465532f64777FfcD7770831AEca38F35c04",
65
88
  GovernanceFactory: "0xDeb0447DAE3EB177c4dbA8bBCCCa25c8F273B7ef",
66
89
  LaunchpadGovernanceFactory: "0xdb036746D65DD52126b1915f1AdF555e6C5237Cf",
67
- LockableUniswapV3Initializer: "0xde8886A0019Ea060B8378Ee37b8A23b8117F29A3",
90
+ LockableUniswapV3Initializer: "0xD09dEd1867d885fcDB41ADC957165D04aE917683",
68
91
  NoOpGovernanceFactory: "0x85f37f74Ef2478A770318bc810177a9835911aD7",
69
92
  NoOpMigrator: "0xba2F330EDb16cD8056f5988d8CE19BbC63475A0e",
70
- Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
71
- RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
72
- RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
73
- StreamableFeesLockerV2: "0x7B6147AC3F615bdb764e7EbD5f517dac1AD163B8",
93
+ Quoter: "0x0a4070Fd5FDac83E576ed6Bba30BE8db10B2299E",
94
+ RehypeDopplerHookInitializer: "0xe2AEbc987592593b667ec29178D0A83929Db78b6",
95
+ StreamableFeesLockerV2: "0xA8Bdf3A8e9415C4ec1FF55899c34105E0FD66375",
74
96
  SwapRestrictorDopplerHook: "0xC16c826F75338A5Ea626f94f8992191B4ce5abA2",
75
97
  TimelockFactory: "0x6076fdDFCaC0dD980e0350dfF5239feC3f86C578",
76
- TopUpDistributor: "0x46adee7595d48b1Ec53090e9bc78e1E69Fa0eF06",
77
- UniswapV2Locker: "0x63f6Efe03F25A8C6650b38d05C5a454051d642a5",
78
- UniswapV2MigratorSplit: "0xB05046cEa797c993FB5b583098B1c4682e9Da333",
79
- UniswapV4Initializer: "0x6cce158B6D1747617fc218592B4D60B239B957ea"
98
+ UniswapV2Locker: "0xEa7f0777a6FD7BB6Dfff290aE44154c75DAAa5cA",
99
+ UniswapV2MigratorSplit: "0x44E30C4724DB30E4170cBC160D17e1a1aFf2f21F",
100
+ UniswapV4Initializer: "0xFDFD7D27089f306eEF279b5DA6BFe878250cB6bb"
80
101
  },
81
102
  "8453": {
82
103
  Airlock: "0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12",
83
104
  Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
84
- DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
85
- DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
86
- DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
87
- DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
88
- DopplerERC20V1Factory: "0x89C261C05B5F9b6BcBA07C199b8DeE7cFaD45292",
105
+ DN404Factory: "0x2615cfB676925949312B34069Ee477205e49Ae0A",
106
+ DopplerCreateXDeployer: "0x00000000005caf9bA78B1dFa98C47d9BF76Db8b8",
107
+ DopplerDeployer: "0x95e91A1A24834aeB4e8d253D9247ae1F4E36B085",
108
+ DopplerERC20V1: "0xeDf3f3981E98077591c1B909BCCff0e572bD50f8",
109
+ DopplerERC20V1Factory: "0xf1542Dd2D46394C16372FB00f2c339b53CeF2cE5",
89
110
  DopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
90
- DopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
111
+ DopplerHookMigrator: "0xb3B7ceE86eF22fe1c3212B48efeBc1AB4B7220C4",
91
112
  DopplerLensQuoter: "0x43d0D97EC9241A8F05A264f94B82A1d2E600f2B3",
92
113
  GovernanceFactory: "0xa82c66b6ddEb92089015C3565E05B5c9750b2d4B",
93
114
  LaunchpadGovernanceFactory: "0x40Bcb4dDA3BcF7dba30C5d10c31EE2791ed9ddCa",
94
- LockableUniswapV3Initializer: "0xE0dC4012AC9C868F09c6e4b20d66ED46D6F258d0",
115
+ LockableUniswapV3Initializer: "0xD09dEd1867d885fcDB41ADC957165D04aE917683",
95
116
  NoOpGovernanceFactory: "0xe7dfbd5b0A2C3B4464653A9beCdc489229eF090E",
96
117
  NoOpMigrator: "0x6ddfED58D238Ca3195E49d8ac3d4cEa6386E5C33",
97
- Quoter: "0xce6cd4E35447E05A39A50A4bCf61f2DcD93A8f0D",
98
- RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
99
- RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
100
- StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
118
+ Quoter: "0x0a4070Fd5FDac83E576ed6Bba30BE8db10B2299E",
119
+ RehypeDopplerHookInitializer: "0xe2AEbc987592593b667ec29178D0A83929Db78b6",
120
+ StreamableFeesLockerV2: "0xA8Bdf3A8e9415C4ec1FF55899c34105E0FD66375",
101
121
  TimelockFactory: "0xa636bD5F9179E80e9EdB371Ed90956fA5ebdCB33",
102
- TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
103
- UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
104
- UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
105
- UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
122
+ UniswapV2Locker: "0xEa7f0777a6FD7BB6Dfff290aE44154c75DAAa5cA",
123
+ UniswapV2MigratorSplit: "0x44E30C4724DB30E4170cBC160D17e1a1aFf2f21F",
124
+ UniswapV4Initializer: "0xFDFD7D27089f306eEF279b5DA6BFe878250cB6bb"
106
125
  },
107
126
  "42161": {
108
127
  Airlock: "0xeb7C034704eF8Dcd2D32324c1545f62fB4aD0862",
109
128
  Bundler: "0xf45588E8e0B1df9dB9ae7E20eCE5726AE931357c",
110
- DN404Factory: "0x37A9Fa204a4d3A429FDED7e3469ab076C854Bc9d",
111
- DopplerCreateXDeployer: "0x103004E50Bed65DFBa30dD9c264B6BdF5e529B83",
112
- DopplerDeployer: "0x4389AD34938B14F25cff7ED983c53f5a42A2573f",
113
- DopplerERC20V1: "0x3Be8B97Fd0e713B5aBE0649Fa830223B6B4BC599",
114
- DopplerERC20V1Factory: "0x1B37D3a72082029c44B35B604Ea473617580b69a",
129
+ DN404Factory: "0x2615cfB676925949312B34069Ee477205e49Ae0A",
130
+ DopplerCreateXDeployer: "0x00000000005caf9bA78B1dFa98C47d9BF76Db8b8",
131
+ DopplerDeployer: "0x95e91A1A24834aeB4e8d253D9247ae1F4E36B085",
132
+ DopplerERC20V1: "0xeDf3f3981E98077591c1B909BCCff0e572bD50f8",
133
+ DopplerERC20V1Factory: "0xf1542Dd2D46394C16372FB00f2c339b53CeF2cE5",
115
134
  DopplerHookInitializer: "0xAa7f809BB3752f715fA2e418230667C382A56544",
116
- DopplerHookMigrator: "0x7BF319d8e969f7596B1Bc171Da9ce322f67Ae0c4",
135
+ DopplerHookMigrator: "0xb3B7ceE86eF22fe1c3212B48efeBc1AB4B7220C4",
117
136
  DopplerLensQuoter: "0xf4c22465532f64777FfcD7770831AEca38F35c04",
118
137
  GovernanceFactory: "0xDeb0447DAE3EB177c4dbA8bBCCCa25c8F273B7ef",
119
138
  LaunchpadGovernanceFactory: "0xdb036746D65DD52126b1915f1AdF555e6C5237Cf",
120
- LockableUniswapV3Initializer: "0xde8886A0019Ea060B8378Ee37b8A23b8117F29A3",
139
+ LockableUniswapV3Initializer: "0xD09dEd1867d885fcDB41ADC957165D04aE917683",
121
140
  NoOpGovernanceFactory: "0x85f37f74Ef2478A770318bc810177a9835911aD7",
122
141
  NoOpMigrator: "0xba2F330EDb16cD8056f5988d8CE19BbC63475A0e",
123
- Quoter: "0xc9Be59b344Ec66547A4C697aa374e959D59b0567",
124
- RehypeDopplerHookInitializer: "0x5F9eB5f6726Fe88D5e39867967F5b833d2fA3215",
125
- RehypeDopplerHookMigrator: "0x660740D7d6Fb2C8998Fa3ffF459cceB9Ac12C84B",
126
- StreamableFeesLockerV2: "0xEd822828B6109d16a9D362b8146a35789E0064f5",
142
+ Quoter: "0x0a4070Fd5FDac83E576ed6Bba30BE8db10B2299E",
143
+ RehypeDopplerHookInitializer: "0xe2AEbc987592593b667ec29178D0A83929Db78b6",
144
+ StreamableFeesLockerV2: "0xA8Bdf3A8e9415C4ec1FF55899c34105E0FD66375",
127
145
  SwapRestrictorDopplerHook: "0xC16c826F75338A5Ea626f94f8992191B4ce5abA2",
128
146
  TimelockFactory: "0x6076fdDFCaC0dD980e0350dfF5239feC3f86C578",
129
- TopUpDistributor: "0x46adee7595d48b1Ec53090e9bc78e1E69Fa0eF06",
130
- UniswapV2Locker: "0x63f6Efe03F25A8C6650b38d05C5a454051d642a5",
131
- UniswapV2MigratorSplit: "0xB05046cEa797c993FB5b583098B1c4682e9Da333",
132
- UniswapV4Initializer: "0x6cce158B6D1747617fc218592B4D60B239B957ea"
147
+ UniswapV2Locker: "0xEa7f0777a6FD7BB6Dfff290aE44154c75DAAa5cA",
148
+ UniswapV2MigratorSplit: "0x44E30C4724DB30E4170cBC160D17e1a1aFf2f21F",
149
+ UniswapV4Initializer: "0xFDFD7D27089f306eEF279b5DA6BFe878250cB6bb"
133
150
  },
134
151
  "84532": {
135
152
  Airlock: "0x3411306Ce66c9469BFF1535BA955503c4Bde1C6e",
136
153
  AirlockMultisigTestnet: "0x0abCf819FD57C9f0141628410fFC273405E44426",
137
154
  Bundler: "0xDdDDDd67579B73fDdFf301DB92Fd4A01afD4613a",
138
- DN404Factory: "0x98b0Aa2e0f134dbB3eb157b5646D387E6D55243a",
155
+ DN404Factory: "0xbD20597B6376E9056BbA15601e556EEF3eB44F83",
139
156
  DopplerCreateXDeployer: "0x0000000000f13Ab5b685F03A412A26719aB6bE60",
140
- DopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
141
- DopplerERC20V1: "0xDB7B520bb5C3a2C5d4871198081911359f93be87",
142
- DopplerERC20V1Factory: "0x89C261C05B5F9b6BcBA07C199b8DeE7cFaD45292",
157
+ DopplerDeployer: "0x1627fcA0e58Ec93a05501186b9C03EAb4ff95980",
158
+ DopplerERC20V1: "0x4f55DcE9D51cC23Ab2B1D1bF83f6e59faf059500",
159
+ DopplerERC20V1Factory: "0x44608064ee36d80AcfeA2423A93c2E4CCe0e8AC4",
143
160
  DopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
144
- DopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
161
+ DopplerHookMigrator: "0xF472D5790D8D363B7aA48FE196a170F02dB720c4",
145
162
  DopplerLensQuoter: "0x4a8d81Db741248a36D9eb3bc6eF648Bf798B47a7",
146
163
  GovernanceFactory: "0x9dBFaaDC8c0cB2c34bA698DD9426555336992e20",
147
164
  LaunchpadGovernanceFactory: "0x0902e7C7207df8ed6303Aef4382bcab181b5fBFA",
148
- LockableUniswapV3Initializer: "0x16AdA5Be50C3c2D94Af5fEae6b539C40A78Ad53c",
165
+ LockableUniswapV3Initializer: "0x6F8874B1A71516B20146552c671B9b8B1c69a93a",
149
166
  NoOpGovernanceFactory: "0x7bD798fafC99A3b17E261F8308A8C11B56935ea1",
150
167
  NoOpMigrator: "0xF11066abbd329ac4bBA39455340539322C222eb0",
151
- Quoter: "0xc20347a97646ed6e2B45DBfEcE372f68d928ec0a",
152
- RehypeDopplerHookInitializer: "0xAdB90eF4dc001CFB81ecADEd2CDbda7D18487606",
153
- RehypeDopplerHookMigrator: "0x5E2A91F8eBE288e0AA76a0C1A47877Ded801e90d",
154
- StreamableFeesLockerV2: "0xcE3212e6536F33cD6fbFEE265224131353Ca3D47",
168
+ Quoter: "0xE0e3FC24605D1a07D41DEf02DB1584d23106d7eb",
169
+ RehypeDopplerHookInitializer: "0xcbAc195F99df4433D7Bf07Df22993f55AF8c9A8e",
170
+ StreamableFeesLockerV2: "0x0a13aE3DbEB8D332987706FE581600D4bc1a98b7",
155
171
  TimelockFactory: "0x80F42ECCc91177D39E20f1A88A54D231c1b086a2",
156
- TopUpDistributor: "0x435312320C0330B1999746753551CdFbD83aD814",
157
- UniswapV2Locker: "0x06731e30df4B0209ED19C39Ba8eD253e17b0E495",
158
- UniswapV2MigratorSplit: "0xD7abA5f1d80a330a6fe9E96F7bA122710E0912d3",
159
- UniswapV4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad"
172
+ UniswapV2Locker: "0x270f7A3e488f26C1129b6EeC55ADbED4945946B7",
173
+ UniswapV2MigratorSplit: "0xEf253DaF7624BC1d76c5b98b24764F79cE2afA6B",
174
+ UniswapV4Initializer: "0x8239d2a4cE4a5EA94DFb489Ab0A13de51d3dEb8D"
160
175
  }
161
176
  };
162
177
  var WAD = 10n ** 18n;
@@ -203,8 +218,8 @@ var DEFAULT_V3_START_TICK = 175e3;
203
218
  var DEFAULT_V3_END_TICK = 225e3;
204
219
  var DEFAULT_V3_NUM_POSITIONS = 15;
205
220
  var DEFAULT_V3_FEE = 1e4;
206
- var DEFAULT_V3_INITIAL_VOTING_DELAY = 172800;
207
- var DEFAULT_V3_INITIAL_VOTING_PERIOD = 1209600;
221
+ var DEFAULT_V3_INITIAL_VOTING_DELAY = SECONDS_PER_DAY;
222
+ var DEFAULT_V3_INITIAL_VOTING_PERIOD = 7 * SECONDS_PER_DAY;
208
223
  var DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD = 0n;
209
224
  var DEFAULT_V3_VESTING_DURATION = BigInt(SECONDS_PER_YEAR);
210
225
  var DEFAULT_V3_INITIAL_SUPPLY = parseEther("1000000000");
@@ -212,8 +227,8 @@ var DEFAULT_V3_NUM_TOKENS_TO_SELL = parseEther("900000000");
212
227
  var DEFAULT_V3_YEARLY_MINT_RATE = parseEther("0.02");
213
228
  var DEFAULT_V3_PRE_MINT = parseEther("9000000");
214
229
  var DEFAULT_V3_MAX_SHARE_TO_BE_SOLD = parseEther("0.35");
215
- var DEFAULT_V4_INITIAL_VOTING_DELAY = 7200;
216
- var DEFAULT_V4_INITIAL_VOTING_PERIOD = 50400;
230
+ var DEFAULT_V4_INITIAL_VOTING_DELAY = SECONDS_PER_DAY;
231
+ var DEFAULT_V4_INITIAL_VOTING_PERIOD = 7 * SECONDS_PER_DAY;
217
232
  var DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD = 0n;
218
233
  var DEFAULT_V4_YEARLY_MINT_RATE = parseEther("0.02");
219
234
  var OPENING_AUCTION_BPS = 1e4;
@@ -286,10 +301,10 @@ var FEE_AMOUNT_MASK = 16777215;
286
301
  // src/evm/addresses.ts
287
302
  var CHAIN_IDS = {
288
303
  MAINNET: 1,
289
- ETH_SEPOLIA: 11155111,
290
304
  ARBITRUM: 42161,
291
305
  BASE: 8453,
292
306
  BASE_SEPOLIA: 84532,
307
+ BSC: 56,
293
308
  INK: 57073,
294
309
  ROBINHOOD: 4663,
295
310
  UNICHAIN: 130,
@@ -318,6 +333,7 @@ var ADDRESSES = {
318
333
  CHAIN_IDS.MAINNET,
319
334
  "DopplerERC20V1"
320
335
  ),
336
+ doppler404Factory: getGeneratedAddress(CHAIN_IDS.MAINNET, "DN404Factory"),
321
337
  v3Initializer: ZERO_ADDRESS,
322
338
  v3Quoter: "0x61fFE014bA17989E743c5F6cB21bF9697530B21e",
323
339
  lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].LockableUniswapV3Initializer,
@@ -339,7 +355,6 @@ var ADDRESSES = {
339
355
  v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
340
356
  v4MigratorHook: "0x4053D4fa966cbdCC20Ec62070aC8814De8bEE500",
341
357
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].DopplerHookMigrator,
342
- rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].RehypeDopplerHookMigrator,
343
358
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].NoOpMigrator,
344
359
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].GovernanceFactory,
345
360
  noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].NoOpGovernanceFactory,
@@ -349,7 +364,6 @@ var ADDRESSES = {
349
364
  CHAIN_IDS.MAINNET,
350
365
  "StreamableFeesLockerV2"
351
366
  ),
352
- topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].TopUpDistributor,
353
367
  universalRouter: "0x66a9893cc07d91d95644aedd05d03f95e1dba8af",
354
368
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
355
369
  bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MAINNET].Bundler,
@@ -359,34 +373,6 @@ var ADDRESSES = {
359
373
  uniswapV3Factory: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
360
374
  uniswapV4Quoter: "0x52f0e24d1c21c8a0cb1e5a5dd6198556bd9e1203"
361
375
  },
362
- [CHAIN_IDS.ETH_SEPOLIA]: {
363
- airlock: "0xDe3599a2eC440B296373a983C85C365DA55d9dFA",
364
- tokenFactory: "0xe7Df2A4520C26a2D4Dedb3a7585BFBcd30eABA6e",
365
- derc20V2Factory: "0x16F5ACB64F4FA17296E942C51d3395aDC318f9e1",
366
- derc20V2Implementation: "0x4BBfed1c27CDE12eF6638251D81ab4e3be7556b7",
367
- v3Initializer: ZERO_ADDRESS,
368
- v3Quoter: ZERO_ADDRESS,
369
- v4Initializer: "0x53b4c21a6Cb61D64F636ABBfa6E8E90E6558e8ad",
370
- v4ScheduledMulticurveInitializer: "0xF84378C9F39e0FF267f3101c88773359c5393876",
371
- dopplerHookInitializer: "0xBDF938149ac6a781F94FAa0ed45E6A0e984c6544",
372
- rehypeDopplerHookInitializer: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
373
- rehypeDopplerHook: "0xBF4195ab0B03e1eB3345dd1e83BeD7650b1ed123",
374
- dopplerLens: ZERO_ADDRESS,
375
- dopplerDeployer: "0xb35469ee64A87Afd19B31615094fE3962d73e421",
376
- poolManager: "0xE03A1074c86CFeDd5C142C4F04F1a1536e203543",
377
- v2Migrator: "0x765875bff87614cE0581ee73B9fa663B71F3DfF2",
378
- v4Migrator: "0x0820A4D0173C17Ece283f7bDaAF0f8876eB205f5",
379
- dopplerHookMigrator: "0x1E40b0875DDa35f41E15cFB475403859B8c860c4",
380
- rehypeDopplerHookMigrator: "0xea95DfdF69B90c65C827070852F7039D6aF6Dd7b",
381
- noOpMigrator: "0x233A71A7bB928b1357A1Ebf454298320989Ca5B5",
382
- governanceFactory: ZERO_ADDRESS,
383
- noOpGovernanceFactory: "0xddAE8B3eD08184682f7Bc32B74d943cEEfEab638",
384
- streamableFeesLocker: "0xe24FC2F7191e850e2D4514aBb4d39305b1871eC6",
385
- universalRouter: "0x3A9D48AB9751398BbFa63ad67599Bb04e4BdF98b",
386
- permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
387
- weth: "0xfFf9976782d46CC05630D1f6eBAb18b2324d6B14",
388
- uniswapV4Quoter: "0x61b3f2011a92d183c7dbadbda940a7555ccf9227"
389
- },
390
376
  [CHAIN_IDS.ARBITRUM]: {
391
377
  airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].Airlock,
392
378
  tokenFactory: ZERO_ADDRESS,
@@ -417,7 +403,6 @@ var ADDRESSES = {
417
403
  v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].UniswapV2MigratorSplit,
418
404
  v4Migrator: ZERO_ADDRESS,
419
405
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].DopplerHookMigrator,
420
- rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].RehypeDopplerHookMigrator,
421
406
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].NoOpMigrator,
422
407
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].GovernanceFactory,
423
408
  noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].NoOpGovernanceFactory,
@@ -427,8 +412,8 @@ var ADDRESSES = {
427
412
  CHAIN_IDS.ARBITRUM,
428
413
  "StreamableFeesLockerV2"
429
414
  ),
430
- topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].TopUpDistributor,
431
415
  universalRouter: "0xA51afAFe0263b40EdaEf0Df8781eA9aa03E381a3",
416
+ univ2Router02: "0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24",
432
417
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
433
418
  bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ARBITRUM].Bundler,
434
419
  weth: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1",
@@ -436,6 +421,52 @@ var ADDRESSES = {
436
421
  uniswapV3Factory: "0x1F98431c8aD98523631AE4a59f267346ea31F984",
437
422
  uniswapV4Quoter: "0x3972C00f7ed4885e145823eb7C655375d275A1C5"
438
423
  },
424
+ [CHAIN_IDS.BSC]: {
425
+ airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].Airlock,
426
+ tokenFactory: ZERO_ADDRESS,
427
+ dopplerERC20V1Factory: getGeneratedAddress(
428
+ CHAIN_IDS.BSC,
429
+ "DopplerERC20V1Factory"
430
+ ),
431
+ dopplerERC20V1Implementation: getGeneratedAddress(
432
+ CHAIN_IDS.BSC,
433
+ "DopplerERC20V1"
434
+ ),
435
+ doppler404Factory: getGeneratedAddress(CHAIN_IDS.BSC, "DN404Factory"),
436
+ v3Initializer: ZERO_ADDRESS,
437
+ v3Quoter: "0x78D78E420Da98ad378D7799bE8f4AF69033EB077",
438
+ lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].LockableUniswapV3Initializer,
439
+ v4Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].UniswapV4Initializer,
440
+ dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].DopplerHookInitializer,
441
+ rehypeDopplerHookInitializer: getRehypeDopplerHookInitializerAddress(
442
+ CHAIN_IDS.BSC
443
+ ),
444
+ rehypeDopplerHook: getRehypeDopplerHookInitializerAddress(CHAIN_IDS.BSC),
445
+ dopplerLens: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].DopplerLensQuoter,
446
+ dopplerDeployer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].DopplerDeployer,
447
+ poolManager: "0x28e2ea090877bf75740558f6bfb36a5ffee9e9df",
448
+ v2Migrator: ZERO_ADDRESS,
449
+ v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].UniswapV2MigratorSplit,
450
+ v4Migrator: ZERO_ADDRESS,
451
+ dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].DopplerHookMigrator,
452
+ noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].NoOpMigrator,
453
+ governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].GovernanceFactory,
454
+ noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].NoOpGovernanceFactory,
455
+ launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].LaunchpadGovernanceFactory,
456
+ streamableFeesLocker: ZERO_ADDRESS,
457
+ streamableFeesLockerV2: getGeneratedAddress(
458
+ CHAIN_IDS.BSC,
459
+ "StreamableFeesLockerV2"
460
+ ),
461
+ universalRouter: "0x1906c1d672b88cd1b9ac7593301ca990f94eae07",
462
+ univ2Router02: "0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24",
463
+ permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
464
+ bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BSC].Bundler,
465
+ weth: "0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c",
466
+ uniswapV2Factory: "0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6",
467
+ uniswapV3Factory: "0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7",
468
+ uniswapV4Quoter: "0x9f75dd27d6664c475b90e105573e550ff69437b0"
469
+ },
439
470
  [CHAIN_IDS.BASE]: {
440
471
  airlock: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].Airlock,
441
472
  tokenFactory: "0xf0B5141dD9096254B2ca624dff26024f46087229",
@@ -477,7 +508,6 @@ var ADDRESSES = {
477
508
  v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
478
509
  v4MigratorHook: "0xD6FECFF347c6203A41874e8D77dE669B54e7A500",
479
510
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].DopplerHookMigrator,
480
- rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].RehypeDopplerHookMigrator,
481
511
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpMigrator,
482
512
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].GovernanceFactory,
483
513
  noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].NoOpGovernanceFactory,
@@ -487,7 +517,6 @@ var ADDRESSES = {
487
517
  CHAIN_IDS.BASE,
488
518
  "StreamableFeesLockerV2"
489
519
  ),
490
- topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE].TopUpDistributor,
491
520
  universalRouter: "0x6ff5693b99212da76ad316178a184ab56d299b43",
492
521
  univ2Router02: "0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24",
493
522
  uniswapV2Factory: "0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6",
@@ -538,7 +567,6 @@ var ADDRESSES = {
538
567
  v4Migrator: "0xEEe0eCCb54398ce371CAACBCEf076d3Ed597DDb3",
539
568
  v4MigratorSplit: "0xa1b06BE4f2fC347d194240D79EDa9F40CCAd9732",
540
569
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].DopplerHookMigrator,
541
- rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].RehypeDopplerHookMigrator,
542
570
  v4MigratorHook: "0x127cAAAd598Ffa97577940b0a5c3b6150019E500",
543
571
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].NoOpMigrator,
544
572
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].GovernanceFactory,
@@ -549,7 +577,6 @@ var ADDRESSES = {
549
577
  CHAIN_IDS.BASE_SEPOLIA,
550
578
  "StreamableFeesLockerV2"
551
579
  ),
552
- topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.BASE_SEPOLIA].TopUpDistributor,
553
580
  universalRouter: "0x492E6456D9528771018DeB9E87ef7750EF184104",
554
581
  univ2Router02: "0x1689E7B1F10000AE47eBfE339a4f69dECd19F602",
555
582
  uniswapV2Factory: "0x7Ae58f10f7849cA6F5fB71b7f45CB416c9204b1e",
@@ -619,7 +646,6 @@ var ADDRESSES = {
619
646
  v2MigratorSplit: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].UniswapV2MigratorSplit,
620
647
  v4Migrator: ZERO_ADDRESS,
621
648
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].DopplerHookMigrator,
622
- rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].RehypeDopplerHookMigrator,
623
649
  noOpMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].NoOpMigrator,
624
650
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].GovernanceFactory,
625
651
  noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].NoOpGovernanceFactory,
@@ -629,8 +655,8 @@ var ADDRESSES = {
629
655
  CHAIN_IDS.ROBINHOOD,
630
656
  "StreamableFeesLockerV2"
631
657
  ),
632
- topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].TopUpDistributor,
633
658
  universalRouter: "0x8876789976decbfcbbbe364623c63652db8c0904",
659
+ univ2Router02: "0x89e5db8b5aa49aa85ac63f691524311aeb649eba",
634
660
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
635
661
  bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.ROBINHOOD].Bundler,
636
662
  weth: "0x0bd7d308f8e1639fab988df18a8011f41eacad73",
@@ -743,6 +769,10 @@ var ADDRESSES = {
743
769
  CHAIN_IDS.MONAD_MAINNET,
744
770
  "DopplerERC20V1"
745
771
  ),
772
+ doppler404Factory: getGeneratedAddress(
773
+ CHAIN_IDS.MONAD_MAINNET,
774
+ "DN404Factory"
775
+ ),
746
776
  v3Initializer: ZERO_ADDRESS,
747
777
  v3Quoter: "0x661E93cca42AfacB172121EF892830cA3b70F08d",
748
778
  lockableV3Initializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LockableUniswapV3Initializer,
@@ -759,7 +789,6 @@ var ADDRESSES = {
759
789
  governanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].GovernanceFactory,
760
790
  noOpGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].NoOpGovernanceFactory,
761
791
  launchpadGovernanceFactory: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].LaunchpadGovernanceFactory,
762
- topUpDistributor: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].TopUpDistributor,
763
792
  v4ScheduledMulticurveInitializer: "0xCe3099B2F07029b086E5e92a1573C5f5A3071783",
764
793
  dopplerHookInitializer: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].DopplerHookInitializer,
765
794
  rehypeDopplerHookInitializer: getRehypeDopplerHookInitializerAddress(
@@ -779,9 +808,9 @@ var ADDRESSES = {
779
808
  permit2: "0x000000000022D473030F116dDEE9F6B43aC78BA3",
780
809
  bundler: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].Bundler,
781
810
  dopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].DopplerHookMigrator,
782
- rehypeDopplerHookMigrator: GENERATED_DOPPLER_DEPLOYMENTS[CHAIN_IDS.MONAD_MAINNET].RehypeDopplerHookMigrator,
783
811
  weth: "0x3bd359c1119da7da1d913d1c4d2b7c461115433a",
784
812
  // INFO: this is wmon, but we treat it as weth because mon is native
813
+ uniswapV3Factory: "0x204faca1764b154221e35c0d20abb3c525710498",
785
814
  uniswapV4Quoter: "0xa222dd357a9076d1091ed6aa2e16c9742dd26891"
786
815
  }
787
816
  };
@@ -1375,10 +1404,10 @@ var dopplerDN404Abi = [
1375
1404
  ];
1376
1405
 
1377
1406
  // src/evm/abis/bytecodes/doppler.ts
1378
- var doppler_default = "0x60a06040523461057b57604051601f615c0338819003918201601f19168301916001600160401b0383118484101761057f578084926101c09460405283398101031261057b5780516001600160a01b038116810361057b5760208201516040830151906060840151608085015160a08601519061007e60c088016105b3565b9161008b60e089016105b3565b91610100890151946100a06101208b016105b3565b976101408b0151978815988915810361057b576101608d01516101808e01516001600160a01b0381169e919d91908f0361057b576101a001519062ffffff821680920361057b576080525f6101a06100f6610593565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a0610154610593565b6001815260016020820152600160408201528260608201528260808201528260a0820152600160c0820152600160e082015260016101008201528261012082015282610140820152826101608201528261018082015201526120003016151560011480159061056a575b8015610559575b801561054c575b801561053f575b8015610532575b8015610522575b8015610512575b8015610502575b80156104f6575b80156104ea575b80156104de575b80156104d2575b80156104c6575b6104b35762ffffff1960165416176016558442116104a4578660020b8860020b91818303610463575b5050508484101561045457838503858111610440578a60020b5f811380159061042b575b61041c578915610408578982066103f9578c156103eb57600f8d116103eb578484116103dc5761029861029d928b81046017558b6105c1565b610658565b628000008110156103cf5762ffffff19601854169062ffffff1617601855600d55600e55600f5560105560115562ffffff6012549160181b65ffffff0000001692169065ffffffffffff1916171760125560135562ffffff63ff000000601454921560181b1692169063ffffffff1916171760145560155560018060a01b0319600c541617600c5560405161552f90816106d48239608051818181601c01528181610205015281816102a80152818161045c0152818161050c0152818161098701528181610a1e01528181610af501528181610b9201528181610c5a01528181610e8301528181610f3a0152818161103d015281816110b201528181611d2c01528181611de40152818161217801528181613b8301528181613c4d01528181613fe9015281816140f40152614be40152f35b6335278d125f526004601cfd5b638cc99b7b60e01b5f5260045ffd5b6287e39960e61b5f5260045ffd5b6388ac089760e01b5f5260045ffd5b634e487b7160e01b5f52601260045260245ffd5b6312469eb560e11b5f5260045ffd5b5061043a81610298848d6105c1565b1561025f565b634e487b7160e01b5f52601160045260245ffd5b63536a71af60e01b5f5260045ffd5b8061049b575b610483578a9182610491575b5050610483575f808061023b565b6264847d60e41b5f5260045ffd5b1390505f80610475565b50808212610469565b632ca4094f60e21b5f5260045ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610212565b5060023016151561020b565b50600430161515610204565b506008301615156101fd565b506010301615156101f6565b50602030161515600114156101ef565b50604030161515600114156101e8565b50608030161515600114156101e1565b50610100301615156101da565b50610200301615156101d3565b50610400301615156101cc565b5061080030161515600114156101c5565b5061100030161515600114156101be565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761057f57604052565b51908160020b820361057b57565b90670de0b6b3a76400008202905f19670de0b6b3a764000084099282808510940393808503948584111561057b571461065157670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b808202905f1983820990828083109203918083039283670de0b6b3a7640000111561057b57146106c2577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a76400009150049056fe608080604052600436101561005b575b50361561001a575f80fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361004c57005b6393c866c160e01b5f5260045ffd5b5f905f3560e01c908163182148ef146111155750806318cb1700146110f357806321d0ee701461109f578063259982e51461102a578063392e53cd1461100857806339518b5e14610feb578063514ea4bf14610f96578063575e24b414610ee357806357d775f814610ec65780636c2bbe7e14610e705780636c47a6c314610e535780636fe7e6eb14610c19578063897479cb14610bfb57806390ebab0a14610bdd57806391dd734614610b5e5780639ce110d714610b355780639f063efc14610ade578063a4dee15514610ab9578063b137392914610a98578063b356603014610a74578063b47b2fb1146109c6578063b6a8b0fa14610970578063c19d93fb14610921578063c4e833ce146107b6578063c70dfb4f14610795578063ce5494bb146104cb578063d0c52e21146104a9578063d65b4cb91461048b578063dc4c90d314610446578063dc98354e14610276578063dcf93f3214610250578063e1b4af69146101ee5763ee4644300361000f57346101eb57806003193601126101eb576020600d54604051908152f35b80fd5b50346101eb57600490610200366112dc565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303925061024491505057630a85dc2960e01b8152fd5b63570c108560e11b8152fd5b50346101eb57806003193601126101eb57602060ff60145460181c166040519015158152f35b50346101eb5760e03660031901126101eb5761029061116b565b5060a03660231901126101eb576102a561128e565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104375760085460ff81166104295760ff19166001176008556001600160a01b03602435908116908181036104255750600980546001600160a01b0319169190911790556044356001600160a01b038116908181036104255750600a80546001600160a01b03191691909117905560643562ffffff8116810361042157600a5461035a612061565b60b81b62ffffff60b81b169162ffffff60a01b9060a01b169065ffffffffffff60a01b19161717600a5560a43560018060a01b03811680910361042157600b80546001600160a01b031916919091179055601e6103b5612061565b60020b136104125760145460020b6103cb612061565b60020b9081156103fe570760020b6103ef57604051636e4c1aa760e11b8152602090f35b6312469eb560e11b8152600490fd5b634e487b7160e01b83526012600452602483fd5b63013840ad60e51b8152600490fd5b5080fd5b8280fd5b62dc149f60e41b8252600482fd5b63570c108560e11b8152600490fd5b50346101eb57806003193601126101eb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101eb57806003193601126101eb576020600f54604051908152f35b50346101eb57806003193601126101eb5760ff60209154166040519015158152f35b50346101eb5760203660031901126101eb576104e561116b565b600c546001600160a01b031633036107865760ff825460081c161580610765575b610756577f000000000000000000000000000000000000000000000000000000000000000061059d8361057561058360405161054181611333565b610549611f3d565b815260018060a01b03871660208201528360408201526001606082015260405192839160208301611f8a565b03601f1981018352826113b4565b604051809381926348c8949160e01b8352600483016112b2565b0381836001600160a01b0387165af190811561074b57916105d785926105e2959460e09791610729575b50602080825183010191016114d8565b600695919554613282565b9161064160018060a01b0360095416926106306105fe856145cf565b948761061f8761061760018060a01b03600a54166145cf565b9a8b94614611565b600a546001600160a01b0316614611565b60a061063a611f3d565b2090614754565b5050600954600a5492976001600160a01b039182169791909316946106879250610678906001600160801b03608086901d16611472565b926001600160801b0316611472565b906001600160801b0381111561071a57506001600160801b03915b506001600160801b0381111561070b57506001600160801b03935b604080516001600160a01b0397909716875260208701919091526001600160801b03608085811d821692880192909252918216606087015285019190915290811660a08401521660c0820152f35b6001600160801b0316936106bd565b6001600160801b0316916106a2565b61074591503d8086833e61073d81836113b4565b810190611fcb565b5f6105c7565b6040513d86823e3d90fd5b63051a2a5560e51b8252600482fd5b50600454600e5411158061077a575b15610506565b50601154421015610774565b638341a67960e01b8252600482fd5b50346101eb57806003193601126101eb57602060125460020b604051908152f35b50346101eb57806003193601126101eb576020816101c0926101a06040516107dd81611362565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201528060405161083b81611362565b60018152838101600181526040820160018152606083018481526080840185815260a0850186815260c08601906001825260e087019260018452610100880194600186526101208901968a88526101408a01988b8a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b50346101eb57806003193601126101eb5760c064ffffffffff600154166002546003546004546005549160065493604051958652602086015260408501526060840152608083015260a0820152f35b50346101eb57600490610982366112dc565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330392506102449150505763567d91d160e01b8152fd5b50346101eb576101603660031901126101eb576109e161116b565b5060a03660231901126101eb5760603660c31901126101eb57610144356001600160401b03811161042157610a1a903690600401611195565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610437576040610a5a610124356140d7565b82516001600160e01b03199092168252600f0b6020820152f35b50346101eb57806003193601126101eb57602060125460181c60020b604051908152f35b50346101eb57806003193601126101eb57602060145460020b604051908152f35b50346101eb57806003193601126101eb5760ff6020915460081c166040519015158152f35b50346101eb57600490610af036611225565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330393506102449250505057630a85dc2960e01b8152fd5b50346101eb57806003193601126101eb57600c546040516001600160a01b039091168152602090f35b50346101eb5760203660031901126101eb576004356001600160401b03811161042157610b8f903690600401611195565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361043757610bd9610bcd848461168f565b604051918291826112b2565b0390f35b50346101eb57806003193601126101eb576020601554604051908152f35b50346101eb57806003193601126101eb576020600e54604051908152f35b5034610e4057610100366003190112610e4057610c3461116b565b60a0366023190112610e4057610c4861128e565b5060e435908160020b809203610e40577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169133839003610e445762ffffff6016541691833b15610e4057604051635275965160e01b815292602435906001600160a01b038216808303610e40576004860152604435946001600160a01b038616808703610e4057602482015260643562ffffff8116808203610e40576044830152608435918260020b808403610e4057606482015260a435936001600160a01b038516808603610e4057608483015260a48201525f8160c481838d5af18015610e3557610e07575b509488979461057594610da6948a9994610dc29960405196610d5a88611333565b60405194610d678661137e565b85526020850152604084015260608301526080820152835260018060a01b03166020830152604082015285606082015260405192839160208301611f8a565b6040519485809481936348c8949160e01b8352600483016112b2565b03925af18015610dfc57610de3575b604051636fe7e6eb60e01b8152602090f35b610df6913d8091833e61073d81836113b4565b5f610dd1565b6040513d84823e3d90fd5b610da69399509461057594610e245f610dc299949a959b986113b4565b5f9a94509450949791969095610d39565b6040513d5f823e3d90fd5b5f80fd5b63570c108560e11b5f5260045ffd5b34610e40575f366003190112610e40576020601154604051908152f35b34610e4057610e7e36611225565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039350610e449250505057630a85dc2960e01b5f5260045ffd5b34610e40575f366003190112610e40576020601354604051908152f35b34610e4057610140366003190112610e4057610efd61116b565b5060a0366023190112610e405760603660c3190112610e4057610124356001600160401b038111610e4057610f36903690600401611195565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610e4457606062ffffff610f766120bd565b906040939293519363ffffffff60e01b1684526020840152166040820152f35b34610e40576020366003190112610e40576004355f526007602052608060405f205460ff604051918060020b83528060181c60020b6020840152600180851b038160301c16604084015260b01c166060820152f35b34610e40575f366003190112610e40576020601054604051908152f35b34610e40575f366003190112610e4057602060ff600854166040519015158152f35b34610e4057611038366111c2565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039050610e4457306001600160a01b03909116036110905760405163259982e560e01b8152602090f35b636d1ed89b60e01b5f5260045ffd5b34610e40576110ad366111c2565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039150610e44905057630a85dc2960e01b5f5260045ffd5b34610e40575f366003190112610e4057602062ffffff60165416604051908152f35b34610e40575f366003190112610e4057600954600a54600b546001600160a01b039283168452818316602085015260a082811c62ffffff16604086015260b89290921c60020b6060850152909116608083015290f35b600435906001600160a01b0382168203610e4057565b35906001600160a01b0382168203610e4057565b9181601f84011215610e40578235916001600160401b038311610e405760208381860195010111610e4057565b90610160600319830112610e40576004356001600160a01b0381168103610e40579160a0602319820112610e4057602491608060c319830112610e405760c49161014435906001600160401b038211610e405761122191600401611195565b9091565b906101a0600319830112610e40576004356001600160a01b0381168103610e40579160a0602319820112610e4057602491608060c319830112610e405760c4916101443591610164359161018435906001600160401b038211610e405761122191600401611195565b60c435906001600160a01b0382168203610e4057565b35908160020b8203610e4057565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b610120600319820112610e40576004356001600160a01b0381168103610e40579160a0602319830112610e405760249160c4359160e4359161010435906001600160401b038211610e405761122191600401611195565b608081019081106001600160401b0382111761134e57604052565b634e487b7160e01b5f52604160045260245ffd5b6101c081019081106001600160401b0382111761134e57604052565b60a081019081106001600160401b0382111761134e57604052565b606081019081106001600160401b0382111761134e57604052565b601f909101601f19168101906001600160401b0382119082101761134e57604052565b359062ffffff82168203610e4057565b91908260a0910312610e40576040516113ff8161137e565b608061144b81839561141081611181565b855261141e60208201611181565b602086015261142f604082016113d7565b6040860152611440606082016112a4565b606086015201611181565b910152565b600201908160021161145e57565b634e487b7160e01b5f52601160045260245ffd5b9190820180921161145e57565b9060405161148c81611333565b9154600281810b8452601882901c900b6020840152603081901c6001600160801b0316604084015260b01c60ff166060830152565b600f0b60016001607f1b0319811461145e575f0390565b9190826040910312610e40576020825192015190565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b9061016092611542836060936114ee565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201526101406101208201525f6101408201520190565b6001600160a01b03918216815291166020820152604081019190915260600190565b9190820391821161145e57565b6001600160401b03811161134e5760051b60200190565b906115cf826115ae565b6115dc60405191826113b4565b82815280926115ed601f19916115ae565b01905f5b8281106115fd57505050565b60209060405161160c81611333565b5f81525f838201525f60408201525f6060820152828285010152016115f1565b8051156116395760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156116395760400190565b80518210156116395760209160051b010190565b9081549060181b65ffffff000000169065ffffff0000001916179055565b919082015f61010084830312610e40576116b5604051926116af84611333565b856113e7565b938483526116c560a08201611181565b80602085015260e06116d960c084016112a4565b92836040870152013580151594858203610e40576060015260018060a01b03169060020b92611c4e5750600164ffffffffff1981541617600155606084019261173c845160020b61173761172c85614ef6565b60125460020b61209f565b614f2e565b6014549060ff8260181c165f14611c3b5761175a9160020b9061209f565b945b61176584613378565b61176e85613378565b956040519561177c87611399565b808752602087018181526118d8604089019a888c526118d0600d54956117a06136a5565b956118088c6118036117fa6117db6117d26117c96117c46117bf61480d565b614ea2565b6136c3565b60135490614e80565b60105490614ebe565b6117f46117eb60105480936115a1565b916011546115a1565b90615033565b600d5490615113565b6136d4565b8c929083811315611c2c5761186b9293508981115f14611c275750885b928d60185460020b835160020b8082135f14611c1f5750905b50818a5260145460181c60ff1615611c105761185f9150895160020b61209f565b905b5160020b90614f2e565b60020b60208701525b855160020b966020870197885160020b14155f14611c055760ff60145460181c166118c5836118a68a5160020b613378565b8b516001600160801b039491906118bf9060020b613378565b91614fcc565b1660408801526115a1565b90848861374b565b996118eb6118e68c51611450565b6115c5565b985160020b915160020b9060018060801b03905116906040519261190e84611333565b8352602083015260408201526001606082015261192a8861162c565b526119348761162c565b50805160020b915160020b90604060018060801b0391015116906040519261195b84611333565b835260208301526040820152600260608201526119778661164d565b526119818561164d565b50835b8751811015611a3457611997818961165d565b515160020b60206119a8838b61165d565b51015160020b6001600160801b0360406119c2858d61165d565b51015116836003019182600311611a2057611a1992600195949260ff92604051946119ec86611333565b855260208501526040840152166060820152611a0783611450565b90611a12828b61165d565b528861165d565b5001611984565b634e487b7160e01b89526011600452602489fd5b50611a429293969585613a82565b611a4b8261162c565b516001855260076020526040852090805162ffffff198354169062ffffff16178255611a7e602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055611ac58261164d565b516002855260076020526040852090805162ffffff198354169062ffffff16178255611af8602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055835b8351811015611be557611b53611b4d82611450565b8461165d565b518160030180600311611bd1579060019291875260076020526040872090805162ffffff198354169062ffffff16178255611b95602082015160020b83611671565b604081015190825490606060ff60b01b91015160b01b16918560301b8660b01b039060301b16908560301b8660b81b0319161717905501611b38565b634e487b7160e01b87526011600452602487fd5b509291505060405190611bf96020836113b4565b81525f36602083013790565b8b60408801526115a1565b611c199161335b565b90611861565b90509061183e565b611825565b50508087526020870152611874565b611c489160020b9061335b565b9461175c565b925f9250829160015b6015546003018060031161145e57811015611ddc57805f526007602052611c8060405f2061147f565b60408101516001600160801b031680611c9e575b5050600101611c57565b611d279160409160ff6014999598995460181c1691825f14611dce57805160020b925b15611db95760ff6060611ce3611cde602085015160020b95613263565b6114c1565b9201511691845193611cf485611333565b60020b845260020b6020840152600f0b838301526060820152815180938192632d35e7ed60e11b83528c60048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192611d7e925f905f92611d86575b50611d789192613282565b96613282565b93905f611c94565b611d789250611dac915060403d8111611db2575b611da481836113b4565b8101906114d8565b91611d6d565b503d611d9a565b60ff6060611ce3611cde845160020b95613263565b602081015160020b92611cc1565b5091929390947f000000000000000000000000000000000000000000000000000000000000000091611e1860018060a01b0383511630856132c4565b926020830192611e3260018060a01b0385511630846132c4565b945f8113611ed6575b5050848413611e6a575b5050505050604051916020830152604082015260408152611e676060826113b4565b90565b91516001600160a01b039283169216823b15611ed25791611ea6939185809460405196879586948593630b0d9c0960e01b85526004850161157f565b03925af18015610dfc57611ebd575b808080611e45565b611ec88280926113b4565b6101eb5780611eb5565b8480fd5b90516001600160a01b0383811692911690823b15610e4057611f1392855f809460405196879586948593630b0d9c0960e01b85526004850161157f565b03925af18015610e3557611f28575b80611e3b565b611f359195505f906113b4565b5f935f611f22565b60405190611f4a8261137e565b6009546001600160a01b039081168352600a54808216602085015260a081901c62ffffff16604085015260b81c60020b6060840152600b54166080830152565b91909160e06060610100830194611fa28482516114ee565b60208101516001600160a01b031660a0850152604081015160020b60c085015201511515910152565b602081830312610e40578051906001600160401b038211610e40570181601f82011215610e40578051906001600160401b03821161134e576040519261201b601f8401601f1916602001856113b4565b82845260208383010111610e4057815f9260208093018386015e8301015290565b600f91820b910b019060016001607f1b0319821260016001607f1b0383131761145e57565b6084358060020b8103610e405790565b60020b627fffff19811461145e575f0390565b60020b60010190627fffff8213627fffff1983121761145e57565b9060020b9060020b0190627fffff198212627fffff83131761145e57565b5f80549160ff8360081c16613254576010544210613245576120dd61480d565b64ffffffffff600154161015613234575f9260115442101580613229575b612e7e575b509060ff5f5416155f14612e105761211661480d565b9060015461212b64ffffffffff8216846115a1565b64ffffffffff1990911664ffffffffff84161760015560035460025f526007602052946121645f8051602061550383398151915261147f565b9461219c60a06121753660246113e7565b207f0000000000000000000000000000000000000000000000000000000000000000614754565b505050946121a986614841565b608435978860020b90818a14159283610e40578a6121c691614f2e565b905f916121d68d600554906136d4565b5f198a0194908a861161145e575f8f966121f26121f791613a72565b614fac565b80971115911280612e09575b15612cac575050506122249192505160020b9161221e615332565b90614ebe565b955b60018111612c165750612262908a60055561225c670de0b6b3a764000061224f89600254614ebe565b9880612c0d575b05614ef6565b9061209f565b90612c09578761227191614f2e565b9061228d8861173761172c670de0b6b3a76400005f9905614ef6565b9760145460ff8160181c165f14612bf6576122ab9060020b8a61209f565b955b8960ff60145460181c16809b811580612be6575b15612baa57505050612ba6576122d7908361209f565b945b6122e283613378565b986122ec87613378565b908b15612b9d5715612aea5760016123058c8c84615420565b91818060a01b038c1690828060a01b0316038060ff1d9081011891818060801b031661233183826150ca565b928260601b9109151516015b975b60155461234e6118e682611450565b9060018a52600760205261236460408b2061147f565b61236d8361162c565b526123778261162c565b5060028a52600760205261238d60408b2061147f565b6123968361164d565b526123a08261164d565b50895b818110612aa25750506123c1906123bb3660246113e7565b90614afa565b5060145460181c60ff1699908a156129fc576044356001600160a01b03811681036129f857612402906123f3906145cf565b6001600160801b038316611472565b6006549061241a906001600160801b038316906115a1565b916024356001600160a01b03811681036129f4579e6118e69f936124728e969461245d8c9561244b89879a506145cf565b9060801d6001600160801b0316611472565b60809190911d6001600160801b0316906115a1565b9e5b61247f3660246113e7565b906124886136a5565b958361299457505050505060020b80825260208201528260408201525b604081018051909c6125ab916125a391612591916001600160801b031615612985575b6124d33660246113e7565b906124fa6124df6136a5565b976118036117fa6117db6117d26117c96117c46117bf61480d565b88808213156129715750818111156129685750612555815b928d606060185460020b920191825160020b8082135f146129605750905b60020b90818b5260ff60145460181c165f14611c105761185f91508a5160020b61209f565b60020b60208801525b865160020b976020880198895160020b14155f14612956575060ff60145460181c166118c5836118a68a5160020b613378565b878561259e3660246113e7565b61374b565b9e8f51611450565b9b6020825160020b92015160020b9060018060801b0390511690604051926125d284611333565b835260208301526040820152600160608201526125ee8c61162c565b526125f88b61162c565b50805160020b915160020b90604060018060801b0391015116906040519261261f84611333565b8352602083015260408201526002606082015261263b8a61164d565b526126458961164d565b50875b8b518110156126f9578b602061266d83612662818561165d565b515160020b9361165d565b51015160020b8d60406126878560018060801b039361165d565b510151168360030191826003116126e5579260ff6126de938f9360019796604051946126b286611333565b8552602085015260408401521660608201526126d76126d085611450565b809361165d565b528c61165d565b5001612648565b634e487b7160e01b8d52601160045260248dfd5b50612719919293949596999a979a6127123660246113e7565b918a613a82565b6127228761162c565b5160018a52600760205260408a2090805162ffffff198354169062ffffff16178255612755602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b1617905561279c8761164d565b5160028a52600760205260408a2090805162ffffff198354169062ffffff161782556127cf602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055885b6015548110156128fc578651811061285957806003018060031161284557906001918b5260076020528a60408120555b0161280f565b634e487b7160e01b8b52601160045260248bfd5b61286b61286582611450565b8961165d565b5181600301806003116128e85790600192918c52600760205260408c2090805162ffffff198354169062ffffff161782556128ad602082015160020b83611671565b604081015190825490606060ff60b01b91015160b01b16918560301b8660b01b039060301b16908560301b8660b81b0319161717905561283f565b634e487b7160e01b8c52601160045260248cfd5b5090919295507f223157ec47d7bd04fa3ed10c0a8adb38faf97b51ec856a777425a2e39253bd739450608093966040519360020b845260020b602084015260020b60408301526060820152a15b6315d7892d60e21b929190565b60408801526115a1565b905090612530565b61255590612512565b9250508b60020b808852602088015261255e565b602085015160020b85526124c8565b838111156129ad5750506129a89450614ca4565b6124a5565b92509350506129e991508c60020b84528960020b60208501526129cf8d613378565b6001600160801b0393906129e28c613378565b9115614fcc565b1660408201526124a5565b8c80fd5b8a80fd5b6024356001600160a01b03811681036129f857612a2f90612a1c906145cf565b608083901d6001600160801b0316611472565b60065490612a4b90608083901d6001600160801b0316906115a1565b916044356001600160a01b03811681036129f4579e6118e69f93612a9c8e9694612a8b8c95612a7c89879a506145cf565b906001600160801b0316611472565b6001600160801b03909116906115a1565b9e612474565b80600301806003116128e857906001918c526007602052612ae360408d20612ad2612acc84611450565b9161147f565b612adc828861165d565b528561165d565b50016123a3565b612af58b8b836153dd565b8a826001600160a01b0380831690821611612b92575b506001600160a01b038316918215612b865760601b600160601b600160e01b0316926001600160a01b03828116929190910316612b4982828661527d565b938215612b725709612b63575b808206151591040161233d565b906001019081612b56575b8880fd5b634e487b7160e01b8c52601260045260248cfd5b62bfc9218b526004601cfd5b8c935090505f612b0b565b5050869761233f565b8680fd5b91989392509081612bd5575b50612bc2575b506122d9565b612bce9196508361335b565b945f612bbc565b905060020b8460020b13155f612bb6565b508060020b8760020b12156122c1565b612c039060020b8a61335b565b956122ad565b8580fd5b89600255612256565b612c1f906136ec565b5f198101818111611a20576121f2612c3691613a72565b808c10612c44575b50612226565b612c59612c52989298615332565b918d615033565b670de0b6b3a76400000390670de0b6b3a76400008211612c9857612c8a612c919392670de0b6b3a764000092614e80565b0590614ebe565b955f612c3e565b634e487b7160e01b8a52601160045260248afd5b9192909115612d0957505083612b6e578a612cc691614f2e565b91612cd2612c52615332565b670de0b6b3a76400000390670de0b6b3a76400008211612c9857612c8a612d039392670de0b6b3a764000092614e80565b95612226565b93509350975050612d2f60125460020b670de0b6b3a76400006002540560020b9061209f565b60185460020b5f9381135f14612dfe57905b6014549260ff8460181c1692835f14612deb57612d61915160020b61209f565b915b829985610e4057612db394612d7b8e612dab96614f2e565b938315612dd857612d8f9160020b9061209f565b915b15612dc3578160020b8160020b135f14612dbc575061335b565b60020b614e5c565b955f9695612226565b905061335b565b8160020b8160020b125f14612dbc575061335b565b612de59160020b9061335b565b91612d91565b612df8915160020b61335b565b91612d63565b505f92508990612d41565b5080612203565b915060ff60145460181c168080612e67575b8115612e47575b50612e38576240000090612949565b63016ccb0760e01b5f5260045ffd5b90501580612e56575b5f612e29565b5060c4358015158114612e50575f80fd5b905060c43580159081158103610e40575090612e22565b600454600e54111561321a5760019060ff1916175f557fe8775e4a58023f399765c3455b45eebcc45ad6b99607a1163f02e1318430970c5f80a1612ed3612ecb60a06121753660246113e7565b505050614841565b601554612ee26118e682611450565b60015f52600760205290612f025f805160206154e383398151915261147f565b612f0b8361162c565b52612f158261162c565b5060025f526007602052612f355f8051602061550383398151915261147f565b612f3e8361164d565b52612f488261164d565b505f5b8181106131e9575050612f63906123bb3660246113e7565b5060145460181c60ff1690811561319e576044356001600160a01b0381168103610e4057612fce918491612fb8906001600160801b0390612fa3906145cf565b16600f0b60018060801b0392600f0b9061203c565b165b60035490612fc93660246113e7565b614ca4565b90604080519290612fdf81856113b4565b60018452601f19015f5b81811061316f575050805160020b6020820191825160020b90604060018060801b0391015116906040519261301d84611333565b835260208301526040820152600160608201526130398461162c565b526130438361162c565b505160020b901561314657608435928360020b8403610e405761308061307a613075613093948761309898509061209f565b613378565b91613378565b9061308c3660246113e7565b9184613a82565b61162c565b5160015f52600760205260405f2090805162ffffff198354169062ffffff161782556130cb602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b161790555f5b6015546001810180911161145e5781101561313f578061312c600192611450565b5f5260076020525f60408120550161310b565b505f612100565b608435928360020b8403610e405761308061307a6130756130939461225c886130989950612071565b60209060405161317e81611333565b5f81525f838201525f60408201525f606082015282828801015201612fe9565b6024356001600160a01b0381168103610e4057612fce9184916131e3906001600160801b03906131cd906145cf565b6001600160801b039360801d9116600f0b61203c565b16612fba565b80600301908160031161145e576001915f52600760205261321360405f20612ad2612acc84611450565b5001612f4b565b631ed9bcf960e01b5f5260045ffd5b5060ff8116156120fb565b6315d7892d60e21b92505f91508190565b630fc95b4360e01b5f5260045ffd5b636fce6c3960e01b5f5260045ffd5b6001607f1b81101561327557600f0b90565b6335278d125f526004601cfd5b6132a5906132978360801d8260801d01614ed9565b92600f0b90600f0b01614ed9565b60018060801b03169060801b1790565b90816020910312610e40575190565b6001600160a01b039182165f9081529282166020908152604093849020935163789add5560e11b815260048101949094529183916024918391165afa908115610e35575f91613311575090565b90506020813d602011613338575b8161332c602093836113b4565b81010312610e40575190565b3d915061331f565b60020b5f190190627fffff198212627fffff83131761145e57565b600291820b910b0390627fffff198212627fffff83131761145e57565b60020b908160ff1d82810118620d89e881116136925763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613676575b6004811661365a575b6008811661363e575b60108116613622575b60208116613606575b604081166135ea575b608081166135ce575b61010081166135b2575b6102008116613596575b610400811661357a575b610800811661355e575b6110008116613542575b6120008116613526575b614000811661350a575b61800081166134ee575b6201000081166134d2575b6202000081166134b7575b62040000811661349c575b6208000016613483575b5f1261347b575b0160201c90565b5f1904613474565b6b048a170391f7dc42444e8fa290910260801c9061346d565b6d2216e584f5fa1ea926041bedfe9890920260801c91613463565b916e5d6af8dedb81196699c329225ee6040260801c91613458565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c9161344d565b916f31be135f97d08fd981231505542fcfa60260801c91613442565b916f70d869a156d2a1b890bb3df62baf32f70260801c91613438565b916fa9f746462d870fdf8a65dc1f90e061e50260801c9161342e565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613424565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161341a565b916ff3392b0822b70005940c7a398e4b70f30260801c91613410565b916ff987a7253ac413176f2b074cf7815e540260801c91613406565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c916133fc565b916ffe5dee046a99a2a811c461f1969c30530260801c916133f2565b916fff2ea16466c96a3843ec78b326b528610260801c916133e9565b916fff973b41fa98c081472e6896dfb254c00260801c916133e0565b916fffcb9843d60f6159c9db58835c9266440260801c916133d7565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916133ce565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916133c5565b916ffff97272373d413259a46990580e213a0260801c916133bc565b826345c3193d60e11b5f5260045260245ffd5b604051906136b282611399565b5f6040838281528260208201520152565b905f19820191821360011661145e57565b81810392915f13801582851316918412161761145e57565b801561145e575f190190565b60020b9060020b90811561371a57627fffff1981145f1983141661145e570590565b634e487b7160e01b5f52601260045260245ffd5b8181029291811591840414171561145e57565b811561371a570490565b9291909161375761480d565b613764601354809261372e565b906137726010548093611472565b9060115492838311613a46575b61378761480d565b6001810180911161145e576137a49261379f9161372e565b611472565b91808311613a3e575b50808214613a01576137e06137cf6137e6936117f46117eb60105480936115a1565b916117f46117eb60105480936115a1565b906115a1565b936015549384805b6139c0575b5061380a6020613814920194855160020b9061335b565b8560020b906136f8565b918461384b60ff60145460181c1694855f1461398657606085015160020b90818160020b125f1461397f57505b97600d5490615113565b9180613857838561372e565b1161396f575050925b5160020b9461386e856115ae565b9561387c60405197886113b4565b858752601f1961388b876115ae565b015f5b8181106139585750505f905b8682106138ab575050505050505090565b6138b5828961165d565b519060020b905260016138e76138d9846138cf858c61165d565b515160020b61209f565b606086015160020b90614f2e565b9160206138f4828b61165d565b51018360020b9052613939878a613932602061392786613921613917828761165d565b515160020b613378565b9461165d565b51015160020b613378565b9089614fcc565b6040613945838c61165d565b510190838060801b03169052019061389a565b6020906139636136a5565b82828c0101520161388e565b6139799250613741565b92613860565b9050613841565b60608501613997815160020b612071565b60020b8260020b125f146139ad57505b976117fa565b6139bb91505160020b612071565b6139a7565b945f19860186811161145e576139d590615001565b6139de87615001565b036139fb576139ef6139f5916136ec565b956136ec565b806137ee565b946137f3565b505050505050604051613a156020826113b4565b5f81525f805b818110613a2757505090565b602090613a326136a5565b82828601015201613a1b565b91505f6137ad565b83925061377f565b805115158252602080820151908301526040908101516001600160a01b0316910152565b600160ff1b811461145e575f0390565b9392916001600160a01b039182169116818103613f83575b50505f915f5b8451811015613c0d576001600160801b036040613abd838861165d565b51015116613ace575b600101613aa0565b613b7e90604060ff60145460181c16805f14613bf557613aee838961165d565b515160020b905b15613be1576020613b06848a61165d565b51015160020b5b613b2c6001600160801b0384613b23878d61165d565b51015116613263565b60ff6060613b3a878d61165d565b5101511691845193613b4b85611333565b60020b845260020b6020840152600f0b838301526060820152815180948192632d35e7ed60e11b83528860048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192613bc4575b509050613ac6565b613bdb9060403d8111611db257611da481836113b4565b50613bbc565b613beb838961165d565b515160020b613b0d565b6020613c01848a61165d565b51015160020b90613af5565b509190928051905f19820191821161145e57602091613c2b9161165d565b5101516018549060181b65ffffff000000169065ffffff0000001916176018557f0000000000000000000000000000000000000000000000000000000000000000613c8060018060a01b0385511630836132c4565b906020850194613c9a60018060a01b0387511630846132c4565b925f8113613f1c575b848413613ea7575b848112613db4575b5050828212613cc4575b5050509050565b84516001600160a01b039081169591169190823b15613db05760405195632961046560e21b87526004870152838660248183875af195861561074b57849596613d93575b505160209291613d2d916001600160a01b0316908390613d2790613a72565b91614611565b600460405180958193630476982d60e21b83525af1908115613d875750613d58575b80808392613cbd565b613d799060203d602011613d80575b613d7181836113b4565b8101906132b5565b505f613d4f565b503d613d67565b604051903d90823e3d90fd5b84613da29195929394956113b4565b613db057908392915f613d08565b8380fd5b81516001600160a01b03848116939116833b15612ba65760405190632961046560e21b82526004820152868160248183885af18015613e9c57908791613e87575b505080516001600160a01b031680613e73575b50516001600160a01b0316613e6957613e22602091613a72565b915b600460405180948193630476982d60e21b83525af1801561074b57613e4a575b80613cb3565b613e629060203d602011613d8057613d7181836113b4565b505f613e44565b5060208491613e24565b613e819084613d2785613a72565b5f613e08565b81613e91916113b4565b612c0957855f613df5565b6040513d89823e3d90fd5b86516001600160a01b038481169116813b15612ba65785613ee392889283604051809681958294630b0d9c0960e01b845230906004850161157f565b03925af18015613f1157908691613efc575b5050613cab565b81613f06916113b4565b611ed257845f613ef5565b6040513d88823e3d90fd5b81516001600160a01b03908116908416803b15610e4057825f91613f599383604051809681958294630b0d9c0960e01b845230906004850161157f565b03925af18015610e3557613f6e575b50613ca3565b613f7b9195505f906113b4565b5f935f613f68565b60405191613f9083611399565b81108252600160208301526040820152613fc860405191633cf3645360e21b8352613fbe60048401856114ee565b60a4830190613a4e565b6101206101048201525f610124820152602081610144815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610e355761401c575b80613a9a565b6140349060203d602011613d8057613d7181836113b4565b505f614016565b6101409290916140c391906001600160a01b0361405782611181565b1684526001600160a01b0361406e60208301611181565b16602085015262ffffff614084604083016113d7565b166040850152614096606082016112a4565b60020b60608501526001600160a01b03906140b390608001611181565b16608084015260a0830190613a4e565b6101206101008201525f6101208201520190565b60ff5f54166145c1576141299060a06140f13660246113e7565b207f00000000000000000000000000000000000000000000000000000000000000009061411e8183614754565b949290969150614841565b60145460181c60ff1680156145ae5760185460181c60020b8260020b135b60015f5260076020525f805160206154e38339815191525460020b9082156145a257818460020b12905b156144c05750505050906141ea91602060ff60145460181c16805f146144ac576141a561307560185460181c60020b612084565b604051916141b283611399565b151582526001838301526001600160a01b031660408083019190915251633cf3645360e21b815294859182919060246004840161403b565b03815f6001600160a01b0386165af18015610e3557614479575b61420e9250614754565b50509050925b60c435908115158203610e405762ffffff91610fff9182911561447057165b169116620f42408183020491010360ff60145460181c165f146143c757608082901d5f600f82900b1261438257600354614276916001600160801b031690611472565b6003555b600f82900b5f81126143285750505f805160206154c3833981519152916142ad60609260018060801b03166004546115a1565b6004555b600454600f548110156142e4575b600354906040519260020b835260208301526040820152a163b47b2fb160e01b905f90565b61010061ff00195f5416175f557f628a470bfdde264ef77cd19acfbfca22b3e4413adaf5837ec9fbc0043e35793f602061431c61480d565b604051908152a16142bf565b62ffffff919250614338906114c1565b9116620f42400391620f4240831161145e575f805160206154c38339815191529260609261437a91614372916001600160801b031661518e565b600454611472565b6004556142b1565b61438b906114c1565b62ffffff8216620f42400390620f4240821161145e576143bf916143b7916001600160801b031661518e565b6003546115a1565b60035561427a565b90600f81900b5f811261443357506003546143ec906001600160801b03831690611472565b6003555b60801d905f600f83900b1261442557505f805160206154c38339815191529161437a60609260018060801b03166004546115a1565b9061433862ffffff916114c1565b61443c906114c1565b62ffffff8316620f42400390620f4240821161145e57614468916143b7916001600160801b031661518e565b6003556143f0565b600c1c16614233565b6020833d6020116144a4575b81614492602093836113b4565b81010312610e405761420e9250614204565b3d9150614485565b6141a561307560185460181c60020b613340565b97949392976144d3575b50505050614214565b614534949750906144f0602092825f146145995761307590613340565b604051916144fd83611399565b1582526001838301526001600160a01b031660408083019190915251633cf3645360e21b815294859182919060246004840161403b565b03815f6001600160a01b0386165af18015610e3557614566575b6145589250614754565b50509050925f8080806144ca565b6020833d602011614591575b8161457f602093836113b4565b81010312610e4057614558925061454e565b3d9150614572565b61307590612084565b818460020b1390614171565b60185460181c60020b8260020b12614147565b5063b47b2fb160e01b905f90565b6001600160a01b0316806145e257504790565b6020602491604051928380926370a0823160e01b82523060048301525afa908115610e35575f91613311575090565b9091906001600160a01b038116908161469f5750505f80808093855af1156146365750565b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b60205f604481949682604095865198899363a9059cbb60e01b855260018060a01b0316600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156146f05750565b6040516390bfb86560e01b8152600481019190915263a9059cbb60e01b602482015260806044820152601f3d01601f191660a0810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b919060209060405182810191825260066040820152604081526147786060826113b4565b519020604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215610e35575f926147d9575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614805575b816147f5602093836113b4565b81010312610e405751905f6147b1565b3d91506147e8565b60105480421061483b5761482461482d91426115a1565b60135490613741565b6001810180911161145e5790565b50600190565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611614ada57602081901b600160201b600160c01b0316808015610e4057693627a301d71055774c859160ff8260018060801b031060071b83811c60018060401b031060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177b01c1818141808140018080c0814100004181408140c0c100414140c160221b6f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f14614ace5750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c600160321b90800260cd1c169d600160331b9060cc1c169c600160341b9060cb1c169b600160351b9060ca1c169a600160361b9060c91c1699600160371b9060c81c1698600160381b9060c71c1697600160391b9060c61c16966001603a1b9060c51c16956001603b1b9060c41c16946001603c1b9060c31c16936001603d1b9060c21c16926001603e1b9060c11c16916001603f1b9060c01c1690607f190160401b1717171717171717171717171717026fdb2df09e81959a81455e260799a0632f6f028f6481ab7f045a5af012a19d003aa919820160801d60020b910160801d60020b918282145f14614aaa5750905090565b6001600160a01b0390811690614abf84613378565b1611614ac9575090565b905090565b905081607f031b61491e565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b91905f905f905f5b8551811015614c8d576001600160801b036040614b1f838961165d565b51015116614b30575b600101614b02565b9192614bdf604060ff60145460181c16805f14614c7557614b51868a61165d565b515160020b905b15614c61576020614b69878b61165d565b51015160020b5b8960ff6060614b9b8a6139216001600160801b0389614b8f848961165d565b51015116600f0b6114c1565b5101511691845193614bac85611333565b60020b845260020b6020840152600f0b838301526060820152815180938192632d35e7ed60e11b83528760048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192614c36925f905f92614c3e575b50614c309192613282565b95613282565b929050614b28565b614c309250614c5b915060403d8111611db257611da481836113b4565b91614c25565b614c6b868a61165d565b515160020b614b70565b6020614c81878b61165d565b51015160020b90614b58565b505091909250614c9f82600654613282565b600655565b9093929193614cb16136a5565b9480614e0457505f5b6001600160a01b031680614cde5750505060020b80835260208301525f6040830152565b919250614de991614d9090606090614d829060b56001600160881b03821160071b82811c6001600160481b031060061b1782811c64ffffffffff1060051b1782811c62ffffff1060041b17600181811c9290921b9083901c62010000010260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900360301b6001600160a01b0316614841565b940193845160020b90614f2e565b92614dd1602087019460020b9182865260ff60145460181c1692835f14614df15750614dc690865160020b905160020b9061335b565b60020b808852613378565b93516001600160801b0394906129e29060020b613378565b166040830152565b614dff915160020b9061209f565b614dc6565b8160ff60145460181c165f14614e3d5750600654614e3891614e329160801d6001600160801b0316906115a1565b826152fd565b614cba565b600654614e3892614e57916001600160801b0316906115a1565b6152fd565b90670de0b6b3a7640000820291808305670de0b6b3a7640000149015171561145e57565b81810292915f8212600160ff1b82141661145e57818405149015171561145e57565b9060018201915f60018412911290801582169115161761145e57565b9190915f838201938412911290801582169115161761145e57565b9081600f0b918203614ee757565b6393dafdf160e01b5f5260045ffd5b80628000000160181c15614f11576335278d125f526004601cfd5b60020b90565b9060020b9060020b02908160020b91820361145e57565b9060ff60145460181c165f14614f7a575f8260020b125f14614f6d57614f6881614f63614f5e82611e679661335b565b612084565b6136f8565b614f17565b614f6881611e67936136f8565b5f8260020b125f14614f9357614f6881611e67936136f8565b614f6881614f63614fa782611e679661209f565b613340565b6117fa6117db6117d26117c96117c4611e6795614fc761480d565b614ebe565b90929091908015614ffb575f19810190811161145e57915b15614ff257611e6792615420565b611e67926153dd565b91614fe4565b61501c6150136150259261379f61480d565b6013549061372e565b60105490611472565b601154808211614ac9575090565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610e4057146150c357670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b1115610e40571461510a57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b808202905f1983820990828083109203918083039283670de0b6b3a76400001115610e40571461517d577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b808202905f1983820990828083109203918083039283620f42401115610e4057146151ee577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90606082901b905f19600160601b840992828085109403938085039485841115610e4057146150c3578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302915f1981850993838086109503948086039586851115610e4057146152f5579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b90615307916151fa565b6001600160a01b03811161532d57600160a01b811015613275576001600160a01b031690565b505f90565b615378612dab615348612ecb60a0612175611f3d565b60145460181c60ff16156153ac5760125460020b808260020b135f146153a557505b60125460181c60020b61335b565b61538a614824601154601054906115a1565b90811561371a57600160ff1b81145f1983141661145e570590565b905061536a565b60125460020b808260020b125f146153a5575061536a565b6001600160a01b03918216908216039190821161145e57565b611e67926154159290916001600160a01b038083169082161161541a575b6001600160a01b039161540e91906153c4565b16906151fa565b615474565b906153fb565b611e6792615415929091906001600160a01b038082169083161161546e575b6154676154586001600160a01b038381169085166150ca565b926001600160a01b03926153c4565b169161527d565b9061543f565b6001600160801b0381169190820361548857565b60405162461bcd60e51b81526020600482015260126024820152716c6971756964697479206f766572666c6f7760701b6044820152606490fdfe27db09392d7d230eb65a11bd84925fb8da90df8a067ca8a4fc2933b4f637262bb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828b7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96da164736f6c634300081a000a";
1407
+ var doppler_default = "0x60a06040523461057b57604051601f615c1a38819003918201601f19168301916001600160401b0383118484101761057f578084926101c09460405283398101031261057b5780516001600160a01b038116810361057b5760208201516040830151906060840151608085015160a08601519061007e60c088016105b3565b9161008b60e089016105b3565b91610100890151946100a06101208b016105b3565b976101408b0151978815988915810361057b576101608d01516101808e01516001600160a01b0381169e919d91908f0361057b576101a001519062ffffff821680920361057b576080525f6101a06100f6610593565b8281528260208201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201525f6101a0610154610593565b6001815260016020820152600160408201528260608201528260808201528260a0820152600160c0820152600160e082015260016101008201528261012082015282610140820152826101608201528261018082015201526120003016151560011480159061056a575b8015610559575b801561054c575b801561053f575b8015610532575b8015610522575b8015610512575b8015610502575b80156104f6575b80156104ea575b80156104de575b80156104d2575b80156104c6575b6104b35762ffffff1960165416176016558442116104a4578660020b8860020b91818303610463575b5050508484101561045457838503858111610440578a60020b5f811380159061042b575b61041c578915610408578982066103f9578c156103eb57600f8d116103eb578484116103dc5761029861029d928b81046017558b6105c1565b610658565b628000008110156103cf5762ffffff19601854169062ffffff1617601855600d55600e55600f5560105560115562ffffff6012549160181b65ffffff0000001692169065ffffffffffff1916171760125560135562ffffff63ff000000601454921560181b1692169063ffffffff1916171760145560155560018060a01b0319600c541617600c5560405161554690816106d48239608051818181601c01528181610205015281816102a80152818161045c0152818161050c0152818161098701528181610a1e01528181610af501528181610b9201528181610c5a01528181610e8301528181610f3a0152818161103d015281816110b201528181611d2c01528181611de40152818161217801528181613ba601528181613c700152818161400c015281816141170152614c070152f35b6335278d125f526004601cfd5b638cc99b7b60e01b5f5260045ffd5b6287e39960e61b5f5260045ffd5b6388ac089760e01b5f5260045ffd5b634e487b7160e01b5f52601260045260245ffd5b6312469eb560e11b5f5260045ffd5b5061043a81610298848d6105c1565b1561025f565b634e487b7160e01b5f52601160045260245ffd5b63536a71af60e01b5f5260045ffd5b8061049b575b610483578a9182610491575b5050610483575f808061023b565b6264847d60e41b5f5260045ffd5b1390505f80610475565b50808212610469565b632ca4094f60e21b5f5260045ffd5b630732d7b560e51b5f523060045260245ffd5b50600130161515610212565b5060023016151561020b565b50600430161515610204565b506008301615156101fd565b506010301615156101f6565b50602030161515600114156101ef565b50604030161515600114156101e8565b50608030161515600114156101e1565b50610100301615156101da565b50610200301615156101d3565b50610400301615156101cc565b5061080030161515600114156101c5565b5061100030161515600114156101be565b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b604051906101c082016001600160401b0381118382101761057f57604052565b51908160020b820361057b57565b90670de0b6b3a76400008202905f19670de0b6b3a764000084099282808510940393808503948584111561057b571461065157670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b808202905f1983820990828083109203918083039283670de0b6b3a7640000111561057b57146106c2577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a76400009150049056fe608080604052600436101561005b575b50361561001a575f80fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361004c57005b6393c866c160e01b5f5260045ffd5b5f905f3560e01c908163182148ef146111155750806318cb1700146110f357806321d0ee701461109f578063259982e51461102a578063392e53cd1461100857806339518b5e14610feb578063514ea4bf14610f96578063575e24b414610ee357806357d775f814610ec65780636c2bbe7e14610e705780636c47a6c314610e535780636fe7e6eb14610c19578063897479cb14610bfb57806390ebab0a14610bdd57806391dd734614610b5e5780639ce110d714610b355780639f063efc14610ade578063a4dee15514610ab9578063b137392914610a98578063b356603014610a74578063b47b2fb1146109c6578063b6a8b0fa14610970578063c19d93fb14610921578063c4e833ce146107b6578063c70dfb4f14610795578063ce5494bb146104cb578063d0c52e21146104a9578063d65b4cb91461048b578063dc4c90d314610446578063dc98354e14610276578063dcf93f3214610250578063e1b4af69146101ee5763ee4644300361000f57346101eb57806003193601126101eb576020600d54604051908152f35b80fd5b50346101eb57600490610200366112dc565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303925061024491505057630a85dc2960e01b8152fd5b63570c108560e11b8152fd5b50346101eb57806003193601126101eb57602060ff60145460181c166040519015158152f35b50346101eb5760e03660031901126101eb5761029061116b565b5060a03660231901126101eb576102a561128e565b507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633036104375760085460ff81166104295760ff19166001176008556001600160a01b03602435908116908181036104255750600980546001600160a01b0319169190911790556044356001600160a01b038116908181036104255750600a80546001600160a01b03191691909117905560643562ffffff8116810361042157600a5461035a612061565b60b81b62ffffff60b81b169162ffffff60a01b9060a01b169065ffffffffffff60a01b19161717600a5560a43560018060a01b03811680910361042157600b80546001600160a01b031916919091179055601e6103b5612061565b60020b136104125760145460020b6103cb612061565b60020b9081156103fe570760020b6103ef57604051636e4c1aa760e11b8152602090f35b6312469eb560e11b8152600490fd5b634e487b7160e01b83526012600452602483fd5b63013840ad60e51b8152600490fd5b5080fd5b8280fd5b62dc149f60e41b8252600482fd5b63570c108560e11b8152600490fd5b50346101eb57806003193601126101eb576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b50346101eb57806003193601126101eb576020600f54604051908152f35b50346101eb57806003193601126101eb5760ff60209154166040519015158152f35b50346101eb5760203660031901126101eb576104e561116b565b600c546001600160a01b031633036107865760ff825460081c161580610765575b610756577f000000000000000000000000000000000000000000000000000000000000000061059d8361057561058360405161054181611333565b610549611f3d565b815260018060a01b03871660208201528360408201526001606082015260405192839160208301611f8a565b03601f1981018352826113b4565b604051809381926348c8949160e01b8352600483016112b2565b0381836001600160a01b0387165af190811561074b57916105d785926105e2959460e09791610729575b50602080825183010191016114d8565b6006959195546132a5565b9161064160018060a01b0360095416926106306105fe856145f2565b948761061f8761061760018060a01b03600a54166145f2565b9a8b94614634565b600a546001600160a01b0316614634565b60a061063a611f3d565b2090614777565b5050600954600a5492976001600160a01b039182169791909316946106879250610678906001600160801b03608086901d16611472565b926001600160801b0316611472565b906001600160801b0381111561071a57506001600160801b03915b506001600160801b0381111561070b57506001600160801b03935b604080516001600160a01b0397909716875260208701919091526001600160801b03608085811d821692880192909252918216606087015285019190915290811660a08401521660c0820152f35b6001600160801b0316936106bd565b6001600160801b0316916106a2565b61074591503d8086833e61073d81836113b4565b810190611fcb565b5f6105c7565b6040513d86823e3d90fd5b63051a2a5560e51b8252600482fd5b50600454600e5411158061077a575b15610506565b50601154421015610774565b638341a67960e01b8252600482fd5b50346101eb57806003193601126101eb57602060125460020b604051908152f35b50346101eb57806003193601126101eb576020816101c0926101a06040516107dd81611362565b82815282858201528260408201528260608201528260808201528260a08201528260c08201528260e0820152826101008201528261012082015282610140820152826101608201528261018082015201528060405161083b81611362565b60018152838101600181526040820160018152606083018481526080840185815260a0850186815260c08601906001825260e087019260018452610100880194600186526101208901968a88526101408a01988b8a526101a06101608c019b8d8d5261018081019d8e52019c8d526040519d8e916001835251151591015251151560408d015251151560608c015251151560808b015251151560a08a015251151560c089015251151560e08801525115156101008701525115156101208601525115156101408501525115156101608401525115156101808301525115156101a0820152f35b50346101eb57806003193601126101eb5760c064ffffffffff600154166002546003546004546005549160065493604051958652602086015260408501526060840152608083015260a0820152f35b50346101eb57600490610982366112dc565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330392506102449150505763567d91d160e01b8152fd5b50346101eb576101603660031901126101eb576109e161116b565b5060a03660231901126101eb5760603660c31901126101eb57610144356001600160401b03811161042157610a1a903690600401611195565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610437576040610a5a610124356140fa565b82516001600160e01b03199092168252600f0b6020820152f35b50346101eb57806003193601126101eb57602060125460181c60020b604051908152f35b50346101eb57806003193601126101eb57602060145460020b604051908152f35b50346101eb57806003193601126101eb5760ff6020915460081c166040519015158152f35b50346101eb57600490610af036611225565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330393506102449250505057630a85dc2960e01b8152fd5b50346101eb57806003193601126101eb57600c546040516001600160a01b039091168152602090f35b50346101eb5760203660031901126101eb576004356001600160401b03811161042157610b8f903690600401611195565b917f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316330361043757610bd9610bcd848461168f565b604051918291826112b2565b0390f35b50346101eb57806003193601126101eb576020601554604051908152f35b50346101eb57806003193601126101eb576020600e54604051908152f35b5034610e4057610100366003190112610e4057610c3461116b565b60a0366023190112610e4057610c4861128e565b5060e435908160020b809203610e40577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03169133839003610e445762ffffff6016541691833b15610e4057604051635275965160e01b815292602435906001600160a01b038216808303610e40576004860152604435946001600160a01b038616808703610e4057602482015260643562ffffff8116808203610e40576044830152608435918260020b808403610e4057606482015260a435936001600160a01b038516808603610e4057608483015260a48201525f8160c481838d5af18015610e3557610e07575b509488979461057594610da6948a9994610dc29960405196610d5a88611333565b60405194610d678661137e565b85526020850152604084015260608301526080820152835260018060a01b03166020830152604082015285606082015260405192839160208301611f8a565b6040519485809481936348c8949160e01b8352600483016112b2565b03925af18015610dfc57610de3575b604051636fe7e6eb60e01b8152602090f35b610df6913d8091833e61073d81836113b4565b5f610dd1565b6040513d84823e3d90fd5b610da69399509461057594610e245f610dc299949a959b986113b4565b5f9a94509450949791969095610d39565b6040513d5f823e3d90fd5b5f80fd5b63570c108560e11b5f5260045ffd5b34610e40575f366003190112610e40576020601154604051908152f35b34610e4057610e7e36611225565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039350610e449250505057630a85dc2960e01b5f5260045ffd5b34610e40575f366003190112610e40576020601354604051908152f35b34610e4057610140366003190112610e4057610efd61116b565b5060a0366023190112610e405760603660c3190112610e4057610124356001600160401b038111610e4057610f36903690600401611195565b50507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163303610e4457606062ffffff610f766120bd565b906040939293519363ffffffff60e01b1684526020840152166040820152f35b34610e40576020366003190112610e40576004355f526007602052608060405f205460ff604051918060020b83528060181c60020b6020840152600180851b038160301c16604084015260b01c166060820152f35b34610e40575f366003190112610e40576020601054604051908152f35b34610e40575f366003190112610e4057602060ff600854166040519015158152f35b34610e4057611038366111c2565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039050610e4457306001600160a01b03909116036110905760405163259982e560e01b8152602090f35b636d1ed89b60e01b5f5260045ffd5b34610e40576110ad366111c2565b5050507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031633039150610e44905057630a85dc2960e01b5f5260045ffd5b34610e40575f366003190112610e4057602062ffffff60165416604051908152f35b34610e40575f366003190112610e4057600954600a54600b546001600160a01b039283168452818316602085015260a082811c62ffffff16604086015260b89290921c60020b6060850152909116608083015290f35b600435906001600160a01b0382168203610e4057565b35906001600160a01b0382168203610e4057565b9181601f84011215610e40578235916001600160401b038311610e405760208381860195010111610e4057565b90610160600319830112610e40576004356001600160a01b0381168103610e40579160a0602319820112610e4057602491608060c319830112610e405760c49161014435906001600160401b038211610e405761122191600401611195565b9091565b906101a0600319830112610e40576004356001600160a01b0381168103610e40579160a0602319820112610e4057602491608060c319830112610e405760c4916101443591610164359161018435906001600160401b038211610e405761122191600401611195565b60c435906001600160a01b0382168203610e4057565b35908160020b8203610e4057565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b610120600319820112610e40576004356001600160a01b0381168103610e40579160a0602319830112610e405760249160c4359160e4359161010435906001600160401b038211610e405761122191600401611195565b608081019081106001600160401b0382111761134e57604052565b634e487b7160e01b5f52604160045260245ffd5b6101c081019081106001600160401b0382111761134e57604052565b60a081019081106001600160401b0382111761134e57604052565b606081019081106001600160401b0382111761134e57604052565b601f909101601f19168101906001600160401b0382119082101761134e57604052565b359062ffffff82168203610e4057565b91908260a0910312610e40576040516113ff8161137e565b608061144b81839561141081611181565b855261141e60208201611181565b602086015261142f604082016113d7565b6040860152611440606082016112a4565b606086015201611181565b910152565b600201908160021161145e57565b634e487b7160e01b5f52601160045260245ffd5b9190820180921161145e57565b9060405161148c81611333565b9154600281810b8452601882901c900b6020840152603081901c6001600160801b0316604084015260b01c60ff166060830152565b600f0b60016001607f1b0319811461145e575f0390565b9190826040910312610e40576020825192015190565b80516001600160a01b03908116835260208083015182169084015260408083015162ffffff169084015260608083015160020b9084015260809182015116910152565b9061016092611542836060936114ee565b805160020b60a0840152602081015160020b60c0840152604081015160e084015201516101008201526101406101208201525f6101408201520190565b6001600160a01b03918216815291166020820152604081019190915260600190565b9190820391821161145e57565b6001600160401b03811161134e5760051b60200190565b906115cf826115ae565b6115dc60405191826113b4565b82815280926115ed601f19916115ae565b01905f5b8281106115fd57505050565b60209060405161160c81611333565b5f81525f838201525f60408201525f6060820152828285010152016115f1565b8051156116395760200190565b634e487b7160e01b5f52603260045260245ffd5b8051600110156116395760400190565b80518210156116395760209160051b010190565b9081549060181b65ffffff000000169065ffffff0000001916179055565b919082015f61010084830312610e40576116b5604051926116af84611333565b856113e7565b938483526116c560a08201611181565b80602085015260e06116d960c084016112a4565b92836040870152013580151594858203610e40576060015260018060a01b03169060020b92611c4e5750600164ffffffffff1981541617600155606084019261173c845160020b61173761172c85614f19565b60125460020b61209f565b614f51565b6014549060ff8260181c165f14611c3b5761175a9160020b9061209f565b945b6117658461339b565b61176e8561339b565b956040519561177c87611399565b808752602087018181526118d8604089019a888c526118d0600d54956117a06136c8565b956118088c6118036117fa6117db6117d26117c96117c46117bf614830565b614ec5565b6136e6565b60135490614ea3565b60105490614ee1565b6117f46117eb60105480936115a1565b916011546115a1565b90615056565b600d5490615136565b6136f7565b8c929083811315611c2c5761186b9293508981115f14611c275750885b928d60185460020b835160020b8082135f14611c1f5750905b50818a5260145460181c60ff1615611c105761185f9150895160020b61209f565b905b5160020b90614f51565b60020b60208701525b855160020b966020870197885160020b14155f14611c055760ff60145460181c166118c5836118a68a5160020b61339b565b8b516001600160801b039491906118bf9060020b61339b565b91614fef565b1660408801526115a1565b90848861376e565b996118eb6118e68c51611450565b6115c5565b985160020b915160020b9060018060801b03905116906040519261190e84611333565b8352602083015260408201526001606082015261192a8861162c565b526119348761162c565b50805160020b915160020b90604060018060801b0391015116906040519261195b84611333565b835260208301526040820152600260608201526119778661164d565b526119818561164d565b50835b8751811015611a3457611997818961165d565b515160020b60206119a8838b61165d565b51015160020b6001600160801b0360406119c2858d61165d565b51015116836003019182600311611a2057611a1992600195949260ff92604051946119ec86611333565b855260208501526040840152166060820152611a0783611450565b90611a12828b61165d565b528861165d565b5001611984565b634e487b7160e01b89526011600452602489fd5b50611a429293969585613aa5565b611a4b8261162c565b516001855260076020526040852090805162ffffff198354169062ffffff16178255611a7e602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055611ac58261164d565b516002855260076020526040852090805162ffffff198354169062ffffff16178255611af8602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055835b8351811015611be557611b53611b4d82611450565b8461165d565b518160030180600311611bd1579060019291875260076020526040872090805162ffffff198354169062ffffff16178255611b95602082015160020b83611671565b604081015190825490606060ff60b01b91015160b01b16918560301b8660b01b039060301b16908560301b8660b81b0319161717905501611b38565b634e487b7160e01b87526011600452602487fd5b509291505060405190611bf96020836113b4565b81525f36602083013790565b8b60408801526115a1565b611c199161337e565b90611861565b90509061183e565b611825565b50508087526020870152611874565b611c489160020b9061337e565b9461175c565b925f9250829160015b6015546003018060031161145e57811015611ddc57805f526007602052611c8060405f2061147f565b60408101516001600160801b031680611c9e575b5050600101611c57565b611d279160409160ff6014999598995460181c1691825f14611dce57805160020b925b15611db95760ff6060611ce3611cde602085015160020b95613286565b6114c1565b9201511691845193611cf485611333565b60020b845260020b6020840152600f0b838301526060820152815180938192632d35e7ed60e11b83528c60048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192611d7e925f905f92611d86575b50611d7891926132a5565b966132a5565b93905f611c94565b611d789250611dac915060403d8111611db2575b611da481836113b4565b8101906114d8565b91611d6d565b503d611d9a565b60ff6060611ce3611cde845160020b95613286565b602081015160020b92611cc1565b5091929390947f000000000000000000000000000000000000000000000000000000000000000091611e1860018060a01b0383511630856132e7565b926020830192611e3260018060a01b0385511630846132e7565b945f8113611ed6575b5050848413611e6a575b5050505050604051916020830152604082015260408152611e676060826113b4565b90565b91516001600160a01b039283169216823b15611ed25791611ea6939185809460405196879586948593630b0d9c0960e01b85526004850161157f565b03925af18015610dfc57611ebd575b808080611e45565b611ec88280926113b4565b6101eb5780611eb5565b8480fd5b90516001600160a01b0383811692911690823b15610e4057611f1392855f809460405196879586948593630b0d9c0960e01b85526004850161157f565b03925af18015610e3557611f28575b80611e3b565b611f359195505f906113b4565b5f935f611f22565b60405190611f4a8261137e565b6009546001600160a01b039081168352600a54808216602085015260a081901c62ffffff16604085015260b81c60020b6060840152600b54166080830152565b91909160e06060610100830194611fa28482516114ee565b60208101516001600160a01b031660a0850152604081015160020b60c085015201511515910152565b602081830312610e40578051906001600160401b038211610e40570181601f82011215610e40578051906001600160401b03821161134e576040519261201b601f8401601f1916602001856113b4565b82845260208383010111610e4057815f9260208093018386015e8301015290565b600f91820b910b019060016001607f1b0319821260016001607f1b0383131761145e57565b6084358060020b8103610e405790565b60020b627fffff19811461145e575f0390565b60020b60010190627fffff8213627fffff1983121761145e57565b9060020b9060020b0190627fffff198212627fffff83131761145e57565b5f80549160ff8360081c16613277576010544210613268576120dd614830565b64ffffffffff600154161015613257575f926011544210158061324c575b612ea1575b509060ff5f5416155f14612e3357612116614830565b9060015461212b64ffffffffff8216846115a1565b64ffffffffff1990911664ffffffffff84161760015560035460025f526007602052946121645f8051602061552683398151915261147f565b9461219c60a06121753660246113e7565b207f0000000000000000000000000000000000000000000000000000000000000000614777565b505050946121a986614864565b608435978860020b90818a14159283610e40578a6121c691614f51565b905f916121d68d600554906136f7565b5f198a0194908a861161145e575f8f966121f26121f791613a95565b614fcf565b80971115911280612e2c575b15612ccf575050506122249192505160020b9161221e615355565b90614ee1565b955b60018111612c395750612262908a60055561225c670de0b6b3a764000061224f89600254614ee1565b9880612c30575b05614f19565b9061209f565b90612c2c578761227191614f51565b9061228d8861173761172c670de0b6b3a76400005f9905614f19565b9760145460ff8160181c165f14612c19576122ab9060020b8a61209f565b955b8960ff60145460181c16809b811580612c09575b15612bcd57505050612bc9576122d7908361209f565b945b6122e28361339b565b986122ec8761339b565b908b15612bc05715612b0d5760016123058c8c84615443565b91818060a01b038c1690828060a01b0316038060ff1d9081011891818060801b031661233183826150ed565b928260601b9109151516015b975b60155461234e6118e682611450565b9060018a52600760205261236460408b2061147f565b61236d8361162c565b526123778261162c565b5060028a52600760205261238d60408b2061147f565b6123968361164d565b526123a08261164d565b50895b818110612ac55750506123c1906123bb3660246113e7565b90614b1d565b5060145460181c60ff1699908a15612a20576044356001600160a01b0381168103612a1c57612402906123f3906145f2565b6001600160801b038316611472565b6006549061241a906001600160801b038316906115a1565b916024356001600160a01b0381168103612a18579e6118e69f936124728e969461245d8c9561244b89879a506145f2565b9060801d6001600160801b0316611472565b60809190911d6001600160801b0316906115a1565b600d548380821115612a1057612487916115a1565b81811090821802189e61249b3660246113e7565b906124a46136c8565b95836129b057505050505060020b80825260208201528260408201525b604081018051909c6125c7916125bf916125ad916001600160801b0316156129a1575b6124ef3660246113e7565b906125166124fb6136c8565b976118036117fa6117db6117d26117c96117c46117bf614830565b888082131561298d5750818111156129845750612571815b928d606060185460020b920191825160020b8082135f1461297c5750905b60020b90818b5260ff60145460181c165f14611c105761185f91508a5160020b61209f565b60020b60208801525b865160020b976020880198895160020b14155f14612972575060ff60145460181c166118c5836118a68a5160020b61339b565b87856125ba3660246113e7565b61376e565b9e8f51611450565b9b6020825160020b92015160020b9060018060801b0390511690604051926125ee84611333565b8352602083015260408201526001606082015261260a8c61162c565b526126148b61162c565b50805160020b915160020b90604060018060801b0391015116906040519261263b84611333565b835260208301526040820152600260608201526126578a61164d565b526126618961164d565b50875b8b51811015612715578b60206126898361267e818561165d565b515160020b9361165d565b51015160020b8d60406126a38560018060801b039361165d565b51015116836003019182600311612701579260ff6126fa938f9360019796604051946126ce86611333565b8552602085015260408401521660608201526126f36126ec85611450565b809361165d565b528c61165d565b5001612664565b634e487b7160e01b8d52601160045260248dfd5b50612735919293949596999a979a61272e3660246113e7565b918a613aa5565b61273e8761162c565b5160018a52600760205260408a2090805162ffffff198354169062ffffff16178255612771602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b161790556127b88761164d565b5160028a52600760205260408a2090805162ffffff198354169062ffffff161782556127eb602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b16179055885b601554811015612918578651811061287557806003018060031161286157906001918b5260076020528a60408120555b0161282b565b634e487b7160e01b8b52601160045260248bfd5b61288761288182611450565b8961165d565b5181600301806003116129045790600192918c52600760205260408c2090805162ffffff198354169062ffffff161782556128c9602082015160020b83611671565b604081015190825490606060ff60b01b91015160b01b16918560301b8660b01b039060301b16908560301b8660b81b0319161717905561285b565b634e487b7160e01b8c52601160045260248cfd5b5090919295507f223157ec47d7bd04fa3ed10c0a8adb38faf97b51ec856a777425a2e39253bd739450608093966040519360020b845260020b602084015260020b60408301526060820152a15b6315d7892d60e21b929190565b60408801526115a1565b90509061254c565b6125719061252e565b9250508b60020b808852602088015261257a565b602085015160020b85526124e4565b838111156129c95750506129c49450614cc7565b6124c1565b9250935050612a0591508c60020b84528960020b60208501526129eb8d61339b565b6001600160801b0393906129fe8c61339b565b9115614fef565b1660408201526124c1565b505086612487565b8c80fd5b8a80fd5b6024356001600160a01b0381168103612a1c57612a5390612a40906145f2565b608083901d6001600160801b0316611472565b60065490612a6f90608083901d6001600160801b0316906115a1565b916044356001600160a01b0381168103612a18579e6118e69f93612ac08e9694612aaf8c95612aa089879a506145f2565b906001600160801b0316611472565b6001600160801b03909116906115a1565b612472565b806003018060031161290457906001918c526007602052612b0660408d20612af5612aef84611450565b9161147f565b612aff828861165d565b528561165d565b50016123a3565b612b188b8b83615400565b8a826001600160a01b0380831690821611612bb5575b506001600160a01b038316918215612ba95760601b600160601b600160e01b0316926001600160a01b03828116929190910316612b6c8282866152a0565b938215612b955709612b86575b808206151591040161233d565b906001019081612b79575b8880fd5b634e487b7160e01b8c52601260045260248cfd5b62bfc9218b526004601cfd5b8c935090505f612b2e565b5050869761233f565b8680fd5b91989392509081612bf8575b50612be5575b506122d9565b612bf19196508361337e565b945f612bdf565b905060020b8460020b13155f612bd9565b508060020b8760020b12156122c1565b612c269060020b8a61337e565b956122ad565b8580fd5b89600255612256565b612c429061370f565b5f198101818111611a20576121f2612c5991613a95565b808c10612c67575b50612226565b612c7c612c75989298615355565b918d615056565b670de0b6b3a76400000390670de0b6b3a76400008211612cbb57612cad612cb49392670de0b6b3a764000092614ea3565b0590614ee1565b955f612c61565b634e487b7160e01b8a52601160045260248afd5b9192909115612d2c57505083612b91578a612ce991614f51565b91612cf5612c75615355565b670de0b6b3a76400000390670de0b6b3a76400008211612cbb57612cad612d269392670de0b6b3a764000092614ea3565b95612226565b93509350975050612d5260125460020b670de0b6b3a76400006002540560020b9061209f565b60185460020b5f9381135f14612e2157905b6014549260ff8460181c1692835f14612e0e57612d84915160020b61209f565b915b829985610e4057612dd694612d9e8e612dce96614f51565b938315612dfb57612db29160020b9061209f565b915b15612de6578160020b8160020b135f14612ddf575061337e565b60020b614e7f565b955f9695612226565b905061337e565b8160020b8160020b125f14612ddf575061337e565b612e089160020b9061337e565b91612db4565b612e1b915160020b61337e565b91612d86565b505f92508990612d64565b5080612203565b915060ff60145460181c168080612e8a575b8115612e6a575b50612e5b576240000090612965565b63016ccb0760e01b5f5260045ffd5b90501580612e79575b5f612e4c565b5060c4358015158114612e73575f80fd5b905060c43580159081158103610e40575090612e45565b600454600e54111561323d5760019060ff1916175f557fe8775e4a58023f399765c3455b45eebcc45ad6b99607a1163f02e1318430970c5f80a1612ef6612eee60a06121753660246113e7565b505050614864565b601554612f056118e682611450565b60015f52600760205290612f255f8051602061550683398151915261147f565b612f2e8361162c565b52612f388261162c565b5060025f526007602052612f585f8051602061552683398151915261147f565b612f618361164d565b52612f6b8261164d565b505f5b81811061320c575050612f86906123bb3660246113e7565b5060145460181c60ff169081156131c1576044356001600160a01b0381168103610e4057612ff1918491612fdb906001600160801b0390612fc6906145f2565b16600f0b60018060801b0392600f0b9061203c565b165b60035490612fec3660246113e7565b614cc7565b9060408051929061300281856113b4565b60018452601f19015f5b818110613192575050805160020b6020820191825160020b90604060018060801b0391015116906040519261304084611333565b8352602083015260408201526001606082015261305c8461162c565b526130668361162c565b505160020b901561316957608435928360020b8403610e40576130a361309d6130986130b694876130bb98509061209f565b61339b565b9161339b565b906130af3660246113e7565b9184613aa5565b61162c565b5160015f52600760205260405f2090805162ffffff198354169062ffffff161782556130ee602082015160020b83611671565b60408101518254606090920151600160301b600160b81b031990921660309190911b600160301b600160b01b03161760b09190911b60ff60b01b161790555f5b6015546001810180911161145e57811015613162578061314f600192611450565b5f5260076020525f60408120550161312e565b505f612100565b608435928360020b8403610e40576130a361309d6130986130b69461225c886130bb9950612071565b6020906040516131a181611333565b5f81525f838201525f60408201525f60608201528282880101520161300c565b6024356001600160a01b0381168103610e4057612ff1918491613206906001600160801b03906131f0906145f2565b6001600160801b039360801d9116600f0b61203c565b16612fdd565b80600301908160031161145e576001915f52600760205261323660405f20612af5612aef84611450565b5001612f6e565b631ed9bcf960e01b5f5260045ffd5b5060ff8116156120fb565b6315d7892d60e21b92505f91508190565b630fc95b4360e01b5f5260045ffd5b636fce6c3960e01b5f5260045ffd5b6001607f1b81101561329857600f0b90565b6335278d125f526004601cfd5b6132c8906132ba8360801d8260801d01614efc565b92600f0b90600f0b01614efc565b60018060801b03169060801b1790565b90816020910312610e40575190565b6001600160a01b039182165f9081529282166020908152604093849020935163789add5560e11b815260048101949094529183916024918391165afa908115610e35575f91613334575090565b90506020813d60201161335b575b8161334f602093836113b4565b81010312610e40575190565b3d9150613342565b60020b5f190190627fffff198212627fffff83131761145e57565b600291820b910b0390627fffff198212627fffff83131761145e57565b60020b908160ff1d82810118620d89e881116136b55763ffffffff9192600182167001fffcb933bd6fad37aa2d162d1a59400102600160801b189160028116613699575b6004811661367d575b60088116613661575b60108116613645575b60208116613629575b6040811661360d575b608081166135f1575b61010081166135d5575b61020081166135b9575b610400811661359d575b6108008116613581575b6110008116613565575b6120008116613549575b614000811661352d575b6180008116613511575b6201000081166134f5575b6202000081166134da575b6204000081166134bf575b62080000166134a6575b5f1261349e575b0160201c90565b5f1904613497565b6b048a170391f7dc42444e8fa290910260801c90613490565b6d2216e584f5fa1ea926041bedfe9890920260801c91613486565b916e5d6af8dedb81196699c329225ee6040260801c9161347b565b916f09aa508b5b7a84e1c677de54f3e99bc90260801c91613470565b916f31be135f97d08fd981231505542fcfa60260801c91613465565b916f70d869a156d2a1b890bb3df62baf32f70260801c9161345b565b916fa9f746462d870fdf8a65dc1f90e061e50260801c91613451565b916fd097f3bdfd2022b8845ad8f792aa58250260801c91613447565b916fe7159475a2c29b7443b29c7fa6e889d90260801c9161343d565b916ff3392b0822b70005940c7a398e4b70f30260801c91613433565b916ff987a7253ac413176f2b074cf7815e540260801c91613429565b916ffcbe86c7900a88aedcffc83b479aa3a40260801c9161341f565b916ffe5dee046a99a2a811c461f1969c30530260801c91613415565b916fff2ea16466c96a3843ec78b326b528610260801c9161340c565b916fff973b41fa98c081472e6896dfb254c00260801c91613403565b916fffcb9843d60f6159c9db58835c9266440260801c916133fa565b916fffe5caca7e10e4e61c3624eaa0941cd00260801c916133f1565b916ffff2e50f5f656932ef12357cf3c7fdcc0260801c916133e8565b916ffff97272373d413259a46990580e213a0260801c916133df565b826345c3193d60e11b5f5260045260245ffd5b604051906136d582611399565b5f6040838281528260208201520152565b905f19820191821360011661145e57565b81810392915f13801582851316918412161761145e57565b801561145e575f190190565b60020b9060020b90811561373d57627fffff1981145f1983141661145e570590565b634e487b7160e01b5f52601260045260245ffd5b8181029291811591840414171561145e57565b811561373d570490565b9291909161377a614830565b6137876013548092613751565b906137956010548093611472565b9060115492838311613a69575b6137aa614830565b6001810180911161145e576137c7926137c291613751565b611472565b91808311613a61575b50808214613a24576138036137f2613809936117f46117eb60105480936115a1565b916117f46117eb60105480936115a1565b906115a1565b936015549384805b6139e3575b5061382d6020613837920194855160020b9061337e565b8560020b9061371b565b918461386e60ff60145460181c1694855f146139a957606085015160020b90818160020b125f146139a257505b97600d5490615136565b918061387a8385613751565b11613992575050925b5160020b94613891856115ae565b9561389f60405197886113b4565b858752601f196138ae876115ae565b015f5b81811061397b5750505f905b8682106138ce575050505050505090565b6138d8828961165d565b519060020b9052600161390a6138fc846138f2858c61165d565b515160020b61209f565b606086015160020b90614f51565b916020613917828b61165d565b51018360020b905261395c878a613955602061394a8661394461393a828761165d565b515160020b61339b565b9461165d565b51015160020b61339b565b9089614fef565b6040613968838c61165d565b510190838060801b0316905201906138bd565b6020906139866136c8565b82828c010152016138b1565b61399c9250613764565b92613883565b9050613864565b606085016139ba815160020b612071565b60020b8260020b125f146139d057505b976117fa565b6139de91505160020b612071565b6139ca565b945f19860186811161145e576139f890615024565b613a0187615024565b03613a1e57613a12613a189161370f565b9561370f565b80613811565b94613816565b505050505050604051613a386020826113b4565b5f81525f805b818110613a4a57505090565b602090613a556136c8565b82828601015201613a3e565b91505f6137d0565b8392506137a2565b805115158252602080820151908301526040908101516001600160a01b0316910152565b600160ff1b811461145e575f0390565b9392916001600160a01b039182169116818103613fa6575b50505f915f5b8451811015613c30576001600160801b036040613ae0838861165d565b51015116613af1575b600101613ac3565b613ba190604060ff60145460181c16805f14613c1857613b11838961165d565b515160020b905b15613c04576020613b29848a61165d565b51015160020b5b613b4f6001600160801b0384613b46878d61165d565b51015116613286565b60ff6060613b5d878d61165d565b5101511691845193613b6e85611333565b60020b845260020b6020840152600f0b838301526060820152815180948192632d35e7ed60e11b83528860048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192613be7575b509050613ae9565b613bfe9060403d8111611db257611da481836113b4565b50613bdf565b613c0e838961165d565b515160020b613b30565b6020613c24848a61165d565b51015160020b90613b18565b509190928051905f19820191821161145e57602091613c4e9161165d565b5101516018549060181b65ffffff000000169065ffffff0000001916176018557f0000000000000000000000000000000000000000000000000000000000000000613ca360018060a01b0385511630836132e7565b906020850194613cbd60018060a01b0387511630846132e7565b925f8113613f3f575b848413613eca575b848112613dd7575b5050828212613ce7575b5050509050565b84516001600160a01b039081169591169190823b15613dd35760405195632961046560e21b87526004870152838660248183875af195861561074b57849596613db6575b505160209291613d50916001600160a01b0316908390613d4a90613a95565b91614634565b600460405180958193630476982d60e21b83525af1908115613daa5750613d7b575b80808392613ce0565b613d9c9060203d602011613da3575b613d9481836113b4565b8101906132d8565b505f613d72565b503d613d8a565b604051903d90823e3d90fd5b84613dc59195929394956113b4565b613dd357908392915f613d2b565b8380fd5b81516001600160a01b03848116939116833b15612bc95760405190632961046560e21b82526004820152868160248183885af18015613ebf57908791613eaa575b505080516001600160a01b031680613e96575b50516001600160a01b0316613e8c57613e45602091613a95565b915b600460405180948193630476982d60e21b83525af1801561074b57613e6d575b80613cd6565b613e859060203d602011613da357613d9481836113b4565b505f613e67565b5060208491613e47565b613ea49084613d4a85613a95565b5f613e2b565b81613eb4916113b4565b612c2c57855f613e18565b6040513d89823e3d90fd5b86516001600160a01b038481169116813b15612bc95785613f0692889283604051809681958294630b0d9c0960e01b845230906004850161157f565b03925af18015613f3457908691613f1f575b5050613cce565b81613f29916113b4565b611ed257845f613f18565b6040513d88823e3d90fd5b81516001600160a01b03908116908416803b15610e4057825f91613f7c9383604051809681958294630b0d9c0960e01b845230906004850161157f565b03925af18015610e3557613f91575b50613cc6565b613f9e9195505f906113b4565b5f935f613f8b565b60405191613fb383611399565b81108252600160208301526040820152613feb60405191633cf3645360e21b8352613fe160048401856114ee565b60a4830190613a71565b6101206101048201525f610124820152602081610144815f60018060a01b037f0000000000000000000000000000000000000000000000000000000000000000165af18015610e355761403f575b80613abd565b6140579060203d602011613da357613d9481836113b4565b505f614039565b6101409290916140e691906001600160a01b0361407a82611181565b1684526001600160a01b0361409160208301611181565b16602085015262ffffff6140a7604083016113d7565b1660408501526140b9606082016112a4565b60020b60608501526001600160a01b03906140d690608001611181565b16608084015260a0830190613a71565b6101206101008201525f6101208201520190565b60ff5f54166145e45761414c9060a06141143660246113e7565b207f0000000000000000000000000000000000000000000000000000000000000000906141418183614777565b949290969150614864565b60145460181c60ff1680156145d15760185460181c60020b8260020b135b60015f5260076020525f805160206155068339815191525460020b9082156145c557818460020b12905b156144e357505050509061420d91602060ff60145460181c16805f146144cf576141c861309860185460181c60020b612084565b604051916141d583611399565b151582526001838301526001600160a01b031660408083019190915251633cf3645360e21b815294859182919060246004840161405e565b03815f6001600160a01b0386165af18015610e355761449c575b6142319250614777565b50509050925b60c435908115158203610e405762ffffff91610fff9182911561449357165b169116620f42408183020491010360ff60145460181c165f146143ea57608082901d5f600f82900b126143a557600354614299916001600160801b031690611472565b6003555b600f82900b5f811261434b5750505f805160206154e6833981519152916142d060609260018060801b03166004546115a1565b6004555b600454600f54811015614307575b600354906040519260020b835260208301526040820152a163b47b2fb160e01b905f90565b61010061ff00195f5416175f557f628a470bfdde264ef77cd19acfbfca22b3e4413adaf5837ec9fbc0043e35793f602061433f614830565b604051908152a16142e2565b62ffffff91925061435b906114c1565b9116620f42400391620f4240831161145e575f805160206154e68339815191529260609261439d91614395916001600160801b03166151b1565b600454611472565b6004556142d4565b6143ae906114c1565b62ffffff8216620f42400390620f4240821161145e576143e2916143da916001600160801b03166151b1565b6003546115a1565b60035561429d565b90600f81900b5f8112614456575060035461440f906001600160801b03831690611472565b6003555b60801d905f600f83900b1261444857505f805160206154e68339815191529161439d60609260018060801b03166004546115a1565b9061435b62ffffff916114c1565b61445f906114c1565b62ffffff8316620f42400390620f4240821161145e5761448b916143da916001600160801b03166151b1565b600355614413565b600c1c16614256565b6020833d6020116144c7575b816144b5602093836113b4565b81010312610e40576142319250614227565b3d91506144a8565b6141c861309860185460181c60020b613363565b97949392976144f6575b50505050614237565b61455794975090614513602092825f146145bc5761309890613363565b6040519161452083611399565b1582526001838301526001600160a01b031660408083019190915251633cf3645360e21b815294859182919060246004840161405e565b03815f6001600160a01b0386165af18015610e3557614589575b61457b9250614777565b50509050925f8080806144ed565b6020833d6020116145b4575b816145a2602093836113b4565b81010312610e405761457b9250614571565b3d9150614595565b61309890612084565b818460020b1390614194565b60185460181c60020b8260020b1261416a565b5063b47b2fb160e01b905f90565b6001600160a01b03168061460557504790565b6020602491604051928380926370a0823160e01b82523060048301525afa908115610e35575f91613334575090565b9091906001600160a01b03811690816146c25750505f80808093855af1156146595750565b6040516390bfb86560e01b81526001600160a01b0390911660048201525f602482018190526080604483015260a03d601f01601f191690810160648401523d6084840152903d9060a484013e808201600460a482015260c4633d2cec6f60e21b91015260e40190fd5b60205f604481949682604095865198899363a9059cbb60e01b855260018060a01b0316600485015260248401525af13d15601f3d116001855114161716928281528260208201520152156147135750565b6040516390bfb86560e01b8152600481019190915263a9059cbb60e01b602482015260806044820152601f3d01601f191660a0810160648301523d60848301523d5f60a484013e808201600460a482015260c4633c9fd93960e21b91015260e40190fd5b9190602090604051828101918252600660408201526040815261479b6060826113b4565b519020604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215610e35575f926147fc575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011614828575b81614818602093836113b4565b81010312610e405751905f6147d4565b3d915061480b565b60105480421061485e5761484761485091426115a1565b60135490613764565b6001810180911161145e5790565b50600190565b73fffd8963efd1fc6a506488495d951d51639616826401000276a21982016001600160a01b031611614afd57602081901b600160201b600160c01b0316808015610e4057693627a301d71055774c859160ff8260018060801b031060071b83811c60018060401b031060061b1783811c63ffffffff1060051b1783811c61ffff1060041b1783811c821060031b177b01c1818141808140018080c0814100004181408140c0c100414140c160221b6f8421084210842108cc6318c6db6d54be85831c1c601f161a17169160808310155f14614af15750607e1982011c5b800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c800280607f1c8160ff1c1c80029081607f1c8260ff1c1c80029283607f1c8460ff1c1c80029485607f1c8660ff1c1c80029687607f1c8860ff1c1c80029889607f1c8a60ff1c1c80029a8b607f1c8c60ff1c1c80029c8d80607f1c9060ff1c1c600160321b90800260cd1c169d600160331b9060cc1c169c600160341b9060cb1c169b600160351b9060ca1c169a600160361b9060c91c1699600160371b9060c81c1698600160381b9060c71c1697600160391b9060c61c16966001603a1b9060c51c16956001603b1b9060c41c16946001603c1b9060c31c16936001603d1b9060c21c16926001603e1b9060c11c16916001603f1b9060c01c1690607f190160401b1717171717171717171717171717026fdb2df09e81959a81455e260799a0632f6f028f6481ab7f045a5af012a19d003aa919820160801d60020b910160801d60020b918282145f14614acd5750905090565b6001600160a01b0390811690614ae28461339b565b1611614aec575090565b905090565b905081607f031b614941565b6318521d4960e21b5f9081526001600160a01b0391909116600452602490fd5b91905f905f905f5b8551811015614cb0576001600160801b036040614b42838961165d565b51015116614b53575b600101614b25565b9192614c02604060ff60145460181c16805f14614c9857614b74868a61165d565b515160020b905b15614c84576020614b8c878b61165d565b51015160020b5b8960ff6060614bbe8a6139446001600160801b0389614bb2848961165d565b51015116600f0b6114c1565b5101511691845193614bcf85611333565b60020b845260020b6020840152600f0b838301526060820152815180938192632d35e7ed60e11b83528760048401611531565b03815f7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165af1918215610e3557600192614c59925f905f92614c61575b50614c5391926132a5565b956132a5565b929050614b4b565b614c539250614c7e915060403d8111611db257611da481836113b4565b91614c48565b614c8e868a61165d565b515160020b614b93565b6020614ca4878b61165d565b51015160020b90614b7b565b505091909250614cc2826006546132a5565b600655565b9093929193614cd46136c8565b9480614e2757505f5b6001600160a01b031680614d015750505060020b80835260208301525f6040830152565b919250614e0c91614db390606090614da59060b56001600160881b03821160071b82811c6001600160481b031060061b1782811c64ffffffffff1060051b1782811c62ffffff1060041b17600181811c9290921b9083901c62010000010260121c80830401811c80830401811c80830401811c80830401811c80830401811c80830401811c80830401901c908190048111900360301b6001600160a01b0316614864565b940193845160020b90614f51565b92614df4602087019460020b9182865260ff60145460181c1692835f14614e145750614de990865160020b905160020b9061337e565b60020b80885261339b565b93516001600160801b0394906129fe9060020b61339b565b166040830152565b614e22915160020b9061209f565b614de9565b8160ff60145460181c165f14614e605750600654614e5b91614e559160801d6001600160801b0316906115a1565b82615320565b614cdd565b600654614e5b92614e7a916001600160801b0316906115a1565b615320565b90670de0b6b3a7640000820291808305670de0b6b3a7640000149015171561145e57565b81810292915f8212600160ff1b82141661145e57818405149015171561145e57565b9060018201915f60018412911290801582169115161761145e57565b9190915f838201938412911290801582169115161761145e57565b9081600f0b918203614f0a57565b6393dafdf160e01b5f5260045ffd5b80628000000160181c15614f34576335278d125f526004601cfd5b60020b90565b9060020b9060020b02908160020b91820361145e57565b9060ff60145460181c165f14614f9d575f8260020b125f14614f9057614f8b81614f86614f8182611e679661337e565b612084565b61371b565b614f3a565b614f8b81611e679361371b565b5f8260020b125f14614fb657614f8b81611e679361371b565b614f8b81614f86614fca82611e679661209f565b613363565b6117fa6117db6117d26117c96117c4611e6795614fea614830565b614ee1565b9092909190801561501e575f19810190811161145e57915b1561501557611e6792615443565b611e6792615400565b91615007565b61503f615036615048926137c2614830565b60135490613751565b60105490611472565b601154808211614aec575090565b90670de0b6b3a76400008202905f19670de0b6b3a7640000840992828085109403938085039485841115610e4057146150e657670de0b6b3a764000082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b5091500490565b81810291905f1982820991838084109303928084039384600160601b1115610e40571461512d57600160601b910990828211900360a01b910360601c1790565b50505060601c90565b808202905f1983820990828083109203918083039283670de0b6b3a76400001115610e4057146151a0577faccb18165bd6fe31ae1cf318dc5b51eee0e1ba569b88cd74c1773b91fac1066993670de0b6b3a7640000910990828211900360ee1b910360121c170290565b5050670de0b6b3a764000091500490565b808202905f1983820990828083109203918083039283620f42401115610e405714615211577fde8f6cefed634549b62c77574f722e1ac57e23f24d8fd5cb790fb65668c2613993620f4240910990828211900360fa1b910360061c170290565b5050620f424091500490565b90606082901b905f19600160601b840992828085109403938085039485841115610e4057146150e6578190600160601b900981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b91818302915f1981850993838086109503948086039586851115610e405714615318579082910981805f03168092046002816003021880820260020302808202600203028082026002030280820260020302808202600203028091026002030293600183805f03040190848311900302920304170290565b505091500490565b9061532a9161521d565b6001600160a01b03811161535057600160a01b811015613298576001600160a01b031690565b505f90565b61539b612dce61536b612eee60a0612175611f3d565b60145460181c60ff16156153cf5760125460020b808260020b135f146153c857505b60125460181c60020b61337e565b6153ad614847601154601054906115a1565b90811561373d57600160ff1b81145f1983141661145e570590565b905061538d565b60125460020b808260020b125f146153c8575061538d565b6001600160a01b03918216908216039190821161145e57565b611e67926154389290916001600160a01b038083169082161161543d575b6001600160a01b039161543191906153e7565b169061521d565b615497565b9061541e565b611e6792615438929091906001600160a01b0380821690831611615491575b61548a61547b6001600160a01b038381169085166150ed565b926001600160a01b03926153e7565b16916152a0565b90615462565b6001600160801b038116919082036154ab57565b60405162461bcd60e51b81526020600482015260126024820152716c6971756964697479206f766572666c6f7760701b6044820152606490fdfe27db09392d7d230eb65a11bd84925fb8da90df8a067ca8a4fc2933b4f637262bb39221ace053465ec3453ce2b36430bd138b997ecea25c1043da0c366812b828b7c774451310d1be4108bc180d1b52823cb0ee0274a6c0081bcaf94f115fb96d";
1379
1408
 
1380
1409
  // src/evm/abis/bytecodes/dopplerDN404.ts
1381
- var dopplerDN404_default = "0x60a0604052346104a85761390680380380610019816107f1565b928339810160e0828203126104a85781516001600160401b0381116104a85781610044918401610816565b60208301519091906001600160401b0381116104a85781610066918501610816565b9060408401519161007960608601610867565b9361008660808701610867565b60a08701519093906001600160401b0381116104a85760c0916100aa918901610816565b960151926001600160a01b031680156107de575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a382156107cf578284066107c0578051906001600160401b0382116104eb5760015490600182811c921680156107b6575b60208310146105d05781601f849311610748575b50602090601f83116001146106e2575f926106d7575b50508160011b915f199060031b1c1916176001555b8051906001600160401b0382116104eb5760025490600182811c921680156106cd575b60208310146105d05781601f84931161065f575b50602090601f83116001146105f9575f926105ee575b50508160011b915f199060031b1c1916176002555b83516001600160401b0381116104eb57600354600181811c911680156105e4575b60208210146105d057601f811161056d575b50602094601f821160011461050a579481929394955f926104ff575b50508160011b915f199060031b1c1916176003555b608052604051610d35808201906001600160401b038211838310176104eb576020918391612bd183393381520301905ff080156104e0576080516001600160a01b0391909116906001600160601b035f1990910110156104d35768a20d6e21d0e5255309546001600160a01b03166104c65780156104b957630f4599e55f523360205260205f6024601c82855af160015f511416156104ac57678da5cb5b6cef16e65f5260208060046018305afa601f3d1160205160601b151016610499575b68a20d6e21d0e5255308805463ffffffff60201b191664010000000017905568a20d6e21d0e525530980546001600160a01b03191691909117905580610375575b604051612334908161089d823960805181818161040b01528181610a4f01528181610c1c015281816114860152818161171c015281816119110152611f920152f35b6001600160a01b03821691821561048c57608051820463fffffffe108260601c1761047f5768a20d6e21d0e525530880546001600160a01b031660a084901b6001600160a01b03191690811790915561041292906103d28361087b565b80546001600160a01b031690911790555f90815283907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a361087b565b906bff00000000000000000000008254918260581c9060015f527fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff821691161560011b1860011760581b16906bff000000000000000000000019161790555f80610333565b63e5cfe9575f526004601cfd5b63ea553b345f526004601cfd5b5f806004601c82855af16102f2575b5f80fd5b63d125259c5f526004601cfd5b6339a84a7b5f526004601cfd5b63ead4d2e45f526004601cfd5b63997c4ef45f526004601cfd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f8061021d565b601f1982169560035f52805f20915f5b8881106105555750836001959697981061053d575b505050811b01600355610232565b01515f1960f88460031b161c191690555f808061052f565b9192602060018192868501518155019401920161051a565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106105c6575b601f0160051c01905b8181106105bb5750610201565b5f81556001016105ae565b90915081906105a5565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101ef565b015190505f806101b9565b60025f9081528281209350601f198516905b818110610647575090846001959493921061062f575b505050811b016002556101ce565b01515f1960f88460031b161c191690555f8080610621565b9293602060018192878601518155019501930161060b565b60025f529091507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f840160051c810191602085106106c3575b90601f859493920160051c01905b8181106106b557506101a3565b5f81558493506001016106a8565b909150819061069a565b91607f169161018f565b015190505f80610157565b60015f9081528281209350601f198516905b8181106107305750908460019594939210610718575b505050811b0160015561016c565b01515f1960f88460031b161c191690555f808061070a565b929360206001819287860151815501950193016106f4565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c810191602085106107ac575b90601f859493920160051c01905b81811061079e5750610141565b5f8155849350600101610791565b9091508190610783565b91607f169161012d565b633eaf92f760e21b5f5260045ffd5b63265f13bd60e21b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176104eb57604052565b81601f820112156104a8578051906001600160401b0382116104eb57610845601f8301601f19166020016107f1565b92828452602083830101116104a857815f9260208093018386015e8301015290565b51906001600160a01b03821682036104a857565b6001600160a01b03165f90815268a20d6e21d0e5255313602052604090209056fe608080604052600436101561075d575b503615610752575f3560e01c63e5eb36c881146103d25763f6916ddd811461038f576362fb246d811461036b57632d8a746e81146103325763c016aa52811461031f5763d10b6e0c811461022f576327ef549581146102145763f5b100ea81146101ef5763e2c7928181146101d45763cb30b46081146100a95763b7a94eb8146100a057633c10b94e5f526004601cfd5b60015f5260205ff35b60206040510160405260606003546100c0816113a1565b6100e4575b50605f601f198201915f6020825180930101526020835201601f191690f35b905060405190608082019160a081016040525f8352600a600435935b5f19019360308282060185530492831561011c57600a90610100565b9250608083601f19810192030181526040519283915f9061013c856113a1565b94600181169081156101b45750600114610173575b61016d9450518092825e015f815203601f1981018352826113d9565b816100c5565b905060035f5260205f20935f5b818110610198575061016d9450830160200190610151565b8554602082890181019190915260019096019587955001610180565b602092935061016d96915060ff1916828601528015150284010190610151565b63ffffffff68a20d6e21d0e52553085460801c165f5260205ff35b63ffffffff6102086004356001600160a01b031661135f565b5460801c165f5260205ff35b6001600160a01b03610227600435612130565b165f5260205ff35b68a20d6e21d0e5255309546001600160a01b03163303610312576001600160a01b036044358116906024359060043581169061028061027b5f19600160201b861086020160011b612055565b6120eb565b5416928381036102ef575b505f82815268a20d6e21d0e525530c60209081526040822080546001600160a01b0319166001600160a01b03851617905568a20d6e21d0e525530d60601b600885901c018054600160ff90961695861b191693151590941b92909217909255918152f35b6102f990846115cd565b5415610305578361028b565b63cfb3b9425f526004601cfd5b63ce5a776b5f526004601cfd5b6001600160a01b03610227600435612107565b6004356001600160a01b0361034682612107565b161561035e576001600160a01b039061022790612107565b63ceea21b65f526004601cfd5b6103856001600160a01b03602435811690600435166115cd565b5415155f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633036103125760243515156103c86001600160a01b03600435811690604435166115cd565b5560015f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633819003610312576001600160a01b0360043581165f818152600560205260409020547f000000000000000000000000000000000000000000000000000000000000000093919260443592916064358216916024351690610448908790611438565b935f925f948661072d575b83156107205715610713576001600160a01b0361048061027b600160201b851085025f190160011b612055565b54168703610706578681036106cd575b5061049a8661135f565b906104a48361135f565b90825460a01c808a116106c0576105a69361055e916104cf908c90036001600160601b031682612169565b83546104ee9060a01c6001600160601b038d8116919091011685612169565b6104f78361229f565b61068f575b600161052b61050a8c611380565b9261052563ffffffff5f1981845460801c160116809261218c565b83612079565b61054d8161053f5f198801851b8501612055565b9463ffffffff8616906120c3565b63ffffffff165f1901811b01612095565b6105a08463ffffffff845460801c169361058163ffffffff60018701168261218c565b61059b61058d83611380565b8663ffffffff8716916120c3565b6121d0565b90612260565b855f52845f8051602061231483398151915260205fa36105c95760015f5260205ff35b5f19820191821161067b5763ffffffff6105e28461135f565b5460801c169182811061060d575b5050505f52600560205260405f20908154039055808080806100a0565b61061684611380565b928210156105f0578181146105f0576001826106628363ffffffff8481966106628a610645886106739d612079565b928161065d610655838795612079565b809b836120c3565b6120c3565b825f19911601811b01911690612095565b8280806105f0565b634e487b7160e01b5f52601160045260245ffd5b610698836121af565b5f83815268a20d6e21d0e525530c6020526040902080546001600160a01b03191690556104fc565b63f4d678b85f526004601cfd5b6106d781886115cd565b54610490576001600160a01b036106ed83612130565b16036106f95787610490565b6359c896be5f526004601cfd5b63a11481005f526004601cfd5b6340739bf05f526004601cfd5b63ea553b345f526004601cfd5b9350935063ffffffff61074760015f198401811b01612055565b169385851093610453565b3461075957005b5f80fd5b5f3560e01c90816306fdde031461126757508063095ea7b3146111c65780630ad9e7bf1461118e57806310aa0ebb1461116957806316f0115b1461114157806318160ddd14611119578063207d0636146110d657806323b872dd14611030578063274e430b146110035780632a6a935d14610f915780632f745c5914610f2a578063313ce56714610f0f5780634ef41efc14610edf5780634f6ccce714610ec157806355f804b314610d685780635b2aa23914610bcb5780636c0360eb14610b3957806370a0823114610b0a578063715018a614610ac65780638902653814610a995780638da5cb5b14610a72578063907af6c014610a3857806395d89b411461095e578063a9059cbb1461092d578063dd62ed3e146108f95763f2fde38b14610887575f61000f565b34610759576020366003190112610759576108a0611333565b6108a8611589565b6001600160a01b031680156108e6575f80546001600160a01b03198116831782556001600160a01b0316905f805160206122f48339815191529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b34610759576040366003190112610759576020610925610917611333565b61091f611349565b90611523565b604051908152f35b3461075957604036600319011261075957610953610949611333565b60243590336115eb565b602060405160018152f35b34610759575f366003190112610759576040515f60025461097e816113a1565b8084529060018116908115610a1457506001146109b6575b6109b2836109a6818503826113d9565b60405191829182611309565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b8082106109fa575090915081016020016109a6610996565b9192600181602092548385880101520191019092916109e2565b60ff191660208086019190915291151560051b840190910191506109a69050610996565b34610759575f3660031901126107595760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610759575f366003190112610759575f546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957610ab1611589565b6004805460ff60a01b1916600160a01b179055005b34610759575f36600319011261075957610ade611589565b5f80546001600160a01b0319811682556001600160a01b03165f805160206122f48339815191528280a3005b34610759576020366003190112610759576020610b2d610b28611333565b61135f565b5460a01c604051908152f35b34610759575f366003190112610759576040515f600354610b59816113a1565b8084529060018116908115610a145750600114610b80576109b2836109a6818503826113d9565b60035f9081525f805160206122d4833981519152939250905b808210610bb1575090915081016020016109a6610996565b919260018160209254838588010152019101909291610b99565b34610759576020366003190112610759576004356001600160401b03811161075957366023820112156107595760048101356001600160401b038111610759573660248260051b84010111610759577f0000000000000000000000000000000000000000000000000000000000000000918282029282840481148315171561067b57335f52600560205260405f205493610c643361135f565b5460a01c610c728287611456565b11610d5957610c84610c8a9286611438565b94611456565b335f52600560205260405f2055610ca03361135f565b9263ffffffff610caf33611380565b945460801c16915f915b84831015610d575760248360051b8301013584811015610d4857818110610d3e578181600193849303610cf2575b5001925b0191610cb9565b8063ffffffff848b61066282610d0b610d389784612079565b610d26818a610d1a8188612079565b9661065d888c836120c3565b888616919086165f1901811b01612095565b88610ce7565b5091600190610ceb565b633277964160e01b5f5260045ffd5b005b6302579b0560e11b5f5260045ffd5b34610759576020366003190112610759576004356001600160401b03811161075957366023820112156107595760048101356001600160401b03811161075957366024828401011161075957610dbc611589565b610dc76003546113a1565b601f8111610e71575b505f601f8211600114610e0c5781925f92610dfe575b50508160011b915f199060031b1c1916176003555f80f35b602492500101358280610de6565b601f1982169260035f5260205f20915f5b858110610e5657508360019510610e3a575b505050811b01600355005b01602401355f19600384901b60f8161c19169055828080610e2f565b90926020600181926024878701013581550194019101610e1d565b60035f525f805160206122d4833981519152601f830160051c81019160208410610eb7575b601f0160051c01905b818110610eac5750610dd0565b5f8155600101610e9f565b9091508190610e96565b34610759576020366003190112610759576020610925600435611463565b34610759575f3660031901126107595768a20d6e21d0e5255309546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060405160128152f35b3461075957604036600319011261075957610f43611333565b60243563ffffffff610f548361135f565b5460801c16811015610f8257610f7963ffffffff91610f74602094611380565b612079565b16604051908152f35b6306ed618760e11b5f5260045ffd5b3461075957602036600319011261075957600435801580158092036107595761095391610fbd3361135f565b91825460581c915f52337fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff83169216151860011b186001179061156c565b34610759576020366003190112610759576020611026611021611333565b611410565b6040519015158152f35b3461075957606036600319011261075957611049611333565b611051611349565b6044359061105f33846115af565b926e22d473030f116ddee9f6b43ac78ba33314806110bf575b156110b7575f19935b60018501611095575b5061095393506115eb565b8484116110aa5783610953950390558461108a565b6313be252b5f526004601cfd5b835493611081565b5060046110cb8261135f565b5460581c1615611078565b34610759576020366003190112610759576110ef611333565b6110f7611589565b600480546001600160a81b0319166001600160a01b0392909216919091179055005b34610759575f36600319011261075957602068a20d6e21d0e52553085460a01c604051908152f35b34610759575f366003190112610759576004546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060ff60045460a01c166040519015158152f35b34610759576020366003190112610759576001600160a01b036111af611333565b165f526005602052602060405f2054604051908152f35b34610759576040366003190112610759576111df611333565b6001600160a01b03811690602435908190611211906e22d473030f116ddee9f6b43ac78ba38514611245575b336115af565b555f52337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b6112626112513361135f565b600460ff825460581c16179061156c565b61120b565b34610759575f366003190112610759575f600154611284816113a1565b8084529060018116908115610a1457506001146112ab576109b2836109a6818503826113d9565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106112ef575090915081016020016109a6610996565b9192600181602092548385880101520191019092916112d7565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361075957565b602435906001600160a01b038216820361075957565b6001600160a01b03165f90815268a20d6e21d0e52553136020526040902090565b6001600160a01b03165f90815268a20d6e21d0e52553106020526040902090565b90600182811c921680156113cf575b60208310146113bb57565b634e487b7160e01b5f52602260045260245ffd5b91607f16916113b0565b601f909101601f19168101906001600160401b038211908210176113fc57604052565b634e487b7160e01b5f52604160045260245ffd5b9061141a8261135f565b5460581c9160016002841615159316156114315750565b3b15159150565b8115611442570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161067b57565b9068a20d6e21d0e52553085463ffffffff8160801c16831015611514576114ae907f00000000000000000000000000000000000000000000000000000000000000009060a01c611438565b905f925f5b8381106114c957639f6fb6c960e01b5f5260045ffd5b806001018060011161067b5763ffffffff6114e68360011b612055565b166114f5575b506001016114b3565b828692961461150b5750600180910194906114ec565b93505050915090565b639f6fb6c960e01b5f5260045ffd5b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314611551575b61154d916115af565b5490565b600461155c8361135f565b5460581c166115445750505f1990565b805460ff60581b191660589290921b60ff60581b16919091179055565b5f546001600160a01b0316330361159c57565b63118cdaa760e01b5f523360045260245ffd5b9060285260145268a20d6e21d0e525530f5f5260485f20905f602852565b9060285260145268a20d6e21d0e525530b5f5260485f20905f602852565b6004549092906001600160a01b03838116908216149081612046575b50612037576001600160a01b038316611fe0575b6001600160a01b03821615610720576116338361135f565b61163c8361135f565b68a20d6e21d0e5255309546001600160a01b031615610713576040519161018083016001600160401b038111848210176113fc576040525f83525f60208401525f60808401525f60a08401525f60c08401525f60e08401525f6101008401525f6101208401525f6101408401525f610160840152805463ffffffff8160801c16604085015263ffffffff835460801c1660608501528060a01c85116106c0576116f560a082901c8690036001600160601b031683612169565b825460a01c8501906117106001600160601b03831685612169565b611745604086015191877f00000000000000000000000000000000000000000000000000000000000000009160a01c03611438565b808203911102845261175686611410565b15611f78575b50611d73565b68a20d6e21d0e52553085463ffffffff60208501518551928382848360801c1601038060808901528360801b9060801b16908360801b191617928368a20d6e21d0e52553085501916040519260c060a085019180835260051b850101604052836040015260c0830183528261016087015260601c166101208501528351611c53575b505060208201516118c9575b5061014081015180611885575b50610160015180611833575b505f9081526001600160a01b0391821692909116905f8051602061231483398151915290602090a3565b600160206040828060a01b0368a20d6e21d0e5255309541693015192603f19840193849163263c69d6835283601f198301525f825160051b6044019260231901915af19151141615610759575f611809565b600160205f9281838060a01b0368a20d6e21d0e5255309541691015190815160051b60840190607f19830195869360631901915af19151141615610759575f6117fd565b9194610160829492015160208360601b9101526118e582611380565b9463ffffffff6118f584866121d0565b1660e086015268a20d6e21d0e5255308549263ffffffff6119397f00000000000000000000000000000000000000000000000000000000000000008660a01c611438565b9460201c16848111908115021761010087015261196e60608701519563ffffffff602089015188018060c08b0152169061218c565b63ffffffff68a20d6e21d0e52553085460401c169760015b15611bf4575b6101208701515f9063ffffffff8b8116911614611a4257611a3d63ffffffff60018c01169a60e0641fffffffe0631fffffff8360031c1668a20d6e21d0e525531160601b01549260051b16161c63ffffffff165b8060081c685106b710e87292a98760611b0160018260ff161b8019825416179055611a1263ffffffff82168a8d6120c3565b611a3263ffffffff60e08c01511663ffffffff60018c019b169083612260565b6101608a01516122bd565b611986565b949798939291906101008801515b63ffffffff611a645f19830160011b612055565b1615611bd0575f19906001810160081c685106b710e87292a98760611b018054196001830160ff1690811c901b8015611b58575b80611aae575b5050508981119081150217611a50565b600180939450811901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff860260f81c161b60f71c1692831c63d76453e004161a179082685106b710e87292a98760611b03190160081b17910181108a8211175f03175f8080611a9e565b506001909c9895929c9a9794919a9693965b01805419685106b710e87292a98760611b60088e901c0182118117611b925750600190611b6a565b9c9295989c9a9194979a969396808d60081c685106b710e87292a98760611b018311611bbf575b50611a98565b508c1960ff1690811b901c80611bb9565b611a3d909a999691929394959a6001810188811190811502176101008b01526119e0565b60c0870151860361198c57945094925094509468a20d6e21d0e52553085463ffffffff60201b61010084015160201b169163ffffffff60401b9060401b1690600160201b600160601b031916171768a20d6e21d0e5255308555f6117f0565b602060018860609a9699959a989497981b17910152611c7182611380565b94611c9160408801519563ffffffff895188038060a08c0152169061218c565b60015b15611d5a575b5f945f190194611caa8688612079565b63ffffffff8116905f1982018060021c685106b710e87292a98960611b019060c082549160061b1681811c60018060401b0316901b189055611cf1826101608c01516122bd565b600160ff62ffffff8360081c16685106b710e87292a98760611b0192161b198154169055611d1e8161229f565b611d29575b50611c94565b611d32816121af565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611d23565b60a08701518503611c9a57935093509390945f806117e4565b9194604086979294970151948651976020880151898110818b18028a1899888b108b8a18028914611f69578a8918898c10028918908190038a52900360208901526001600160a01b0383811690831614611f47576040805163144027d3818301526001600160a01b03858116606080840191909152908516608083015260a08201528a8918898c1002891860c0820181815260059190911b820160e090810190935260208201529081018152610140890152611e2e83611380565b95611e3883611380565b9763ffffffff611e4885846121d0565b1660e08b015260608a01519a81811090821802188a019560015b15611f01575b878b611eac8163ffffffff808f8f90611ea060e09284611e975f9b5f1960408701510190816040880152612079565b169889916120c3565b01511691169083612260565b6101408c015160208151838152019052611ec58161229f565b611ed0575b50611e62565b611ed9816121af565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611eca565b9960010199868b03611e6857939895509398611f2e92975063ffffffff919650806060870152168361218c565b611f4263ffffffff6040850151168261218c565b611762565b9492978681989593989792971090821802186060840151016060840152611762565b50509492975094509491611762565b611fb7906001600160a01b0388811690881614611fcd575b7f000000000000000000000000000000000000000000000000000000000000000090611438565b606084015180820391110260208401525f61175c565b6040850151855190036060860152611f90565b611fe98361135f565b5460a01c60018060a01b0384165f52600560205260405f205490808211918215612024575b50501561161b576311acc28f60e01b5f5260045ffd5b81039150811161067b5781115f8061200e565b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f611607565b60e08160031c685106b710e87292a98960611b01549160051b161c63ffffffff1690565b60e0908260031c9060601b01549160051b161c63ffffffff1690565b9060e08260031c685106b710e87292a98960611b019260051b1682549182821c1863ffffffff16901b189055565b60e0909291928360031c9060601b019260051b1682549182821c1863ffffffff16901b189055565b63ffffffff165f5268a20d6e21d0e525530a60205260405f2090565b6001600160a01b039061212b9061027b90600160201b8110025f190160011b612055565b541690565b6001600160a01b0361214182612107565b161561035e575f90815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b80546001600160a01b031660a09290921b6001600160a01b031916919091179055565b805463ffffffff60801b191660809290921b63ffffffff60801b16919091179055565b60018160081c68a20d6e21d0e525530d60601b019160ff161b198154169055565b805460601c63ffffffff16929183156121e7575050565b68a20d6e21d0e5255308805463ffffffff19811663ffffffff918216600101918216908117909255835463ffffffff60601b191660609190911b63ffffffff60601b1617909255909250829061223c826120eb565b80546001600160a01b0319166001600160a01b039092169190911790551561075957565b5f1901908160021c685106b710e87292a98960611b019260c084549360061b169163ffffffff169060201b1782821c1860018060401b0316901b189055565b8060081c68a20d6e21d0e525530d60601b01549060ff161c60011690565b9060209082519060081b8284015117815201905256fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef608034607857601f610d3538819003918201601f19168301916001600160401b03831184841017607c57808492602094604052833981010312607857516001600160a01b03811690819003607857683602298b8c10b0123180546001600160a01b031916919091179055604051610ca490816100918239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60808060405260043610156101c5575b5036156101ba575f3560e01c63263c69d681146101405763144027d381146100cf57630f4599e51461004857633c10b94e5f526004601cfd5b683602298b8c10b01231546001600160a01b0316806100ab575b50683602298b8c10b01230546001600160a01b03811661009e576001600160a01b0319163317683602298b8c10b012305560015f908152602090f35b63bf656a465f526004601cfd5b6004356001600160a01b0316036100c2575f610062565b63c59ec47a5f526004601cfd5b683602298b8c10b01230546001600160a01b03163303610133576004356024359060443591602483810193600481013560051b0101925b8381036101165760015f5260205ff35b803582845f80516020610c848339815191525f80a4602001610106565b63363cb3125f526004601cfd5b683602298b8c10b01230546001600160a01b0316330361013357600435602481810191600481013560051b0101905b81810361017f5760015f5260205ff35b8035600881901c6001600160581b03169060018116801560609290921c91820291025f80516020610c848339815191525f80a460200161016f565b346101c157005b5f80fd5b5f3560e01c90816301ffc9a714610aa85750806306fdde0314610a3d578063081812fc146109e6578063095ea7b31461096457806318160ddd1461091857806323b872dd1461090457806324359879146108ad5780632f745c591461083c57806342842e0e146107c95780634f6ccce7146107325780636352211e146107035780636cef16e61461063757806370a08231146105da5780638da5cb5b146105aa57806395d89b411461053f57806397e5311c14610513578063a22cb46514610487578063b88d4fde1461039d578063c87b56dd146103215763e985e9c5146102ad575f61000f565b346101c15760403660031901126101c1576102c6610b1c565b60205f6044601c6102d5610b32565b6102dd610c25565b604080516362fb246d87526001600160a01b039889168852979092169091525afa601f3d1116156103195760405260205f516040519015158152f35b3d5f823e3d90fd5b346101c15760203660031901126101c15760043561033e81610c4f565b505f806024601c61034d610c25565b6040519563cb30b46085526020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b0390f35b60803660031901126101c1576103b1610b1c565b6103b9610b32565b60443591606435916001600160401b0383116101c157366023840112156101c1576004830135926001600160401b0384116101c15736602485830101116101c157610405858385610b82565b813b61040d57005b83602094602460a49360405198899763150b7a028952338a8a015260018060a01b0316604089015260608801526080808801528260a08801520160c086013701905f601c8401915af115610479575b5163757a42ff60e11b0161046c57005b63d1a57ed65f526004601cfd5b3d1561045c573d5f823e3d90fd5b346101c15760403660031901126101c1576104a0610b1c565b6024358015158091036101c15760205f6064601c826104bd610c25565b9660018060a01b0316966040519663f6916ddd8352888752604052336060525af160015f511416156103195750337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a3005b346101c1575f3660031901126101c157602061052d610c25565b6040516001600160a01b039091168152f35b346101c1575f3660031901126101c157610557610c25565b5f806024601c604051946395d89b418452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c1575f3660031901126101c157683602298b8c10b01232546040516001600160a01b039091168152602090f35b346101c15760203660031901126101c1576001600160a01b036105fb610b1c565b1660205f6044601c61060b610c25565b6040519563f5b100ea85528552836040525afa601f3d1116156103195760405260205f51604051908152f35b346101c1575f3660031901126101c15761064f610c25565b683602298b8c10b012325460205f6004601c60018060a01b03851695638da5cb5b84525afa9081601f3d1116600c5160601c0291156106ec575b506001600160a01b0316908181036106a7575b602060405160018152f35b683602298b8c10b0123280546001600160a01b031916831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3808061069c565b60601b6001600160601b0319166101c15782610689565b346101c15760203660031901126101c15760206001600160a01b03610729600435610c4f565b16604051908152f35b346101c15760203660031901126101c157602460206001600160a01b03610757610c25565b1660405192838092634f6ccce760e01b825260043560048301525afa80156107be575f9061078b575b602090604051908152f35b506020813d6020116107b6575b816107a560209383610bee565b810103126101c15760209051610780565b3d9150610798565b6040513d5f823e3d90fd5b6107d236610b48565b916107de838383610b82565b813b6107e657005b60a460209260405194859363150b7a028552338686015260018060a01b0316604085015260608401526080808401525f60a08401525f3681375f601c8401915af115610479575163757a42ff60e11b0161046c57005b346101c15760403660031901126101c157610855610b1c565b60206001600160a01b03610867610c25565b604051632f745c5960e01b81526001600160a01b039094166004850152602480359085015283916044918391165afa80156107be575f9061078b57602090604051908152f35b346101c15760203660031901126101c1576108c6610c25565b60205f6044601c6040519463c016aa5284526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b61091661091036610b48565b91610b82565b005b346101c1575f3660031901126101c157610930610c25565b60205f6044601c6040519463e2c792818452838552836040525afa601f3d1116156103195760405260205f51604051908152f35b60403660031901126101c157610978610b1c565b60243590610984610c25565b9060018060a01b03169060205f6064601c6040519463d10b6e0c8452868552876040523360605234905af1601f3d1116156103195750600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b346101c15760203660031901126101c1576109ff610c25565b60205f6044601c604051946327ef549584526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b346101c1575f3660031901126101c157610a55610c25565b5f806024601c604051946306fdde038452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c15760203660031901126101c157600435906001600160e01b0319821682036101c15760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b60609060031901126101c1576004356001600160a01b03811681036101c157906024356001600160a01b03811681036101c1579060443590565b9060846020610b8f610c25565b6040805163e5eb36c881526001600160a01b03968716848201819052959096169086018190526060860187905233608087015294928391601c83019034905af16001825114161561031957505f80516020610c848339815191525f80a4565b601f909101601f19168101906001600160401b03821190821017610c1157604052565b634e487b7160e01b5f52604160045260245ffd5b683602298b8c10b01230546001600160a01b0316908115610c4257565b635b2a47ae5f526004601cfd5b60205f6044601c610c5e610c25565b60405195632d8a746e85528552836040525afa601f3d111615610319576040525f519056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
1410
+ var dopplerDN404_default = "0x60a0604052346104a85761394680380380610019816107f1565b928339810160e0828203126104a85781516001600160401b0381116104a85781610044918401610816565b60208301519091906001600160401b0381116104a85781610066918501610816565b9060408401519161007960608601610867565b9361008660808701610867565b60a08701519093906001600160401b0381116104a85760c0916100aa918901610816565b960151926001600160a01b031680156107de575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a382156107cf578284066107c0578051906001600160401b0382116104eb5760015490600182811c921680156107b6575b60208310146105d05781601f849311610748575b50602090601f83116001146106e2575f926106d7575b50508160011b915f199060031b1c1916176001555b8051906001600160401b0382116104eb5760025490600182811c921680156106cd575b60208310146105d05781601f84931161065f575b50602090601f83116001146105f9575f926105ee575b50508160011b915f199060031b1c1916176002555b83516001600160401b0381116104eb57600354600181811c911680156105e4575b60208210146105d057601f811161056d575b50602094601f821160011461050a579481929394955f926104ff575b50508160011b915f199060031b1c1916176003555b608052604051610d35808201906001600160401b038211838310176104eb576020918391612c1183393381520301905ff080156104e0576080516001600160a01b0391909116906001600160601b035f1990910110156104d35768a20d6e21d0e5255309546001600160a01b03166104c65780156104b957630f4599e55f523360205260205f6024601c82855af160015f511416156104ac57678da5cb5b6cef16e65f5260208060046018305afa601f3d1160205160601b151016610499575b68a20d6e21d0e5255308805463ffffffff60201b191664010000000017905568a20d6e21d0e525530980546001600160a01b03191691909117905580610375575b604051612374908161089d823960805181818161042701528181610a8401528181610c51015281816114bb0152818161173a0152818161192f0152611fb00152f35b6001600160a01b03821691821561048c57608051820463fffffffe108260601c1761047f5768a20d6e21d0e525530880546001600160a01b031660a084901b6001600160a01b03191690811790915561041292906103d28361087b565b80546001600160a01b031690911790555f90815283907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a361087b565b906bff00000000000000000000008254918260581c9060015f527fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff821691161560011b1860011760581b16906bff000000000000000000000019161790555f80610333565b63e5cfe9575f526004601cfd5b63ea553b345f526004601cfd5b5f806004601c82855af16102f2575b5f80fd5b63d125259c5f526004601cfd5b6339a84a7b5f526004601cfd5b63ead4d2e45f526004601cfd5b63997c4ef45f526004601cfd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f8061021d565b601f1982169560035f52805f20915f5b8881106105555750836001959697981061053d575b505050811b01600355610232565b01515f1960f88460031b161c191690555f808061052f565b9192602060018192868501518155019401920161051a565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106105c6575b601f0160051c01905b8181106105bb5750610201565b5f81556001016105ae565b90915081906105a5565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101ef565b015190505f806101b9565b60025f9081528281209350601f198516905b818110610647575090846001959493921061062f575b505050811b016002556101ce565b01515f1960f88460031b161c191690555f8080610621565b9293602060018192878601518155019501930161060b565b60025f529091507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f840160051c810191602085106106c3575b90601f859493920160051c01905b8181106106b557506101a3565b5f81558493506001016106a8565b909150819061069a565b91607f169161018f565b015190505f80610157565b60015f9081528281209350601f198516905b8181106107305750908460019594939210610718575b505050811b0160015561016c565b01515f1960f88460031b161c191690555f808061070a565b929360206001819287860151815501950193016106f4565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c810191602085106107ac575b90601f859493920160051c01905b81811061079e5750610141565b5f8155849350600101610791565b9091508190610783565b91607f169161012d565b633eaf92f760e21b5f5260045ffd5b63265f13bd60e21b5f5260045ffd5b631e4fbdf760e01b5f525f60045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176104eb57604052565b81601f820112156104a8578051906001600160401b0382116104eb57610845601f8301601f19166020016107f1565b92828452602083830101116104a857815f9260208093018386015e8301015290565b51906001600160a01b03821682036104a857565b6001600160a01b03165f90815268a20d6e21d0e5255313602052604090209056fe6080806040526004361015610792575b503615610787575f3560e01c63e5eb36c881146103d25763f6916ddd811461038f576362fb246d811461036b57632d8a746e81146103325763c016aa52811461031f5763d10b6e0c811461022f576327ef549581146102145763f5b100ea81146101ef5763e2c7928181146101d45763cb30b46081146100a95763b7a94eb8146100a057633c10b94e5f526004601cfd5b60015f5260205ff35b60206040510160405260606003546100c0816113d6565b6100e4575b50605f601f198201915f6020825180930101526020835201601f191690f35b905060405190608082019160a081016040525f8352600a600435935b5f19019360308282060185530492831561011c57600a90610100565b9250608083601f19810192030181526040519283915f9061013c856113d6565b94600181169081156101b45750600114610173575b61016d9450518092825e015f815203601f19810183528261140e565b816100c5565b905060035f5260205f20935f5b818110610198575061016d9450830160200190610151565b8554602082890181019190915260019096019587955001610180565b602092935061016d96915060ff1916828601528015150284010190610151565b63ffffffff68a20d6e21d0e52553085460801c165f5260205ff35b63ffffffff6102086004356001600160a01b0316611394565b5460801c165f5260205ff35b6001600160a01b03610227600435612130565b165f5260205ff35b68a20d6e21d0e5255309546001600160a01b03163303610312576001600160a01b036044358116906024359060043581169061028061027b5f19600160201b861086020160011b612055565b6120eb565b5416928381036102ef575b505f82815268a20d6e21d0e525530c60209081526040822080546001600160a01b0319166001600160a01b03851617905568a20d6e21d0e525530d60601b600885901c018054600160ff90961695861b191693151590941b92909217909255918152f35b6102f99084611602565b5415610305578361028b565b63cfb3b9425f526004601cfd5b63ce5a776b5f526004601cfd5b6001600160a01b03610227600435612107565b6004356001600160a01b0361034682612107565b161561035e576001600160a01b039061022790612107565b63ceea21b65f526004601cfd5b6103856001600160a01b0360243581169060043516611602565b5415155f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633036103125760243515156103c86001600160a01b0360043581169060443516611602565b5560015f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633819003610312576001600160a01b0360643581169160043582169160443591906024351661041481612169565b835f52600560205260405f20549461044d7f0000000000000000000000000000000000000000000000000000000000000000809761146d565b935f915f9486610762575b84156107555715610748576001600160a01b0361048561027b600160201b851085025f190160011b612055565b5416870361073b57868103610702575b5061049f86611394565b906104a984611394565b90825460a01c808a116106f5576105ab93610563916104d4908c90036001600160601b0316826121a9565b83546104f39060a01c6001600160601b038d81169190910116856121a9565b6104fc836122df565b6106c4575b600161053061050f8c6113b5565b9261052a63ffffffff5f1981845460801c16011680926121cc565b83612079565b610552816105445f198801851b8501612055565b9463ffffffff8616906120c3565b63ffffffff165f1901811b01612095565b6105a58563ffffffff845460801c169361058663ffffffff6001870116826121cc565b6105a0610592836113b5565b8663ffffffff8716916120c3565b612210565b906122a0565b855f5281855f8051602061235483398151915260205fa36105cf5760015f5260205ff35b5f198301908382116106b05763ffffffff6105e986611394565b5460801c169384808410928361068e575b505050610620575b5050505f52600560205260405f2090815403905580808080806100a0565b610629846113b5565b9282101561060257818114610602576001826106758363ffffffff8481966106758a610658886106869d612079565b9281610670610668838795612079565b809b836120c3565b6120c3565b825f19911601811b01911690612095565b828080610602565b8714801593509091906106a6575b50508684816105fa565b109050838761069c565b634e487b7160e01b5f52601160045260245ffd5b6106cd836121ef565b5f83815268a20d6e21d0e525530c6020526040902080546001600160a01b0319169055610501565b63f4d678b85f526004601cfd5b61070c8188611602565b54610495576001600160a01b0361072283612130565b160361072e5787610495565b6359c896be5f526004601cfd5b63a11481005f526004601cfd5b6340739bf05f526004601cfd5b63ea553b345f526004601cfd5b9250935063ffffffff61077c60015f198401811b01612055565b169385851092610458565b3461078e57005b5f80fd5b5f3560e01c90816306fdde031461129c57508063095ea7b3146111fb5780630ad9e7bf146111c357806310aa0ebb1461119e57806316f0115b1461117657806318160ddd1461114e578063207d06361461110b57806323b872dd14611065578063274e430b146110385780632a6a935d14610fc65780632f745c5914610f5f578063313ce56714610f445780634ef41efc14610f145780634f6ccce714610ef657806355f804b314610d9d5780635b2aa23914610c005780636c0360eb14610b6e57806370a0823114610b3f578063715018a614610afb5780638902653814610ace5780638da5cb5b14610aa7578063907af6c014610a6d57806395d89b4114610993578063a9059cbb14610962578063dd62ed3e1461092e5763f2fde38b146108bc575f61000f565b3461078e57602036600319011261078e576108d5611368565b6108dd6115be565b6001600160a01b0316801561091b575f80546001600160a01b03198116831782556001600160a01b0316905f805160206123348339815191529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b3461078e57604036600319011261078e57602061095a61094c611368565b61095461137e565b90611558565b604051908152f35b3461078e57604036600319011261078e5761098861097e611368565b6024359033611620565b602060405160018152f35b3461078e575f36600319011261078e576040515f6002546109b3816113d6565b8084529060018116908115610a4957506001146109eb575b6109e7836109db8185038261140e565b6040519182918261133e565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b808210610a2f575090915081016020016109db6109cb565b919260018160209254838588010152019101909291610a17565b60ff191660208086019190915291151560051b840190910191506109db90506109cb565b3461078e575f36600319011261078e5760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b3461078e575f36600319011261078e575f546040516001600160a01b039091168152602090f35b3461078e575f36600319011261078e57610ae66115be565b6004805460ff60a01b1916600160a01b179055005b3461078e575f36600319011261078e57610b136115be565b5f80546001600160a01b0319811682556001600160a01b03165f805160206123348339815191528280a3005b3461078e57602036600319011261078e576020610b62610b5d611368565b611394565b5460a01c604051908152f35b3461078e575f36600319011261078e576040515f600354610b8e816113d6565b8084529060018116908115610a495750600114610bb5576109e7836109db8185038261140e565b60035f9081525f80516020612314833981519152939250905b808210610be6575090915081016020016109db6109cb565b919260018160209254838588010152019101909291610bce565b3461078e57602036600319011261078e576004356001600160401b03811161078e573660238201121561078e5760048101356001600160401b03811161078e573660248260051b8401011161078e577f000000000000000000000000000000000000000000000000000000000000000091828202928284048114831517156106b057335f52600560205260405f205493610c9933611394565b5460a01c610ca7828761148b565b11610d8e57610cb9610cbf928661146d565b9461148b565b335f52600560205260405f2055610cd533611394565b9263ffffffff610ce4336113b5565b945460801c16915f915b84831015610d8c5760248360051b8301013584811015610d7d57818110610d73578181600193849303610d27575b5001925b0191610cee565b8063ffffffff848b61067582610d40610d6d9784612079565b610d5b818a610d4f8188612079565b96610670888c836120c3565b888616919086165f1901811b01612095565b88610d1c565b5091600190610d20565b633277964160e01b5f5260045ffd5b005b6302579b0560e11b5f5260045ffd5b3461078e57602036600319011261078e576004356001600160401b03811161078e573660238201121561078e5760048101356001600160401b03811161078e57366024828401011161078e57610df16115be565b610dfc6003546113d6565b601f8111610ea6575b505f601f8211600114610e415781925f92610e33575b50508160011b915f199060031b1c1916176003555f80f35b602492500101358280610e1b565b601f1982169260035f5260205f20915f5b858110610e8b57508360019510610e6f575b505050811b01600355005b01602401355f19600384901b60f8161c19169055828080610e64565b90926020600181926024878701013581550194019101610e52565b60035f525f80516020612314833981519152601f830160051c81019160208410610eec575b601f0160051c01905b818110610ee15750610e05565b5f8155600101610ed4565b9091508190610ecb565b3461078e57602036600319011261078e57602061095a600435611498565b3461078e575f36600319011261078e5768a20d6e21d0e5255309546040516001600160a01b039091168152602090f35b3461078e575f36600319011261078e57602060405160128152f35b3461078e57604036600319011261078e57610f78611368565b60243563ffffffff610f8983611394565b5460801c16811015610fb757610fae63ffffffff91610fa96020946113b5565b612079565b16604051908152f35b6306ed618760e11b5f5260045ffd5b3461078e57602036600319011261078e576004358015801580920361078e5761098891610ff233611394565b91825460581c915f52337fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff83169216151860011b18600117906115a1565b3461078e57602036600319011261078e57602061105b611056611368565b611445565b6040519015158152f35b3461078e57606036600319011261078e5761107e611368565b61108661137e565b6044359061109433846115e4565b926e22d473030f116ddee9f6b43ac78ba33314806110f4575b156110ec575f19935b600185016110ca575b506109889350611620565b8484116110df578361098895039055846110bf565b6313be252b5f526004601cfd5b8354936110b6565b50600461110082611394565b5460581c16156110ad565b3461078e57602036600319011261078e57611124611368565b61112c6115be565b600480546001600160a81b0319166001600160a01b0392909216919091179055005b3461078e575f36600319011261078e57602068a20d6e21d0e52553085460a01c604051908152f35b3461078e575f36600319011261078e576004546040516001600160a01b039091168152602090f35b3461078e575f36600319011261078e57602060ff60045460a01c166040519015158152f35b3461078e57602036600319011261078e576001600160a01b036111e4611368565b165f526005602052602060405f2054604051908152f35b3461078e57604036600319011261078e57611214611368565b6001600160a01b03811690602435908190611246906e22d473030f116ddee9f6b43ac78ba3851461127a575b336115e4565b555f52337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b61129761128633611394565b600460ff825460581c1617906115a1565b611240565b3461078e575f36600319011261078e575f6001546112b9816113d6565b8084529060018116908115610a4957506001146112e0576109e7836109db8185038261140e565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b808210611324575090915081016020016109db6109cb565b91926001816020925483858801015201910190929161130c565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361078e57565b602435906001600160a01b038216820361078e57565b6001600160a01b03165f90815268a20d6e21d0e52553136020526040902090565b6001600160a01b03165f90815268a20d6e21d0e52553106020526040902090565b90600182811c92168015611404575b60208310146113f057565b634e487b7160e01b5f52602260045260245ffd5b91607f16916113e5565b601f909101601f19168101906001600160401b0382119082101761143157604052565b634e487b7160e01b5f52604160045260245ffd5b9061144f82611394565b5460581c9160016002841615159316156114665750565b3b15159150565b8115611477570490565b634e487b7160e01b5f52601260045260245ffd5b919082018092116106b057565b9068a20d6e21d0e52553085463ffffffff8160801c16831015611549576114e3907f00000000000000000000000000000000000000000000000000000000000000009060a01c61146d565b905f925f5b8381106114fe57639f6fb6c960e01b5f5260045ffd5b80600101806001116106b05763ffffffff61151b8360011b612055565b1661152a575b506001016114e8565b8286929614611540575060018091019490611521565b93505050915090565b639f6fb6c960e01b5f5260045ffd5b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314611586575b611582916115e4565b5490565b600461159183611394565b5460581c166115795750505f1990565b805460ff60581b191660589290921b60ff60581b16919091179055565b5f546001600160a01b031633036115d157565b63118cdaa760e01b5f523360045260245ffd5b9060285260145268a20d6e21d0e525530f5f5260485f20905f602852565b9060285260145268a20d6e21d0e525530b5f5260485f20905f602852565b9161162a82612169565b6001600160a01b038316611ffe575b6001600160a01b038216156107555761165183611394565b61165a83611394565b68a20d6e21d0e5255309546001600160a01b031615610748576040519161018083016001600160401b03811184821017611431576040525f83525f60208401525f60808401525f60a08401525f60c08401525f60e08401525f6101008401525f6101208401525f6101408401525f610160840152805463ffffffff8160801c16604085015263ffffffff835460801c1660608501528060a01c85116106f55761171360a082901c8690036001600160601b0316836121a9565b825460a01c85019061172e6001600160601b038316856121a9565b611763604086015191877f00000000000000000000000000000000000000000000000000000000000000009160a01c0361146d565b808203911102845261177486611445565b15611f96575b50611d91565b68a20d6e21d0e52553085463ffffffff60208501518551928382848360801c1601038060808901528360801b9060801b16908360801b191617928368a20d6e21d0e52553085501916040519260c060a085019180835260051b850101604052836040015260c0830183528261016087015260601c166101208501528351611c71575b505060208201516118e7575b50610140810151806118a3575b50610160015180611851575b505f9081526001600160a01b0391821692909116905f8051602061235483398151915290602090a3565b600160206040828060a01b0368a20d6e21d0e5255309541693015192603f19840193849163263c69d6835283601f198301525f825160051b6044019260231901915af1915114161561078e575f611827565b600160205f9281838060a01b0368a20d6e21d0e5255309541691015190815160051b60840190607f19830195869360631901915af1915114161561078e575f61181b565b9194610160829492015160208360601b910152611903826113b5565b9463ffffffff6119138486612210565b1660e086015268a20d6e21d0e5255308549263ffffffff6119577f00000000000000000000000000000000000000000000000000000000000000008660a01c61146d565b9460201c16848111908115021761010087015261198c60608701519563ffffffff602089015188018060c08b015216906121cc565b63ffffffff68a20d6e21d0e52553085460401c169760015b15611c12575b6101208701515f9063ffffffff8b8116911614611a6057611a5b63ffffffff60018c01169a60e0641fffffffe0631fffffff8360031c1668a20d6e21d0e525531160601b01549260051b16161c63ffffffff165b8060081c685106b710e87292a98760611b0160018260ff161b8019825416179055611a3063ffffffff82168a8d6120c3565b611a5063ffffffff60e08c01511663ffffffff60018c019b1690836122a0565b6101608a01516122fd565b6119a4565b949798939291906101008801515b63ffffffff611a825f19830160011b612055565b1615611bee575f19906001810160081c685106b710e87292a98760611b018054196001830160ff1690811c901b8015611b76575b80611acc575b5050508981119081150217611a6e565b600180939450811901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff860260f81c161b60f71c1692831c63d76453e004161a179082685106b710e87292a98760611b03190160081b17910181108a8211175f03175f8080611abc565b506001909c9895929c9a9794919a9693965b01805419685106b710e87292a98760611b60088e901c0182118117611bb05750600190611b88565b9c9295989c9a9194979a969396808d60081c685106b710e87292a98760611b018311611bdd575b50611ab6565b508c1960ff1690811b901c80611bd7565b611a5b909a999691929394959a6001810188811190811502176101008b01526119fe565b60c087015186036119aa57945094925094509468a20d6e21d0e52553085463ffffffff60201b61010084015160201b169163ffffffff60401b9060401b1690600160201b600160601b031916171768a20d6e21d0e5255308555f61180e565b602060018860609a9699959a989497981b17910152611c8f826113b5565b94611caf60408801519563ffffffff895188038060a08c015216906121cc565b60015b15611d78575b5f945f190194611cc88688612079565b63ffffffff8116905f1982018060021c685106b710e87292a98960611b019060c082549160061b1681811c60018060401b0316901b189055611d0f826101608c01516122fd565b600160ff62ffffff8360081c16685106b710e87292a98760611b0192161b198154169055611d3c816122df565b611d47575b50611cb2565b611d50816121ef565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611d41565b60a08701518503611cb857935093509390945f80611802565b9194604086979294970151948651976020880151898110818b18028a1899888b108b8a18028914611f87578a8918898c10028918908190038a52900360208901526001600160a01b0383811690831614611f65576040805163144027d3818301526001600160a01b03858116606080840191909152908516608083015260a08201528a8918898c1002891860c0820181815260059190911b820160e090810190935260208201529081018152610140890152611e4c836113b5565b95611e56836113b5565b9763ffffffff611e668584612210565b1660e08b015260608a01519a81811090821802188a019560015b15611f1f575b878b611eca8163ffffffff808f8f90611ebe60e09284611eb55f9b5f1960408701510190816040880152612079565b169889916120c3565b015116911690836122a0565b6101408c015160208151838152019052611ee3816122df565b611eee575b50611e80565b611ef7816121ef565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611ee8565b9960010199868b03611e8657939895509398611f4c92975063ffffffff91965080606087015216836121cc565b611f6063ffffffff604085015116826121cc565b611780565b9492978681989593989792971090821802186060840151016060840152611780565b50509492975094509491611780565b611fd5906001600160a01b0388811690881614611feb575b7f00000000000000000000000000000000000000000000000000000000000000009061146d565b606084015180820391110260208401525f61177a565b6040850151855190036060860152611fae565b61200783611394565b5460a01c60018060a01b0384165f52600560205260405f205490808211918215612042575b505015611639576311acc28f60e01b5f5260045ffd5b8103915081116106b05781115f8061202c565b60e08160031c685106b710e87292a98960611b01549160051b161c63ffffffff1690565b60e0908260031c9060601b01549160051b161c63ffffffff1690565b9060e08260031c685106b710e87292a98960611b019260051b1682549182821c1863ffffffff16901b189055565b60e0909291928360031c9060601b019260051b1682549182821c1863ffffffff16901b189055565b63ffffffff165f5268a20d6e21d0e525530a60205260405f2090565b6001600160a01b039061212b9061027b90600160201b8110025f190160011b612055565b541690565b6001600160a01b0361214182612107565b161561035e575f90815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b6004546001600160a01b03808216921691909114908161219a575b5061218b57565b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f612184565b80546001600160a01b031660a09290921b6001600160a01b031916919091179055565b805463ffffffff60801b191660809290921b63ffffffff60801b16919091179055565b60018160081c68a20d6e21d0e525530d60601b019160ff161b198154169055565b805460601c63ffffffff1692918315612227575050565b68a20d6e21d0e5255308805463ffffffff19811663ffffffff918216600101918216908117909255835463ffffffff60601b191660609190911b63ffffffff60601b1617909255909250829061227c826120eb565b80546001600160a01b0319166001600160a01b039092169190911790551561078e57565b5f1901908160021c685106b710e87292a98960611b019260c084549360061b169163ffffffff169060201b1782821c1860018060401b0316901b189055565b8060081c68a20d6e21d0e525530d60601b01549060ff161c60011690565b9060209082519060081b8284015117815201905256fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef608034607857601f610d3538819003918201601f19168301916001600160401b03831184841017607c57808492602094604052833981010312607857516001600160a01b03811690819003607857683602298b8c10b0123180546001600160a01b031916919091179055604051610ca490816100918239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60808060405260043610156101c5575b5036156101ba575f3560e01c63263c69d681146101405763144027d381146100cf57630f4599e51461004857633c10b94e5f526004601cfd5b683602298b8c10b01231546001600160a01b0316806100ab575b50683602298b8c10b01230546001600160a01b03811661009e576001600160a01b0319163317683602298b8c10b012305560015f908152602090f35b63bf656a465f526004601cfd5b6004356001600160a01b0316036100c2575f610062565b63c59ec47a5f526004601cfd5b683602298b8c10b01230546001600160a01b03163303610133576004356024359060443591602483810193600481013560051b0101925b8381036101165760015f5260205ff35b803582845f80516020610c848339815191525f80a4602001610106565b63363cb3125f526004601cfd5b683602298b8c10b01230546001600160a01b0316330361013357600435602481810191600481013560051b0101905b81810361017f5760015f5260205ff35b8035600881901c6001600160581b03169060018116801560609290921c91820291025f80516020610c848339815191525f80a460200161016f565b346101c157005b5f80fd5b5f3560e01c90816301ffc9a714610aa85750806306fdde0314610a3d578063081812fc146109e6578063095ea7b31461096457806318160ddd1461091857806323b872dd1461090457806324359879146108ad5780632f745c591461083c57806342842e0e146107c95780634f6ccce7146107325780636352211e146107035780636cef16e61461063757806370a08231146105da5780638da5cb5b146105aa57806395d89b411461053f57806397e5311c14610513578063a22cb46514610487578063b88d4fde1461039d578063c87b56dd146103215763e985e9c5146102ad575f61000f565b346101c15760403660031901126101c1576102c6610b1c565b60205f6044601c6102d5610b32565b6102dd610c25565b604080516362fb246d87526001600160a01b039889168852979092169091525afa601f3d1116156103195760405260205f516040519015158152f35b3d5f823e3d90fd5b346101c15760203660031901126101c15760043561033e81610c4f565b505f806024601c61034d610c25565b6040519563cb30b46085526020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b0390f35b60803660031901126101c1576103b1610b1c565b6103b9610b32565b60443591606435916001600160401b0383116101c157366023840112156101c1576004830135926001600160401b0384116101c15736602485830101116101c157610405858385610b82565b813b61040d57005b83602094602460a49360405198899763150b7a028952338a8a015260018060a01b0316604089015260608801526080808801528260a08801520160c086013701905f601c8401915af115610479575b5163757a42ff60e11b0161046c57005b63d1a57ed65f526004601cfd5b3d1561045c573d5f823e3d90fd5b346101c15760403660031901126101c1576104a0610b1c565b6024358015158091036101c15760205f6064601c826104bd610c25565b9660018060a01b0316966040519663f6916ddd8352888752604052336060525af160015f511416156103195750337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a3005b346101c1575f3660031901126101c157602061052d610c25565b6040516001600160a01b039091168152f35b346101c1575f3660031901126101c157610557610c25565b5f806024601c604051946395d89b418452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c1575f3660031901126101c157683602298b8c10b01232546040516001600160a01b039091168152602090f35b346101c15760203660031901126101c1576001600160a01b036105fb610b1c565b1660205f6044601c61060b610c25565b6040519563f5b100ea85528552836040525afa601f3d1116156103195760405260205f51604051908152f35b346101c1575f3660031901126101c15761064f610c25565b683602298b8c10b012325460205f6004601c60018060a01b03851695638da5cb5b84525afa9081601f3d1116600c5160601c0291156106ec575b506001600160a01b0316908181036106a7575b602060405160018152f35b683602298b8c10b0123280546001600160a01b031916831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3808061069c565b60601b6001600160601b0319166101c15782610689565b346101c15760203660031901126101c15760206001600160a01b03610729600435610c4f565b16604051908152f35b346101c15760203660031901126101c157602460206001600160a01b03610757610c25565b1660405192838092634f6ccce760e01b825260043560048301525afa80156107be575f9061078b575b602090604051908152f35b506020813d6020116107b6575b816107a560209383610bee565b810103126101c15760209051610780565b3d9150610798565b6040513d5f823e3d90fd5b6107d236610b48565b916107de838383610b82565b813b6107e657005b60a460209260405194859363150b7a028552338686015260018060a01b0316604085015260608401526080808401525f60a08401525f3681375f601c8401915af115610479575163757a42ff60e11b0161046c57005b346101c15760403660031901126101c157610855610b1c565b60206001600160a01b03610867610c25565b604051632f745c5960e01b81526001600160a01b039094166004850152602480359085015283916044918391165afa80156107be575f9061078b57602090604051908152f35b346101c15760203660031901126101c1576108c6610c25565b60205f6044601c6040519463c016aa5284526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b61091661091036610b48565b91610b82565b005b346101c1575f3660031901126101c157610930610c25565b60205f6044601c6040519463e2c792818452838552836040525afa601f3d1116156103195760405260205f51604051908152f35b60403660031901126101c157610978610b1c565b60243590610984610c25565b9060018060a01b03169060205f6064601c6040519463d10b6e0c8452868552876040523360605234905af1601f3d1116156103195750600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b346101c15760203660031901126101c1576109ff610c25565b60205f6044601c604051946327ef549584526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b346101c1575f3660031901126101c157610a55610c25565b5f806024601c604051946306fdde038452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c15760203660031901126101c157600435906001600160e01b0319821682036101c15760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b60609060031901126101c1576004356001600160a01b03811681036101c157906024356001600160a01b03811681036101c1579060443590565b9060846020610b8f610c25565b6040805163e5eb36c881526001600160a01b03968716848201819052959096169086018190526060860187905233608087015294928391601c83019034905af16001825114161561031957505f80516020610c848339815191525f80a4565b601f909101601f19168101906001600160401b03821190821017610c1157604052565b634e487b7160e01b5f52604160045260245ffd5b683602298b8c10b01230546001600160a01b0316908115610c4257565b635b2a47ae5f526004601cfd5b60205f6044601c610c5e610c25565b60405195632d8a746e85528552836040525afa601f3d111615610319576040525f519056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
1382
1411
 
1383
1412
  // src/evm/abis/bytecodes/dopplerDN404BaseSepolia.ts
1384
1413
  var dopplerDN404BaseSepolia_default = "0x60a06040523461049b57613a4d80380380610019816107c6565b928339810160e08282031261049b5781516001600160401b03811161049b57816100449184016107eb565b60208301519091906001600160401b03811161049b57816100669185016107eb565b906040840151916100796060860161083c565b936100866080870161083c565b60a08701519093906001600160401b03811161049b5760c0916100aa9189016107eb565b960151926001600160a01b031680156107b3575f80546001600160a01b03198116831782556001600160a01b0316907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09080a38051906001600160401b0382116104de5760015490600182811c921680156107a9575b60208310146105c35781601f84931161073b575b50602090601f83116001146106d5575f926106ca575b50508160011b915f199060031b1c1916176001555b8051906001600160401b0382116104de5760025490600182811c921680156106c0575b60208310146105c35781601f849311610652575b50602090601f83116001146105ec575f926105e1575b50508160011b915f199060031b1c1916176002555b83516001600160401b0381116104de57600354600181811c911680156105d7575b60208210146105c357601f8111610560575b50602094601f82116001146104fd579481929394955f926104f2575b50508160011b915f199060031b1c1916176003555b608052604051610d41808201906001600160401b038211838310176104de576020918391612d0c83393381520301905ff080156104d3576080516001600160a01b0391909116906001600160601b035f1990910110156104c65768a20d6e21d0e5255309546001600160a01b03166104b95780156104ac57630f4599e55f523360205260205f6024601c82855af160015f5114161561049f57678da5cb5b6cef16e65f5260208060046018305afa601f3d1160205160601b15101661048c575b68a20d6e21d0e5255308805463ffffffff60201b191664010000000017905568a20d6e21d0e525530980546001600160a01b03191691909117905580610368575b60405161249a9081610872823960805181818161040b01528181610a4f01528181610c47015281816115920152818161184701528181611a3c01526120bd0152f35b6001600160a01b03821691821561047f57608051820463fffffffe108260601c176104725768a20d6e21d0e525530880546001600160a01b031660a084901b6001600160a01b03191690811790915561040592906103c583610850565b80546001600160a01b031690911790555f90815283907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef602082a3610850565b906bff00000000000000000000008254918260581c9060015f527fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff821691161560011b1860011760581b16906bff000000000000000000000019161790555f80610326565b63e5cfe9575f526004601cfd5b63ea553b345f526004601cfd5b5f806004601c82855af16102e5575b5f80fd5b63d125259c5f526004601cfd5b6339a84a7b5f526004601cfd5b63ead4d2e45f526004601cfd5b63997c4ef45f526004601cfd5b6040513d5f823e3d90fd5b634e487b7160e01b5f52604160045260245ffd5b015190505f80610210565b601f1982169560035f52805f20915f5b88811061054857508360019596979810610530575b505050811b01600355610225565b01515f1960f88460031b161c191690555f8080610522565b9192602060018192868501518155019401920161050d565b60035f527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b601f830160051c810191602084106105b9575b601f0160051c01905b8181106105ae57506101f4565b5f81556001016105a1565b9091508190610598565b634e487b7160e01b5f52602260045260245ffd5b90607f16906101e2565b015190505f806101ac565b60025f9081528281209350601f198516905b81811061063a5750908460019594939210610622575b505050811b016002556101c1565b01515f1960f88460031b161c191690555f8080610614565b929360206001819287860151815501950193016105fe565b60025f529091507f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace601f840160051c810191602085106106b6575b90601f859493920160051c01905b8181106106a85750610196565b5f815584935060010161069b565b909150819061068d565b91607f1691610182565b015190505f8061014a565b60015f9081528281209350601f198516905b818110610723575090846001959493921061070b575b505050811b0160015561015f565b01515f1960f88460031b161c191690555f80806106fd565b929360206001819287860151815501950193016106e7565b60015f529091507fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6601f840160051c8101916020851061079f575b90601f859493920160051c01905b8181106107915750610134565b5f8155849350600101610784565b9091508190610776565b91607f1691610120565b631e4fbdf760e01b5f525f60045260245ffd5b6040519190601f01601f191682016001600160401b038111838210176104de57604052565b81601f8201121561049b578051906001600160401b0382116104de5761081a601f8301601f19166020016107c6565b928284526020838301011161049b57815f9260208093018386015e8301015290565b51906001600160a01b038216820361049b57565b6001600160a01b03165f90815268a20d6e21d0e5255313602052604090209056fe608080604052600436101561075d575b503615610752575f3560e01c63e5eb36c881146103d25763f6916ddd811461038f576362fb246d811461036b57632d8a746e81146103325763c016aa52811461031f5763d10b6e0c811461022f576327ef549581146102145763f5b100ea81146101ef5763e2c7928181146101d45763cb30b46081146100a95763b7a94eb8146100a057633c10b94e5f526004601cfd5b60015f5260205ff35b60206040510160405260606003546100c0816114af565b6100e4575b50605f601f198201915f6020825180930101526020835201601f191690f35b905060405190608082019160a081016040525f8352600a600435935b5f19019360308282060185530492831561011c57600a90610100565b9250608083601f19810192030181526040519283915f9061013c856114af565b94600181169081156101b45750600114610173575b61016d9450518092825e015f815203601f19810183528261148c565b816100c5565b905060035f5260205f20935f5b818110610198575061016d9450830160200190610151565b8554602082890181019190915260019096019587955001610180565b602092935061016d96915060ff1916828601528015150284010190610151565b63ffffffff68a20d6e21d0e52553085460801c165f5260205ff35b63ffffffff6102086004356001600160a01b031661144a565b5460801c165f5260205ff35b6001600160a01b0361022760043561228a565b165f5260205ff35b68a20d6e21d0e5255309546001600160a01b03163303610312576001600160a01b036044358116906024359060043581169061028061027b5f19600160201b861086020160011b6121af565b612245565b5416928381036102ef575b505f82815268a20d6e21d0e525530c60209081526040822080546001600160a01b0319166001600160a01b03851617905568a20d6e21d0e525530d60601b600885901c018054600160ff90961695861b191693151590941b92909217909255918152f35b6102f990846116f1565b5415610305578361028b565b63cfb3b9425f526004601cfd5b63ce5a776b5f526004601cfd5b6001600160a01b03610227600435612261565b6004356001600160a01b0361034682612261565b161561035e576001600160a01b039061022790612261565b63ceea21b65f526004601cfd5b6103856001600160a01b03602435811690600435166116f1565b5415155f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633036103125760243515156103c86001600160a01b03600435811690604435166116f1565b5560015f5260205ff35b68a20d6e21d0e5255309546001600160a01b031633819003610312576001600160a01b0360043581165f818152600560205260409020547f000000000000000000000000000000000000000000000000000000000000000093919260443592916064358216916024351690610448908790611544565b935f925f948661072d575b83156107205715610713576001600160a01b0361048061027b600160201b851085025f190160011b6121af565b54168703610706578681036106cd575b5061049a8661144a565b906104a48361144a565b90825460a01c808a116106c0576105a69361055e916104cf908c90036001600160601b0316826122c3565b83546104ee9060a01c6001600160601b038d81169190910116856122c3565b6104f7836123f9565b61068f575b600161052b61050a8c61146b565b9261052563ffffffff5f1981845460801c16011680926122e6565b836121d3565b61054d8161053f5f198801851b85016121af565b9463ffffffff86169061221d565b63ffffffff165f1901811b016121ef565b6105a08463ffffffff845460801c169361058163ffffffff6001870116826122e6565b61059b61058d8361146b565b8663ffffffff87169161221d565b61232a565b906123ba565b855f52845f8051602061246e83398151915260205fa36105c95760015f5260205ff35b5f19820191821161067b5763ffffffff6105e28461144a565b5460801c169182811061060d575b5050505f52600560205260405f20908154039055808080806100a0565b6106168461146b565b928210156105f0578181146105f0576001826106628363ffffffff8481966106628a610645886106739d6121d3565b928161065d6106558387956121d3565b809b8361221d565b61221d565b825f19911601811b019116906121ef565b8280806105f0565b634e487b7160e01b5f52601160045260245ffd5b61069883612309565b5f83815268a20d6e21d0e525530c6020526040902080546001600160a01b03191690556104fc565b63f4d678b85f526004601cfd5b6106d781886116f1565b54610490576001600160a01b036106ed8361228a565b16036106f95787610490565b6359c896be5f526004601cfd5b63a11481005f526004601cfd5b6340739bf05f526004601cfd5b63ea553b345f526004601cfd5b9350935063ffffffff61074760015f198401811b016121af565b169385851093610453565b3461075957005b5f80fd5b5f3560e01c90816306fdde031461135257508063095ea7b3146112b15780630ad9e7bf1461127957806310aa0ebb1461125457806316f0115b1461122c57806318160ddd14611204578063207d0636146111c157806323b872dd1461111b578063274e430b146110ee5780632a6a935d1461107c5780632f745c5914610fe3578063313ce56714610fc85780634ef41efc14610f985780634f6ccce714610f7a57806355f804b314610e215780635b2aa23914610bcb5780636c0360eb14610b3957806370a0823114610b0a578063715018a614610ac65780638902653814610a995780638da5cb5b14610a72578063907af6c014610a3857806395d89b411461095e578063a9059cbb1461092d578063dd62ed3e146108f95763f2fde38b14610887575f61000f565b34610759576020366003190112610759576108a061141e565b6108a86116ad565b6001600160a01b031680156108e6575f80546001600160a01b03198116831782556001600160a01b0316905f8051602061244e8339815191529080a3005b631e4fbdf760e01b5f525f60045260245ffd5b3461075957604036600319011261075957602061092561091761141e565b61091f611434565b90611647565b604051908152f35b346107595760403660031901126107595761095361094961141e565b602435903361170f565b602060405160018152f35b34610759575f366003190112610759576040515f60025461097e816114af565b8084529060018116908115610a1457506001146109b6575b6109b2836109a68185038261148c565b604051918291826113f4565b0390f35b60025f9081527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace939250905b8082106109fa575090915081016020016109a6610996565b9192600181602092548385880101520191019092916109e2565b60ff191660208086019190915291151560051b840190910191506109a69050610996565b34610759575f3660031901126107595760206040517f00000000000000000000000000000000000000000000000000000000000000008152f35b34610759575f366003190112610759575f546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957610ab16116ad565b6004805460ff60a01b1916600160a01b179055005b34610759575f36600319011261075957610ade6116ad565b5f80546001600160a01b0319811682556001600160a01b03165f8051602061244e8339815191528280a3005b34610759576020366003190112610759576020610b2d610b2861141e565b61144a565b5460a01c604051908152f35b34610759575f366003190112610759576040515f600354610b59816114af565b8084529060018116908115610a145750600114610b80576109b2836109a68185038261148c565b60035f9081525f8051602061242e833981519152939250905b808210610bb1575090915081016020016109a6610996565b919260018160209254838588010152019101909291610b99565b34610759576020366003190112610759576004356001600160401b0381116107595736602382011215610759576004810135906001600160401b038211610e0d578160051b60405192610c21602083018561148c565b8352602460208401918301019136831161075957602401905b828210610dfd57838051907f00000000000000000000000000000000000000000000000000000000000000008083029280840482149015171561067b57335f52600560205260405f205492610c8e3361144a565b5460a01c610c9c8286611562565b11610db957610cae610cb49285611544565b93611562565b335f52600560205260405f2055610cca3361144a565b9163ffffffff610cd93361146b565b935460801c16905f905b8351821015610db75760208260051b8501015183811015610d7357818110610d69578181600193849303610d1d575b5001915b0190610ce3565b8063ffffffff848a61066282610d36610d6397846121d3565b610d51818a610d4581886121d3565b9661065d888c8361221d565b888616919086165f1901811b016121ef565b87610d12565b5090600190610d16565b60405162461bcd60e51b815260206004820152601c60248201527b546f6b656e20494420696e646578206f7574206f6620626f756e647360201b6044820152606490fd5b005b60405162461bcd60e51b815260206004820152601c60248201527b4e6f7420656e6f7567682062616c616e636520746f20667265657a6560201b6044820152606490fd5b8135815260209182019101610c3a565b634e487b7160e01b5f52604160045260245ffd5b34610759576020366003190112610759576004356001600160401b03811161075957366023820112156107595760048101356001600160401b03811161075957366024828401011161075957610e756116ad565b610e806003546114af565b601f8111610f2a575b505f601f8211600114610ec55781925f92610eb7575b50508160011b915f199060031b1c1916176003555f80f35b602492500101358280610e9f565b601f1982169260035f5260205f20915f5b858110610f0f57508360019510610ef3575b505050811b01600355005b01602401355f19600384901b60f8161c19169055828080610ee8565b90926020600181926024878701013581550194019101610ed6565b60035f525f8051602061242e833981519152601f830160051c81019160208410610f70575b601f0160051c01905b818110610f655750610e89565b5f8155600101610f58565b9091508190610f4f565b3461075957602036600319011261075957602061092560043561156f565b34610759575f3660031901126107595768a20d6e21d0e5255309546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060405160128152f35b3461075957604036600319011261075957610ffc61141e565b60243563ffffffff61100d8361144a565b5460801c1681101561103b5761103263ffffffff9161102d60209461146b565b6121d3565b16604051908152f35b60405162461bcd60e51b81526020600482015260196024820152784f776e657220696e646578206f7574206f6620626f756e647360381b6044820152606490fd5b34610759576020366003190112610759576004358015801580920361075957610953916110a83361144a565b91825460581c915f52337fb5a1de456fff688115a4f75380060c23c8532d14ff85f687cc871456d642039360205fa2600260ff83169216151860011b1860011790611690565b3461075957602036600319011261075957602061111161110c61141e565b6114e7565b6040519015158152f35b346107595760603660031901126107595761113461141e565b61113c611434565b6044359061114a33846116d3565b926e22d473030f116ddee9f6b43ac78ba33314806111aa575b156111a2575f19935b60018501611180575b50610953935061170f565b84841161119557836109539503905584611175565b6313be252b5f526004601cfd5b83549361116c565b5060046111b68261144a565b5460581c1615611163565b34610759576020366003190112610759576111da61141e565b6111e26116ad565b600480546001600160a81b0319166001600160a01b0392909216919091179055005b34610759575f36600319011261075957602068a20d6e21d0e52553085460a01c604051908152f35b34610759575f366003190112610759576004546040516001600160a01b039091168152602090f35b34610759575f36600319011261075957602060ff60045460a01c166040519015158152f35b34610759576020366003190112610759576001600160a01b0361129a61141e565b165f526005602052602060405f2054604051908152f35b34610759576040366003190112610759576112ca61141e565b6001600160a01b038116906024359081906112fc906e22d473030f116ddee9f6b43ac78ba38514611330575b336116d3565b555f52337f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560205fa3602060405160018152f35b61134d61133c3361144a565b600460ff825460581c161790611690565b6112f6565b34610759575f366003190112610759575f60015461136f816114af565b8084529060018116908115610a145750600114611396576109b2836109a68185038261148c565b60015f9081527fb10e2d527612073b26eecdfd717e6a320cf44b4afac2b0732d9fcbe2b7fa0cf6939250905b8082106113da575090915081016020016109a6610996565b9192600181602092548385880101520191019092916113c2565b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b038216820361075957565b602435906001600160a01b038216820361075957565b6001600160a01b03165f90815268a20d6e21d0e52553136020526040902090565b6001600160a01b03165f90815268a20d6e21d0e52553106020526040902090565b601f909101601f19168101906001600160401b03821190821017610e0d57604052565b90600182811c921680156114dd575b60208310146114c957565b634e487b7160e01b5f52602260045260245ffd5b91607f16916114be565b906114f18261144a565b5460581c9160016002841615159316156115085750565b3b15159150565b60609060208152601a602082015279476c6f62616c20696e646578206f7574206f6620626f756e647360301b60408201520190565b811561154e570490565b634e487b7160e01b5f52601260045260245ffd5b9190820180921161067b57565b9068a20d6e21d0e52553085463ffffffff8160801c1683101561162e576115ba907f00000000000000000000000000000000000000000000000000000000000000009060a01c611544565b905f925f5b8381106115e35760405162461bcd60e51b8152806115df6004820161150f565b0390fd5b806001018060011161067b5763ffffffff6116008360011b6121af565b1661160f575b506001016115bf565b8286929614611625575060018091019490611606565b93505050915090565b60405162461bcd60e51b8152806115df6004820161150f565b906001600160a01b0381166e22d473030f116ddee9f6b43ac78ba314611675575b611671916116d3565b5490565b60046116808361144a565b5460581c166116685750505f1990565b805460ff60581b191660589290921b60ff60581b16919091179055565b5f546001600160a01b031633036116c057565b63118cdaa760e01b5f523360045260245ffd5b9060285260145268a20d6e21d0e525530f5f5260485f20905f602852565b9060285260145268a20d6e21d0e525530b5f5260485f20905f602852565b6004549092906001600160a01b038381169082161490816121a0575b50612191576001600160a01b03831615158061215b575b61210b576001600160a01b038216156107205761175e8361144a565b6117678361144a565b68a20d6e21d0e5255309546001600160a01b031615610713576040519161018083016001600160401b03811184821017610e0d576040525f83525f60208401525f60808401525f60a08401525f60c08401525f60e08401525f6101008401525f6101208401525f6101408401525f610160840152805463ffffffff8160801c16604085015263ffffffff835460801c1660608501528060a01c85116106c05761182060a082901c8690036001600160601b0316836122c3565b825460a01c85019061183b6001600160601b038316856122c3565b611870604086015191877f00000000000000000000000000000000000000000000000000000000000000009160a01c03611544565b8082039111028452611881866114e7565b156120a3575b50611e9e565b68a20d6e21d0e52553085463ffffffff60208501518551928382848360801c1601038060808901528360801b9060801b16908360801b191617928368a20d6e21d0e52553085501916040519260c060a085019180835260051b850101604052836040015260c0830183528261016087015260601c166101208501528351611d7e575b505060208201516119f4575b50610140810151806119b0575b5061016001518061195e575b505f9081526001600160a01b0391821692909116905f8051602061246e83398151915290602090a3565b600160206040828060a01b0368a20d6e21d0e5255309541693015192603f19840193849163263c69d6835283601f198301525f825160051b6044019260231901915af19151141615610759575f611934565b600160205f9281838060a01b0368a20d6e21d0e5255309541691015190815160051b60840190607f19830195869360631901915af19151141615610759575f611928565b9194610160829492015160208360601b910152611a108261146b565b9463ffffffff611a20848661232a565b1660e086015268a20d6e21d0e5255308549263ffffffff611a647f00000000000000000000000000000000000000000000000000000000000000008660a01c611544565b9460201c168481119081150217610100870152611a9960608701519563ffffffff602089015188018060c08b015216906122e6565b63ffffffff68a20d6e21d0e52553085460401c169760015b15611d1f575b6101208701515f9063ffffffff8b8116911614611b6d57611b6863ffffffff60018c01169a60e0641fffffffe0631fffffff8360031c1668a20d6e21d0e525531160601b01549260051b16161c63ffffffff165b8060081c685106b710e87292a98760611b0160018260ff161b8019825416179055611b3d63ffffffff82168a8d61221d565b611b5d63ffffffff60e08c01511663ffffffff60018c019b1690836123ba565b6101608a0151612417565b611ab1565b949798939291906101008801515b63ffffffff611b8f5f19830160011b6121af565b1615611cfb575f19906001810160081c685106b710e87292a98760611b018054196001830160ff1690811c901b8015611c83575b80611bd9575b5050508981119081150217611b7b565b600180939450811901167e1f0d1e100c1d070f090b19131c1706010e11080a1a141802121b1503160405601f6101e07a1412563212c14164235266736f7425221143267a4524367526767760fc7b2aaaaaaaba69a69a6db6db6db2cb2cb2ce739ce73def7bdeffffffff860260f81c161b60f71c1692831c63d76453e004161a179082685106b710e87292a98760611b03190160081b17910181108a8211175f03175f8080611bc9565b506001909c9895929c9a9794919a9693965b01805419685106b710e87292a98760611b60088e901c0182118117611cbd5750600190611c95565b9c9295989c9a9194979a969396808d60081c685106b710e87292a98760611b018311611cea575b50611bc3565b508c1960ff1690811b901c80611ce4565b611b68909a999691929394959a6001810188811190811502176101008b0152611b0b565b60c08701518603611ab757945094925094509468a20d6e21d0e52553085463ffffffff60201b61010084015160201b169163ffffffff60401b9060401b1690600160201b600160601b031916171768a20d6e21d0e5255308555f61191b565b602060018860609a9699959a989497981b17910152611d9c8261146b565b94611dbc60408801519563ffffffff895188038060a08c015216906122e6565b60015b15611e85575b5f945f190194611dd586886121d3565b63ffffffff8116905f1982018060021c685106b710e87292a98960611b019060c082549160061b1681811c60018060401b0316901b189055611e1c826101608c0151612417565b600160ff62ffffff8360081c16685106b710e87292a98760611b0192161b198154169055611e49816123f9565b611e54575b50611dbf565b611e5d81612309565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611e4e565b60a08701518503611dc557935093509390945f8061190f565b9194604086979294970151948651976020880151898110818b18028a1899888b108b8a18028914612094578a8918898c10028918908190038a52900360208901526001600160a01b0383811690831614612072576040805163144027d3818301526001600160a01b03858116606080840191909152908516608083015260a08201528a8918898c1002891860c0820181815260059190911b820160e090810190935260208201529081018152610140890152611f598361146b565b95611f638361146b565b9763ffffffff611f73858461232a565b1660e08b015260608a01519a81811090821802188a019560015b1561202c575b878b611fd78163ffffffff808f8f90611fcb60e09284611fc25f9b5f19604087015101908160408801526121d3565b1698899161221d565b015116911690836123ba565b6101408c015160208151838152019052611ff0816123f9565b611ffb575b50611f8d565b61200481612309565b5f90815268a20d6e21d0e525530c6020526040812080546001600160a01b0319169055611ff5565b9960010199868b03611f935793989550939861205992975063ffffffff91965080606087015216836122e6565b61206d63ffffffff604085015116826122e6565b61188d565b949297868198959398979297109082180218606084015101606084015261188d565b5050949297509450949161188d565b6120e2906001600160a01b03888116908816146120f8575b7f000000000000000000000000000000000000000000000000000000000000000090611544565b606084015180820391110260208401525f611887565b60408501518551900360608601526120bb565b60405162461bcd60e51b815260206004820152602260248201527f5472616e73666572206578636565647320617661696c61626c652062616c616e604482015261636560f01b6064820152608490fd5b506121658361144a565b5460a01c81810390811161067b576001600160a01b0384165f9081526005602052604090205411611742565b632e13674560e01b5f5260045ffd5b60ff915060a01c16155f61172b565b60e08160031c685106b710e87292a98960611b01549160051b161c63ffffffff1690565b60e0908260031c9060601b01549160051b161c63ffffffff1690565b9060e08260031c685106b710e87292a98960611b019260051b1682549182821c1863ffffffff16901b189055565b60e0909291928360031c9060601b019260051b1682549182821c1863ffffffff16901b189055565b63ffffffff165f5268a20d6e21d0e525530a60205260405f2090565b6001600160a01b03906122859061027b90600160201b8110025f190160011b6121af565b541690565b6001600160a01b0361229b82612261565b161561035e575f90815268a20d6e21d0e525530c60205260409020546001600160a01b031690565b80546001600160a01b031660a09290921b6001600160a01b031916919091179055565b805463ffffffff60801b191660809290921b63ffffffff60801b16919091179055565b60018160081c68a20d6e21d0e525530d60601b019160ff161b198154169055565b805460601c63ffffffff1692918315612341575050565b68a20d6e21d0e5255308805463ffffffff19811663ffffffff918216600101918216908117909255835463ffffffff60601b191660609190911b63ffffffff60601b1617909255909250829061239682612245565b80546001600160a01b0319166001600160a01b039092169190911790551561075957565b5f1901908160021c685106b710e87292a98960611b019260c084549360061b169163ffffffff169060201b1782821c1860018060401b0316901b189055565b8060081c68a20d6e21d0e525530d60601b01549060ff161c60011690565b9060209082519060081b8284015117815201905256fec2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081a000a608034607857601f610d4138819003918201601f19168301916001600160401b03831184841017607c57808492602094604052833981010312607857516001600160a01b03811690819003607857683602298b8c10b0123180546001600160a01b031916919091179055604051610cb090816100918239f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60808060405260043610156101c5575b5036156101ba575f3560e01c63263c69d681146101405763144027d381146100cf57630f4599e51461004857633c10b94e5f526004601cfd5b683602298b8c10b01231546001600160a01b0316806100ab575b50683602298b8c10b01230546001600160a01b03811661009e576001600160a01b0319163317683602298b8c10b012305560015f908152602090f35b63bf656a465f526004601cfd5b6004356001600160a01b0316036100c2575f610062565b63c59ec47a5f526004601cfd5b683602298b8c10b01230546001600160a01b03163303610133576004356024359060443591602483810193600481013560051b0101925b8381036101165760015f5260205ff35b803582845f80516020610c848339815191525f80a4602001610106565b63363cb3125f526004601cfd5b683602298b8c10b01230546001600160a01b0316330361013357600435602481810191600481013560051b0101905b81810361017f5760015f5260205ff35b8035600881901c6001600160581b03169060018116801560609290921c91820291025f80516020610c848339815191525f80a460200161016f565b346101c157005b5f80fd5b5f3560e01c90816301ffc9a714610aa85750806306fdde0314610a3d578063081812fc146109e6578063095ea7b31461096457806318160ddd1461091857806323b872dd1461090457806324359879146108ad5780632f745c591461083c57806342842e0e146107c95780634f6ccce7146107325780636352211e146107035780636cef16e61461063757806370a08231146105da5780638da5cb5b146105aa57806395d89b411461053f57806397e5311c14610513578063a22cb46514610487578063b88d4fde1461039d578063c87b56dd146103215763e985e9c5146102ad575f61000f565b346101c15760403660031901126101c1576102c6610b1c565b60205f6044601c6102d5610b32565b6102dd610c25565b604080516362fb246d87526001600160a01b039889168852979092169091525afa601f3d1116156103195760405260205f516040519015158152f35b3d5f823e3d90fd5b346101c15760203660031901126101c15760043561033e81610c4f565b505f806024601c61034d610c25565b6040519563cb30b46085526020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b0390f35b60803660031901126101c1576103b1610b1c565b6103b9610b32565b60443591606435916001600160401b0383116101c157366023840112156101c1576004830135926001600160401b0384116101c15736602485830101116101c157610405858385610b82565b813b61040d57005b83602094602460a49360405198899763150b7a028952338a8a015260018060a01b0316604089015260608801526080808801528260a08801520160c086013701905f601c8401915af115610479575b5163757a42ff60e11b0161046c57005b63d1a57ed65f526004601cfd5b3d1561045c573d5f823e3d90fd5b346101c15760403660031901126101c1576104a0610b1c565b6024358015158091036101c15760205f6064601c826104bd610c25565b9660018060a01b0316966040519663f6916ddd8352888752604052336060525af160015f511416156103195750337f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3160206040a3005b346101c1575f3660031901126101c157602061052d610c25565b6040516001600160a01b039091168152f35b346101c1575f3660031901126101c157610557610c25565b5f806024601c604051946395d89b418452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c1575f3660031901126101c157683602298b8c10b01232546040516001600160a01b039091168152602090f35b346101c15760203660031901126101c1576001600160a01b036105fb610b1c565b1660205f6044601c61060b610c25565b6040519563f5b100ea85528552836040525afa601f3d1116156103195760405260205f51604051908152f35b346101c1575f3660031901126101c15761064f610c25565b683602298b8c10b012325460205f6004601c60018060a01b03851695638da5cb5b84525afa9081601f3d1116600c5160601c0291156106ec575b506001600160a01b0316908181036106a7575b602060405160018152f35b683602298b8c10b0123280546001600160a01b031916831790557f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05f80a3808061069c565b60601b6001600160601b0319166101c15782610689565b346101c15760203660031901126101c15760206001600160a01b03610729600435610c4f565b16604051908152f35b346101c15760203660031901126101c157602460206001600160a01b03610757610c25565b1660405192838092634f6ccce760e01b825260043560048301525afa80156107be575f9061078b575b602090604051908152f35b506020813d6020116107b6575b816107a560209383610bee565b810103126101c15760209051610780565b3d9150610798565b6040513d5f823e3d90fd5b6107d236610b48565b916107de838383610b82565b813b6107e657005b60a460209260405194859363150b7a028552338686015260018060a01b0316604085015260608401526080808401525f60a08401525f3681375f601c8401915af115610479575163757a42ff60e11b0161046c57005b346101c15760403660031901126101c157610855610b1c565b60206001600160a01b03610867610c25565b604051632f745c5960e01b81526001600160a01b039094166004850152602480359085015283916044918391165afa80156107be575f9061078b57602090604051908152f35b346101c15760203660031901126101c1576108c6610c25565b60205f6044601c6040519463c016aa5284526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b61091661091036610b48565b91610b82565b005b346101c1575f3660031901126101c157610930610c25565b60205f6044601c6040519463e2c792818452838552836040525afa601f3d1116156103195760405260205f51604051908152f35b60403660031901126101c157610978610b1c565b60243590610984610c25565b9060018060a01b03169060205f6064601c6040519463d10b6e0c8452868552876040523360605234905af1601f3d1116156103195750600c5160601c7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9255f80a4005b346101c15760203660031901126101c1576109ff610c25565b60205f6044601c604051946327ef549584526004358552836040525afa601f3d1116156103195760408190525f516001600160a01b03168152602090f35b346101c1575f3660031901126101c157610a55610c25565b5f806024601c604051946306fdde038452836020525afa15610319576103999060205f803e60205f51823e805160205f5101602083013e6040815182015f60208201520160405260405191829182610af2565b346101c15760203660031901126101c157600435906001600160e01b0319821682036101c15760209160e01c635b5e139f8114906301ffc9a76380ac58cd82149114171715158152f35b602060409281835280519182918282860152018484015e5f828201840152601f01601f1916010190565b600435906001600160a01b03821682036101c157565b602435906001600160a01b03821682036101c157565b60609060031901126101c1576004356001600160a01b03811681036101c157906024356001600160a01b03811681036101c1579060443590565b9060846020610b8f610c25565b6040805163e5eb36c881526001600160a01b03968716848201819052959096169086018190526060860187905233608087015294928391601c83019034905af16001825114161561031957505f80516020610c848339815191525f80a4565b601f909101601f19168101906001600160401b03821190821017610c1157604052565b634e487b7160e01b5f52604160045260245ffd5b683602298b8c10b01230546001600160a01b0316908115610c4257565b635b2a47ae5f526004601cfd5b60205f6044601c610c5e610c25565b60405195632d8a746e85528552836040525afa601f3d111615610319576040525f519056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa164736f6c634300081a000a";
@@ -1396,19 +1425,6 @@ var derc2080_default = "0x6101c0604052346100ab5761002761001561023e565b9897909796
1396
1425
  var stateView_default = "0x60a03460b257601f610b8338819003918201601f19168301916001600160401b0383118484101760b65780849260209460405283398101031260b257516001600160a01b038116810360b257608052604051610ab890816100cb823960805181818160e1015281816101b701528181610217015281816102ba0152818161034a015281816103f50152818161045b015281816104a2015281816104e90152818161054c0152818161060701526107170152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffdfe60806040526004361015610011575f80fd5b5f3560e01c80631c7ccb4c146106a357806353e9c1fb146105de5780637c40f1fe1461050d5780638a2bb9e6146104c657806397fd7b421461048b5780639ec538c814610440578063c815641c146103d5578063caedab5414610309578063dacf1d2f14610246578063dc4c90d314610202578063f0928f29146101835763fa6793d51461009d575f80fd5b34610158576020366003190112610158576100b9600435610a1c565b6003810180911161016f57604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f9061012d575b6040516001600160801b039091168152602090f35b506020813d60201161015c575b81610147602093836107c2565b810103126101585760209051610118565b5f80fd5b3d915061013a565b6040513d5f823e3d90fd5b634e487b7160e01b5f52601160045260245ffd5b346101585761019a610194366107ac565b90610a78565b604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f9061012d576040516001600160801b039091168152602090f35b34610158575f366003190112610158576040517f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03168152602090f35b346101585760a0366003190112610158576024356001600160a01b03811681036101585761027261079c565b6064358060020b810361015857610305926102de926040519260843560268501526006840152600383015281525f603a600c83012091816040820152816020820152526004357f00000000000000000000000000000000000000000000000000000000000000006108fb565b604080516001600160801b0390941684526020840192909252908201529081906060820190565b0390f35b346101585760403660031901126101585761032d61032561078c565b600435610a42565b604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f906103a2575b604080516001600160801b038316815260809290921d600f0b602083015290f35b506020813d6020116103cd575b816103bc602093836107c2565b810103126101585760409051610381565b3d91506103af565b3461015857602036600319011261015857608062ffffff806104196004357f000000000000000000000000000000000000000000000000000000000000000061097d565b9294916040519560018060a01b0316865260020b6020860152166040840152166060820152f35b3461015857602036600319011261015857604061047f6004357f0000000000000000000000000000000000000000000000000000000000000000610972565b82519182526020820152f35b34610158576103056102de61049f366107ac565b907f00000000000000000000000000000000000000000000000000000000000000006108fb565b3461015857604036600319011261015857604061047f6104e461078c565b6004357f000000000000000000000000000000000000000000000000000000000000000061087c565b346101585760403660031901126101585761052961032561078c565b604051631afeb18d60e11b81526004810191909152600360248201525f816044817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164576080915f916105bc575b50602081015190606060408201519101519060405192600180861b0381168452841d600f0b602084015260408301526060820152f35b6105d891503d805f833e6105d081836107c2565b8101906107f9565b82610586565b346101585760603660031901126101585760406004356105fc61078c565b9061060561079c565b7f0000000000000000000000000000000000000000000000000000000000000000906106318383610972565b9061063d86868661087c565b96909361065661064e82898961087c565b98909761097d565b5050905060020b9160020b82125f1461067c575050505003910382519182526020820152f35b95969593949360020b1361069457505003910361047f565b9493929094030392030361047f565b34610158576040366003190112610158576024358060010b809103610158576106cd600435610a1c565b6005810180911161016f5760405190602082019283526040820152604081526106f76060826107c2565b519020604051631e2eaeaf60e01b815260048101919091526020816024817f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03165afa8015610164575f90610759575b602090604051908152f35b506020813d602011610784575b81610773602093836107c2565b81010312610158576020905161074e565b3d9150610766565b602435908160020b820361015857565b604435908160020b820361015857565b6040906003190112610158576004359060243590565b601f909101601f19168101906001600160401b038211908210176107e557604052565b634e487b7160e01b5f52604160045260245ffd5b602081830312610158578051906001600160401b03821161015857019080601f83011215610158578151916001600160401b0383116107e5578260051b906040519361084860208401866107c2565b845260208085019282010192831161015857602001905b82821061086c5750505090565b815181526020918201910161085f565b929161088791610a42565b6001810180911161016f57604051631afeb18d60e11b8152600481019190915260026024820152915f90839060449082906001600160a01b03165afa918215610164575f926108df575b506040602083015192015190565b6108f49192503d805f833e6105d081836107c2565b905f6108d1565b91610907905f92610a78565b604051631afeb18d60e11b815260048101919091526003602482015291829060449082906001600160a01b03165afa908115610164575f91610958575b506020810151916060604083015192015190565b61096c91503d805f833e6105d081836107c2565b5f610944565b919061088790610a1c565b919061098a602091610a1c565b604051631e2eaeaf60e01b8152600481019190915292839060249082906001600160a01b03165afa918215610164575f926109e8575b506001600160a01b0382169160a081901c60020b9162ffffff60b883901c81169260d01c1690565b9091506020813d602011610a14575b81610a04602093836107c2565b810103126101585751905f6109c0565b3d91506109f7565b604051602081019182526006604082015260408152610a3c6060826107c2565b51902090565b610a4b90610a1c565b6004810180911161016f5760405190602082019260020b8352604082015260408152610a3c6060826107c2565b610a8190610a1c565b6006810180911161016f576040519060208201928352604082015260408152610a3c6060826107c256fea164736f6c634300081a000a";
1397
1426
 
1398
1427
  // src/evm/abis/index.ts
1399
- var topUpDistributorAbi = [
1400
- {
1401
- type: "function",
1402
- name: "topUp",
1403
- inputs: [
1404
- { name: "asset", type: "address", internalType: "address" },
1405
- { name: "numeraire", type: "address", internalType: "address" },
1406
- { name: "amount", type: "uint256", internalType: "uint256" }
1407
- ],
1408
- outputs: [],
1409
- stateMutability: "payable"
1410
- }
1411
- ];
1412
1428
  var airlockAbi = [
1413
1429
  {
1414
1430
  type: "constructor",
@@ -2598,6 +2614,25 @@ var dopplerERC20V1Abi = [
2598
2614
  ],
2599
2615
  stateMutability: "view"
2600
2616
  },
2617
+ {
2618
+ type: "function",
2619
+ name: "getPastTotalSupply",
2620
+ inputs: [
2621
+ {
2622
+ name: "timepoint",
2623
+ type: "uint256",
2624
+ internalType: "uint256"
2625
+ }
2626
+ ],
2627
+ outputs: [
2628
+ {
2629
+ name: "",
2630
+ type: "uint256",
2631
+ internalType: "uint256"
2632
+ }
2633
+ ],
2634
+ stateMutability: "view"
2635
+ },
2601
2636
  {
2602
2637
  type: "function",
2603
2638
  name: "getPastVotesTotalSupply",
@@ -3080,6 +3115,25 @@ var dopplerERC20V1Abi = [
3080
3115
  ],
3081
3116
  stateMutability: "view"
3082
3117
  },
3118
+ {
3119
+ type: "function",
3120
+ name: "totalUnreleasedOf",
3121
+ inputs: [
3122
+ {
3123
+ name: "beneficiary",
3124
+ type: "address",
3125
+ internalType: "address"
3126
+ }
3127
+ ],
3128
+ outputs: [
3129
+ {
3130
+ name: "",
3131
+ type: "uint256",
3132
+ internalType: "uint256"
3133
+ }
3134
+ ],
3135
+ stateMutability: "view"
3136
+ },
3083
3137
  {
3084
3138
  type: "function",
3085
3139
  name: "totalSupply",
@@ -5456,27 +5510,7 @@ var streamableFeesLockerAbi = [
5456
5510
  { name: "recipient", type: "address", internalType: "address" },
5457
5511
  { name: "startDate", type: "uint32", internalType: "uint32" },
5458
5512
  { name: "lockDuration", type: "uint32", internalType: "uint32" },
5459
- { name: "isUnlocked", type: "bool", internalType: "bool" },
5460
- {
5461
- name: "beneficiaries",
5462
- type: "tuple[]",
5463
- internalType: "struct BeneficiaryData[]",
5464
- components: [
5465
- { name: "beneficiary", type: "address", internalType: "address" },
5466
- { name: "shares", type: "uint96", internalType: "uint96" }
5467
- ]
5468
- },
5469
- {
5470
- name: "positions",
5471
- type: "tuple[]",
5472
- internalType: "struct Position[]",
5473
- components: [
5474
- { name: "tickLower", type: "int24", internalType: "int24" },
5475
- { name: "tickUpper", type: "int24", internalType: "int24" },
5476
- { name: "liquidity", type: "uint128", internalType: "uint128" },
5477
- { name: "salt", type: "bytes32", internalType: "bytes32" }
5478
- ]
5479
- }
5513
+ { name: "isUnlocked", type: "bool", internalType: "bool" }
5480
5514
  ],
5481
5515
  stateMutability: "view"
5482
5516
  },
@@ -5491,10 +5525,154 @@ var streamableFeesLockerV2Abi = [
5491
5525
  {
5492
5526
  type: "function",
5493
5527
  name: "approvedMigrators",
5494
- stateMutability: "view",
5495
- inputs: [{ name: "migrator", type: "address" }],
5496
- outputs: [{ name: "approved", type: "bool" }]
5497
- }
5528
+ inputs: [{ name: "migrator", type: "address", internalType: "address" }],
5529
+ outputs: [{ name: "approved", type: "bool", internalType: "bool" }],
5530
+ stateMutability: "view"
5531
+ },
5532
+ {
5533
+ type: "function",
5534
+ name: "collectFees",
5535
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
5536
+ outputs: [
5537
+ { name: "fees0", type: "uint128", internalType: "uint128" },
5538
+ { name: "fees1", type: "uint128", internalType: "uint128" }
5539
+ ],
5540
+ stateMutability: "nonpayable"
5541
+ },
5542
+ {
5543
+ type: "function",
5544
+ name: "getCumulatedFees0",
5545
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
5546
+ outputs: [
5547
+ { name: "cumulatedFees0", type: "uint256", internalType: "uint256" }
5548
+ ],
5549
+ stateMutability: "view"
5550
+ },
5551
+ {
5552
+ type: "function",
5553
+ name: "getCumulatedFees1",
5554
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
5555
+ outputs: [
5556
+ { name: "cumulatedFees1", type: "uint256", internalType: "uint256" }
5557
+ ],
5558
+ stateMutability: "view"
5559
+ },
5560
+ {
5561
+ type: "function",
5562
+ name: "getPoolKey",
5563
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
5564
+ outputs: [
5565
+ { name: "currency0", type: "address", internalType: "Currency" },
5566
+ { name: "currency1", type: "address", internalType: "Currency" },
5567
+ { name: "fee", type: "uint24", internalType: "uint24" },
5568
+ { name: "tickSpacing", type: "int24", internalType: "int24" },
5569
+ { name: "hooks", type: "address", internalType: "contract IHooks" }
5570
+ ],
5571
+ stateMutability: "view"
5572
+ },
5573
+ {
5574
+ type: "function",
5575
+ name: "getShares",
5576
+ inputs: [
5577
+ { name: "poolId", type: "bytes32", internalType: "PoolId" },
5578
+ { name: "beneficiary", type: "address", internalType: "address" }
5579
+ ],
5580
+ outputs: [{ name: "shares", type: "uint256", internalType: "uint256" }],
5581
+ stateMutability: "view"
5582
+ },
5583
+ {
5584
+ type: "function",
5585
+ name: "streams",
5586
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
5587
+ outputs: [
5588
+ {
5589
+ name: "poolKey",
5590
+ type: "tuple",
5591
+ internalType: "struct PoolKey",
5592
+ components: [
5593
+ { name: "currency0", type: "address", internalType: "Currency" },
5594
+ { name: "currency1", type: "address", internalType: "Currency" },
5595
+ { name: "fee", type: "uint24", internalType: "uint24" },
5596
+ { name: "tickSpacing", type: "int24", internalType: "int24" },
5597
+ {
5598
+ name: "hooks",
5599
+ type: "address",
5600
+ internalType: "contract IHooks"
5601
+ }
5602
+ ]
5603
+ },
5604
+ { name: "recipient", type: "address", internalType: "address" },
5605
+ { name: "startDate", type: "uint32", internalType: "uint32" },
5606
+ { name: "lockDuration", type: "uint32", internalType: "uint32" },
5607
+ { name: "isUnlocked", type: "bool", internalType: "bool" }
5608
+ ],
5609
+ stateMutability: "view"
5610
+ },
5611
+ {
5612
+ type: "function",
5613
+ name: "unlock",
5614
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
5615
+ outputs: [],
5616
+ stateMutability: "nonpayable"
5617
+ },
5618
+ {
5619
+ type: "function",
5620
+ name: "updateBeneficiary",
5621
+ inputs: [
5622
+ { name: "poolId", type: "bytes32", internalType: "PoolId" },
5623
+ { name: "newBeneficiary", type: "address", internalType: "address" }
5624
+ ],
5625
+ outputs: [],
5626
+ stateMutability: "nonpayable"
5627
+ },
5628
+ {
5629
+ type: "event",
5630
+ name: "Collect",
5631
+ inputs: [
5632
+ {
5633
+ name: "poolId",
5634
+ type: "bytes32",
5635
+ indexed: true,
5636
+ internalType: "PoolId"
5637
+ },
5638
+ {
5639
+ name: "fees0",
5640
+ type: "uint256",
5641
+ indexed: false,
5642
+ internalType: "uint256"
5643
+ },
5644
+ {
5645
+ name: "fees1",
5646
+ type: "uint256",
5647
+ indexed: false,
5648
+ internalType: "uint256"
5649
+ }
5650
+ ],
5651
+ anonymous: false
5652
+ },
5653
+ {
5654
+ type: "event",
5655
+ name: "Unlock",
5656
+ inputs: [
5657
+ {
5658
+ name: "poolId",
5659
+ type: "bytes32",
5660
+ indexed: true,
5661
+ internalType: "PoolId"
5662
+ },
5663
+ {
5664
+ name: "recipient",
5665
+ type: "address",
5666
+ indexed: false,
5667
+ internalType: "address"
5668
+ }
5669
+ ],
5670
+ anonymous: false
5671
+ },
5672
+ { type: "error", name: "CallerNotRecipient", inputs: [] },
5673
+ { type: "error", name: "LockNotExpired", inputs: [] },
5674
+ { type: "error", name: "StreamAlreadyUnlocked", inputs: [] },
5675
+ { type: "error", name: "StreamNotFound", inputs: [] }
5498
5676
  ];
5499
5677
  var v4MulticurveMigratorAbi = [
5500
5678
  {
@@ -6115,31 +6293,91 @@ var rehypeDopplerHookInitializerAbi = [
6115
6293
  },
6116
6294
  {
6117
6295
  type: "function",
6118
- name: "getHookFees",
6296
+ name: "getIntegratorFeeShare",
6119
6297
  inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6120
- outputs: [
6121
- { name: "fees0", type: "uint128", internalType: "uint128" },
6122
- { name: "fees1", type: "uint128", internalType: "uint128" },
6123
- { name: "beneficiaryFees0", type: "uint128", internalType: "uint128" },
6124
- { name: "beneficiaryFees1", type: "uint128", internalType: "uint128" },
6125
- { name: "airlockOwnerFees0", type: "uint128", internalType: "uint128" },
6126
- { name: "airlockOwnerFees1", type: "uint128", internalType: "uint128" },
6127
- { name: "customFee", type: "uint24", internalType: "uint24" }
6128
- ],
6298
+ outputs: [{ name: "", type: "uint24", internalType: "uint24" }],
6129
6299
  stateMutability: "view"
6130
6300
  },
6131
6301
  {
6132
6302
  type: "function",
6133
- name: "getPoolInfo",
6303
+ name: "getIntegratorRoutingConfig",
6134
6304
  inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6135
6305
  outputs: [
6136
- { name: "asset", type: "address", internalType: "address" },
6137
- { name: "numeraire", type: "address", internalType: "address" },
6138
- { name: "buybackDst", type: "address", internalType: "address" }
6139
- ],
6140
- stateMutability: "view"
6141
- },
6142
- {
6306
+ { name: "integrator", type: "address", internalType: "address" },
6307
+ {
6308
+ name: "assetFeesToNumeraireRatio",
6309
+ type: "uint32",
6310
+ internalType: "uint32"
6311
+ },
6312
+ {
6313
+ name: "numeraireFeesToAssetRatio",
6314
+ type: "uint32",
6315
+ internalType: "uint32"
6316
+ },
6317
+ { name: "automaticPayout", type: "bool", internalType: "bool" }
6318
+ ],
6319
+ stateMutability: "view"
6320
+ },
6321
+ {
6322
+ type: "function",
6323
+ name: "getPendingIntegratorFees",
6324
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6325
+ outputs: [
6326
+ { name: "fees0", type: "uint128", internalType: "uint128" },
6327
+ { name: "fees1", type: "uint128", internalType: "uint128" }
6328
+ ],
6329
+ stateMutability: "view"
6330
+ },
6331
+ {
6332
+ type: "function",
6333
+ name: "getClaimableIntegratorFees",
6334
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6335
+ outputs: [
6336
+ { name: "fees0", type: "uint128", internalType: "uint128" },
6337
+ { name: "fees1", type: "uint128", internalType: "uint128" }
6338
+ ],
6339
+ stateMutability: "view"
6340
+ },
6341
+ {
6342
+ type: "function",
6343
+ name: "claimIntegratorFees",
6344
+ inputs: [
6345
+ { name: "asset", type: "address", internalType: "address" },
6346
+ { name: "to", type: "address", internalType: "address" }
6347
+ ],
6348
+ outputs: [
6349
+ { name: "fees0", type: "uint128", internalType: "uint128" },
6350
+ { name: "fees1", type: "uint128", internalType: "uint128" }
6351
+ ],
6352
+ stateMutability: "nonpayable"
6353
+ },
6354
+ {
6355
+ type: "function",
6356
+ name: "getHookFees",
6357
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6358
+ outputs: [
6359
+ { name: "fees0", type: "uint128", internalType: "uint128" },
6360
+ { name: "fees1", type: "uint128", internalType: "uint128" },
6361
+ { name: "beneficiaryFees0", type: "uint128", internalType: "uint128" },
6362
+ { name: "beneficiaryFees1", type: "uint128", internalType: "uint128" },
6363
+ { name: "airlockOwnerFees0", type: "uint128", internalType: "uint128" },
6364
+ { name: "airlockOwnerFees1", type: "uint128", internalType: "uint128" },
6365
+ { name: "customFee", type: "uint24", internalType: "uint24" }
6366
+ ],
6367
+ stateMutability: "view"
6368
+ },
6369
+ {
6370
+ type: "function",
6371
+ name: "getPoolInfo",
6372
+ inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6373
+ outputs: [
6374
+ { name: "asset", type: "address", internalType: "address" },
6375
+ { name: "numeraire", type: "address", internalType: "address" },
6376
+ { name: "buybackDst", type: "address", internalType: "address" }
6377
+ ],
6378
+ stateMutability: "view"
6379
+ },
6380
+ {
6143
6381
  type: "function",
6144
6382
  name: "getPosition",
6145
6383
  inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
@@ -6288,6 +6526,170 @@ var rehypeDopplerHookInitializerAbi = [
6288
6526
  ],
6289
6527
  anonymous: false
6290
6528
  },
6529
+ {
6530
+ type: "event",
6531
+ name: "IntegratorAutomaticPayoutSet",
6532
+ inputs: [
6533
+ {
6534
+ name: "poolId",
6535
+ type: "bytes32",
6536
+ indexed: true,
6537
+ internalType: "PoolId"
6538
+ },
6539
+ {
6540
+ name: "automaticPayout",
6541
+ type: "bool",
6542
+ indexed: false,
6543
+ internalType: "bool"
6544
+ }
6545
+ ],
6546
+ anonymous: false
6547
+ },
6548
+ {
6549
+ type: "event",
6550
+ name: "IntegratorConversionRatiosSet",
6551
+ inputs: [
6552
+ {
6553
+ name: "poolId",
6554
+ type: "bytes32",
6555
+ indexed: true,
6556
+ internalType: "PoolId"
6557
+ },
6558
+ {
6559
+ name: "assetFeesToNumeraireRatio",
6560
+ type: "uint32",
6561
+ indexed: false,
6562
+ internalType: "uint32"
6563
+ },
6564
+ {
6565
+ name: "numeraireFeesToAssetRatio",
6566
+ type: "uint32",
6567
+ indexed: false,
6568
+ internalType: "uint32"
6569
+ }
6570
+ ],
6571
+ anonymous: false
6572
+ },
6573
+ {
6574
+ type: "event",
6575
+ name: "IntegratorFeeShareSet",
6576
+ inputs: [
6577
+ {
6578
+ name: "poolId",
6579
+ type: "bytes32",
6580
+ indexed: true,
6581
+ internalType: "PoolId"
6582
+ },
6583
+ {
6584
+ name: "feeShare",
6585
+ type: "uint24",
6586
+ indexed: false,
6587
+ internalType: "uint24"
6588
+ }
6589
+ ],
6590
+ anonymous: false
6591
+ },
6592
+ {
6593
+ type: "event",
6594
+ name: "IntegratorFeesClaimed",
6595
+ inputs: [
6596
+ {
6597
+ name: "poolId",
6598
+ type: "bytes32",
6599
+ indexed: true,
6600
+ internalType: "PoolId"
6601
+ },
6602
+ {
6603
+ name: "integrator",
6604
+ type: "address",
6605
+ indexed: true,
6606
+ internalType: "address"
6607
+ },
6608
+ {
6609
+ name: "to",
6610
+ type: "address",
6611
+ indexed: true,
6612
+ internalType: "address"
6613
+ },
6614
+ {
6615
+ name: "fees0",
6616
+ type: "uint128",
6617
+ indexed: false,
6618
+ internalType: "uint128"
6619
+ },
6620
+ {
6621
+ name: "fees1",
6622
+ type: "uint128",
6623
+ indexed: false,
6624
+ internalType: "uint128"
6625
+ }
6626
+ ],
6627
+ anonymous: false
6628
+ },
6629
+ {
6630
+ type: "event",
6631
+ name: "IntegratorSet",
6632
+ inputs: [
6633
+ {
6634
+ name: "poolId",
6635
+ type: "bytes32",
6636
+ indexed: true,
6637
+ internalType: "PoolId"
6638
+ },
6639
+ {
6640
+ name: "oldIntegrator",
6641
+ type: "address",
6642
+ indexed: true,
6643
+ internalType: "address"
6644
+ },
6645
+ {
6646
+ name: "newIntegrator",
6647
+ type: "address",
6648
+ indexed: true,
6649
+ internalType: "address"
6650
+ }
6651
+ ],
6652
+ anonymous: false
6653
+ },
6654
+ {
6655
+ type: "function",
6656
+ name: "setIntegratorConversionRatios",
6657
+ inputs: [
6658
+ { name: "poolId", type: "bytes32", internalType: "PoolId" },
6659
+ {
6660
+ name: "assetFeesToNumeraireRatio",
6661
+ type: "uint32",
6662
+ internalType: "uint32"
6663
+ },
6664
+ {
6665
+ name: "numeraireFeesToAssetRatio",
6666
+ type: "uint32",
6667
+ internalType: "uint32"
6668
+ }
6669
+ ],
6670
+ outputs: [],
6671
+ stateMutability: "nonpayable"
6672
+ },
6673
+ {
6674
+ type: "function",
6675
+ name: "setIntegratorAutomaticPayout",
6676
+ inputs: [
6677
+ { name: "poolId", type: "bytes32", internalType: "PoolId" },
6678
+ { name: "automaticPayout", type: "bool", internalType: "bool" }
6679
+ ],
6680
+ outputs: [],
6681
+ stateMutability: "nonpayable"
6682
+ },
6683
+ {
6684
+ type: "function",
6685
+ name: "setIntegrator",
6686
+ inputs: [
6687
+ { name: "poolId", type: "bytes32", internalType: "PoolId" },
6688
+ { name: "newIntegrator", type: "address", internalType: "address" }
6689
+ ],
6690
+ outputs: [],
6691
+ stateMutability: "nonpayable"
6692
+ },
6291
6693
  {
6292
6694
  type: "function",
6293
6695
  name: "setFeeDistribution",
@@ -6333,6 +6735,10 @@ var rehypeDopplerHookInitializerAbi = [
6333
6735
  outputs: [],
6334
6736
  stateMutability: "nonpayable"
6335
6737
  },
6738
+ { type: "error", name: "InvalidIntegrator", inputs: [] },
6739
+ { type: "error", name: "InvalidIntegratorClaimDestination", inputs: [] },
6740
+ { type: "error", name: "InvalidIntegratorConversionRatio", inputs: [] },
6741
+ { type: "error", name: "SenderNotIntegrator", inputs: [] },
6336
6742
  { type: "error", name: "FeeBeneficiariesNotConfigured", inputs: [] },
6337
6743
  {
6338
6744
  type: "error",
@@ -6384,184 +6790,173 @@ var rehypeDopplerHookInitializerAbi = [
6384
6790
  { type: "error", name: "UnorderedBeneficiaries", inputs: [] }
6385
6791
  ];
6386
6792
  var rehypeDopplerHookAbi = rehypeDopplerHookInitializerAbi;
6387
- var rehypeDopplerHookMigratorAbi = [
6793
+ var dopplerHookMigratorAbi = [
6388
6794
  {
6389
6795
  type: "function",
6390
- name: "MIGRATOR",
6391
- inputs: [],
6392
- outputs: [{ name: "", type: "address", internalType: "address" }],
6393
- stateMutability: "view"
6394
- },
6395
- {
6396
- type: "function",
6397
- name: "claimAirlockOwnerFees",
6398
- inputs: [{ name: "asset", type: "address", internalType: "address" }],
6399
- outputs: [
6400
- { name: "fees0", type: "uint128", internalType: "uint128" },
6401
- { name: "fees1", type: "uint128", internalType: "uint128" }
6796
+ name: "claimMigrationRefund",
6797
+ inputs: [
6798
+ { name: "poolId", type: "bytes32", internalType: "PoolId" },
6799
+ { name: "to", type: "address", internalType: "address" }
6402
6800
  ],
6801
+ outputs: [],
6403
6802
  stateMutability: "nonpayable"
6404
6803
  },
6405
6804
  {
6406
6805
  type: "function",
6407
- name: "collectFees",
6408
- inputs: [{ name: "asset", type: "address", internalType: "address" }],
6409
- outputs: [{ name: "fees", type: "int256", internalType: "BalanceDelta" }],
6410
- stateMutability: "nonpayable"
6411
- },
6412
- {
6413
- type: "function",
6414
- name: "getFeeDistributionInfo",
6415
- inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6806
+ name: "getAssetData",
6807
+ inputs: [
6808
+ { name: "token0", type: "address", internalType: "address" },
6809
+ { name: "token1", type: "address", internalType: "address" }
6810
+ ],
6416
6811
  outputs: [
6812
+ { name: "isToken0", type: "bool", internalType: "bool" },
6417
6813
  {
6418
- name: "assetFeesToAssetBuybackWad",
6419
- type: "uint256",
6420
- internalType: "uint256"
6421
- },
6422
- {
6423
- name: "assetFeesToNumeraireBuybackWad",
6424
- type: "uint256",
6425
- internalType: "uint256"
6426
- },
6427
- {
6428
- name: "assetFeesToBeneficiaryWad",
6429
- type: "uint256",
6430
- internalType: "uint256"
6431
- },
6432
- { name: "assetFeesToLpWad", type: "uint256", internalType: "uint256" },
6433
- {
6434
- name: "numeraireFeesToAssetBuybackWad",
6435
- type: "uint256",
6436
- internalType: "uint256"
6814
+ name: "poolKey",
6815
+ type: "tuple",
6816
+ internalType: "struct PoolKey",
6817
+ components: [
6818
+ { name: "currency0", type: "address", internalType: "Currency" },
6819
+ { name: "currency1", type: "address", internalType: "Currency" },
6820
+ { name: "fee", type: "uint24", internalType: "uint24" },
6821
+ { name: "tickSpacing", type: "int24", internalType: "int24" },
6822
+ {
6823
+ name: "hooks",
6824
+ type: "address",
6825
+ internalType: "contract IHooks"
6826
+ }
6827
+ ]
6437
6828
  },
6829
+ { name: "lockDuration", type: "uint32", internalType: "uint32" },
6438
6830
  {
6439
- name: "numeraireFeesToNumeraireBuybackWad",
6440
- type: "uint256",
6441
- internalType: "uint256"
6831
+ name: "feeOrInitialDynamicFee",
6832
+ type: "uint24",
6833
+ internalType: "uint24"
6442
6834
  },
6835
+ { name: "useDynamicFee", type: "bool", internalType: "bool" },
6836
+ { name: "dopplerHook", type: "address", internalType: "address" },
6443
6837
  {
6444
- name: "numeraireFeesToBeneficiaryWad",
6445
- type: "uint256",
6446
- internalType: "uint256"
6838
+ name: "onInitializationCalldata",
6839
+ type: "bytes",
6840
+ internalType: "bytes"
6447
6841
  },
6448
- {
6449
- name: "numeraireFeesToLpWad",
6450
- type: "uint256",
6451
- internalType: "uint256"
6452
- }
6453
- ],
6454
- stateMutability: "view"
6455
- },
6456
- {
6457
- type: "function",
6458
- name: "getFeeRoutingMode",
6459
- inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6460
- outputs: [{ name: "", type: "uint8", internalType: "enum FeeRoutingMode" }],
6461
- stateMutability: "view"
6462
- },
6463
- {
6464
- type: "function",
6465
- name: "getHookFees",
6466
- inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6467
- outputs: [
6468
- { name: "fees0", type: "uint128", internalType: "uint128" },
6469
- { name: "fees1", type: "uint128", internalType: "uint128" },
6470
- { name: "beneficiaryFees0", type: "uint128", internalType: "uint128" },
6471
- { name: "beneficiaryFees1", type: "uint128", internalType: "uint128" },
6472
- { name: "airlockOwnerFees0", type: "uint128", internalType: "uint128" },
6473
- { name: "airlockOwnerFees1", type: "uint128", internalType: "uint128" },
6474
- { name: "customFee", type: "uint24", internalType: "uint24" }
6842
+ { name: "status", type: "uint8", internalType: "enum PoolStatus" }
6475
6843
  ],
6476
6844
  stateMutability: "view"
6477
6845
  },
6478
6846
  {
6479
6847
  type: "function",
6480
- name: "getPoolInfo",
6848
+ name: "getMigrationRefund",
6481
6849
  inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6482
6850
  outputs: [
6483
- { name: "asset", type: "address", internalType: "address" },
6484
- { name: "numeraire", type: "address", internalType: "address" },
6485
- { name: "buybackDst", type: "address", internalType: "address" }
6851
+ { name: "recipient", type: "address", internalType: "address" },
6852
+ { name: "currency0", type: "address", internalType: "Currency" },
6853
+ { name: "currency1", type: "address", internalType: "Currency" },
6854
+ { name: "amount0", type: "uint256", internalType: "uint256" },
6855
+ { name: "amount1", type: "uint256", internalType: "uint256" }
6486
6856
  ],
6487
6857
  stateMutability: "view"
6488
6858
  },
6489
6859
  {
6490
6860
  type: "function",
6491
- name: "getPosition",
6492
- inputs: [{ name: "poolId", type: "bytes32", internalType: "PoolId" }],
6861
+ name: "getPair",
6862
+ inputs: [{ name: "asset", type: "address", internalType: "address" }],
6493
6863
  outputs: [
6494
- { name: "tickLower", type: "int24", internalType: "int24" },
6495
- { name: "tickUpper", type: "int24", internalType: "int24" },
6496
- { name: "liquidity", type: "uint128", internalType: "uint128" },
6497
- { name: "salt", type: "bytes32", internalType: "bytes32" }
6864
+ { name: "token0", type: "address", internalType: "address" },
6865
+ { name: "token1", type: "address", internalType: "address" }
6498
6866
  ],
6499
6867
  stateMutability: "view"
6500
- },
6501
- {
6502
- type: "function",
6503
- name: "poolManager",
6504
- inputs: [],
6505
- outputs: [
6506
- { name: "", type: "address", internalType: "contract IPoolManager" }
6507
- ],
6868
+ },
6869
+ {
6870
+ type: "function",
6871
+ name: "getTotalClaimableMigrationRefund",
6872
+ inputs: [{ name: "currency", type: "address", internalType: "Currency" }],
6873
+ outputs: [{ name: "amount", type: "uint256", internalType: "uint256" }],
6508
6874
  stateMutability: "view"
6509
6875
  },
6510
6876
  {
6511
6877
  type: "function",
6512
- name: "quoter",
6878
+ name: "locker",
6513
6879
  inputs: [],
6514
- outputs: [{ name: "", type: "address", internalType: "contract Quoter" }],
6880
+ outputs: [
6881
+ {
6882
+ name: "",
6883
+ type: "address",
6884
+ internalType: "contract StreamableFeesLockerV2"
6885
+ }
6886
+ ],
6515
6887
  stateMutability: "view"
6516
6888
  },
6517
6889
  {
6518
- type: "function",
6519
- name: "setFeeDistribution",
6890
+ type: "event",
6891
+ name: "MigrationRefundClaimed",
6520
6892
  inputs: [
6521
- { name: "poolId", type: "bytes32", internalType: "PoolId" },
6522
6893
  {
6523
- name: "assetFeesToAssetBuybackWad",
6524
- type: "uint256",
6525
- internalType: "uint256"
6894
+ name: "poolId",
6895
+ type: "bytes32",
6896
+ indexed: true,
6897
+ internalType: "PoolId"
6526
6898
  },
6527
6899
  {
6528
- name: "assetFeesToNumeraireBuybackWad",
6529
- type: "uint256",
6530
- internalType: "uint256"
6900
+ name: "recipient",
6901
+ type: "address",
6902
+ indexed: true,
6903
+ internalType: "address"
6531
6904
  },
6532
6905
  {
6533
- name: "assetFeesToBeneficiaryWad",
6534
- type: "uint256",
6535
- internalType: "uint256"
6906
+ name: "to",
6907
+ type: "address",
6908
+ indexed: true,
6909
+ internalType: "address"
6536
6910
  },
6537
- { name: "assetFeesToLpWad", type: "uint256", internalType: "uint256" },
6538
6911
  {
6539
- name: "numeraireFeesToAssetBuybackWad",
6912
+ name: "amount0",
6540
6913
  type: "uint256",
6914
+ indexed: false,
6541
6915
  internalType: "uint256"
6542
6916
  },
6543
6917
  {
6544
- name: "numeraireFeesToNumeraireBuybackWad",
6918
+ name: "amount1",
6545
6919
  type: "uint256",
6920
+ indexed: false,
6546
6921
  internalType: "uint256"
6922
+ }
6923
+ ],
6924
+ anonymous: false
6925
+ },
6926
+ {
6927
+ type: "event",
6928
+ name: "MigrationRefundRecorded",
6929
+ inputs: [
6930
+ {
6931
+ name: "poolId",
6932
+ type: "bytes32",
6933
+ indexed: true,
6934
+ internalType: "PoolId"
6547
6935
  },
6548
6936
  {
6549
- name: "numeraireFeesToBeneficiaryWad",
6937
+ name: "recipient",
6938
+ type: "address",
6939
+ indexed: true,
6940
+ internalType: "address"
6941
+ },
6942
+ {
6943
+ name: "amount0",
6550
6944
  type: "uint256",
6945
+ indexed: false,
6551
6946
  internalType: "uint256"
6552
6947
  },
6553
6948
  {
6554
- name: "numeraireFeesToLpWad",
6949
+ name: "amount1",
6555
6950
  type: "uint256",
6951
+ indexed: false,
6556
6952
  internalType: "uint256"
6557
6953
  }
6558
6954
  ],
6559
- outputs: [],
6560
- stateMutability: "nonpayable"
6955
+ anonymous: false
6561
6956
  },
6562
- { type: "error", name: "FeeDistributionMustAddUpToWAD", inputs: [] },
6563
- { type: "error", name: "SenderNotAirlockOwner", inputs: [] },
6564
- { type: "error", name: "SenderNotAuthorized", inputs: [] }
6957
+ { type: "error", name: "CallerNotRefundRecipient", inputs: [] },
6958
+ { type: "error", name: "InvalidRefundDestination", inputs: [] },
6959
+ { type: "error", name: "NoMigrationRefund", inputs: [] }
6565
6960
  ];
6566
6961
 
6567
6962
  // src/evm/utils/tokenAddressMiner.ts
@@ -7160,10 +7555,10 @@ function isNonEmpty(values) {
7160
7555
  // src/evm/types.ts
7161
7556
  var NO_OP_ENABLED_CHAIN_IDS = [
7162
7557
  CHAIN_IDS.MAINNET,
7163
- CHAIN_IDS.ETH_SEPOLIA,
7164
7558
  CHAIN_IDS.ARBITRUM,
7165
7559
  CHAIN_IDS.BASE,
7166
7560
  CHAIN_IDS.BASE_SEPOLIA,
7561
+ CHAIN_IDS.BSC,
7167
7562
  CHAIN_IDS.UNICHAIN,
7168
7563
  CHAIN_IDS.UNICHAIN_SEPOLIA,
7169
7564
  CHAIN_IDS.ROBINHOOD,
@@ -7178,6 +7573,7 @@ var LAUNCHPAD_ENABLED_CHAIN_IDS = [
7178
7573
  CHAIN_IDS.ARBITRUM,
7179
7574
  CHAIN_IDS.BASE,
7180
7575
  CHAIN_IDS.BASE_SEPOLIA,
7576
+ CHAIN_IDS.BSC,
7181
7577
  CHAIN_IDS.ROBINHOOD,
7182
7578
  CHAIN_IDS.MONAD_MAINNET
7183
7579
  ];
@@ -7264,7 +7660,9 @@ function validateFeeDistributionInfo(feeDistributionInfo) {
7264
7660
  }
7265
7661
 
7266
7662
  // src/evm/utils/rehypeDopplerHookInitializer.ts
7267
- function normalizeRehypeDopplerHookInitializerConfig(config, controllerOverride) {
7663
+ var MAX_REHYPE_INTEGRATOR_FEE_SHARE = 75e4;
7664
+ var REHYPE_INTEGRATOR_CONVERSION_RATIO_DENOMINATOR = 1e9;
7665
+ function normalizeRehypeDopplerHookInitializerConfig(config, controllerOverride, fallbackIntegrator) {
7268
7666
  assertNonZeroAddress(config.hookAddress, "Rehype hookAddress");
7269
7667
  if (config.buybackDestination !== void 0 && controllerOverride !== void 0) {
7270
7668
  throw new Error(
@@ -7282,6 +7680,10 @@ function normalizeRehypeDopplerHookInitializerConfig(config, controllerOverride)
7282
7680
  const feeDistributionInfo = resolveRehypeFeeDistributionInfo(config);
7283
7681
  const { startFee, endFee, durationSeconds, startingTime } = normalizeFeeSchedule(config);
7284
7682
  const feeRoutingMode = feeBeneficiaries !== void 0 ? normalizeBeneficiaryFeeRoutingMode(config.feeRoutingMode) : normalizeFeeRoutingMode(config.feeRoutingMode);
7683
+ const integratorFeeConfig = config.integratorFeeConfig === void 0 ? void 0 : normalizeIntegratorFeeConfig(
7684
+ config.integratorFeeConfig,
7685
+ fallbackIntegrator
7686
+ );
7285
7687
  const common = {
7286
7688
  hookAddress: config.hookAddress,
7287
7689
  startFee,
@@ -7289,6 +7691,7 @@ function normalizeRehypeDopplerHookInitializerConfig(config, controllerOverride)
7289
7691
  durationSeconds,
7290
7692
  startingTime,
7291
7693
  feeDistributionInfo,
7694
+ ...integratorFeeConfig === void 0 ? {} : { integratorFeeConfig },
7292
7695
  graduationCalldata: config.graduationCalldata,
7293
7696
  graduationMarketCap: config.graduationMarketCap,
7294
7697
  numerairePrice: config.numerairePrice,
@@ -7312,6 +7715,47 @@ function normalizeRehypeDopplerHookInitializerConfig(config, controllerOverride)
7312
7715
  feeRoutingMode
7313
7716
  };
7314
7717
  }
7718
+ function normalizeIntegratorFeeConfig(config, fallbackIntegrator) {
7719
+ const integrator = config.integrator ?? fallbackIntegrator;
7720
+ if (integrator === void 0) {
7721
+ throw new Error(
7722
+ "Rehype integratorFeeConfig requires integrator or withIntegrator"
7723
+ );
7724
+ }
7725
+ assertNonZeroAddress(integrator, "Rehype integratorFeeConfig.integrator");
7726
+ if (!Number.isInteger(config.feeShare) || config.feeShare <= 0 || config.feeShare > MAX_REHYPE_INTEGRATOR_FEE_SHARE) {
7727
+ throw new Error(
7728
+ "Rehype integrator feeShare must be an integer between 1 and 750000"
7729
+ );
7730
+ }
7731
+ const assetFeesToNumeraireRatio = config.assetFeesToNumeraireRatio ?? 0;
7732
+ const numeraireFeesToAssetRatio = config.numeraireFeesToAssetRatio ?? 0;
7733
+ assertIntegratorConversionRatio(
7734
+ assetFeesToNumeraireRatio,
7735
+ "Rehype integrator assetFeesToNumeraireRatio"
7736
+ );
7737
+ assertIntegratorConversionRatio(
7738
+ numeraireFeesToAssetRatio,
7739
+ "Rehype integrator numeraireFeesToAssetRatio"
7740
+ );
7741
+ if (config.automaticPayout !== void 0 && typeof config.automaticPayout !== "boolean") {
7742
+ throw new Error("Rehype integrator automaticPayout must be a boolean");
7743
+ }
7744
+ return {
7745
+ integrator,
7746
+ feeShare: config.feeShare,
7747
+ assetFeesToNumeraireRatio,
7748
+ numeraireFeesToAssetRatio,
7749
+ automaticPayout: config.automaticPayout ?? false
7750
+ };
7751
+ }
7752
+ function assertIntegratorConversionRatio(value, label) {
7753
+ if (!Number.isInteger(value) || value < 0 || value > REHYPE_INTEGRATOR_CONVERSION_RATIO_DENOMINATOR) {
7754
+ throw new Error(
7755
+ `${label} must be an integer between 0 and ${REHYPE_INTEGRATOR_CONVERSION_RATIO_DENOMINATOR}`
7756
+ );
7757
+ }
7758
+ }
7315
7759
  function assertNonZeroAddress(address, label) {
7316
7760
  if (!isAddress(address, { strict: false }) || address.toLowerCase() === ZERO_ADDRESS) {
7317
7761
  throw new Error(`${label} must be a non-zero address`);
@@ -7400,6 +7844,13 @@ function normalizeUint32(value, label) {
7400
7844
  }
7401
7845
  return normalized;
7402
7846
  }
7847
+ var DISABLED_REHYPE_INTEGRATOR_CONFIG = {
7848
+ integrator: ZERO_ADDRESS,
7849
+ feeShare: 0,
7850
+ assetFeesToNumeraireRatio: 0,
7851
+ numeraireFeesToAssetRatio: 0,
7852
+ automaticPayout: false
7853
+ };
7403
7854
  function encodeRehypeDopplerHookInitializerData(numeraire, config) {
7404
7855
  return encodeAbiParameters(rehypeInitializerDataAbi, [
7405
7856
  {
@@ -7411,7 +7862,8 @@ function encodeRehypeDopplerHookInitializerData(numeraire, config) {
7411
7862
  startingTime: config.startingTime,
7412
7863
  feeRoutingMode: config.feeRoutingMode,
7413
7864
  feeDistributionInfo: config.feeDistributionInfo,
7414
- feeBeneficiaries: config.feeBeneficiaries ?? []
7865
+ feeBeneficiaries: config.feeBeneficiaries ?? [],
7866
+ integratorConfig: config.integratorFeeConfig ?? DISABLED_REHYPE_INTEGRATOR_CONFIG
7415
7867
  }
7416
7868
  ]);
7417
7869
  }
@@ -7420,14 +7872,21 @@ var beneficiaryComponents = [
7420
7872
  { name: "shares", type: "uint96" }
7421
7873
  ];
7422
7874
  var feeDistributionComponents = [
7423
- { name: "assetFeesToAssetBuybackWad", type: "uint256" },
7424
- { name: "assetFeesToNumeraireBuybackWad", type: "uint256" },
7425
- { name: "assetFeesToBeneficiaryWad", type: "uint256" },
7426
- { name: "assetFeesToLpWad", type: "uint256" },
7427
- { name: "numeraireFeesToAssetBuybackWad", type: "uint256" },
7428
- { name: "numeraireFeesToNumeraireBuybackWad", type: "uint256" },
7429
- { name: "numeraireFeesToBeneficiaryWad", type: "uint256" },
7430
- { name: "numeraireFeesToLpWad", type: "uint256" }
7875
+ { name: "assetFeesToAssetBuybackWad", type: "uint64" },
7876
+ { name: "assetFeesToNumeraireBuybackWad", type: "uint64" },
7877
+ { name: "assetFeesToBeneficiaryWad", type: "uint64" },
7878
+ { name: "assetFeesToLpWad", type: "uint64" },
7879
+ { name: "numeraireFeesToAssetBuybackWad", type: "uint64" },
7880
+ { name: "numeraireFeesToNumeraireBuybackWad", type: "uint64" },
7881
+ { name: "numeraireFeesToBeneficiaryWad", type: "uint64" },
7882
+ { name: "numeraireFeesToLpWad", type: "uint64" }
7883
+ ];
7884
+ var integratorConfigComponents = [
7885
+ { name: "integrator", type: "address" },
7886
+ { name: "feeShare", type: "uint24" },
7887
+ { name: "assetFeesToNumeraireRatio", type: "uint32" },
7888
+ { name: "numeraireFeesToAssetRatio", type: "uint32" },
7889
+ { name: "automaticPayout", type: "bool" }
7431
7890
  ];
7432
7891
  var rehypeInitializerDataAbi = [
7433
7892
  {
@@ -7449,120 +7908,15 @@ var rehypeInitializerDataAbi = [
7449
7908
  name: "feeBeneficiaries",
7450
7909
  type: "tuple[]",
7451
7910
  components: beneficiaryComponents
7452
- }
7453
- ]
7454
- }
7455
- ];
7456
- function normalizeRehypeFeeRoutingMode(mode) {
7457
- if (mode === void 0 || mode === 0 /* DirectBuyback */) {
7458
- return 0 /* DirectBuyback */;
7459
- }
7460
- if (mode === 1 /* RouteToBeneficiaryFees */) {
7461
- return 1 /* RouteToBeneficiaryFees */;
7462
- }
7463
- if (mode === "directBuyback") {
7464
- return 0 /* DirectBuyback */;
7465
- }
7466
- if (mode === "routeToBeneficiaryFees") {
7467
- return 1 /* RouteToBeneficiaryFees */;
7468
- }
7469
- throw new Error(
7470
- "Rehype feeRoutingMode must be DirectBuyback/directBuyback or RouteToBeneficiaryFees/routeToBeneficiaryFees"
7471
- );
7472
- }
7473
- function resolveRehypeFeeDistributionInfo2(config) {
7474
- if (config.feeDistributionInfo) {
7475
- return config.feeDistributionInfo;
7476
- }
7477
- const assetBuyback = config.assetBuybackPercentWad;
7478
- const numeraireBuyback = config.numeraireBuybackPercentWad;
7479
- const beneficiary = config.beneficiaryPercentWad;
7480
- const lp = config.lpPercentWad;
7481
- if (assetBuyback === void 0 || numeraireBuyback === void 0 || beneficiary === void 0 || lp === void 0) {
7482
- throw new Error(
7483
- "Rehype feeDistributionInfo is required, or provide all deprecated legacy percentages."
7484
- );
7485
- }
7486
- return {
7487
- assetFeesToAssetBuybackWad: assetBuyback,
7488
- assetFeesToNumeraireBuybackWad: numeraireBuyback,
7489
- assetFeesToBeneficiaryWad: beneficiary,
7490
- assetFeesToLpWad: lp,
7491
- numeraireFeesToAssetBuybackWad: assetBuyback,
7492
- numeraireFeesToNumeraireBuybackWad: numeraireBuyback,
7493
- numeraireFeesToBeneficiaryWad: beneficiary,
7494
- numeraireFeesToLpWad: lp
7495
- };
7496
- }
7497
- function validateRehypeFeeDistributionInfo(feeDistributionInfo) {
7498
- const assetRowTotal = feeDistributionInfo.assetFeesToAssetBuybackWad + feeDistributionInfo.assetFeesToNumeraireBuybackWad + feeDistributionInfo.assetFeesToBeneficiaryWad + feeDistributionInfo.assetFeesToLpWad;
7499
- if (assetRowTotal !== WAD) {
7500
- throw new Error(
7501
- `Rehype asset fee distribution must sum to ${WAD} (100%), but got ${assetRowTotal}`
7502
- );
7503
- }
7504
- const numeraireRowTotal = feeDistributionInfo.numeraireFeesToAssetBuybackWad + feeDistributionInfo.numeraireFeesToNumeraireBuybackWad + feeDistributionInfo.numeraireFeesToBeneficiaryWad + feeDistributionInfo.numeraireFeesToLpWad;
7505
- if (numeraireRowTotal !== WAD) {
7506
- throw new Error(
7507
- `Rehype numeraire fee distribution must sum to ${WAD} (100%), but got ${numeraireRowTotal}`
7508
- );
7509
- }
7510
- }
7511
- function normalizeRehypeDopplerHookMigratorConfig(config) {
7512
- if (!Number.isInteger(config.customFee) || config.customFee < 0) {
7513
- throw new Error("Rehype customFee must be a non-negative integer");
7514
- }
7515
- if (config.customFee > 1e6) {
7516
- throw new Error("Rehype customFee must be <= 1000000 (100%)");
7517
- }
7518
- const feeDistributionInfo = resolveRehypeFeeDistributionInfo2(config);
7519
- validateRehypeFeeDistributionInfo(feeDistributionInfo);
7520
- return {
7521
- buybackDestination: config.buybackDestination,
7522
- customFee: config.customFee,
7523
- feeRoutingMode: normalizeRehypeFeeRoutingMode(config.feeRoutingMode),
7524
- feeDistributionInfo
7525
- };
7526
- }
7527
- function encodeRehypeDopplerHookMigratorCalldata(params) {
7528
- const normalized = normalizeRehypeDopplerHookMigratorConfig(params.config);
7529
- return encodeAbiParameters(
7530
- [
7911
+ },
7531
7912
  {
7913
+ name: "integratorConfig",
7532
7914
  type: "tuple",
7533
- components: [
7534
- { name: "numeraire", type: "address" },
7535
- { name: "buybackDst", type: "address" },
7536
- { name: "customFee", type: "uint24" },
7537
- { name: "feeRoutingMode", type: "uint8" },
7538
- {
7539
- name: "feeDistributionInfo",
7540
- type: "tuple",
7541
- components: [
7542
- { name: "assetFeesToAssetBuybackWad", type: "uint256" },
7543
- { name: "assetFeesToNumeraireBuybackWad", type: "uint256" },
7544
- { name: "assetFeesToBeneficiaryWad", type: "uint256" },
7545
- { name: "assetFeesToLpWad", type: "uint256" },
7546
- { name: "numeraireFeesToAssetBuybackWad", type: "uint256" },
7547
- { name: "numeraireFeesToNumeraireBuybackWad", type: "uint256" },
7548
- { name: "numeraireFeesToBeneficiaryWad", type: "uint256" },
7549
- { name: "numeraireFeesToLpWad", type: "uint256" }
7550
- ]
7551
- }
7552
- ]
7553
- }
7554
- ],
7555
- [
7556
- {
7557
- numeraire: params.numeraire,
7558
- buybackDst: normalized.buybackDestination,
7559
- customFee: normalized.customFee,
7560
- feeRoutingMode: normalized.feeRoutingMode,
7561
- feeDistributionInfo: normalized.feeDistributionInfo
7915
+ components: integratorConfigComponents
7562
7916
  }
7563
7917
  ]
7564
- );
7565
- }
7918
+ }
7919
+ ];
7566
7920
  var AirlockCreateReceiptError = class extends Error {
7567
7921
  code;
7568
7922
  expected;
@@ -8514,6 +8868,18 @@ var DopplerFactory = class {
8514
8868
  schedules,
8515
8869
  scheduleIds
8516
8870
  });
8871
+ if (balanceLimitEnabled && args.governance.type !== "noOp" && args.governance.type !== "launchpad") {
8872
+ const allocatedTokens = amounts.reduce(
8873
+ (total, amount) => total + amount,
8874
+ 0n
8875
+ );
8876
+ const timelockTokens = args.sale.initialSupply - args.sale.numTokensToSell - allocatedTokens;
8877
+ if (timelockTokens > maxBalanceLimit) {
8878
+ throw new Error(
8879
+ `Standard governance would transfer ${timelockTokens} tokens to the governance timelock at creation, exceeding token.maxBalanceLimit (${maxBalanceLimit}). Increase sale.numTokensToSell, add vesting allocations, increase the balance limit, or use no-op or launchpad governance.`
8880
+ );
8881
+ }
8882
+ }
8517
8883
  return {
8518
8884
  kind: "dopplerERC20V1",
8519
8885
  name: args.token.name,
@@ -8548,125 +8914,61 @@ var DopplerFactory = class {
8548
8914
  }
8549
8915
  return [];
8550
8916
  }
8551
- resolveGovernanceFactoryAddress(args) {
8552
- if (args.governance.type === "noOp") {
8553
- const resolved2 = args.modules?.governanceFactory ?? args.addresses.noOpGovernanceFactory ?? ZERO_ADDRESS;
8554
- if (!resolved2 || resolved2 === ZERO_ADDRESS) {
8555
- throw new Error(args.noOpError);
8556
- }
8557
- return resolved2;
8558
- }
8559
- if (args.governance.type === "launchpad") {
8560
- const resolved2 = args.modules?.governanceFactory ?? args.addresses.launchpadGovernanceFactory ?? ZERO_ADDRESS;
8561
- if (!resolved2 || resolved2 === ZERO_ADDRESS) {
8562
- throw new Error(args.launchpadError);
8563
- }
8564
- return resolved2;
8565
- }
8566
- const resolved = args.modules?.governanceFactory ?? args.addresses.governanceFactory;
8567
- if (!resolved || resolved === ZERO_ADDRESS) {
8568
- throw new Error(args.standardError);
8569
- }
8570
- return resolved;
8571
- }
8572
- shouldAutoExcludeGovernanceTimelock(args) {
8573
- if (args.governance.type !== "default" && args.governance.type !== "custom") {
8574
- return false;
8575
- }
8576
- if (args.modules?.governanceFactory) {
8577
- return false;
8578
- }
8579
- const noOpGovernanceFactory = args.addresses.noOpGovernanceFactory;
8580
- return !noOpGovernanceFactory || args.governanceFactory.toLowerCase() !== noOpGovernanceFactory.toLowerCase();
8581
- }
8582
- resolveMigrationLockerBalanceLimitExclusions(migration, addresses) {
8583
- if ((migration.type === "uniswapV4" || migration.type === "uniswapV4Split") && migration.streamableFees) {
8584
- return [addresses.streamableFeesLocker];
8585
- }
8586
- if (isDopplerHookMigratorConfig(migration)) {
8587
- return [
8588
- addresses.streamableFeesLockerV2 ?? addresses.streamableFeesLocker
8589
- ];
8590
- }
8591
- return [];
8592
- }
8593
- withDopplerERC20V1EncodedBalanceLimitExclusions(tokenFactoryData, exclusions) {
8594
- const decoded = decodeAbiParameters(
8595
- [
8596
- { type: "string" },
8597
- { type: "string" },
8598
- {
8599
- type: "tuple[]",
8600
- components: [
8601
- { type: "uint64", name: "cliff" },
8602
- { type: "uint64", name: "duration" }
8603
- ]
8604
- },
8605
- { type: "address[]" },
8606
- { type: "uint256[]" },
8607
- { type: "uint256[]" },
8608
- { type: "string" },
8609
- { type: "uint256" },
8610
- { type: "uint48" },
8611
- { type: "address" },
8612
- { type: "address[]" }
8613
- ],
8614
- tokenFactoryData
8615
- );
8616
- if (decoded[7] === 0n && decoded[8] === 0) {
8617
- return tokenFactoryData;
8618
- }
8619
- return encodeAbiParameters(
8620
- [
8621
- { type: "string" },
8622
- { type: "string" },
8623
- {
8624
- type: "tuple[]",
8625
- components: [
8626
- { type: "uint64", name: "cliff" },
8627
- { type: "uint64", name: "duration" }
8628
- ]
8629
- },
8630
- { type: "address[]" },
8631
- { type: "uint256[]" },
8632
- { type: "uint256[]" },
8633
- { type: "string" },
8634
- { type: "uint256" },
8635
- { type: "uint48" },
8636
- { type: "address" },
8637
- { type: "address[]" }
8638
- ],
8639
- [
8640
- decoded[0],
8641
- decoded[1],
8642
- decoded[2],
8643
- decoded[3],
8644
- decoded[4],
8645
- decoded[5],
8646
- decoded[6],
8647
- decoded[7],
8648
- decoded[8],
8649
- decoded[9],
8650
- this.mergeDopplerERC20V1BalanceLimitExclusions(decoded[10], exclusions)
8651
- ]
8652
- );
8917
+ governanceDuration(token, seconds) {
8918
+ if (token.type !== "standard") {
8919
+ return seconds;
8920
+ }
8921
+ switch (this.chainId) {
8922
+ case CHAIN_IDS.MAINNET:
8923
+ case CHAIN_IDS.ARBITRUM:
8924
+ return Math.ceil(seconds / 12);
8925
+ case CHAIN_IDS.BASE:
8926
+ case CHAIN_IDS.BASE_SEPOLIA:
8927
+ return Math.ceil(seconds / 2);
8928
+ case CHAIN_IDS.INK:
8929
+ case CHAIN_IDS.UNICHAIN:
8930
+ case CHAIN_IDS.UNICHAIN_SEPOLIA:
8931
+ return seconds;
8932
+ case CHAIN_IDS.MONAD_MAINNET:
8933
+ case CHAIN_IDS.MONAD_TESTNET:
8934
+ return Math.ceil(seconds * 1e3 / 400);
8935
+ default:
8936
+ throw new Error(
8937
+ "Legacy token governance clock cadence is unknown on this chain. Use custom governance with explicit token-clock voting delay and period."
8938
+ );
8939
+ }
8653
8940
  }
8654
- withSimulationGovernanceTimelockExclusion(args) {
8655
- if (!this.isDopplerERC20V1Token(args.token) || !this.usesDefaultDopplerERC20V1Integration(args.modules) || args.simResult.length < 4 || !this.shouldAutoExcludeGovernanceTimelock({
8656
- governance: args.governance,
8657
- governanceFactory: args.createParams.governanceFactory,
8658
- modules: args.modules,
8659
- addresses: args.addresses
8660
- })) {
8661
- return args.createParams;
8941
+ resolveGovernanceFactoryAddress(args) {
8942
+ if (args.governance.type === "noOp") {
8943
+ const resolved2 = args.modules?.governanceFactory ?? args.addresses.noOpGovernanceFactory ?? ZERO_ADDRESS;
8944
+ if (!resolved2 || resolved2 === ZERO_ADDRESS) {
8945
+ throw new Error(args.noOpError);
8946
+ }
8947
+ return resolved2;
8662
8948
  }
8663
- return {
8664
- ...args.createParams,
8665
- tokenFactoryData: this.withDopplerERC20V1EncodedBalanceLimitExclusions(
8666
- args.createParams.tokenFactoryData,
8667
- [args.simResult[3]]
8668
- )
8669
- };
8949
+ if (args.governance.type === "launchpad") {
8950
+ const resolved2 = args.modules?.governanceFactory ?? args.addresses.launchpadGovernanceFactory ?? ZERO_ADDRESS;
8951
+ if (!resolved2 || resolved2 === ZERO_ADDRESS) {
8952
+ throw new Error(args.launchpadError);
8953
+ }
8954
+ return resolved2;
8955
+ }
8956
+ const resolved = args.modules?.governanceFactory ?? args.addresses.governanceFactory;
8957
+ if (!resolved || resolved === ZERO_ADDRESS) {
8958
+ throw new Error(args.standardError);
8959
+ }
8960
+ return resolved;
8961
+ }
8962
+ resolveMigrationLockerBalanceLimitExclusions(migration, addresses) {
8963
+ if ((migration.type === "uniswapV4" || migration.type === "uniswapV4Split") && migration.streamableFees) {
8964
+ return [addresses.streamableFeesLocker];
8965
+ }
8966
+ if (isDopplerHookMigratorConfig(migration)) {
8967
+ return [
8968
+ addresses.streamableFeesLockerV2 ?? addresses.streamableFeesLocker
8969
+ ];
8970
+ }
8971
+ return [];
8670
8972
  }
8671
8973
  withDopplerERC20V1BalanceLimitExclusions(tokenFactoryData, exclusions) {
8672
8974
  if (!this.isDopplerERC20V1BalanceLimitActive(tokenFactoryData)) {
@@ -9104,7 +9406,6 @@ var DopplerFactory = class {
9104
9406
  );
9105
9407
  }
9106
9408
  const liquidityMigratorData = this.encodeMigrationData(params.migration, {
9107
- numeraire: params.sale.numeraire,
9108
9409
  overrides: params.modules
9109
9410
  });
9110
9411
  const resolvedTokenFactory = params.modules?.tokenFactory ?? (this.isDoppler404Token(params.token) ? addresses.doppler404Factory : this.isDopplerERC20V1Token(params.token) ? params.modules?.dopplerERC20V1Factory ?? addresses.dopplerERC20V1Factory : this.usesDerc20V2Vesting(params.vesting) ? addresses.derc20V2Factory : addresses.tokenFactory);
@@ -9163,6 +9464,7 @@ var DopplerFactory = class {
9163
9464
  sale: params.sale,
9164
9465
  vesting: params.vesting,
9165
9466
  userAddress: params.userAddress,
9467
+ governance: params.governance,
9166
9468
  addresses,
9167
9469
  modules: params.modules,
9168
9470
  protocolBalanceLimitExclusions: includeProtocolBalanceLimitExclusions ? [
@@ -9212,8 +9514,14 @@ var DopplerFactory = class {
9212
9514
  ],
9213
9515
  [
9214
9516
  params.token.name,
9215
- params.governance.type === "custom" ? params.governance.initialVotingDelay : DEFAULT_V3_INITIAL_VOTING_DELAY,
9216
- params.governance.type === "custom" ? params.governance.initialVotingPeriod : DEFAULT_V3_INITIAL_VOTING_PERIOD,
9517
+ params.governance.type === "custom" ? params.governance.initialVotingDelay : this.governanceDuration(
9518
+ params.token,
9519
+ DEFAULT_V3_INITIAL_VOTING_DELAY
9520
+ ),
9521
+ params.governance.type === "custom" ? params.governance.initialVotingPeriod : this.governanceDuration(
9522
+ params.token,
9523
+ DEFAULT_V3_INITIAL_VOTING_PERIOD
9524
+ ),
9217
9525
  params.governance.type === "custom" ? params.governance.initialProposalThreshold : DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD
9218
9526
  ]
9219
9527
  );
@@ -9471,14 +9779,7 @@ var DopplerFactory = class {
9471
9779
  const isToken0 = BigInt(tokenAddress) < numeraireBigInt;
9472
9780
  const wantToken0 = isToken0Expected(params.sale.numeraire);
9473
9781
  if (wantToken0 && isToken0 || !wantToken0 && !isToken0) {
9474
- return this.withSimulationGovernanceTimelockExclusion({
9475
- createParams,
9476
- simResult,
9477
- token: params.token,
9478
- governance: params.governance,
9479
- modules: params.modules,
9480
- addresses
9481
- });
9782
+ return createParams;
9482
9783
  }
9483
9784
  attempt += 1n;
9484
9785
  const incrementedAccount = toHex(
@@ -9571,6 +9872,7 @@ var DopplerFactory = class {
9571
9872
  vesting: params.vesting,
9572
9873
  userAddress: params.userAddress,
9573
9874
  addresses,
9875
+ governance: params.governance,
9574
9876
  modules: params.modules,
9575
9877
  protocolBalanceLimitExclusions: includeProtocolBalanceLimitExclusions ? [
9576
9878
  poolInitializerAddress,
@@ -9616,7 +9918,6 @@ var DopplerFactory = class {
9616
9918
  includeProtocolBalanceLimitExclusions
9617
9919
  });
9618
9920
  const liquidityMigratorData = this.encodeMigrationData(params.migration, {
9619
- numeraire: params.sale.numeraire,
9620
9921
  overrides: params.modules
9621
9922
  });
9622
9923
  const governanceFactoryData = (() => {
@@ -9638,8 +9939,14 @@ var DopplerFactory = class {
9638
9939
  ],
9639
9940
  [
9640
9941
  params.token.name,
9641
- params.governance.type === "custom" ? params.governance.initialVotingDelay : DEFAULT_V4_INITIAL_VOTING_DELAY,
9642
- params.governance.type === "custom" ? params.governance.initialVotingPeriod : DEFAULT_V4_INITIAL_VOTING_PERIOD,
9942
+ params.governance.type === "custom" ? params.governance.initialVotingDelay : this.governanceDuration(
9943
+ params.token,
9944
+ DEFAULT_V4_INITIAL_VOTING_DELAY
9945
+ ),
9946
+ params.governance.type === "custom" ? params.governance.initialVotingPeriod : this.governanceDuration(
9947
+ params.token,
9948
+ DEFAULT_V4_INITIAL_VOTING_PERIOD
9949
+ ),
9643
9950
  params.governance.type === "custom" ? params.governance.initialProposalThreshold : DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD
9644
9951
  ]
9645
9952
  );
@@ -9777,22 +10084,14 @@ var DopplerFactory = class {
9777
10084
  tickSpacing: params.pool.tickSpacing,
9778
10085
  hooks: hookAddress
9779
10086
  });
9780
- const createParamsWithTimelock = this.withSimulationGovernanceTimelockExclusion({
9781
- createParams,
9782
- simResult,
9783
- token: params.token,
9784
- governance: params.governance,
9785
- modules: params.modules,
9786
- addresses
9787
- });
9788
10087
  return {
9789
- createParams: createParamsWithTimelock,
10088
+ createParams,
9790
10089
  hookAddress,
9791
10090
  tokenAddress,
9792
10091
  poolId: poolId2,
9793
10092
  gasEstimate,
9794
10093
  execute: () => this.createDynamicAuction(params, {
9795
- _createParams: createParamsWithTimelock
10094
+ _createParams: createParams
9796
10095
  })
9797
10096
  };
9798
10097
  }
@@ -9939,6 +10238,7 @@ var DopplerFactory = class {
9939
10238
  vesting: params.vesting,
9940
10239
  userAddress: params.userAddress,
9941
10240
  addresses,
10241
+ governance: params.governance,
9942
10242
  modules: params.modules,
9943
10243
  protocolBalanceLimitExclusions: includeProtocolBalanceLimitExclusions ? [
9944
10244
  openingAuctionInitializer,
@@ -9983,7 +10283,6 @@ var DopplerFactory = class {
9983
10283
  includeProtocolBalanceLimitExclusions
9984
10284
  });
9985
10285
  const liquidityMigratorData = this.encodeMigrationData(params.migration, {
9986
- numeraire: params.sale.numeraire,
9987
10286
  overrides: params.modules
9988
10287
  });
9989
10288
  const governanceFactoryData = (() => {
@@ -10005,8 +10304,14 @@ var DopplerFactory = class {
10005
10304
  ],
10006
10305
  [
10007
10306
  params.token.name,
10008
- params.governance.type === "custom" ? params.governance.initialVotingDelay : DEFAULT_V4_INITIAL_VOTING_DELAY,
10009
- params.governance.type === "custom" ? params.governance.initialVotingPeriod : DEFAULT_V4_INITIAL_VOTING_PERIOD,
10307
+ params.governance.type === "custom" ? params.governance.initialVotingDelay : this.governanceDuration(
10308
+ params.token,
10309
+ DEFAULT_V4_INITIAL_VOTING_DELAY
10310
+ ),
10311
+ params.governance.type === "custom" ? params.governance.initialVotingPeriod : this.governanceDuration(
10312
+ params.token,
10313
+ DEFAULT_V4_INITIAL_VOTING_PERIOD
10314
+ ),
10010
10315
  params.governance.type === "custom" ? params.governance.initialProposalThreshold : DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD
10011
10316
  ]
10012
10317
  );
@@ -10065,22 +10370,14 @@ var DopplerFactory = class {
10065
10370
  if (!simResult || !Array.isArray(simResult) || simResult.length < 2) {
10066
10371
  throw new Error("Failed to simulate opening auction create");
10067
10372
  }
10068
- const createParamsWithTimelock = this.withSimulationGovernanceTimelockExclusion({
10069
- createParams,
10070
- simResult,
10071
- token: params.token,
10072
- governance: params.governance,
10073
- modules: params.modules,
10074
- addresses
10075
- });
10076
10373
  return {
10077
- createParams: createParamsWithTimelock,
10374
+ createParams,
10078
10375
  openingAuctionHookAddress: simResult[1],
10079
10376
  tokenAddress: simResult[0],
10080
10377
  minedSalt,
10081
10378
  gasEstimate,
10082
10379
  execute: () => this.createOpeningAuction(params, {
10083
- _createParams: createParamsWithTimelock,
10380
+ _createParams: createParams,
10084
10381
  _minedSalt: minedSalt
10085
10382
  })
10086
10383
  };
@@ -10972,11 +11269,6 @@ var DopplerFactory = class {
10972
11269
  case "dopplerHook":
10973
11270
  case "dopplerHookMigrator": {
10974
11271
  const dopplerHookMigratorConfig = config;
10975
- if (dopplerHookMigratorConfig.hook && dopplerHookMigratorConfig.rehype) {
10976
- throw new Error(
10977
- "dopplerHookMigrator migration cannot set both hook and rehype config. Use exactly one hook mode."
10978
- );
10979
- }
10980
11272
  const beneficiaries = sortBeneficiaries(
10981
11273
  dopplerHookMigratorConfig.beneficiaries
10982
11274
  );
@@ -10985,24 +11277,6 @@ var DopplerFactory = class {
10985
11277
  if (dopplerHookMigratorConfig.hook) {
10986
11278
  dopplerHookAddress = dopplerHookMigratorConfig.hook.hookAddress;
10987
11279
  onInitializationCalldata = dopplerHookMigratorConfig.hook.onInitializationCalldata ?? "0x";
10988
- } else if (dopplerHookMigratorConfig.rehype) {
10989
- const addresses = getAddresses(this.chainId);
10990
- const resolvedRehypeHookAddress = dopplerHookMigratorConfig.rehype.hookAddress ?? options?.overrides?.rehypeDopplerHookMigrator ?? addresses.rehypeDopplerHookMigrator;
10991
- if (!resolvedRehypeHookAddress) {
10992
- throw new Error(
10993
- "RehypeDopplerHookMigrator address not configured on this chain. Provide migration.rehype.hookAddress or override modules.rehypeDopplerHookMigrator."
10994
- );
10995
- }
10996
- if (!options?.numeraire) {
10997
- throw new Error(
10998
- "numeraire is required to encode rehype dopplerHookMigrator migration data"
10999
- );
11000
- }
11001
- dopplerHookAddress = resolvedRehypeHookAddress;
11002
- onInitializationCalldata = encodeRehypeDopplerHookMigratorCalldata({
11003
- numeraire: options.numeraire,
11004
- config: dopplerHookMigratorConfig.rehype
11005
- });
11006
11280
  }
11007
11281
  const proceedsRecipient = dopplerHookMigratorConfig.proceedsSplit?.recipient ?? ZERO_ADDRESS;
11008
11282
  const proceedsShare = dopplerHookMigratorConfig.proceedsSplit?.share ?? 0n;
@@ -11281,7 +11555,9 @@ var DopplerFactory = class {
11281
11555
  const useDecayInitializer = initializerMode.type === "decay";
11282
11556
  const useDopplerHookInitializer = initializerMode.type === "dopplerHook";
11283
11557
  const normalizedRehypeHookConfig = initializerMode.type === "dopplerHook" && initializerMode.hookConfig ? normalizeRehypeDopplerHookInitializerConfig(
11284
- initializerMode.hookConfig
11558
+ initializerMode.hookConfig,
11559
+ void 0,
11560
+ params.integrator
11285
11561
  ) : void 0;
11286
11562
  const curveComponents = [
11287
11563
  { type: "int24", name: "tickLower" },
@@ -11503,8 +11779,14 @@ var DopplerFactory = class {
11503
11779
  ],
11504
11780
  [
11505
11781
  params.token.name,
11506
- params.governance.type === "custom" ? params.governance.initialVotingDelay : DEFAULT_V4_INITIAL_VOTING_DELAY,
11507
- params.governance.type === "custom" ? params.governance.initialVotingPeriod : DEFAULT_V4_INITIAL_VOTING_PERIOD,
11782
+ params.governance.type === "custom" ? params.governance.initialVotingDelay : this.governanceDuration(
11783
+ params.token,
11784
+ DEFAULT_V4_INITIAL_VOTING_DELAY
11785
+ ),
11786
+ params.governance.type === "custom" ? params.governance.initialVotingPeriod : this.governanceDuration(
11787
+ params.token,
11788
+ DEFAULT_V4_INITIAL_VOTING_PERIOD
11789
+ ),
11508
11790
  params.governance.type === "custom" ? params.governance.initialProposalThreshold : DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD
11509
11791
  ]
11510
11792
  );
@@ -11550,7 +11832,6 @@ var DopplerFactory = class {
11550
11832
  }
11551
11833
  } else {
11552
11834
  liquidityMigratorData = this.encodeMigrationData(params.migration, {
11553
- numeraire: params.sale.numeraire,
11554
11835
  overrides: params.modules
11555
11836
  });
11556
11837
  resolvedMigrator = this.getMigratorAddress(
@@ -11571,6 +11852,7 @@ var DopplerFactory = class {
11571
11852
  vesting: params.vesting,
11572
11853
  userAddress: params.userAddress,
11573
11854
  addresses,
11855
+ governance: params.governance,
11574
11856
  modules: params.modules,
11575
11857
  protocolBalanceLimitExclusions: includeProtocolBalanceLimitExclusions ? [
11576
11858
  resolvedInitializer,
@@ -11689,48 +11971,20 @@ var DopplerFactory = class {
11689
11971
  const { params, simulationAccount } = args;
11690
11972
  const addresses = getAddresses(this.chainId);
11691
11973
  const airlock = params.modules?.airlock ?? addresses.airlock;
11692
- const initialCreateParams = args.createParams ?? this.encodeCreateMulticurveParams(params);
11974
+ const createParams = args.createParams ?? this.encodeCreateMulticurveParams(params);
11693
11975
  if (!params.devBuy) {
11694
- const initialSimulation = await this.publicClient.simulateContract({
11976
+ const simulation2 = await this.publicClient.simulateContract({
11695
11977
  address: airlock,
11696
11978
  abi: airlockAbi,
11697
11979
  functionName: "create",
11698
- args: [{ ...initialCreateParams }],
11980
+ args: [{ ...createParams }],
11699
11981
  account: simulationAccount
11700
11982
  });
11701
- const initialResult = initialSimulation.result;
11702
- if (!initialResult || !Array.isArray(initialResult) || initialResult.length < 5) {
11983
+ const result2 = simulation2.result;
11984
+ if (!result2 || !Array.isArray(result2) || result2.length < 5) {
11703
11985
  throw new Error("Failed to simulate multicurve create");
11704
11986
  }
11705
- let createParams2 = initialCreateParams;
11706
- let request = initialSimulation.request;
11707
- let result2 = initialResult;
11708
- if (!args.createParams) {
11709
- const enrichedCreateParams = this.withSimulationGovernanceTimelockExclusion({
11710
- createParams: createParams2,
11711
- simResult: initialResult,
11712
- token: params.token,
11713
- governance: params.governance,
11714
- modules: params.modules,
11715
- addresses
11716
- });
11717
- if (enrichedCreateParams.tokenFactoryData !== createParams2.tokenFactoryData) {
11718
- createParams2 = enrichedCreateParams;
11719
- const finalSimulation = await this.publicClient.simulateContract({
11720
- address: airlock,
11721
- abi: airlockAbi,
11722
- functionName: "create",
11723
- args: [{ ...createParams2 }],
11724
- account: simulationAccount
11725
- });
11726
- const finalResult = finalSimulation.result;
11727
- if (!finalResult || !Array.isArray(finalResult) || finalResult.length < 5) {
11728
- throw new Error("Failed to simulate enriched multicurve create");
11729
- }
11730
- request = finalSimulation.request;
11731
- result2 = finalResult;
11732
- }
11733
- }
11987
+ const request = simulation2.request;
11734
11988
  const tokenAddress = result2[0];
11735
11989
  const poolIdentity = await this.computeMulticurvePoolIdentity(
11736
11990
  params,
@@ -11744,45 +11998,18 @@ var DopplerFactory = class {
11744
11998
  migrationPoolAddress: result2[4],
11745
11999
  ...poolIdentity
11746
12000
  };
11747
- return { airlock, createParams: createParams2, prediction: prediction2, request };
12001
+ return { airlock, createParams, prediction: prediction2, request };
11748
12002
  }
11749
12003
  this.validateMulticurveDevBuy(params.devBuy);
11750
12004
  const bundler = this.resolveBundlerAddress(params);
11751
12005
  await this.ensureDevBuyInitializerCompatibility({ params, bundler });
11752
- let createParams = initialCreateParams;
11753
- const initialBundleSimulation = await this.publicClient.simulateContract({
12006
+ const simulation = await this.publicClient.simulateContract({
11754
12007
  address: bundler,
11755
12008
  abi: bundlerAbi,
11756
12009
  functionName: "simulateBundle",
11757
12010
  args: [{ ...createParams }, params.devBuy.exactAmountIn]
11758
12011
  });
11759
- let result = this.parseBundleSimulation(initialBundleSimulation.result);
11760
- if (!args.createParams) {
11761
- const enrichedCreateParams = this.withSimulationGovernanceTimelockExclusion({
11762
- createParams,
11763
- simResult: [
11764
- result.asset,
11765
- result.poolKey.hooks,
11766
- result.governance,
11767
- result.timelock,
11768
- ZERO_ADDRESS
11769
- ],
11770
- token: params.token,
11771
- governance: params.governance,
11772
- modules: params.modules,
11773
- addresses
11774
- });
11775
- if (enrichedCreateParams.tokenFactoryData !== createParams.tokenFactoryData) {
11776
- createParams = enrichedCreateParams;
11777
- const finalBundleSimulation = await this.publicClient.simulateContract({
11778
- address: bundler,
11779
- abi: bundlerAbi,
11780
- functionName: "simulateBundle",
11781
- args: [{ ...createParams }, params.devBuy.exactAmountIn]
11782
- });
11783
- result = this.parseBundleSimulation(finalBundleSimulation.result);
11784
- }
11785
- }
12012
+ const result = this.parseBundleSimulation(simulation.result);
11786
12013
  const currency0 = result.poolKey.currency0.toLowerCase();
11787
12014
  const currency1 = result.poolKey.currency1.toLowerCase();
11788
12015
  const asset = result.asset.toLowerCase();
@@ -12476,14 +12703,6 @@ var DopplerFactory = class {
12476
12703
  "DopplerHook migration lockDuration must fit within uint32"
12477
12704
  );
12478
12705
  }
12479
- if (migration.hook && migration.rehype) {
12480
- throw new Error(
12481
- "dopplerHookMigrator migration cannot set both hook and rehype config. Use exactly one hook mode."
12482
- );
12483
- }
12484
- if (migration.rehype) {
12485
- normalizeRehypeDopplerHookMigratorConfig(migration.rehype);
12486
- }
12487
12706
  this.validateProceedsSplitConfig(
12488
12707
  migration.proceedsSplit,
12489
12708
  "DopplerHook migration"
@@ -13195,6 +13414,34 @@ var DopplerFactory = class {
13195
13414
  };
13196
13415
  }
13197
13416
  };
13417
+ function normalizeAirlockAssetData(rawAssetData, context = "Airlock getAssetData") {
13418
+ const addressField = (name, index) => parseAddress(
13419
+ readContractResultField(rawAssetData, [name], index, context),
13420
+ context,
13421
+ name
13422
+ );
13423
+ return {
13424
+ numeraire: addressField("numeraire", 0),
13425
+ timelock: addressField("timelock", 1),
13426
+ governance: addressField("governance", 2),
13427
+ liquidityMigrator: addressField("liquidityMigrator", 3),
13428
+ poolInitializer: addressField("poolInitializer", 4),
13429
+ poolOrHook: parseAddress(
13430
+ readContractResultField(rawAssetData, ["poolOrHook", "pool"], 5, context),
13431
+ context,
13432
+ "poolOrHook"
13433
+ ),
13434
+ migrationPool: addressField("migrationPool", 6),
13435
+ numTokensToSell: parseBigIntField(
13436
+ rawAssetData,
13437
+ "numTokensToSell",
13438
+ 7,
13439
+ context
13440
+ ),
13441
+ totalSupply: parseBigIntField(rawAssetData, "totalSupply", 8, context),
13442
+ integrator: addressField("integrator", 9)
13443
+ };
13444
+ }
13198
13445
  function parseAirlockPoolOrHook(rawAssetData, context = "Airlock getAssetData") {
13199
13446
  const rawPoolOrHook = readContractResultField(
13200
13447
  rawAssetData,
@@ -13280,6 +13527,35 @@ function normalizeRehypeFeeSchedule(rawSchedule, context = "Rehype getFeeSchedul
13280
13527
  )
13281
13528
  };
13282
13529
  }
13530
+ function normalizeRehypeIntegratorRoutingConfig(rawConfig, context = "Rehype getIntegratorRoutingConfig") {
13531
+ return {
13532
+ integrator: parseAddressField(rawConfig, "integrator", 0, context),
13533
+ assetFeesToNumeraireRatio: parseNumberField(
13534
+ rawConfig,
13535
+ "assetFeesToNumeraireRatio",
13536
+ 1,
13537
+ context
13538
+ ),
13539
+ numeraireFeesToAssetRatio: parseNumberField(
13540
+ rawConfig,
13541
+ "numeraireFeesToAssetRatio",
13542
+ 2,
13543
+ context
13544
+ ),
13545
+ automaticPayout: parseBooleanField(
13546
+ rawConfig,
13547
+ "automaticPayout",
13548
+ 3,
13549
+ context
13550
+ )
13551
+ };
13552
+ }
13553
+ function normalizeRehypeIntegratorFees(rawFees, context) {
13554
+ return {
13555
+ fees0: parseBigIntField(rawFees, "fees0", 0, context),
13556
+ fees1: parseBigIntField(rawFees, "fees1", 1, context)
13557
+ };
13558
+ }
13283
13559
  function normalizeRehypeHookFees(rawFees, context = "Rehype getHookFees") {
13284
13560
  return {
13285
13561
  fees0: parseBigIntField(rawFees, "fees0", 0, context),
@@ -13308,14 +13584,6 @@ function normalizeRehypePoolInfo(rawInfo, context = "Rehype getPoolInfo") {
13308
13584
  buybackDst: parseAddressField(rawInfo, "buybackDst", 2, context)
13309
13585
  };
13310
13586
  }
13311
- function normalizeRehypePosition(rawPosition, context = "Rehype getPosition") {
13312
- return {
13313
- tickLower: parseNumberField(rawPosition, "tickLower", 0, context),
13314
- tickUpper: parseNumberField(rawPosition, "tickUpper", 1, context),
13315
- liquidity: parseBigIntField(rawPosition, "liquidity", 2, context),
13316
- salt: parseHexField(rawPosition, "salt", 3, context)
13317
- };
13318
- }
13319
13587
  function parseAddressField(rawResult, fieldName, tupleIndex, context) {
13320
13588
  const rawField = readContractResultField(
13321
13589
  rawResult,
@@ -13360,17 +13628,17 @@ function parseNumberField(rawResult, fieldName, tupleIndex, context) {
13360
13628
  }
13361
13629
  return numericField;
13362
13630
  }
13363
- function parseHexField(rawResult, fieldName, tupleIndex, context) {
13631
+ function parseBooleanField(rawResult, fieldName, tupleIndex, context) {
13364
13632
  const rawField = readContractResultField(
13365
13633
  rawResult,
13366
13634
  [fieldName],
13367
13635
  tupleIndex,
13368
13636
  context
13369
13637
  );
13370
- if (typeof rawField === "string" && isHex(rawField)) {
13371
- return rawField;
13638
+ if (typeof rawField !== "boolean") {
13639
+ throw new Error(`${context}: ${fieldName} must be a boolean`);
13372
13640
  }
13373
- throw new Error(`${context}: ${fieldName} must be hex`);
13641
+ return rawField;
13374
13642
  }
13375
13643
  function parseAddress(rawField, context, fieldName) {
13376
13644
  if (typeof rawField === "string" && isAddress(rawField, { strict: false })) {
@@ -13776,9 +14044,25 @@ var ABSENT_POOL_ERROR_ABI = [
13776
14044
  async function findMulticurveInitializerForPool({
13777
14045
  client,
13778
14046
  tokenAddress,
13779
- addresses
14047
+ addresses,
14048
+ recordedInitializer
13780
14049
  }) {
13781
- const initializersToTry = getMulticurveInitializerCandidates(addresses);
14050
+ const configuredInitializers = getMulticurveInitializerCandidates(addresses);
14051
+ const initializersToTry = recordedInitializer === void 0 ? configuredInitializers : [
14052
+ {
14053
+ address: recordedInitializer,
14054
+ kind: "dopplerHook",
14055
+ probeAlternateLayout: true
14056
+ },
14057
+ {
14058
+ address: recordedInitializer,
14059
+ kind: "standard",
14060
+ probeAlternateLayout: true
14061
+ },
14062
+ ...configuredInitializers.filter(
14063
+ ({ address }) => address.toLowerCase() !== recordedInitializer.toLowerCase()
14064
+ )
14065
+ ];
13782
14066
  if (initializersToTry.length === 0) {
13783
14067
  throw new Error(
13784
14068
  "No V4 multicurve initializer addresses configured for this chain"
@@ -13798,23 +14082,33 @@ async function findMulticurveInitializerForPool({
13798
14082
  args: [tokenAddress]
13799
14083
  });
13800
14084
  } catch (error) {
13801
- if (!isAbsentPoolReadFailure(error)) {
14085
+ if (!initializer.probeAlternateLayout && !isAbsentPoolReadFailure(error)) {
13802
14086
  throw error;
13803
14087
  }
13804
14088
  const reason = error instanceof Error ? error.message : String(error);
13805
14089
  failedInitializers.push(
13806
- new Error(`${initializerAddress} getState failed: ${reason}`)
14090
+ new Error(`${initializerAddress} ${kind} getState failed: ${reason}`)
13807
14091
  );
13808
14092
  continue;
13809
14093
  }
13810
- const discoveryResult = parseMulticurveInitializerDiscoveryResult({
13811
- tokenAddress,
13812
- initializerAddress,
13813
- kind,
13814
- stateData
13815
- });
13816
- if (isInitializedMulticurvePoolKey(discoveryResult.state.poolKey)) {
13817
- return discoveryResult;
14094
+ try {
14095
+ const discoveryResult = parseMulticurveInitializerDiscoveryResult({
14096
+ tokenAddress,
14097
+ initializerAddress,
14098
+ kind,
14099
+ stateData
14100
+ });
14101
+ if (isInitializedMulticurvePoolKey(discoveryResult.state.poolKey)) {
14102
+ return discoveryResult;
14103
+ }
14104
+ } catch (error) {
14105
+ if (!initializer.probeAlternateLayout) {
14106
+ throw error;
14107
+ }
14108
+ const reason = error instanceof Error ? error.message : String(error);
14109
+ failedInitializers.push(
14110
+ new Error(`${initializerAddress} ${kind} decode failed: ${reason}`)
14111
+ );
13818
14112
  }
13819
14113
  }
13820
14114
  const notFoundError = new Error(
@@ -14321,13 +14615,15 @@ var MulticurvePool = class {
14321
14615
  client;
14322
14616
  walletClient;
14323
14617
  tokenAddress;
14618
+ recordedInitializer;
14324
14619
  get rpc() {
14325
14620
  return this.client;
14326
14621
  }
14327
- constructor(client, walletClient, tokenAddress) {
14622
+ constructor(client, walletClient, tokenAddress, recordedInitializer) {
14328
14623
  this.client = client;
14329
14624
  this.walletClient = walletClient;
14330
14625
  this.tokenAddress = tokenAddress;
14626
+ this.recordedInitializer = recordedInitializer;
14331
14627
  }
14332
14628
  /**
14333
14629
  * Get the token address for this pool
@@ -14360,7 +14656,8 @@ var MulticurvePool = class {
14360
14656
  return findMulticurveInitializerForPool({
14361
14657
  client: this.rpc,
14362
14658
  tokenAddress: this.tokenAddress,
14363
- addresses
14659
+ addresses,
14660
+ recordedInitializer: this.recordedInitializer
14364
14661
  });
14365
14662
  }
14366
14663
  /**
@@ -14613,12 +14910,11 @@ function getTokenBatchSize(tokenBatchSize) {
14613
14910
  }
14614
14911
  return tokenBatchSize;
14615
14912
  }
14616
-
14617
- // src/evm/entities/auction/RehypeDopplerHookInitializer.ts
14618
14913
  var rehypeFeesManagerAbi = [
14619
14914
  ...feesManagerAbi,
14620
14915
  { type: "error", name: "FeeBeneficiariesNotConfigured", inputs: [] }
14621
14916
  ];
14917
+ var INTEGRATOR_CONVERSION_RATIO_DENOMINATOR = 1e9;
14622
14918
  var RehypeDopplerHookInitializer = class {
14623
14919
  client;
14624
14920
  walletClient;
@@ -14780,134 +15076,138 @@ var RehypeDopplerHookInitializer = class {
14780
15076
  });
14781
15077
  return normalizeRehypeFeeSchedule(result);
14782
15078
  }
14783
- async getHookFees(poolId2) {
15079
+ async getIntegratorFeeShare(poolId2) {
14784
15080
  const result = await this.rpc.readContract({
14785
15081
  address: this.hookAddress,
14786
15082
  abi: rehypeDopplerHookInitializerAbi,
14787
- functionName: "getHookFees",
15083
+ functionName: "getIntegratorFeeShare",
14788
15084
  args: [poolId2]
14789
15085
  });
14790
- return normalizeRehypeHookFees(result);
15086
+ return Number(result);
14791
15087
  }
14792
- async getPoolInfo(poolId2) {
15088
+ async getIntegratorRoutingConfig(poolId2) {
14793
15089
  const result = await this.rpc.readContract({
14794
15090
  address: this.hookAddress,
14795
15091
  abi: rehypeDopplerHookInitializerAbi,
14796
- functionName: "getPoolInfo",
15092
+ functionName: "getIntegratorRoutingConfig",
14797
15093
  args: [poolId2]
14798
15094
  });
14799
- return normalizeRehypePoolInfo(result);
14800
- }
14801
- requireWalletClient(message) {
14802
- if (!this.walletClient) {
14803
- throw new Error(message);
14804
- }
14805
- return this.walletClient;
14806
- }
14807
- };
14808
-
14809
- // src/evm/entities/auction/RehypeDopplerHook.ts
14810
- var RehypeDopplerHook = RehypeDopplerHookInitializer;
14811
-
14812
- // src/evm/entities/auction/RehypeDopplerHookMigrator.ts
14813
- var RehypeDopplerHookMigrator = class {
14814
- client;
14815
- walletClient;
14816
- hookAddress;
14817
- get rpc() {
14818
- return this.client;
15095
+ return normalizeRehypeIntegratorRoutingConfig(result);
14819
15096
  }
14820
- constructor(client, walletClient, hookAddress) {
14821
- this.client = client;
14822
- this.walletClient = walletClient;
14823
- this.hookAddress = hookAddress;
14824
- }
14825
- getAddress() {
14826
- return this.hookAddress;
15097
+ async getPendingIntegratorFees(poolId2) {
15098
+ const result = await this.rpc.readContract({
15099
+ address: this.hookAddress,
15100
+ abi: rehypeDopplerHookInitializerAbi,
15101
+ functionName: "getPendingIntegratorFees",
15102
+ args: [poolId2]
15103
+ });
15104
+ return normalizeRehypeIntegratorFees(
15105
+ result,
15106
+ "Rehype getPendingIntegratorFees"
15107
+ );
14827
15108
  }
14828
- async collectFees(asset) {
14829
- if (!this.walletClient) {
14830
- throw new Error("Wallet client required to collect rehype fees");
14831
- }
14832
- const { request, result } = await this.rpc.simulateContract({
15109
+ async getClaimableIntegratorFees(poolId2) {
15110
+ const result = await this.rpc.readContract({
14833
15111
  address: this.hookAddress,
14834
- abi: rehypeDopplerHookMigratorAbi,
14835
- functionName: "collectFees",
14836
- args: [asset],
14837
- account: this.walletClient.account
15112
+ abi: rehypeDopplerHookInitializerAbi,
15113
+ functionName: "getClaimableIntegratorFees",
15114
+ args: [poolId2]
14838
15115
  });
14839
- const hash = await this.walletClient.writeContract(request);
14840
- await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
14841
- const decoded = decodeBalanceDelta(result);
14842
- return {
14843
- amount0: decoded.amount0,
14844
- amount1: decoded.amount1,
14845
- transactionHash: hash
14846
- };
15116
+ return normalizeRehypeIntegratorFees(
15117
+ result,
15118
+ "Rehype getClaimableIntegratorFees"
15119
+ );
14847
15120
  }
14848
- async claimAirlockOwnerFees(asset) {
14849
- if (!this.walletClient) {
14850
- throw new Error("Wallet client required to claim rehype owner fees");
14851
- }
14852
- const { request, result } = await this.rpc.simulateContract({
15121
+ async setIntegratorConversionRatios(poolId2, assetFeesToNumeraireRatio, numeraireFeesToAssetRatio) {
15122
+ assertIntegratorConversionRatio2(
15123
+ assetFeesToNumeraireRatio,
15124
+ "assetFeesToNumeraireRatio"
15125
+ );
15126
+ assertIntegratorConversionRatio2(
15127
+ numeraireFeesToAssetRatio,
15128
+ "numeraireFeesToAssetRatio"
15129
+ );
15130
+ const walletClient = this.requireWalletClient(
15131
+ "Wallet client required to set rehype integrator conversion ratios"
15132
+ );
15133
+ const { request } = await this.rpc.simulateContract({
14853
15134
  address: this.hookAddress,
14854
- abi: rehypeDopplerHookMigratorAbi,
14855
- functionName: "claimAirlockOwnerFees",
14856
- args: [asset],
14857
- account: this.walletClient.account
15135
+ abi: rehypeDopplerHookInitializerAbi,
15136
+ functionName: "setIntegratorConversionRatios",
15137
+ args: [poolId2, assetFeesToNumeraireRatio, numeraireFeesToAssetRatio],
15138
+ account: walletClient.account
14858
15139
  });
14859
- const hash = await this.walletClient.writeContract(request);
14860
- await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
14861
- const [fees0, fees1] = result;
14862
- return { fees0, fees1, transactionHash: hash };
15140
+ const hash = await walletClient.writeContract(request);
15141
+ await this.waitForSuccessfulReceipt(hash, "setIntegratorConversionRatios");
15142
+ return { transactionHash: hash };
14863
15143
  }
14864
- async setFeeDistribution(poolId2, feeDistributionInfo) {
14865
- if (!this.walletClient) {
14866
- throw new Error("Wallet client required to set rehype fee distribution");
14867
- }
15144
+ async setIntegratorAutomaticPayout(poolId2, automaticPayout) {
15145
+ const walletClient = this.requireWalletClient(
15146
+ "Wallet client required to set rehype integrator automatic payout"
15147
+ );
14868
15148
  const { request } = await this.rpc.simulateContract({
14869
15149
  address: this.hookAddress,
14870
- abi: rehypeDopplerHookMigratorAbi,
14871
- functionName: "setFeeDistribution",
14872
- args: [
14873
- poolId2,
14874
- feeDistributionInfo.assetFeesToAssetBuybackWad,
14875
- feeDistributionInfo.assetFeesToNumeraireBuybackWad,
14876
- feeDistributionInfo.assetFeesToBeneficiaryWad,
14877
- feeDistributionInfo.assetFeesToLpWad,
14878
- feeDistributionInfo.numeraireFeesToAssetBuybackWad,
14879
- feeDistributionInfo.numeraireFeesToNumeraireBuybackWad,
14880
- feeDistributionInfo.numeraireFeesToBeneficiaryWad,
14881
- feeDistributionInfo.numeraireFeesToLpWad
14882
- ],
14883
- account: this.walletClient.account
15150
+ abi: rehypeDopplerHookInitializerAbi,
15151
+ functionName: "setIntegratorAutomaticPayout",
15152
+ args: [poolId2, automaticPayout],
15153
+ account: walletClient.account
14884
15154
  });
14885
- const hash = await this.walletClient.writeContract(request);
14886
- await this.rpc.waitForTransactionReceipt({ hash, confirmations: 1 });
14887
- return hash;
15155
+ const hash = await walletClient.writeContract(request);
15156
+ await this.waitForSuccessfulReceipt(hash, "setIntegratorAutomaticPayout");
15157
+ return { transactionHash: hash };
14888
15158
  }
14889
- async getFeeDistributionInfo(poolId2) {
14890
- const result = await this.rpc.readContract({
15159
+ async setIntegrator(poolId2, newIntegrator) {
15160
+ assertNonZeroAddress2(newIntegrator, "Rehype integrator");
15161
+ const walletClient = this.requireWalletClient(
15162
+ "Wallet client required to rotate rehype integrator"
15163
+ );
15164
+ const { request } = await this.rpc.simulateContract({
14891
15165
  address: this.hookAddress,
14892
- abi: rehypeDopplerHookMigratorAbi,
14893
- functionName: "getFeeDistributionInfo",
14894
- args: [poolId2]
15166
+ abi: rehypeDopplerHookInitializerAbi,
15167
+ functionName: "setIntegrator",
15168
+ args: [poolId2, newIntegrator],
15169
+ account: walletClient.account
14895
15170
  });
14896
- return normalizeRehypeFeeDistributionInfo(result);
15171
+ const hash = await walletClient.writeContract(request);
15172
+ await this.waitForSuccessfulReceipt(hash, "setIntegrator");
15173
+ return { transactionHash: hash };
14897
15174
  }
14898
- async getFeeRoutingMode(poolId2) {
14899
- const mode = await this.rpc.readContract({
15175
+ async claimIntegratorFees(asset, to) {
15176
+ assertNonZeroAddress2(to, "Rehype integrator claim destination");
15177
+ const walletClient = this.requireWalletClient(
15178
+ "Wallet client required to claim rehype integrator fees"
15179
+ );
15180
+ const { request } = await this.rpc.simulateContract({
14900
15181
  address: this.hookAddress,
14901
- abi: rehypeDopplerHookMigratorAbi,
14902
- functionName: "getFeeRoutingMode",
14903
- args: [poolId2]
15182
+ abi: rehypeDopplerHookInitializerAbi,
15183
+ functionName: "claimIntegratorFees",
15184
+ args: [asset, to],
15185
+ account: walletClient.account
14904
15186
  });
14905
- return Number(mode);
15187
+ const hash = await walletClient.writeContract(request);
15188
+ const receipt = await this.waitForSuccessfulReceipt(
15189
+ hash,
15190
+ "claimIntegratorFees"
15191
+ );
15192
+ const events = parseEventLogs({
15193
+ abi: rehypeDopplerHookInitializerAbi,
15194
+ eventName: "IntegratorFeesClaimed",
15195
+ logs: receipt.logs.filter(
15196
+ ({ address }) => isAddressEqual(address, this.hookAddress)
15197
+ )
15198
+ });
15199
+ if (events.length !== 1) {
15200
+ throw new Error(
15201
+ `Rehype claimIntegratorFees transaction ${hash} emitted ${events.length} IntegratorFeesClaimed events; expected exactly one`
15202
+ );
15203
+ }
15204
+ const { fees0, fees1 } = events[0].args;
15205
+ return { fees0, fees1, transactionHash: hash };
14906
15206
  }
14907
15207
  async getHookFees(poolId2) {
14908
15208
  const result = await this.rpc.readContract({
14909
15209
  address: this.hookAddress,
14910
- abi: rehypeDopplerHookMigratorAbi,
15210
+ abi: rehypeDopplerHookInitializerAbi,
14911
15211
  functionName: "getHookFees",
14912
15212
  args: [poolId2]
14913
15213
  });
@@ -14916,22 +15216,46 @@ var RehypeDopplerHookMigrator = class {
14916
15216
  async getPoolInfo(poolId2) {
14917
15217
  const result = await this.rpc.readContract({
14918
15218
  address: this.hookAddress,
14919
- abi: rehypeDopplerHookMigratorAbi,
15219
+ abi: rehypeDopplerHookInitializerAbi,
14920
15220
  functionName: "getPoolInfo",
14921
15221
  args: [poolId2]
14922
15222
  });
14923
15223
  return normalizeRehypePoolInfo(result);
14924
15224
  }
14925
- async getPosition(poolId2) {
14926
- const result = await this.rpc.readContract({
14927
- address: this.hookAddress,
14928
- abi: rehypeDopplerHookMigratorAbi,
14929
- functionName: "getPosition",
14930
- args: [poolId2]
15225
+ async waitForSuccessfulReceipt(hash, operation) {
15226
+ const receipt = await this.rpc.waitForTransactionReceipt({
15227
+ hash,
15228
+ confirmations: 1
14931
15229
  });
14932
- return normalizeRehypePosition(result);
15230
+ if (receipt.status !== "success") {
15231
+ throw new Error(
15232
+ `Rehype ${operation} transaction ${hash} failed with receipt status ${receipt.status}`
15233
+ );
15234
+ }
15235
+ return receipt;
15236
+ }
15237
+ requireWalletClient(message) {
15238
+ if (!this.walletClient) {
15239
+ throw new Error(message);
15240
+ }
15241
+ return this.walletClient;
14933
15242
  }
14934
15243
  };
15244
+ function assertIntegratorConversionRatio2(value, label) {
15245
+ if (!Number.isInteger(value) || value < 0 || value > INTEGRATOR_CONVERSION_RATIO_DENOMINATOR) {
15246
+ throw new Error(
15247
+ `Rehype ${label} must be an integer between 0 and ${INTEGRATOR_CONVERSION_RATIO_DENOMINATOR}`
15248
+ );
15249
+ }
15250
+ }
15251
+ function assertNonZeroAddress2(address, label) {
15252
+ if (!isAddress(address, { strict: false }) || address.toLowerCase() === ZERO_ADDRESS) {
15253
+ throw new Error(`${label} must be a non-zero address`);
15254
+ }
15255
+ }
15256
+
15257
+ // src/evm/entities/auction/RehypeDopplerHook.ts
15258
+ var RehypeDopplerHook = RehypeDopplerHookInitializer;
14935
15259
  var OpeningAuctionPositionManager = class _OpeningAuctionPositionManager {
14936
15260
  publicClient;
14937
15261
  walletClient;
@@ -18250,6 +18574,18 @@ var DopplerERC20V1 = class _DopplerERC20V1 {
18250
18574
  args: [account, timepoint]
18251
18575
  });
18252
18576
  }
18577
+ /**
18578
+ * Get historical voting-unit supply at a token clock timepoint.
18579
+ * Read CLOCK_MODE to determine whether a deployment uses timestamps or blocks.
18580
+ */
18581
+ async getPastTotalSupply(timepoint) {
18582
+ return await this.rpc.readContract({
18583
+ address: this.address,
18584
+ abi: dopplerERC20V1Abi,
18585
+ functionName: "getPastTotalSupply",
18586
+ args: [timepoint]
18587
+ });
18588
+ }
18253
18589
  async getVotesTotalSupply() {
18254
18590
  return await this.rpc.readContract({
18255
18591
  address: this.address,
@@ -18343,6 +18679,15 @@ var DopplerERC20V1 = class _DopplerERC20V1 {
18343
18679
  functionName: "vestedTotalAmount"
18344
18680
  });
18345
18681
  }
18682
+ /** Get a beneficiary's vesting allocation that has not been released. */
18683
+ async getTotalUnreleasedOf(beneficiary) {
18684
+ return await this.rpc.readContract({
18685
+ address: this.address,
18686
+ abi: dopplerERC20V1Abi,
18687
+ functionName: "totalUnreleasedOf",
18688
+ args: [beneficiary]
18689
+ });
18690
+ }
18346
18691
  async getVestingScheduleCount() {
18347
18692
  return await this.rpc.readContract({
18348
18693
  address: this.address,
@@ -18793,61 +19138,6 @@ var Eth = class {
18793
19138
  });
18794
19139
  }
18795
19140
  };
18796
- var TopUpDistributor = class {
18797
- publicClient;
18798
- walletClient;
18799
- topUpDistributorAddress;
18800
- get rpc() {
18801
- return this.publicClient;
18802
- }
18803
- constructor(publicClient, walletClient, topUpDistributorAddress) {
18804
- this.publicClient = publicClient;
18805
- this.walletClient = walletClient;
18806
- this.topUpDistributorAddress = topUpDistributorAddress;
18807
- }
18808
- getAddress() {
18809
- return this.topUpDistributorAddress;
18810
- }
18811
- buildTopUpTransaction(params) {
18812
- const tx = {
18813
- to: this.topUpDistributorAddress,
18814
- data: encodeFunctionData({
18815
- abi: topUpDistributorAbi,
18816
- functionName: "topUp",
18817
- args: [params.asset, params.numeraire, params.amount]
18818
- })
18819
- };
18820
- if (params.numeraire === ZERO_ADDRESS) {
18821
- return { ...tx, value: params.amount };
18822
- }
18823
- return tx;
18824
- }
18825
- async simulateTopUp(params, account) {
18826
- const { request } = await this.rpc.simulateContract({
18827
- address: this.topUpDistributorAddress,
18828
- abi: topUpDistributorAbi,
18829
- functionName: "topUp",
18830
- args: [params.asset, params.numeraire, params.amount],
18831
- account: account ?? this.walletClient?.account,
18832
- ...params.numeraire === ZERO_ADDRESS ? { value: params.amount } : {}
18833
- });
18834
- return {
18835
- request
18836
- };
18837
- }
18838
- async topUp(params, options) {
18839
- if (!this.walletClient) {
18840
- throw new Error("Wallet client required for write operations");
18841
- }
18842
- const { request } = await this.simulateTopUp(
18843
- params,
18844
- this.walletClient.account
18845
- );
18846
- return await this.walletClient.writeContract(
18847
- options?.gas ? { ...request, gas: options.gas } : request
18848
- );
18849
- }
18850
- };
18851
19141
 
18852
19142
  // src/evm/entities/Bundler.ts
18853
19143
  var Bundler = class {
@@ -18954,6 +19244,234 @@ var Bundler = class {
18954
19244
  );
18955
19245
  }
18956
19246
  };
19247
+ var DopplerHookMigrator = class {
19248
+ client;
19249
+ walletClient;
19250
+ address;
19251
+ get rpc() {
19252
+ return this.client;
19253
+ }
19254
+ constructor(client, walletClient, address) {
19255
+ this.client = client;
19256
+ this.walletClient = walletClient;
19257
+ this.address = address;
19258
+ }
19259
+ getAddress() {
19260
+ return this.address;
19261
+ }
19262
+ async getMigrationRefund(poolId2) {
19263
+ const result = await this.rpc.readContract({
19264
+ address: this.address,
19265
+ abi: dopplerHookMigratorAbi,
19266
+ functionName: "getMigrationRefund",
19267
+ args: [poolId2]
19268
+ });
19269
+ const [recipient, currency0, currency1, amount0, amount1] = result;
19270
+ return {
19271
+ recipient: getAddress(recipient),
19272
+ currency0: getAddress(currency0),
19273
+ currency1: getAddress(currency1),
19274
+ amount0,
19275
+ amount1,
19276
+ exists: amount0 !== 0n || amount1 !== 0n
19277
+ };
19278
+ }
19279
+ async getTotalClaimableMigrationRefund(currency) {
19280
+ return await this.rpc.readContract({
19281
+ address: this.address,
19282
+ abi: dopplerHookMigratorAbi,
19283
+ functionName: "getTotalClaimableMigrationRefund",
19284
+ args: [currency]
19285
+ });
19286
+ }
19287
+ async getLockerAddress() {
19288
+ return getAddress(
19289
+ await this.rpc.readContract({
19290
+ address: this.address,
19291
+ abi: dopplerHookMigratorAbi,
19292
+ functionName: "locker"
19293
+ })
19294
+ );
19295
+ }
19296
+ async getMigrationPoolId(asset) {
19297
+ const pair = await this.rpc.readContract({
19298
+ address: this.address,
19299
+ abi: dopplerHookMigratorAbi,
19300
+ functionName: "getPair",
19301
+ args: [asset]
19302
+ });
19303
+ const [token0, token1] = pair;
19304
+ if (token0 === zeroAddress && token1 === zeroAddress) {
19305
+ throw new Error(`No DopplerHookMigrator pool found for asset ${asset}`);
19306
+ }
19307
+ const assetData = await this.rpc.readContract({
19308
+ address: this.address,
19309
+ abi: dopplerHookMigratorAbi,
19310
+ functionName: "getAssetData",
19311
+ args: [token0, token1]
19312
+ });
19313
+ return computePoolId(normalizePoolKey(assetData[1]));
19314
+ }
19315
+ async claimMigrationRefund(poolId2, to) {
19316
+ if (to === zeroAddress) {
19317
+ throw new Error(
19318
+ "Migration refund destination must not be the zero address"
19319
+ );
19320
+ }
19321
+ const walletClient = this.walletClient;
19322
+ if (!walletClient) {
19323
+ throw new Error("Wallet client required to claim a migration refund");
19324
+ }
19325
+ const { request } = await this.rpc.simulateContract({
19326
+ address: this.address,
19327
+ abi: dopplerHookMigratorAbi,
19328
+ functionName: "claimMigrationRefund",
19329
+ args: [poolId2, to],
19330
+ account: walletClient.account
19331
+ });
19332
+ const hash = await walletClient.writeContract(request);
19333
+ const receipt = await this.rpc.waitForTransactionReceipt({
19334
+ hash,
19335
+ confirmations: 1
19336
+ });
19337
+ if (receipt.status !== "success") {
19338
+ throw new Error(
19339
+ `DopplerHookMigrator claimMigrationRefund transaction ${hash} failed with receipt status ${receipt.status}`
19340
+ );
19341
+ }
19342
+ const events = parseEventLogs({
19343
+ abi: dopplerHookMigratorAbi,
19344
+ eventName: "MigrationRefundClaimed",
19345
+ logs: receipt.logs.filter(
19346
+ ({ address }) => isAddressEqual(address, this.address)
19347
+ )
19348
+ }).filter(
19349
+ ({ args }) => args.poolId.toLowerCase() === poolId2.toLowerCase() && isAddressEqual(args.to, to)
19350
+ );
19351
+ if (events.length !== 1) {
19352
+ throw new Error(
19353
+ `DopplerHookMigrator claimMigrationRefund transaction ${hash} emitted ${events.length} matching MigrationRefundClaimed events; expected exactly one`
19354
+ );
19355
+ }
19356
+ const { amount0, amount1 } = events[0].args;
19357
+ return { amount0, amount1, transactionHash: hash };
19358
+ }
19359
+ };
19360
+ var StreamableFeesLockerV2 = class {
19361
+ client;
19362
+ walletClient;
19363
+ address;
19364
+ get rpc() {
19365
+ return this.client;
19366
+ }
19367
+ constructor(client, walletClient, address) {
19368
+ this.client = client;
19369
+ this.walletClient = walletClient;
19370
+ this.address = address;
19371
+ }
19372
+ getAddress() {
19373
+ return this.address;
19374
+ }
19375
+ async getStream(poolId2) {
19376
+ const result = await this.rpc.readContract({
19377
+ address: this.address,
19378
+ abi: streamableFeesLockerV2Abi,
19379
+ functionName: "streams",
19380
+ args: [poolId2]
19381
+ });
19382
+ const [poolKey, recipient, startDate, lockDuration, isUnlocked] = result;
19383
+ return {
19384
+ poolKey: normalizePoolKey(poolKey),
19385
+ recipient,
19386
+ startDate,
19387
+ lockDuration,
19388
+ unlockDate: isAddressEqual(recipient, DEAD_ADDRESS) ? 0 : startDate + lockDuration,
19389
+ isUnlocked
19390
+ };
19391
+ }
19392
+ async getBeneficiaryShares(poolId2, beneficiary) {
19393
+ return await this.rpc.readContract({
19394
+ address: this.address,
19395
+ abi: streamableFeesLockerV2Abi,
19396
+ functionName: "getShares",
19397
+ args: [poolId2, beneficiary]
19398
+ });
19399
+ }
19400
+ async getCumulatedFees(poolId2) {
19401
+ const [fees0, fees1] = await Promise.all([
19402
+ this.rpc.readContract({
19403
+ address: this.address,
19404
+ abi: streamableFeesLockerV2Abi,
19405
+ functionName: "getCumulatedFees0",
19406
+ args: [poolId2]
19407
+ }),
19408
+ this.rpc.readContract({
19409
+ address: this.address,
19410
+ abi: streamableFeesLockerV2Abi,
19411
+ functionName: "getCumulatedFees1",
19412
+ args: [poolId2]
19413
+ })
19414
+ ]);
19415
+ return { fees0, fees1 };
19416
+ }
19417
+ async collectFees(poolId2) {
19418
+ const walletClient = this.walletClient;
19419
+ if (!walletClient) {
19420
+ throw new Error("Wallet client required to collect streamable fees");
19421
+ }
19422
+ const { request } = await this.rpc.simulateContract({
19423
+ address: this.address,
19424
+ abi: streamableFeesLockerV2Abi,
19425
+ functionName: "collectFees",
19426
+ args: [poolId2],
19427
+ account: walletClient.account
19428
+ });
19429
+ const hash = await walletClient.writeContract(request);
19430
+ const receipt = await this.waitForSuccessfulReceipt(hash, "collectFees");
19431
+ const events = parseEventLogs({
19432
+ abi: streamableFeesLockerV2Abi,
19433
+ eventName: "Collect",
19434
+ logs: receipt.logs.filter(
19435
+ ({ address }) => isAddressEqual(address, this.address)
19436
+ )
19437
+ }).filter(({ args }) => args.poolId.toLowerCase() === poolId2.toLowerCase());
19438
+ if (events.length !== 1) {
19439
+ throw new Error(
19440
+ `StreamableFeesLockerV2 collectFees transaction ${hash} emitted ${events.length} matching Collect events; expected exactly one`
19441
+ );
19442
+ }
19443
+ const { fees0, fees1 } = events[0].args;
19444
+ return { fees0, fees1, transactionHash: hash };
19445
+ }
19446
+ async unlock(poolId2) {
19447
+ const walletClient = this.walletClient;
19448
+ if (!walletClient) {
19449
+ throw new Error("Wallet client required to unlock streamable liquidity");
19450
+ }
19451
+ const { request } = await this.rpc.simulateContract({
19452
+ address: this.address,
19453
+ abi: streamableFeesLockerV2Abi,
19454
+ functionName: "unlock",
19455
+ args: [poolId2],
19456
+ account: walletClient.account
19457
+ });
19458
+ const hash = await walletClient.writeContract(request);
19459
+ await this.waitForSuccessfulReceipt(hash, "unlock");
19460
+ return { transactionHash: hash };
19461
+ }
19462
+ async waitForSuccessfulReceipt(hash, operation) {
19463
+ const receipt = await this.rpc.waitForTransactionReceipt({
19464
+ hash,
19465
+ confirmations: 1
19466
+ });
19467
+ if (receipt.status !== "success") {
19468
+ throw new Error(
19469
+ `StreamableFeesLockerV2 ${operation} transaction ${hash} failed with receipt status ${receipt.status}`
19470
+ );
19471
+ }
19472
+ return receipt;
19473
+ }
19474
+ };
18957
19475
 
18958
19476
  // src/evm/builders/StaticAuctionBuilder.ts
18959
19477
  var StaticAuctionBuilder = class _StaticAuctionBuilder {
@@ -19559,9 +20077,6 @@ var DynamicAuctionBuilder = class _DynamicAuctionBuilder {
19559
20077
  withDopplerHookMigrator(address) {
19560
20078
  return this.overrideModule("dopplerHookMigrator", address);
19561
20079
  }
19562
- withRehypeDopplerHookMigrator(address) {
19563
- return this.overrideModule("rehypeDopplerHookMigrator", address);
19564
- }
19565
20080
  withNoOpMigrator(address) {
19566
20081
  return this.overrideModule("noOpMigrator", address);
19567
20082
  }
@@ -19902,15 +20417,15 @@ var MulticurveBuilder = class _MulticurveBuilder {
19902
20417
  *
19903
20418
  * When configured, the hook will be initialized with the pool and will handle:
19904
20419
  * - Custom swap fees
19905
- * - Fee distribution to beneficiaries, LPs, and buyback destinations
19906
- *
20420
+ * - Residual fee distribution to beneficiaries, LPs, and buyback destinations
20421
+ * - An optional, independently routed integrator share of gross hook fees
19907
20422
  * IMPORTANT:
19908
20423
  * - The hook address must be whitelisted in the DopplerHookInitializer
19909
20424
  * - Fee distribution percentages must sum to exactly WAD (1e18 = 100%)
19910
- *
20425
+ * - integratorFeeConfig.integrator defaults to withIntegrator(address)
19911
20426
  * @example
19912
20427
  * ```typescript
19913
- * builder.withRehypeDopplerHookInitializer({
20428
+ * builder.withIntegrator('0x...').withRehypeDopplerHookInitializer({
19914
20429
  * hookAddress: '0x...',
19915
20430
  * buybackDestination: '0x...',
19916
20431
  * startFee: 3000, // 0.3%
@@ -19926,6 +20441,11 @@ var MulticurveBuilder = class _MulticurveBuilder {
19926
20441
  * numeraireFeesToBeneficiaryWad: parseEther('0.3'),
19927
20442
  * numeraireFeesToLpWad: parseEther('0.3'),
19928
20443
  * },
20444
+ * integratorFeeConfig: {
20445
+ * feeShare: 200_000, // 20% of the Rehype hook fee
20446
+ * assetFeesToNumeraireRatio: 500_000_000, // Convert 50%
20447
+ * automaticPayout: false,
20448
+ * },
19929
20449
  * })
19930
20450
  * ```
19931
20451
  */
@@ -19941,10 +20461,13 @@ var MulticurveBuilder = class _MulticurveBuilder {
19941
20461
  "Rehype buybackDestination and withFeeDistributionController are mutually exclusive"
19942
20462
  );
19943
20463
  }
19944
- if (params.buybackDestination !== void 0 || this.feeDistributionControllerAddress !== void 0) {
20464
+ const needsInheritedIntegrator = params.integratorFeeConfig !== void 0 && params.integratorFeeConfig.integrator === void 0;
20465
+ const canResolveIntegrator = !needsInheritedIntegrator || this.integrator !== void 0;
20466
+ if ((params.buybackDestination !== void 0 || this.feeDistributionControllerAddress !== void 0) && canResolveIntegrator) {
19945
20467
  normalizeRehypeDopplerHookInitializerConfig(
19946
20468
  params,
19947
- this.feeDistributionControllerAddress
20469
+ this.feeDistributionControllerAddress,
20470
+ this.integrator
19948
20471
  );
19949
20472
  }
19950
20473
  this.dopplerHook = params;
@@ -20283,7 +20806,8 @@ var MulticurveBuilder = class _MulticurveBuilder {
20283
20806
  if (dopplerHook) {
20284
20807
  dopplerHook = normalizeRehypeDopplerHookInitializerConfig(
20285
20808
  dopplerHook,
20286
- this.feeDistributionControllerAddress
20809
+ this.feeDistributionControllerAddress,
20810
+ this.integrator
20287
20811
  );
20288
20812
  }
20289
20813
  if (dopplerHook?.graduationMarketCap !== void 0) {
@@ -20751,7 +21275,6 @@ var DopplerSDK = class {
20751
21275
  chainId;
20752
21276
  _factory;
20753
21277
  _quoter;
20754
- _topUpDistributor;
20755
21278
  _bundler;
20756
21279
  constructor(config) {
20757
21280
  this.publicClient = config.publicClient;
@@ -20780,31 +21303,6 @@ var DopplerSDK = class {
20780
21303
  }
20781
21304
  return this._quoter;
20782
21305
  }
20783
- /**
20784
- * Get the configured TopUpDistributor instance for split-migrator top-ups.
20785
- */
20786
- get topUpDistributor() {
20787
- if (!this._topUpDistributor) {
20788
- this._topUpDistributor = this.getTopUpDistributor();
20789
- }
20790
- return this._topUpDistributor;
20791
- }
20792
- /**
20793
- * Get a TopUpDistributor instance using the chain default or an explicit override.
20794
- */
20795
- getTopUpDistributor(topUpDistributorAddress) {
20796
- const resolvedTopUpDistributor = topUpDistributorAddress ?? getAddresses(this.chainId).topUpDistributor;
20797
- if (!resolvedTopUpDistributor || resolvedTopUpDistributor === ZERO_ADDRESS) {
20798
- throw new Error(
20799
- "TopUpDistributor address is not configured on this chain. Pass topUpDistributorAddress to getTopUpDistributor()."
20800
- );
20801
- }
20802
- return new TopUpDistributor(
20803
- this.publicClient,
20804
- this.walletClient,
20805
- resolvedTopUpDistributor
20806
- );
20807
- }
20808
21306
  /**
20809
21307
  * Gets the Bundler client configured for this chain.
20810
21308
  *
@@ -20862,17 +21360,40 @@ var DopplerSDK = class {
20862
21360
  async getRehypeDopplerHook(hookAddress) {
20863
21361
  return this.getRehypeDopplerHookInitializer(hookAddress);
20864
21362
  }
20865
- /**
20866
- * Get a RehypeDopplerHookMigrator instance for interacting with migrator-side rehype hook state.
20867
- * @param hookAddress The address of the RehypeDopplerHookMigrator
20868
- */
20869
- async getRehypeDopplerHookMigrator(hookAddress) {
20870
- return new RehypeDopplerHookMigrator(
21363
+ getDopplerHookMigrator(address) {
21364
+ const resolvedAddress = address ?? getAddresses(this.chainId).dopplerHookMigrator;
21365
+ if (!resolvedAddress || resolvedAddress === ZERO_ADDRESS) {
21366
+ throw new Error(
21367
+ "DopplerHookMigrator address is not configured on this chain. Pass an address to getDopplerHookMigrator()."
21368
+ );
21369
+ }
21370
+ return new DopplerHookMigrator(
20871
21371
  this.publicClient,
20872
21372
  this.walletClient,
20873
- hookAddress
21373
+ resolvedAddress
21374
+ );
21375
+ }
21376
+ async getDopplerHookMigratorForAsset(asset) {
21377
+ const assetData = await this.getAirlockAssetData(asset);
21378
+ if (assetData.liquidityMigrator === ZERO_ADDRESS) {
21379
+ throw new Error(`Asset ${asset} has no configured liquidity migrator`);
21380
+ }
21381
+ return this.getDopplerHookMigrator(assetData.liquidityMigrator);
21382
+ }
21383
+ getStreamableFeesLockerV2(address) {
21384
+ if (address === ZERO_ADDRESS) {
21385
+ throw new Error("StreamableFeesLockerV2 address must not be zero");
21386
+ }
21387
+ return new StreamableFeesLockerV2(
21388
+ this.publicClient,
21389
+ this.walletClient,
21390
+ address
20874
21391
  );
20875
21392
  }
21393
+ async getStreamableFeesLockerForAsset(asset) {
21394
+ const migrator = await this.getDopplerHookMigratorForAsset(asset);
21395
+ return this.getStreamableFeesLockerV2(await migrator.getLockerAddress());
21396
+ }
20876
21397
  /**
20877
21398
  * Get an OpeningAuction instance for interacting with an opening auction hook.
20878
21399
  * @param hookAddress The address of the opening auction hook
@@ -20941,10 +21462,12 @@ var DopplerSDK = class {
20941
21462
  * @param tokenAddress The address of the token created by the auction (called "asset" in contracts; V4 pools don't have addresses, so the token is used as the lookup key)
20942
21463
  */
20943
21464
  async getMulticurvePool(tokenAddress) {
21465
+ const { poolInitializer } = await this.getAirlockAssetData(tokenAddress);
20944
21466
  return new MulticurvePool(
20945
21467
  this.publicClient,
20946
21468
  this.walletClient,
20947
- tokenAddress
21469
+ tokenAddress,
21470
+ poolInitializer
20948
21471
  );
20949
21472
  }
20950
21473
  /**
@@ -21040,6 +21563,15 @@ var DopplerSDK = class {
21040
21563
  async getAirlockOwner() {
21041
21564
  return getAirlockOwner(this.publicClient);
21042
21565
  }
21566
+ async getAirlockAssetData(asset) {
21567
+ const result = await this.publicClient.readContract({
21568
+ address: getAddresses(this.chainId).airlock,
21569
+ abi: airlockAbi,
21570
+ functionName: "getAssetData",
21571
+ args: [asset]
21572
+ });
21573
+ return normalizeAirlockAssetData(result);
21574
+ }
21043
21575
  /**
21044
21576
  * Convenience helper for building the airlock beneficiary entry with the default 5% (0.05e18 WAD shares)
21045
21577
  */
@@ -21051,6 +21583,6 @@ var DopplerSDK = class {
21051
21583
  // src/evm/index.ts
21052
21584
  var VERSION = "1.0.0";
21053
21585
 
21054
- export { ADDRESSES, AirlockCreateReceiptError, BASIS_POINTS, Bundler, CHAIN_IDS, DAY_SECONDS, DEAD_ADDRESS, DECAY_MAX_START_FEE, DEFAULT_AIRLOCK_BENEFICIARY_SHARES, DEFAULT_AUCTION_DURATION, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_OPENING_AUCTION_DURATION, DEFAULT_OPENING_AUCTION_FEE, DEFAULT_OPENING_AUCTION_INCENTIVE_SHARE_BPS, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN0, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN1, DEFAULT_OPENING_AUCTION_MIN_LIQUIDITY, DEFAULT_OPENING_AUCTION_SHARE_TO_AUCTION_BPS, DEFAULT_OPENING_DOPPLER_DURATION, DEFAULT_OPENING_DOPPLER_EPOCH_LENGTH, DEFAULT_OPENING_DOPPLER_FEE, DEFAULT_OPENING_DOPPLER_NUM_PD_SLUGS, DEFAULT_OPENING_DOPPLER_TICK_SPACING, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, derc2080_default as DERC2080Bytecode, derc20_default as DERC20Bytecode, DOPPLER_FLAGS, DOPPLER_MAX_TICK_SPACING, DYNAMIC_FEE_FLAG, Derc20, Derc20V2, doppler_default as DopplerBytecode, DopplerDN404, dopplerDN404BaseSepolia_default as DopplerDN404BaseSepoliaBytecode, dopplerDN404_default as DopplerDN404Bytecode, DopplerERC20V1, DopplerFactory, DopplerSDK, DynamicAuction, DynamicAuctionBuilder, Eth, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, INT24_MAX, INT24_MIN, LAUNCHPAD_ENABLED_CHAIN_IDS, LockablePoolStatus, MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, MulticurveBuilder, MulticurveFees, MulticurvePool, NO_OP_ENABLED_CHAIN_IDS, OPENING_AUCTION_FLAGS, OPENING_AUCTION_PHASE_ACTIVE, OPENING_AUCTION_PHASE_CLOSED, OPENING_AUCTION_PHASE_NOT_STARTED, OPENING_AUCTION_PHASE_SETTLED, OPENING_AUCTION_STATUS_ACTIVE, OPENING_AUCTION_STATUS_DOPPLER_ACTIVE, OPENING_AUCTION_STATUS_EXITED, OPENING_AUCTION_STATUS_UNINITIALIZED, OpeningAuction, OpeningAuctionBidManager, OpeningAuctionBuilder, openingAuction_default as OpeningAuctionBytecode, OpeningAuctionLifecycle, OpeningAuctionPhase, OpeningAuctionPositionManager, OpeningAuctionStatus, Q96, Quoter, RehypeDopplerHook, RehypeDopplerHookInitializer, RehypeDopplerHookMigrator, RehypeFeeRoutingMode, SECONDS_PER_DAY, SECONDS_PER_YEAR, SUPPORTED_CHAIN_IDS, stateView_default as StateViewBytecode, StaticAuction, StaticAuctionBuilder, TICK_SPACINGS, TopUpDistributor, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, VERSION, WAD, ZERO_ADDRESS, airlockAbi, applyTickOffsets, bundlerAbi, calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, computeOptimalGamma, computePoolId, createAirlockBeneficiary, decayMulticurveInitializerHookAbi, decodeBalanceDelta, derc20Abi, derc20V2Abi, dopplerDN404Abi, dopplerERC20V1Abi, dopplerHookAbi, dopplerHookInitializerAbi, dopplerLensAbi, encodeRehypeDopplerHookInitializerData, encodeRehypeDopplerHookMigratorCalldata, estimatePriceAtEpoch, estimateSlippage, feeClaimsInitializerAbi, feesManagerAbi, formatTickAsPrice, getAddresses, getAirlockBeneficiary, getAirlockOwner, getAmount0ForLiquidity, getAmount1ForLiquidity, getLiquidityForAmount0, getLiquidityForAmount1, getMaxLiquiditySafeMulticurveTickUpper, getMaxTickRounded, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, isLaunchpadEnabledChain, isNoOpEnabledChain, isSupportedChainId, isToken0Expected, isToken1, lockableUniswapV3InitializerAbi, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, mineTokenAddress, normalizeBeneficiaries, normalizePoolKey, normalizeRehypeDopplerHookInitializerConfig, openingAuctionAbi, openingAuctionInitializerAbi, openingAuctionPositionManagerAbi, parseAirlockCreateReceipt, poolManagerAbi, priceToSqrtPriceX96, priceToTick, quoterV2Abi, ratioToTick, rehypeDopplerHookAbi, rehypeDopplerHookInitializerAbi, rehypeDopplerHookMigratorAbi, resolveGasEstimate, sortBeneficiaries, sqrtPriceX96ToPrice, streamableFeesLockerAbi, streamableFeesLockerV2Abi, tickToMarketCap, tickToPrice, tokenPriceToRatio, topUpDistributorAbi, uniswapV2Router02Abi, uniswapV3InitializerAbi, uniswapV3PoolAbi, uniswapV4InitializerAbi, v2MigratorAbi, v3MigratorAbi, v4MigratorAbi, v4MulticurveInitializerAbi, v4MulticurveMigratorAbi, v4QuoterAbi, validateMarketCapParameters, verifyPreparedCreateExecution, verifyPreparedCreateReceipt, weth9Abi };
21586
+ export { ADDRESSES, AirlockCreateReceiptError, BASIS_POINTS, Bundler, CHAIN_IDS, DAY_SECONDS, DEAD_ADDRESS, DECAY_MAX_START_FEE, DEFAULT_AIRLOCK_BENEFICIARY_SHARES, DEFAULT_AUCTION_DURATION, DEFAULT_EPOCH_LENGTH, DEFAULT_LOCK_DURATION, DEFAULT_MULTICURVE_LOWER_TICKS, DEFAULT_MULTICURVE_MAX_SUPPLY_SHARES, DEFAULT_MULTICURVE_NUM_POSITIONS, DEFAULT_MULTICURVE_UPPER_TICKS, DEFAULT_OPENING_AUCTION_DURATION, DEFAULT_OPENING_AUCTION_FEE, DEFAULT_OPENING_AUCTION_INCENTIVE_SHARE_BPS, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN0, DEFAULT_OPENING_AUCTION_MIN_ACCEPTABLE_TICK_TOKEN1, DEFAULT_OPENING_AUCTION_MIN_LIQUIDITY, DEFAULT_OPENING_AUCTION_SHARE_TO_AUCTION_BPS, DEFAULT_OPENING_DOPPLER_DURATION, DEFAULT_OPENING_DOPPLER_EPOCH_LENGTH, DEFAULT_OPENING_DOPPLER_FEE, DEFAULT_OPENING_DOPPLER_NUM_PD_SLUGS, DEFAULT_OPENING_DOPPLER_TICK_SPACING, DEFAULT_PD_SLUGS, DEFAULT_V3_END_TICK, DEFAULT_V3_FEE, DEFAULT_V3_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V3_INITIAL_SUPPLY, DEFAULT_V3_INITIAL_VOTING_DELAY, DEFAULT_V3_INITIAL_VOTING_PERIOD, DEFAULT_V3_MAX_SHARE_TO_BE_SOLD, DEFAULT_V3_NUM_POSITIONS, DEFAULT_V3_NUM_TOKENS_TO_SELL, DEFAULT_V3_PRE_MINT, DEFAULT_V3_START_TICK, DEFAULT_V3_VESTING_DURATION, DEFAULT_V3_YEARLY_MINT_RATE, DEFAULT_V4_INITIAL_PROPOSAL_THRESHOLD, DEFAULT_V4_INITIAL_VOTING_DELAY, DEFAULT_V4_INITIAL_VOTING_PERIOD, DEFAULT_V4_YEARLY_MINT_RATE, derc2080_default as DERC2080Bytecode, derc20_default as DERC20Bytecode, DOPPLER_FLAGS, DOPPLER_MAX_TICK_SPACING, DYNAMIC_FEE_FLAG, Derc20, Derc20V2, doppler_default as DopplerBytecode, DopplerDN404, dopplerDN404BaseSepolia_default as DopplerDN404BaseSepoliaBytecode, dopplerDN404_default as DopplerDN404Bytecode, DopplerERC20V1, DopplerFactory, DopplerHookMigrator, DopplerSDK, DynamicAuction, DynamicAuctionBuilder, Eth, FEE_AMOUNT_MASK, FEE_TIERS, FLAG_MASK, INT24_MAX, INT24_MIN, LAUNCHPAD_ENABLED_CHAIN_IDS, LockablePoolStatus, MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, MulticurveBuilder, MulticurveFees, MulticurvePool, NO_OP_ENABLED_CHAIN_IDS, OPENING_AUCTION_FLAGS, OPENING_AUCTION_PHASE_ACTIVE, OPENING_AUCTION_PHASE_CLOSED, OPENING_AUCTION_PHASE_NOT_STARTED, OPENING_AUCTION_PHASE_SETTLED, OPENING_AUCTION_STATUS_ACTIVE, OPENING_AUCTION_STATUS_DOPPLER_ACTIVE, OPENING_AUCTION_STATUS_EXITED, OPENING_AUCTION_STATUS_UNINITIALIZED, OpeningAuction, OpeningAuctionBidManager, OpeningAuctionBuilder, openingAuction_default as OpeningAuctionBytecode, OpeningAuctionLifecycle, OpeningAuctionPhase, OpeningAuctionPositionManager, OpeningAuctionStatus, Q96, Quoter, RehypeDopplerHook, RehypeDopplerHookInitializer, RehypeFeeRoutingMode, SECONDS_PER_DAY, SECONDS_PER_YEAR, SUPPORTED_CHAIN_IDS, stateView_default as StateViewBytecode, StaticAuction, StaticAuctionBuilder, StreamableFeesLockerV2, TICK_SPACINGS, V3_FEE_TIERS, V4_MAX_FEE, VALID_FEE_TIERS, VERSION, WAD, ZERO_ADDRESS, airlockAbi, applyTickOffsets, bundlerAbi, calculateFDV, calculateGamma, calculateMarketCap, calculateTickRange, calculateTokensToSell, computeOptimalGamma, computePoolId, createAirlockBeneficiary, decayMulticurveInitializerHookAbi, decodeBalanceDelta, derc20Abi, derc20V2Abi, dopplerDN404Abi, dopplerERC20V1Abi, dopplerHookAbi, dopplerHookInitializerAbi, dopplerHookMigratorAbi, dopplerLensAbi, encodeRehypeDopplerHookInitializerData, estimatePriceAtEpoch, estimateSlippage, feeClaimsInitializerAbi, feesManagerAbi, formatTickAsPrice, getAddresses, getAirlockBeneficiary, getAirlockOwner, getAmount0ForLiquidity, getAmount1ForLiquidity, getLiquidityForAmount0, getLiquidityForAmount1, getMaxLiquiditySafeMulticurveTickUpper, getMaxTickRounded, getNearestUsableTick, getSqrtRatioAtTick, getTickAtSqrtRatio, isLaunchpadEnabledChain, isNoOpEnabledChain, isSupportedChainId, isToken0Expected, isToken1, lockableUniswapV3InitializerAbi, marketCapToTickForMulticurve, marketCapToTicksForDynamicAuction, marketCapToTicksForMulticurve, marketCapToTicksForStaticAuction, marketCapToTokenPrice, mineTokenAddress, normalizeBeneficiaries, normalizePoolKey, normalizeRehypeDopplerHookInitializerConfig, openingAuctionAbi, openingAuctionInitializerAbi, openingAuctionPositionManagerAbi, parseAirlockCreateReceipt, poolManagerAbi, priceToSqrtPriceX96, priceToTick, quoterV2Abi, ratioToTick, rehypeDopplerHookAbi, rehypeDopplerHookInitializerAbi, resolveGasEstimate, sortBeneficiaries, sqrtPriceX96ToPrice, streamableFeesLockerAbi, streamableFeesLockerV2Abi, tickToMarketCap, tickToPrice, tokenPriceToRatio, uniswapV2Router02Abi, uniswapV3InitializerAbi, uniswapV3PoolAbi, uniswapV4InitializerAbi, v2MigratorAbi, v3MigratorAbi, v4MigratorAbi, v4MulticurveInitializerAbi, v4MulticurveMigratorAbi, v4QuoterAbi, validateMarketCapParameters, verifyPreparedCreateExecution, verifyPreparedCreateReceipt, weth9Abi };
21055
21587
  //# sourceMappingURL=index.js.map
21056
21588
  //# sourceMappingURL=index.js.map