feat: protected instead of private in DopplerFactory #39
Annotations
6 errors
|
|
|
test/airlock-whitelisting.test.ts#L211
ContractFunctionExecutionError: HTTP request failed.
Status: 429
URL: https://mainnet.base.org
Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de000000000000000000000000166109c4ee7fe69164631caa937daa5f5cebfef0","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}
Raw Call Arguments:
to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
data: 0x2e27c8de000000000000000000000000166109c4ee7fe69164631caa937daa5f5cebfef0
Contract Call:
address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
function: getModuleState(address module)
args: (0x166109C4EE7fE69164631Caa937dAA5F5cEbFef0)
Docs: https://viem.sh/docs/contract/readContract
Details: {"code":-32016,"message":"over rate limit"}
Version: viem@2.36.0
❯ getContractError node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/utils/errors/getContractError.ts:78:10
❯ readContract node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/actions/public/readContract.ts:137:11
❯ test/airlock-whitelisting.test.ts:211:26
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { details: '{"code":-32016,"message":"over rate limit"}', docsPath: '/docs/contract/readContract', metaMessages: [ 'Status: 429', 'URL: https://mainnet.base.org', 'Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de000000000000000000000000166109c4ee7fe69164631caa937daa5f5cebfef0","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}', ' ', 'Raw Call Arguments:', ' to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n data: 0x2e27c8de000000000000000000000000166109c4ee7fe69164631caa937daa5f5cebfef0', ' ', 'Contract Call:', ' address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n function: getModuleState(address module)\n args: (0x166109C4EE7fE69164631Caa937dAA5F5cEbFef0)' ], shortMessage: 'HTTP request failed.', version: '2.36.0', abi: [ { type: 'constructor', inputs: [ { name: 'owner_', type: 'address', internalType: 'address' } ], stateMutability: 'nonpayable' }, { type: 'receive', stateMutability: 'payable' }, { type: 'function', name: 'collectIntegratorFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'collectProtocolFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'create', inputs: [ { name: 'createData', type: 'tuple', internalType: 'struct CreateParams', components: [ { name: 'initialSupply', type: 'uint256', internalType: 'uint256' }, { name: 'numTokensToSell', type: 'uint256', internalType: 'uint256' }, { name: 'numeraire', type: 'address', internalType: 'address' }, { name: 'tokenFactory', type: 'address', internalType: 'contract ITokenFactory' }, { name: 'tokenFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'governanceFactory', type: 'address', internalType: 'contract IGovernanceFactory' }, { name: 'governanceFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'poolInitializer', type: 'address', internalType: 'contract IPoolInitializer' }, { name: 'poolInitializerData', type: 'bytes', internalType: 'bytes' }, { name: 'liquidityMigrator', type: 'address', internalType: 'contract ILiquidityMigrator' }, { name: 'liquidityMigratorData', type: 'bytes', internalType: 'bytes' }, { name: 'integrator', type: 'address', internalType: 'address' }, { name: 'salt', type: 'bytes32', internalType: 'bytes32' } ] } ], outputs: [ { name: 'asset', type: 'address', internalType: 'address' }, { name: 'pool', type: 'address', internalType: 'address' }, { name: 'governance', type: 'address', internalType: 'address' }, { name: 'timelock', type: 'address', internalType: 'address' }, { name: 'migrationPool', type: 'address', internalType: 'address' } ], st
|
|
test/airlock-whitelisting.test.ts#L197
ContractFunctionExecutionError: HTTP request failed.
Status: 429
URL: https://mainnet.base.org
Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}
Raw Call Arguments:
to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
data: 0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731
Contract Call:
address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
function: getModuleState(address module)
args: (0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731)
Docs: https://viem.sh/docs/contract/readContract
Details: {"code":-32016,"message":"over rate limit"}
Version: viem@2.36.0
❯ getContractError node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/utils/errors/getContractError.ts:78:10
❯ readContract node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/actions/public/readContract.ts:137:11
❯ test/airlock-whitelisting.test.ts:197:26
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { details: '{"code":-32016,"message":"over rate limit"}', docsPath: '/docs/contract/readContract', metaMessages: [ 'Status: 429', 'URL: https://mainnet.base.org', 'Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}', ' ', 'Raw Call Arguments:', ' to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n data: 0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731', ' ', 'Contract Call:', ' address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n function: getModuleState(address module)\n args: (0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731)' ], shortMessage: 'HTTP request failed.', version: '2.36.0', abi: [ { type: 'constructor', inputs: [ { name: 'owner_', type: 'address', internalType: 'address' } ], stateMutability: 'nonpayable' }, { type: 'receive', stateMutability: 'payable' }, { type: 'function', name: 'collectIntegratorFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'collectProtocolFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'create', inputs: [ { name: 'createData', type: 'tuple', internalType: 'struct CreateParams', components: [ { name: 'initialSupply', type: 'uint256', internalType: 'uint256' }, { name: 'numTokensToSell', type: 'uint256', internalType: 'uint256' }, { name: 'numeraire', type: 'address', internalType: 'address' }, { name: 'tokenFactory', type: 'address', internalType: 'contract ITokenFactory' }, { name: 'tokenFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'governanceFactory', type: 'address', internalType: 'contract IGovernanceFactory' }, { name: 'governanceFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'poolInitializer', type: 'address', internalType: 'contract IPoolInitializer' }, { name: 'poolInitializerData', type: 'bytes', internalType: 'bytes' }, { name: 'liquidityMigrator', type: 'address', internalType: 'contract ILiquidityMigrator' }, { name: 'liquidityMigratorData', type: 'bytes', internalType: 'bytes' }, { name: 'integrator', type: 'address', internalType: 'address' }, { name: 'salt', type: 'bytes32', internalType: 'bytes32' } ] } ], outputs: [ { name: 'asset', type: 'address', internalType: 'address' }, { name: 'pool', type: 'address', internalType: 'address' }, { name: 'governance', type: 'address', internalType: 'address' }, { name: 'timelock', type: 'address', internalType: 'address' }, { name: 'migrationPool', type: 'address', internalType: 'address' } ], st
|
|
test/airlock-whitelisting.test.ts#L183
ContractFunctionExecutionError: HTTP request failed.
Status: 429
URL: https://mainnet.base.org
Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}
Raw Call Arguments:
to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
data: 0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731
Contract Call:
address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
function: getModuleState(address module)
args: (0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731)
Docs: https://viem.sh/docs/contract/readContract
Details: {"code":-32016,"message":"over rate limit"}
Version: viem@2.36.0
❯ getContractError node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/utils/errors/getContractError.ts:78:10
❯ readContract node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/actions/public/readContract.ts:137:11
❯ test/airlock-whitelisting.test.ts:183:26
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { details: '{"code":-32016,"message":"over rate limit"}', docsPath: '/docs/contract/readContract', metaMessages: [ 'Status: 429', 'URL: https://mainnet.base.org', 'Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}', ' ', 'Raw Call Arguments:', ' to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n data: 0x2e27c8de0000000000000000000000005f3ba43d44375286296cb85f1ea2ebfa25dde731', ' ', 'Contract Call:', ' address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n function: getModuleState(address module)\n args: (0x5F3bA43D44375286296Cb85F1EA2EBfa25dde731)' ], shortMessage: 'HTTP request failed.', version: '2.36.0', abi: [ { type: 'constructor', inputs: [ { name: 'owner_', type: 'address', internalType: 'address' } ], stateMutability: 'nonpayable' }, { type: 'receive', stateMutability: 'payable' }, { type: 'function', name: 'collectIntegratorFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'collectProtocolFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'create', inputs: [ { name: 'createData', type: 'tuple', internalType: 'struct CreateParams', components: [ { name: 'initialSupply', type: 'uint256', internalType: 'uint256' }, { name: 'numTokensToSell', type: 'uint256', internalType: 'uint256' }, { name: 'numeraire', type: 'address', internalType: 'address' }, { name: 'tokenFactory', type: 'address', internalType: 'contract ITokenFactory' }, { name: 'tokenFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'governanceFactory', type: 'address', internalType: 'contract IGovernanceFactory' }, { name: 'governanceFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'poolInitializer', type: 'address', internalType: 'contract IPoolInitializer' }, { name: 'poolInitializerData', type: 'bytes', internalType: 'bytes' }, { name: 'liquidityMigrator', type: 'address', internalType: 'contract ILiquidityMigrator' }, { name: 'liquidityMigratorData', type: 'bytes', internalType: 'bytes' }, { name: 'integrator', type: 'address', internalType: 'address' }, { name: 'salt', type: 'bytes32', internalType: 'bytes32' } ] } ], outputs: [ { name: 'asset', type: 'address', internalType: 'address' }, { name: 'pool', type: 'address', internalType: 'address' }, { name: 'governance', type: 'address', internalType: 'address' }, { name: 'timelock', type: 'address', internalType: 'address' }, { name: 'migrationPool', type: 'address', internalType: 'address' } ], st
|
|
test/airlock-whitelisting.test.ts#L169
ContractFunctionExecutionError: HTTP request failed.
Status: 429
URL: https://mainnet.base.org
Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de000000000000000000000000a36715da46ddf4a769f3290f49af58bf8132ed8e","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}
Raw Call Arguments:
to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
data: 0x2e27c8de000000000000000000000000a36715da46ddf4a769f3290f49af58bf8132ed8e
Contract Call:
address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
function: getModuleState(address module)
args: (0xA36715dA46Ddf4A769f3290f49AF58bF8132ED8E)
Docs: https://viem.sh/docs/contract/readContract
Details: {"code":-32016,"message":"over rate limit"}
Version: viem@2.36.0
❯ getContractError node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/utils/errors/getContractError.ts:78:10
❯ readContract node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/actions/public/readContract.ts:137:11
❯ test/airlock-whitelisting.test.ts:169:26
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { details: '{"code":-32016,"message":"over rate limit"}', docsPath: '/docs/contract/readContract', metaMessages: [ 'Status: 429', 'URL: https://mainnet.base.org', 'Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de000000000000000000000000a36715da46ddf4a769f3290f49af58bf8132ed8e","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}', ' ', 'Raw Call Arguments:', ' to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n data: 0x2e27c8de000000000000000000000000a36715da46ddf4a769f3290f49af58bf8132ed8e', ' ', 'Contract Call:', ' address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n function: getModuleState(address module)\n args: (0xA36715dA46Ddf4A769f3290f49AF58bF8132ED8E)' ], shortMessage: 'HTTP request failed.', version: '2.36.0', abi: [ { type: 'constructor', inputs: [ { name: 'owner_', type: 'address', internalType: 'address' } ], stateMutability: 'nonpayable' }, { type: 'receive', stateMutability: 'payable' }, { type: 'function', name: 'collectIntegratorFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'collectProtocolFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'create', inputs: [ { name: 'createData', type: 'tuple', internalType: 'struct CreateParams', components: [ { name: 'initialSupply', type: 'uint256', internalType: 'uint256' }, { name: 'numTokensToSell', type: 'uint256', internalType: 'uint256' }, { name: 'numeraire', type: 'address', internalType: 'address' }, { name: 'tokenFactory', type: 'address', internalType: 'contract ITokenFactory' }, { name: 'tokenFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'governanceFactory', type: 'address', internalType: 'contract IGovernanceFactory' }, { name: 'governanceFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'poolInitializer', type: 'address', internalType: 'contract IPoolInitializer' }, { name: 'poolInitializerData', type: 'bytes', internalType: 'bytes' }, { name: 'liquidityMigrator', type: 'address', internalType: 'contract ILiquidityMigrator' }, { name: 'liquidityMigratorData', type: 'bytes', internalType: 'bytes' }, { name: 'integrator', type: 'address', internalType: 'address' }, { name: 'salt', type: 'bytes32', internalType: 'bytes32' } ] } ], outputs: [ { name: 'asset', type: 'address', internalType: 'address' }, { name: 'pool', type: 'address', internalType: 'address' }, { name: 'governance', type: 'address', internalType: 'address' }, { name: 'timelock', type: 'address', internalType: 'address' }, { name: 'migrationPool', type: 'address', internalType: 'address' } ], st
|
|
test/airlock-whitelisting.test.ts#L153
ContractFunctionExecutionError: HTTP request failed.
Status: 429
URL: https://mainnet.base.org
Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de00000000000000000000000065de470da664a5be139a5d812be5fda0d76cc951","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}
Raw Call Arguments:
to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
data: 0x2e27c8de00000000000000000000000065de470da664a5be139a5d812be5fda0d76cc951
Contract Call:
address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12
function: getModuleState(address module)
args: (0x65dE470Da664A5be139A5D812bE5FDa0d76CC951)
Docs: https://viem.sh/docs/contract/readContract
Details: {"code":-32016,"message":"over rate limit"}
Version: viem@2.36.0
❯ getContractError node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/utils/errors/getContractError.ts:78:10
❯ readContract node_modules/.pnpm/viem@2.36.0_typescript@5.8.3/node_modules/viem/actions/public/readContract.ts:137:11
❯ test/airlock-whitelisting.test.ts:153:26
⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯⎯
Serialized Error: { details: '{"code":-32016,"message":"over rate limit"}', docsPath: '/docs/contract/readContract', metaMessages: [ 'Status: 429', 'URL: https://mainnet.base.org', 'Request body: {"method":"eth_call","params":[{"data":"0x2e27c8de00000000000000000000000065de470da664a5be139a5d812be5fda0d76cc951","to":"0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12"},"latest"]}', ' ', 'Raw Call Arguments:', ' to: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n data: 0x2e27c8de00000000000000000000000065de470da664a5be139a5d812be5fda0d76cc951', ' ', 'Contract Call:', ' address: 0x660eAaEdEBc968f8f3694354FA8EC0b4c5Ba8D12\n function: getModuleState(address module)\n args: (0x65dE470Da664A5be139A5D812bE5FDa0d76CC951)' ], shortMessage: 'HTTP request failed.', version: '2.36.0', abi: [ { type: 'constructor', inputs: [ { name: 'owner_', type: 'address', internalType: 'address' } ], stateMutability: 'nonpayable' }, { type: 'receive', stateMutability: 'payable' }, { type: 'function', name: 'collectIntegratorFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'collectProtocolFees', inputs: [ { name: 'to', type: 'address', internalType: 'address' }, { name: 'token', type: 'address', internalType: 'address' }, { name: 'amount', type: 'uint256', internalType: 'uint256' } ], outputs: [], stateMutability: 'nonpayable' }, { type: 'function', name: 'create', inputs: [ { name: 'createData', type: 'tuple', internalType: 'struct CreateParams', components: [ { name: 'initialSupply', type: 'uint256', internalType: 'uint256' }, { name: 'numTokensToSell', type: 'uint256', internalType: 'uint256' }, { name: 'numeraire', type: 'address', internalType: 'address' }, { name: 'tokenFactory', type: 'address', internalType: 'contract ITokenFactory' }, { name: 'tokenFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'governanceFactory', type: 'address', internalType: 'contract IGovernanceFactory' }, { name: 'governanceFactoryData', type: 'bytes', internalType: 'bytes' }, { name: 'poolInitializer', type: 'address', internalType: 'contract IPoolInitializer' }, { name: 'poolInitializerData', type: 'bytes', internalType: 'bytes' }, { name: 'liquidityMigrator', type: 'address', internalType: 'contract ILiquidityMigrator' }, { name: 'liquidityMigratorData', type: 'bytes', internalType: 'bytes' }, { name: 'integrator', type: 'address', internalType: 'address' }, { name: 'salt', type: 'bytes32', internalType: 'bytes32' } ] } ], outputs: [ { name: 'asset', type: 'address', internalType: 'address' }, { name: 'pool', type: 'address', internalType: 'address' }, { name: 'governance', type: 'address', internalType: 'address' }, { name: 'timelock', type: 'address', internalType: 'address' }, { name: 'migrationPool', type: 'address', internalType: 'address' } ], st
|
The logs for this run have expired and are no longer available.
Loading