diff --git a/.api-contract/README.md b/.api-contract/README.md new file mode 100644 index 00000000..f50beb5f --- /dev/null +++ b/.api-contract/README.md @@ -0,0 +1,3 @@ +# @polkadot/api-contract + +Interfaces to allow for the encoding and decoding of Substrate contract ABIs. diff --git a/.api-contract/build-deno/Abi/index.ts b/.api-contract/build-deno/Abi/index.ts new file mode 100644 index 00000000..06975e05 --- /dev/null +++ b/.api-contract/build-deno/Abi/index.ts @@ -0,0 +1,483 @@ +import type { Bytes, Vec } from 'https://deno.land/x/polkadot/types/mod.ts'; +import type { + ChainProperties, + ContractConstructorSpecLatest, + ContractEventParamSpecLatest, + ContractMessageParamSpecLatest, + ContractMessageSpecLatest, + ContractMetadata, + ContractMetadataV4, + ContractMetadataV5, + ContractProjectInfo, + ContractTypeSpec, + EventRecord, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Codec, Registry, TypeDef } from 'https://deno.land/x/polkadot/types/types/index.ts'; +import type { + AbiConstructor, + AbiEvent, + AbiEventParam, + AbiMessage, + AbiMessageParam, + AbiParam, + DecodedEvent, + DecodedMessage, +} from '../types.ts'; + +import { Option, TypeRegistry } from 'https://deno.land/x/polkadot/types/mod.ts'; +import { TypeDefInfo } from 'https://deno.land/x/polkadot/types-create/mod.ts'; +import { + assertReturn, + compactAddLength, + compactStripLength, + isBn, + isNumber, + isObject, + isString, + isUndefined, + logger, + stringCamelCase, + stringify, + u8aConcat, + u8aToHex, +} from 'https://deno.land/x/polkadot/util/mod.ts'; + +import { convertVersions, enumVersions } from './toLatestCompatible.ts'; + +interface AbiJson { + version?: string; + + [key: string]: unknown; +} + +type EventOf = M extends { spec: { events: Vec } } ? E : never; +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +type ContractEventSupported = EventOf; + +const l = logger('Abi'); + +const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; + +function findMessage(list: T[], messageOrId: T | string | number): T { + const message = isNumber(messageOrId) + ? list[messageOrId] + : isString(messageOrId) + ? list.find(({ identifier }) => + [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + + return assertReturn( + message, + () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`, + ); +} + +function getMetadata(registry: Registry, json: AbiJson): ContractMetadataSupported { + // this is for V1, V2, V3 + const vx = enumVersions.find(v => isObject(json[v])); + + // this was added in V4 + const jsonVersion = json.version; + + if (!vx && jsonVersion && !enumVersions.find(v => v === `V${jsonVersion}`)) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + + const converter = convertVersions.find(([v]) => metadata[`is${v}`]); + + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + + return upgradedMetadata; +} + +function parseJson( + json: Record, + chainProperties?: ChainProperties, +): [Record, Registry, ContractMetadataSupported, ContractProjectInfo] { + const registry = new TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; + const metadata = getMetadata(registry, json as unknown as AbiJson); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + + // attach the lookup to the registry - now the types are known + registry.setLookup(lookup); + + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + + // warm-up the actual type, pre-use + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + + return [json, registry, metadata, info]; +} + +/** + * @internal + * Determines if the given input value is a ContractTypeSpec + */ +function isTypeSpec(value: Codec): value is ContractTypeSpec { + return ( + !!value && + value instanceof Map && + !isUndefined((value as ContractTypeSpec).type) && + !isUndefined((value as ContractTypeSpec).displayName) + ); +} + +/** + * @internal + * Determines if the given input value is an Option + */ +function isOption(value: Codec): value is Option { + return !!value && value instanceof Option; +} + +export class Abi { + readonly events: AbiEvent[]; + readonly constructors: AbiConstructor[]; + readonly info: ContractProjectInfo; + readonly json: Record; + readonly messages: AbiMessage[]; + readonly metadata: ContractMetadataSupported; + readonly registry: Registry; + readonly environment = new Map(); + + constructor(abiJson: Record | string, chainProperties?: ChainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + isString(abiJson) ? (JSON.parse(abiJson) as Record) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map( + (spec: ContractConstructorSpecLatest, index) => + this.#createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_: ContractEventSupported, index: number) => + this.#createEvent(index), + ); + this.messages = this.metadata.spec.messages.map( + (spec: ContractMessageSpecLatest, index): AbiMessage => + this.#createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + + // NOTE See the rationale for having Option<...> values in the actual + // ContractEnvironmentV4 structure definition in interfaces/contractsAbi + // (Due to conversions, the fields may not exist) + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + + if (isBn(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + + /** + * Warning: Unstable API, bound to change + */ + public decodeEvent(record: EventRecord): DecodedEvent { + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.#decodeEventV4(record); + // Latest + default: + return this.#decodeEventV5(record); + } + } + + #decodeEventV5 = (record: EventRecord): DecodedEvent => { + // Find event by first topic, which potentially is the signature_topic + const signatureTopic = record.topics[0]; + const data = record.event.data[1] as Bytes; + + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } + } + + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter(a => a.indexed).length; + + if (amountIndexed !== amountOfTopics) { + return false; + } + + // If all conditions met, it's a potential event + return true; + }); + + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + + throw new Error('Unable to determine event'); + }; + + #decodeEventV4 = (record: EventRecord): DecodedEvent => { + const data = record.event.data[1] as Bytes; + const index = data[0]; + const event = this.events[index]; + + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + + return event.fromU8a(data.subarray(1)); + }; + + /** + * Warning: Unstable API, bound to change + */ + public decodeConstructor(data: Uint8Array): DecodedMessage { + return this.#decodeMessage('message', this.constructors, data); + } + + /** + * Warning: Unstable API, bound to change + */ + public decodeMessage(data: Uint8Array): DecodedMessage { + return this.#decodeMessage('message', this.messages, data); + } + + public findConstructor(constructorOrId: AbiConstructor | string | number): AbiConstructor { + return findMessage(this.constructors, constructorOrId); + } + + public findMessage(messageOrId: AbiMessage | string | number): AbiMessage { + return findMessage(this.messages, messageOrId); + } + + #createArgs = ( + args: ContractMessageParamSpecLatest[] | ContractEventParamSpecLatest[], + spec: unknown, + ): AbiParam[] => { + return args.map(({ label, type }, index): AbiParam => { + try { + if (!isObject(type)) { + throw new Error('Invalid type definition found'); + } + + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = stringCamelCase(label); + + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: TypeDefInfo.Plain, + type: displayName, + }, + }; + } + + const typeDef = this.registry.lookup.getTypeDef(type.type); + + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l.error(`Error expanding argument ${index} in ${stringify(spec)}`); + + throw error; + } + }); + }; + + #createMessageParams = ( + args: ContractMessageParamSpecLatest[], + spec: unknown, + ): AbiMessageParam[] => { + return this.#createArgs(args, spec); + }; + + #createEventParams = (args: ContractEventParamSpecLatest[], spec: unknown): AbiEventParam[] => { + const params = this.#createArgs(args, spec); + + return params.map( + (p, index): AbiEventParam => ({ ...p, indexed: args[index].indexed.toPrimitive() }), + ); + }; + + #createEvent = (index: number): AbiEvent => { + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.#createEventV4((this.metadata as ContractMetadataV4).spec.events[index], index); + default: + return this.#createEventV5((this.metadata as ContractMetadataV5).spec.events[index], index); + } + }; + + #createEventV5 = (spec: EventOf, index: number): AbiEvent => { + const args = this.#createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + + return event; + }; + + #createEventV4 = (spec: EventOf, index: number): AbiEvent => { + const args = this.#createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + + return event; + }; + + #createMessage = ( + spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, + index: number, + add: Partial = {}, + ): AbiMessage => { + const args = this.#createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: (data: Uint8Array): DecodedMessage => ({ + args: this.#decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: stringCamelCase(identifier), + path: identifier.split('::').map(s => stringCamelCase(s)), + selector: spec.selector, + toU8a: (params: unknown[]) => this.#encodeMessageArgs(spec, args, params), + }; + + return message; + }; + + #decodeArgs = (args: AbiParam[], data: Uint8Array): Codec[] => { + // for decoding we expect the input to be just the arg data, no selectors + // no length added (this allows use with events as well) + let offset = 0; + + return args.map(({ type: { lookupName, type } }): Codec => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + + offset += value.encodedLength; + + return value; + }); + }; + + #decodeMessage = ( + type: 'constructor' | 'message', + list: AbiMessage[], + data: Uint8Array, + ): DecodedMessage => { + const [, trimmed] = compactStripLength(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + + if (!message) { + throw new Error(`Unable to find ${type} with selector ${u8aToHex(selector)}`); + } + + return message.fromU8a(trimmed.subarray(4)); + }; + + #encodeMessageArgs = ( + { label, selector }: ContractMessageSpecLatest | ContractConstructorSpecLatest, + args: AbiMessageParam[], + data: unknown[], + ): Uint8Array => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + + return compactAddLength( + u8aConcat( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; +} diff --git a/.api-contract/build-deno/Abi/toLatestCompatible.ts b/.api-contract/build-deno/Abi/toLatestCompatible.ts new file mode 100644 index 00000000..71096fcb --- /dev/null +++ b/.api-contract/build-deno/Abi/toLatestCompatible.ts @@ -0,0 +1,53 @@ +import type { + ContractMetadataV4, + ContractMetadataV5, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Registry } from 'https://deno.land/x/polkadot/types/types/index.ts'; +import type { ContractMetadataSupported } from './index.ts'; + +import { v0ToV1 } from './toV1.ts'; +import { v1ToV2 } from './toV2.ts'; +import { v2ToV3 } from './toV3.ts'; +import { v3ToV4 } from './toV4.ts'; + +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; + +type Versions = (typeof enumVersions)[number] | 'V0'; + +type Converter = (registry: Registry, vx: any) => ContractMetadataSupported; + +function createConverter( + next: (registry: Registry, input: O) => ContractMetadataSupported, + step: (registry: Registry, input: I) => O, +): (registry: Registry, input: I) => ContractMetadataSupported { + return (registry: Registry, input: I): ContractMetadataSupported => + next(registry, step(registry, input)); +} + +export function v5ToLatestCompatible( + _registry: Registry, + v5: ContractMetadataV5, +): ContractMetadataV5 { + return v5; +} + +export function v4ToLatestCompatible( + _registry: Registry, + v4: ContractMetadataV4, +): ContractMetadataV4 { + return v4; +} + +export const v3ToLatestCompatible = /*#__PURE__*/ createConverter(v4ToLatestCompatible, v3ToV4); +export const v2ToLatestCompatible = /*#__PURE__*/ createConverter(v3ToLatestCompatible, v2ToV3); +export const v1ToLatestCompatible = /*#__PURE__*/ createConverter(v2ToLatestCompatible, v1ToV2); +export const v0ToLatestCompatible = /*#__PURE__*/ createConverter(v1ToLatestCompatible, v0ToV1); + +export const convertVersions: [Versions, Converter][] = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', v3ToLatestCompatible], + ['V2', v2ToLatestCompatible], + ['V1', v1ToLatestCompatible], + ['V0', v0ToLatestCompatible], +]; diff --git a/.api-contract/build-deno/Abi/toV1.ts b/.api-contract/build-deno/Abi/toV1.ts new file mode 100644 index 00000000..c3e2d595 --- /dev/null +++ b/.api-contract/build-deno/Abi/toV1.ts @@ -0,0 +1,37 @@ +import type { + ContractMetadataV0, + ContractMetadataV1, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Registry } from 'https://deno.land/x/polkadot/types/types/index.ts'; + +import { convertSiV0toV1 } from 'https://deno.land/x/polkadot/types/mod.ts'; +import { objectSpread } from 'https://deno.land/x/polkadot/util/mod.ts'; + +interface Named { + name: unknown; +} + +function v0ToV1Names(all: Named[]): unknown[] { + return all.map(e => + objectSpread({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); +} + +export function v0ToV1(registry: Registry, v0: ContractMetadataV0): ContractMetadataV1 { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + + return registry.createType( + 'ContractMetadataV1', + objectSpread({}, v0, { + spec: objectSpread({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: convertSiV0toV1(registry, v0.types), + }), + ); +} diff --git a/.api-contract/build-deno/Abi/toV2.ts b/.api-contract/build-deno/Abi/toV2.ts new file mode 100644 index 00000000..6f2832fe --- /dev/null +++ b/.api-contract/build-deno/Abi/toV2.ts @@ -0,0 +1,67 @@ +import type { Text } from 'https://deno.land/x/polkadot/types/mod.ts'; +import type { + ContractConstructorSpecV0, + ContractEventSpecV0, + ContractMessageSpecV0, + ContractMetadataV1, + ContractMetadataV2, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Registry } from 'https://deno.land/x/polkadot/types/types/index.ts'; + +import { objectSpread } from 'https://deno.land/x/polkadot/util/mod.ts'; + +type WithArgs = keyof typeof ARG_TYPES; + +interface NamedEntry { + name: Text | Text[]; +} + +type GetArgsType = T extends 'ContractConstructorSpec' + ? ContractConstructorSpecV0 + : T extends ContractEventSpecV0 + ? ContractEventSpecV0 + : ContractMessageSpecV0; + +interface ArgsEntry extends NamedEntry { + args: GetArgsType['args'][0][]; +} + +const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', +} as const; + +function v1ToV2Label(entry: NamedEntry): { label: Text } { + return objectSpread({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); +} + +function v1ToV2Labels( + registry: Registry, + outType: T, + all: ArgsEntry[], +): unknown[] { + return all.map(e => + registry.createType( + `${outType}V2`, + objectSpread(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); +} + +export function v1ToV2(registry: Registry, v1: ContractMetadataV1): ContractMetadataV2 { + return registry.createType( + 'ContractMetadataV2', + objectSpread({}, v1, { + spec: objectSpread({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); +} diff --git a/.api-contract/build-deno/Abi/toV3.ts b/.api-contract/build-deno/Abi/toV3.ts new file mode 100644 index 00000000..bfb04542 --- /dev/null +++ b/.api-contract/build-deno/Abi/toV3.ts @@ -0,0 +1,21 @@ +import type { + ContractMetadataV2, + ContractMetadataV3, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Registry } from 'https://deno.land/x/polkadot/types/types/index.ts'; + +import { objectSpread } from 'https://deno.land/x/polkadot/util/mod.ts'; + +export function v2ToV3(registry: Registry, v2: ContractMetadataV2): ContractMetadataV3 { + return registry.createType( + 'ContractMetadataV3', + objectSpread({}, v2, { + spec: objectSpread({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + // V3 introduces the payable flag on constructors, for + registry.createType('ContractConstructorSpecV4', objectSpread({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', objectSpread({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); +} diff --git a/.api-contract/build-deno/README.md b/.api-contract/build-deno/README.md new file mode 100644 index 00000000..f50beb5f --- /dev/null +++ b/.api-contract/build-deno/README.md @@ -0,0 +1,3 @@ +# @polkadot/api-contract + +Interfaces to allow for the encoding and decoding of Substrate contract ABIs. diff --git a/.api-contract/build-deno/augment.ts b/.api-contract/build-deno/augment.ts new file mode 100644 index 00000000..3db96e01 --- /dev/null +++ b/.api-contract/build-deno/augment.ts @@ -0,0 +1 @@ +import 'https://deno.land/x/polkadot/api-augment/mod.ts'; diff --git a/.api-contract/build-deno/base/Base.ts b/.api-contract/build-deno/base/Base.ts new file mode 100644 index 00000000..29e11941 --- /dev/null +++ b/.api-contract/build-deno/base/Base.ts @@ -0,0 +1,49 @@ +import type { ApiBase } from 'https://deno.land/x/polkadot/api/base/index.ts'; +import type { ApiTypes, DecorateMethod } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { WeightV2 } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Registry } from 'https://deno.land/x/polkadot/types/types/index.ts'; + +import { isFunction } from 'https://deno.land/x/polkadot/util/mod.ts'; + +import { Abi } from '../Abi/index.ts'; + +export abstract class Base { + readonly abi: Abi; + readonly api: ApiBase; + + protected readonly _decorateMethod: DecorateMethod; + protected readonly _isWeightV1: boolean; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + decorateMethod: DecorateMethod, + ) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !isFunction(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !isFunction(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + + this.abi = abi instanceof Abi ? abi : new Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + + public get registry(): Registry { + return this.api.registry; + } +} diff --git a/.api-contract/build-deno/base/Blueprint.ts b/.api-contract/build-deno/base/Blueprint.ts new file mode 100644 index 00000000..86824dc9 --- /dev/null +++ b/.api-contract/build-deno/base/Blueprint.ts @@ -0,0 +1,113 @@ +import type { ApiBase } from 'https://deno.land/x/polkadot/api/base/index.ts'; +import type { SubmittableExtrinsic } from 'https://deno.land/x/polkadot/api/submittable/types.ts'; +import type { ApiTypes, DecorateMethod } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { Hash } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { ISubmittableResult } from 'https://deno.land/x/polkadot/types/types/index.ts'; +import type { Abi } from '../Abi/index.ts'; +import type { AbiConstructor, BlueprintOptions } from '../types.ts'; +import type { MapConstructorExec } from './types.ts'; + +import { SubmittableResult } from 'https://deno.land/x/polkadot/api/mod.ts'; +import { BN_ZERO, isUndefined } from 'https://deno.land/x/polkadot/util/mod.ts'; + +import { Base } from './Base.ts'; +import { Contract } from './Contract.ts'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.ts'; + +export type BlueprintConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, +) => Blueprint; + +export class BlueprintSubmittableResult extends SubmittableResult { + readonly contract?: Contract | undefined; + + constructor(result: ISubmittableResult, contract?: Contract) { + super(result); + + this.contract = contract; + } +} + +export class Blueprint extends Base { + /** + * @description The on-chain code hash for this blueprint + */ + readonly codeHash: Hash; + + readonly #tx: MapConstructorExec = {}; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + decorateMethod: DecorateMethod, + ) { + super(api, abi, decorateMethod); + + this.codeHash = this.registry.createType('Hash', codeHash); + + this.abi.constructors.forEach((c): void => { + if (isUndefined(this.#tx[c.method])) { + this.#tx[c.method] = createBluePrintTx(c, (o, p) => this.#deploy(c, o, p)); + } + }); + } + + public get tx(): MapConstructorExec { + return this.#tx; + } + + #deploy = ( + constructorOrId: AbiConstructor | string | number, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }: BlueprintOptions, + params: unknown[], + ): SubmittableExtrinsic> => { + return this.api.tx.revive + .instantiate( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + (result: ISubmittableResult) => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; +} + +export function extendBlueprint( + type: ApiType, + decorateMethod: DecorateMethod, +): BlueprintConstructor { + return class extends Blueprint { + static __BlueprintType = type; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + ) { + super(api, abi, codeHash, decorateMethod); + } + }; +} diff --git a/.api-contract/build-deno/base/Code.ts b/.api-contract/build-deno/base/Code.ts new file mode 100644 index 00000000..7889a33c --- /dev/null +++ b/.api-contract/build-deno/base/Code.ts @@ -0,0 +1,137 @@ +import { Buffer } from 'node:buffer'; + +import type { ApiBase } from 'https://deno.land/x/polkadot/api/base/index.ts'; +import type { SubmittableExtrinsic } from 'https://deno.land/x/polkadot/api/submittable/types.ts'; +import type { ApiTypes, DecorateMethod } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { ISubmittableResult } from 'https://deno.land/x/polkadot/types/types/index.ts'; +import type { Codec } from 'https://deno.land/x/polkadot/types-codec/types/index.ts'; +import type { Abi } from '../Abi/index.ts'; +import type { AbiConstructor, BlueprintOptions } from '../types.ts'; +import type { MapConstructorExec } from './types.ts'; + +import { SubmittableResult } from 'https://deno.land/x/polkadot/api/mod.ts'; +import { + BN_ZERO, + compactAddLength, + isRiscV, + isUndefined, + isWasm, + u8aToU8a, +} from 'https://deno.land/x/polkadot/util/mod.ts'; + +import { Base } from './Base.ts'; +import { Blueprint } from './Blueprint.ts'; +import { Contract } from './Contract.ts'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.ts'; + +export type CodeConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, +) => Code; + +export class CodeSubmittableResult extends SubmittableResult { + readonly blueprint?: Blueprint | undefined; + readonly contract?: Contract | undefined; + + constructor( + result: ISubmittableResult, + blueprint?: Blueprint | undefined, + contract?: Contract | undefined, + ) { + super(result); + + this.blueprint = blueprint; + this.contract = contract; + } +} + +function isValidCode(code: Uint8Array): boolean { + return isWasm(code) || isRiscV(code); +} + +export class Code extends Base { + readonly code: Uint8Array; + + readonly #tx: MapConstructorExec = {}; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + decorateMethod: DecorateMethod, + ) { + super(api, abi, decorateMethod); + + this.code = isValidCode(this.abi.info.source.wasm) ? this.abi.info.source.wasm : u8aToU8a(wasm); + + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + + this.abi.constructors.forEach((c): void => { + if (isUndefined(this.#tx[c.method])) { + this.#tx[c.method] = createBluePrintTx(c, (o, p) => this.#instantiate(c, o, p)); + } + }); + } + + public get tx(): MapConstructorExec { + return this.#tx; + } + + #instantiate = ( + constructorOrId: AbiConstructor | string | number, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }: BlueprintOptions, + params: unknown[], + ): SubmittableExtrinsic> => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + compactAddLength(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + (result: ISubmittableResult) => + new CodeSubmittableResult( + result, + new Blueprint( + this.api, + this.abi, + this.abi.info.source.wasmHash, + this._decorateMethod, + ), + new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; +} + +export function extendCode( + type: ApiType, + decorateMethod: DecorateMethod, +): CodeConstructor { + return class extends Code { + static __CodeType = type; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ) { + super(api, abi, wasm, decorateMethod); + } + }; +} diff --git a/.api-contract/build-deno/base/Contract.ts b/.api-contract/build-deno/base/Contract.ts new file mode 100644 index 00000000..9f68caa5 --- /dev/null +++ b/.api-contract/build-deno/base/Contract.ts @@ -0,0 +1,264 @@ +import type { ApiBase } from 'https://deno.land/x/polkadot/api/base/index.ts'; +import type { SubmittableExtrinsic } from 'https://deno.land/x/polkadot/api/submittable/types.ts'; +import type { ApiTypes, DecorateMethod } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { + AccountId, + AccountId20, + ContractExecResult, + EventRecord, + Weight, + WeightV2, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { ISubmittableResult } from 'https://deno.land/x/polkadot/types/types/index.ts'; +import type { Abi } from '../Abi/index.ts'; +import type { + AbiMessage, + ContractCallOutcome, + ContractOptions, + DecodedEvent, + WeightAll, +} from '../types.ts'; +import type { + ContractCallResult, + ContractCallSend, + ContractQuery, + ContractTx, + MapMessageQuery, + MapMessageTx, +} from './types.ts'; + +import { map } from 'https://esm.sh/rxjs@7.8.1'; + +import { SubmittableResult } from 'https://deno.land/x/polkadot/api/mod.ts'; +import { + BN, + BN_HUNDRED, + BN_ONE, + BN_ZERO, + isUndefined, + logger, +} from 'https://deno.land/x/polkadot/util/mod.ts'; + +import { applyOnEvent } from '../util.ts'; +import { Base } from './Base.ts'; +import { convertWeight, withMeta } from './util.ts'; + +export type ContractConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, +) => Contract; + +const MAX_CALL_GAS = new BN(5_000_000_000_000).isub(BN_ONE); + +const l = logger('Contract'); + +function createQuery( + meta: AbiMessage, + fn: ( + origin: string | AccountId | Uint8Array, + options: ContractOptions, + params: unknown[], + ) => ContractCallResult, +): ContractQuery { + return withMeta( + meta, + ( + origin: string | AccountId | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult => fn(origin, options, params), + ); +} + +function createTx( + meta: AbiMessage, + fn: (options: ContractOptions, params: unknown[]) => SubmittableExtrinsic, +): ContractTx { + return withMeta( + meta, + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic => + fn(options, params), + ); +} + +export class ContractSubmittableResult extends SubmittableResult { + readonly contractEvents?: DecodedEvent[] | undefined; + + constructor(result: ISubmittableResult, contractEvents?: DecodedEvent[]) { + super(result); + + this.contractEvents = contractEvents; + } +} + +export class Contract extends Base { + /** + * @description The on-chain address for this contract + */ + readonly address: AccountId20; + + readonly #query: MapMessageQuery = {}; + readonly #tx: MapMessageTx = {}; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId20, + decorateMethod: DecorateMethod, + ) { + super(api, abi, decorateMethod); + + this.address = this.registry.createType('AccountId20', address); + + this.abi.messages.forEach((m): void => { + if (isUndefined(this.#tx[m.method])) { + this.#tx[m.method] = createTx(m, (o, p) => this.#exec(m, o, p)); + } + + if (isUndefined(this.#query[m.method])) { + this.#query[m.method] = createQuery(m, (f, o, p) => this.#read(m, o, p).send(f)); + } + }); + } + + public get query(): MapMessageQuery { + return this.#query; + } + + public get tx(): MapMessageTx { + return this.#tx; + } + + #getGas = (_gasLimit: bigint | BN | string | number | WeightV2, isCall = false): WeightAll => { + const weight = convertWeight(_gasLimit); + + if (weight.v1Weight.gt(BN_ZERO)) { + return weight; + } + + return convertWeight( + isCall + ? MAX_CALL_GAS + : convertWeight( + this.api.consts.system.blockWeights + ? (this.api.consts.system.blockWeights as unknown as { maxBlock: WeightV2 }).maxBlock + : (this.api.consts.system['maximumBlockWeight'] as Weight), + ) + .v1Weight.muln(64) + .div(BN_HUNDRED), + ); + }; + + #exec = ( + messageOrId: AbiMessage | string | number, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }: ContractOptions, + params: unknown[], + ): SubmittableExtrinsic => { + return this.api.tx.revive + .call( + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + (result: ISubmittableResult) => + // ContractEmitted is the current generation, ContractExecution is the previous generation + new ContractSubmittableResult( + result, + applyOnEvent( + result, + ['ContractEmitted', 'ContractExecution'], + (records: EventRecord[]) => + records + .map((record): DecodedEvent | null => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${(error as Error).message}`); + + return null; + } + }) + .filter((decoded): decoded is DecodedEvent => !!decoded), + ), + ), + ); + }; + + #read = ( + messageOrId: AbiMessage | string | number, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }: ContractOptions, + params: unknown[], + ): ContractCallSend => { + const message = this.abi.findMessage(messageOrId); + + return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + send: this._decorateMethod((origin: string | AccountId | Uint8Array) => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? this.#getGas(gasLimit, true).v1Weight + : this.#getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + map( + ({ + debugMessage, + gasConsumed, + gasRequired, + result, + storageDeposit, + }): ContractCallOutcome => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !convertWeight(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + }), + ), + ), + ), + }; + }; +} + +export function extendContract( + type: ApiType, + decorateMethod: DecorateMethod, +): ContractConstructor { + return class extends Contract { + static __ContractType = type; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, + ) { + super(api, abi, address, decorateMethod); + } + }; +} diff --git a/.api-contract/build-deno/base/index.ts b/.api-contract/build-deno/base/index.ts new file mode 100644 index 00000000..b4134289 --- /dev/null +++ b/.api-contract/build-deno/base/index.ts @@ -0,0 +1,3 @@ +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.ts'; +export { Code, CodeSubmittableResult, extendCode } from './Code.ts'; +export { Contract, extendContract } from './Contract.ts'; diff --git a/.api-contract/build-deno/base/mock.ts b/.api-contract/build-deno/base/mock.ts new file mode 100644 index 00000000..dff856bf --- /dev/null +++ b/.api-contract/build-deno/base/mock.ts @@ -0,0 +1,28 @@ +import type { ApiBase } from 'https://deno.land/x/polkadot/api/base/index.ts'; + +import { TypeRegistry } from 'https://deno.land/x/polkadot/types/mod.ts'; + +const registry = new TypeRegistry(); + +const instantiateWithCode = (): never => { + throw new Error('mock'); +}; + +instantiateWithCode.meta = { args: new Array(6) }; + +export const mockApi = { + call: { + contractsApi: { + call: (): never => { + throw new Error('mock'); + }, + }, + }, + isConnected: true, + registry, + tx: { + contracts: { + instantiateWithCode, + }, + }, +} as unknown as ApiBase<'promise'>; diff --git a/.api-contract/build-deno/base/types.ts b/.api-contract/build-deno/base/types.ts new file mode 100644 index 00000000..921d3f01 --- /dev/null +++ b/.api-contract/build-deno/base/types.ts @@ -0,0 +1,50 @@ +import type { Observable } from 'https://esm.sh/rxjs@7.8.1'; +import type { SubmittableExtrinsic } from 'https://deno.land/x/polkadot/api/submittable/types.ts'; +import type { ApiTypes, ObsInnerType } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { AccountId } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { + AbiMessage, + BlueprintOptions, + ContractCallOutcome, + ContractOptions, +} from '../types.ts'; + +export interface MessageMeta { + readonly meta: AbiMessage; +} + +export interface BlueprintDeploy extends MessageMeta { + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic; +} + +export interface ContractQuery extends MessageMeta { + ( + origin: AccountId | string | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult; +} + +export interface ContractTx extends MessageMeta { + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic; +} + +export type ContractGeneric = ( + messageOrId: AbiMessage | string | number, + options: O, + ...params: unknown[] +) => T; + +export type ContractCallResult = ApiType extends 'rxjs' + ? Observable + : Promise>>; + +export interface ContractCallSend { + send(account: string | AccountId | Uint8Array): ContractCallResult; +} + +export type MapConstructorExec = Record>; + +export type MapMessageTx = Record>; + +export type MapMessageQuery = Record>; diff --git a/.api-contract/build-deno/base/util.ts b/.api-contract/build-deno/base/util.ts new file mode 100644 index 00000000..edea08de --- /dev/null +++ b/.api-contract/build-deno/base/util.ts @@ -0,0 +1,74 @@ +import type { SubmittableResult } from 'https://deno.land/x/polkadot/api/mod.ts'; +import type { SubmittableExtrinsic } from 'https://deno.land/x/polkadot/api/submittable/types.ts'; +import type { ApiTypes } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { WeightV1, WeightV2 } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { BN } from 'https://deno.land/x/polkadot/util/mod.ts'; +import type { AbiConstructor, AbiMessage, BlueprintOptions, WeightAll } from '../types.ts'; +import type { BlueprintDeploy, ContractGeneric } from './types.ts'; + +import { Bytes } from 'https://deno.land/x/polkadot/types/mod.ts'; +import { bnToBn, compactAddLength, u8aToU8a } from 'https://deno.land/x/polkadot/util/mod.ts'; +import { randomAsU8a } from 'https://deno.land/x/polkadot/util-crypto/mod.ts'; + +export const EMPTY_SALT = new Uint8Array(); + +export function withMeta( + meta: AbiMessage, + creator: Omit, +): T { + (creator as T).meta = meta; + + return creator as T; +} + +export function createBluePrintTx( + meta: AbiMessage, + fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic, +): BlueprintDeploy { + return withMeta( + meta, + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic => + fn(options, params), + ); +} + +export function createBluePrintWithId( + fn: ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + params: unknown[], + ) => T, +): ContractGeneric { + return ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + ...params: unknown[] + ): T => fn(constructorOrId, options, params); +} + +export function encodeSalt(salt: Uint8Array | string | null = randomAsU8a()): Uint8Array { + return salt instanceof Bytes + ? salt + : salt?.length + ? compactAddLength(u8aToU8a(salt)) + : EMPTY_SALT; +} + +export function convertWeight( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): WeightAll { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [bnToBn(weight), undefined]; + + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; +} + +export function isWeightV2( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): weight is WeightV2 { + return !!(weight as WeightV2).proofSize; +} diff --git a/.api-contract/build-deno/bundle.ts b/.api-contract/build-deno/bundle.ts new file mode 100644 index 00000000..00f652cf --- /dev/null +++ b/.api-contract/build-deno/bundle.ts @@ -0,0 +1,5 @@ +export { Abi } from './Abi/index.ts'; +export { packageInfo } from './packageInfo.ts'; + +export * from './promise/index.ts'; +export * from './rx/index.ts'; diff --git a/.api-contract/build-deno/checkTypes.manual.ts b/.api-contract/build-deno/checkTypes.manual.ts new file mode 100644 index 00000000..4f0b0c8e --- /dev/null +++ b/.api-contract/build-deno/checkTypes.manual.ts @@ -0,0 +1,42 @@ +import 'https://deno.land/x/polkadot/api-augment/mod.ts'; + +import type { TestKeyringMapSubstrate } from 'https://deno.land/x/polkadot/keyring/testingPairs.ts'; + +import { ApiPromise } from 'https://deno.land/x/polkadot/api/mod.ts'; +import { + BlueprintPromise, + ContractPromise, +} from 'https://deno.land/x/polkadot/api-contract/mod.ts'; +import { createTestPairs } from 'https://deno.land/x/polkadot/keyring/testingPairs.ts'; + +import abiIncrementer from './test/contracts/ink/v0/incrementer.json' assert { type: 'json' }; + +async function checkBlueprint(api: ApiPromise, pairs: TestKeyringMapSubstrate): Promise { + const blueprint = new BlueprintPromise(api, abiIncrementer as Record, '0x1234'); + + await blueprint.tx['new']({ gasLimit: 456, salt: '0x1234', value: 123 }, 42).signAndSend( + pairs.bob, + ); + await blueprint.tx['new']({ gasLimit: 456, value: 123 }, 42).signAndSend(pairs.bob); +} + +async function checkContract(api: ApiPromise, pairs: TestKeyringMapSubstrate): Promise { + const contract = new ContractPromise(api, abiIncrementer as Record, '0x1234'); + + // queries + await contract.query['get'](pairs.alice.address, {}); + + // execute + await contract.tx['inc']({ gasLimit: 1234 }, 123).signAndSend(pairs.eve); +} + +async function main(): Promise { + const api = await ApiPromise.create({ + hasher: (data: Uint8Array): Uint8Array => data, + }); + const pairs = createTestPairs(); + + await Promise.all([checkBlueprint(api, pairs), checkContract(api, pairs)]); +} + +main().catch(console.error); diff --git a/.api-contract/build-deno/index.ts b/.api-contract/build-deno/index.ts new file mode 100644 index 00000000..0171e125 --- /dev/null +++ b/.api-contract/build-deno/index.ts @@ -0,0 +1,3 @@ +import './packageDetect.ts'; + +export * from './bundle.ts'; diff --git a/.api-contract/build-deno/mod.ts b/.api-contract/build-deno/mod.ts new file mode 100644 index 00000000..85fbe785 --- /dev/null +++ b/.api-contract/build-deno/mod.ts @@ -0,0 +1 @@ +export * from './index.ts'; diff --git a/.api-contract/build-deno/packageDetect.ts b/.api-contract/build-deno/packageDetect.ts new file mode 100644 index 00000000..971ca8bd --- /dev/null +++ b/.api-contract/build-deno/packageDetect.ts @@ -0,0 +1,7 @@ +import { packageInfo as apiInfo } from 'https://deno.land/x/polkadot/api/packageInfo.ts'; +import { packageInfo as typesInfo } from 'https://deno.land/x/polkadot/types/packageInfo.ts'; +import { detectPackage } from 'https://deno.land/x/polkadot/util/mod.ts'; + +import { packageInfo } from './packageInfo.ts'; + +detectPackage(packageInfo, null, [apiInfo, typesInfo]); diff --git a/.api-contract/build-deno/packageInfo.ts b/.api-contract/build-deno/packageInfo.ts new file mode 100644 index 00000000..0ca48fa7 --- /dev/null +++ b/.api-contract/build-deno/packageInfo.ts @@ -0,0 +1,6 @@ +export const packageInfo = { + name: '@polkadot/api-contract', + path: new URL(import.meta.url).pathname, + type: 'deno', + version: '15.8.1', +}; diff --git a/.api-contract/build-deno/promise/index.ts b/.api-contract/build-deno/promise/index.ts new file mode 100644 index 00000000..aeaa6289 --- /dev/null +++ b/.api-contract/build-deno/promise/index.ts @@ -0,0 +1,39 @@ +import { Buffer } from 'node:buffer'; + +import type { ApiPromise } from 'https://deno.land/x/polkadot/api/mod.ts'; +import type { AccountId20, Hash } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Abi } from '../Abi/index.ts'; + +import { toPromiseMethod } from 'https://deno.land/x/polkadot/api/mod.ts'; + +import { Blueprint, Code, Contract } from '../base/index.ts'; + +export class BlueprintPromise extends Blueprint<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + codeHash: string | Hash, + ) { + super(api, abi, codeHash, toPromiseMethod); + } +} + +export class CodePromise extends Code<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ) { + super(api, abi, wasm, toPromiseMethod); + } +} + +export class ContractPromise extends Contract<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + address: string | AccountId20, + ) { + super(api, abi, address, toPromiseMethod); + } +} diff --git a/.api-contract/build-deno/promise/types.ts b/.api-contract/build-deno/promise/types.ts new file mode 100644 index 00000000..5ec4c7c7 --- /dev/null +++ b/.api-contract/build-deno/promise/types.ts @@ -0,0 +1,7 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.ts'; + +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build-deno/rx/index.ts b/.api-contract/build-deno/rx/index.ts new file mode 100644 index 00000000..77330f69 --- /dev/null +++ b/.api-contract/build-deno/rx/index.ts @@ -0,0 +1,35 @@ +import { Buffer } from 'node:buffer'; + +import type { ApiRx } from 'https://deno.land/x/polkadot/api/mod.ts'; +import type { AccountId, Hash } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Abi } from '../Abi/index.ts'; + +import { toRxMethod } from 'https://deno.land/x/polkadot/api/mod.ts'; + +import { Blueprint, Code, Contract } from '../base/index.ts'; + +export class BlueprintRx extends Blueprint<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, codeHash: string | Hash) { + super(api, abi, codeHash, toRxMethod); + } +} + +export class CodeRx extends Code<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ) { + super(api, abi, wasm, toRxMethod); + } +} + +export class ContractRx extends Contract<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + address: string | AccountId, + ) { + super(api, abi, address, toRxMethod); + } +} diff --git a/.api-contract/build-deno/rx/types.ts b/.api-contract/build-deno/rx/types.ts new file mode 100644 index 00000000..5ec4c7c7 --- /dev/null +++ b/.api-contract/build-deno/rx/types.ts @@ -0,0 +1,7 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.ts'; + +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build-deno/test/contracts/index.ts b/.api-contract/build-deno/test/contracts/index.ts new file mode 100644 index 00000000..3010de57 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/index.ts @@ -0,0 +1,13 @@ +import ink from './ink/index.ts'; +import solang from './solang/index.ts'; +import user from './user/index.ts'; + +const all: Record> = {}; + +Object.entries({ ink, solang, user }).forEach(([type, abis]) => + Object.entries(abis).forEach(([name, abi]): void => { + all[`${type}_${name}`] = abi; + }), +); + +export default all; diff --git a/.api-contract/build-deno/test/contracts/ink/index.ts b/.api-contract/build-deno/test/contracts/ink/index.ts new file mode 100644 index 00000000..4f790318 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/index.ts @@ -0,0 +1,9 @@ +import { createVersionedExport } from '../util.ts'; +import * as v0 from './v0/index.ts'; +import * as v1 from './v1/index.ts'; +import * as v2 from './v2/index.ts'; +import * as v3 from './v3/index.ts'; +import * as v4 from './v4/index.ts'; +import * as v5 from './v5/index.ts'; + +export default createVersionedExport({ v0, v1, v2, v3, v4, v5 }); diff --git a/.api-contract/build-deno/test/contracts/ink/v0/accumulator.wasm b/.api-contract/build-deno/test/contracts/ink/v0/accumulator.wasm new file mode 100644 index 00000000..33197e6b Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/accumulator.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/adder.wasm b/.api-contract/build-deno/test/contracts/ink/v0/adder.wasm new file mode 100644 index 00000000..37f0003c Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/adder.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/delegator.wasm b/.api-contract/build-deno/test/contracts/ink/v0/delegator.wasm new file mode 100644 index 00000000..5a189ee0 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/delegator.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/dns.wasm b/.api-contract/build-deno/test/contracts/ink/v0/dns.wasm new file mode 100644 index 00000000..5a173a89 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/dns.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/erc20.wasm b/.api-contract/build-deno/test/contracts/ink/v0/erc20.wasm new file mode 100644 index 00000000..4ce6dd24 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/erc20.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/erc721.wasm b/.api-contract/build-deno/test/contracts/ink/v0/erc721.wasm new file mode 100644 index 00000000..8bbdf89b Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/erc721.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/flipper.wasm b/.api-contract/build-deno/test/contracts/ink/v0/flipper.wasm new file mode 100644 index 00000000..5b43da17 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/flipper.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/incrementer.wasm b/.api-contract/build-deno/test/contracts/ink/v0/incrementer.wasm new file mode 100644 index 00000000..b059a693 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/incrementer.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/index.ts b/.api-contract/build-deno/test/contracts/ink/v0/index.ts new file mode 100644 index 00000000..78a2ecee --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/v0/index.ts @@ -0,0 +1,8 @@ +export { default as delegator } from './delegator.json' assert { type: 'json' }; +export { default as dns } from './dns.json' assert { type: 'json' }; +export { default as erc20 } from './erc20.json' assert { type: 'json' }; +export { default as erc721 } from './erc721.json' assert { type: 'json' }; +export { default as flipperBundle } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipper } from './flipper.json' assert { type: 'json' }; +export { default as incrementer } from './incrementer.json' assert { type: 'json' }; +export { default as multisigPlain } from './multisig_plain.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/ink/v0/multisig_plain.wasm b/.api-contract/build-deno/test/contracts/ink/v0/multisig_plain.wasm new file mode 100644 index 00000000..74341e84 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/multisig_plain.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/subber.wasm b/.api-contract/build-deno/test/contracts/ink/v0/subber.wasm new file mode 100644 index 00000000..76d2a55f Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/subber.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v0/trait-flipper.wasm b/.api-contract/build-deno/test/contracts/ink/v0/trait-flipper.wasm new file mode 100644 index 00000000..53720c42 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v0/trait-flipper.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v1/index.ts b/.api-contract/build-deno/test/contracts/ink/v1/index.ts new file mode 100644 index 00000000..bd8a4476 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/v1/index.ts @@ -0,0 +1,2 @@ +export { default as flipper } from './flipper.contract.json' assert { type: 'json' }; +export { default as psp22 } from './psp22_minter_pauser.contract.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/ink/v2/index.ts b/.api-contract/build-deno/test/contracts/ink/v2/index.ts new file mode 100644 index 00000000..3f096bbc --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/v2/index.ts @@ -0,0 +1,2 @@ +export { default as erc20 } from './erc20.contract.json' assert { type: 'json' }; +export { default as flipper } from './flipper.contract.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/ink/v3/index.ts b/.api-contract/build-deno/test/contracts/ink/v3/index.ts new file mode 100644 index 00000000..a6f2d7fa --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/v3/index.ts @@ -0,0 +1,2 @@ +export { default as flipper } from './flipper.contract.json' assert { type: 'json' }; +export { default as traitErc20 } from './trait_erc20.contract.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/ink/v4/erc20.wasm b/.api-contract/build-deno/test/contracts/ink/v4/erc20.wasm new file mode 100644 index 00000000..799afda9 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v4/erc20.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v4/flipper.wasm b/.api-contract/build-deno/test/contracts/ink/v4/flipper.wasm new file mode 100644 index 00000000..3f77edb2 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v4/flipper.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v4/index.ts b/.api-contract/build-deno/test/contracts/ink/v4/index.ts new file mode 100644 index 00000000..33a79fff --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/v4/index.ts @@ -0,0 +1,4 @@ +export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; +export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/ink/v5/erc20.wasm b/.api-contract/build-deno/test/contracts/ink/v5/erc20.wasm new file mode 100644 index 00000000..f6800bb8 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v5/erc20.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v5/flipper.wasm b/.api-contract/build-deno/test/contracts/ink/v5/flipper.wasm new file mode 100644 index 00000000..c359b6db Binary files /dev/null and b/.api-contract/build-deno/test/contracts/ink/v5/flipper.wasm differ diff --git a/.api-contract/build-deno/test/contracts/ink/v5/index.ts b/.api-contract/build-deno/test/contracts/ink/v5/index.ts new file mode 100644 index 00000000..7e042a48 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/ink/v5/index.ts @@ -0,0 +1,5 @@ +export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; +export { default as erc20AnonymousTransferMetadata } from './erc20_anonymous_transfer.json' assert { type: 'json' }; +export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/solang/index.ts b/.api-contract/build-deno/test/contracts/solang/index.ts new file mode 100644 index 00000000..dbf46e5f --- /dev/null +++ b/.api-contract/build-deno/test/contracts/solang/index.ts @@ -0,0 +1,4 @@ +import { createVersionedExport } from '../util.ts'; +import * as v0 from './v0/index.ts'; + +export default createVersionedExport({ v0 }); diff --git a/.api-contract/build-deno/test/contracts/solang/v0/index.ts b/.api-contract/build-deno/test/contracts/solang/v0/index.ts new file mode 100644 index 00000000..1853c756 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/solang/v0/index.ts @@ -0,0 +1 @@ +export { default as ints256 } from './ints256.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/solang/v0/ints256.sol b/.api-contract/build-deno/test/contracts/solang/v0/ints256.sol new file mode 100644 index 00000000..1225a6b9 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/solang/v0/ints256.sol @@ -0,0 +1,13 @@ +/// @title Test 256 bits types +/// @author Sean Young +contract ints256 { + /// Multiply two 256 bit values + function multiply(uint256 a, uint256 b) public pure returns (uint256) { + return a * b; + } + + /// Add two 256 bit values + function add(uint256 a, uint256 b) public pure returns (uint256) { + return a + b; + } +} diff --git a/.api-contract/build-deno/test/contracts/solang/v0/ints256.wasm b/.api-contract/build-deno/test/contracts/solang/v0/ints256.wasm new file mode 100644 index 00000000..1973316b Binary files /dev/null and b/.api-contract/build-deno/test/contracts/solang/v0/ints256.wasm differ diff --git a/.api-contract/build-deno/test/contracts/user/index.ts b/.api-contract/build-deno/test/contracts/user/index.ts new file mode 100644 index 00000000..ba05c9ed --- /dev/null +++ b/.api-contract/build-deno/test/contracts/user/index.ts @@ -0,0 +1,6 @@ +import { createVersionedExport } from '../util.ts'; +import * as v0 from './v0/index.ts'; +import * as v3 from './v3/index.ts'; +import * as v4 from './v4/index.ts'; + +export default createVersionedExport({ v0, v3, v4 }); diff --git a/.api-contract/build-deno/test/contracts/user/v0/assetTransfer.wasm b/.api-contract/build-deno/test/contracts/user/v0/assetTransfer.wasm new file mode 100644 index 00000000..516f7698 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/user/v0/assetTransfer.wasm differ diff --git a/.api-contract/build-deno/test/contracts/user/v0/enumExample.wasm b/.api-contract/build-deno/test/contracts/user/v0/enumExample.wasm new file mode 100644 index 00000000..5cbe4bf9 Binary files /dev/null and b/.api-contract/build-deno/test/contracts/user/v0/enumExample.wasm differ diff --git a/.api-contract/build-deno/test/contracts/user/v0/index.ts b/.api-contract/build-deno/test/contracts/user/v0/index.ts new file mode 100644 index 00000000..69d14c69 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/user/v0/index.ts @@ -0,0 +1,4 @@ +export { default as assetTransfer } from './assetTransfer.json' assert { type: 'json' }; +export { default as enumExample } from './enumExample.json' assert { type: 'json' }; +export { default as recursive } from './recursive.contract.json' assert { type: 'json' }; +export { default as withString } from './withString.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/user/v3/index.ts b/.api-contract/build-deno/test/contracts/user/v3/index.ts new file mode 100644 index 00000000..eb0d3a9e --- /dev/null +++ b/.api-contract/build-deno/test/contracts/user/v3/index.ts @@ -0,0 +1 @@ +export { default as ask } from './ask.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/user/v4/index.ts b/.api-contract/build-deno/test/contracts/user/v4/index.ts new file mode 100644 index 00000000..42e21964 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/user/v4/index.ts @@ -0,0 +1 @@ +export { default as events } from './events.contract.json' assert { type: 'json' }; diff --git a/.api-contract/build-deno/test/contracts/util.ts b/.api-contract/build-deno/test/contracts/util.ts new file mode 100644 index 00000000..ef411429 --- /dev/null +++ b/.api-contract/build-deno/test/contracts/util.ts @@ -0,0 +1,13 @@ +export function createVersionedExport( + versioned: Record>, +): Record> { + const result: Record> = {}; + + Object.entries(versioned).forEach(([version, contracts]) => + Object.entries(contracts).forEach(([name, contract]): void => { + result[`${version}_${name}`] = contract as Record; + }), + ); + + return result; +} diff --git a/.api-contract/build-deno/types.ts b/.api-contract/build-deno/types.ts new file mode 100644 index 00000000..9c1eb729 --- /dev/null +++ b/.api-contract/build-deno/types.ts @@ -0,0 +1,100 @@ +import type { ApiBase } from 'https://deno.land/x/polkadot/api/base/index.ts'; +import type { ApiTypes } from 'https://deno.land/x/polkadot/api/types/index.ts'; +import type { Text } from 'https://deno.land/x/polkadot/types/mod.ts'; +import type { + ContractExecResultResult, + ContractSelector, + StorageDeposit, + Weight, + WeightV2, +} from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; +import type { Codec, TypeDef } from 'https://deno.land/x/polkadot/types/types/index.ts'; +import type { BN } from 'https://deno.land/x/polkadot/util/mod.ts'; +import type { HexString } from 'https://deno.land/x/polkadot/util/types.ts'; +import type { Abi } from './index.ts'; + +export interface ContractBase { + readonly abi: Abi; + readonly api: ApiBase; + + getMessage: (name: string) => AbiMessage; + messages: AbiMessage[]; +} + +export interface AbiParam { + name: string; + type: TypeDef; +} + +export type AbiMessageParam = AbiParam; + +export interface AbiEventParam extends AbiParam { + indexed: boolean; +} + +export interface AbiEvent { + args: AbiEventParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedEvent; + identifier: string; + index: number; + signatureTopic?: HexString | null; +} + +export interface AbiMessage { + args: AbiMessageParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedMessage; + identifier: string; + index: number; + isConstructor?: boolean; + isDefault?: boolean; + isMutating?: boolean; + isPayable?: boolean; + method: string; + path: string[]; + returnType?: TypeDef | null; + selector: ContractSelector; + toU8a: (params: unknown[]) => Uint8Array; +} + +export type AbiConstructor = AbiMessage; + +export type InterfaceContractCalls = Record; + +export interface ContractCallOutcome { + debugMessage: Text; + gasConsumed: Weight; + gasRequired: Weight; + output: Codec | null; + result: ContractExecResultResult; + storageDeposit: StorageDeposit; +} + +export interface DecodedEvent { + args: Codec[]; + event: AbiEvent; +} + +export interface DecodedMessage { + args: Codec[]; + message: AbiMessage; +} + +export interface ContractOptions { + gasLimit?: bigint | string | number | BN | WeightV2; + storageDepositLimit?: bigint | string | number | BN | null; + value?: bigint | BN | string | number; +} + +export interface BlueprintOptions extends ContractOptions { + salt?: Uint8Array | string | null; +} + +export interface WeightAll { + v1Weight: BN; + v2Weight: { + refTime: BN; + proofSize?: BN | undefined; + }; +} diff --git a/.api-contract/build-deno/util.ts b/.api-contract/build-deno/util.ts new file mode 100644 index 00000000..3f104371 --- /dev/null +++ b/.api-contract/build-deno/util.ts @@ -0,0 +1,20 @@ +import type { SubmittableResult } from 'https://deno.land/x/polkadot/api/mod.ts'; +import type { EventRecord } from 'https://deno.land/x/polkadot/types/interfaces/index.ts'; + +type ContractEvents = 'CodeStored' | 'ContractEmitted' | 'ContractExecution' | 'Instantiated'; + +export function applyOnEvent( + result: SubmittableResult, + types: ContractEvents[], + fn: (records: EventRecord[]) => T, +): T | undefined { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + + if (records.length) { + return fn(records); + } + } + + return undefined; +} diff --git a/.api-contract/build-tsc-cjs/Abi/index.js b/.api-contract/build-tsc-cjs/Abi/index.js new file mode 100644 index 00000000..fa496ef2 --- /dev/null +++ b/.api-contract/build-tsc-cjs/Abi/index.js @@ -0,0 +1,348 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Abi = void 0; +const types_1 = require('@polkadot/types'); +const types_create_1 = require('@polkadot/types-create'); +const util_1 = require('@polkadot/util'); +const toLatestCompatible_js_1 = require('./toLatestCompatible.js'); +const l = (0, util_1.logger)('Abi'); +const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; +function findMessage(list, messageOrId) { + const message = (0, util_1.isNumber)(messageOrId) + ? list[messageOrId] + : (0, util_1.isString)(messageOrId) + ? list.find(({ identifier }) => + [identifier, (0, util_1.stringCamelCase)(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + return (0, util_1.assertReturn)( + message, + () => `Attempted to call an invalid contract interface, ${(0, util_1.stringify)(messageOrId)}`, + ); +} +function getMetadata(registry, json) { + // this is for V1, V2, V3 + const vx = toLatestCompatible_js_1.enumVersions.find(v => (0, util_1.isObject)(json[v])); + // this was added in V4 + const jsonVersion = json.version; + if ( + !vx && + jsonVersion && + !toLatestCompatible_js_1.enumVersions.find(v => v === `V${jsonVersion}`) + ) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + const converter = toLatestCompatible_js_1.convertVersions.find(([v]) => metadata[`is${v}`]); + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + return upgradedMetadata; +} +function parseJson(json, chainProperties) { + const registry = new types_1.TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json); + const metadata = getMetadata(registry, json); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + // attach the lookup to the registry - now the types are known + registry.setLookup(lookup); + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + // warm-up the actual type, pre-use + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + return [json, registry, metadata, info]; +} +/** + * @internal + * Determines if the given input value is a ContractTypeSpec + */ +function isTypeSpec(value) { + return ( + !!value && + value instanceof Map && + !(0, util_1.isUndefined)(value.type) && + !(0, util_1.isUndefined)(value.displayName) + ); +} +/** + * @internal + * Determines if the given input value is an Option + */ +function isOption(value) { + return !!value && value instanceof types_1.Option; +} +class Abi { + events; + constructors; + info; + json; + messages; + metadata; + registry; + environment = new Map(); + constructor(abiJson, chainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + (0, util_1.isString)(abiJson) ? JSON.parse(abiJson) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map((spec, index) => + this.__internal__createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_, index) => this.__internal__createEvent(index)); + this.messages = this.metadata.spec.messages.map((spec, index) => + this.__internal__createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + // NOTE See the rationale for having Option<...> values in the actual + // ContractEnvironmentV4 structure definition in interfaces/contractsAbi + // (Due to conversions, the fields may not exist) + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + if ((0, util_1.isBn)(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record) { + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.__internal__decodeEventV4(record); + // Latest + default: + return this.__internal__decodeEventV5(record); + } + } + __internal__decodeEventV5 = record => { + // Find event by first topic, which potentially is the signature_topic + const signatureTopic = record.topics[0]; + const data = record.event.data[1]; + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } + } + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter(a => a.indexed).length; + if (amountIndexed !== amountOfTopics) { + return false; + } + // If all conditions met, it's a potential event + return true; + }); + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + throw new Error('Unable to determine event'); + }; + __internal__decodeEventV4 = record => { + const data = record.event.data[1]; + const index = data[0]; + const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + return event.fromU8a(data.subarray(1)); + }; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data) { + return this.__internal__decodeMessage('message', this.constructors, data); + } + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data) { + return this.__internal__decodeMessage('message', this.messages, data); + } + findConstructor(constructorOrId) { + return findMessage(this.constructors, constructorOrId); + } + findMessage(messageOrId) { + return findMessage(this.messages, messageOrId); + } + __internal__createArgs = (args, spec) => { + return args.map(({ label, type }, index) => { + try { + if (!(0, util_1.isObject)(type)) { + throw new Error('Invalid type definition found'); + } + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = (0, util_1.stringCamelCase)(label); + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: types_create_1.TypeDefInfo.Plain, + type: displayName, + }, + }; + } + const typeDef = this.registry.lookup.getTypeDef(type.type); + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l.error(`Error expanding argument ${index} in ${(0, util_1.stringify)(spec)}`); + throw error; + } + }); + }; + __internal__createMessageParams = (args, spec) => { + return this.__internal__createArgs(args, spec); + }; + __internal__createEventParams = (args, spec) => { + const params = this.__internal__createArgs(args, spec); + return params.map((p, index) => ({ ...p, indexed: args[index].indexed.toPrimitive() })); + }; + __internal__createEvent = index => { + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.__internal__createEventV4(this.metadata.spec.events[index], index); + default: + return this.__internal__createEventV5(this.metadata.spec.events[index], index); + } + }; + __internal__createEventV5 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + return event; + }; + __internal__createEventV4 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + return event; + }; + __internal__createMessage = (spec, index, add = {}) => { + const args = this.__internal__createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: (0, util_1.stringCamelCase)(identifier), + path: identifier.split('::').map(s => (0, util_1.stringCamelCase)(s)), + selector: spec.selector, + toU8a: params => this.__internal__encodeMessageArgs(spec, args, params), + }; + return message; + }; + __internal__decodeArgs = (args, data) => { + // for decoding we expect the input to be just the arg data, no selectors + // no length added (this allows use with events as well) + let offset = 0; + return args.map(({ type: { lookupName, type } }) => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + offset += value.encodedLength; + return value; + }); + }; + __internal__decodeMessage = (type, list, data) => { + const [, trimmed] = (0, util_1.compactStripLength)(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + if (!message) { + throw new Error(`Unable to find ${type} with selector ${(0, util_1.u8aToHex)(selector)}`); + } + return message.fromU8a(trimmed.subarray(4)); + }; + __internal__encodeMessageArgs = ({ label, selector }, args, data) => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + return (0, util_1.compactAddLength)( + (0, util_1.u8aConcat)( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; +} +exports.Abi = Abi; diff --git a/.api-contract/build-tsc-cjs/Abi/toLatestCompatible.js b/.api-contract/build-tsc-cjs/Abi/toLatestCompatible.js new file mode 100644 index 00000000..4c9ce0d7 --- /dev/null +++ b/.api-contract/build-tsc-cjs/Abi/toLatestCompatible.js @@ -0,0 +1,37 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.convertVersions = + exports.v0ToLatestCompatible = + exports.v1ToLatestCompatible = + exports.v2ToLatestCompatible = + exports.v3ToLatestCompatible = + exports.enumVersions = + void 0; +exports.v5ToLatestCompatible = v5ToLatestCompatible; +exports.v4ToLatestCompatible = v4ToLatestCompatible; +const toV1_js_1 = require('./toV1.js'); +const toV2_js_1 = require('./toV2.js'); +const toV3_js_1 = require('./toV3.js'); +const toV4_js_1 = require('./toV4.js'); +exports.enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1']; +function createConverter(next, step) { + return (registry, input) => next(registry, step(registry, input)); +} +function v5ToLatestCompatible(_registry, v5) { + return v5; +} +function v4ToLatestCompatible(_registry, v4) { + return v4; +} +exports.v3ToLatestCompatible = createConverter(v4ToLatestCompatible, toV4_js_1.v3ToV4); +exports.v2ToLatestCompatible = createConverter(exports.v3ToLatestCompatible, toV3_js_1.v2ToV3); +exports.v1ToLatestCompatible = createConverter(exports.v2ToLatestCompatible, toV2_js_1.v1ToV2); +exports.v0ToLatestCompatible = createConverter(exports.v1ToLatestCompatible, toV1_js_1.v0ToV1); +exports.convertVersions = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', exports.v3ToLatestCompatible], + ['V2', exports.v2ToLatestCompatible], + ['V1', exports.v1ToLatestCompatible], + ['V0', exports.v0ToLatestCompatible], +]; diff --git a/.api-contract/build-tsc-cjs/Abi/toV1.js b/.api-contract/build-tsc-cjs/Abi/toV1.js new file mode 100644 index 00000000..3d0f5ec1 --- /dev/null +++ b/.api-contract/build-tsc-cjs/Abi/toV1.js @@ -0,0 +1,27 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.v0ToV1 = v0ToV1; +const types_1 = require('@polkadot/types'); +const util_1 = require('@polkadot/util'); +function v0ToV1Names(all) { + return all.map(e => + (0, util_1.objectSpread)({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); +} +function v0ToV1(registry, v0) { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + return registry.createType( + 'ContractMetadataV1', + (0, util_1.objectSpread)({}, v0, { + spec: (0, util_1.objectSpread)({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: (0, types_1.convertSiV0toV1)(registry, v0.types), + }), + ); +} diff --git a/.api-contract/build-tsc-cjs/Abi/toV2.js b/.api-contract/build-tsc-cjs/Abi/toV2.js new file mode 100644 index 00000000..f1457e9d --- /dev/null +++ b/.api-contract/build-tsc-cjs/Abi/toV2.js @@ -0,0 +1,36 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.v1ToV2 = v1ToV2; +const util_1 = require('@polkadot/util'); +const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', +}; +function v1ToV2Label(entry) { + return (0, util_1.objectSpread)({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); +} +function v1ToV2Labels(registry, outType, all) { + return all.map(e => + registry.createType( + `${outType}V2`, + (0, util_1.objectSpread)(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); +} +function v1ToV2(registry, v1) { + return registry.createType( + 'ContractMetadataV2', + (0, util_1.objectSpread)({}, v1, { + spec: (0, util_1.objectSpread)({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); +} diff --git a/.api-contract/build-tsc-cjs/Abi/toV3.js b/.api-contract/build-tsc-cjs/Abi/toV3.js new file mode 100644 index 00000000..dfb56428 --- /dev/null +++ b/.api-contract/build-tsc-cjs/Abi/toV3.js @@ -0,0 +1,20 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.v2ToV3 = v2ToV3; +const util_1 = require('@polkadot/util'); +function v2ToV3(registry, v2) { + return registry.createType( + 'ContractMetadataV3', + (0, util_1.objectSpread)({}, v2, { + spec: (0, util_1.objectSpread)({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + // V3 introduces the payable flag on constructors, for + registry.createType('ContractConstructorSpecV4', (0, util_1.objectSpread)({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', (0, util_1.objectSpread)({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); +} diff --git a/.api-contract/build-tsc-cjs/augment.js b/.api-contract/build-tsc-cjs/augment.js new file mode 100644 index 00000000..6464d66c --- /dev/null +++ b/.api-contract/build-tsc-cjs/augment.js @@ -0,0 +1,3 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +require('@polkadot/api-augment'); diff --git a/.api-contract/build-tsc-cjs/base/Base.js b/.api-contract/build-tsc-cjs/base/Base.js new file mode 100644 index 00000000..c077097f --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/Base.js @@ -0,0 +1,41 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Base = void 0; +const util_1 = require('@polkadot/util'); +const index_js_1 = require('../Abi/index.js'); +class Base { + abi; + api; + _decorateMethod; + _isWeightV1; + constructor(api, abi, decorateMethod) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !(0, util_1.isFunction)(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !(0, util_1.isFunction)(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + this.abi = + abi instanceof index_js_1.Abi + ? abi + : new index_js_1.Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + get registry() { + return this.api.registry; + } +} +exports.Base = Base; diff --git a/.api-contract/build-tsc-cjs/base/Blueprint.js b/.api-contract/build-tsc-cjs/base/Blueprint.js new file mode 100644 index 00000000..55bdffaa --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/Blueprint.js @@ -0,0 +1,83 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Blueprint = exports.BlueprintSubmittableResult = void 0; +exports.extendBlueprint = extendBlueprint; +const api_1 = require('@polkadot/api'); +const util_1 = require('@polkadot/util'); +const Base_js_1 = require('./Base.js'); +const Contract_js_1 = require('./Contract.js'); +const util_js_1 = require('./util.js'); +class BlueprintSubmittableResult extends api_1.SubmittableResult { + contract; + constructor(result, contract) { + super(result); + this.contract = contract; + } +} +exports.BlueprintSubmittableResult = BlueprintSubmittableResult; +class Blueprint extends Base_js_1.Base { + /** + * @description The on-chain code hash for this blueprint + */ + codeHash; + __internal__tx = {}; + constructor(api, abi, codeHash, decorateMethod) { + super(api, abi, decorateMethod); + this.codeHash = this.registry.createType('Hash', codeHash); + this.abi.constructors.forEach(c => { + if ((0, util_1.isUndefined)(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = (0, util_js_1.createBluePrintTx)(c, (o, p) => + this.__internal__deploy(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__deploy = ( + constructorOrId, + { gasLimit = util_1.BN_ZERO, salt, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .instantiate( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? (0, util_js_1.convertWeight)(gasLimit).v1Weight + : (0, util_js_1.convertWeight)(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + (0, util_js_1.encodeSalt)(salt), + ) + .withResultTransform( + result => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract_js_1.Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; +} +exports.Blueprint = Blueprint; +function extendBlueprint(type, decorateMethod) { + return class extends Blueprint { + static __BlueprintType = type; + constructor(api, abi, codeHash) { + super(api, abi, codeHash, decorateMethod); + } + }; +} diff --git a/.api-contract/build-tsc-cjs/base/Code.js b/.api-contract/build-tsc-cjs/base/Code.js new file mode 100644 index 00000000..3a6f60a6 --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/Code.js @@ -0,0 +1,94 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Code = exports.CodeSubmittableResult = void 0; +exports.extendCode = extendCode; +const api_1 = require('@polkadot/api'); +const util_1 = require('@polkadot/util'); +const Base_js_1 = require('./Base.js'); +const Blueprint_js_1 = require('./Blueprint.js'); +const Contract_js_1 = require('./Contract.js'); +const util_js_1 = require('./util.js'); +class CodeSubmittableResult extends api_1.SubmittableResult { + blueprint; + contract; + constructor(result, blueprint, contract) { + super(result); + this.blueprint = blueprint; + this.contract = contract; + } +} +exports.CodeSubmittableResult = CodeSubmittableResult; +function isValidCode(code) { + return (0, util_1.isWasm)(code) || (0, util_1.isRiscV)(code); +} +class Code extends Base_js_1.Base { + code; + __internal__tx = {}; + constructor(api, abi, wasm, decorateMethod) { + super(api, abi, decorateMethod); + this.code = isValidCode(this.abi.info.source.wasm) + ? this.abi.info.source.wasm + : (0, util_1.u8aToU8a)(wasm); + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + this.abi.constructors.forEach(c => { + if ((0, util_1.isUndefined)(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = (0, util_js_1.createBluePrintTx)(c, (o, p) => + this.__internal__instantiate(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__instantiate = ( + constructorOrId, + { gasLimit = util_1.BN_ZERO, salt, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? (0, util_js_1.convertWeight)(gasLimit).v1Weight + : (0, util_js_1.convertWeight)(gasLimit).v2Weight, + storageDepositLimit, + (0, util_1.compactAddLength)(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + (0, util_js_1.encodeSalt)(salt), + ) + .withResultTransform( + result => + new CodeSubmittableResult( + result, + new Blueprint_js_1.Blueprint( + this.api, + this.abi, + this.abi.info.source.wasmHash, + this._decorateMethod, + ), + new Contract_js_1.Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; +} +exports.Code = Code; +function extendCode(type, decorateMethod) { + return class extends Code { + static __CodeType = type; + constructor(api, abi, wasm) { + super(api, abi, wasm, decorateMethod); + } + }; +} diff --git a/.api-contract/build-tsc-cjs/base/Contract.js b/.api-contract/build-tsc-cjs/base/Contract.js new file mode 100644 index 00000000..b3f5b9f5 --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/Contract.js @@ -0,0 +1,164 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Contract = exports.ContractSubmittableResult = void 0; +exports.extendContract = extendContract; +const rxjs_1 = require('rxjs'); +const api_1 = require('@polkadot/api'); +const util_1 = require('@polkadot/util'); +const util_js_1 = require('../util.js'); +const Base_js_1 = require('./Base.js'); +const util_js_2 = require('./util.js'); +const MAX_CALL_GAS = new util_1.BN(5_000_000_000_000).isub(util_1.BN_ONE); +const l = (0, util_1.logger)('Contract'); +function createQuery(meta, fn) { + return (0, util_js_2.withMeta)(meta, (origin, options, ...params) => fn(origin, options, params)); +} +function createTx(meta, fn) { + return (0, util_js_2.withMeta)(meta, (options, ...params) => fn(options, params)); +} +class ContractSubmittableResult extends api_1.SubmittableResult { + contractEvents; + constructor(result, contractEvents) { + super(result); + this.contractEvents = contractEvents; + } +} +exports.ContractSubmittableResult = ContractSubmittableResult; +class Contract extends Base_js_1.Base { + /** + * @description The on-chain address for this contract + */ + address; + __internal__query = {}; + __internal__tx = {}; + constructor(api, abi, address, decorateMethod) { + super(api, abi, decorateMethod); + this.address = this.registry.createType('AccountId20', address); + this.abi.messages.forEach(m => { + if ((0, util_1.isUndefined)(this.__internal__tx[m.method])) { + this.__internal__tx[m.method] = createTx(m, (o, p) => this.__internal__exec(m, o, p)); + } + if ((0, util_1.isUndefined)(this.__internal__query[m.method])) { + this.__internal__query[m.method] = createQuery(m, (f, o, p) => + this.__internal__read(m, o, p).send(f), + ); + } + }); + } + get query() { + return this.__internal__query; + } + get tx() { + return this.__internal__tx; + } + __internal__getGas = (_gasLimit, isCall = false) => { + const weight = (0, util_js_2.convertWeight)(_gasLimit); + if (weight.v1Weight.gt(util_1.BN_ZERO)) { + return weight; + } + return (0, util_js_2.convertWeight)( + isCall + ? MAX_CALL_GAS + : (0, util_js_2.convertWeight)( + this.api.consts.system.blockWeights + ? this.api.consts.system.blockWeights.maxBlock + : this.api.consts.system['maximumBlockWeight'], + ) + .v1Weight.muln(64) + .div(util_1.BN_HUNDRED), + ); + }; + __internal__exec = ( + messageOrId, + { gasLimit = util_1.BN_ZERO, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .call( + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? (0, util_js_2.convertWeight)(gasLimit).v1Weight + : (0, util_js_2.convertWeight)(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + result => + // ContractEmitted is the current generation, ContractExecution is the previous generation + new ContractSubmittableResult( + result, + (0, util_js_1.applyOnEvent)(result, ['ContractEmitted', 'ContractExecution'], records => + records + .map(record => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${error.message}`); + return null; + } + }) + .filter(decoded => !!decoded), + ), + ), + ); + }; + __internal__read = ( + messageOrId, + { gasLimit = util_1.BN_ZERO, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + const message = this.abi.findMessage(messageOrId); + return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + send: this._decorateMethod(origin => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? this.__internal__getGas(gasLimit, true).v1Weight + : this.__internal__getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + (0, rxjs_1.map)( + ({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }) => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !(0, util_js_2.convertWeight)(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + }), + ), + ), + ), + }; + }; +} +exports.Contract = Contract; +function extendContract(type, decorateMethod) { + return class extends Contract { + static __ContractType = type; + constructor(api, abi, address) { + super(api, abi, address, decorateMethod); + } + }; +} diff --git a/.api-contract/build-tsc-cjs/base/index.js b/.api-contract/build-tsc-cjs/base/index.js new file mode 100644 index 00000000..742b6bbc --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/index.js @@ -0,0 +1,62 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.extendContract = + exports.Contract = + exports.extendCode = + exports.CodeSubmittableResult = + exports.Code = + exports.extendBlueprint = + exports.BlueprintSubmittableResult = + exports.Blueprint = + void 0; +var Blueprint_js_1 = require('./Blueprint.js'); +Object.defineProperty(exports, 'Blueprint', { + enumerable: true, + get: function () { + return Blueprint_js_1.Blueprint; + }, +}); +Object.defineProperty(exports, 'BlueprintSubmittableResult', { + enumerable: true, + get: function () { + return Blueprint_js_1.BlueprintSubmittableResult; + }, +}); +Object.defineProperty(exports, 'extendBlueprint', { + enumerable: true, + get: function () { + return Blueprint_js_1.extendBlueprint; + }, +}); +var Code_js_1 = require('./Code.js'); +Object.defineProperty(exports, 'Code', { + enumerable: true, + get: function () { + return Code_js_1.Code; + }, +}); +Object.defineProperty(exports, 'CodeSubmittableResult', { + enumerable: true, + get: function () { + return Code_js_1.CodeSubmittableResult; + }, +}); +Object.defineProperty(exports, 'extendCode', { + enumerable: true, + get: function () { + return Code_js_1.extendCode; + }, +}); +var Contract_js_1 = require('./Contract.js'); +Object.defineProperty(exports, 'Contract', { + enumerable: true, + get: function () { + return Contract_js_1.Contract; + }, +}); +Object.defineProperty(exports, 'extendContract', { + enumerable: true, + get: function () { + return Contract_js_1.extendContract; + }, +}); diff --git a/.api-contract/build-tsc-cjs/base/mock.js b/.api-contract/build-tsc-cjs/base/mock.js new file mode 100644 index 00000000..59ffb46e --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/mock.js @@ -0,0 +1,25 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.mockApi = void 0; +const types_1 = require('@polkadot/types'); +const registry = new types_1.TypeRegistry(); +const instantiateWithCode = () => { + throw new Error('mock'); +}; +instantiateWithCode.meta = { args: new Array(6) }; +exports.mockApi = { + call: { + contractsApi: { + call: () => { + throw new Error('mock'); + }, + }, + }, + isConnected: true, + registry, + tx: { + contracts: { + instantiateWithCode, + }, + }, +}; diff --git a/.api-contract/build-tsc-cjs/base/types.js b/.api-contract/build-tsc-cjs/base/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build-tsc-cjs/base/util.js b/.api-contract/build-tsc-cjs/base/util.js new file mode 100644 index 00000000..1a1a14f5 --- /dev/null +++ b/.api-contract/build-tsc-cjs/base/util.js @@ -0,0 +1,42 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.EMPTY_SALT = void 0; +exports.withMeta = withMeta; +exports.createBluePrintTx = createBluePrintTx; +exports.createBluePrintWithId = createBluePrintWithId; +exports.encodeSalt = encodeSalt; +exports.convertWeight = convertWeight; +exports.isWeightV2 = isWeightV2; +const types_1 = require('@polkadot/types'); +const util_1 = require('@polkadot/util'); +const util_crypto_1 = require('@polkadot/util-crypto'); +exports.EMPTY_SALT = new Uint8Array(); +function withMeta(meta, creator) { + creator.meta = meta; + return creator; +} +function createBluePrintTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); +} +function createBluePrintWithId(fn) { + return (constructorOrId, options, ...params) => fn(constructorOrId, options, params); +} +function encodeSalt(salt = (0, util_crypto_1.randomAsU8a)()) { + return salt instanceof types_1.Bytes + ? salt + : salt?.length + ? (0, util_1.compactAddLength)((0, util_1.u8aToU8a)(salt)) + : exports.EMPTY_SALT; +} +function convertWeight(weight) { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [(0, util_1.bnToBn)(weight), undefined]; + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; +} +function isWeightV2(weight) { + return !!weight.proofSize; +} diff --git a/.api-contract/build-tsc-cjs/bundle.js b/.api-contract/build-tsc-cjs/bundle.js new file mode 100644 index 00000000..0f1f8f06 --- /dev/null +++ b/.api-contract/build-tsc-cjs/bundle.js @@ -0,0 +1,20 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.packageInfo = exports.Abi = void 0; +const tslib_1 = require('tslib'); +var index_js_1 = require('./Abi/index.js'); +Object.defineProperty(exports, 'Abi', { + enumerable: true, + get: function () { + return index_js_1.Abi; + }, +}); +var packageInfo_js_1 = require('./packageInfo.js'); +Object.defineProperty(exports, 'packageInfo', { + enumerable: true, + get: function () { + return packageInfo_js_1.packageInfo; + }, +}); +tslib_1.__exportStar(require('./promise/index.js'), exports); +tslib_1.__exportStar(require('./rx/index.js'), exports); diff --git a/.api-contract/build-tsc-cjs/index.js b/.api-contract/build-tsc-cjs/index.js new file mode 100644 index 00000000..509038d7 --- /dev/null +++ b/.api-contract/build-tsc-cjs/index.js @@ -0,0 +1,5 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +const tslib_1 = require('tslib'); +require('./packageDetect.js'); +tslib_1.__exportStar(require('./bundle.js'), exports); diff --git a/.api-contract/build-tsc-cjs/packageDetect.js b/.api-contract/build-tsc-cjs/packageDetect.js new file mode 100644 index 00000000..a9aed994 --- /dev/null +++ b/.api-contract/build-tsc-cjs/packageDetect.js @@ -0,0 +1,10 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +const packageInfo_1 = require('@polkadot/api/packageInfo'); +const packageInfo_2 = require('@polkadot/types/packageInfo'); +const util_1 = require('@polkadot/util'); +const packageInfo_js_1 = require('./packageInfo.js'); +(0, util_1.detectPackage)(packageInfo_js_1.packageInfo, null, [ + packageInfo_1.packageInfo, + packageInfo_2.packageInfo, +]); diff --git a/.api-contract/build-tsc-cjs/packageInfo.js b/.api-contract/build-tsc-cjs/packageInfo.js new file mode 100644 index 00000000..39a18613 --- /dev/null +++ b/.api-contract/build-tsc-cjs/packageInfo.js @@ -0,0 +1,9 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.packageInfo = void 0; +exports.packageInfo = { + name: '@polkadot/api-contract', + path: typeof __dirname === 'string' ? __dirname : 'auto', + type: 'cjs', + version: '15.8.1', +}; diff --git a/.api-contract/build-tsc-cjs/promise/index.js b/.api-contract/build-tsc-cjs/promise/index.js new file mode 100644 index 00000000..d77ad7db --- /dev/null +++ b/.api-contract/build-tsc-cjs/promise/index.js @@ -0,0 +1,23 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.ContractPromise = exports.CodePromise = exports.BlueprintPromise = void 0; +const api_1 = require('@polkadot/api'); +const index_js_1 = require('../base/index.js'); +class BlueprintPromise extends index_js_1.Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, api_1.toPromiseMethod); + } +} +exports.BlueprintPromise = BlueprintPromise; +class CodePromise extends index_js_1.Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, api_1.toPromiseMethod); + } +} +exports.CodePromise = CodePromise; +class ContractPromise extends index_js_1.Contract { + constructor(api, abi, address) { + super(api, abi, address, api_1.toPromiseMethod); + } +} +exports.ContractPromise = ContractPromise; diff --git a/.api-contract/build-tsc-cjs/promise/types.js b/.api-contract/build-tsc-cjs/promise/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build-tsc-cjs/promise/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build-tsc-cjs/rx/index.js b/.api-contract/build-tsc-cjs/rx/index.js new file mode 100644 index 00000000..6846d72a --- /dev/null +++ b/.api-contract/build-tsc-cjs/rx/index.js @@ -0,0 +1,23 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.ContractRx = exports.CodeRx = exports.BlueprintRx = void 0; +const api_1 = require('@polkadot/api'); +const index_js_1 = require('../base/index.js'); +class BlueprintRx extends index_js_1.Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, api_1.toRxMethod); + } +} +exports.BlueprintRx = BlueprintRx; +class CodeRx extends index_js_1.Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, api_1.toRxMethod); + } +} +exports.CodeRx = CodeRx; +class ContractRx extends index_js_1.Contract { + constructor(api, abi, address) { + super(api, abi, address, api_1.toRxMethod); + } +} +exports.ContractRx = ContractRx; diff --git a/.api-contract/build-tsc-cjs/rx/types.js b/.api-contract/build-tsc-cjs/rx/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build-tsc-cjs/rx/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build-tsc-cjs/types.js b/.api-contract/build-tsc-cjs/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build-tsc-cjs/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build-tsc-cjs/util.js b/.api-contract/build-tsc-cjs/util.js new file mode 100644 index 00000000..ae77e3ce --- /dev/null +++ b/.api-contract/build-tsc-cjs/util.js @@ -0,0 +1,12 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.applyOnEvent = applyOnEvent; +function applyOnEvent(result, types, fn) { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + if (records.length) { + return fn(records); + } + } + return undefined; +} diff --git a/.api-contract/build-tsc-esm/Abi/index.js b/.api-contract/build-tsc-esm/Abi/index.js new file mode 100644 index 00000000..b7b819be --- /dev/null +++ b/.api-contract/build-tsc-esm/Abi/index.js @@ -0,0 +1,351 @@ +import { Option, TypeRegistry } from '@polkadot/types'; +import { TypeDefInfo } from '@polkadot/types-create'; +import { + assertReturn, + compactAddLength, + compactStripLength, + isBn, + isNumber, + isObject, + isString, + isUndefined, + logger, + stringCamelCase, + stringify, + u8aConcat, + u8aToHex, +} from '@polkadot/util'; +import { convertVersions, enumVersions } from './toLatestCompatible.js'; +const l = logger('Abi'); +const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; +function findMessage(list, messageOrId) { + const message = isNumber(messageOrId) + ? list[messageOrId] + : isString(messageOrId) + ? list.find(({ identifier }) => + [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + return assertReturn( + message, + () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`, + ); +} +function getMetadata(registry, json) { + // this is for V1, V2, V3 + const vx = enumVersions.find(v => isObject(json[v])); + // this was added in V4 + const jsonVersion = json.version; + if (!vx && jsonVersion && !enumVersions.find(v => v === `V${jsonVersion}`)) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + const converter = convertVersions.find(([v]) => metadata[`is${v}`]); + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + return upgradedMetadata; +} +function parseJson(json, chainProperties) { + const registry = new TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json); + const metadata = getMetadata(registry, json); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + // attach the lookup to the registry - now the types are known + registry.setLookup(lookup); + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + // warm-up the actual type, pre-use + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + return [json, registry, metadata, info]; +} +/** + * @internal + * Determines if the given input value is a ContractTypeSpec + */ +function isTypeSpec(value) { + return ( + !!value && value instanceof Map && !isUndefined(value.type) && !isUndefined(value.displayName) + ); +} +/** + * @internal + * Determines if the given input value is an Option + */ +function isOption(value) { + return !!value && value instanceof Option; +} +export class Abi { + events; + constructors; + info; + json; + messages; + metadata; + registry; + environment = new Map(); + constructor(abiJson, chainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + isString(abiJson) ? JSON.parse(abiJson) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map((spec, index) => + this.__internal__createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_, index) => this.__internal__createEvent(index)); + this.messages = this.metadata.spec.messages.map((spec, index) => + this.__internal__createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + // NOTE See the rationale for having Option<...> values in the actual + // ContractEnvironmentV4 structure definition in interfaces/contractsAbi + // (Due to conversions, the fields may not exist) + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + if (isBn(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record) { + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.__internal__decodeEventV4(record); + // Latest + default: + return this.__internal__decodeEventV5(record); + } + } + __internal__decodeEventV5 = record => { + // Find event by first topic, which potentially is the signature_topic + const signatureTopic = record.topics[0]; + const data = record.event.data[1]; + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } + } + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter(a => a.indexed).length; + if (amountIndexed !== amountOfTopics) { + return false; + } + // If all conditions met, it's a potential event + return true; + }); + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + throw new Error('Unable to determine event'); + }; + __internal__decodeEventV4 = record => { + const data = record.event.data[1]; + const index = data[0]; + const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + return event.fromU8a(data.subarray(1)); + }; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data) { + return this.__internal__decodeMessage('message', this.constructors, data); + } + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data) { + return this.__internal__decodeMessage('message', this.messages, data); + } + findConstructor(constructorOrId) { + return findMessage(this.constructors, constructorOrId); + } + findMessage(messageOrId) { + return findMessage(this.messages, messageOrId); + } + __internal__createArgs = (args, spec) => { + return args.map(({ label, type }, index) => { + try { + if (!isObject(type)) { + throw new Error('Invalid type definition found'); + } + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = stringCamelCase(label); + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: TypeDefInfo.Plain, + type: displayName, + }, + }; + } + const typeDef = this.registry.lookup.getTypeDef(type.type); + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l.error(`Error expanding argument ${index} in ${stringify(spec)}`); + throw error; + } + }); + }; + __internal__createMessageParams = (args, spec) => { + return this.__internal__createArgs(args, spec); + }; + __internal__createEventParams = (args, spec) => { + const params = this.__internal__createArgs(args, spec); + return params.map((p, index) => ({ ...p, indexed: args[index].indexed.toPrimitive() })); + }; + __internal__createEvent = index => { + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.__internal__createEventV4(this.metadata.spec.events[index], index); + default: + return this.__internal__createEventV5(this.metadata.spec.events[index], index); + } + }; + __internal__createEventV5 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + return event; + }; + __internal__createEventV4 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + return event; + }; + __internal__createMessage = (spec, index, add = {}) => { + const args = this.__internal__createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: stringCamelCase(identifier), + path: identifier.split('::').map(s => stringCamelCase(s)), + selector: spec.selector, + toU8a: params => this.__internal__encodeMessageArgs(spec, args, params), + }; + return message; + }; + __internal__decodeArgs = (args, data) => { + // for decoding we expect the input to be just the arg data, no selectors + // no length added (this allows use with events as well) + let offset = 0; + return args.map(({ type: { lookupName, type } }) => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + offset += value.encodedLength; + return value; + }); + }; + __internal__decodeMessage = (type, list, data) => { + const [, trimmed] = compactStripLength(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + if (!message) { + throw new Error(`Unable to find ${type} with selector ${u8aToHex(selector)}`); + } + return message.fromU8a(trimmed.subarray(4)); + }; + __internal__encodeMessageArgs = ({ label, selector }, args, data) => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + return compactAddLength( + u8aConcat( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; +} diff --git a/.api-contract/build-tsc-esm/Abi/toLatestCompatible.js b/.api-contract/build-tsc-esm/Abi/toLatestCompatible.js new file mode 100644 index 00000000..4cec9dab --- /dev/null +++ b/.api-contract/build-tsc-esm/Abi/toLatestCompatible.js @@ -0,0 +1,26 @@ +import { v0ToV1 } from './toV1.js'; +import { v1ToV2 } from './toV2.js'; +import { v2ToV3 } from './toV3.js'; +import { v3ToV4 } from './toV4.js'; +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1']; +function createConverter(next, step) { + return (registry, input) => next(registry, step(registry, input)); +} +export function v5ToLatestCompatible(_registry, v5) { + return v5; +} +export function v4ToLatestCompatible(_registry, v4) { + return v4; +} +export const v3ToLatestCompatible = /*#__PURE__*/ createConverter(v4ToLatestCompatible, v3ToV4); +export const v2ToLatestCompatible = /*#__PURE__*/ createConverter(v3ToLatestCompatible, v2ToV3); +export const v1ToLatestCompatible = /*#__PURE__*/ createConverter(v2ToLatestCompatible, v1ToV2); +export const v0ToLatestCompatible = /*#__PURE__*/ createConverter(v1ToLatestCompatible, v0ToV1); +export const convertVersions = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', v3ToLatestCompatible], + ['V2', v2ToLatestCompatible], + ['V1', v1ToLatestCompatible], + ['V0', v0ToLatestCompatible], +]; diff --git a/.api-contract/build-tsc-esm/Abi/toV1.js b/.api-contract/build-tsc-esm/Abi/toV1.js new file mode 100644 index 00000000..06c9c5fe --- /dev/null +++ b/.api-contract/build-tsc-esm/Abi/toV1.js @@ -0,0 +1,24 @@ +import { convertSiV0toV1 } from '@polkadot/types'; +import { objectSpread } from '@polkadot/util'; +function v0ToV1Names(all) { + return all.map(e => + objectSpread({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); +} +export function v0ToV1(registry, v0) { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + return registry.createType( + 'ContractMetadataV1', + objectSpread({}, v0, { + spec: objectSpread({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: convertSiV0toV1(registry, v0.types), + }), + ); +} diff --git a/.api-contract/build-tsc-esm/Abi/toV2.js b/.api-contract/build-tsc-esm/Abi/toV2.js new file mode 100644 index 00000000..9214a3bf --- /dev/null +++ b/.api-contract/build-tsc-esm/Abi/toV2.js @@ -0,0 +1,33 @@ +import { objectSpread } from '@polkadot/util'; +const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', +}; +function v1ToV2Label(entry) { + return objectSpread({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); +} +function v1ToV2Labels(registry, outType, all) { + return all.map(e => + registry.createType( + `${outType}V2`, + objectSpread(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); +} +export function v1ToV2(registry, v1) { + return registry.createType( + 'ContractMetadataV2', + objectSpread({}, v1, { + spec: objectSpread({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); +} diff --git a/.api-contract/build-tsc-esm/Abi/toV3.js b/.api-contract/build-tsc-esm/Abi/toV3.js new file mode 100644 index 00000000..212c2297 --- /dev/null +++ b/.api-contract/build-tsc-esm/Abi/toV3.js @@ -0,0 +1,14 @@ +import { objectSpread } from '@polkadot/util'; +export function v2ToV3(registry, v2) { + return registry.createType( + 'ContractMetadataV3', + objectSpread({}, v2, { + spec: objectSpread({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + // V3 introduces the payable flag on constructors, for + registry.createType('ContractConstructorSpecV4', objectSpread({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', objectSpread({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); +} diff --git a/.api-contract/build-tsc-esm/augment.js b/.api-contract/build-tsc-esm/augment.js new file mode 100644 index 00000000..40e6ced0 --- /dev/null +++ b/.api-contract/build-tsc-esm/augment.js @@ -0,0 +1 @@ +import '@polkadot/api-augment'; diff --git a/.api-contract/build-tsc-esm/base/Base.js b/.api-contract/build-tsc-esm/base/Base.js new file mode 100644 index 00000000..48f9863b --- /dev/null +++ b/.api-contract/build-tsc-esm/base/Base.js @@ -0,0 +1,34 @@ +import { isFunction } from '@polkadot/util'; +import { Abi } from '../Abi/index.js'; +export class Base { + abi; + api; + _decorateMethod; + _isWeightV1; + constructor(api, abi, decorateMethod) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !isFunction(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !isFunction(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + this.abi = abi instanceof Abi ? abi : new Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + get registry() { + return this.api.registry; + } +} diff --git a/.api-contract/build-tsc-esm/base/Blueprint.js b/.api-contract/build-tsc-esm/base/Blueprint.js new file mode 100644 index 00000000..f0f4f8c3 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/Blueprint.js @@ -0,0 +1,75 @@ +import { SubmittableResult } from '@polkadot/api'; +import { BN_ZERO, isUndefined } from '@polkadot/util'; +import { Base } from './Base.js'; +import { Contract } from './Contract.js'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.js'; +export class BlueprintSubmittableResult extends SubmittableResult { + contract; + constructor(result, contract) { + super(result); + this.contract = contract; + } +} +export class Blueprint extends Base { + /** + * @description The on-chain code hash for this blueprint + */ + codeHash; + __internal__tx = {}; + constructor(api, abi, codeHash, decorateMethod) { + super(api, abi, decorateMethod); + this.codeHash = this.registry.createType('Hash', codeHash); + this.abi.constructors.forEach(c => { + if (isUndefined(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = createBluePrintTx(c, (o, p) => + this.__internal__deploy(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__deploy = ( + constructorOrId, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .instantiate( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + result => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; +} +export function extendBlueprint(type, decorateMethod) { + return class extends Blueprint { + static __BlueprintType = type; + constructor(api, abi, codeHash) { + super(api, abi, codeHash, decorateMethod); + } + }; +} diff --git a/.api-contract/build-tsc-esm/base/Code.js b/.api-contract/build-tsc-esm/base/Code.js new file mode 100644 index 00000000..c4e069e5 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/Code.js @@ -0,0 +1,79 @@ +import { SubmittableResult } from '@polkadot/api'; +import { BN_ZERO, compactAddLength, isRiscV, isUndefined, isWasm, u8aToU8a } from '@polkadot/util'; +import { Base } from './Base.js'; +import { Blueprint } from './Blueprint.js'; +import { Contract } from './Contract.js'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.js'; +export class CodeSubmittableResult extends SubmittableResult { + blueprint; + contract; + constructor(result, blueprint, contract) { + super(result); + this.blueprint = blueprint; + this.contract = contract; + } +} +function isValidCode(code) { + return isWasm(code) || isRiscV(code); +} +export class Code extends Base { + code; + __internal__tx = {}; + constructor(api, abi, wasm, decorateMethod) { + super(api, abi, decorateMethod); + this.code = isValidCode(this.abi.info.source.wasm) ? this.abi.info.source.wasm : u8aToU8a(wasm); + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + this.abi.constructors.forEach(c => { + if (isUndefined(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = createBluePrintTx(c, (o, p) => + this.__internal__instantiate(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__instantiate = ( + constructorOrId, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + compactAddLength(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + result => + new CodeSubmittableResult( + result, + new Blueprint(this.api, this.abi, this.abi.info.source.wasmHash, this._decorateMethod), + new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; +} +export function extendCode(type, decorateMethod) { + return class extends Code { + static __CodeType = type; + constructor(api, abi, wasm) { + super(api, abi, wasm, decorateMethod); + } + }; +} diff --git a/.api-contract/build-tsc-esm/base/Contract.js b/.api-contract/build-tsc-esm/base/Contract.js new file mode 100644 index 00000000..81ec5787 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/Contract.js @@ -0,0 +1,154 @@ +import { map } from 'rxjs'; +import { SubmittableResult } from '@polkadot/api'; +import { BN, BN_HUNDRED, BN_ONE, BN_ZERO, isUndefined, logger } from '@polkadot/util'; +import { applyOnEvent } from '../util.js'; +import { Base } from './Base.js'; +import { convertWeight, withMeta } from './util.js'; +const MAX_CALL_GAS = new BN(5_000_000_000_000).isub(BN_ONE); +const l = logger('Contract'); +function createQuery(meta, fn) { + return withMeta(meta, (origin, options, ...params) => fn(origin, options, params)); +} +function createTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); +} +export class ContractSubmittableResult extends SubmittableResult { + contractEvents; + constructor(result, contractEvents) { + super(result); + this.contractEvents = contractEvents; + } +} +export class Contract extends Base { + /** + * @description The on-chain address for this contract + */ + address; + __internal__query = {}; + __internal__tx = {}; + constructor(api, abi, address, decorateMethod) { + super(api, abi, decorateMethod); + this.address = this.registry.createType('AccountId20', address); + this.abi.messages.forEach(m => { + if (isUndefined(this.__internal__tx[m.method])) { + this.__internal__tx[m.method] = createTx(m, (o, p) => this.__internal__exec(m, o, p)); + } + if (isUndefined(this.__internal__query[m.method])) { + this.__internal__query[m.method] = createQuery(m, (f, o, p) => + this.__internal__read(m, o, p).send(f), + ); + } + }); + } + get query() { + return this.__internal__query; + } + get tx() { + return this.__internal__tx; + } + __internal__getGas = (_gasLimit, isCall = false) => { + const weight = convertWeight(_gasLimit); + if (weight.v1Weight.gt(BN_ZERO)) { + return weight; + } + return convertWeight( + isCall + ? MAX_CALL_GAS + : convertWeight( + this.api.consts.system.blockWeights + ? this.api.consts.system.blockWeights.maxBlock + : this.api.consts.system['maximumBlockWeight'], + ) + .v1Weight.muln(64) + .div(BN_HUNDRED), + ); + }; + __internal__exec = ( + messageOrId, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .call( + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + result => + // ContractEmitted is the current generation, ContractExecution is the previous generation + new ContractSubmittableResult( + result, + applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], records => + records + .map(record => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${error.message}`); + return null; + } + }) + .filter(decoded => !!decoded), + ), + ), + ); + }; + __internal__read = ( + messageOrId, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + const message = this.abi.findMessage(messageOrId); + return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + send: this._decorateMethod(origin => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? this.__internal__getGas(gasLimit, true).v1Weight + : this.__internal__getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + map(({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }) => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !convertWeight(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + })), + ), + ), + }; + }; +} +export function extendContract(type, decorateMethod) { + return class extends Contract { + static __ContractType = type; + constructor(api, abi, address) { + super(api, abi, address, decorateMethod); + } + }; +} diff --git a/.api-contract/build-tsc-esm/base/index.js b/.api-contract/build-tsc-esm/base/index.js new file mode 100644 index 00000000..905b4515 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/index.js @@ -0,0 +1,3 @@ +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js'; +export { Code, CodeSubmittableResult, extendCode } from './Code.js'; +export { Contract, extendContract } from './Contract.js'; diff --git a/.api-contract/build-tsc-esm/base/mock.js b/.api-contract/build-tsc-esm/base/mock.js new file mode 100644 index 00000000..55a4f489 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/mock.js @@ -0,0 +1,22 @@ +import { TypeRegistry } from '@polkadot/types'; +const registry = new TypeRegistry(); +const instantiateWithCode = () => { + throw new Error('mock'); +}; +instantiateWithCode.meta = { args: new Array(6) }; +export const mockApi = { + call: { + contractsApi: { + call: () => { + throw new Error('mock'); + }, + }, + }, + isConnected: true, + registry, + tx: { + contracts: { + instantiateWithCode, + }, + }, +}; diff --git a/.api-contract/build-tsc-esm/base/types.js b/.api-contract/build-tsc-esm/base/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build-tsc-esm/base/util.js b/.api-contract/build-tsc-esm/base/util.js new file mode 100644 index 00000000..551dad16 --- /dev/null +++ b/.api-contract/build-tsc-esm/base/util.js @@ -0,0 +1,33 @@ +import { Bytes } from '@polkadot/types'; +import { bnToBn, compactAddLength, u8aToU8a } from '@polkadot/util'; +import { randomAsU8a } from '@polkadot/util-crypto'; +export const EMPTY_SALT = new Uint8Array(); +export function withMeta(meta, creator) { + creator.meta = meta; + return creator; +} +export function createBluePrintTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); +} +export function createBluePrintWithId(fn) { + return (constructorOrId, options, ...params) => fn(constructorOrId, options, params); +} +export function encodeSalt(salt = randomAsU8a()) { + return salt instanceof Bytes + ? salt + : salt?.length + ? compactAddLength(u8aToU8a(salt)) + : EMPTY_SALT; +} +export function convertWeight(weight) { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [bnToBn(weight), undefined]; + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; +} +export function isWeightV2(weight) { + return !!weight.proofSize; +} diff --git a/.api-contract/build-tsc-esm/bundle.js b/.api-contract/build-tsc-esm/bundle.js new file mode 100644 index 00000000..d087e9db --- /dev/null +++ b/.api-contract/build-tsc-esm/bundle.js @@ -0,0 +1,4 @@ +export { Abi } from './Abi/index.js'; +export { packageInfo } from './packageInfo.js'; +export * from './promise/index.js'; +export * from './rx/index.js'; diff --git a/.api-contract/build-tsc-esm/index.js b/.api-contract/build-tsc-esm/index.js new file mode 100644 index 00000000..ca3f403b --- /dev/null +++ b/.api-contract/build-tsc-esm/index.js @@ -0,0 +1,2 @@ +import './packageDetect.js'; +export * from './bundle.js'; diff --git a/.api-contract/build-tsc-esm/packageDetect.js b/.api-contract/build-tsc-esm/packageDetect.js new file mode 100644 index 00000000..71d2439c --- /dev/null +++ b/.api-contract/build-tsc-esm/packageDetect.js @@ -0,0 +1,5 @@ +import { packageInfo as apiInfo } from '@polkadot/api/packageInfo'; +import { packageInfo as typesInfo } from '@polkadot/types/packageInfo'; +import { detectPackage } from '@polkadot/util'; +import { packageInfo } from './packageInfo.js'; +detectPackage(packageInfo, null, [apiInfo, typesInfo]); diff --git a/.api-contract/build-tsc-esm/packageInfo.js b/.api-contract/build-tsc-esm/packageInfo.js new file mode 100644 index 00000000..0d90c7dc --- /dev/null +++ b/.api-contract/build-tsc-esm/packageInfo.js @@ -0,0 +1,12 @@ +export const packageInfo = { + name: '@polkadot/api-contract', + path: + import.meta && import.meta.url + ? new URL(import.meta.url).pathname.substring( + 0, + new URL(import.meta.url).pathname.lastIndexOf('/') + 1, + ) + : 'auto', + type: 'esm', + version: '15.8.1', +}; diff --git a/.api-contract/build-tsc-esm/promise/index.js b/.api-contract/build-tsc-esm/promise/index.js new file mode 100644 index 00000000..f938509e --- /dev/null +++ b/.api-contract/build-tsc-esm/promise/index.js @@ -0,0 +1,17 @@ +import { toPromiseMethod } from '@polkadot/api'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export class BlueprintPromise extends Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, toPromiseMethod); + } +} +export class CodePromise extends Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, toPromiseMethod); + } +} +export class ContractPromise extends Contract { + constructor(api, abi, address) { + super(api, abi, address, toPromiseMethod); + } +} diff --git a/.api-contract/build-tsc-esm/promise/types.js b/.api-contract/build-tsc-esm/promise/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build-tsc-esm/promise/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build-tsc-esm/rx/index.js b/.api-contract/build-tsc-esm/rx/index.js new file mode 100644 index 00000000..3ff57ea8 --- /dev/null +++ b/.api-contract/build-tsc-esm/rx/index.js @@ -0,0 +1,17 @@ +import { toRxMethod } from '@polkadot/api'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export class BlueprintRx extends Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, toRxMethod); + } +} +export class CodeRx extends Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, toRxMethod); + } +} +export class ContractRx extends Contract { + constructor(api, abi, address) { + super(api, abi, address, toRxMethod); + } +} diff --git a/.api-contract/build-tsc-esm/rx/types.js b/.api-contract/build-tsc-esm/rx/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build-tsc-esm/rx/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build-tsc-esm/types.js b/.api-contract/build-tsc-esm/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build-tsc-esm/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build-tsc-esm/util.js b/.api-contract/build-tsc-esm/util.js new file mode 100644 index 00000000..0faa5cff --- /dev/null +++ b/.api-contract/build-tsc-esm/util.js @@ -0,0 +1,9 @@ +export function applyOnEvent(result, types, fn) { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + if (records.length) { + return fn(records); + } + } + return undefined; +} diff --git a/.api-contract/build-tsc/Abi/index.d.ts b/.api-contract/build-tsc/Abi/index.d.ts new file mode 100644 index 00000000..814995b0 --- /dev/null +++ b/.api-contract/build-tsc/Abi/index.d.ts @@ -0,0 +1,42 @@ +import type { + ChainProperties, + ContractMetadataV4, + ContractMetadataV5, + ContractProjectInfo, + EventRecord, +} from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; +import type { + AbiConstructor, + AbiEvent, + AbiMessage, + DecodedEvent, + DecodedMessage, +} from '../types.js'; +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +export declare class Abi { + #private; + readonly events: AbiEvent[]; + readonly constructors: AbiConstructor[]; + readonly info: ContractProjectInfo; + readonly json: Record; + readonly messages: AbiMessage[]; + readonly metadata: ContractMetadataSupported; + readonly registry: Registry; + readonly environment: Map; + constructor(abiJson: Record | string, chainProperties?: ChainProperties); + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record: EventRecord): DecodedEvent; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data: Uint8Array): DecodedMessage; + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data: Uint8Array): DecodedMessage; + findConstructor(constructorOrId: AbiConstructor | string | number): AbiConstructor; + findMessage(messageOrId: AbiMessage | string | number): AbiMessage; +} diff --git a/.api-contract/build-tsc/Abi/toLatestCompatible.d.ts b/.api-contract/build-tsc/Abi/toLatestCompatible.d.ts new file mode 100644 index 00000000..c3c505b2 --- /dev/null +++ b/.api-contract/build-tsc/Abi/toLatestCompatible.d.ts @@ -0,0 +1,32 @@ +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +import type { ContractMetadataSupported } from './index.js'; +export declare const enumVersions: readonly ['V5', 'V4', 'V3', 'V2', 'V1']; +type Versions = (typeof enumVersions)[number] | 'V0'; +type Converter = (registry: Registry, vx: any) => ContractMetadataSupported; +export declare function v5ToLatestCompatible( + _registry: Registry, + v5: ContractMetadataV5, +): ContractMetadataV5; +export declare function v4ToLatestCompatible( + _registry: Registry, + v4: ContractMetadataV4, +): ContractMetadataV4; +export declare const v3ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV3, +) => ContractMetadataSupported; +export declare const v2ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV2, +) => ContractMetadataSupported; +export declare const v1ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV1, +) => ContractMetadataSupported; +export declare const v0ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV0, +) => ContractMetadataSupported; +export declare const convertVersions: [Versions, Converter][]; +export {}; diff --git a/.api-contract/build-tsc/Abi/toV1.d.ts b/.api-contract/build-tsc/Abi/toV1.d.ts new file mode 100644 index 00000000..dc41ae43 --- /dev/null +++ b/.api-contract/build-tsc/Abi/toV1.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV0, ContractMetadataV1 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v0ToV1(registry: Registry, v0: ContractMetadataV0): ContractMetadataV1; diff --git a/.api-contract/build-tsc/Abi/toV2.d.ts b/.api-contract/build-tsc/Abi/toV2.d.ts new file mode 100644 index 00000000..3de0aa9b --- /dev/null +++ b/.api-contract/build-tsc/Abi/toV2.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV1, ContractMetadataV2 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v1ToV2(registry: Registry, v1: ContractMetadataV1): ContractMetadataV2; diff --git a/.api-contract/build-tsc/Abi/toV3.d.ts b/.api-contract/build-tsc/Abi/toV3.d.ts new file mode 100644 index 00000000..10cc0d67 --- /dev/null +++ b/.api-contract/build-tsc/Abi/toV3.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV2, ContractMetadataV3 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v2ToV3(registry: Registry, v2: ContractMetadataV2): ContractMetadataV3; diff --git a/.api-contract/build-tsc/Abi/toV4.d.ts b/.api-contract/build-tsc/Abi/toV4.d.ts new file mode 100644 index 00000000..c532e46e --- /dev/null +++ b/.api-contract/build-tsc/Abi/toV4.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV3, ContractMetadataV4 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v3ToV4(registry: Registry, v3: ContractMetadataV3): ContractMetadataV4; diff --git a/.api-contract/build-tsc/augment.d.ts b/.api-contract/build-tsc/augment.d.ts new file mode 100644 index 00000000..40e6ced0 --- /dev/null +++ b/.api-contract/build-tsc/augment.d.ts @@ -0,0 +1 @@ +import '@polkadot/api-augment'; diff --git a/.api-contract/build-tsc/base/Base.d.ts b/.api-contract/build-tsc/base/Base.d.ts new file mode 100644 index 00000000..0c05a333 --- /dev/null +++ b/.api-contract/build-tsc/base/Base.d.ts @@ -0,0 +1,16 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Registry } from '@polkadot/types/types'; +import { Abi } from '../Abi/index.js'; +export declare abstract class Base { + readonly abi: Abi; + readonly api: ApiBase; + protected readonly _decorateMethod: DecorateMethod; + protected readonly _isWeightV1: boolean; + constructor( + api: ApiBase, + abi: string | Record | Abi, + decorateMethod: DecorateMethod, + ); + get registry(): Registry; +} diff --git a/.api-contract/build-tsc/base/Blueprint.d.ts b/.api-contract/build-tsc/base/Blueprint.d.ts new file mode 100644 index 00000000..ce3a70cd --- /dev/null +++ b/.api-contract/build-tsc/base/Blueprint.d.ts @@ -0,0 +1,38 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Hash } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { MapConstructorExec } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +import { Contract } from './Contract.js'; +export type BlueprintConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, +) => Blueprint; +export declare class BlueprintSubmittableResult< + ApiType extends ApiTypes, +> extends SubmittableResult { + readonly contract?: Contract | undefined; + constructor(result: ISubmittableResult, contract?: Contract); +} +export declare class Blueprint extends Base { + #private; + /** + * @description The on-chain code hash for this blueprint + */ + readonly codeHash: Hash; + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + decorateMethod: DecorateMethod, + ); + get tx(): MapConstructorExec; +} +export declare function extendBlueprint( + type: ApiType, + decorateMethod: DecorateMethod, +): BlueprintConstructor; diff --git a/.api-contract/build-tsc/base/Code.d.ts b/.api-contract/build-tsc/base/Code.d.ts new file mode 100644 index 00000000..ab612cef --- /dev/null +++ b/.api-contract/build-tsc/base/Code.d.ts @@ -0,0 +1,38 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { MapConstructorExec } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +import { Blueprint } from './Blueprint.js'; +import { Contract } from './Contract.js'; +export type CodeConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, +) => Code; +export declare class CodeSubmittableResult extends SubmittableResult { + readonly blueprint?: Blueprint | undefined; + readonly contract?: Contract | undefined; + constructor( + result: ISubmittableResult, + blueprint?: Blueprint | undefined, + contract?: Contract | undefined, + ); +} +export declare class Code extends Base { + #private; + readonly code: Uint8Array; + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + decorateMethod: DecorateMethod, + ); + get tx(): MapConstructorExec; +} +export declare function extendCode( + type: ApiType, + decorateMethod: DecorateMethod, +): CodeConstructor; diff --git a/.api-contract/build-tsc/base/Contract.d.ts b/.api-contract/build-tsc/base/Contract.d.ts new file mode 100644 index 00000000..e60d7540 --- /dev/null +++ b/.api-contract/build-tsc/base/Contract.d.ts @@ -0,0 +1,37 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { AccountId, AccountId20 } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { DecodedEvent } from '../types.js'; +import type { MapMessageQuery, MapMessageTx } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +export type ContractConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, +) => Contract; +export declare class ContractSubmittableResult extends SubmittableResult { + readonly contractEvents?: DecodedEvent[] | undefined; + constructor(result: ISubmittableResult, contractEvents?: DecodedEvent[]); +} +export declare class Contract extends Base { + #private; + /** + * @description The on-chain address for this contract + */ + readonly address: AccountId20; + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId20, + decorateMethod: DecorateMethod, + ); + get query(): MapMessageQuery; + get tx(): MapMessageTx; +} +export declare function extendContract( + type: ApiType, + decorateMethod: DecorateMethod, +): ContractConstructor; diff --git a/.api-contract/build-tsc/base/index.d.ts b/.api-contract/build-tsc/base/index.d.ts new file mode 100644 index 00000000..905b4515 --- /dev/null +++ b/.api-contract/build-tsc/base/index.d.ts @@ -0,0 +1,3 @@ +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js'; +export { Code, CodeSubmittableResult, extendCode } from './Code.js'; +export { Contract, extendContract } from './Contract.js'; diff --git a/.api-contract/build-tsc/base/mock.d.ts b/.api-contract/build-tsc/base/mock.d.ts new file mode 100644 index 00000000..51f21099 --- /dev/null +++ b/.api-contract/build-tsc/base/mock.d.ts @@ -0,0 +1,2 @@ +import type { ApiBase } from '@polkadot/api/base'; +export declare const mockApi: ApiBase<'promise'>; diff --git a/.api-contract/build-tsc/base/types.d.ts b/.api-contract/build-tsc/base/types.d.ts new file mode 100644 index 00000000..1841c9b7 --- /dev/null +++ b/.api-contract/build-tsc/base/types.d.ts @@ -0,0 +1,40 @@ +import type { Observable } from 'rxjs'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, ObsInnerType } from '@polkadot/api/types'; +import type { AccountId } from '@polkadot/types/interfaces'; +import type { + AbiMessage, + BlueprintOptions, + ContractCallOutcome, + ContractOptions, +} from '../types.js'; +export interface MessageMeta { + readonly meta: AbiMessage; +} +export interface BlueprintDeploy extends MessageMeta { + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic; +} +export interface ContractQuery extends MessageMeta { + ( + origin: AccountId | string | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult; +} +export interface ContractTx extends MessageMeta { + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic; +} +export type ContractGeneric = ( + messageOrId: AbiMessage | string | number, + options: O, + ...params: unknown[] +) => T; +export type ContractCallResult = ApiType extends 'rxjs' + ? Observable + : Promise>>; +export interface ContractCallSend { + send(account: string | AccountId | Uint8Array): ContractCallResult; +} +export type MapConstructorExec = Record>; +export type MapMessageTx = Record>; +export type MapMessageQuery = Record>; diff --git a/.api-contract/build-tsc/base/util.d.ts b/.api-contract/build-tsc/base/util.d.ts new file mode 100644 index 00000000..27d26904 --- /dev/null +++ b/.api-contract/build-tsc/base/util.d.ts @@ -0,0 +1,31 @@ +import type { SubmittableResult } from '@polkadot/api'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { WeightV1, WeightV2 } from '@polkadot/types/interfaces'; +import type { BN } from '@polkadot/util'; +import type { AbiConstructor, AbiMessage, BlueprintOptions, WeightAll } from '../types.js'; +import type { BlueprintDeploy, ContractGeneric } from './types.js'; +export declare const EMPTY_SALT: Uint8Array; +export declare function withMeta< + T extends { + meta: AbiMessage; + }, +>(meta: AbiMessage, creator: Omit): T; +export declare function createBluePrintTx( + meta: AbiMessage, + fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic, +): BlueprintDeploy; +export declare function createBluePrintWithId( + fn: ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + params: unknown[], + ) => T, +): ContractGeneric; +export declare function encodeSalt(salt?: Uint8Array | string | null): Uint8Array; +export declare function convertWeight( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): WeightAll; +export declare function isWeightV2( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): weight is WeightV2; diff --git a/.api-contract/build-tsc/bundle.d.ts b/.api-contract/build-tsc/bundle.d.ts new file mode 100644 index 00000000..d087e9db --- /dev/null +++ b/.api-contract/build-tsc/bundle.d.ts @@ -0,0 +1,4 @@ +export { Abi } from './Abi/index.js'; +export { packageInfo } from './packageInfo.js'; +export * from './promise/index.js'; +export * from './rx/index.js'; diff --git a/.api-contract/build-tsc/index.d.ts b/.api-contract/build-tsc/index.d.ts new file mode 100644 index 00000000..ca3f403b --- /dev/null +++ b/.api-contract/build-tsc/index.d.ts @@ -0,0 +1,2 @@ +import './packageDetect.js'; +export * from './bundle.js'; diff --git a/.api-contract/build-tsc/packageDetect.d.ts b/.api-contract/build-tsc/packageDetect.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build-tsc/packageDetect.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build-tsc/packageInfo.d.ts b/.api-contract/build-tsc/packageInfo.d.ts new file mode 100644 index 00000000..1b6c408b --- /dev/null +++ b/.api-contract/build-tsc/packageInfo.d.ts @@ -0,0 +1,6 @@ +export declare const packageInfo: { + name: string; + path: string; + type: string; + version: string; +}; diff --git a/.api-contract/build-tsc/promise/index.d.ts b/.api-contract/build-tsc/promise/index.d.ts new file mode 100644 index 00000000..43b9620a --- /dev/null +++ b/.api-contract/build-tsc/promise/index.d.ts @@ -0,0 +1,25 @@ +import type { ApiPromise } from '@polkadot/api'; +import type { AccountId20, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export declare class BlueprintPromise extends Blueprint<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + codeHash: string | Hash, + ); +} +export declare class CodePromise extends Code<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ); +} +export declare class ContractPromise extends Contract<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + address: string | AccountId20, + ); +} diff --git a/.api-contract/build-tsc/promise/types.d.ts b/.api-contract/build-tsc/promise/types.d.ts new file mode 100644 index 00000000..7784ef2c --- /dev/null +++ b/.api-contract/build-tsc/promise/types.d.ts @@ -0,0 +1,6 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build-tsc/rx/index.d.ts b/.api-contract/build-tsc/rx/index.d.ts new file mode 100644 index 00000000..1357b476 --- /dev/null +++ b/.api-contract/build-tsc/rx/index.d.ts @@ -0,0 +1,17 @@ +import type { ApiRx } from '@polkadot/api'; +import type { AccountId, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export declare class BlueprintRx extends Blueprint<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, codeHash: string | Hash); +} +export declare class CodeRx extends Code<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ); +} +export declare class ContractRx extends Contract<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, address: string | AccountId); +} diff --git a/.api-contract/build-tsc/rx/types.d.ts b/.api-contract/build-tsc/rx/types.d.ts new file mode 100644 index 00000000..7784ef2c --- /dev/null +++ b/.api-contract/build-tsc/rx/types.d.ts @@ -0,0 +1,6 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build-tsc/types.d.ts b/.api-contract/build-tsc/types.d.ts new file mode 100644 index 00000000..b535e85a --- /dev/null +++ b/.api-contract/build-tsc/types.d.ts @@ -0,0 +1,85 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { Text } from '@polkadot/types'; +import type { + ContractExecResultResult, + ContractSelector, + StorageDeposit, + Weight, + WeightV2, +} from '@polkadot/types/interfaces'; +import type { Codec, TypeDef } from '@polkadot/types/types'; +import type { BN } from '@polkadot/util'; +import type { HexString } from '@polkadot/util/types'; +import type { Abi } from './index.js'; +export interface ContractBase { + readonly abi: Abi; + readonly api: ApiBase; + getMessage: (name: string) => AbiMessage; + messages: AbiMessage[]; +} +export interface AbiParam { + name: string; + type: TypeDef; +} +export type AbiMessageParam = AbiParam; +export interface AbiEventParam extends AbiParam { + indexed: boolean; +} +export interface AbiEvent { + args: AbiEventParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedEvent; + identifier: string; + index: number; + signatureTopic?: HexString | null; +} +export interface AbiMessage { + args: AbiMessageParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedMessage; + identifier: string; + index: number; + isConstructor?: boolean; + isDefault?: boolean; + isMutating?: boolean; + isPayable?: boolean; + method: string; + path: string[]; + returnType?: TypeDef | null; + selector: ContractSelector; + toU8a: (params: unknown[]) => Uint8Array; +} +export type AbiConstructor = AbiMessage; +export type InterfaceContractCalls = Record; +export interface ContractCallOutcome { + debugMessage: Text; + gasConsumed: Weight; + gasRequired: Weight; + output: Codec | null; + result: ContractExecResultResult; + storageDeposit: StorageDeposit; +} +export interface DecodedEvent { + args: Codec[]; + event: AbiEvent; +} +export interface DecodedMessage { + args: Codec[]; + message: AbiMessage; +} +export interface ContractOptions { + gasLimit?: bigint | string | number | BN | WeightV2; + storageDepositLimit?: bigint | string | number | BN | null; + value?: bigint | BN | string | number; +} +export interface BlueprintOptions extends ContractOptions { + salt?: Uint8Array | string | null; +} +export interface WeightAll { + v1Weight: BN; + v2Weight: { + refTime: BN; + proofSize?: BN | undefined; + }; +} diff --git a/.api-contract/build-tsc/util.d.ts b/.api-contract/build-tsc/util.d.ts new file mode 100644 index 00000000..60682eff --- /dev/null +++ b/.api-contract/build-tsc/util.d.ts @@ -0,0 +1,9 @@ +import type { SubmittableResult } from '@polkadot/api'; +import type { EventRecord } from '@polkadot/types/interfaces'; +type ContractEvents = 'CodeStored' | 'ContractEmitted' | 'ContractExecution' | 'Instantiated'; +export declare function applyOnEvent( + result: SubmittableResult, + types: ContractEvents[], + fn: (records: EventRecord[]) => T, +): T | undefined; +export {}; diff --git a/.api-contract/build/Abi/index.d.ts b/.api-contract/build/Abi/index.d.ts new file mode 100644 index 00000000..814995b0 --- /dev/null +++ b/.api-contract/build/Abi/index.d.ts @@ -0,0 +1,42 @@ +import type { + ChainProperties, + ContractMetadataV4, + ContractMetadataV5, + ContractProjectInfo, + EventRecord, +} from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; +import type { + AbiConstructor, + AbiEvent, + AbiMessage, + DecodedEvent, + DecodedMessage, +} from '../types.js'; +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +export declare class Abi { + #private; + readonly events: AbiEvent[]; + readonly constructors: AbiConstructor[]; + readonly info: ContractProjectInfo; + readonly json: Record; + readonly messages: AbiMessage[]; + readonly metadata: ContractMetadataSupported; + readonly registry: Registry; + readonly environment: Map; + constructor(abiJson: Record | string, chainProperties?: ChainProperties); + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record: EventRecord): DecodedEvent; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data: Uint8Array): DecodedMessage; + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data: Uint8Array): DecodedMessage; + findConstructor(constructorOrId: AbiConstructor | string | number): AbiConstructor; + findMessage(messageOrId: AbiMessage | string | number): AbiMessage; +} diff --git a/.api-contract/build/Abi/index.js b/.api-contract/build/Abi/index.js new file mode 100644 index 00000000..b7b819be --- /dev/null +++ b/.api-contract/build/Abi/index.js @@ -0,0 +1,351 @@ +import { Option, TypeRegistry } from '@polkadot/types'; +import { TypeDefInfo } from '@polkadot/types-create'; +import { + assertReturn, + compactAddLength, + compactStripLength, + isBn, + isNumber, + isObject, + isString, + isUndefined, + logger, + stringCamelCase, + stringify, + u8aConcat, + u8aToHex, +} from '@polkadot/util'; +import { convertVersions, enumVersions } from './toLatestCompatible.js'; +const l = logger('Abi'); +const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; +function findMessage(list, messageOrId) { + const message = isNumber(messageOrId) + ? list[messageOrId] + : isString(messageOrId) + ? list.find(({ identifier }) => + [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + return assertReturn( + message, + () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`, + ); +} +function getMetadata(registry, json) { + // this is for V1, V2, V3 + const vx = enumVersions.find(v => isObject(json[v])); + // this was added in V4 + const jsonVersion = json.version; + if (!vx && jsonVersion && !enumVersions.find(v => v === `V${jsonVersion}`)) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + const converter = convertVersions.find(([v]) => metadata[`is${v}`]); + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + return upgradedMetadata; +} +function parseJson(json, chainProperties) { + const registry = new TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json); + const metadata = getMetadata(registry, json); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + // attach the lookup to the registry - now the types are known + registry.setLookup(lookup); + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + // warm-up the actual type, pre-use + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + return [json, registry, metadata, info]; +} +/** + * @internal + * Determines if the given input value is a ContractTypeSpec + */ +function isTypeSpec(value) { + return ( + !!value && value instanceof Map && !isUndefined(value.type) && !isUndefined(value.displayName) + ); +} +/** + * @internal + * Determines if the given input value is an Option + */ +function isOption(value) { + return !!value && value instanceof Option; +} +export class Abi { + events; + constructors; + info; + json; + messages; + metadata; + registry; + environment = new Map(); + constructor(abiJson, chainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + isString(abiJson) ? JSON.parse(abiJson) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map((spec, index) => + this.__internal__createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_, index) => this.__internal__createEvent(index)); + this.messages = this.metadata.spec.messages.map((spec, index) => + this.__internal__createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + // NOTE See the rationale for having Option<...> values in the actual + // ContractEnvironmentV4 structure definition in interfaces/contractsAbi + // (Due to conversions, the fields may not exist) + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + if (isBn(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record) { + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.__internal__decodeEventV4(record); + // Latest + default: + return this.__internal__decodeEventV5(record); + } + } + __internal__decodeEventV5 = record => { + // Find event by first topic, which potentially is the signature_topic + const signatureTopic = record.topics[0]; + const data = record.event.data[1]; + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } + } + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter(a => a.indexed).length; + if (amountIndexed !== amountOfTopics) { + return false; + } + // If all conditions met, it's a potential event + return true; + }); + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + throw new Error('Unable to determine event'); + }; + __internal__decodeEventV4 = record => { + const data = record.event.data[1]; + const index = data[0]; + const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + return event.fromU8a(data.subarray(1)); + }; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data) { + return this.__internal__decodeMessage('message', this.constructors, data); + } + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data) { + return this.__internal__decodeMessage('message', this.messages, data); + } + findConstructor(constructorOrId) { + return findMessage(this.constructors, constructorOrId); + } + findMessage(messageOrId) { + return findMessage(this.messages, messageOrId); + } + __internal__createArgs = (args, spec) => { + return args.map(({ label, type }, index) => { + try { + if (!isObject(type)) { + throw new Error('Invalid type definition found'); + } + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = stringCamelCase(label); + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: TypeDefInfo.Plain, + type: displayName, + }, + }; + } + const typeDef = this.registry.lookup.getTypeDef(type.type); + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l.error(`Error expanding argument ${index} in ${stringify(spec)}`); + throw error; + } + }); + }; + __internal__createMessageParams = (args, spec) => { + return this.__internal__createArgs(args, spec); + }; + __internal__createEventParams = (args, spec) => { + const params = this.__internal__createArgs(args, spec); + return params.map((p, index) => ({ ...p, indexed: args[index].indexed.toPrimitive() })); + }; + __internal__createEvent = index => { + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.__internal__createEventV4(this.metadata.spec.events[index], index); + default: + return this.__internal__createEventV5(this.metadata.spec.events[index], index); + } + }; + __internal__createEventV5 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + return event; + }; + __internal__createEventV4 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + return event; + }; + __internal__createMessage = (spec, index, add = {}) => { + const args = this.__internal__createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: stringCamelCase(identifier), + path: identifier.split('::').map(s => stringCamelCase(s)), + selector: spec.selector, + toU8a: params => this.__internal__encodeMessageArgs(spec, args, params), + }; + return message; + }; + __internal__decodeArgs = (args, data) => { + // for decoding we expect the input to be just the arg data, no selectors + // no length added (this allows use with events as well) + let offset = 0; + return args.map(({ type: { lookupName, type } }) => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + offset += value.encodedLength; + return value; + }); + }; + __internal__decodeMessage = (type, list, data) => { + const [, trimmed] = compactStripLength(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + if (!message) { + throw new Error(`Unable to find ${type} with selector ${u8aToHex(selector)}`); + } + return message.fromU8a(trimmed.subarray(4)); + }; + __internal__encodeMessageArgs = ({ label, selector }, args, data) => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + return compactAddLength( + u8aConcat( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; +} diff --git a/.api-contract/build/Abi/toLatestCompatible.d.ts b/.api-contract/build/Abi/toLatestCompatible.d.ts new file mode 100644 index 00000000..c3c505b2 --- /dev/null +++ b/.api-contract/build/Abi/toLatestCompatible.d.ts @@ -0,0 +1,32 @@ +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +import type { ContractMetadataSupported } from './index.js'; +export declare const enumVersions: readonly ['V5', 'V4', 'V3', 'V2', 'V1']; +type Versions = (typeof enumVersions)[number] | 'V0'; +type Converter = (registry: Registry, vx: any) => ContractMetadataSupported; +export declare function v5ToLatestCompatible( + _registry: Registry, + v5: ContractMetadataV5, +): ContractMetadataV5; +export declare function v4ToLatestCompatible( + _registry: Registry, + v4: ContractMetadataV4, +): ContractMetadataV4; +export declare const v3ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV3, +) => ContractMetadataSupported; +export declare const v2ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV2, +) => ContractMetadataSupported; +export declare const v1ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV1, +) => ContractMetadataSupported; +export declare const v0ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV0, +) => ContractMetadataSupported; +export declare const convertVersions: [Versions, Converter][]; +export {}; diff --git a/.api-contract/build/Abi/toLatestCompatible.js b/.api-contract/build/Abi/toLatestCompatible.js new file mode 100644 index 00000000..4cec9dab --- /dev/null +++ b/.api-contract/build/Abi/toLatestCompatible.js @@ -0,0 +1,26 @@ +import { v0ToV1 } from './toV1.js'; +import { v1ToV2 } from './toV2.js'; +import { v2ToV3 } from './toV3.js'; +import { v3ToV4 } from './toV4.js'; +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1']; +function createConverter(next, step) { + return (registry, input) => next(registry, step(registry, input)); +} +export function v5ToLatestCompatible(_registry, v5) { + return v5; +} +export function v4ToLatestCompatible(_registry, v4) { + return v4; +} +export const v3ToLatestCompatible = /*#__PURE__*/ createConverter(v4ToLatestCompatible, v3ToV4); +export const v2ToLatestCompatible = /*#__PURE__*/ createConverter(v3ToLatestCompatible, v2ToV3); +export const v1ToLatestCompatible = /*#__PURE__*/ createConverter(v2ToLatestCompatible, v1ToV2); +export const v0ToLatestCompatible = /*#__PURE__*/ createConverter(v1ToLatestCompatible, v0ToV1); +export const convertVersions = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', v3ToLatestCompatible], + ['V2', v2ToLatestCompatible], + ['V1', v1ToLatestCompatible], + ['V0', v0ToLatestCompatible], +]; diff --git a/.api-contract/build/Abi/toV1.d.ts b/.api-contract/build/Abi/toV1.d.ts new file mode 100644 index 00000000..dc41ae43 --- /dev/null +++ b/.api-contract/build/Abi/toV1.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV0, ContractMetadataV1 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v0ToV1(registry: Registry, v0: ContractMetadataV0): ContractMetadataV1; diff --git a/.api-contract/build/Abi/toV1.js b/.api-contract/build/Abi/toV1.js new file mode 100644 index 00000000..06c9c5fe --- /dev/null +++ b/.api-contract/build/Abi/toV1.js @@ -0,0 +1,24 @@ +import { convertSiV0toV1 } from '@polkadot/types'; +import { objectSpread } from '@polkadot/util'; +function v0ToV1Names(all) { + return all.map(e => + objectSpread({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); +} +export function v0ToV1(registry, v0) { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + return registry.createType( + 'ContractMetadataV1', + objectSpread({}, v0, { + spec: objectSpread({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: convertSiV0toV1(registry, v0.types), + }), + ); +} diff --git a/.api-contract/build/Abi/toV2.d.ts b/.api-contract/build/Abi/toV2.d.ts new file mode 100644 index 00000000..3de0aa9b --- /dev/null +++ b/.api-contract/build/Abi/toV2.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV1, ContractMetadataV2 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v1ToV2(registry: Registry, v1: ContractMetadataV1): ContractMetadataV2; diff --git a/.api-contract/build/Abi/toV2.js b/.api-contract/build/Abi/toV2.js new file mode 100644 index 00000000..9214a3bf --- /dev/null +++ b/.api-contract/build/Abi/toV2.js @@ -0,0 +1,33 @@ +import { objectSpread } from '@polkadot/util'; +const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', +}; +function v1ToV2Label(entry) { + return objectSpread({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); +} +function v1ToV2Labels(registry, outType, all) { + return all.map(e => + registry.createType( + `${outType}V2`, + objectSpread(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); +} +export function v1ToV2(registry, v1) { + return registry.createType( + 'ContractMetadataV2', + objectSpread({}, v1, { + spec: objectSpread({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); +} diff --git a/.api-contract/build/Abi/toV3.d.ts b/.api-contract/build/Abi/toV3.d.ts new file mode 100644 index 00000000..10cc0d67 --- /dev/null +++ b/.api-contract/build/Abi/toV3.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV2, ContractMetadataV3 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v2ToV3(registry: Registry, v2: ContractMetadataV2): ContractMetadataV3; diff --git a/.api-contract/build/Abi/toV3.js b/.api-contract/build/Abi/toV3.js new file mode 100644 index 00000000..212c2297 --- /dev/null +++ b/.api-contract/build/Abi/toV3.js @@ -0,0 +1,14 @@ +import { objectSpread } from '@polkadot/util'; +export function v2ToV3(registry, v2) { + return registry.createType( + 'ContractMetadataV3', + objectSpread({}, v2, { + spec: objectSpread({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + // V3 introduces the payable flag on constructors, for + registry.createType('ContractConstructorSpecV4', objectSpread({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', objectSpread({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); +} diff --git a/.api-contract/build/LICENSE b/.api-contract/build/LICENSE new file mode 100644 index 00000000..0d381b2e --- /dev/null +++ b/.api-contract/build/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS + +APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + +Copyright [yyyy] [name of copyright owner] + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/.api-contract/build/README.md b/.api-contract/build/README.md new file mode 100644 index 00000000..f50beb5f --- /dev/null +++ b/.api-contract/build/README.md @@ -0,0 +1,3 @@ +# @polkadot/api-contract + +Interfaces to allow for the encoding and decoding of Substrate contract ABIs. diff --git a/.api-contract/build/augment.d.ts b/.api-contract/build/augment.d.ts new file mode 100644 index 00000000..40e6ced0 --- /dev/null +++ b/.api-contract/build/augment.d.ts @@ -0,0 +1 @@ +import '@polkadot/api-augment'; diff --git a/.api-contract/build/augment.js b/.api-contract/build/augment.js new file mode 100644 index 00000000..40e6ced0 --- /dev/null +++ b/.api-contract/build/augment.js @@ -0,0 +1 @@ +import '@polkadot/api-augment'; diff --git a/.api-contract/build/base/Base.d.ts b/.api-contract/build/base/Base.d.ts new file mode 100644 index 00000000..0c05a333 --- /dev/null +++ b/.api-contract/build/base/Base.d.ts @@ -0,0 +1,16 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Registry } from '@polkadot/types/types'; +import { Abi } from '../Abi/index.js'; +export declare abstract class Base { + readonly abi: Abi; + readonly api: ApiBase; + protected readonly _decorateMethod: DecorateMethod; + protected readonly _isWeightV1: boolean; + constructor( + api: ApiBase, + abi: string | Record | Abi, + decorateMethod: DecorateMethod, + ); + get registry(): Registry; +} diff --git a/.api-contract/build/base/Base.js b/.api-contract/build/base/Base.js new file mode 100644 index 00000000..48f9863b --- /dev/null +++ b/.api-contract/build/base/Base.js @@ -0,0 +1,34 @@ +import { isFunction } from '@polkadot/util'; +import { Abi } from '../Abi/index.js'; +export class Base { + abi; + api; + _decorateMethod; + _isWeightV1; + constructor(api, abi, decorateMethod) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !isFunction(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !isFunction(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + this.abi = abi instanceof Abi ? abi : new Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + get registry() { + return this.api.registry; + } +} diff --git a/.api-contract/build/base/Blueprint.d.ts b/.api-contract/build/base/Blueprint.d.ts new file mode 100644 index 00000000..ce3a70cd --- /dev/null +++ b/.api-contract/build/base/Blueprint.d.ts @@ -0,0 +1,38 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Hash } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { MapConstructorExec } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +import { Contract } from './Contract.js'; +export type BlueprintConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, +) => Blueprint; +export declare class BlueprintSubmittableResult< + ApiType extends ApiTypes, +> extends SubmittableResult { + readonly contract?: Contract | undefined; + constructor(result: ISubmittableResult, contract?: Contract); +} +export declare class Blueprint extends Base { + #private; + /** + * @description The on-chain code hash for this blueprint + */ + readonly codeHash: Hash; + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + decorateMethod: DecorateMethod, + ); + get tx(): MapConstructorExec; +} +export declare function extendBlueprint( + type: ApiType, + decorateMethod: DecorateMethod, +): BlueprintConstructor; diff --git a/.api-contract/build/base/Blueprint.js b/.api-contract/build/base/Blueprint.js new file mode 100644 index 00000000..f0f4f8c3 --- /dev/null +++ b/.api-contract/build/base/Blueprint.js @@ -0,0 +1,75 @@ +import { SubmittableResult } from '@polkadot/api'; +import { BN_ZERO, isUndefined } from '@polkadot/util'; +import { Base } from './Base.js'; +import { Contract } from './Contract.js'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.js'; +export class BlueprintSubmittableResult extends SubmittableResult { + contract; + constructor(result, contract) { + super(result); + this.contract = contract; + } +} +export class Blueprint extends Base { + /** + * @description The on-chain code hash for this blueprint + */ + codeHash; + __internal__tx = {}; + constructor(api, abi, codeHash, decorateMethod) { + super(api, abi, decorateMethod); + this.codeHash = this.registry.createType('Hash', codeHash); + this.abi.constructors.forEach(c => { + if (isUndefined(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = createBluePrintTx(c, (o, p) => + this.__internal__deploy(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__deploy = ( + constructorOrId, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .instantiate( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + result => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; +} +export function extendBlueprint(type, decorateMethod) { + return class extends Blueprint { + static __BlueprintType = type; + constructor(api, abi, codeHash) { + super(api, abi, codeHash, decorateMethod); + } + }; +} diff --git a/.api-contract/build/base/Code.d.ts b/.api-contract/build/base/Code.d.ts new file mode 100644 index 00000000..ab612cef --- /dev/null +++ b/.api-contract/build/base/Code.d.ts @@ -0,0 +1,38 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { MapConstructorExec } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +import { Blueprint } from './Blueprint.js'; +import { Contract } from './Contract.js'; +export type CodeConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, +) => Code; +export declare class CodeSubmittableResult extends SubmittableResult { + readonly blueprint?: Blueprint | undefined; + readonly contract?: Contract | undefined; + constructor( + result: ISubmittableResult, + blueprint?: Blueprint | undefined, + contract?: Contract | undefined, + ); +} +export declare class Code extends Base { + #private; + readonly code: Uint8Array; + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + decorateMethod: DecorateMethod, + ); + get tx(): MapConstructorExec; +} +export declare function extendCode( + type: ApiType, + decorateMethod: DecorateMethod, +): CodeConstructor; diff --git a/.api-contract/build/base/Code.js b/.api-contract/build/base/Code.js new file mode 100644 index 00000000..c4e069e5 --- /dev/null +++ b/.api-contract/build/base/Code.js @@ -0,0 +1,79 @@ +import { SubmittableResult } from '@polkadot/api'; +import { BN_ZERO, compactAddLength, isRiscV, isUndefined, isWasm, u8aToU8a } from '@polkadot/util'; +import { Base } from './Base.js'; +import { Blueprint } from './Blueprint.js'; +import { Contract } from './Contract.js'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.js'; +export class CodeSubmittableResult extends SubmittableResult { + blueprint; + contract; + constructor(result, blueprint, contract) { + super(result); + this.blueprint = blueprint; + this.contract = contract; + } +} +function isValidCode(code) { + return isWasm(code) || isRiscV(code); +} +export class Code extends Base { + code; + __internal__tx = {}; + constructor(api, abi, wasm, decorateMethod) { + super(api, abi, decorateMethod); + this.code = isValidCode(this.abi.info.source.wasm) ? this.abi.info.source.wasm : u8aToU8a(wasm); + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + this.abi.constructors.forEach(c => { + if (isUndefined(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = createBluePrintTx(c, (o, p) => + this.__internal__instantiate(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__instantiate = ( + constructorOrId, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + compactAddLength(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + result => + new CodeSubmittableResult( + result, + new Blueprint(this.api, this.abi, this.abi.info.source.wasmHash, this._decorateMethod), + new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; +} +export function extendCode(type, decorateMethod) { + return class extends Code { + static __CodeType = type; + constructor(api, abi, wasm) { + super(api, abi, wasm, decorateMethod); + } + }; +} diff --git a/.api-contract/build/base/Contract.d.ts b/.api-contract/build/base/Contract.d.ts new file mode 100644 index 00000000..e60d7540 --- /dev/null +++ b/.api-contract/build/base/Contract.d.ts @@ -0,0 +1,37 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { AccountId, AccountId20 } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { DecodedEvent } from '../types.js'; +import type { MapMessageQuery, MapMessageTx } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +export type ContractConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, +) => Contract; +export declare class ContractSubmittableResult extends SubmittableResult { + readonly contractEvents?: DecodedEvent[] | undefined; + constructor(result: ISubmittableResult, contractEvents?: DecodedEvent[]); +} +export declare class Contract extends Base { + #private; + /** + * @description The on-chain address for this contract + */ + readonly address: AccountId20; + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId20, + decorateMethod: DecorateMethod, + ); + get query(): MapMessageQuery; + get tx(): MapMessageTx; +} +export declare function extendContract( + type: ApiType, + decorateMethod: DecorateMethod, +): ContractConstructor; diff --git a/.api-contract/build/base/Contract.js b/.api-contract/build/base/Contract.js new file mode 100644 index 00000000..81ec5787 --- /dev/null +++ b/.api-contract/build/base/Contract.js @@ -0,0 +1,154 @@ +import { map } from 'rxjs'; +import { SubmittableResult } from '@polkadot/api'; +import { BN, BN_HUNDRED, BN_ONE, BN_ZERO, isUndefined, logger } from '@polkadot/util'; +import { applyOnEvent } from '../util.js'; +import { Base } from './Base.js'; +import { convertWeight, withMeta } from './util.js'; +const MAX_CALL_GAS = new BN(5_000_000_000_000).isub(BN_ONE); +const l = logger('Contract'); +function createQuery(meta, fn) { + return withMeta(meta, (origin, options, ...params) => fn(origin, options, params)); +} +function createTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); +} +export class ContractSubmittableResult extends SubmittableResult { + contractEvents; + constructor(result, contractEvents) { + super(result); + this.contractEvents = contractEvents; + } +} +export class Contract extends Base { + /** + * @description The on-chain address for this contract + */ + address; + __internal__query = {}; + __internal__tx = {}; + constructor(api, abi, address, decorateMethod) { + super(api, abi, decorateMethod); + this.address = this.registry.createType('AccountId20', address); + this.abi.messages.forEach(m => { + if (isUndefined(this.__internal__tx[m.method])) { + this.__internal__tx[m.method] = createTx(m, (o, p) => this.__internal__exec(m, o, p)); + } + if (isUndefined(this.__internal__query[m.method])) { + this.__internal__query[m.method] = createQuery(m, (f, o, p) => + this.__internal__read(m, o, p).send(f), + ); + } + }); + } + get query() { + return this.__internal__query; + } + get tx() { + return this.__internal__tx; + } + __internal__getGas = (_gasLimit, isCall = false) => { + const weight = convertWeight(_gasLimit); + if (weight.v1Weight.gt(BN_ZERO)) { + return weight; + } + return convertWeight( + isCall + ? MAX_CALL_GAS + : convertWeight( + this.api.consts.system.blockWeights + ? this.api.consts.system.blockWeights.maxBlock + : this.api.consts.system['maximumBlockWeight'], + ) + .v1Weight.muln(64) + .div(BN_HUNDRED), + ); + }; + __internal__exec = ( + messageOrId, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .call( + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + result => + // ContractEmitted is the current generation, ContractExecution is the previous generation + new ContractSubmittableResult( + result, + applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], records => + records + .map(record => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${error.message}`); + return null; + } + }) + .filter(decoded => !!decoded), + ), + ), + ); + }; + __internal__read = ( + messageOrId, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }, + params, + ) => { + const message = this.abi.findMessage(messageOrId); + return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + send: this._decorateMethod(origin => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? this.__internal__getGas(gasLimit, true).v1Weight + : this.__internal__getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + map(({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }) => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !convertWeight(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + })), + ), + ), + }; + }; +} +export function extendContract(type, decorateMethod) { + return class extends Contract { + static __ContractType = type; + constructor(api, abi, address) { + super(api, abi, address, decorateMethod); + } + }; +} diff --git a/.api-contract/build/base/index.d.ts b/.api-contract/build/base/index.d.ts new file mode 100644 index 00000000..905b4515 --- /dev/null +++ b/.api-contract/build/base/index.d.ts @@ -0,0 +1,3 @@ +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js'; +export { Code, CodeSubmittableResult, extendCode } from './Code.js'; +export { Contract, extendContract } from './Contract.js'; diff --git a/.api-contract/build/base/index.js b/.api-contract/build/base/index.js new file mode 100644 index 00000000..905b4515 --- /dev/null +++ b/.api-contract/build/base/index.js @@ -0,0 +1,3 @@ +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js'; +export { Code, CodeSubmittableResult, extendCode } from './Code.js'; +export { Contract, extendContract } from './Contract.js'; diff --git a/.api-contract/build/base/mock.d.ts b/.api-contract/build/base/mock.d.ts new file mode 100644 index 00000000..51f21099 --- /dev/null +++ b/.api-contract/build/base/mock.d.ts @@ -0,0 +1,2 @@ +import type { ApiBase } from '@polkadot/api/base'; +export declare const mockApi: ApiBase<'promise'>; diff --git a/.api-contract/build/base/mock.js b/.api-contract/build/base/mock.js new file mode 100644 index 00000000..55a4f489 --- /dev/null +++ b/.api-contract/build/base/mock.js @@ -0,0 +1,22 @@ +import { TypeRegistry } from '@polkadot/types'; +const registry = new TypeRegistry(); +const instantiateWithCode = () => { + throw new Error('mock'); +}; +instantiateWithCode.meta = { args: new Array(6) }; +export const mockApi = { + call: { + contractsApi: { + call: () => { + throw new Error('mock'); + }, + }, + }, + isConnected: true, + registry, + tx: { + contracts: { + instantiateWithCode, + }, + }, +}; diff --git a/.api-contract/build/base/types.d.ts b/.api-contract/build/base/types.d.ts new file mode 100644 index 00000000..1841c9b7 --- /dev/null +++ b/.api-contract/build/base/types.d.ts @@ -0,0 +1,40 @@ +import type { Observable } from 'rxjs'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, ObsInnerType } from '@polkadot/api/types'; +import type { AccountId } from '@polkadot/types/interfaces'; +import type { + AbiMessage, + BlueprintOptions, + ContractCallOutcome, + ContractOptions, +} from '../types.js'; +export interface MessageMeta { + readonly meta: AbiMessage; +} +export interface BlueprintDeploy extends MessageMeta { + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic; +} +export interface ContractQuery extends MessageMeta { + ( + origin: AccountId | string | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult; +} +export interface ContractTx extends MessageMeta { + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic; +} +export type ContractGeneric = ( + messageOrId: AbiMessage | string | number, + options: O, + ...params: unknown[] +) => T; +export type ContractCallResult = ApiType extends 'rxjs' + ? Observable + : Promise>>; +export interface ContractCallSend { + send(account: string | AccountId | Uint8Array): ContractCallResult; +} +export type MapConstructorExec = Record>; +export type MapMessageTx = Record>; +export type MapMessageQuery = Record>; diff --git a/.api-contract/build/base/types.js b/.api-contract/build/base/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build/base/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build/base/util.d.ts b/.api-contract/build/base/util.d.ts new file mode 100644 index 00000000..27d26904 --- /dev/null +++ b/.api-contract/build/base/util.d.ts @@ -0,0 +1,31 @@ +import type { SubmittableResult } from '@polkadot/api'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { WeightV1, WeightV2 } from '@polkadot/types/interfaces'; +import type { BN } from '@polkadot/util'; +import type { AbiConstructor, AbiMessage, BlueprintOptions, WeightAll } from '../types.js'; +import type { BlueprintDeploy, ContractGeneric } from './types.js'; +export declare const EMPTY_SALT: Uint8Array; +export declare function withMeta< + T extends { + meta: AbiMessage; + }, +>(meta: AbiMessage, creator: Omit): T; +export declare function createBluePrintTx( + meta: AbiMessage, + fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic, +): BlueprintDeploy; +export declare function createBluePrintWithId( + fn: ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + params: unknown[], + ) => T, +): ContractGeneric; +export declare function encodeSalt(salt?: Uint8Array | string | null): Uint8Array; +export declare function convertWeight( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): WeightAll; +export declare function isWeightV2( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): weight is WeightV2; diff --git a/.api-contract/build/base/util.js b/.api-contract/build/base/util.js new file mode 100644 index 00000000..551dad16 --- /dev/null +++ b/.api-contract/build/base/util.js @@ -0,0 +1,33 @@ +import { Bytes } from '@polkadot/types'; +import { bnToBn, compactAddLength, u8aToU8a } from '@polkadot/util'; +import { randomAsU8a } from '@polkadot/util-crypto'; +export const EMPTY_SALT = new Uint8Array(); +export function withMeta(meta, creator) { + creator.meta = meta; + return creator; +} +export function createBluePrintTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); +} +export function createBluePrintWithId(fn) { + return (constructorOrId, options, ...params) => fn(constructorOrId, options, params); +} +export function encodeSalt(salt = randomAsU8a()) { + return salt instanceof Bytes + ? salt + : salt?.length + ? compactAddLength(u8aToU8a(salt)) + : EMPTY_SALT; +} +export function convertWeight(weight) { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [bnToBn(weight), undefined]; + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; +} +export function isWeightV2(weight) { + return !!weight.proofSize; +} diff --git a/.api-contract/build/bundle-polkadot-api-contract.js b/.api-contract/build/bundle-polkadot-api-contract.js new file mode 100644 index 00000000..ea71636a --- /dev/null +++ b/.api-contract/build/bundle-polkadot-api-contract.js @@ -0,0 +1,1433 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' + ? factory( + exports, + require('@polkadot/types'), + require('@polkadot/util'), + require('@polkadot/api'), + require('@polkadot/util-crypto'), + ) + : typeof define === 'function' && define.amd + ? define( + [ + 'exports', + '@polkadot/types', + '@polkadot/util', + '@polkadot/api', + '@polkadot/util-crypto', + ], + factory, + ) + : ((global = typeof globalThis !== 'undefined' ? globalThis : global || self), + factory( + (global.polkadotApiContract = {}), + global.polkadotTypes, + global.polkadotUtil, + global.polkadotApi, + global.polkadotUtilCrypto, + )); +})(this, function (exports, types, util, api, utilCrypto) { + 'use strict'; + + const global = + typeof globalThis !== 'undefined' ? globalThis : typeof self !== 'undefined' ? self : window; + + var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null; + var TypeDefInfo; + (function (TypeDefInfo) { + TypeDefInfo[(TypeDefInfo['BTreeMap'] = 0)] = 'BTreeMap'; + TypeDefInfo[(TypeDefInfo['BTreeSet'] = 1)] = 'BTreeSet'; + TypeDefInfo[(TypeDefInfo['Compact'] = 2)] = 'Compact'; + TypeDefInfo[(TypeDefInfo['DoNotConstruct'] = 3)] = 'DoNotConstruct'; + TypeDefInfo[(TypeDefInfo['Enum'] = 4)] = 'Enum'; + TypeDefInfo[(TypeDefInfo['HashMap'] = 5)] = 'HashMap'; + TypeDefInfo[(TypeDefInfo['Int'] = 6)] = 'Int'; + TypeDefInfo[(TypeDefInfo['Linkage'] = 7)] = 'Linkage'; + TypeDefInfo[(TypeDefInfo['Null'] = 8)] = 'Null'; + TypeDefInfo[(TypeDefInfo['Option'] = 9)] = 'Option'; + TypeDefInfo[(TypeDefInfo['Plain'] = 10)] = 'Plain'; + TypeDefInfo[(TypeDefInfo['Range'] = 11)] = 'Range'; + TypeDefInfo[(TypeDefInfo['RangeInclusive'] = 12)] = 'RangeInclusive'; + TypeDefInfo[(TypeDefInfo['Result'] = 13)] = 'Result'; + TypeDefInfo[(TypeDefInfo['Set'] = 14)] = 'Set'; + TypeDefInfo[(TypeDefInfo['Si'] = 15)] = 'Si'; + TypeDefInfo[(TypeDefInfo['Struct'] = 16)] = 'Struct'; + TypeDefInfo[(TypeDefInfo['Tuple'] = 17)] = 'Tuple'; + TypeDefInfo[(TypeDefInfo['UInt'] = 18)] = 'UInt'; + TypeDefInfo[(TypeDefInfo['Vec'] = 19)] = 'Vec'; + TypeDefInfo[(TypeDefInfo['VecFixed'] = 20)] = 'VecFixed'; + TypeDefInfo[(TypeDefInfo['WrapperKeepOpaque'] = 21)] = 'WrapperKeepOpaque'; + TypeDefInfo[(TypeDefInfo['WrapperOpaque'] = 22)] = 'WrapperOpaque'; + })(TypeDefInfo || (TypeDefInfo = {})); + + function v0ToV1Names(all) { + return all.map(e => + util.objectSpread({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); + } + function v0ToV1(registry, v0) { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + return registry.createType( + 'ContractMetadataV1', + util.objectSpread({}, v0, { + spec: util.objectSpread({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: types.convertSiV0toV1(registry, v0.types), + }), + ); + } + + const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', + }; + function v1ToV2Label(entry) { + return util.objectSpread({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); + } + function v1ToV2Labels(registry, outType, all) { + return all.map(e => + registry.createType( + `${outType}V2`, + util.objectSpread(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); + } + function v1ToV2(registry, v1) { + return registry.createType( + 'ContractMetadataV2', + util.objectSpread({}, v1, { + spec: util.objectSpread({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); + } + + function v2ToV3(registry, v2) { + return registry.createType( + 'ContractMetadataV3', + util.objectSpread({}, v2, { + spec: util.objectSpread({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + registry.createType( + 'ContractConstructorSpecV3', + util.objectSpread({}, c, { payable: true }), + ), + ), + }), + }), + ); + } + + function v3ToV4(registry, v3) { + return registry.createType( + 'ContractMetadataV4', + util.objectSpread({}, v3, { + spec: util.objectSpread({}, v3.spec, { + constructors: v3.spec.constructors.map(c => + registry.createType('ContractConstructorSpecV4', util.objectSpread({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', util.objectSpread({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); + } + + const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1']; + function createConverter(next, step) { + return (registry, input) => next(registry, step(registry, input)); + } + function v5ToLatestCompatible(_registry, v5) { + return v5; + } + function v4ToLatestCompatible(_registry, v4) { + return v4; + } + const v3ToLatestCompatible = createConverter(v4ToLatestCompatible, v3ToV4); + const v2ToLatestCompatible = createConverter(v3ToLatestCompatible, v2ToV3); + const v1ToLatestCompatible = createConverter(v2ToLatestCompatible, v1ToV2); + const v0ToLatestCompatible = createConverter(v1ToLatestCompatible, v0ToV1); + const convertVersions = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', v3ToLatestCompatible], + ['V2', v2ToLatestCompatible], + ['V1', v1ToLatestCompatible], + ['V0', v0ToLatestCompatible], + ]; + + const l$1 = util.logger('Abi'); + const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; + function findMessage(list, messageOrId) { + const message = util.isNumber(messageOrId) + ? list[messageOrId] + : util.isString(messageOrId) + ? list.find(({ identifier }) => + [identifier, util.stringCamelCase(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + return util.assertReturn( + message, + () => `Attempted to call an invalid contract interface, ${util.stringify(messageOrId)}`, + ); + } + function getMetadata(registry, json) { + const vx = enumVersions.find(v => util.isObject(json[v])); + const jsonVersion = json.version; + if (!vx && jsonVersion && !enumVersions.find(v => v === `V${jsonVersion}`)) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + const converter = convertVersions.find(([v]) => metadata[`is${v}`]); + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + return upgradedMetadata; + } + function parseJson(json, chainProperties) { + const registry = new types.TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json); + const metadata = getMetadata(registry, json); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + registry.setLookup(lookup); + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + return [json, registry, metadata, info]; + } + function isTypeSpec(value) { + return ( + !!value && + value instanceof Map && + !util.isUndefined(value.type) && + !util.isUndefined(value.displayName) + ); + } + function isOption(value) { + return !!value && value instanceof types.Option; + } + class Abi { + events; + constructors; + info; + json; + messages; + metadata; + registry; + environment = new Map(); + constructor(abiJson, chainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + util.isString(abiJson) ? JSON.parse(abiJson) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map((spec, index) => + this.__internal__createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_, index) => + this.__internal__createEvent(index), + ); + this.messages = this.metadata.spec.messages.map((spec, index) => + this.__internal__createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + if (util.isBn(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + decodeEvent(record) { + switch (this.metadata.version.toString()) { + case '4': + return this.__internal__decodeEventV4(record); + default: + return this.__internal__decodeEventV5(record); + } + } + __internal__decodeEventV5 = record => { + const signatureTopic = record.topics[0]; + const data = record.event.data[1]; + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + if (event) { + return event.fromU8a(data); + } + } + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + const amountIndexed = e.args.filter(a => a.indexed).length; + if (amountIndexed !== amountOfTopics) { + return false; + } + return true; + }); + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + throw new Error('Unable to determine event'); + }; + __internal__decodeEventV4 = record => { + const data = record.event.data[1]; + const index = data[0]; + const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + return event.fromU8a(data.subarray(1)); + }; + decodeConstructor(data) { + return this.__internal__decodeMessage('message', this.constructors, data); + } + decodeMessage(data) { + return this.__internal__decodeMessage('message', this.messages, data); + } + findConstructor(constructorOrId) { + return findMessage(this.constructors, constructorOrId); + } + findMessage(messageOrId) { + return findMessage(this.messages, messageOrId); + } + __internal__createArgs = (args, spec) => { + return args.map(({ label, type }, index) => { + try { + if (!util.isObject(type)) { + throw new Error('Invalid type definition found'); + } + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = util.stringCamelCase(label); + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: TypeDefInfo.Plain, + type: displayName, + }, + }; + } + const typeDef = this.registry.lookup.getTypeDef(type.type); + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l$1.error(`Error expanding argument ${index} in ${util.stringify(spec)}`); + throw error; + } + }); + }; + __internal__createMessageParams = (args, spec) => { + return this.__internal__createArgs(args, spec); + }; + __internal__createEventParams = (args, spec) => { + const params = this.__internal__createArgs(args, spec); + return params.map((p, index) => ({ ...p, indexed: args[index].indexed.toPrimitive() })); + }; + __internal__createEvent = index => { + switch (this.metadata.version.toString()) { + case '4': + return this.__internal__createEventV4(this.metadata.spec.events[index], index); + default: + return this.__internal__createEventV5(this.metadata.spec.events[index], index); + } + }; + __internal__createEventV5 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + return event; + }; + __internal__createEventV4 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + return event; + }; + __internal__createMessage = (spec, index, add = {}) => { + const args = this.__internal__createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: util.stringCamelCase(identifier), + path: identifier.split('::').map(s => util.stringCamelCase(s)), + selector: spec.selector, + toU8a: params => this.__internal__encodeMessageArgs(spec, args, params), + }; + return message; + }; + __internal__decodeArgs = (args, data) => { + let offset = 0; + return args.map(({ type: { lookupName, type } }) => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + offset += value.encodedLength; + return value; + }); + }; + __internal__decodeMessage = (type, list, data) => { + const [, trimmed] = util.compactStripLength(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + if (!message) { + throw new Error(`Unable to find ${type} with selector ${util.u8aToHex(selector)}`); + } + return message.fromU8a(trimmed.subarray(4)); + }; + __internal__encodeMessageArgs = ({ label, selector }, args, data) => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + return util.compactAddLength( + util.u8aConcat( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; + } + + const packageInfo = { + name: '@polkadot/api-contract', + path: + { + url: + typeof document === 'undefined' && typeof location === 'undefined' + ? require('u' + 'rl').pathToFileURL(__filename).href + : typeof document === 'undefined' + ? location.href + : (_documentCurrentScript && _documentCurrentScript.src) || + new URL('bundle-polkadot-api-contract.js', document.baseURI).href, + } && + (typeof document === 'undefined' && typeof location === 'undefined' + ? require('u' + 'rl').pathToFileURL(__filename).href + : typeof document === 'undefined' + ? location.href + : (_documentCurrentScript && _documentCurrentScript.src) || + new URL('bundle-polkadot-api-contract.js', document.baseURI).href) + ? new URL( + typeof document === 'undefined' && typeof location === 'undefined' + ? require('u' + 'rl').pathToFileURL(__filename).href + : typeof document === 'undefined' + ? location.href + : (_documentCurrentScript && _documentCurrentScript.src) || + new URL('bundle-polkadot-api-contract.js', document.baseURI).href, + ).pathname.substring( + 0, + new URL( + typeof document === 'undefined' && typeof location === 'undefined' + ? require('u' + 'rl').pathToFileURL(__filename).href + : typeof document === 'undefined' + ? location.href + : (_documentCurrentScript && _documentCurrentScript.src) || + new URL('bundle-polkadot-api-contract.js', document.baseURI).href, + ).pathname.lastIndexOf('/') + 1, + ) + : 'auto', + type: 'esm', + version: '15.8.1', + }; + + class Base { + abi; + api; + _decorateMethod; + _isWeightV1; + constructor(api, abi, decorateMethod) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !util.isFunction(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !util.isFunction(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + this.abi = abi instanceof Abi ? abi : new Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + get registry() { + return this.api.registry; + } + } + + var extendStatics = function (d, b) { + extendStatics = + Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && + function (d, b) { + d.__proto__ = b; + }) || + function (d, b) { + for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; + }; + return extendStatics(d, b); + }; + function __extends(d, b) { + if (typeof b !== 'function' && b !== null) + throw new TypeError('Class extends value ' + String(b) + ' is not a constructor or null'); + extendStatics(d, b); + function __() { + this.constructor = d; + } + d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __()); + } + function __values(o) { + var s = typeof Symbol === 'function' && Symbol.iterator, + m = s && o[s], + i = 0; + if (m) return m.call(o); + if (o && typeof o.length === 'number') + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + }, + }; + throw new TypeError(s ? 'Object is not iterable.' : 'Symbol.iterator is not defined.'); + } + function __read(o, n) { + var m = typeof Symbol === 'function' && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), + r, + ar = [], + e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } catch (error) { + e = { error: error }; + } finally { + try { + if (r && !r.done && (m = i['return'])) m.call(i); + } finally { + if (e) throw e.error; + } + } + return ar; + } + function __spreadArray(to, from, pack) { + if (pack || arguments.length === 2) + for (var i = 0, l = from.length, ar; i < l; i++) { + if (ar || !(i in from)) { + if (!ar) ar = Array.prototype.slice.call(from, 0, i); + ar[i] = from[i]; + } + } + return to.concat(ar || Array.prototype.slice.call(from)); + } + typeof SuppressedError === 'function' + ? SuppressedError + : function (error, suppressed, message) { + var e = new Error(message); + return (e.name = 'SuppressedError'), (e.error = error), (e.suppressed = suppressed), e; + }; + + function isFunction(value) { + return typeof value === 'function'; + } + + function createErrorClass(createImpl) { + var _super = function (instance) { + Error.call(instance); + instance.stack = new Error().stack; + }; + var ctorFunc = createImpl(_super); + ctorFunc.prototype = Object.create(Error.prototype); + ctorFunc.prototype.constructor = ctorFunc; + return ctorFunc; + } + + var UnsubscriptionError = createErrorClass(function (_super) { + return function UnsubscriptionErrorImpl(errors) { + _super(this); + this.message = errors + ? errors.length + + ' errors occurred during unsubscription:\n' + + errors + .map(function (err, i) { + return i + 1 + ') ' + err.toString(); + }) + .join('\n ') + : ''; + this.name = 'UnsubscriptionError'; + this.errors = errors; + }; + }); + + function arrRemove(arr, item) { + if (arr) { + var index = arr.indexOf(item); + 0 <= index && arr.splice(index, 1); + } + } + + var Subscription = (function () { + function Subscription(initialTeardown) { + this.initialTeardown = initialTeardown; + this.closed = false; + this._parentage = null; + this._finalizers = null; + } + Subscription.prototype.unsubscribe = function () { + var e_1, _a, e_2, _b; + var errors; + if (!this.closed) { + this.closed = true; + var _parentage = this._parentage; + if (_parentage) { + this._parentage = null; + if (Array.isArray(_parentage)) { + try { + for ( + var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); + !_parentage_1_1.done; + _parentage_1_1 = _parentage_1.next() + ) { + var parent_1 = _parentage_1_1.value; + parent_1.remove(this); + } + } catch (e_1_1) { + e_1 = { error: e_1_1 }; + } finally { + try { + if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) + _a.call(_parentage_1); + } finally { + if (e_1) throw e_1.error; + } + } + } else { + _parentage.remove(this); + } + } + var initialFinalizer = this.initialTeardown; + if (isFunction(initialFinalizer)) { + try { + initialFinalizer(); + } catch (e) { + errors = e instanceof UnsubscriptionError ? e.errors : [e]; + } + } + var _finalizers = this._finalizers; + if (_finalizers) { + this._finalizers = null; + try { + for ( + var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); + !_finalizers_1_1.done; + _finalizers_1_1 = _finalizers_1.next() + ) { + var finalizer = _finalizers_1_1.value; + try { + execFinalizer(finalizer); + } catch (err) { + errors = errors !== null && errors !== void 0 ? errors : []; + if (err instanceof UnsubscriptionError) { + errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors)); + } else { + errors.push(err); + } + } + } + } catch (e_2_1) { + e_2 = { error: e_2_1 }; + } finally { + try { + if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) + _b.call(_finalizers_1); + } finally { + if (e_2) throw e_2.error; + } + } + } + if (errors) { + throw new UnsubscriptionError(errors); + } + } + }; + Subscription.prototype.add = function (teardown) { + var _a; + if (teardown && teardown !== this) { + if (this.closed) { + execFinalizer(teardown); + } else { + if (teardown instanceof Subscription) { + if (teardown.closed || teardown._hasParent(this)) { + return; + } + teardown._addParent(this); + } + (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push( + teardown, + ); + } + } + }; + Subscription.prototype._hasParent = function (parent) { + var _parentage = this._parentage; + return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent)); + }; + Subscription.prototype._addParent = function (parent) { + var _parentage = this._parentage; + this._parentage = Array.isArray(_parentage) + ? (_parentage.push(parent), _parentage) + : _parentage + ? [_parentage, parent] + : parent; + }; + Subscription.prototype._removeParent = function (parent) { + var _parentage = this._parentage; + if (_parentage === parent) { + this._parentage = null; + } else if (Array.isArray(_parentage)) { + arrRemove(_parentage, parent); + } + }; + Subscription.prototype.remove = function (teardown) { + var _finalizers = this._finalizers; + _finalizers && arrRemove(_finalizers, teardown); + if (teardown instanceof Subscription) { + teardown._removeParent(this); + } + }; + Subscription.EMPTY = (function () { + var empty = new Subscription(); + empty.closed = true; + return empty; + })(); + return Subscription; + })(); + Subscription.EMPTY; + function isSubscription(value) { + return ( + value instanceof Subscription || + (value && + 'closed' in value && + isFunction(value.remove) && + isFunction(value.add) && + isFunction(value.unsubscribe)) + ); + } + function execFinalizer(finalizer) { + if (isFunction(finalizer)) { + finalizer(); + } else { + finalizer.unsubscribe(); + } + } + + var config = { + onUnhandledError: null, + onStoppedNotification: null, + Promise: undefined, + useDeprecatedSynchronousErrorHandling: false, + useDeprecatedNextContext: false, + }; + + var timeoutProvider = { + setTimeout: function (handler, timeout) { + var args = []; + for (var _i = 2; _i < arguments.length; _i++) { + args[_i - 2] = arguments[_i]; + } + return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args))); + }, + clearTimeout: function (handle) { + var delegate = timeoutProvider.delegate; + return ( + (delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout + )(handle); + }, + delegate: undefined, + }; + + function reportUnhandledError(err) { + timeoutProvider.setTimeout(function () { + { + throw err; + } + }); + } + + function noop() {} + + var Subscriber = (function (_super) { + __extends(Subscriber, _super); + function Subscriber(destination) { + var _this = _super.call(this) || this; + _this.isStopped = false; + if (destination) { + _this.destination = destination; + if (isSubscription(destination)) { + destination.add(_this); + } + } else { + _this.destination = EMPTY_OBSERVER; + } + return _this; + } + Subscriber.create = function (next, error, complete) { + return new SafeSubscriber(next, error, complete); + }; + Subscriber.prototype.next = function (value) { + if (this.isStopped); + else { + this._next(value); + } + }; + Subscriber.prototype.error = function (err) { + if (this.isStopped); + else { + this.isStopped = true; + this._error(err); + } + }; + Subscriber.prototype.complete = function () { + if (this.isStopped); + else { + this.isStopped = true; + this._complete(); + } + }; + Subscriber.prototype.unsubscribe = function () { + if (!this.closed) { + this.isStopped = true; + _super.prototype.unsubscribe.call(this); + this.destination = null; + } + }; + Subscriber.prototype._next = function (value) { + this.destination.next(value); + }; + Subscriber.prototype._error = function (err) { + try { + this.destination.error(err); + } finally { + this.unsubscribe(); + } + }; + Subscriber.prototype._complete = function () { + try { + this.destination.complete(); + } finally { + this.unsubscribe(); + } + }; + return Subscriber; + })(Subscription); + var _bind = Function.prototype.bind; + function bind(fn, thisArg) { + return _bind.call(fn, thisArg); + } + var ConsumerObserver = (function () { + function ConsumerObserver(partialObserver) { + this.partialObserver = partialObserver; + } + ConsumerObserver.prototype.next = function (value) { + var partialObserver = this.partialObserver; + if (partialObserver.next) { + try { + partialObserver.next(value); + } catch (error) { + handleUnhandledError(error); + } + } + }; + ConsumerObserver.prototype.error = function (err) { + var partialObserver = this.partialObserver; + if (partialObserver.error) { + try { + partialObserver.error(err); + } catch (error) { + handleUnhandledError(error); + } + } else { + handleUnhandledError(err); + } + }; + ConsumerObserver.prototype.complete = function () { + var partialObserver = this.partialObserver; + if (partialObserver.complete) { + try { + partialObserver.complete(); + } catch (error) { + handleUnhandledError(error); + } + } + }; + return ConsumerObserver; + })(); + var SafeSubscriber = (function (_super) { + __extends(SafeSubscriber, _super); + function SafeSubscriber(observerOrNext, error, complete) { + var _this = _super.call(this) || this; + var partialObserver; + if (isFunction(observerOrNext) || !observerOrNext) { + partialObserver = { + next: observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined, + error: error !== null && error !== void 0 ? error : undefined, + complete: complete !== null && complete !== void 0 ? complete : undefined, + }; + } else { + var context_1; + if (_this && config.useDeprecatedNextContext) { + context_1 = Object.create(observerOrNext); + context_1.unsubscribe = function () { + return _this.unsubscribe(); + }; + partialObserver = { + next: observerOrNext.next && bind(observerOrNext.next, context_1), + error: observerOrNext.error && bind(observerOrNext.error, context_1), + complete: observerOrNext.complete && bind(observerOrNext.complete, context_1), + }; + } else { + partialObserver = observerOrNext; + } + } + _this.destination = new ConsumerObserver(partialObserver); + return _this; + } + return SafeSubscriber; + })(Subscriber); + function handleUnhandledError(error) { + { + reportUnhandledError(error); + } + } + function defaultErrorHandler(err) { + throw err; + } + var EMPTY_OBSERVER = { + closed: true, + next: noop, + error: defaultErrorHandler, + complete: noop, + }; + + function hasLift(source) { + return isFunction(source === null || source === void 0 ? void 0 : source.lift); + } + function operate(init) { + return function (source) { + if (hasLift(source)) { + return source.lift(function (liftedSource) { + try { + return init(liftedSource, this); + } catch (err) { + this.error(err); + } + }); + } + throw new TypeError('Unable to lift unknown Observable type'); + }; + } + + function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) { + return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize); + } + var OperatorSubscriber = (function (_super) { + __extends(OperatorSubscriber, _super); + function OperatorSubscriber( + destination, + onNext, + onComplete, + onError, + onFinalize, + shouldUnsubscribe, + ) { + var _this = _super.call(this, destination) || this; + _this.onFinalize = onFinalize; + _this.shouldUnsubscribe = shouldUnsubscribe; + _this._next = onNext + ? function (value) { + try { + onNext(value); + } catch (err) { + destination.error(err); + } + } + : _super.prototype._next; + _this._error = onError + ? function (err) { + try { + onError(err); + } catch (err) { + destination.error(err); + } finally { + this.unsubscribe(); + } + } + : _super.prototype._error; + _this._complete = onComplete + ? function () { + try { + onComplete(); + } catch (err) { + destination.error(err); + } finally { + this.unsubscribe(); + } + } + : _super.prototype._complete; + return _this; + } + OperatorSubscriber.prototype.unsubscribe = function () { + var _a; + if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) { + var closed_1 = this.closed; + _super.prototype.unsubscribe.call(this); + !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this)); + } + }; + return OperatorSubscriber; + })(Subscriber); + + function map(project, thisArg) { + return operate(function (source, subscriber) { + var index = 0; + source.subscribe( + createOperatorSubscriber(subscriber, function (value) { + subscriber.next(project.call(thisArg, value, index++)); + }), + ); + }); + } + + function applyOnEvent(result, types, fn) { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + if (records.length) { + return fn(records); + } + } + return undefined; + } + + const EMPTY_SALT = new Uint8Array(); + function withMeta(meta, creator) { + creator.meta = meta; + return creator; + } + function createBluePrintTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); + } + function encodeSalt(salt = utilCrypto.randomAsU8a()) { + return salt instanceof types.Bytes + ? salt + : salt?.length + ? util.compactAddLength(util.u8aToU8a(salt)) + : EMPTY_SALT; + } + function convertWeight(weight) { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [util.bnToBn(weight), undefined]; + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; + } + function isWeightV2(weight) { + return !!weight.proofSize; + } + + const MAX_CALL_GAS = new util.BN(5_000_000_000_000).isub(util.BN_ONE); + const l = util.logger('Contract'); + function createQuery(meta, fn) { + return withMeta(meta, (origin, options, ...params) => fn(origin, options, params)); + } + function createTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); + } + class ContractSubmittableResult extends api.SubmittableResult { + contractEvents; + constructor(result, contractEvents) { + super(result); + this.contractEvents = contractEvents; + } + } + class Contract extends Base { + address; + __internal__query = {}; + __internal__tx = {}; + constructor(api, abi, address, decorateMethod) { + super(api, abi, decorateMethod); + this.address = this.registry.createType('AccountId20', address); + this.abi.messages.forEach(m => { + if (util.isUndefined(this.__internal__tx[m.method])) { + this.__internal__tx[m.method] = createTx(m, (o, p) => this.__internal__exec(m, o, p)); + } + if (util.isUndefined(this.__internal__query[m.method])) { + this.__internal__query[m.method] = createQuery(m, (f, o, p) => + this.__internal__read(m, o, p).send(f), + ); + } + }); + } + get query() { + return this.__internal__query; + } + get tx() { + return this.__internal__tx; + } + __internal__getGas = (_gasLimit, isCall = false) => { + const weight = convertWeight(_gasLimit); + if (weight.v1Weight.gt(util.BN_ZERO)) { + return weight; + } + return convertWeight( + isCall + ? MAX_CALL_GAS + : convertWeight( + this.api.consts.system.blockWeights + ? this.api.consts.system.blockWeights.maxBlock + : this.api.consts.system['maximumBlockWeight'], + ) + .v1Weight.muln(64) + .div(util.BN_HUNDRED), + ); + }; + __internal__exec = ( + messageOrId, + { gasLimit = util.BN_ZERO, storageDepositLimit = null, value = util.BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .call( + this.address, + value, + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + result => + new ContractSubmittableResult( + result, + applyOnEvent(result, ['ContractEmitted', 'ContractExecution'], records => + records + .map(record => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${error.message}`); + return null; + } + }) + .filter(decoded => !!decoded), + ), + ), + ); + }; + __internal__read = ( + messageOrId, + { gasLimit = util.BN_ZERO, storageDepositLimit = null, value = util.BN_ZERO }, + params, + ) => { + const message = this.abi.findMessage(messageOrId); + return { + send: this._decorateMethod(origin => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + this._isWeightV1 + ? this.__internal__getGas(gasLimit, true).v1Weight + : this.__internal__getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + map(({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }) => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !convertWeight(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + })), + ), + ), + }; + }; + } + + class BlueprintSubmittableResult extends api.SubmittableResult { + contract; + constructor(result, contract) { + super(result); + this.contract = contract; + } + } + class Blueprint extends Base { + codeHash; + __internal__tx = {}; + constructor(api, abi, codeHash, decorateMethod) { + super(api, abi, decorateMethod); + this.codeHash = this.registry.createType('Hash', codeHash); + this.abi.constructors.forEach(c => { + if (util.isUndefined(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = createBluePrintTx(c, (o, p) => + this.__internal__deploy(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__deploy = ( + constructorOrId, + { gasLimit = util.BN_ZERO, salt, storageDepositLimit = null, value = util.BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .instantiate( + value, + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + result => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; + } + + class CodeSubmittableResult extends api.SubmittableResult { + blueprint; + contract; + constructor(result, blueprint, contract) { + super(result); + this.blueprint = blueprint; + this.contract = contract; + } + } + function isValidCode(code) { + return util.isWasm(code) || util.isRiscV(code); + } + class Code extends Base { + code; + __internal__tx = {}; + constructor(api, abi, wasm, decorateMethod) { + super(api, abi, decorateMethod); + this.code = isValidCode(this.abi.info.source.wasm) + ? this.abi.info.source.wasm + : util.u8aToU8a(wasm); + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + this.abi.constructors.forEach(c => { + if (util.isUndefined(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = createBluePrintTx(c, (o, p) => + this.__internal__instantiate(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__instantiate = ( + constructorOrId, + { gasLimit = util.BN_ZERO, salt, storageDepositLimit = null, value = util.BN_ZERO }, + params, + ) => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + util.compactAddLength(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + result => + new CodeSubmittableResult( + result, + new Blueprint( + this.api, + this.abi, + this.abi.info.source.wasmHash, + this._decorateMethod, + ), + new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; + } + + class BlueprintPromise extends Blueprint { + constructor(api$1, abi, codeHash) { + super(api$1, abi, codeHash, api.toPromiseMethod); + } + } + class CodePromise extends Code { + constructor(api$1, abi, wasm) { + super(api$1, abi, wasm, api.toPromiseMethod); + } + } + class ContractPromise extends Contract { + constructor(api$1, abi, address) { + super(api$1, abi, address, api.toPromiseMethod); + } + } + + class BlueprintRx extends Blueprint { + constructor(api$1, abi, codeHash) { + super(api$1, abi, codeHash, api.toRxMethod); + } + } + class CodeRx extends Code { + constructor(api$1, abi, wasm) { + super(api$1, abi, wasm, api.toRxMethod); + } + } + class ContractRx extends Contract { + constructor(api$1, abi, address) { + super(api$1, abi, address, api.toRxMethod); + } + } + + exports.Abi = Abi; + exports.BlueprintPromise = BlueprintPromise; + exports.BlueprintRx = BlueprintRx; + exports.CodePromise = CodePromise; + exports.CodeRx = CodeRx; + exports.ContractPromise = ContractPromise; + exports.ContractRx = ContractRx; + exports.packageInfo = packageInfo; +}); diff --git a/.api-contract/build/bundle.d.ts b/.api-contract/build/bundle.d.ts new file mode 100644 index 00000000..d087e9db --- /dev/null +++ b/.api-contract/build/bundle.d.ts @@ -0,0 +1,4 @@ +export { Abi } from './Abi/index.js'; +export { packageInfo } from './packageInfo.js'; +export * from './promise/index.js'; +export * from './rx/index.js'; diff --git a/.api-contract/build/bundle.js b/.api-contract/build/bundle.js new file mode 100644 index 00000000..d087e9db --- /dev/null +++ b/.api-contract/build/bundle.js @@ -0,0 +1,4 @@ +export { Abi } from './Abi/index.js'; +export { packageInfo } from './packageInfo.js'; +export * from './promise/index.js'; +export * from './rx/index.js'; diff --git a/.api-contract/build/cjs/Abi/index.d.ts b/.api-contract/build/cjs/Abi/index.d.ts new file mode 100644 index 00000000..814995b0 --- /dev/null +++ b/.api-contract/build/cjs/Abi/index.d.ts @@ -0,0 +1,42 @@ +import type { + ChainProperties, + ContractMetadataV4, + ContractMetadataV5, + ContractProjectInfo, + EventRecord, +} from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; +import type { + AbiConstructor, + AbiEvent, + AbiMessage, + DecodedEvent, + DecodedMessage, +} from '../types.js'; +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +export declare class Abi { + #private; + readonly events: AbiEvent[]; + readonly constructors: AbiConstructor[]; + readonly info: ContractProjectInfo; + readonly json: Record; + readonly messages: AbiMessage[]; + readonly metadata: ContractMetadataSupported; + readonly registry: Registry; + readonly environment: Map; + constructor(abiJson: Record | string, chainProperties?: ChainProperties); + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record: EventRecord): DecodedEvent; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data: Uint8Array): DecodedMessage; + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data: Uint8Array): DecodedMessage; + findConstructor(constructorOrId: AbiConstructor | string | number): AbiConstructor; + findMessage(messageOrId: AbiMessage | string | number): AbiMessage; +} diff --git a/.api-contract/build/cjs/Abi/index.js b/.api-contract/build/cjs/Abi/index.js new file mode 100644 index 00000000..fa496ef2 --- /dev/null +++ b/.api-contract/build/cjs/Abi/index.js @@ -0,0 +1,348 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Abi = void 0; +const types_1 = require('@polkadot/types'); +const types_create_1 = require('@polkadot/types-create'); +const util_1 = require('@polkadot/util'); +const toLatestCompatible_js_1 = require('./toLatestCompatible.js'); +const l = (0, util_1.logger)('Abi'); +const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; +function findMessage(list, messageOrId) { + const message = (0, util_1.isNumber)(messageOrId) + ? list[messageOrId] + : (0, util_1.isString)(messageOrId) + ? list.find(({ identifier }) => + [identifier, (0, util_1.stringCamelCase)(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + return (0, util_1.assertReturn)( + message, + () => `Attempted to call an invalid contract interface, ${(0, util_1.stringify)(messageOrId)}`, + ); +} +function getMetadata(registry, json) { + // this is for V1, V2, V3 + const vx = toLatestCompatible_js_1.enumVersions.find(v => (0, util_1.isObject)(json[v])); + // this was added in V4 + const jsonVersion = json.version; + if ( + !vx && + jsonVersion && + !toLatestCompatible_js_1.enumVersions.find(v => v === `V${jsonVersion}`) + ) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + const converter = toLatestCompatible_js_1.convertVersions.find(([v]) => metadata[`is${v}`]); + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + return upgradedMetadata; +} +function parseJson(json, chainProperties) { + const registry = new types_1.TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json); + const metadata = getMetadata(registry, json); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + // attach the lookup to the registry - now the types are known + registry.setLookup(lookup); + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + // warm-up the actual type, pre-use + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + return [json, registry, metadata, info]; +} +/** + * @internal + * Determines if the given input value is a ContractTypeSpec + */ +function isTypeSpec(value) { + return ( + !!value && + value instanceof Map && + !(0, util_1.isUndefined)(value.type) && + !(0, util_1.isUndefined)(value.displayName) + ); +} +/** + * @internal + * Determines if the given input value is an Option + */ +function isOption(value) { + return !!value && value instanceof types_1.Option; +} +class Abi { + events; + constructors; + info; + json; + messages; + metadata; + registry; + environment = new Map(); + constructor(abiJson, chainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + (0, util_1.isString)(abiJson) ? JSON.parse(abiJson) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map((spec, index) => + this.__internal__createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_, index) => this.__internal__createEvent(index)); + this.messages = this.metadata.spec.messages.map((spec, index) => + this.__internal__createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + // NOTE See the rationale for having Option<...> values in the actual + // ContractEnvironmentV4 structure definition in interfaces/contractsAbi + // (Due to conversions, the fields may not exist) + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + if ((0, util_1.isBn)(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + /** + * Warning: Unstable API, bound to change + */ + decodeEvent(record) { + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.__internal__decodeEventV4(record); + // Latest + default: + return this.__internal__decodeEventV5(record); + } + } + __internal__decodeEventV5 = record => { + // Find event by first topic, which potentially is the signature_topic + const signatureTopic = record.topics[0]; + const data = record.event.data[1]; + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } + } + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter(a => a.indexed).length; + if (amountIndexed !== amountOfTopics) { + return false; + } + // If all conditions met, it's a potential event + return true; + }); + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + throw new Error('Unable to determine event'); + }; + __internal__decodeEventV4 = record => { + const data = record.event.data[1]; + const index = data[0]; + const event = this.events[index]; + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + return event.fromU8a(data.subarray(1)); + }; + /** + * Warning: Unstable API, bound to change + */ + decodeConstructor(data) { + return this.__internal__decodeMessage('message', this.constructors, data); + } + /** + * Warning: Unstable API, bound to change + */ + decodeMessage(data) { + return this.__internal__decodeMessage('message', this.messages, data); + } + findConstructor(constructorOrId) { + return findMessage(this.constructors, constructorOrId); + } + findMessage(messageOrId) { + return findMessage(this.messages, messageOrId); + } + __internal__createArgs = (args, spec) => { + return args.map(({ label, type }, index) => { + try { + if (!(0, util_1.isObject)(type)) { + throw new Error('Invalid type definition found'); + } + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = (0, util_1.stringCamelCase)(label); + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: types_create_1.TypeDefInfo.Plain, + type: displayName, + }, + }; + } + const typeDef = this.registry.lookup.getTypeDef(type.type); + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l.error(`Error expanding argument ${index} in ${(0, util_1.stringify)(spec)}`); + throw error; + } + }); + }; + __internal__createMessageParams = (args, spec) => { + return this.__internal__createArgs(args, spec); + }; + __internal__createEventParams = (args, spec) => { + const params = this.__internal__createArgs(args, spec); + return params.map((p, index) => ({ ...p, indexed: args[index].indexed.toPrimitive() })); + }; + __internal__createEvent = index => { + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.__internal__createEventV4(this.metadata.spec.events[index], index); + default: + return this.__internal__createEventV5(this.metadata.spec.events[index], index); + } + }; + __internal__createEventV5 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + return event; + }; + __internal__createEventV4 = (spec, index) => { + const args = this.__internal__createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + return event; + }; + __internal__createMessage = (spec, index, add = {}) => { + const args = this.__internal__createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: data => ({ + args: this.__internal__decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: (0, util_1.stringCamelCase)(identifier), + path: identifier.split('::').map(s => (0, util_1.stringCamelCase)(s)), + selector: spec.selector, + toU8a: params => this.__internal__encodeMessageArgs(spec, args, params), + }; + return message; + }; + __internal__decodeArgs = (args, data) => { + // for decoding we expect the input to be just the arg data, no selectors + // no length added (this allows use with events as well) + let offset = 0; + return args.map(({ type: { lookupName, type } }) => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + offset += value.encodedLength; + return value; + }); + }; + __internal__decodeMessage = (type, list, data) => { + const [, trimmed] = (0, util_1.compactStripLength)(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + if (!message) { + throw new Error(`Unable to find ${type} with selector ${(0, util_1.u8aToHex)(selector)}`); + } + return message.fromU8a(trimmed.subarray(4)); + }; + __internal__encodeMessageArgs = ({ label, selector }, args, data) => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + return (0, util_1.compactAddLength)( + (0, util_1.u8aConcat)( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; +} +exports.Abi = Abi; diff --git a/.api-contract/build/cjs/Abi/toLatestCompatible.d.ts b/.api-contract/build/cjs/Abi/toLatestCompatible.d.ts new file mode 100644 index 00000000..c3c505b2 --- /dev/null +++ b/.api-contract/build/cjs/Abi/toLatestCompatible.d.ts @@ -0,0 +1,32 @@ +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +import type { ContractMetadataSupported } from './index.js'; +export declare const enumVersions: readonly ['V5', 'V4', 'V3', 'V2', 'V1']; +type Versions = (typeof enumVersions)[number] | 'V0'; +type Converter = (registry: Registry, vx: any) => ContractMetadataSupported; +export declare function v5ToLatestCompatible( + _registry: Registry, + v5: ContractMetadataV5, +): ContractMetadataV5; +export declare function v4ToLatestCompatible( + _registry: Registry, + v4: ContractMetadataV4, +): ContractMetadataV4; +export declare const v3ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV3, +) => ContractMetadataSupported; +export declare const v2ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV2, +) => ContractMetadataSupported; +export declare const v1ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV1, +) => ContractMetadataSupported; +export declare const v0ToLatestCompatible: ( + registry: Registry, + input: import('@polkadot/types/interfaces').ContractMetadataV0, +) => ContractMetadataSupported; +export declare const convertVersions: [Versions, Converter][]; +export {}; diff --git a/.api-contract/build/cjs/Abi/toLatestCompatible.js b/.api-contract/build/cjs/Abi/toLatestCompatible.js new file mode 100644 index 00000000..4c9ce0d7 --- /dev/null +++ b/.api-contract/build/cjs/Abi/toLatestCompatible.js @@ -0,0 +1,37 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.convertVersions = + exports.v0ToLatestCompatible = + exports.v1ToLatestCompatible = + exports.v2ToLatestCompatible = + exports.v3ToLatestCompatible = + exports.enumVersions = + void 0; +exports.v5ToLatestCompatible = v5ToLatestCompatible; +exports.v4ToLatestCompatible = v4ToLatestCompatible; +const toV1_js_1 = require('./toV1.js'); +const toV2_js_1 = require('./toV2.js'); +const toV3_js_1 = require('./toV3.js'); +const toV4_js_1 = require('./toV4.js'); +exports.enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1']; +function createConverter(next, step) { + return (registry, input) => next(registry, step(registry, input)); +} +function v5ToLatestCompatible(_registry, v5) { + return v5; +} +function v4ToLatestCompatible(_registry, v4) { + return v4; +} +exports.v3ToLatestCompatible = createConverter(v4ToLatestCompatible, toV4_js_1.v3ToV4); +exports.v2ToLatestCompatible = createConverter(exports.v3ToLatestCompatible, toV3_js_1.v2ToV3); +exports.v1ToLatestCompatible = createConverter(exports.v2ToLatestCompatible, toV2_js_1.v1ToV2); +exports.v0ToLatestCompatible = createConverter(exports.v1ToLatestCompatible, toV1_js_1.v0ToV1); +exports.convertVersions = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', exports.v3ToLatestCompatible], + ['V2', exports.v2ToLatestCompatible], + ['V1', exports.v1ToLatestCompatible], + ['V0', exports.v0ToLatestCompatible], +]; diff --git a/.api-contract/build/cjs/Abi/toV1.d.ts b/.api-contract/build/cjs/Abi/toV1.d.ts new file mode 100644 index 00000000..dc41ae43 --- /dev/null +++ b/.api-contract/build/cjs/Abi/toV1.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV0, ContractMetadataV1 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v0ToV1(registry: Registry, v0: ContractMetadataV0): ContractMetadataV1; diff --git a/.api-contract/build/cjs/Abi/toV1.js b/.api-contract/build/cjs/Abi/toV1.js new file mode 100644 index 00000000..3d0f5ec1 --- /dev/null +++ b/.api-contract/build/cjs/Abi/toV1.js @@ -0,0 +1,27 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.v0ToV1 = v0ToV1; +const types_1 = require('@polkadot/types'); +const util_1 = require('@polkadot/util'); +function v0ToV1Names(all) { + return all.map(e => + (0, util_1.objectSpread)({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); +} +function v0ToV1(registry, v0) { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + return registry.createType( + 'ContractMetadataV1', + (0, util_1.objectSpread)({}, v0, { + spec: (0, util_1.objectSpread)({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: (0, types_1.convertSiV0toV1)(registry, v0.types), + }), + ); +} diff --git a/.api-contract/build/cjs/Abi/toV2.d.ts b/.api-contract/build/cjs/Abi/toV2.d.ts new file mode 100644 index 00000000..3de0aa9b --- /dev/null +++ b/.api-contract/build/cjs/Abi/toV2.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV1, ContractMetadataV2 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v1ToV2(registry: Registry, v1: ContractMetadataV1): ContractMetadataV2; diff --git a/.api-contract/build/cjs/Abi/toV2.js b/.api-contract/build/cjs/Abi/toV2.js new file mode 100644 index 00000000..f1457e9d --- /dev/null +++ b/.api-contract/build/cjs/Abi/toV2.js @@ -0,0 +1,36 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.v1ToV2 = v1ToV2; +const util_1 = require('@polkadot/util'); +const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', +}; +function v1ToV2Label(entry) { + return (0, util_1.objectSpread)({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); +} +function v1ToV2Labels(registry, outType, all) { + return all.map(e => + registry.createType( + `${outType}V2`, + (0, util_1.objectSpread)(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); +} +function v1ToV2(registry, v1) { + return registry.createType( + 'ContractMetadataV2', + (0, util_1.objectSpread)({}, v1, { + spec: (0, util_1.objectSpread)({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); +} diff --git a/.api-contract/build/cjs/Abi/toV3.d.ts b/.api-contract/build/cjs/Abi/toV3.d.ts new file mode 100644 index 00000000..10cc0d67 --- /dev/null +++ b/.api-contract/build/cjs/Abi/toV3.d.ts @@ -0,0 +1,3 @@ +import type { ContractMetadataV2, ContractMetadataV3 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +export declare function v2ToV3(registry: Registry, v2: ContractMetadataV2): ContractMetadataV3; diff --git a/.api-contract/build/cjs/Abi/toV3.js b/.api-contract/build/cjs/Abi/toV3.js new file mode 100644 index 00000000..dfb56428 --- /dev/null +++ b/.api-contract/build/cjs/Abi/toV3.js @@ -0,0 +1,20 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.v2ToV3 = v2ToV3; +const util_1 = require('@polkadot/util'); +function v2ToV3(registry, v2) { + return registry.createType( + 'ContractMetadataV3', + (0, util_1.objectSpread)({}, v2, { + spec: (0, util_1.objectSpread)({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + // V3 introduces the payable flag on constructors, for + registry.createType('ContractConstructorSpecV4', (0, util_1.objectSpread)({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', (0, util_1.objectSpread)({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); +} diff --git a/.api-contract/build/cjs/augment.d.ts b/.api-contract/build/cjs/augment.d.ts new file mode 100644 index 00000000..40e6ced0 --- /dev/null +++ b/.api-contract/build/cjs/augment.d.ts @@ -0,0 +1 @@ +import '@polkadot/api-augment'; diff --git a/.api-contract/build/cjs/augment.js b/.api-contract/build/cjs/augment.js new file mode 100644 index 00000000..6464d66c --- /dev/null +++ b/.api-contract/build/cjs/augment.js @@ -0,0 +1,3 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +require('@polkadot/api-augment'); diff --git a/.api-contract/build/cjs/base/Base.d.ts b/.api-contract/build/cjs/base/Base.d.ts new file mode 100644 index 00000000..0c05a333 --- /dev/null +++ b/.api-contract/build/cjs/base/Base.d.ts @@ -0,0 +1,16 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Registry } from '@polkadot/types/types'; +import { Abi } from '../Abi/index.js'; +export declare abstract class Base { + readonly abi: Abi; + readonly api: ApiBase; + protected readonly _decorateMethod: DecorateMethod; + protected readonly _isWeightV1: boolean; + constructor( + api: ApiBase, + abi: string | Record | Abi, + decorateMethod: DecorateMethod, + ); + get registry(): Registry; +} diff --git a/.api-contract/build/cjs/base/Base.js b/.api-contract/build/cjs/base/Base.js new file mode 100644 index 00000000..c077097f --- /dev/null +++ b/.api-contract/build/cjs/base/Base.js @@ -0,0 +1,41 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Base = void 0; +const util_1 = require('@polkadot/util'); +const index_js_1 = require('../Abi/index.js'); +class Base { + abi; + api; + _decorateMethod; + _isWeightV1; + constructor(api, abi, decorateMethod) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !(0, util_1.isFunction)(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !(0, util_1.isFunction)(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + this.abi = + abi instanceof index_js_1.Abi + ? abi + : new index_js_1.Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + get registry() { + return this.api.registry; + } +} +exports.Base = Base; diff --git a/.api-contract/build/cjs/base/Blueprint.d.ts b/.api-contract/build/cjs/base/Blueprint.d.ts new file mode 100644 index 00000000..ce3a70cd --- /dev/null +++ b/.api-contract/build/cjs/base/Blueprint.d.ts @@ -0,0 +1,38 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Hash } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { MapConstructorExec } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +import { Contract } from './Contract.js'; +export type BlueprintConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, +) => Blueprint; +export declare class BlueprintSubmittableResult< + ApiType extends ApiTypes, +> extends SubmittableResult { + readonly contract?: Contract | undefined; + constructor(result: ISubmittableResult, contract?: Contract); +} +export declare class Blueprint extends Base { + #private; + /** + * @description The on-chain code hash for this blueprint + */ + readonly codeHash: Hash; + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + decorateMethod: DecorateMethod, + ); + get tx(): MapConstructorExec; +} +export declare function extendBlueprint( + type: ApiType, + decorateMethod: DecorateMethod, +): BlueprintConstructor; diff --git a/.api-contract/build/cjs/base/Blueprint.js b/.api-contract/build/cjs/base/Blueprint.js new file mode 100644 index 00000000..55bdffaa --- /dev/null +++ b/.api-contract/build/cjs/base/Blueprint.js @@ -0,0 +1,83 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Blueprint = exports.BlueprintSubmittableResult = void 0; +exports.extendBlueprint = extendBlueprint; +const api_1 = require('@polkadot/api'); +const util_1 = require('@polkadot/util'); +const Base_js_1 = require('./Base.js'); +const Contract_js_1 = require('./Contract.js'); +const util_js_1 = require('./util.js'); +class BlueprintSubmittableResult extends api_1.SubmittableResult { + contract; + constructor(result, contract) { + super(result); + this.contract = contract; + } +} +exports.BlueprintSubmittableResult = BlueprintSubmittableResult; +class Blueprint extends Base_js_1.Base { + /** + * @description The on-chain code hash for this blueprint + */ + codeHash; + __internal__tx = {}; + constructor(api, abi, codeHash, decorateMethod) { + super(api, abi, decorateMethod); + this.codeHash = this.registry.createType('Hash', codeHash); + this.abi.constructors.forEach(c => { + if ((0, util_1.isUndefined)(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = (0, util_js_1.createBluePrintTx)(c, (o, p) => + this.__internal__deploy(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__deploy = ( + constructorOrId, + { gasLimit = util_1.BN_ZERO, salt, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .instantiate( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? (0, util_js_1.convertWeight)(gasLimit).v1Weight + : (0, util_js_1.convertWeight)(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + (0, util_js_1.encodeSalt)(salt), + ) + .withResultTransform( + result => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract_js_1.Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; +} +exports.Blueprint = Blueprint; +function extendBlueprint(type, decorateMethod) { + return class extends Blueprint { + static __BlueprintType = type; + constructor(api, abi, codeHash) { + super(api, abi, codeHash, decorateMethod); + } + }; +} diff --git a/.api-contract/build/cjs/base/Code.d.ts b/.api-contract/build/cjs/base/Code.d.ts new file mode 100644 index 00000000..ab612cef --- /dev/null +++ b/.api-contract/build/cjs/base/Code.d.ts @@ -0,0 +1,38 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { MapConstructorExec } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +import { Blueprint } from './Blueprint.js'; +import { Contract } from './Contract.js'; +export type CodeConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, +) => Code; +export declare class CodeSubmittableResult extends SubmittableResult { + readonly blueprint?: Blueprint | undefined; + readonly contract?: Contract | undefined; + constructor( + result: ISubmittableResult, + blueprint?: Blueprint | undefined, + contract?: Contract | undefined, + ); +} +export declare class Code extends Base { + #private; + readonly code: Uint8Array; + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + decorateMethod: DecorateMethod, + ); + get tx(): MapConstructorExec; +} +export declare function extendCode( + type: ApiType, + decorateMethod: DecorateMethod, +): CodeConstructor; diff --git a/.api-contract/build/cjs/base/Code.js b/.api-contract/build/cjs/base/Code.js new file mode 100644 index 00000000..3a6f60a6 --- /dev/null +++ b/.api-contract/build/cjs/base/Code.js @@ -0,0 +1,94 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Code = exports.CodeSubmittableResult = void 0; +exports.extendCode = extendCode; +const api_1 = require('@polkadot/api'); +const util_1 = require('@polkadot/util'); +const Base_js_1 = require('./Base.js'); +const Blueprint_js_1 = require('./Blueprint.js'); +const Contract_js_1 = require('./Contract.js'); +const util_js_1 = require('./util.js'); +class CodeSubmittableResult extends api_1.SubmittableResult { + blueprint; + contract; + constructor(result, blueprint, contract) { + super(result); + this.blueprint = blueprint; + this.contract = contract; + } +} +exports.CodeSubmittableResult = CodeSubmittableResult; +function isValidCode(code) { + return (0, util_1.isWasm)(code) || (0, util_1.isRiscV)(code); +} +class Code extends Base_js_1.Base { + code; + __internal__tx = {}; + constructor(api, abi, wasm, decorateMethod) { + super(api, abi, decorateMethod); + this.code = isValidCode(this.abi.info.source.wasm) + ? this.abi.info.source.wasm + : (0, util_1.u8aToU8a)(wasm); + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + this.abi.constructors.forEach(c => { + if ((0, util_1.isUndefined)(this.__internal__tx[c.method])) { + this.__internal__tx[c.method] = (0, util_js_1.createBluePrintTx)(c, (o, p) => + this.__internal__instantiate(c, o, p), + ); + } + }); + } + get tx() { + return this.__internal__tx; + } + __internal__instantiate = ( + constructorOrId, + { gasLimit = util_1.BN_ZERO, salt, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? (0, util_js_1.convertWeight)(gasLimit).v1Weight + : (0, util_js_1.convertWeight)(gasLimit).v2Weight, + storageDepositLimit, + (0, util_1.compactAddLength)(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + (0, util_js_1.encodeSalt)(salt), + ) + .withResultTransform( + result => + new CodeSubmittableResult( + result, + new Blueprint_js_1.Blueprint( + this.api, + this.abi, + this.abi.info.source.wasmHash, + this._decorateMethod, + ), + new Contract_js_1.Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; +} +exports.Code = Code; +function extendCode(type, decorateMethod) { + return class extends Code { + static __CodeType = type; + constructor(api, abi, wasm) { + super(api, abi, wasm, decorateMethod); + } + }; +} diff --git a/.api-contract/build/cjs/base/Contract.d.ts b/.api-contract/build/cjs/base/Contract.d.ts new file mode 100644 index 00000000..e60d7540 --- /dev/null +++ b/.api-contract/build/cjs/base/Contract.d.ts @@ -0,0 +1,37 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { AccountId, AccountId20 } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { DecodedEvent } from '../types.js'; +import type { MapMessageQuery, MapMessageTx } from './types.js'; +import { SubmittableResult } from '@polkadot/api'; +import { Base } from './Base.js'; +export type ContractConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, +) => Contract; +export declare class ContractSubmittableResult extends SubmittableResult { + readonly contractEvents?: DecodedEvent[] | undefined; + constructor(result: ISubmittableResult, contractEvents?: DecodedEvent[]); +} +export declare class Contract extends Base { + #private; + /** + * @description The on-chain address for this contract + */ + readonly address: AccountId20; + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId20, + decorateMethod: DecorateMethod, + ); + get query(): MapMessageQuery; + get tx(): MapMessageTx; +} +export declare function extendContract( + type: ApiType, + decorateMethod: DecorateMethod, +): ContractConstructor; diff --git a/.api-contract/build/cjs/base/Contract.js b/.api-contract/build/cjs/base/Contract.js new file mode 100644 index 00000000..b3f5b9f5 --- /dev/null +++ b/.api-contract/build/cjs/base/Contract.js @@ -0,0 +1,164 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.Contract = exports.ContractSubmittableResult = void 0; +exports.extendContract = extendContract; +const rxjs_1 = require('rxjs'); +const api_1 = require('@polkadot/api'); +const util_1 = require('@polkadot/util'); +const util_js_1 = require('../util.js'); +const Base_js_1 = require('./Base.js'); +const util_js_2 = require('./util.js'); +const MAX_CALL_GAS = new util_1.BN(5_000_000_000_000).isub(util_1.BN_ONE); +const l = (0, util_1.logger)('Contract'); +function createQuery(meta, fn) { + return (0, util_js_2.withMeta)(meta, (origin, options, ...params) => fn(origin, options, params)); +} +function createTx(meta, fn) { + return (0, util_js_2.withMeta)(meta, (options, ...params) => fn(options, params)); +} +class ContractSubmittableResult extends api_1.SubmittableResult { + contractEvents; + constructor(result, contractEvents) { + super(result); + this.contractEvents = contractEvents; + } +} +exports.ContractSubmittableResult = ContractSubmittableResult; +class Contract extends Base_js_1.Base { + /** + * @description The on-chain address for this contract + */ + address; + __internal__query = {}; + __internal__tx = {}; + constructor(api, abi, address, decorateMethod) { + super(api, abi, decorateMethod); + this.address = this.registry.createType('AccountId20', address); + this.abi.messages.forEach(m => { + if ((0, util_1.isUndefined)(this.__internal__tx[m.method])) { + this.__internal__tx[m.method] = createTx(m, (o, p) => this.__internal__exec(m, o, p)); + } + if ((0, util_1.isUndefined)(this.__internal__query[m.method])) { + this.__internal__query[m.method] = createQuery(m, (f, o, p) => + this.__internal__read(m, o, p).send(f), + ); + } + }); + } + get query() { + return this.__internal__query; + } + get tx() { + return this.__internal__tx; + } + __internal__getGas = (_gasLimit, isCall = false) => { + const weight = (0, util_js_2.convertWeight)(_gasLimit); + if (weight.v1Weight.gt(util_1.BN_ZERO)) { + return weight; + } + return (0, util_js_2.convertWeight)( + isCall + ? MAX_CALL_GAS + : (0, util_js_2.convertWeight)( + this.api.consts.system.blockWeights + ? this.api.consts.system.blockWeights.maxBlock + : this.api.consts.system['maximumBlockWeight'], + ) + .v1Weight.muln(64) + .div(util_1.BN_HUNDRED), + ); + }; + __internal__exec = ( + messageOrId, + { gasLimit = util_1.BN_ZERO, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + return this.api.tx.revive + .call( + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? (0, util_js_2.convertWeight)(gasLimit).v1Weight + : (0, util_js_2.convertWeight)(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + result => + // ContractEmitted is the current generation, ContractExecution is the previous generation + new ContractSubmittableResult( + result, + (0, util_js_1.applyOnEvent)(result, ['ContractEmitted', 'ContractExecution'], records => + records + .map(record => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${error.message}`); + return null; + } + }) + .filter(decoded => !!decoded), + ), + ), + ); + }; + __internal__read = ( + messageOrId, + { gasLimit = util_1.BN_ZERO, storageDepositLimit = null, value = util_1.BN_ZERO }, + params, + ) => { + const message = this.abi.findMessage(messageOrId); + return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + send: this._decorateMethod(origin => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? this.__internal__getGas(gasLimit, true).v1Weight + : this.__internal__getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + (0, rxjs_1.map)( + ({ debugMessage, gasConsumed, gasRequired, result, storageDeposit }) => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !(0, util_js_2.convertWeight)(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + }), + ), + ), + ), + }; + }; +} +exports.Contract = Contract; +function extendContract(type, decorateMethod) { + return class extends Contract { + static __ContractType = type; + constructor(api, abi, address) { + super(api, abi, address, decorateMethod); + } + }; +} diff --git a/.api-contract/build/cjs/base/index.d.ts b/.api-contract/build/cjs/base/index.d.ts new file mode 100644 index 00000000..905b4515 --- /dev/null +++ b/.api-contract/build/cjs/base/index.d.ts @@ -0,0 +1,3 @@ +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js'; +export { Code, CodeSubmittableResult, extendCode } from './Code.js'; +export { Contract, extendContract } from './Contract.js'; diff --git a/.api-contract/build/cjs/base/index.js b/.api-contract/build/cjs/base/index.js new file mode 100644 index 00000000..742b6bbc --- /dev/null +++ b/.api-contract/build/cjs/base/index.js @@ -0,0 +1,62 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.extendContract = + exports.Contract = + exports.extendCode = + exports.CodeSubmittableResult = + exports.Code = + exports.extendBlueprint = + exports.BlueprintSubmittableResult = + exports.Blueprint = + void 0; +var Blueprint_js_1 = require('./Blueprint.js'); +Object.defineProperty(exports, 'Blueprint', { + enumerable: true, + get: function () { + return Blueprint_js_1.Blueprint; + }, +}); +Object.defineProperty(exports, 'BlueprintSubmittableResult', { + enumerable: true, + get: function () { + return Blueprint_js_1.BlueprintSubmittableResult; + }, +}); +Object.defineProperty(exports, 'extendBlueprint', { + enumerable: true, + get: function () { + return Blueprint_js_1.extendBlueprint; + }, +}); +var Code_js_1 = require('./Code.js'); +Object.defineProperty(exports, 'Code', { + enumerable: true, + get: function () { + return Code_js_1.Code; + }, +}); +Object.defineProperty(exports, 'CodeSubmittableResult', { + enumerable: true, + get: function () { + return Code_js_1.CodeSubmittableResult; + }, +}); +Object.defineProperty(exports, 'extendCode', { + enumerable: true, + get: function () { + return Code_js_1.extendCode; + }, +}); +var Contract_js_1 = require('./Contract.js'); +Object.defineProperty(exports, 'Contract', { + enumerable: true, + get: function () { + return Contract_js_1.Contract; + }, +}); +Object.defineProperty(exports, 'extendContract', { + enumerable: true, + get: function () { + return Contract_js_1.extendContract; + }, +}); diff --git a/.api-contract/build/cjs/base/mock.d.ts b/.api-contract/build/cjs/base/mock.d.ts new file mode 100644 index 00000000..51f21099 --- /dev/null +++ b/.api-contract/build/cjs/base/mock.d.ts @@ -0,0 +1,2 @@ +import type { ApiBase } from '@polkadot/api/base'; +export declare const mockApi: ApiBase<'promise'>; diff --git a/.api-contract/build/cjs/base/mock.js b/.api-contract/build/cjs/base/mock.js new file mode 100644 index 00000000..59ffb46e --- /dev/null +++ b/.api-contract/build/cjs/base/mock.js @@ -0,0 +1,25 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.mockApi = void 0; +const types_1 = require('@polkadot/types'); +const registry = new types_1.TypeRegistry(); +const instantiateWithCode = () => { + throw new Error('mock'); +}; +instantiateWithCode.meta = { args: new Array(6) }; +exports.mockApi = { + call: { + contractsApi: { + call: () => { + throw new Error('mock'); + }, + }, + }, + isConnected: true, + registry, + tx: { + contracts: { + instantiateWithCode, + }, + }, +}; diff --git a/.api-contract/build/cjs/base/types.d.ts b/.api-contract/build/cjs/base/types.d.ts new file mode 100644 index 00000000..1841c9b7 --- /dev/null +++ b/.api-contract/build/cjs/base/types.d.ts @@ -0,0 +1,40 @@ +import type { Observable } from 'rxjs'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, ObsInnerType } from '@polkadot/api/types'; +import type { AccountId } from '@polkadot/types/interfaces'; +import type { + AbiMessage, + BlueprintOptions, + ContractCallOutcome, + ContractOptions, +} from '../types.js'; +export interface MessageMeta { + readonly meta: AbiMessage; +} +export interface BlueprintDeploy extends MessageMeta { + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic; +} +export interface ContractQuery extends MessageMeta { + ( + origin: AccountId | string | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult; +} +export interface ContractTx extends MessageMeta { + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic; +} +export type ContractGeneric = ( + messageOrId: AbiMessage | string | number, + options: O, + ...params: unknown[] +) => T; +export type ContractCallResult = ApiType extends 'rxjs' + ? Observable + : Promise>>; +export interface ContractCallSend { + send(account: string | AccountId | Uint8Array): ContractCallResult; +} +export type MapConstructorExec = Record>; +export type MapMessageTx = Record>; +export type MapMessageQuery = Record>; diff --git a/.api-contract/build/cjs/base/types.js b/.api-contract/build/cjs/base/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build/cjs/base/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build/cjs/base/util.d.ts b/.api-contract/build/cjs/base/util.d.ts new file mode 100644 index 00000000..27d26904 --- /dev/null +++ b/.api-contract/build/cjs/base/util.d.ts @@ -0,0 +1,31 @@ +import type { SubmittableResult } from '@polkadot/api'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { WeightV1, WeightV2 } from '@polkadot/types/interfaces'; +import type { BN } from '@polkadot/util'; +import type { AbiConstructor, AbiMessage, BlueprintOptions, WeightAll } from '../types.js'; +import type { BlueprintDeploy, ContractGeneric } from './types.js'; +export declare const EMPTY_SALT: Uint8Array; +export declare function withMeta< + T extends { + meta: AbiMessage; + }, +>(meta: AbiMessage, creator: Omit): T; +export declare function createBluePrintTx( + meta: AbiMessage, + fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic, +): BlueprintDeploy; +export declare function createBluePrintWithId( + fn: ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + params: unknown[], + ) => T, +): ContractGeneric; +export declare function encodeSalt(salt?: Uint8Array | string | null): Uint8Array; +export declare function convertWeight( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): WeightAll; +export declare function isWeightV2( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): weight is WeightV2; diff --git a/.api-contract/build/cjs/base/util.js b/.api-contract/build/cjs/base/util.js new file mode 100644 index 00000000..1a1a14f5 --- /dev/null +++ b/.api-contract/build/cjs/base/util.js @@ -0,0 +1,42 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.EMPTY_SALT = void 0; +exports.withMeta = withMeta; +exports.createBluePrintTx = createBluePrintTx; +exports.createBluePrintWithId = createBluePrintWithId; +exports.encodeSalt = encodeSalt; +exports.convertWeight = convertWeight; +exports.isWeightV2 = isWeightV2; +const types_1 = require('@polkadot/types'); +const util_1 = require('@polkadot/util'); +const util_crypto_1 = require('@polkadot/util-crypto'); +exports.EMPTY_SALT = new Uint8Array(); +function withMeta(meta, creator) { + creator.meta = meta; + return creator; +} +function createBluePrintTx(meta, fn) { + return withMeta(meta, (options, ...params) => fn(options, params)); +} +function createBluePrintWithId(fn) { + return (constructorOrId, options, ...params) => fn(constructorOrId, options, params); +} +function encodeSalt(salt = (0, util_crypto_1.randomAsU8a)()) { + return salt instanceof types_1.Bytes + ? salt + : salt?.length + ? (0, util_1.compactAddLength)((0, util_1.u8aToU8a)(salt)) + : exports.EMPTY_SALT; +} +function convertWeight(weight) { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [(0, util_1.bnToBn)(weight), undefined]; + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; +} +function isWeightV2(weight) { + return !!weight.proofSize; +} diff --git a/.api-contract/build/cjs/bundle.d.ts b/.api-contract/build/cjs/bundle.d.ts new file mode 100644 index 00000000..d087e9db --- /dev/null +++ b/.api-contract/build/cjs/bundle.d.ts @@ -0,0 +1,4 @@ +export { Abi } from './Abi/index.js'; +export { packageInfo } from './packageInfo.js'; +export * from './promise/index.js'; +export * from './rx/index.js'; diff --git a/.api-contract/build/cjs/bundle.js b/.api-contract/build/cjs/bundle.js new file mode 100644 index 00000000..0f1f8f06 --- /dev/null +++ b/.api-contract/build/cjs/bundle.js @@ -0,0 +1,20 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.packageInfo = exports.Abi = void 0; +const tslib_1 = require('tslib'); +var index_js_1 = require('./Abi/index.js'); +Object.defineProperty(exports, 'Abi', { + enumerable: true, + get: function () { + return index_js_1.Abi; + }, +}); +var packageInfo_js_1 = require('./packageInfo.js'); +Object.defineProperty(exports, 'packageInfo', { + enumerable: true, + get: function () { + return packageInfo_js_1.packageInfo; + }, +}); +tslib_1.__exportStar(require('./promise/index.js'), exports); +tslib_1.__exportStar(require('./rx/index.js'), exports); diff --git a/.api-contract/build/cjs/index.d.ts b/.api-contract/build/cjs/index.d.ts new file mode 100644 index 00000000..ca3f403b --- /dev/null +++ b/.api-contract/build/cjs/index.d.ts @@ -0,0 +1,2 @@ +import './packageDetect.js'; +export * from './bundle.js'; diff --git a/.api-contract/build/cjs/index.js b/.api-contract/build/cjs/index.js new file mode 100644 index 00000000..509038d7 --- /dev/null +++ b/.api-contract/build/cjs/index.js @@ -0,0 +1,5 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +const tslib_1 = require('tslib'); +require('./packageDetect.js'); +tslib_1.__exportStar(require('./bundle.js'), exports); diff --git a/.api-contract/build/cjs/package.json b/.api-contract/build/cjs/package.json new file mode 100644 index 00000000..5bbefffb --- /dev/null +++ b/.api-contract/build/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/.api-contract/build/cjs/packageDetect.d.ts b/.api-contract/build/cjs/packageDetect.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build/cjs/packageDetect.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build/cjs/packageDetect.js b/.api-contract/build/cjs/packageDetect.js new file mode 100644 index 00000000..dbbd6594 --- /dev/null +++ b/.api-contract/build/cjs/packageDetect.js @@ -0,0 +1,10 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +const packageInfo_1 = require('@polkadot/api/cjs/packageInfo'); +const packageInfo_2 = require('@polkadot/types/cjs/packageInfo'); +const util_1 = require('@polkadot/util'); +const packageInfo_js_1 = require('./packageInfo.js'); +(0, util_1.detectPackage)(packageInfo_js_1.packageInfo, null, [ + packageInfo_1.packageInfo, + packageInfo_2.packageInfo, +]); diff --git a/.api-contract/build/cjs/packageInfo.d.ts b/.api-contract/build/cjs/packageInfo.d.ts new file mode 100644 index 00000000..1b6c408b --- /dev/null +++ b/.api-contract/build/cjs/packageInfo.d.ts @@ -0,0 +1,6 @@ +export declare const packageInfo: { + name: string; + path: string; + type: string; + version: string; +}; diff --git a/.api-contract/build/cjs/packageInfo.js b/.api-contract/build/cjs/packageInfo.js new file mode 100644 index 00000000..39a18613 --- /dev/null +++ b/.api-contract/build/cjs/packageInfo.js @@ -0,0 +1,9 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.packageInfo = void 0; +exports.packageInfo = { + name: '@polkadot/api-contract', + path: typeof __dirname === 'string' ? __dirname : 'auto', + type: 'cjs', + version: '15.8.1', +}; diff --git a/.api-contract/build/cjs/promise/index.d.ts b/.api-contract/build/cjs/promise/index.d.ts new file mode 100644 index 00000000..43b9620a --- /dev/null +++ b/.api-contract/build/cjs/promise/index.d.ts @@ -0,0 +1,25 @@ +import type { ApiPromise } from '@polkadot/api'; +import type { AccountId20, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export declare class BlueprintPromise extends Blueprint<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + codeHash: string | Hash, + ); +} +export declare class CodePromise extends Code<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ); +} +export declare class ContractPromise extends Contract<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + address: string | AccountId20, + ); +} diff --git a/.api-contract/build/cjs/promise/index.js b/.api-contract/build/cjs/promise/index.js new file mode 100644 index 00000000..d77ad7db --- /dev/null +++ b/.api-contract/build/cjs/promise/index.js @@ -0,0 +1,23 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.ContractPromise = exports.CodePromise = exports.BlueprintPromise = void 0; +const api_1 = require('@polkadot/api'); +const index_js_1 = require('../base/index.js'); +class BlueprintPromise extends index_js_1.Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, api_1.toPromiseMethod); + } +} +exports.BlueprintPromise = BlueprintPromise; +class CodePromise extends index_js_1.Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, api_1.toPromiseMethod); + } +} +exports.CodePromise = CodePromise; +class ContractPromise extends index_js_1.Contract { + constructor(api, abi, address) { + super(api, abi, address, api_1.toPromiseMethod); + } +} +exports.ContractPromise = ContractPromise; diff --git a/.api-contract/build/cjs/promise/types.d.ts b/.api-contract/build/cjs/promise/types.d.ts new file mode 100644 index 00000000..7784ef2c --- /dev/null +++ b/.api-contract/build/cjs/promise/types.d.ts @@ -0,0 +1,6 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build/cjs/promise/types.js b/.api-contract/build/cjs/promise/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build/cjs/promise/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build/cjs/rx/index.d.ts b/.api-contract/build/cjs/rx/index.d.ts new file mode 100644 index 00000000..1357b476 --- /dev/null +++ b/.api-contract/build/cjs/rx/index.d.ts @@ -0,0 +1,17 @@ +import type { ApiRx } from '@polkadot/api'; +import type { AccountId, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export declare class BlueprintRx extends Blueprint<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, codeHash: string | Hash); +} +export declare class CodeRx extends Code<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ); +} +export declare class ContractRx extends Contract<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, address: string | AccountId); +} diff --git a/.api-contract/build/cjs/rx/index.js b/.api-contract/build/cjs/rx/index.js new file mode 100644 index 00000000..6846d72a --- /dev/null +++ b/.api-contract/build/cjs/rx/index.js @@ -0,0 +1,23 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.ContractRx = exports.CodeRx = exports.BlueprintRx = void 0; +const api_1 = require('@polkadot/api'); +const index_js_1 = require('../base/index.js'); +class BlueprintRx extends index_js_1.Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, api_1.toRxMethod); + } +} +exports.BlueprintRx = BlueprintRx; +class CodeRx extends index_js_1.Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, api_1.toRxMethod); + } +} +exports.CodeRx = CodeRx; +class ContractRx extends index_js_1.Contract { + constructor(api, abi, address) { + super(api, abi, address, api_1.toRxMethod); + } +} +exports.ContractRx = ContractRx; diff --git a/.api-contract/build/cjs/rx/types.d.ts b/.api-contract/build/cjs/rx/types.d.ts new file mode 100644 index 00000000..7784ef2c --- /dev/null +++ b/.api-contract/build/cjs/rx/types.d.ts @@ -0,0 +1,6 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build/cjs/rx/types.js b/.api-contract/build/cjs/rx/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build/cjs/rx/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build/cjs/types.d.ts b/.api-contract/build/cjs/types.d.ts new file mode 100644 index 00000000..b535e85a --- /dev/null +++ b/.api-contract/build/cjs/types.d.ts @@ -0,0 +1,85 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { Text } from '@polkadot/types'; +import type { + ContractExecResultResult, + ContractSelector, + StorageDeposit, + Weight, + WeightV2, +} from '@polkadot/types/interfaces'; +import type { Codec, TypeDef } from '@polkadot/types/types'; +import type { BN } from '@polkadot/util'; +import type { HexString } from '@polkadot/util/types'; +import type { Abi } from './index.js'; +export interface ContractBase { + readonly abi: Abi; + readonly api: ApiBase; + getMessage: (name: string) => AbiMessage; + messages: AbiMessage[]; +} +export interface AbiParam { + name: string; + type: TypeDef; +} +export type AbiMessageParam = AbiParam; +export interface AbiEventParam extends AbiParam { + indexed: boolean; +} +export interface AbiEvent { + args: AbiEventParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedEvent; + identifier: string; + index: number; + signatureTopic?: HexString | null; +} +export interface AbiMessage { + args: AbiMessageParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedMessage; + identifier: string; + index: number; + isConstructor?: boolean; + isDefault?: boolean; + isMutating?: boolean; + isPayable?: boolean; + method: string; + path: string[]; + returnType?: TypeDef | null; + selector: ContractSelector; + toU8a: (params: unknown[]) => Uint8Array; +} +export type AbiConstructor = AbiMessage; +export type InterfaceContractCalls = Record; +export interface ContractCallOutcome { + debugMessage: Text; + gasConsumed: Weight; + gasRequired: Weight; + output: Codec | null; + result: ContractExecResultResult; + storageDeposit: StorageDeposit; +} +export interface DecodedEvent { + args: Codec[]; + event: AbiEvent; +} +export interface DecodedMessage { + args: Codec[]; + message: AbiMessage; +} +export interface ContractOptions { + gasLimit?: bigint | string | number | BN | WeightV2; + storageDepositLimit?: bigint | string | number | BN | null; + value?: bigint | BN | string | number; +} +export interface BlueprintOptions extends ContractOptions { + salt?: Uint8Array | string | null; +} +export interface WeightAll { + v1Weight: BN; + v2Weight: { + refTime: BN; + proofSize?: BN | undefined; + }; +} diff --git a/.api-contract/build/cjs/types.js b/.api-contract/build/cjs/types.js new file mode 100644 index 00000000..db8b17d5 --- /dev/null +++ b/.api-contract/build/cjs/types.js @@ -0,0 +1,2 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); diff --git a/.api-contract/build/cjs/util.d.ts b/.api-contract/build/cjs/util.d.ts new file mode 100644 index 00000000..60682eff --- /dev/null +++ b/.api-contract/build/cjs/util.d.ts @@ -0,0 +1,9 @@ +import type { SubmittableResult } from '@polkadot/api'; +import type { EventRecord } from '@polkadot/types/interfaces'; +type ContractEvents = 'CodeStored' | 'ContractEmitted' | 'ContractExecution' | 'Instantiated'; +export declare function applyOnEvent( + result: SubmittableResult, + types: ContractEvents[], + fn: (records: EventRecord[]) => T, +): T | undefined; +export {}; diff --git a/.api-contract/build/cjs/util.js b/.api-contract/build/cjs/util.js new file mode 100644 index 00000000..ae77e3ce --- /dev/null +++ b/.api-contract/build/cjs/util.js @@ -0,0 +1,12 @@ +'use strict'; +Object.defineProperty(exports, '__esModule', { value: true }); +exports.applyOnEvent = applyOnEvent; +function applyOnEvent(result, types, fn) { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + if (records.length) { + return fn(records); + } + } + return undefined; +} diff --git a/.api-contract/build/index.d.ts b/.api-contract/build/index.d.ts new file mode 100644 index 00000000..ca3f403b --- /dev/null +++ b/.api-contract/build/index.d.ts @@ -0,0 +1,2 @@ +import './packageDetect.js'; +export * from './bundle.js'; diff --git a/.api-contract/build/index.js b/.api-contract/build/index.js new file mode 100644 index 00000000..ca3f403b --- /dev/null +++ b/.api-contract/build/index.js @@ -0,0 +1,2 @@ +import './packageDetect.js'; +export * from './bundle.js'; diff --git a/.api-contract/build/package.json b/.api-contract/build/package.json new file mode 100644 index 00000000..efb638cd --- /dev/null +++ b/.api-contract/build/package.json @@ -0,0 +1,408 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/polkadot-js/api/issues", + "description": "Interfaces for interacting with contracts and contract ABIs", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme", + "license": "Apache-2.0", + "name": "@polkadot/api-contract", + "repository": { + "directory": "packages/api-contract", + "type": "git", + "url": "https://github.com/polkadot-js/api.git" + }, + "sideEffects": [ + "./packageDetect.js", + "./cjs/packageDetect.js" + ], + "type": "module", + "version": "15.8.1", + "main": "./cjs/index.js", + "module": "./index.js", + "types": "./index.d.ts", + "exports": { + "./cjs/package.json": "./cjs/package.json", + "./cjs/*": "./cjs/*.js", + ".": { + "module": { + "types": "./index.d.ts", + "default": "./index.js" + }, + "require": { + "types": "./cjs/index.d.ts", + "default": "./cjs/index.js" + }, + "default": { + "types": "./index.d.ts", + "default": "./index.js" + } + }, + "./Abi": { + "module": { + "types": "./Abi/index.d.ts", + "default": "./Abi/index.js" + }, + "require": { + "types": "./cjs/Abi/index.d.ts", + "default": "./cjs/Abi/index.js" + }, + "default": { + "types": "./Abi/index.d.ts", + "default": "./Abi/index.js" + } + }, + "./Abi/toLatestCompatible": { + "module": { + "types": "./Abi/toLatestCompatible.d.ts", + "default": "./Abi/toLatestCompatible.js" + }, + "require": { + "types": "./cjs/Abi/toLatestCompatible.d.ts", + "default": "./cjs/Abi/toLatestCompatible.js" + }, + "default": { + "types": "./Abi/toLatestCompatible.d.ts", + "default": "./Abi/toLatestCompatible.js" + } + }, + "./Abi/toV1": { + "module": { + "types": "./Abi/toV1.d.ts", + "default": "./Abi/toV1.js" + }, + "require": { + "types": "./cjs/Abi/toV1.d.ts", + "default": "./cjs/Abi/toV1.js" + }, + "default": { + "types": "./Abi/toV1.d.ts", + "default": "./Abi/toV1.js" + } + }, + "./Abi/toV2": { + "module": { + "types": "./Abi/toV2.d.ts", + "default": "./Abi/toV2.js" + }, + "require": { + "types": "./cjs/Abi/toV2.d.ts", + "default": "./cjs/Abi/toV2.js" + }, + "default": { + "types": "./Abi/toV2.d.ts", + "default": "./Abi/toV2.js" + } + }, + "./Abi/toV3": { + "module": { + "types": "./Abi/toV3.d.ts", + "default": "./Abi/toV3.js" + }, + "require": { + "types": "./cjs/Abi/toV3.d.ts", + "default": "./cjs/Abi/toV3.js" + }, + "default": { + "types": "./Abi/toV3.d.ts", + "default": "./Abi/toV3.js" + } + }, + "./Abi/toV4": { + "module": { + "types": "./Abi/toV4.d.ts", + "default": "./Abi/toV4.js" + }, + "require": { + "types": "./cjs/Abi/toV4.d.ts", + "default": "./cjs/Abi/toV4.js" + }, + "default": { + "types": "./Abi/toV4.d.ts", + "default": "./Abi/toV4.js" + } + }, + "./augment": { + "module": { + "types": "./augment.d.ts", + "default": "./augment.js" + }, + "require": { + "types": "./cjs/augment.d.ts", + "default": "./cjs/augment.js" + }, + "default": { + "types": "./augment.d.ts", + "default": "./augment.js" + } + }, + "./base": { + "module": { + "types": "./base/index.d.ts", + "default": "./base/index.js" + }, + "require": { + "types": "./cjs/base/index.d.ts", + "default": "./cjs/base/index.js" + }, + "default": { + "types": "./base/index.d.ts", + "default": "./base/index.js" + } + }, + "./base/Base": { + "module": { + "types": "./base/Base.d.ts", + "default": "./base/Base.js" + }, + "require": { + "types": "./cjs/base/Base.d.ts", + "default": "./cjs/base/Base.js" + }, + "default": { + "types": "./base/Base.d.ts", + "default": "./base/Base.js" + } + }, + "./base/Blueprint": { + "module": { + "types": "./base/Blueprint.d.ts", + "default": "./base/Blueprint.js" + }, + "require": { + "types": "./cjs/base/Blueprint.d.ts", + "default": "./cjs/base/Blueprint.js" + }, + "default": { + "types": "./base/Blueprint.d.ts", + "default": "./base/Blueprint.js" + } + }, + "./base/Code": { + "module": { + "types": "./base/Code.d.ts", + "default": "./base/Code.js" + }, + "require": { + "types": "./cjs/base/Code.d.ts", + "default": "./cjs/base/Code.js" + }, + "default": { + "types": "./base/Code.d.ts", + "default": "./base/Code.js" + } + }, + "./base/Contract": { + "module": { + "types": "./base/Contract.d.ts", + "default": "./base/Contract.js" + }, + "require": { + "types": "./cjs/base/Contract.d.ts", + "default": "./cjs/base/Contract.js" + }, + "default": { + "types": "./base/Contract.d.ts", + "default": "./base/Contract.js" + } + }, + "./base/mock": { + "module": { + "types": "./base/mock.d.ts", + "default": "./base/mock.js" + }, + "require": { + "types": "./cjs/base/mock.d.ts", + "default": "./cjs/base/mock.js" + }, + "default": { + "types": "./base/mock.d.ts", + "default": "./base/mock.js" + } + }, + "./base/types": { + "module": { + "types": "./base/types.d.ts", + "default": "./base/types.js" + }, + "require": { + "types": "./cjs/base/types.d.ts", + "default": "./cjs/base/types.js" + }, + "default": { + "types": "./base/types.d.ts", + "default": "./base/types.js" + } + }, + "./base/util": { + "module": { + "types": "./base/util.d.ts", + "default": "./base/util.js" + }, + "require": { + "types": "./cjs/base/util.d.ts", + "default": "./cjs/base/util.js" + }, + "default": { + "types": "./base/util.d.ts", + "default": "./base/util.js" + } + }, + "./bundle": { + "module": { + "types": "./bundle.d.ts", + "default": "./bundle.js" + }, + "require": { + "types": "./cjs/bundle.d.ts", + "default": "./cjs/bundle.js" + }, + "default": { + "types": "./bundle.d.ts", + "default": "./bundle.js" + } + }, + "./package.json": { + "require": "./cjs/package.json", + "default": "./package.json" + }, + "./packageDetect": { + "module": { + "types": "./packageDetect.d.ts", + "default": "./packageDetect.js" + }, + "require": { + "types": "./cjs/packageDetect.d.ts", + "default": "./cjs/packageDetect.js" + }, + "default": { + "types": "./packageDetect.d.ts", + "default": "./packageDetect.js" + } + }, + "./packageInfo.js": { + "module": { + "types": "./packageInfo.d.ts", + "default": "./packageInfo.js" + }, + "require": { + "types": "./cjs/packageInfo.d.ts", + "default": "./cjs/packageInfo.js" + }, + "default": { + "types": "./packageInfo.d.ts", + "default": "./packageInfo.js" + } + }, + "./packageInfo": { + "module": { + "types": "./packageInfo.d.ts", + "default": "./packageInfo.js" + }, + "require": { + "types": "./cjs/packageInfo.d.ts", + "default": "./cjs/packageInfo.js" + }, + "default": { + "types": "./packageInfo.d.ts", + "default": "./packageInfo.js" + } + }, + "./promise": { + "module": { + "types": "./promise/index.d.ts", + "default": "./promise/index.js" + }, + "require": { + "types": "./cjs/promise/index.d.ts", + "default": "./cjs/promise/index.js" + }, + "default": { + "types": "./promise/index.d.ts", + "default": "./promise/index.js" + } + }, + "./promise/types": { + "module": { + "types": "./promise/types.d.ts", + "default": "./promise/types.js" + }, + "require": { + "types": "./cjs/promise/types.d.ts", + "default": "./cjs/promise/types.js" + }, + "default": { + "types": "./promise/types.d.ts", + "default": "./promise/types.js" + } + }, + "./rx": { + "module": { + "types": "./rx/index.d.ts", + "default": "./rx/index.js" + }, + "require": { + "types": "./cjs/rx/index.d.ts", + "default": "./cjs/rx/index.js" + }, + "default": { + "types": "./rx/index.d.ts", + "default": "./rx/index.js" + } + }, + "./rx/types": { + "module": { + "types": "./rx/types.d.ts", + "default": "./rx/types.js" + }, + "require": { + "types": "./cjs/rx/types.d.ts", + "default": "./cjs/rx/types.js" + }, + "default": { + "types": "./rx/types.d.ts", + "default": "./rx/types.js" + } + }, + "./types": { + "module": { + "types": "./types.d.ts", + "default": "./types.js" + }, + "require": { + "types": "./cjs/types.d.ts", + "default": "./cjs/types.js" + }, + "default": { + "types": "./types.d.ts", + "default": "./types.js" + } + }, + "./util": { + "module": { + "types": "./util.d.ts", + "default": "./util.js" + }, + "require": { + "types": "./cjs/util.d.ts", + "default": "./cjs/util.js" + }, + "default": { + "types": "./util.d.ts", + "default": "./util.js" + } + } + }, + "dependencies": { + "@polkadot/api": "15.8.1", + "@polkadot/api-augment": "15.8.1", + "@polkadot/types": "15.8.1", + "@polkadot/types-codec": "15.8.1", + "@polkadot/types-create": "15.8.1", + "@polkadot/util": "^13.4.3", + "@polkadot/util-crypto": "^13.4.3", + "rxjs": "^7.8.1", + "tslib": "^2.8.1" + } +} diff --git a/.api-contract/build/packageDetect.d.ts b/.api-contract/build/packageDetect.d.ts new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build/packageDetect.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build/packageDetect.js b/.api-contract/build/packageDetect.js new file mode 100644 index 00000000..71d2439c --- /dev/null +++ b/.api-contract/build/packageDetect.js @@ -0,0 +1,5 @@ +import { packageInfo as apiInfo } from '@polkadot/api/packageInfo'; +import { packageInfo as typesInfo } from '@polkadot/types/packageInfo'; +import { detectPackage } from '@polkadot/util'; +import { packageInfo } from './packageInfo.js'; +detectPackage(packageInfo, null, [apiInfo, typesInfo]); diff --git a/.api-contract/build/packageInfo.d.ts b/.api-contract/build/packageInfo.d.ts new file mode 100644 index 00000000..1b6c408b --- /dev/null +++ b/.api-contract/build/packageInfo.d.ts @@ -0,0 +1,6 @@ +export declare const packageInfo: { + name: string; + path: string; + type: string; + version: string; +}; diff --git a/.api-contract/build/packageInfo.js b/.api-contract/build/packageInfo.js new file mode 100644 index 00000000..0d90c7dc --- /dev/null +++ b/.api-contract/build/packageInfo.js @@ -0,0 +1,12 @@ +export const packageInfo = { + name: '@polkadot/api-contract', + path: + import.meta && import.meta.url + ? new URL(import.meta.url).pathname.substring( + 0, + new URL(import.meta.url).pathname.lastIndexOf('/') + 1, + ) + : 'auto', + type: 'esm', + version: '15.8.1', +}; diff --git a/.api-contract/build/promise/index.d.ts b/.api-contract/build/promise/index.d.ts new file mode 100644 index 00000000..43b9620a --- /dev/null +++ b/.api-contract/build/promise/index.d.ts @@ -0,0 +1,25 @@ +import type { ApiPromise } from '@polkadot/api'; +import type { AccountId20, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export declare class BlueprintPromise extends Blueprint<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + codeHash: string | Hash, + ); +} +export declare class CodePromise extends Code<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ); +} +export declare class ContractPromise extends Contract<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + address: string | AccountId20, + ); +} diff --git a/.api-contract/build/promise/index.js b/.api-contract/build/promise/index.js new file mode 100644 index 00000000..f938509e --- /dev/null +++ b/.api-contract/build/promise/index.js @@ -0,0 +1,17 @@ +import { toPromiseMethod } from '@polkadot/api'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export class BlueprintPromise extends Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, toPromiseMethod); + } +} +export class CodePromise extends Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, toPromiseMethod); + } +} +export class ContractPromise extends Contract { + constructor(api, abi, address) { + super(api, abi, address, toPromiseMethod); + } +} diff --git a/.api-contract/build/promise/types.d.ts b/.api-contract/build/promise/types.d.ts new file mode 100644 index 00000000..7784ef2c --- /dev/null +++ b/.api-contract/build/promise/types.d.ts @@ -0,0 +1,6 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build/promise/types.js b/.api-contract/build/promise/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build/promise/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build/rx/index.d.ts b/.api-contract/build/rx/index.d.ts new file mode 100644 index 00000000..1357b476 --- /dev/null +++ b/.api-contract/build/rx/index.d.ts @@ -0,0 +1,17 @@ +import type { ApiRx } from '@polkadot/api'; +import type { AccountId, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export declare class BlueprintRx extends Blueprint<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, codeHash: string | Hash); +} +export declare class CodeRx extends Code<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ); +} +export declare class ContractRx extends Contract<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, address: string | AccountId); +} diff --git a/.api-contract/build/rx/index.js b/.api-contract/build/rx/index.js new file mode 100644 index 00000000..3ff57ea8 --- /dev/null +++ b/.api-contract/build/rx/index.js @@ -0,0 +1,17 @@ +import { toRxMethod } from '@polkadot/api'; +import { Blueprint, Code, Contract } from '../base/index.js'; +export class BlueprintRx extends Blueprint { + constructor(api, abi, codeHash) { + super(api, abi, codeHash, toRxMethod); + } +} +export class CodeRx extends Code { + constructor(api, abi, wasm) { + super(api, abi, wasm, toRxMethod); + } +} +export class ContractRx extends Contract { + constructor(api, abi, address) { + super(api, abi, address, toRxMethod); + } +} diff --git a/.api-contract/build/rx/types.d.ts b/.api-contract/build/rx/types.d.ts new file mode 100644 index 00000000..7784ef2c --- /dev/null +++ b/.api-contract/build/rx/types.d.ts @@ -0,0 +1,6 @@ +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/build/rx/types.js b/.api-contract/build/rx/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build/rx/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build/types.d.ts b/.api-contract/build/types.d.ts new file mode 100644 index 00000000..b535e85a --- /dev/null +++ b/.api-contract/build/types.d.ts @@ -0,0 +1,85 @@ +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { Text } from '@polkadot/types'; +import type { + ContractExecResultResult, + ContractSelector, + StorageDeposit, + Weight, + WeightV2, +} from '@polkadot/types/interfaces'; +import type { Codec, TypeDef } from '@polkadot/types/types'; +import type { BN } from '@polkadot/util'; +import type { HexString } from '@polkadot/util/types'; +import type { Abi } from './index.js'; +export interface ContractBase { + readonly abi: Abi; + readonly api: ApiBase; + getMessage: (name: string) => AbiMessage; + messages: AbiMessage[]; +} +export interface AbiParam { + name: string; + type: TypeDef; +} +export type AbiMessageParam = AbiParam; +export interface AbiEventParam extends AbiParam { + indexed: boolean; +} +export interface AbiEvent { + args: AbiEventParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedEvent; + identifier: string; + index: number; + signatureTopic?: HexString | null; +} +export interface AbiMessage { + args: AbiMessageParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedMessage; + identifier: string; + index: number; + isConstructor?: boolean; + isDefault?: boolean; + isMutating?: boolean; + isPayable?: boolean; + method: string; + path: string[]; + returnType?: TypeDef | null; + selector: ContractSelector; + toU8a: (params: unknown[]) => Uint8Array; +} +export type AbiConstructor = AbiMessage; +export type InterfaceContractCalls = Record; +export interface ContractCallOutcome { + debugMessage: Text; + gasConsumed: Weight; + gasRequired: Weight; + output: Codec | null; + result: ContractExecResultResult; + storageDeposit: StorageDeposit; +} +export interface DecodedEvent { + args: Codec[]; + event: AbiEvent; +} +export interface DecodedMessage { + args: Codec[]; + message: AbiMessage; +} +export interface ContractOptions { + gasLimit?: bigint | string | number | BN | WeightV2; + storageDepositLimit?: bigint | string | number | BN | null; + value?: bigint | BN | string | number; +} +export interface BlueprintOptions extends ContractOptions { + salt?: Uint8Array | string | null; +} +export interface WeightAll { + v1Weight: BN; + v2Weight: { + refTime: BN; + proofSize?: BN | undefined; + }; +} diff --git a/.api-contract/build/types.js b/.api-contract/build/types.js new file mode 100644 index 00000000..cb0ff5c3 --- /dev/null +++ b/.api-contract/build/types.js @@ -0,0 +1 @@ +export {}; diff --git a/.api-contract/build/util.d.ts b/.api-contract/build/util.d.ts new file mode 100644 index 00000000..60682eff --- /dev/null +++ b/.api-contract/build/util.d.ts @@ -0,0 +1,9 @@ +import type { SubmittableResult } from '@polkadot/api'; +import type { EventRecord } from '@polkadot/types/interfaces'; +type ContractEvents = 'CodeStored' | 'ContractEmitted' | 'ContractExecution' | 'Instantiated'; +export declare function applyOnEvent( + result: SubmittableResult, + types: ContractEvents[], + fn: (records: EventRecord[]) => T, +): T | undefined; +export {}; diff --git a/.api-contract/build/util.js b/.api-contract/build/util.js new file mode 100644 index 00000000..0faa5cff --- /dev/null +++ b/.api-contract/build/util.js @@ -0,0 +1,9 @@ +export function applyOnEvent(result, types, fn) { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + if (records.length) { + return fn(records); + } + } + return undefined; +} diff --git a/.api-contract/package.json b/.api-contract/package.json new file mode 100644 index 00000000..f685482a --- /dev/null +++ b/.api-contract/package.json @@ -0,0 +1,39 @@ +{ + "author": "Jaco Greeff ", + "bugs": "https://github.com/polkadot-js/api/issues", + "description": "Interfaces for interacting with contracts and contract ABIs", + "engines": { + "node": ">=18" + }, + "homepage": "https://github.com/polkadot-js/api/tree/master/packages/api-contract#readme", + "license": "Apache-2.0", + "name": "@polkadot/api-contract", + "repository": { + "directory": "packages/api-contract", + "type": "git", + "url": "https://github.com/polkadot-js/api.git" + }, + "sideEffects": [ + "./packageDetect.js", + "./packageDetect.cjs" + ], + "type": "module", + "version": "15.8.1", + "main": "index.js", + "dependencies": { + "@polkadot/api": "15.8.1", + "@polkadot/api-augment": "15.8.1", + "@polkadot/types": "15.8.1", + "@polkadot/types-codec": "15.8.1", + "@polkadot/types-create": "15.8.1", + "@polkadot/util": "^13.4.3", + "@polkadot/util-crypto": "^13.4.3", + "rxjs": "^7.8.1", + "tslib": "^2.8.1" + }, + "devDependencies": { + "@polkadot/api-augment": "15.8.1", + "@polkadot/keyring": "^13.4.3", + "@polkadot/types-support": "15.8.1" + } +} diff --git a/.api-contract/src/Abi/Abi.spec.ts b/.api-contract/src/Abi/Abi.spec.ts new file mode 100644 index 00000000..1e58a3e7 --- /dev/null +++ b/.api-contract/src/Abi/Abi.spec.ts @@ -0,0 +1,224 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import type { Registry } from '@polkadot/types/types'; + +import fs from 'node:fs'; +import process from 'node:process'; + +import { TypeDefInfo } from '@polkadot/types/types'; +import rpcMetadata from '@polkadot/types-support/metadata/static-substrate-contracts-node'; +import { blake2AsHex } from '@polkadot/util-crypto'; + +import { Metadata, TypeRegistry } from '../../../types/src/bundle.js'; +import abis from '../test/contracts/index.js'; +import { Abi } from './index.js'; + +interface SpecDef { + messages: { + label: string; + name: string[] | string; + }[]; +} + +interface JSONAbi { + source: { + compiler: string; + hash: string; + language: string; + wasm: string; + }; + spec: SpecDef; + V1: { + spec: SpecDef; + }; + V2: { + spec: SpecDef; + }; + V3: { + spec: SpecDef; + }; + V4: { + spec: SpecDef; + }; +} + +function stringifyInfo(key: string, value: unknown): unknown { + return key === 'info' && typeof value === 'number' ? TypeDefInfo[value] : value; +} + +function stringifyJson(registry: Registry): string { + const defs = registry.lookup.types.map(({ id }) => registry.lookup.getTypeDef(id)); + + return JSON.stringify(defs, stringifyInfo, 2); +} + +describe('Abi', (): void => { + describe('ABI', (): void => { + Object.entries(abis).forEach(([abiName, _abi]) => { + const abi = _abi as unknown as JSONAbi; + + it(`initializes from a contract ABI (${abiName})`, (): void => { + try { + const messageIds = (abi.V4 || abi.V3 || abi.V2 || abi.V1 || abi).spec.messages.map( + ({ label, name }) => label || (Array.isArray(name) ? name.join('::') : name), + ); + const inkAbi = new Abi(abis[abiName]); + + expect(inkAbi.messages.map(({ identifier }) => identifier)).toEqual(messageIds); + } catch (error) { + console.error(error); + + throw error; + } + }); + }); + }); + + describe('TypeDef', (): void => { + for (const [abiName, abiJson] of Object.entries(abis)) { + it(`initializes from a contract ABI: ${abiName}`, (): void => { + const abi = new Abi(abiJson); + const registryJson = stringifyJson(abi.registry); + const cmpFile = new URL(`../test/compare/${abiName}.test.json`, import.meta.url); + + try { + expect(JSON.parse(registryJson)).toEqual(JSON.parse(fs.readFileSync(cmpFile, 'utf-8'))); + } catch (error) { + if (process.env['GITHUB_REPOSITORY']) { + console.error(registryJson); + + throw error; + } + + fs.writeFileSync(cmpFile, registryJson, { flag: 'w' }); + } + }); + } + }); + + it('has the correct hash for the source', (): void => { + const abi = new Abi(abis['ink_v0_flipperBundle']); + const bundle = abis['ink_v0_flipperBundle'] as unknown as JSONAbi; + + // manual + expect(bundle.source.hash).toEqual(blake2AsHex(bundle.source.wasm)); + + // the Codec hash + expect(bundle.source.hash).toEqual(abi.info.source.wasm.hash.toHex()); + + // the hash as per the actual Abi + expect(bundle.source.hash).toEqual(abi.info.source.wasmHash.toHex()); + }); + + describe('Events', (): void => { + const registry = new TypeRegistry(); + + beforeAll((): void => { + const metadata = new Metadata(registry, rpcMetadata); + + registry.setMetadata(metadata); + }); + + it('decoding <=ink!v4 event', (): void => { + const abiJson = abis['ink_v4_erc20Metadata']; + + expect(abiJson).toBeDefined(); + const abi = new Abi(abiJson); + + const eventRecordHex = + '0x0001000000080360951b8baf569bca905a279c12d6ce17db7cdce23a42563870ef585129ce5dc64d010001d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb106000000000000000c0045726332303a3a5472616e7366657200000000000000000000000000000000da2d695d3b5a304e0039e7fc4419c34fa0c1f239189c99bb72a6484f1634782b2b00c7d40fe6d84d660f3e6bed90f218e022a0909f7e1a7ea35ada8b6e003564'; + const record = registry.createType('EventRecord', eventRecordHex); + + const decodedEvent = abi.decodeEvent(record); + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman(), + }; + }, {}); + + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit', + }; + + expect(decodedEventHuman).toEqual(expectedEvent); + }); + + it('decoding >=ink!v5 event', (): void => { + const abiJson = abis['ink_v5_erc20Metadata']; + + expect(abiJson).toBeDefined(); + const abi = new Abi(abiJson); + + const eventRecordHex = + '0x00010000000803da17150e96b3955a4db6ad35ddeb495f722f9c1d84683113bfb096bf3faa30f2490101d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb106000000000000000cb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cbd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48'; + const record = registry.createType('EventRecord', eventRecordHex); + + const decodedEvent = abi.decodeEvent(record); + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman(), + }; + }, {}); + + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit', + }; + + expect(decodedEventHuman).toEqual(expectedEvent); + }); + + it('decoding >=ink!v5 anonymous event', (): void => { + const abiJson = abis['ink_v5_erc20AnonymousTransferMetadata']; + + expect(abiJson).toBeDefined(); + const abi = new Abi(abiJson); + + expect(abi.events[0].identifier).toEqual('erc20::erc20::Transfer'); + expect(abi.events[0].signatureTopic).toEqual(null); + + const eventRecordWithAnonymousEventHex = + '0x00010000000803538e726248a9c155911e7d99f4f474c3408630a2f6275dd501d4471c7067ad2c490101d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d018eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a4800505a4f7e9f4eb1060000000000000008d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d8eaf04151687736326c9fea17e25fc5287613693c912909cb226aa4794f26a48'; + const record = registry.createType('EventRecord', eventRecordWithAnonymousEventHex); + + const decodedEvent = abi.decodeEvent(record); + + expect(decodedEvent.event.args.length).toEqual(3); + expect(decodedEvent.args.length).toEqual(3); + expect(decodedEvent.event.identifier).toEqual('erc20::erc20::Transfer'); + + const decodedEventHuman = decodedEvent.event.args.reduce((prev, cur, index) => { + return { + ...prev, + [cur.name]: decodedEvent.args[index].toHuman(), + }; + }, {}); + + const expectedEvent = { + from: '5GrwvaEF5zXb26Fz9rcQpDWS57CtERHpNehXCPcNoHGKutQY', + to: '5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty', + value: '123.4567 MUnit', + }; + + expect(decodedEventHuman).toEqual(expectedEvent); + }); + }); +}); diff --git a/.api-contract/src/Abi/index.ts b/.api-contract/src/Abi/index.ts new file mode 100644 index 00000000..538875c4 --- /dev/null +++ b/.api-contract/src/Abi/index.ts @@ -0,0 +1,486 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Bytes, Vec } from '@polkadot/types'; +import type { + ChainProperties, + ContractConstructorSpecLatest, + ContractEventParamSpecLatest, + ContractMessageParamSpecLatest, + ContractMessageSpecLatest, + ContractMetadata, + ContractMetadataV4, + ContractMetadataV5, + ContractProjectInfo, + ContractTypeSpec, + EventRecord, +} from '@polkadot/types/interfaces'; +import type { Codec, Registry, TypeDef } from '@polkadot/types/types'; +import type { + AbiConstructor, + AbiEvent, + AbiEventParam, + AbiMessage, + AbiMessageParam, + AbiParam, + DecodedEvent, + DecodedMessage, +} from '../types.js'; + +import { Option, TypeRegistry } from '@polkadot/types'; +import { TypeDefInfo } from '@polkadot/types-create'; +import { + assertReturn, + compactAddLength, + compactStripLength, + isBn, + isNumber, + isObject, + isString, + isUndefined, + logger, + stringCamelCase, + stringify, + u8aConcat, + u8aToHex, +} from '@polkadot/util'; + +import { convertVersions, enumVersions } from './toLatestCompatible.js'; + +interface AbiJson { + version?: string; + + [key: string]: unknown; +} + +type EventOf = M extends { spec: { events: Vec } } ? E : never; +export type ContractMetadataSupported = ContractMetadataV4 | ContractMetadataV5; +type ContractEventSupported = EventOf; + +const l = logger('Abi'); + +const PRIMITIVE_ALWAYS = ['AccountId', 'AccountIndex', 'Address', 'Balance']; + +function findMessage(list: T[], messageOrId: T | string | number): T { + const message = isNumber(messageOrId) + ? list[messageOrId] + : isString(messageOrId) + ? list.find(({ identifier }) => + [identifier, stringCamelCase(identifier)].includes(messageOrId.toString()), + ) + : messageOrId; + + return assertReturn( + message, + () => `Attempted to call an invalid contract interface, ${stringify(messageOrId)}`, + ); +} + +function getMetadata(registry: Registry, json: AbiJson): ContractMetadataSupported { + // this is for V1, V2, V3 + const vx = enumVersions.find(v => isObject(json[v])); + + // this was added in V4 + const jsonVersion = json.version; + + if (!vx && jsonVersion && !enumVersions.find(v => v === `V${jsonVersion}`)) { + throw new Error(`Unable to handle version ${jsonVersion}`); + } + + const metadata = registry.createType( + 'ContractMetadata', + vx ? { [vx]: json[vx] } : jsonVersion ? { [`V${jsonVersion}`]: json } : { V0: json }, + ); + + const converter = convertVersions.find(([v]) => metadata[`is${v}`]); + + if (!converter) { + throw new Error(`Unable to convert ABI with version ${metadata.type} to a supported version`); + } + + const upgradedMetadata = converter[1](registry, metadata[`as${converter[0]}`]); + + return upgradedMetadata; +} + +function parseJson( + json: Record, + chainProperties?: ChainProperties, +): [Record, Registry, ContractMetadataSupported, ContractProjectInfo] { + const registry = new TypeRegistry(); + const info = registry.createType('ContractProjectInfo', json) as unknown as ContractProjectInfo; + const metadata = getMetadata(registry, json as unknown as AbiJson); + const lookup = registry.createType('PortableRegistry', { types: metadata.types }, true); + + // attach the lookup to the registry - now the types are known + registry.setLookup(lookup); + + if (chainProperties) { + registry.setChainProperties(chainProperties); + } + + // warm-up the actual type, pre-use + lookup.types.forEach(({ id }) => lookup.getTypeDef(id)); + + return [json, registry, metadata, info]; +} + +/** + * @internal + * Determines if the given input value is a ContractTypeSpec + */ +function isTypeSpec(value: Codec): value is ContractTypeSpec { + return ( + !!value && + value instanceof Map && + !isUndefined((value as ContractTypeSpec).type) && + !isUndefined((value as ContractTypeSpec).displayName) + ); +} + +/** + * @internal + * Determines if the given input value is an Option + */ +function isOption(value: Codec): value is Option { + return !!value && value instanceof Option; +} + +export class Abi { + readonly events: AbiEvent[]; + readonly constructors: AbiConstructor[]; + readonly info: ContractProjectInfo; + readonly json: Record; + readonly messages: AbiMessage[]; + readonly metadata: ContractMetadataSupported; + readonly registry: Registry; + readonly environment = new Map(); + + constructor(abiJson: Record | string, chainProperties?: ChainProperties) { + [this.json, this.registry, this.metadata, this.info] = parseJson( + isString(abiJson) ? (JSON.parse(abiJson) as Record) : abiJson, + chainProperties, + ); + this.constructors = this.metadata.spec.constructors.map( + (spec: ContractConstructorSpecLatest, index) => + this.#createMessage(spec, index, { + isConstructor: true, + isDefault: spec.default.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + this.events = this.metadata.spec.events.map((_: ContractEventSupported, index: number) => + this.#createEvent(index), + ); + this.messages = this.metadata.spec.messages.map( + (spec: ContractMessageSpecLatest, index): AbiMessage => + this.#createMessage(spec, index, { + isDefault: spec.default.isTrue, + isMutating: spec.mutates.isTrue, + isPayable: spec.payable.isTrue, + returnType: spec.returnType.isSome + ? this.registry.lookup.getTypeDef(spec.returnType.unwrap().type) + : null, + }), + ); + + // NOTE See the rationale for having Option<...> values in the actual + // ContractEnvironmentV4 structure definition in interfaces/contractsAbi + // (Due to conversions, the fields may not exist) + for (const [key, opt] of this.metadata.spec.environment.entries()) { + if (isOption(opt)) { + if (opt.isSome) { + const value = opt.unwrap(); + + if (isBn(value)) { + this.environment.set(key, value); + } else if (isTypeSpec(value)) { + this.environment.set(key, this.registry.lookup.getTypeDef(value.type)); + } else { + throw new Error( + `Invalid environment definition for ${key}:: Expected either Number or ContractTypeSpec`, + ); + } + } + } else { + throw new Error(`Expected Option<*> definition for ${key} in ContractEnvironment`); + } + } + } + + /** + * Warning: Unstable API, bound to change + */ + public decodeEvent(record: EventRecord): DecodedEvent { + switch (this.metadata.version.toString()) { + // earlier version are hoisted to v4 + case '4': + return this.#decodeEventV4(record); + // Latest + default: + return this.#decodeEventV5(record); + } + } + + #decodeEventV5 = (record: EventRecord): DecodedEvent => { + // Find event by first topic, which potentially is the signature_topic + const signatureTopic = record.topics[0]; + const data = record.event.data[1] as Bytes; + + if (signatureTopic) { + const event = this.events.find( + e => + e.signatureTopic !== undefined && + e.signatureTopic !== null && + e.signatureTopic === signatureTopic.toHex(), + ); + + // Early return if event found by signature topic + if (event) { + return event.fromU8a(data); + } + } + + // If no event returned yet, it might be anonymous + const amountOfTopics = record.topics.length; + const potentialEvents = this.events.filter(e => { + // event can't have a signature topic + if (e.signatureTopic !== null && e.signatureTopic !== undefined) { + return false; + } + + // event should have same amount of indexed fields as emitted topics + const amountIndexed = e.args.filter(a => a.indexed).length; + + if (amountIndexed !== amountOfTopics) { + return false; + } + + // If all conditions met, it's a potential event + return true; + }); + + if (potentialEvents.length === 1) { + return potentialEvents[0].fromU8a(data); + } + + throw new Error('Unable to determine event'); + }; + + #decodeEventV4 = (record: EventRecord): DecodedEvent => { + const data = record.event.data[1] as Bytes; + const index = data[0]; + const event = this.events[index]; + + if (!event) { + throw new Error(`Unable to find event with index ${index}`); + } + + return event.fromU8a(data.subarray(1)); + }; + + /** + * Warning: Unstable API, bound to change + */ + public decodeConstructor(data: Uint8Array): DecodedMessage { + return this.#decodeMessage('message', this.constructors, data); + } + + /** + * Warning: Unstable API, bound to change + */ + public decodeMessage(data: Uint8Array): DecodedMessage { + return this.#decodeMessage('message', this.messages, data); + } + + public findConstructor(constructorOrId: AbiConstructor | string | number): AbiConstructor { + return findMessage(this.constructors, constructorOrId); + } + + public findMessage(messageOrId: AbiMessage | string | number): AbiMessage { + return findMessage(this.messages, messageOrId); + } + + #createArgs = ( + args: ContractMessageParamSpecLatest[] | ContractEventParamSpecLatest[], + spec: unknown, + ): AbiParam[] => { + return args.map(({ label, type }, index): AbiParam => { + try { + if (!isObject(type)) { + throw new Error('Invalid type definition found'); + } + + const displayName = type.displayName.length + ? type.displayName[type.displayName.length - 1].toString() + : undefined; + const camelName = stringCamelCase(label); + + if (displayName && PRIMITIVE_ALWAYS.includes(displayName)) { + return { + name: camelName, + type: { + info: TypeDefInfo.Plain, + type: displayName, + }, + }; + } + + const typeDef = this.registry.lookup.getTypeDef(type.type); + + return { + name: camelName, + type: + displayName && !typeDef.type.startsWith(displayName) + ? { displayName, ...typeDef } + : typeDef, + }; + } catch (error) { + l.error(`Error expanding argument ${index} in ${stringify(spec)}`); + + throw error; + } + }); + }; + + #createMessageParams = ( + args: ContractMessageParamSpecLatest[], + spec: unknown, + ): AbiMessageParam[] => { + return this.#createArgs(args, spec); + }; + + #createEventParams = (args: ContractEventParamSpecLatest[], spec: unknown): AbiEventParam[] => { + const params = this.#createArgs(args, spec); + + return params.map( + (p, index): AbiEventParam => ({ ...p, indexed: args[index].indexed.toPrimitive() }), + ); + }; + + #createEvent = (index: number): AbiEvent => { + // TODO TypeScript would narrow this type to the correct version, + // but version is `Text` so I need to call `toString()` here, + // which breaks the type inference. + switch (this.metadata.version.toString()) { + case '4': + return this.#createEventV4((this.metadata as ContractMetadataV4).spec.events[index], index); + default: + return this.#createEventV5((this.metadata as ContractMetadataV5).spec.events[index], index); + } + }; + + #createEventV5 = (spec: EventOf, index: number): AbiEvent => { + const args = this.#createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event, + }), + identifier: [spec.module_path, spec.label].join('::'), + index, + signatureTopic: spec.signature_topic.isSome ? spec.signature_topic.unwrap().toHex() : null, + }; + + return event; + }; + + #createEventV4 = (spec: EventOf, index: number): AbiEvent => { + const args = this.#createEventParams(spec.args, spec); + const event = { + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: (data: Uint8Array): DecodedEvent => ({ + args: this.#decodeArgs(args, data), + event, + }), + identifier: spec.label.toString(), + index, + }; + + return event; + }; + + #createMessage = ( + spec: ContractMessageSpecLatest | ContractConstructorSpecLatest, + index: number, + add: Partial = {}, + ): AbiMessage => { + const args = this.#createMessageParams(spec.args, spec); + const identifier = spec.label.toString(); + const message = { + ...add, + args, + docs: spec.docs.map(d => d.toString()), + fromU8a: (data: Uint8Array): DecodedMessage => ({ + args: this.#decodeArgs(args, data), + message, + }), + identifier, + index, + isDefault: spec.default.isTrue, + method: stringCamelCase(identifier), + path: identifier.split('::').map(s => stringCamelCase(s)), + selector: spec.selector, + toU8a: (params: unknown[]) => this.#encodeMessageArgs(spec, args, params), + }; + + return message; + }; + + #decodeArgs = (args: AbiParam[], data: Uint8Array): Codec[] => { + // for decoding we expect the input to be just the arg data, no selectors + // no length added (this allows use with events as well) + let offset = 0; + + return args.map(({ type: { lookupName, type } }): Codec => { + const value = this.registry.createType(lookupName || type, data.subarray(offset)); + + offset += value.encodedLength; + + return value; + }); + }; + + #decodeMessage = ( + type: 'constructor' | 'message', + list: AbiMessage[], + data: Uint8Array, + ): DecodedMessage => { + const [, trimmed] = compactStripLength(data); + const selector = trimmed.subarray(0, 4); + const message = list.find(m => m.selector.eq(selector)); + + if (!message) { + throw new Error(`Unable to find ${type} with selector ${u8aToHex(selector)}`); + } + + return message.fromU8a(trimmed.subarray(4)); + }; + + #encodeMessageArgs = ( + { label, selector }: ContractMessageSpecLatest | ContractConstructorSpecLatest, + args: AbiMessageParam[], + data: unknown[], + ): Uint8Array => { + if (data.length !== args.length) { + throw new Error( + `Expected ${args.length} arguments to contract message '${label.toString()}', found ${data.length}`, + ); + } + + return compactAddLength( + u8aConcat( + this.registry.createType('ContractSelector', selector).toU8a(), + ...args.map(({ type: { lookupName, type } }, index) => + this.registry.createType(lookupName || type, data[index]).toU8a(), + ), + ), + ); + }; +} diff --git a/.api-contract/src/Abi/toLatestCompatible.spec.ts b/.api-contract/src/Abi/toLatestCompatible.spec.ts new file mode 100644 index 00000000..aab966fc --- /dev/null +++ b/.api-contract/src/Abi/toLatestCompatible.spec.ts @@ -0,0 +1,210 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import { TypeRegistry } from '@polkadot/types'; + +import abis from '../test/contracts/index.js'; +import { + v0ToLatestCompatible, + v1ToLatestCompatible, + v2ToLatestCompatible, + v3ToLatestCompatible, + v4ToLatestCompatible, + v5ToLatestCompatible, +} from './toLatestCompatible.js'; + +describe('v0ToLatestCompatible', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V0: abis['ink_v0_erc20'] }); + const latest = v0ToLatestCompatible(registry, contract.asV0); + + it('has the correct constructors', (): void => { + expect(latest.spec.constructors.map(({ label }) => label.toString())).toEqual(['new']); + }); + + it('has the correct messages', (): void => { + expect(latest.spec.messages.map(({ label }) => label.toString())).toEqual([ + 'total_supply', + 'balance_of', + 'allowance', + 'transfer', + 'approve', + 'transfer_from', + ]); + }); + + it('has the correct events', (): void => { + expect(latest.spec.events.map(({ label }) => label.toString())).toEqual([ + 'Transfer', + 'Approval', + ]); + }); + + it('has the correct constructor arguments', (): void => { + expect(latest.spec.constructors[0].args.map(({ label }) => label.toString())).toEqual([ + 'initial_supply', + ]); + }); + + it('has the correct message arguments', (): void => { + expect(latest.spec.messages[1].args.map(({ label }) => label.toString())).toEqual(['owner']); + }); + + it('has the correct event arguments', (): void => { + expect(latest.spec.events[0].args.map(({ label }) => label.toString())).toEqual([ + 'from', + 'to', + 'value', + ]); + }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); +}); + +describe('v1ToLatestCompatible', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V1: abis['ink_v1_flipper']['V1'] }); + const latest = v1ToLatestCompatible(registry, contract.asV1); + + it('has the correct constructors', (): void => { + expect(latest.spec.constructors.map(({ label }) => label.toString())).toEqual([ + 'new', + 'default', + ]); + }); + + it('has the correct messages', (): void => { + expect(latest.spec.messages.map(({ label }) => label.toString())).toEqual(['flip', 'get']); + }); + + it('has the correct messages with namespaced method name', (): void => { + const contract = registry.createType('ContractMetadata', { V1: abis['ink_v1_psp22']['V1'] }); + const latest = v1ToLatestCompatible(registry, contract.asV1); + + expect(latest.spec.messages.map(({ label }) => label.toString())).toEqual([ + 'PSP22Metadata::token_name', + 'PSP22Metadata::token_symbol', + 'PSP22Metadata::token_decimals', + 'PSP22Mintable::mint', + 'PSP22::decrease_allowance', + 'PSP22::transfer', + 'PSP22::approve', + 'PSP22::allowance', + 'PSP22::transfer_from', + 'PSP22::balance_of', + 'PSP22::increase_allowance', + 'PSP22::total_supply', + 'pause', + 'unpause', + ]); + }); + + it('has the correct constructor arguments', (): void => { + expect(latest.spec.constructors[0].args.map(({ label }) => label.toString())).toEqual([ + 'init_value', + ]); + }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); +}); + +describe('v2ToLatestCompatible', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V2: abis['ink_v2_flipper']['V2'] }); + const latest = v2ToLatestCompatible(registry, contract.asV2); + + it('has the correct constructor flag', (): void => { + expect(latest.spec.constructors[0].payable.isTrue).toEqual(true); + }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); +}); + +describe('v3ToLatestCompatible', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V3: abis['ink_v3_flipper']['V3'] }); + const latest = v3ToLatestCompatible(registry, contract.asV3); + + it('has the correct constructor flags', (): void => { + expect(latest.spec.constructors[0].payable.isTrue).toEqual(false); + expect(latest.spec.constructors[1].payable.isTrue).toEqual(true); + }); + + it('has the correct messages', (): void => { + const contract = registry.createType('ContractMetadata', { + V3: abis['ink_v3_traitErc20']['V3'], + }); + const latest = v3ToLatestCompatible(registry, contract.asV3); + + expect(latest.spec.messages.map(({ label }) => label.toString())).toEqual([ + 'BaseErc20::total_supply', + 'BaseErc20::balance_of', + 'BaseErc20::allowance', + 'BaseErc20::transfer', + 'BaseErc20::approve', + 'BaseErc20::transfer_from', + ]); + }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); +}); + +describe('v4ToLatestCompatible', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V4: abis['ink_v4_flipperContract'] }); + const latest = v4ToLatestCompatible(registry, contract.asV4); + + it('has the correct constructor flags', (): void => { + expect(latest.spec.constructors[0].payable.isTrue).toEqual(false); + expect(latest.spec.constructors[1].payable.isTrue).toEqual(false); + }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('4'); + }); +}); + +describe('v5ToLatestCompatible', (): void => { + const registry = new TypeRegistry(); + const contract = registry.createType('ContractMetadata', { V5: abis['ink_v5_erc20Metadata'] }); + const latest = v5ToLatestCompatible(registry, contract.asV5); + + it('has the correct messages', (): void => { + expect(latest.spec.messages.map(({ label }) => label.toString())).toEqual([ + 'total_supply', + 'balance_of', + 'allowance', + 'transfer', + 'approve', + 'transfer_from', + ]); + }); + + it('has new event fields', (): void => { + expect(latest.spec.events.length).toEqual(2); + + expect(latest.spec.events.every(e => e.has('module_path'))).toEqual(true); + + expect(latest.spec.events[0].module_path.toString()).toEqual('erc20::erc20'); + + expect(latest.spec.events.every(e => e.has('signature_topic'))).toEqual(true); + + expect(latest.spec.events[0].signature_topic.toHex()).toEqual( + '0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb', + ); + }); + + it('has the latest compatible version number', (): void => { + expect(latest.version.toString()).toEqual('5'); + }); +}); diff --git a/.api-contract/src/Abi/toLatestCompatible.ts b/.api-contract/src/Abi/toLatestCompatible.ts new file mode 100644 index 00000000..181fc96a --- /dev/null +++ b/.api-contract/src/Abi/toLatestCompatible.ts @@ -0,0 +1,56 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ContractMetadataV4, ContractMetadataV5 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; +import type { ContractMetadataSupported } from './index.js'; + +import { v0ToV1 } from './toV1.js'; +import { v1ToV2 } from './toV2.js'; +import { v2ToV3 } from './toV3.js'; +import { v3ToV4 } from './toV4.js'; + +// The versions where an enum is used, aka V0 is missing +// (Order from newest, i.e. we expect more on newest vs oldest) +export const enumVersions = ['V5', 'V4', 'V3', 'V2', 'V1'] as const; + +type Versions = (typeof enumVersions)[number] | 'V0'; + +type Converter = (registry: Registry, vx: any) => ContractMetadataSupported; + +// Helper to convert metadata from one step to the next +function createConverter( + next: (registry: Registry, input: O) => ContractMetadataSupported, + step: (registry: Registry, input: I) => O, +): (registry: Registry, input: I) => ContractMetadataSupported { + return (registry: Registry, input: I): ContractMetadataSupported => + next(registry, step(registry, input)); +} + +export function v5ToLatestCompatible( + _registry: Registry, + v5: ContractMetadataV5, +): ContractMetadataV5 { + return v5; +} + +export function v4ToLatestCompatible( + _registry: Registry, + v4: ContractMetadataV4, +): ContractMetadataV4 { + return v4; +} + +export const v3ToLatestCompatible = /*#__PURE__*/ createConverter(v4ToLatestCompatible, v3ToV4); +export const v2ToLatestCompatible = /*#__PURE__*/ createConverter(v3ToLatestCompatible, v2ToV3); +export const v1ToLatestCompatible = /*#__PURE__*/ createConverter(v2ToLatestCompatible, v1ToV2); +export const v0ToLatestCompatible = /*#__PURE__*/ createConverter(v1ToLatestCompatible, v0ToV1); + +export const convertVersions: [Versions, Converter][] = [ + ['V5', v5ToLatestCompatible], + ['V4', v4ToLatestCompatible], + ['V3', v3ToLatestCompatible], + ['V2', v2ToLatestCompatible], + ['V1', v1ToLatestCompatible], + ['V0', v0ToLatestCompatible], +]; diff --git a/.api-contract/src/Abi/toV1.ts b/.api-contract/src/Abi/toV1.ts new file mode 100644 index 00000000..5d0663be --- /dev/null +++ b/.api-contract/src/Abi/toV1.ts @@ -0,0 +1,37 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ContractMetadataV0, ContractMetadataV1 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +import { convertSiV0toV1 } from '@polkadot/types'; +import { objectSpread } from '@polkadot/util'; + +interface Named { + name: unknown; +} + +function v0ToV1Names(all: Named[]): unknown[] { + return all.map(e => + objectSpread({}, e, { + name: Array.isArray(e.name) ? e.name : [e.name], + }), + ); +} + +export function v0ToV1(registry: Registry, v0: ContractMetadataV0): ContractMetadataV1 { + if (!v0.metadataVersion.length) { + throw new Error('Invalid format for V0 (detected) contract metadata'); + } + + return registry.createType( + 'ContractMetadataV1', + objectSpread({}, v0, { + spec: objectSpread({}, v0.spec, { + constructors: v0ToV1Names(v0.spec.constructors), + messages: v0ToV1Names(v0.spec.messages), + }), + types: convertSiV0toV1(registry, v0.types), + }), + ); +} diff --git a/.api-contract/src/Abi/toV2.ts b/.api-contract/src/Abi/toV2.ts new file mode 100644 index 00000000..9619a1c0 --- /dev/null +++ b/.api-contract/src/Abi/toV2.ts @@ -0,0 +1,70 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Text } from '@polkadot/types'; +import type { + ContractConstructorSpecV0, + ContractEventSpecV0, + ContractMessageSpecV0, + ContractMetadataV1, + ContractMetadataV2, +} from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +import { objectSpread } from '@polkadot/util'; + +type WithArgs = keyof typeof ARG_TYPES; + +interface NamedEntry { + name: Text | Text[]; +} + +type GetArgsType = T extends 'ContractConstructorSpec' + ? ContractConstructorSpecV0 + : T extends ContractEventSpecV0 + ? ContractEventSpecV0 + : ContractMessageSpecV0; + +interface ArgsEntry extends NamedEntry { + args: GetArgsType['args'][0][]; +} + +const ARG_TYPES = { + ContractConstructorSpec: 'ContractMessageParamSpecV2', + ContractEventSpec: 'ContractEventParamSpecV2', + ContractMessageSpec: 'ContractMessageParamSpecV2', +} as const; + +function v1ToV2Label(entry: NamedEntry): { label: Text } { + return objectSpread({}, entry, { + label: Array.isArray(entry.name) ? entry.name.join('::') : entry.name, + }); +} + +function v1ToV2Labels( + registry: Registry, + outType: T, + all: ArgsEntry[], +): unknown[] { + return all.map(e => + registry.createType( + `${outType}V2`, + objectSpread(v1ToV2Label(e), { + args: e.args.map(a => registry.createType(ARG_TYPES[outType], v1ToV2Label(a))), + }), + ), + ); +} + +export function v1ToV2(registry: Registry, v1: ContractMetadataV1): ContractMetadataV2 { + return registry.createType( + 'ContractMetadataV2', + objectSpread({}, v1, { + spec: objectSpread({}, v1.spec, { + constructors: v1ToV2Labels(registry, 'ContractConstructorSpec', v1.spec.constructors), + events: v1ToV2Labels(registry, 'ContractEventSpec', v1.spec.events), + messages: v1ToV2Labels(registry, 'ContractMessageSpec', v1.spec.messages), + }), + }), + ); +} diff --git a/.api-contract/src/Abi/toV3.ts b/.api-contract/src/Abi/toV3.ts new file mode 100644 index 00000000..fccd5a2b --- /dev/null +++ b/.api-contract/src/Abi/toV3.ts @@ -0,0 +1,21 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ContractMetadataV2, ContractMetadataV3 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +import { objectSpread } from '@polkadot/util'; + +export function v2ToV3(registry: Registry, v2: ContractMetadataV2): ContractMetadataV3 { + return registry.createType( + 'ContractMetadataV3', + objectSpread({}, v2, { + spec: objectSpread({}, v2.spec, { + constructors: v2.spec.constructors.map(c => + // V3 introduces the payable flag on constructors, for + registry.createType('ContractConstructorSpecV4', objectSpread({}, c)), + ), + messages: v3.spec.messages.map(m => + registry.createType('ContractMessageSpecV3', objectSpread({}, m)), + ), + }), + version: registry.createType('Text', '4'), + }), + ); +} diff --git a/.api-contract/src/augment.ts b/.api-contract/src/augment.ts new file mode 100644 index 00000000..56f6e04c --- /dev/null +++ b/.api-contract/src/augment.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import '@polkadot/api-augment'; diff --git a/.api-contract/src/base/Base.ts b/.api-contract/src/base/Base.ts new file mode 100644 index 00000000..68b17772 --- /dev/null +++ b/.api-contract/src/base/Base.ts @@ -0,0 +1,52 @@ +// Copyright 2017-2025 @polkadot/api authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { WeightV2 } from '@polkadot/types/interfaces'; +import type { Registry } from '@polkadot/types/types'; + +import { isFunction } from '@polkadot/util'; + +import { Abi } from '../Abi/index.js'; + +export abstract class Base { + readonly abi: Abi; + readonly api: ApiBase; + + protected readonly _decorateMethod: DecorateMethod; + protected readonly _isWeightV1: boolean; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + decorateMethod: DecorateMethod, + ) { + if (!api || !api.isConnected || !api.tx) { + throw new Error( + 'Your API has not been initialized correctly and is not connected to a chain', + ); + } else if ( + !api.tx.revive || + !isFunction(api.tx.revive.instantiateWithCode) || + api.tx.revive.instantiateWithCode.meta.args.length !== 6 + ) { + throw new Error( + 'The runtime does not expose api.tx.revive.instantiateWithCode with storageDepositLimit', + ); + } else if (!api.call.reviveApi || !isFunction(api.call.reviveApi.call)) { + throw new Error( + 'Your runtime does not expose the api.call.reviveApi.call runtime interfaces', + ); + } + + this.abi = abi instanceof Abi ? abi : new Abi(abi, api.registry.getChainProperties()); + this.api = api; + this._decorateMethod = decorateMethod; + this._isWeightV1 = !api.registry.createType('Weight').proofSize; + } + + public get registry(): Registry { + return this.api.registry; + } +} diff --git a/.api-contract/src/base/Blueprint.ts b/.api-contract/src/base/Blueprint.ts new file mode 100644 index 00000000..37011c12 --- /dev/null +++ b/.api-contract/src/base/Blueprint.ts @@ -0,0 +1,117 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiBase } from '@polkadot/api/base'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { Hash } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { AbiConstructor, BlueprintOptions } from '../types.js'; +import type { MapConstructorExec } from './types.js'; + +import { SubmittableResult } from '@polkadot/api'; +import { BN_ZERO, isUndefined } from '@polkadot/util'; + +// import { applyOnEvent } from '../util.js'; +import { Base } from './Base.js'; +import { Contract } from './Contract.js'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.js'; + +export type BlueprintConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, +) => Blueprint; + +export class BlueprintSubmittableResult extends SubmittableResult { + readonly contract?: Contract | undefined; + + constructor(result: ISubmittableResult, contract?: Contract) { + super(result); + + this.contract = contract; + } +} + +export class Blueprint extends Base { + /** + * @description The on-chain code hash for this blueprint + */ + readonly codeHash: Hash; + + readonly #tx: MapConstructorExec = {}; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + decorateMethod: DecorateMethod, + ) { + super(api, abi, decorateMethod); + + this.codeHash = this.registry.createType('Hash', codeHash); + + this.abi.constructors.forEach((c): void => { + if (isUndefined(this.#tx[c.method])) { + this.#tx[c.method] = createBluePrintTx(c, (o, p) => this.#deploy(c, o, p)); + } + }); + } + + public get tx(): MapConstructorExec { + return this.#tx; + } + + #deploy = ( + constructorOrId: AbiConstructor | string | number, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }: BlueprintOptions, + params: unknown[], + ): SubmittableExtrinsic> => { + return this.api.tx.revive + .instantiate( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.codeHash, + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + (result: ISubmittableResult) => + new BlueprintSubmittableResult( + result, + (() => { + if (result.status.isInBlock || result.status.isFinalized) { + return new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ); + } + return undefined; + })(), + ), + ); + }; +} + +export function extendBlueprint( + type: ApiType, + decorateMethod: DecorateMethod, +): BlueprintConstructor { + return class extends Blueprint { + static __BlueprintType = type; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + codeHash: string | Hash | Uint8Array, + ) { + super(api, abi, codeHash, decorateMethod); + } + }; +} diff --git a/.api-contract/src/base/Code.spec.ts b/.api-contract/src/base/Code.spec.ts new file mode 100644 index 00000000..0fd4cc99 --- /dev/null +++ b/.api-contract/src/base/Code.spec.ts @@ -0,0 +1,40 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +/// + +import fs from 'node:fs'; + +import { toPromiseMethod } from '@polkadot/api'; + +import v0contractFlipper from '../test/contracts/ink/v0/flipper.contract.json' assert { type: 'json' }; +import v0abiFlipper from '../test/contracts/ink/v0/flipper.json' assert { type: 'json' }; +import v1contractFlipper from '../test/contracts/ink/v1/flipper.contract.json' assert { type: 'json' }; +import { Code } from './Code.js'; +import { mockApi } from './mock.js'; + +const v0wasmFlipper = fs.readFileSync( + new URL('../test/contracts/ink/v0/flipper.wasm', import.meta.url), + 'utf-8', +); + +describe('Code', (): void => { + it('can construct with an individual ABI/WASM combo', (): void => { + expect( + () => + new Code(mockApi, v0abiFlipper as Record, v0wasmFlipper, toPromiseMethod), + ).not.toThrow(); + }); + + it('can construct with an .contract ABI (v0)', (): void => { + expect( + () => new Code(mockApi, v0contractFlipper as Record, null, toPromiseMethod), + ).not.toThrow(); + }); + + it('can construct with an .contract ABI (v1)', (): void => { + expect( + () => new Code(mockApi, v1contractFlipper as Record, null, toPromiseMethod), + ).not.toThrow(); + }); +}); diff --git a/.api-contract/src/base/Code.ts b/.api-contract/src/base/Code.ts new file mode 100644 index 00000000..db19fff4 --- /dev/null +++ b/.api-contract/src/base/Code.ts @@ -0,0 +1,147 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiBase } from '@polkadot/api/base'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +// import type { AccountId, EventRecord } from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +// @ts-ignore +import type { Codec } from '@polkadot/types-codec/types'; +import type { Abi } from '../Abi/index.js'; +import type { AbiConstructor, BlueprintOptions } from '../types.js'; +import type { MapConstructorExec } from './types.js'; + +import { SubmittableResult } from '@polkadot/api'; +import { BN_ZERO, compactAddLength, isRiscV, isUndefined, isWasm, u8aToU8a } from '@polkadot/util'; + +// import { applyOnEvent } from '../util.js'; +import { Base } from './Base.js'; +import { Blueprint } from './Blueprint.js'; +import { Contract } from './Contract.js'; +import { convertWeight, createBluePrintTx, encodeSalt } from './util.js'; + +export type CodeConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, +) => Code; + +export class CodeSubmittableResult extends SubmittableResult { + readonly blueprint?: Blueprint | undefined; + readonly contract?: Contract | undefined; + + constructor( + result: ISubmittableResult, + blueprint?: Blueprint | undefined, + contract?: Contract | undefined, + ) { + super(result); + + this.blueprint = blueprint; + this.contract = contract; + } +} + +// checks to see if the code (or at least the header) +// is a valid/supported format +function isValidCode(code: Uint8Array): boolean { + return isWasm(code) || isRiscV(code); +} + +export class Code extends Base { + readonly code: Uint8Array; + + readonly #tx: MapConstructorExec = {}; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + decorateMethod: DecorateMethod, + ) { + super(api, abi, decorateMethod); + + this.code = isValidCode(this.abi.info.source.wasm) ? this.abi.info.source.wasm : u8aToU8a(wasm); + + if (!isValidCode(this.code)) { + throw new Error('Invalid code provided'); + } + + this.abi.constructors.forEach((c): void => { + if (isUndefined(this.#tx[c.method])) { + this.#tx[c.method] = createBluePrintTx(c, (o, p) => this.#instantiate(c, o, p)); + } + }); + } + + public get tx(): MapConstructorExec { + return this.#tx; + } + + #instantiate = ( + constructorOrId: AbiConstructor | string | number, + { gasLimit = BN_ZERO, salt, storageDepositLimit = null, value = BN_ZERO }: BlueprintOptions, + params: unknown[], + ): SubmittableExtrinsic> => { + console.log('in instantiate'); + console.log(this.abi.info.source.wasmHash); + return this.api.tx.revive + .instantiateWithCode( + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + compactAddLength(this.code), + this.abi.findConstructor(constructorOrId).toU8a(params), + encodeSalt(salt), + ) + .withResultTransform( + (result: ISubmittableResult) => + new CodeSubmittableResult( + result, + new Blueprint( + this.api, + this.abi, + this.abi.info.source.wasmHash, + this._decorateMethod, + ), + new Contract( + this.api, + this.abi, + '0x075e2a9cfb213a68dfa1f5cf6bf6d515ae212cf8', + this._decorateMethod, + ), + ), + ); + }; +} + +// new CodeSubmittableResult(result, ...(applyOnEvent(result, ['CodeStored', 'Instantiated'], (records: EventRecord[]) => +// records.reduce<[Blueprint | undefined, Contract | undefined]>(([blueprint, contract], { event }) => +// this.api.events.contracts.Instantiated.is(event) +// ? [blueprint, new Contract(this.api, this.abi, (event as unknown as { data: [Codec, AccountId] }).data[1], this._decorateMethod)] +// : this.api.events.contracts.CodeStored.is(event) +// ? [new Blueprint(this.api, this.abi, (event as unknown as { data: [AccountId] }).data[0], this._decorateMethod), contract] +// : [blueprint, contract], +// [undefined, undefined]) +// ) || [undefined, undefined])) +// ); + +export function extendCode( + type: ApiType, + decorateMethod: DecorateMethod, +): CodeConstructor { + return class extends Code { + static __CodeType = type; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ) { + super(api, abi, wasm, decorateMethod); + } + }; +} diff --git a/.api-contract/src/base/Contract.ts b/.api-contract/src/base/Contract.ts new file mode 100644 index 00000000..f59ae5b7 --- /dev/null +++ b/.api-contract/src/base/Contract.ts @@ -0,0 +1,261 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiBase } from '@polkadot/api/base'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, DecorateMethod } from '@polkadot/api/types'; +import type { + AccountId, + AccountId20, + ContractExecResult, + EventRecord, + Weight, + WeightV2, +} from '@polkadot/types/interfaces'; +import type { ISubmittableResult } from '@polkadot/types/types'; +import type { Abi } from '../Abi/index.js'; +import type { + AbiMessage, + ContractCallOutcome, + ContractOptions, + DecodedEvent, + WeightAll, +} from '../types.js'; +import type { + ContractCallResult, + ContractCallSend, + ContractQuery, + ContractTx, + MapMessageQuery, + MapMessageTx, +} from './types.js'; + +import { map } from 'rxjs'; + +import { SubmittableResult } from '@polkadot/api'; +import { BN, BN_HUNDRED, BN_ONE, BN_ZERO, isUndefined, logger } from '@polkadot/util'; + +import { applyOnEvent } from '../util.js'; +import { Base } from './Base.js'; +import { convertWeight, withMeta } from './util.js'; + +export type ContractConstructor = new ( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, +) => Contract; + +// As per Rust, 5 * GAS_PER_SEC +const MAX_CALL_GAS = new BN(5_000_000_000_000).isub(BN_ONE); + +const l = logger('Contract'); + +function createQuery( + meta: AbiMessage, + fn: ( + origin: string | AccountId | Uint8Array, + options: ContractOptions, + params: unknown[], + ) => ContractCallResult, +): ContractQuery { + return withMeta( + meta, + ( + origin: string | AccountId | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult => fn(origin, options, params), + ); +} + +function createTx( + meta: AbiMessage, + fn: (options: ContractOptions, params: unknown[]) => SubmittableExtrinsic, +): ContractTx { + return withMeta( + meta, + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic => + fn(options, params), + ); +} + +export class ContractSubmittableResult extends SubmittableResult { + readonly contractEvents?: DecodedEvent[] | undefined; + + constructor(result: ISubmittableResult, contractEvents?: DecodedEvent[]) { + super(result); + + this.contractEvents = contractEvents; + } +} + +export class Contract extends Base { + /** + * @description The on-chain address for this contract + */ + readonly address: AccountId20; + + readonly #query: MapMessageQuery = {}; + readonly #tx: MapMessageTx = {}; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId20, + decorateMethod: DecorateMethod, + ) { + super(api, abi, decorateMethod); + + this.address = this.registry.createType('AccountId20', address); + + this.abi.messages.forEach((m): void => { + if (isUndefined(this.#tx[m.method])) { + this.#tx[m.method] = createTx(m, (o, p) => this.#exec(m, o, p)); + } + + if (isUndefined(this.#query[m.method])) { + this.#query[m.method] = createQuery(m, (f, o, p) => this.#read(m, o, p).send(f)); + } + }); + } + + public get query(): MapMessageQuery { + return this.#query; + } + + public get tx(): MapMessageTx { + return this.#tx; + } + + #getGas = (_gasLimit: bigint | BN | string | number | WeightV2, isCall = false): WeightAll => { + const weight = convertWeight(_gasLimit); + + if (weight.v1Weight.gt(BN_ZERO)) { + return weight; + } + + return convertWeight( + isCall + ? MAX_CALL_GAS + : convertWeight( + this.api.consts.system.blockWeights + ? (this.api.consts.system.blockWeights as unknown as { maxBlock: WeightV2 }).maxBlock + : (this.api.consts.system['maximumBlockWeight'] as Weight), + ) + .v1Weight.muln(64) + .div(BN_HUNDRED), + ); + }; + + #exec = ( + messageOrId: AbiMessage | string | number, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }: ContractOptions, + params: unknown[], + ): SubmittableExtrinsic => { + return this.api.tx.revive + .call( + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 ? convertWeight(gasLimit).v1Weight : convertWeight(gasLimit).v2Weight, + storageDepositLimit, + this.abi.findMessage(messageOrId).toU8a(params), + ) + .withResultTransform( + (result: ISubmittableResult) => + // ContractEmitted is the current generation, ContractExecution is the previous generation + new ContractSubmittableResult( + result, + applyOnEvent( + result, + ['ContractEmitted', 'ContractExecution'], + (records: EventRecord[]) => + records + .map((record): DecodedEvent | null => { + try { + return this.abi.decodeEvent(record); + } catch (error) { + l.error(`Unable to decode contract event: ${(error as Error).message}`); + + return null; + } + }) + .filter((decoded): decoded is DecodedEvent => !!decoded), + ), + ), + ); + }; + + #read = ( + messageOrId: AbiMessage | string | number, + { gasLimit = BN_ZERO, storageDepositLimit = null, value = BN_ZERO }: ContractOptions, + params: unknown[], + ): ContractCallSend => { + const message = this.abi.findMessage(messageOrId); + + return { + // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment + send: this._decorateMethod((origin: string | AccountId | Uint8Array) => + this.api.rx.call.contractsApi + .call( + origin, + this.address, + value, + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore jiggle v1 weights, metadata points to latest + this._isWeightV1 + ? this.#getGas(gasLimit, true).v1Weight + : this.#getGas(gasLimit, true).v2Weight, + storageDepositLimit, + message.toU8a(params), + ) + .pipe( + map( + ({ + debugMessage, + gasConsumed, + gasRequired, + result, + storageDeposit, + }): ContractCallOutcome => ({ + debugMessage, + gasConsumed, + gasRequired: + gasRequired && !convertWeight(gasRequired).v1Weight.isZero() + ? gasRequired + : gasConsumed, + output: + result.isOk && message.returnType + ? this.abi.registry.createTypeUnsafe( + message.returnType.lookupName || message.returnType.type, + [result.asOk.data.toU8a(true)], + { isPedantic: true }, + ) + : null, + result, + storageDeposit, + }), + ), + ), + ), + }; + }; +} + +export function extendContract( + type: ApiType, + decorateMethod: DecorateMethod, +): ContractConstructor { + return class extends Contract { + static __ContractType = type; + + constructor( + api: ApiBase, + abi: string | Record | Abi, + address: string | AccountId, + ) { + super(api, abi, address, decorateMethod); + } + }; +} diff --git a/.api-contract/src/base/index.ts b/.api-contract/src/base/index.ts new file mode 100644 index 00000000..e85848a3 --- /dev/null +++ b/.api-contract/src/base/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/api authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { Blueprint, BlueprintSubmittableResult, extendBlueprint } from './Blueprint.js'; +export { Code, CodeSubmittableResult, extendCode } from './Code.js'; +export { Contract, extendContract } from './Contract.js'; diff --git a/.api-contract/src/base/mock.ts b/.api-contract/src/base/mock.ts new file mode 100644 index 00000000..bb997998 --- /dev/null +++ b/.api-contract/src/base/mock.ts @@ -0,0 +1,31 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiBase } from '@polkadot/api/base'; + +import { TypeRegistry } from '@polkadot/types'; + +const registry = new TypeRegistry(); + +const instantiateWithCode = (): never => { + throw new Error('mock'); +}; + +instantiateWithCode.meta = { args: new Array(6) }; + +export const mockApi = { + call: { + contractsApi: { + call: (): never => { + throw new Error('mock'); + }, + }, + }, + isConnected: true, + registry, + tx: { + contracts: { + instantiateWithCode, + }, + }, +} as unknown as ApiBase<'promise'>; diff --git a/.api-contract/src/base/types.ts b/.api-contract/src/base/types.ts new file mode 100644 index 00000000..6f9cbc9d --- /dev/null +++ b/.api-contract/src/base/types.ts @@ -0,0 +1,53 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { Observable } from 'rxjs'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes, ObsInnerType } from '@polkadot/api/types'; +import type { AccountId } from '@polkadot/types/interfaces'; +import type { + AbiMessage, + BlueprintOptions, + ContractCallOutcome, + ContractOptions, +} from '../types.js'; + +export interface MessageMeta { + readonly meta: AbiMessage; +} + +export interface BlueprintDeploy extends MessageMeta { + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic; +} + +export interface ContractQuery extends MessageMeta { + ( + origin: AccountId | string | Uint8Array, + options: ContractOptions, + ...params: unknown[] + ): ContractCallResult; +} + +export interface ContractTx extends MessageMeta { + (options: ContractOptions, ...params: unknown[]): SubmittableExtrinsic; +} + +export type ContractGeneric = ( + messageOrId: AbiMessage | string | number, + options: O, + ...params: unknown[] +) => T; + +export type ContractCallResult = ApiType extends 'rxjs' + ? Observable + : Promise>>; + +export interface ContractCallSend { + send(account: string | AccountId | Uint8Array): ContractCallResult; +} + +export type MapConstructorExec = Record>; + +export type MapMessageTx = Record>; + +export type MapMessageQuery = Record>; diff --git a/.api-contract/src/base/util.ts b/.api-contract/src/base/util.ts new file mode 100644 index 00000000..33c28016 --- /dev/null +++ b/.api-contract/src/base/util.ts @@ -0,0 +1,77 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { SubmittableResult } from '@polkadot/api'; +import type { SubmittableExtrinsic } from '@polkadot/api/submittable/types'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { WeightV1, WeightV2 } from '@polkadot/types/interfaces'; +import type { BN } from '@polkadot/util'; +import type { AbiConstructor, AbiMessage, BlueprintOptions, WeightAll } from '../types.js'; +import type { BlueprintDeploy, ContractGeneric } from './types.js'; + +import { Bytes } from '@polkadot/types'; +import { bnToBn, compactAddLength, u8aToU8a } from '@polkadot/util'; +import { randomAsU8a } from '@polkadot/util-crypto'; + +export const EMPTY_SALT = new Uint8Array(); + +export function withMeta( + meta: AbiMessage, + creator: Omit, +): T { + (creator as T).meta = meta; + + return creator as T; +} + +export function createBluePrintTx( + meta: AbiMessage, + fn: (options: BlueprintOptions, params: unknown[]) => SubmittableExtrinsic, +): BlueprintDeploy { + return withMeta( + meta, + (options: BlueprintOptions, ...params: unknown[]): SubmittableExtrinsic => + fn(options, params), + ); +} + +export function createBluePrintWithId( + fn: ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + params: unknown[], + ) => T, +): ContractGeneric { + return ( + constructorOrId: AbiConstructor | string | number, + options: BlueprintOptions, + ...params: unknown[] + ): T => fn(constructorOrId, options, params); +} + +export function encodeSalt(salt: Uint8Array | string | null = randomAsU8a()): Uint8Array { + return salt instanceof Bytes + ? salt + : salt?.length + ? compactAddLength(u8aToU8a(salt)) + : EMPTY_SALT; +} + +export function convertWeight( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): WeightAll { + const [refTime, proofSize] = isWeightV2(weight) + ? [weight.refTime.toBn(), weight.proofSize.toBn()] + : [bnToBn(weight), undefined]; + + return { + v1Weight: refTime, + v2Weight: { proofSize, refTime }, + }; +} + +export function isWeightV2( + weight: WeightV1 | WeightV2 | bigint | string | number | BN, +): weight is WeightV2 { + return !!(weight as WeightV2).proofSize; +} diff --git a/.api-contract/src/bundle.ts b/.api-contract/src/bundle.ts new file mode 100644 index 00000000..1be0423b --- /dev/null +++ b/.api-contract/src/bundle.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// all named +export { Abi } from './Abi/index.js'; +export { packageInfo } from './packageInfo.js'; + +// all starred +export * from './promise/index.js'; +export * from './rx/index.js'; diff --git a/.api-contract/src/checkTypes.manual.ts b/.api-contract/src/checkTypes.manual.ts new file mode 100644 index 00000000..236f68e5 --- /dev/null +++ b/.api-contract/src/checkTypes.manual.ts @@ -0,0 +1,44 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Simple non-runnable checks to test type definitions in the editor itself + +import '@polkadot/api-augment'; + +import type { TestKeyringMapSubstrate } from '@polkadot/keyring/testingPairs'; + +import { ApiPromise } from '@polkadot/api'; +import { BlueprintPromise, ContractPromise } from '@polkadot/api-contract'; +import { createTestPairs } from '@polkadot/keyring/testingPairs'; + +import abiIncrementer from './test/contracts/ink/v0/incrementer.json' assert { type: 'json' }; + +async function checkBlueprint(api: ApiPromise, pairs: TestKeyringMapSubstrate): Promise { + const blueprint = new BlueprintPromise(api, abiIncrementer as Record, '0x1234'); + + await blueprint.tx['new']({ gasLimit: 456, salt: '0x1234', value: 123 }, 42).signAndSend( + pairs.bob, + ); + await blueprint.tx['new']({ gasLimit: 456, value: 123 }, 42).signAndSend(pairs.bob); +} + +async function checkContract(api: ApiPromise, pairs: TestKeyringMapSubstrate): Promise { + const contract = new ContractPromise(api, abiIncrementer as Record, '0x1234'); + + // queries + await contract.query['get'](pairs.alice.address, {}); + + // execute + await contract.tx['inc']({ gasLimit: 1234 }, 123).signAndSend(pairs.eve); +} + +async function main(): Promise { + const api = await ApiPromise.create({ + hasher: (data: Uint8Array): Uint8Array => data, + }); + const pairs = createTestPairs(); + + await Promise.all([checkBlueprint(api, pairs), checkContract(api, pairs)]); +} + +main().catch(console.error); diff --git a/.api-contract/src/index.ts b/.api-contract/src/index.ts new file mode 100644 index 00000000..5e015c3f --- /dev/null +++ b/.api-contract/src/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import './packageDetect.js'; + +export * from './bundle.js'; diff --git a/.api-contract/src/mod.ts b/.api-contract/src/mod.ts new file mode 100644 index 00000000..57e1fea8 --- /dev/null +++ b/.api-contract/src/mod.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export * from './index.js'; diff --git a/.api-contract/src/packageDetect.ts b/.api-contract/src/packageDetect.ts new file mode 100644 index 00000000..ee014dfe --- /dev/null +++ b/.api-contract/src/packageDetect.ts @@ -0,0 +1,13 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev +// (packageInfo imports will be kept as-is, user-editable) + +import { packageInfo as apiInfo } from '@polkadot/api/packageInfo'; +import { packageInfo as typesInfo } from '@polkadot/types/packageInfo'; +import { detectPackage } from '@polkadot/util'; + +import { packageInfo } from './packageInfo.js'; + +detectPackage(packageInfo, null, [apiInfo, typesInfo]); diff --git a/.api-contract/src/packageInfo.ts b/.api-contract/src/packageInfo.ts new file mode 100644 index 00000000..2f695e88 --- /dev/null +++ b/.api-contract/src/packageInfo.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +// Do not edit, auto-generated by @polkadot/dev + +export const packageInfo = { + name: '@polkadot/api-contract', + path: 'auto', + type: 'auto', + version: '15.8.1', +}; diff --git a/.api-contract/src/promise/index.ts b/.api-contract/src/promise/index.ts new file mode 100644 index 00000000..53058fcf --- /dev/null +++ b/.api-contract/src/promise/index.ts @@ -0,0 +1,40 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiPromise } from '@polkadot/api'; +import type { AccountId20, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; + +import { toPromiseMethod } from '@polkadot/api'; + +import { Blueprint, Code, Contract } from '../base/index.js'; + +export class BlueprintPromise extends Blueprint<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + codeHash: string | Hash, + ) { + super(api, abi, codeHash, toPromiseMethod); + } +} + +export class CodePromise extends Code<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ) { + super(api, abi, wasm, toPromiseMethod); + } +} + +export class ContractPromise extends Contract<'promise'> { + constructor( + api: ApiPromise, + abi: string | Record | Abi, + address: string | AccountId20, + ) { + super(api, abi, address, toPromiseMethod); + } +} diff --git a/.api-contract/src/promise/types.ts b/.api-contract/src/promise/types.ts new file mode 100644 index 00000000..7057fec2 --- /dev/null +++ b/.api-contract/src/promise/types.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; + +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/src/rx/index.ts b/.api-contract/src/rx/index.ts new file mode 100644 index 00000000..72bc95d7 --- /dev/null +++ b/.api-contract/src/rx/index.ts @@ -0,0 +1,36 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiRx } from '@polkadot/api'; +import type { AccountId, Hash } from '@polkadot/types/interfaces'; +import type { Abi } from '../Abi/index.js'; + +import { toRxMethod } from '@polkadot/api'; + +import { Blueprint, Code, Contract } from '../base/index.js'; + +export class BlueprintRx extends Blueprint<'rxjs'> { + constructor(api: ApiRx, abi: string | Record | Abi, codeHash: string | Hash) { + super(api, abi, codeHash, toRxMethod); + } +} + +export class CodeRx extends Code<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + wasm: Uint8Array | string | Buffer | null | undefined, + ) { + super(api, abi, wasm, toRxMethod); + } +} + +export class ContractRx extends Contract<'rxjs'> { + constructor( + api: ApiRx, + abi: string | Record | Abi, + address: string | AccountId, + ) { + super(api, abi, address, toRxMethod); + } +} diff --git a/.api-contract/src/rx/types.ts b/.api-contract/src/rx/types.ts new file mode 100644 index 00000000..7057fec2 --- /dev/null +++ b/.api-contract/src/rx/types.ts @@ -0,0 +1,10 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { + BlueprintSubmittableResult as BaseBlueprintSubmittableResult, + CodeSubmittableResult as BaseCodeSubmittableResult, +} from '../base/index.js'; + +export type BlueprintSubmittableResult = BaseBlueprintSubmittableResult<'promise'>; +export type CodeSubmittableResult = BaseCodeSubmittableResult<'promise'>; diff --git a/.api-contract/src/test/compare/ink_v0_delegator.test.json b/.api-contract/src/test/compare/ink_v0_delegator.test.json new file mode 100644 index 00000000..07bd94d7 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_delegator.test.json @@ -0,0 +1,47 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 2, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "i32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "Hash", + "docs": [], + "namespace": "ink_env::types::Hash", + "lookupNameRoot": "InkEnvHash" + } +] diff --git a/.api-contract/src/test/compare/ink_v0_dns.test.json b/.api-contract/src/test/compare/ink_v0_dns.test.json new file mode 100644 index 00000000..45d5618c --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_dns.test.json @@ -0,0 +1,232 @@ +[ + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "InkStorageCollectionsStashHeader", + "type": "{\"lastVacant\":\"u32\",\"len\":\"u32\",\"lenEntries\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::Header", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lastVacant" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "len" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lenEntries" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkStorageCollectionsStashEntry", + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"Hash\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup7", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "Hash", + "docs": [], + "namespace": "ink_env::types::Hash", + "lookupNameRoot": "InkEnvHash", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "Hash", + "docs": [], + "namespace": "ink_env::types::Hash", + "lookupNameRoot": "InkEnvHash" + }, + { + "info": "VecFixed", + "lookupIndex": 5, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 6, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "{\"next\":\"u32\",\"prev\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::VacantEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "next" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "prev" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsHashmapValueEntry", + "type": "{\"value\":\"AccountId\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 9, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Result", + "lookupIndex": 10, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 11, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 12, + "lookupName": "DnsError", + "type": "Lookup12" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 12, + "lookupName": "DnsError", + "type": "{\"_enum\":[\"NameAlreadyExists\",\"CallerIsNotOwner\"]}", + "docs": [], + "namespace": "dns::dns::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "NameAlreadyExists" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CallerIsNotOwner" + } + ] + }, + { + "info": "Option", + "lookupIndex": 13, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 9, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + } +] diff --git a/.api-contract/src/test/compare/ink_v0_erc20.test.json b/.api-contract/src/test/compare/ink_v0_erc20.test.json new file mode 100644 index 00000000..0ddd1aab --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_erc20.test.json @@ -0,0 +1,253 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 2, + "lookupName": "InkStorageCollectionsStashHeader", + "type": "{\"lastVacant\":\"u32\",\"len\":\"u32\",\"lenEntries\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::Header", + "sub": [ + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lastVacant" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "len" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lenEntries" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"AccountId\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "{\"next\":\"u32\",\"prev\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::VacantEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "next" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "prev" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 9, + "lookupName": "InkStorageCollectionsHashmapValueEntry", + "type": "{\"value\":\"u128\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 1, + "type": "u128", + "docs": [], + "namespace": "", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "InkStorageCollectionsStashEntry", + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"(AccountId,AccountId)\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Tuple", + "lookupIndex": 11, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ], + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 11, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Option", + "lookupIndex": 13, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + } +] diff --git a/.api-contract/src/test/compare/ink_v0_erc721.test.json b/.api-contract/src/test/compare/ink_v0_erc721.test.json new file mode 100644 index 00000000..728b5c06 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_erc721.test.json @@ -0,0 +1,415 @@ +[ + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "InkStorageCollectionsStashHeader", + "type": "{\"lastVacant\":\"u32\",\"len\":\"u32\",\"lenEntries\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::Header", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lastVacant" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "len" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lenEntries" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"u32\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup4", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 4, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "{\"next\":\"u32\",\"prev\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::VacantEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "next" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "prev" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 5, + "type": "{\"value\":\"AccountId\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 7, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 9, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"AccountId\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup4", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 10, + "lookupName": "InkStorageCollectionsHashmapValueEntryEntry", + "type": "{\"value\":\"u32\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 11, + "lookupName": "InkStorageCollectionsStashEntry", + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"(AccountId,AccountId)\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup4", + "index": 0, + "name": "Vacant" + }, + { + "info": "Tuple", + "lookupIndex": 12, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ], + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 12, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "InkStorageCollectionsHashmapValueEntryOption", + "type": "{\"value\":\"bool\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 14, + "type": "bool", + "docs": [], + "namespace": "", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 14, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Option", + "lookupIndex": 15, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 17, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 18, + "lookupName": "Erc721Error", + "type": "Lookup18" + } + ] + }, + { + "info": "Null", + "lookupIndex": 17, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 18, + "lookupName": "Erc721Error", + "type": "{\"_enum\":[\"NotOwner\",\"NotApproved\",\"TokenExists\",\"TokenNotFound\",\"CannotInsert\",\"CannotRemove\",\"CannotFetchValue\",\"NotAllowed\"]}", + "docs": [], + "namespace": "erc721::erc721::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "NotOwner" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "NotApproved" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "TokenExists" + }, + { + "info": "Null", + "type": "Null", + "index": 3, + "name": "TokenNotFound" + }, + { + "info": "Null", + "type": "Null", + "index": 4, + "name": "CannotInsert" + }, + { + "info": "Null", + "type": "Null", + "index": 5, + "name": "CannotRemove" + }, + { + "info": "Null", + "type": "Null", + "index": 6, + "name": "CannotFetchValue" + }, + { + "info": "Null", + "type": "Null", + "index": 7, + "name": "NotAllowed" + } + ] + } +] diff --git a/.api-contract/src/test/compare/ink_v0_flipper.test.json b/.api-contract/src/test/compare/ink_v0_flipper.test.json new file mode 100644 index 00000000..47947069 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_flipper.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "bool", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/ink_v0_flipperBundle.test.json b/.api-contract/src/test/compare/ink_v0_flipperBundle.test.json new file mode 100644 index 00000000..47947069 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_flipperBundle.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "bool", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/ink_v0_incrementer.test.json b/.api-contract/src/test/compare/ink_v0_incrementer.test.json new file mode 100644 index 00000000..e089626f --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_incrementer.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "i32", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/ink_v0_multisigPlain.test.json b/.api-contract/src/test/compare/ink_v0_multisigPlain.test.json new file mode 100644 index 00000000..9e8747a4 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v0_multisigPlain.test.json @@ -0,0 +1,562 @@ +[ + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "InkStorageCollectionsStashHeader", + "type": "{\"lastVacant\":\"u32\",\"len\":\"u32\",\"lenEntries\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::Header", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lastVacant" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "len" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lenEntries" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"(u32,AccountId)\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Tuple", + "lookupIndex": 4, + "type": "(u32,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ], + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 4, + "type": "(u32,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "{\"next\":\"u32\",\"prev\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::VacantEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "next" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "prev" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 9, + "type": "{\"value\":\"Null\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Null", + "lookupIndex": 10, + "type": "Null", + "docs": [], + "namespace": "", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Null", + "lookupIndex": 10, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 11, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"u32\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 12, + "lookupName": "InkStorageCollectionsHashmapValueEntry", + "type": "{\"value\":\"u32\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 13, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"MultisigPlainTransaction\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 14, + "lookupName": "MultisigPlainTransaction", + "type": "Lookup14", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 14, + "lookupName": "MultisigPlainTransaction", + "type": "{\"callee\":\"AccountId\",\"selector\":\"[u8;4]\",\"input\":\"Bytes\",\"transferredValue\":\"u128\",\"gasLimit\":\"u64\"}", + "docs": [], + "namespace": "multisig_plain::multisig_plain::Transaction", + "sub": [ + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "name": "callee" + }, + { + "info": "VecFixed", + "lookupIndex": 15, + "type": "[u8;4]", + "docs": [], + "namespace": "", + "length": 4, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + "name": "selector" + }, + { + "info": "Plain", + "lookupIndex": 16, + "type": "Bytes", + "docs": [], + "namespace": "", + "name": "input" + }, + { + "info": "Plain", + "lookupIndex": 17, + "type": "u128", + "docs": [], + "namespace": "", + "name": "transferredValue" + }, + { + "info": "Plain", + "lookupIndex": 18, + "type": "u64", + "docs": [], + "namespace": "", + "name": "gasLimit" + } + ] + }, + { + "info": "VecFixed", + "lookupIndex": 15, + "type": "[u8;4]", + "docs": [], + "namespace": "", + "length": 4, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 16, + "type": "Bytes", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 17, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 18, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "InkStorageCollectionsStashEntry", + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"AccountId\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Vec", + "lookupIndex": 20, + "type": "Vec", + "docs": [], + "namespace": "", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + }, + { + "info": "Tuple", + "lookupIndex": 21, + "type": "(u32,MultisigPlainConfirmationStatus)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 22, + "lookupName": "MultisigPlainConfirmationStatus", + "type": "Lookup22" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 22, + "lookupName": "MultisigPlainConfirmationStatus", + "type": "{\"_enum\":{\"Confirmed\":\"Null\",\"ConfirmationsNeeded\":\"u32\"}}", + "docs": [], + "namespace": "multisig_plain::multisig_plain::ConfirmationStatus", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "Confirmed" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "index": 1, + "name": "ConfirmationsNeeded" + } + ] + }, + { + "info": "Result", + "lookupIndex": 23, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 10, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "info": "Null", + "lookupIndex": 10, + "type": "Null", + "docs": [], + "namespace": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 24, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 16, + "type": "Bytes", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "info": "Null", + "lookupIndex": 10, + "type": "Null", + "docs": [], + "namespace": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 25, + "type": "Result, Null>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Option", + "lookupIndex": 26, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 16, + "type": "Bytes", + "docs": [], + "namespace": "" + } + }, + { + "name": "Error", + "info": "Null", + "lookupIndex": 10, + "type": "Null", + "docs": [], + "namespace": "" + } + ] + }, + { + "info": "Option", + "lookupIndex": 26, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 16, + "type": "Bytes", + "docs": [], + "namespace": "" + } + } +] diff --git a/.api-contract/src/test/compare/ink_v1_flipper.test.json b/.api-contract/src/test/compare/ink_v1_flipper.test.json new file mode 100644 index 00000000..bbbb7375 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v1_flipper.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/ink_v1_psp22.test.json b/.api-contract/src/test/compare/ink_v1_psp22.test.json new file mode 100644 index 00000000..4ab33a0b --- /dev/null +++ b/.api-contract/src/test/compare/ink_v1_psp22.test.json @@ -0,0 +1,531 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "InkStorageCollectionsStashHeader", + "type": "{\"lastVacant\":\"u32\",\"len\":\"u32\",\"lenEntries\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::Header", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lastVacant", + "typeName": "Index" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "len", + "typeName": "u32" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lenEntries", + "typeName": "u32" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"AccountId\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup7", + "typeName": "VacantEntry", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "typeName": "T", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 5, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 6, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "{\"next\":\"u32\",\"prev\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::VacantEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "next", + "typeName": "Index" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "prev", + "typeName": "Index" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 8, + "type": "{\"value\":\"u128\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "", + "name": "value", + "typeName": "V" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex", + "typeName": "KeyIndex" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 9, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"(AccountId,AccountId)\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup7", + "typeName": "VacantEntry", + "index": 0, + "name": "Vacant" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ], + "typeName": "T", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "Text", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 13, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"u32\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup7", + "typeName": "VacantEntry", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "typeName": "T", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 14, + "type": "{\"value\":\"u32\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "value", + "typeName": "V" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex", + "typeName": "KeyIndex" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkStorageCollectionsStashEntry", + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"(u32,AccountId)\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 7, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup7", + "typeName": "VacantEntry", + "index": 0, + "name": "Vacant" + }, + { + "info": "Tuple", + "lookupIndex": 16, + "type": "(u32,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ], + "typeName": "T", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 16, + "type": "(u32,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 17, + "lookupName": "InkStorageCollectionsHashmapValueEntry", + "type": "{\"value\":\"Null\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Null", + "lookupIndex": 18, + "type": "Null", + "docs": [], + "namespace": "", + "name": "value", + "typeName": "V" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex", + "typeName": "KeyIndex" + } + ] + }, + { + "info": "Null", + "lookupIndex": 18, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Option", + "lookupIndex": 19, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 11, + "type": "Text", + "docs": [], + "namespace": "" + } + }, + { + "info": "Result", + "lookupIndex": 20, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 18, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 21, + "lookupName": "ContractsErrorsPsp22Psp22Error", + "type": "Lookup21" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 21, + "lookupName": "ContractsErrorsPsp22Psp22Error", + "type": "{\"_enum\":{\"Custom\":\"Text\",\"InsufficientBalance\":\"Null\",\"InsufficientAllowance\":\"Null\",\"ZeroRecipientAddress\":\"Null\",\"ZeroSenderAddress\":\"Null\",\"SafeTransferCheckFailed\":\"Text\"}}", + "docs": [], + "namespace": "contracts::traits::errors::psp22::PSP22Error", + "sub": [ + { + "info": "Plain", + "lookupIndex": 11, + "type": "Text", + "docs": [], + "namespace": "", + "typeName": "Text", + "index": 0, + "name": "Custom" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "InsufficientAllowance" + }, + { + "info": "Null", + "type": "Null", + "index": 3, + "name": "ZeroRecipientAddress" + }, + { + "info": "Null", + "type": "Null", + "index": 4, + "name": "ZeroSenderAddress" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "Text", + "docs": [], + "namespace": "", + "typeName": "Text", + "index": 5, + "name": "SafeTransferCheckFailed" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "Bytes", + "docs": [], + "namespace": "" + }, + { + "info": "Option", + "lookupIndex": 23, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + } +] diff --git a/.api-contract/src/test/compare/ink_v2_erc20.test.json b/.api-contract/src/test/compare/ink_v2_erc20.test.json new file mode 100644 index 00000000..8e9a0884 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v2_erc20.test.json @@ -0,0 +1,205 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "type": "{\"offsetKey\":\"InkPrimitivesKey\"}", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping", + "sub": [ + { + "info": "VecFixed", + "lookupIndex": 5, + "lookupName": "InkPrimitivesKey", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "Key", + "name": "offsetKey" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "VecFixed", + "lookupIndex": 5, + "lookupName": "InkPrimitivesKey", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "[u8;32]" + }, + { + "info": "Struct", + "lookupIndex": 6, + "lookupName": "InkStorageLazyMapping", + "type": "{\"offsetKey\":\"InkPrimitivesKey\"}", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping", + "sub": [ + { + "info": "VecFixed", + "lookupIndex": 5, + "lookupName": "InkPrimitivesKey", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "Key", + "name": "offsetKey" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 7, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Result", + "lookupIndex": 8, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 9, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "info": "Null", + "lookupIndex": 9, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 11, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + } +] diff --git a/.api-contract/src/test/compare/ink_v2_flipper.test.json b/.api-contract/src/test/compare/ink_v2_flipper.test.json new file mode 100644 index 00000000..bbbb7375 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v2_flipper.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/ink_v3_flipper.test.json b/.api-contract/src/test/compare/ink_v3_flipper.test.json new file mode 100644 index 00000000..bbbb7375 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v3_flipper.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/ink_v3_traitErc20.test.json b/.api-contract/src/test/compare/ink_v3_traitErc20.test.json new file mode 100644 index 00000000..1f6373ef --- /dev/null +++ b/.api-contract/src/test/compare/ink_v3_traitErc20.test.json @@ -0,0 +1,205 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "type": "{\"offsetKey\":\"InkPrimitivesKey\"}", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping", + "sub": [ + { + "info": "VecFixed", + "lookupIndex": 5, + "lookupName": "InkPrimitivesKey", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "Key", + "name": "offsetKey" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "VecFixed", + "lookupIndex": 5, + "lookupName": "InkPrimitivesKey", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "[u8;32]" + }, + { + "info": "Struct", + "lookupIndex": 6, + "lookupName": "InkStorageLazyMapping", + "type": "{\"offsetKey\":\"InkPrimitivesKey\"}", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping", + "sub": [ + { + "info": "VecFixed", + "lookupIndex": 5, + "lookupName": "InkPrimitivesKey", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "Key", + "name": "offsetKey" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 7, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Result", + "lookupIndex": 8, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 9, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "TraitErc20Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "info": "Null", + "lookupIndex": 9, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "TraitErc20Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "trait_erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 11, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + } +] diff --git a/.api-contract/src/test/compare/ink_v4_erc20Contract.test.json b/.api-contract/src/test/compare/ink_v4_erc20Contract.test.json new file mode 100644 index 00000000..d34d7f85 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v4_erc20Contract.test.json @@ -0,0 +1,253 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 8, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 11, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 14, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 15, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v4_erc20Metadata.test.json b/.api-contract/src/test/compare/ink_v4_erc20Metadata.test.json new file mode 100644 index 00000000..d34d7f85 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v4_erc20Metadata.test.json @@ -0,0 +1,253 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 8, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "Lookup10" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 11, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 14, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 15, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v4_flipperContract.test.json b/.api-contract/src/test/compare/ink_v4_flipperContract.test.json new file mode 100644 index 00000000..681a6a3d --- /dev/null +++ b/.api-contract/src/test/compare/ink_v4_flipperContract.test.json @@ -0,0 +1,155 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v4_flipperMetadata.test.json b/.api-contract/src/test/compare/ink_v4_flipperMetadata.test.json new file mode 100644 index 00000000..681a6a3d --- /dev/null +++ b/.api-contract/src/test/compare/ink_v4_flipperMetadata.test.json @@ -0,0 +1,155 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 1, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Null", + "lookupIndex": 2, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 4, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 3, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup3" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v5_erc20.test.json b/.api-contract/src/test/compare/ink_v5_erc20.test.json new file mode 100644 index 00000000..2f7012d6 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v5_erc20.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json b/.api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json new file mode 100644 index 00000000..2f7012d6 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v5_erc20AnonymousTransferMetadata.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v5_erc20Contract.test.json b/.api-contract/src/test/compare/ink_v5_erc20Contract.test.json new file mode 100644 index 00000000..2f7012d6 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v5_erc20Contract.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v5_erc20Metadata.test.json b/.api-contract/src/test/compare/ink_v5_erc20Metadata.test.json new file mode 100644 index 00000000..2f7012d6 --- /dev/null +++ b/.api-contract/src/test/compare/ink_v5_erc20Metadata.test.json @@ -0,0 +1,370 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 5, + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 6, + "lookupName": "InkStorageTraitsImplsAutoKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::AutoKey" + }, + { + "info": "Null", + "lookupIndex": 7, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "docs": [], + "namespace": "ink_storage::lazy::mapping::Mapping" + }, + { + "info": "Tuple", + "lookupIndex": 10, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + ] + }, + { + "info": "Null", + "lookupIndex": 11, + "lookupName": "InkStorageTraitsImplsResolverKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ResolverKey" + }, + { + "info": "Null", + "lookupIndex": 12, + "lookupName": "InkStorageTraitsImplsManualKey", + "type": "Null", + "docs": [], + "namespace": "ink_storage_traits::impls::ManualKey" + }, + { + "info": "Struct", + "lookupIndex": 13, + "lookupName": "Erc20", + "type": "{\"totalSupply\":\"u128\",\"balances\":\"Null\",\"allowances\":\"InkStorageLazyMapping\"}", + "docs": [], + "namespace": "erc20::erc20::Erc20", + "sub": [ + { + "docs": [], + "name": "totalSupply", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "namespace": "", + "typeName": "" + }, + { + "docs": [], + "name": "balances", + "info": "Null", + "lookupIndex": 1, + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + }, + { + "docs": [], + "name": "allowances", + "info": "Null", + "lookupIndex": 9, + "lookupName": "InkStorageLazyMapping", + "type": "Null", + "namespace": "ink_storage::lazy::mapping::Mapping", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 17, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 15, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup15" + } + ] + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 8, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "Lookup19" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 19, + "lookupName": "Erc20Error", + "type": "{\"_enum\":[\"InsufficientBalance\",\"InsufficientAllowance\"]}", + "docs": [], + "namespace": "erc20::erc20::Error", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InsufficientBalance" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "InsufficientAllowance" + } + ] + }, + { + "info": "Option", + "lookupIndex": 20, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Plain", + "lookupIndex": 21, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 22, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 23, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 24, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v5_flipperContract.test.json b/.api-contract/src/test/compare/ink_v5_flipperContract.test.json new file mode 100644 index 00000000..69b5276e --- /dev/null +++ b/.api-contract/src/test/compare/ink_v5_flipperContract.test.json @@ -0,0 +1,174 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "Flipper", + "type": "{\"value\":\"bool\"}", + "docs": [], + "namespace": "flipper::flipper::Flipper", + "sub": [ + { + "docs": [], + "name": "value", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "namespace": "", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 2, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 5, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 7, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/ink_v5_flipperMetadata.test.json b/.api-contract/src/test/compare/ink_v5_flipperMetadata.test.json new file mode 100644 index 00000000..69b5276e --- /dev/null +++ b/.api-contract/src/test/compare/ink_v5_flipperMetadata.test.json @@ -0,0 +1,174 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 1, + "lookupName": "Flipper", + "type": "{\"value\":\"bool\"}", + "docs": [], + "namespace": "flipper::flipper::Flipper", + "sub": [ + { + "docs": [], + "name": "value", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "namespace": "", + "typeName": "" + } + ] + }, + { + "info": "Result", + "lookupIndex": 2, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 5, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 0, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 4, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup4" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 7, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 9, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 10, + "type": "Hash", + "docs": [], + "namespace": "ink_primitives::types::Hash", + "lookupNameRoot": "InkPrimitivesHash" + }, + { + "info": "Plain", + "lookupIndex": 11, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "NoChainExtension", + "docs": [], + "namespace": "ink_env::types::NoChainExtension", + "lookupNameRoot": "InkEnvNoChainExtension" + } +] diff --git a/.api-contract/src/test/compare/solang_v0_ints256.test.json b/.api-contract/src/test/compare/solang_v0_ints256.test.json new file mode 100644 index 00000000..0c273a6a --- /dev/null +++ b/.api-contract/src/test/compare/solang_v0_ints256.test.json @@ -0,0 +1,9 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "u256", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/user_v0_assetTransfer.test.json b/.api-contract/src/test/compare/user_v0_assetTransfer.test.json new file mode 100644 index 00000000..8a62addf --- /dev/null +++ b/.api-contract/src/test/compare/user_v0_assetTransfer.test.json @@ -0,0 +1,54 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "u256", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "VecFixed", + "lookupIndex": 3, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "VecFixed", + "lookupIndex": 4, + "lookupName": "AccountId", + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "Text", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/user_v0_enumExample.test.json b/.api-contract/src/test/compare/user_v0_enumExample.test.json new file mode 100644 index 00000000..0bf43f84 --- /dev/null +++ b/.api-contract/src/test/compare/user_v0_enumExample.test.json @@ -0,0 +1,303 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "i32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "lookupName": "EnumExampleVariant", + "type": "{\"_enum\":{\"None\":\"Null\",\"Weekday\":\"EnumExampleWeekday\",\"TupleMaybeSigned\":\"EnumExampleTupleMaybeSigned\",\"NamedMaybeSigned\":\"EnumExampleNamedMaybeSigned\",\"Color\":\"EnumExampleColor\"}}", + "docs": [], + "namespace": "enum_example::enum_example::Variant", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "None" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 5, + "lookupName": "EnumExampleWeekday", + "type": "Lookup5", + "index": 1, + "name": "Weekday" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 6, + "lookupName": "EnumExampleTupleMaybeSigned", + "type": "Lookup6", + "index": 2, + "name": "TupleMaybeSigned" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 7, + "lookupName": "EnumExampleNamedMaybeSigned", + "type": "Lookup7", + "index": 3, + "name": "NamedMaybeSigned" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "EnumExampleColor", + "type": "Lookup8", + "index": 4, + "name": "Color" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 5, + "lookupName": "EnumExampleWeekday", + "type": "{\"_enum\":[\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\",\"Sunday\"]}", + "docs": [], + "namespace": "enum_example::enum_example::Weekday", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "Monday" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "Tuesday" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "Wednesday" + }, + { + "info": "Null", + "type": "Null", + "index": 3, + "name": "Thursday" + }, + { + "info": "Null", + "type": "Null", + "index": 4, + "name": "Friday" + }, + { + "info": "Null", + "type": "Null", + "index": 5, + "name": "Saturday" + }, + { + "info": "Null", + "type": "Null", + "index": 6, + "name": "Sunday" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 6, + "lookupName": "EnumExampleTupleMaybeSigned", + "type": "{\"_enum\":{\"Signed\":\"i32\",\"Unsigned\":\"u32\"}}", + "docs": [], + "namespace": "enum_example::enum_example::TupleMaybeSigned", + "sub": [ + { + "info": "Plain", + "lookupIndex": 1, + "type": "i32", + "docs": [], + "namespace": "", + "index": 0, + "name": "Signed" + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "index": 1, + "name": "Unsigned" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 7, + "lookupName": "EnumExampleNamedMaybeSigned", + "type": "{\"_enum\":{\"Signed\":\"{\\\"value\\\":\\\"i32\\\"}\",\"Unsigned\":\"{\\\"value\\\":\\\"u32\\\"}\"}}", + "docs": [], + "namespace": "enum_example::enum_example::NamedMaybeSigned", + "sub": [ + { + "info": "Struct", + "sub": [ + { + "info": "Plain", + "lookupIndex": 1, + "type": "i32", + "docs": [], + "namespace": "", + "name": "value" + } + ], + "type": "{\"value\":\"i32\"}", + "index": 0, + "name": "Signed" + }, + { + "info": "Struct", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u32", + "docs": [], + "namespace": "", + "name": "value" + } + ], + "type": "{\"value\":\"u32\"}", + "index": 1, + "name": "Unsigned" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 8, + "lookupName": "EnumExampleColor", + "type": "{\"_enum\":{\"Red\":\"Null\",\"Blue\":\"Null\",\"Green\":\"Null\",\"Yellow\":\"Null\",\"Rgb\":\"{\\\"r\\\":\\\"u8\\\",\\\"g\\\":\\\"u8\\\",\\\"b\\\":\\\"u8\\\"}\",\"Rgba\":\"{\\\"r\\\":\\\"u8\\\",\\\"g\\\":\\\"u8\\\",\\\"b\\\":\\\"u8\\\",\\\"a\\\":\\\"u8\\\"}\"}}", + "docs": [], + "namespace": "enum_example::enum_example::Color", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "Red" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "Blue" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "Green" + }, + { + "info": "Null", + "type": "Null", + "index": 3, + "name": "Yellow" + }, + { + "info": "Struct", + "sub": [ + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "r" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "g" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "b" + } + ], + "type": "{\"r\":\"u8\",\"g\":\"u8\",\"b\":\"u8\"}", + "index": 4, + "name": "Rgb" + }, + { + "info": "Struct", + "sub": [ + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "r" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "g" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "b" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u8", + "docs": [], + "namespace": "", + "name": "a" + } + ], + "type": "{\"r\":\"u8\",\"g\":\"u8\",\"b\":\"u8\",\"a\":\"u8\"}", + "index": 5, + "name": "Rgba" + } + ] + } +] diff --git a/.api-contract/src/test/compare/user_v0_recursive.test.json b/.api-contract/src/test/compare/user_v0_recursive.test.json new file mode 100644 index 00000000..327476f9 --- /dev/null +++ b/.api-contract/src/test/compare/user_v0_recursive.test.json @@ -0,0 +1,27 @@ +[ + { + "info": "Enum", + "lookupIndex": 1, + "lookupName": "RecursiveMyEnum", + "type": "{\"_enum\":{\"A\":\"Null\",\"B\":\"RecursiveMyEnum\"}}", + "docs": [], + "namespace": "recursive::MyEnum", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "A" + }, + { + "info": "Si", + "lookupIndex": 1, + "lookupName": "RecursiveMyEnum", + "type": "Lookup1", + "typeName": "MyEnum", + "index": 1, + "name": "B" + } + ] + } +] diff --git a/.api-contract/src/test/compare/user_v0_withString.test.json b/.api-contract/src/test/compare/user_v0_withString.test.json new file mode 100644 index 00000000..2d797855 --- /dev/null +++ b/.api-contract/src/test/compare/user_v0_withString.test.json @@ -0,0 +1,260 @@ +[ + { + "info": "Plain", + "lookupIndex": 1, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 2, + "lookupName": "InkStorageCollectionsStashHeader", + "type": "{\"lastVacant\":\"u32\",\"len\":\"u32\",\"lenEntries\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::Header", + "sub": [ + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lastVacant" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "len" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "lenEntries" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 4, + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"AccountId\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId", + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 6, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Struct", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "{\"next\":\"u32\",\"prev\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::stash::VacantEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "next" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "prev" + } + ] + }, + { + "info": "Struct", + "lookupIndex": 9, + "lookupName": "InkStorageCollectionsHashmapValueEntry", + "type": "{\"value\":\"u128\",\"keyIndex\":\"u32\"}", + "docs": [], + "namespace": "ink_storage::collections::hashmap::ValueEntry", + "sub": [ + { + "info": "Plain", + "lookupIndex": 1, + "type": "u128", + "docs": [], + "namespace": "", + "name": "value" + }, + { + "info": "Plain", + "lookupIndex": 3, + "type": "u32", + "docs": [], + "namespace": "", + "name": "keyIndex" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "InkStorageCollectionsStashEntry", + "type": "{\"_enum\":{\"Vacant\":\"InkStorageCollectionsStashVacantEntry\",\"Occupied\":\"(AccountId,AccountId)\"}}", + "docs": [], + "namespace": "ink_storage::collections::stash::Entry", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 8, + "lookupName": "InkStorageCollectionsStashVacantEntry", + "type": "Lookup8", + "index": 0, + "name": "Vacant" + }, + { + "info": "Tuple", + "lookupIndex": 11, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ], + "index": 1, + "name": "Occupied" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 11, + "type": "(AccountId,AccountId)", + "docs": [], + "namespace": "", + "sub": [ + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 12, + "type": "Text", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 13, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Option", + "lookupIndex": 14, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 5, + "type": "AccountId", + "docs": [], + "namespace": "ink_env::types::AccountId", + "lookupNameRoot": "InkEnvAccountId" + } + } +] diff --git a/.api-contract/src/test/compare/user_v3_ask.test.json b/.api-contract/src/test/compare/user_v3_ask.test.json new file mode 100644 index 00000000..3f67e9a1 --- /dev/null +++ b/.api-contract/src/test/compare/user_v3_ask.test.json @@ -0,0 +1,71 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 1, + "type": "Text", + "docs": [], + "namespace": "" + }, + { + "info": "VecFixed", + "lookupIndex": 2, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 0, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Struct", + "lookupIndex": 3, + "type": "{\"inner\":\"[u8;32]\"}", + "docs": [], + "namespace": "", + "sub": [ + { + "docs": [], + "name": "inner", + "info": "VecFixed", + "lookupIndex": 2, + "type": "[u8;32]", + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 0, + "type": "u8", + "docs": [], + "namespace": "" + }, + "typeName": "FixedArray32" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "bool", + "docs": [], + "namespace": "" + } +] diff --git a/.api-contract/src/test/compare/user_v4_events.test.json b/.api-contract/src/test/compare/user_v4_events.test.json new file mode 100644 index 00000000..f88b2172 --- /dev/null +++ b/.api-contract/src/test/compare/user_v4_events.test.json @@ -0,0 +1,1328 @@ +[ + { + "info": "Plain", + "lookupIndex": 0, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + }, + { + "info": "VecFixed", + "lookupIndex": 1, + "type": "[u8;32]", + "docs": [], + "namespace": "", + "length": 32, + "sub": { + "info": "Plain", + "lookupIndex": 2, + "type": "u8", + "docs": [], + "namespace": "" + } + }, + { + "info": "Plain", + "lookupIndex": 2, + "type": "u8", + "docs": [], + "namespace": "" + }, + { + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u16", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "u64", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "Bytes", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 9, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "{\"_enum\":[\"__Unused0\",\"CouldNotReadInput\"]}", + "docs": [], + "namespace": "ink_primitives::LangError", + "sub": [ + { + "index": 0, + "info": "Null", + "name": "__Unused0", + "type": "Null" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "CouldNotReadInput" + } + ] + }, + { + "info": "Result", + "lookupIndex": 11, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 7, + "type": "u128", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 12, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "{\"_enum\":{\"U8\":\"u8\",\"U16\":\"u16\",\"U32\":\"u32\",\"U64\":\"u64\",\"U128\":\"u128\",\"Bytes\":\"Bytes\"}}", + "docs": [], + "namespace": "openbrush_contracts::traits::types::Id", + "sub": [ + { + "info": "Plain", + "lookupIndex": 2, + "type": "u8", + "docs": [], + "namespace": "", + "typeName": "u8", + "index": 0, + "name": "U8" + }, + { + "info": "Plain", + "lookupIndex": 4, + "type": "u16", + "docs": [], + "namespace": "", + "typeName": "u16", + "index": 1, + "name": "U16" + }, + { + "info": "Plain", + "lookupIndex": 5, + "type": "u32", + "docs": [], + "namespace": "", + "typeName": "u32", + "index": 2, + "name": "U32" + }, + { + "info": "Plain", + "lookupIndex": 6, + "type": "u64", + "docs": [], + "namespace": "", + "typeName": "u64", + "index": 3, + "name": "U64" + }, + { + "info": "Plain", + "lookupIndex": 7, + "type": "u128", + "docs": [], + "namespace": "", + "typeName": "u128", + "index": 4, + "name": "U128" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "Bytes", + "docs": [], + "namespace": "", + "typeName": "Bytes", + "index": 5, + "name": "Bytes" + } + ] + }, + { + "info": "Result", + "lookupIndex": 14, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Option", + "lookupIndex": 15, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 0, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Option", + "lookupIndex": 15, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 0, + "type": "AccountId", + "docs": [], + "namespace": "ink_primitives::types::AccountId", + "lookupNameRoot": "InkPrimitivesAccountId" + } + }, + { + "info": "Result", + "lookupIndex": 16, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 5, + "type": "u32", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Option", + "lookupIndex": 17, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + } + }, + { + "info": "Result", + "lookupIndex": 18, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 19, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 19, + "type": "bool", + "docs": [], + "namespace": "" + }, + { + "info": "Result", + "lookupIndex": 20, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 21, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 22, + "lookupName": "OpenbrushContractsErrorsPsp34Psp34Error", + "type": "Lookup22" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 21, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 22, + "lookupName": "OpenbrushContractsErrorsPsp34Psp34Error", + "type": "Lookup22" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 22, + "lookupName": "OpenbrushContractsErrorsPsp34Psp34Error", + "type": "{\"_enum\":{\"Custom\":\"Bytes\",\"SelfApprove\":\"Null\",\"NotApproved\":\"Null\",\"TokenExists\":\"Null\",\"TokenNotExists\":\"Null\",\"SafeTransferCheckFailed\":\"Bytes\"}}", + "docs": [], + "namespace": "openbrush_contracts::traits::errors::psp34::PSP34Error", + "sub": [ + { + "info": "Plain", + "lookupIndex": 8, + "type": "Bytes", + "docs": [], + "namespace": "", + "typeName": "Text", + "index": 0, + "name": "Custom" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "SelfApprove" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "NotApproved" + }, + { + "info": "Null", + "type": "Null", + "index": 3, + "name": "TokenExists" + }, + { + "info": "Null", + "type": "Null", + "index": 4, + "name": "TokenNotExists" + }, + { + "info": "Plain", + "lookupIndex": 8, + "type": "Bytes", + "docs": [], + "namespace": "", + "typeName": "Text", + "index": 5, + "name": "SafeTransferCheckFailed" + } + ] + }, + { + "info": "Result", + "lookupIndex": 23, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 24, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 25, + "lookupName": "OpenbrushContractsErrorsAccessControlAccessControlError", + "type": "Lookup25" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 24, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 25, + "lookupName": "OpenbrushContractsErrorsAccessControlAccessControlError", + "type": "Lookup25" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 25, + "lookupName": "OpenbrushContractsErrorsAccessControlAccessControlError", + "type": "{\"_enum\":[\"InvalidCaller\",\"MissingRole\",\"RoleRedundant\"]}", + "docs": [], + "namespace": "openbrush_contracts::traits::errors::access_control::AccessControlError", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "InvalidCaller" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "MissingRole" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "RoleRedundant" + } + ] + }, + { + "info": "Result", + "lookupIndex": 26, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Option", + "lookupIndex": 27, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "Bytes", + "docs": [], + "namespace": "" + } + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Option", + "lookupIndex": 27, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 8, + "type": "Bytes", + "docs": [], + "namespace": "" + } + }, + { + "info": "Result", + "lookupIndex": 28, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 29, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 22, + "lookupName": "OpenbrushContractsErrorsPsp34Psp34Error", + "type": "Lookup22" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 29, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 22, + "lookupName": "OpenbrushContractsErrorsPsp34Psp34Error", + "type": "Lookup22" + } + ] + }, + { + "info": "Result", + "lookupIndex": 30, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 31, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 32, + "type": "Text", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 31, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Plain", + "lookupIndex": 32, + "type": "Text", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "info": "Plain", + "lookupIndex": 32, + "type": "Text", + "docs": [], + "namespace": "" + }, + { + "info": "Enum", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "{\"_enum\":{\"Rmrk\":\"RmrkCommonErrorsRmrkError\",\"PSP34\":\"OpenbrushContractsErrorsPsp34Psp34Error\",\"AccessControl\":\"OpenbrushContractsErrorsAccessControlAccessControlError\",\"Reentrancy\":\"OpenbrushContractsErrorsReentrancyGuardReentrancyGuardError\"}}", + "docs": [], + "namespace": "rmrk_common::errors::Error", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 34, + "lookupName": "RmrkCommonErrorsRmrkError", + "type": "Lookup34", + "typeName": "RmrkError", + "index": 0, + "name": "Rmrk" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 22, + "lookupName": "OpenbrushContractsErrorsPsp34Psp34Error", + "type": "Lookup22", + "typeName": "PSP34Error", + "index": 1, + "name": "PSP34" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 25, + "lookupName": "OpenbrushContractsErrorsAccessControlAccessControlError", + "type": "Lookup25", + "typeName": "AccessControlError", + "index": 2, + "name": "AccessControl" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 35, + "lookupName": "OpenbrushContractsErrorsReentrancyGuardReentrancyGuardError", + "type": "Lookup35", + "typeName": "ReentrancyGuardError", + "index": 3, + "name": "Reentrancy" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 34, + "lookupName": "RmrkCommonErrorsRmrkError", + "type": "{\"_enum\":[\"AcceptedAssetsMissing\",\"AddingPendingAsset\",\"AddingPendingChild\",\"AddressNotEquippable\",\"AlreadyAddedAsset\",\"AlreadyAddedChild\",\"AssetHasNoParts\",\"AssetIdAlreadyExists\",\"AssetIdNotFound\",\"AssetIdNotEquippable\",\"BadConfig\",\"BadMintValue\",\"BadPriorityLength\",\"CannotMintZeroTokens\",\"CatalogNotFoundForAsset\",\"ChildNotFound\",\"UriNotFound\",\"CollectionIsFull\",\"InvalidAssetId\",\"InvalidParentId\",\"InvalidTokenId\",\"NotEquipped\",\"NotTokenOwner\",\"PartIsNotSlot\",\"SlotAlreayUsed\",\"TargetAssetCannotReceiveSlot\",\"UnknownEquippableAsset\",\"UnknownPart\",\"UnknownPartId\",\"WithdrawalFailed\"]}", + "docs": [], + "namespace": "rmrk_common::errors::RmrkError", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "AcceptedAssetsMissing" + }, + { + "info": "Null", + "type": "Null", + "index": 1, + "name": "AddingPendingAsset" + }, + { + "info": "Null", + "type": "Null", + "index": 2, + "name": "AddingPendingChild" + }, + { + "info": "Null", + "type": "Null", + "index": 3, + "name": "AddressNotEquippable" + }, + { + "info": "Null", + "type": "Null", + "index": 4, + "name": "AlreadyAddedAsset" + }, + { + "info": "Null", + "type": "Null", + "index": 5, + "name": "AlreadyAddedChild" + }, + { + "info": "Null", + "type": "Null", + "index": 6, + "name": "AssetHasNoParts" + }, + { + "info": "Null", + "type": "Null", + "index": 7, + "name": "AssetIdAlreadyExists" + }, + { + "info": "Null", + "type": "Null", + "index": 8, + "name": "AssetIdNotFound" + }, + { + "info": "Null", + "type": "Null", + "index": 9, + "name": "AssetIdNotEquippable" + }, + { + "info": "Null", + "type": "Null", + "index": 10, + "name": "BadConfig" + }, + { + "info": "Null", + "type": "Null", + "index": 11, + "name": "BadMintValue" + }, + { + "info": "Null", + "type": "Null", + "index": 12, + "name": "BadPriorityLength" + }, + { + "info": "Null", + "type": "Null", + "index": 13, + "name": "CannotMintZeroTokens" + }, + { + "info": "Null", + "type": "Null", + "index": 14, + "name": "CatalogNotFoundForAsset" + }, + { + "info": "Null", + "type": "Null", + "index": 15, + "name": "ChildNotFound" + }, + { + "info": "Null", + "type": "Null", + "index": 16, + "name": "UriNotFound" + }, + { + "info": "Null", + "type": "Null", + "index": 17, + "name": "CollectionIsFull" + }, + { + "info": "Null", + "type": "Null", + "index": 18, + "name": "InvalidAssetId" + }, + { + "info": "Null", + "type": "Null", + "index": 19, + "name": "InvalidParentId" + }, + { + "info": "Null", + "type": "Null", + "index": 20, + "name": "InvalidTokenId" + }, + { + "info": "Null", + "type": "Null", + "index": 21, + "name": "NotEquipped" + }, + { + "info": "Null", + "type": "Null", + "index": 22, + "name": "NotTokenOwner" + }, + { + "info": "Null", + "type": "Null", + "index": 23, + "name": "PartIsNotSlot" + }, + { + "info": "Null", + "type": "Null", + "index": 24, + "name": "SlotAlreayUsed" + }, + { + "info": "Null", + "type": "Null", + "index": 25, + "name": "TargetAssetCannotReceiveSlot" + }, + { + "info": "Null", + "type": "Null", + "index": 26, + "name": "UnknownEquippableAsset" + }, + { + "info": "Null", + "type": "Null", + "index": 27, + "name": "UnknownPart" + }, + { + "info": "Null", + "type": "Null", + "index": 28, + "name": "UnknownPartId" + }, + { + "info": "Null", + "type": "Null", + "index": 29, + "name": "WithdrawalFailed" + } + ] + }, + { + "info": "Enum", + "lookupIndex": 35, + "lookupName": "OpenbrushContractsErrorsReentrancyGuardReentrancyGuardError", + "type": "{\"_enum\":[\"ReentrantCall\"]}", + "docs": [], + "namespace": "openbrush_contracts::traits::errors::reentrancy_guard::ReentrancyGuardError", + "sub": [ + { + "info": "Null", + "type": "Null", + "index": 0, + "name": "ReentrantCall" + } + ] + }, + { + "info": "Result", + "lookupIndex": 36, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Option", + "lookupIndex": 37, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 6, + "type": "u64", + "docs": [], + "namespace": "" + } + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Option", + "lookupIndex": 37, + "type": "Option", + "docs": [], + "namespace": "Option", + "sub": { + "info": "Plain", + "lookupIndex": 6, + "type": "u64", + "docs": [], + "namespace": "" + } + }, + { + "info": "Result", + "lookupIndex": 38, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 39, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 39, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Null", + "lookupIndex": 3, + "type": "Null", + "docs": [], + "namespace": "" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "info": "Result", + "lookupIndex": 40, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 41, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 41, + "type": "Result", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "info": "Result", + "lookupIndex": 42, + "type": "Result, InkPrimitivesLangError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Result", + "lookupIndex": 43, + "type": "Result<(OpenbrushContractsTypesId,OpenbrushContractsTypesId), RmrkCommonErrorsError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Tuple", + "lookupIndex": 44, + "type": "(OpenbrushContractsTypesId,OpenbrushContractsTypesId)", + "docs": [], + "namespace": "", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 10, + "lookupName": "InkPrimitivesLangError", + "type": "Lookup10" + } + ] + }, + { + "info": "Result", + "lookupIndex": 43, + "type": "Result<(OpenbrushContractsTypesId,OpenbrushContractsTypesId), RmrkCommonErrorsError>", + "docs": [], + "namespace": "Result", + "sub": [ + { + "name": "Ok", + "info": "Tuple", + "lookupIndex": 44, + "type": "(OpenbrushContractsTypesId,OpenbrushContractsTypesId)", + "docs": [], + "namespace": "", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + } + ] + }, + { + "name": "Error", + "docs": [], + "info": "Si", + "lookupIndex": 33, + "lookupName": "RmrkCommonErrorsError", + "type": "Lookup33" + } + ] + }, + { + "info": "Tuple", + "lookupIndex": 44, + "type": "(OpenbrushContractsTypesId,OpenbrushContractsTypesId)", + "docs": [], + "namespace": "", + "sub": [ + { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + }, + { + "docs": [], + "info": "Si", + "lookupIndex": 13, + "lookupName": "OpenbrushContractsTypesId", + "type": "Lookup13" + } + ] + } +] diff --git a/.api-contract/src/test/contracts/index.ts b/.api-contract/src/test/contracts/index.ts new file mode 100644 index 00000000..3ffc7321 --- /dev/null +++ b/.api-contract/src/test/contracts/index.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import ink from './ink/index.js'; +import solang from './solang/index.js'; +import user from './user/index.js'; + +const all: Record> = {}; + +Object.entries({ ink, solang, user }).forEach(([type, abis]) => + Object.entries(abis).forEach(([name, abi]): void => { + all[`${type}_${name}`] = abi; + }), +); + +export default all; diff --git a/.api-contract/src/test/contracts/ink/index.ts b/.api-contract/src/test/contracts/ink/index.ts new file mode 100644 index 00000000..3ae97f89 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/index.ts @@ -0,0 +1,12 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { createVersionedExport } from '../util.js'; +import * as v0 from './v0/index.js'; +import * as v1 from './v1/index.js'; +import * as v2 from './v2/index.js'; +import * as v3 from './v3/index.js'; +import * as v4 from './v4/index.js'; +import * as v5 from './v5/index.js'; + +export default createVersionedExport({ v0, v1, v2, v3, v4, v5 }); diff --git a/.api-contract/src/test/contracts/ink/v0/accumulator.wasm b/.api-contract/src/test/contracts/ink/v0/accumulator.wasm new file mode 100644 index 00000000..33197e6b Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/accumulator.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/adder.wasm b/.api-contract/src/test/contracts/ink/v0/adder.wasm new file mode 100644 index 00000000..37f0003c Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/adder.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/delegator.json b/.api-contract/src/test/contracts/ink/v0/delegator.json new file mode 100644 index 00000000..4a9a3959 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/delegator.json @@ -0,0 +1,214 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0x939d1823be952b4d7114448bb1a27fa13bafb8c4b33149efc24e826d8e54035e", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "delegator", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "init_value", + "type": { + "displayName": ["i32"], + "type": 4 + } + }, + { + "name": "accumulator_code_hash", + "type": { + "displayName": ["Hash"], + "type": 5 + } + }, + { + "name": "adder_code_hash", + "type": { + "displayName": ["Hash"], + "type": 5 + } + }, + { + "name": "subber_code_hash", + "type": { + "displayName": ["Hash"], + "type": 5 + } + } + ], + "docs": [" Instantiate a delegator with the given sub-contract codes."], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [" Returns the accumulator's value."], + "mutates": false, + "name": ["get"], + "payable": false, + "returnType": { + "displayName": ["i32"], + "type": 4 + }, + "selector": "0x1e5ca456" + }, + { + "args": [ + { + "name": "by", + "type": { + "displayName": ["i32"], + "type": 4 + } + } + ], + "docs": [" Delegates the call to either `Adder` or `Subber`."], + "mutates": true, + "name": ["change"], + "payable": false, + "returnType": null, + "selector": "0x0af938f2" + }, + { + "args": [], + "docs": [" Switches the delegator."], + "mutates": true, + "name": ["switch"], + "payable": false, + "returnType": null, + "selector": "0x5d37c38d" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0000000000000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [] + }, + "1": { + "fields": [] + } + } + } + }, + "name": "which" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "account_id" + } + ] + } + }, + "name": "accumulator" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "account_id" + } + ] + } + }, + "name": "adder" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "account_id" + } + ] + } + }, + "name": "subber" + } + ] + } + }, + "types": [ + { + "def": { + "composite": { + "fields": [ + { + "type": 2 + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + }, + { + "def": { + "array": { + "len": 32, + "type": 3 + } + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "primitive": "i32" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 2 + } + ] + } + }, + "path": ["ink_env", "types", "Hash"] + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/delegator.wasm b/.api-contract/src/test/contracts/ink/v0/delegator.wasm new file mode 100644 index 00000000..5a189ee0 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/delegator.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/dns.json b/.api-contract/src/test/contracts/ink/v0/dns.json new file mode 100644 index 00000000..7fbb18df --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/dns.json @@ -0,0 +1,600 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xcf3eee6ac5d38f6f503293735a72b011960e09ec1dd09185ab3c3d28e7770009", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "dns", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": [" Creates a new domain name service contract."], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + }, + { + "docs": [], + "indexed": true, + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + } + ], + "docs": [" Emitted whenever a new name is being registered."], + "name": "Register" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + }, + { + "docs": [], + "indexed": false, + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + }, + { + "docs": [], + "indexed": true, + "name": "old_address", + "type": { + "displayName": ["Option"], + "type": 13 + } + }, + { + "docs": [], + "indexed": true, + "name": "new_address", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + } + ], + "docs": [" Emitted whenever an address changes."], + "name": "SetAddress" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + }, + { + "docs": [], + "indexed": false, + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + }, + { + "docs": [], + "indexed": true, + "name": "old_owner", + "type": { + "displayName": ["Option"], + "type": 13 + } + }, + { + "docs": [], + "indexed": true, + "name": "new_owner", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + } + ], + "docs": [" Emitted whenver a name is being transferred."], + "name": "Transfer" + } + ], + "messages": [ + { + "args": [ + { + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + } + ], + "docs": [" Register specific name with caller as owner."], + "mutates": true, + "name": ["register"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 10 + }, + "selector": "0x7fb0aded" + }, + { + "args": [ + { + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + }, + { + "name": "new_address", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + } + ], + "docs": [" Set address for specific name."], + "mutates": true, + "name": ["set_address"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 10 + }, + "selector": "0x220ac6e3" + }, + { + "args": [ + { + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + }, + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 9 + } + } + ], + "docs": [" Transfer owner to another address."], + "mutates": true, + "name": ["transfer"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 10 + }, + "selector": "0xfae3a09d" + }, + { + "args": [ + { + "name": "name", + "type": { + "displayName": ["Hash"], + "type": 4 + } + } + ], + "docs": [" Get address for specific name."], + "mutates": false, + "name": ["get_address"], + "payable": false, + "returnType": { + "displayName": ["AccountId"], + "type": 9 + }, + "selector": "0xb9ee7664" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0100000001000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "len": 4294967295, + "offset": "0x0200000000000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 8 + } + }, + "offset": "0x0100000001000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "name_to_address" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0300000002000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "len": 4294967295, + "offset": "0x0400000001000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 8 + } + }, + "offset": "0x0300000002000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "name_to_owner" + }, + { + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "name": "default_address" + } + ] + } + }, + "types": [ + { + "def": { + "composite": { + "fields": [ + { + "name": "last_vacant", + "type": 2 + }, + { + "name": "len", + "type": 2 + }, + { + "name": "len_entries", + "type": 2 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "Header"] + }, + { + "def": { + "primitive": "u32" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 4 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [4], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 5 + } + ] + } + }, + "path": ["ink_env", "types", "Hash"] + }, + { + "def": { + "array": { + "len": 32, + "type": 6 + } + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "next", + "type": 2 + }, + { + "name": "prev", + "type": 2 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "VacantEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 9 + }, + { + "name": "key_index", + "type": 2 + } + ] + } + }, + "params": [9], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 5 + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 11 + } + ], + "name": "Ok" + }, + { + "fields": [ + { + "type": 12 + } + ], + "name": "Err" + } + ] + } + }, + "params": [11, 12], + "path": ["Result"] + }, + { + "def": { + "tuple": [] + } + }, + { + "def": { + "variant": { + "variants": [ + { + "discriminant": 0, + "name": "NameAlreadyExists" + }, + { + "discriminant": 1, + "name": "CallerIsNotOwner" + } + ] + } + }, + "path": ["dns", "dns", "Error"] + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "None" + }, + { + "fields": [ + { + "type": 9 + } + ], + "name": "Some" + } + ] + } + }, + "params": [9], + "path": ["Option"] + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/dns.wasm b/.api-contract/src/test/contracts/ink/v0/dns.wasm new file mode 100644 index 00000000..5a173a89 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/dns.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/erc20.json b/.api-contract/src/test/contracts/ink/v0/erc20.json new file mode 100644 index 00000000..d25588ed --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/erc20.json @@ -0,0 +1,600 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xe9c60864c76c770865b66c79aa304bc22d2d08cc799d36310df4256db107b8fc", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "erc20", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "initial_supply", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "from", + "type": { + "displayName": ["Option"], + "type": 13 + } + }, + { + "docs": [], + "indexed": true, + "name": "to", + "type": { + "displayName": ["Option"], + "type": 13 + } + }, + { + "docs": [], + "indexed": true, + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "name": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [], + "indexed": true, + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [], + "indexed": true, + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "name": "Approval" + } + ], + "messages": [ + { + "args": [], + "docs": [], + "mutates": false, + "name": ["total_supply"], + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 1 + }, + "selector": "0xdcb736b5" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [], + "mutates": false, + "name": ["balance_of"], + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 1 + }, + "selector": "0x56e929b2" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [], + "mutates": false, + "name": ["allowance"], + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 1 + }, + "selector": "0xf3cfff66" + }, + { + "args": [ + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["transfer"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 12 + }, + "selector": "0xfae3a09d" + }, + { + "args": [ + { + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["approve"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 12 + }, + "selector": "0x03d0e114" + }, + { + "args": [ + { + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["transfer_from"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 12 + }, + "selector": "0xfcfb2ccd" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "total_supply" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 4 + } + }, + "len": 4294967295, + "offset": "0x0300000000000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "offset": "0x0200000001000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "balances" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0400000001000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 10 + } + }, + "len": 4294967295, + "offset": "0x0500000001000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0500000002000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "offset": "0x0400000002000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "allowances" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "u128" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "last_vacant", + "type": 3 + }, + { + "name": "len", + "type": 3 + }, + { + "name": "len_entries", + "type": 3 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "Header"] + }, + { + "def": { + "primitive": "u32" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 5 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [5], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 6 + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + }, + { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "next", + "type": 3 + }, + { + "name": "prev", + "type": 3 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "VacantEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 1 + }, + { + "name": "key_index", + "type": 3 + } + ] + } + }, + "params": [1], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 11 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [11], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "tuple": [5, 5] + } + }, + { + "def": { + "primitive": "bool" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "None" + }, + { + "fields": [ + { + "type": 5 + } + ], + "name": "Some" + } + ] + } + }, + "params": [5], + "path": ["Option"] + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/erc20.wasm b/.api-contract/src/test/contracts/ink/v0/erc20.wasm new file mode 100644 index 00000000..4ce6dd24 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/erc20.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/erc721.json b/.api-contract/src/test/contracts/ink/v0/erc721.json new file mode 100644 index 00000000..662b2b00 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/erc721.json @@ -0,0 +1,1007 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xf7dac8dd8a2d9c7419c766facfa29d91823625305be8a1e7a9e6d750b894782b", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "erc721", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": [" Creates a new ERC721 token contract."], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "from", + "type": { + "displayName": ["Option"], + "type": 15 + } + }, + { + "docs": [], + "indexed": true, + "name": "to", + "type": { + "displayName": ["Option"], + "type": 15 + } + }, + { + "docs": [], + "indexed": true, + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Event emitted when a token transfer occurs."], + "name": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "docs": [], + "indexed": true, + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "docs": [], + "indexed": true, + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Event emited when a token approve occurs."], + "name": "Approval" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "docs": [], + "indexed": true, + "name": "operator", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "docs": [], + "indexed": false, + "name": "approved", + "type": { + "displayName": ["bool"], + "type": 14 + } + } + ], + "docs": [ + " Event emitted when an operator is enabled or disabled for an owner.", + " The operator can manage all NFTs of the owner." + ], + "name": "ApprovalForAll" + } + ], + "messages": [ + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + } + ], + "docs": [ + " Returns the balance of the owner.", + "", + " This represents the amount of unique tokens the owner has." + ], + "mutates": false, + "name": ["balance_of"], + "payable": false, + "returnType": { + "displayName": ["u32"], + "type": 2 + }, + "selector": "0x56e929b2" + }, + { + "args": [ + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Returns the owner of the token."], + "mutates": false, + "name": ["owner_of"], + "payable": false, + "returnType": { + "displayName": ["Option"], + "type": 15 + }, + "selector": "0xf7860ada" + }, + { + "args": [ + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Returns the approved account ID for this token if any."], + "mutates": false, + "name": ["get_approved"], + "payable": false, + "returnType": { + "displayName": ["Option"], + "type": 15 + }, + "selector": "0xb09dc487" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "name": "operator", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + } + ], + "docs": [" Returns `true` if the operator is approved by the owner."], + "mutates": false, + "name": ["is_approved_for_all"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 14 + }, + "selector": "0xc666bf03" + }, + { + "args": [ + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "name": "approved", + "type": { + "displayName": ["bool"], + "type": 14 + } + } + ], + "docs": [" Approves or disapproves the operator for all tokens of the caller."], + "mutates": true, + "name": ["set_approval_for_all"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 16 + }, + "selector": "0x51176f12" + }, + { + "args": [ + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Approves the account to transfer the specified token on behalf of the caller."], + "mutates": true, + "name": ["approve"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 16 + }, + "selector": "0x03d0e114" + }, + { + "args": [ + { + "name": "destination", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Transfers the token from the caller to the given destination."], + "mutates": true, + "name": ["transfer"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 16 + }, + "selector": "0xfae3a09d" + }, + { + "args": [ + { + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 6 + } + }, + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Transfer approved or owned token."], + "mutates": true, + "name": ["transfer_from"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 16 + }, + "selector": "0xfcfb2ccd" + }, + { + "args": [ + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Creates a new token."], + "mutates": true, + "name": ["mint"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 16 + }, + "selector": "0xf8885eeb" + }, + { + "args": [ + { + "name": "id", + "type": { + "displayName": ["TokenId"], + "type": 2 + } + } + ], + "docs": [" Deletes an existing token. Only the owner can burn the token."], + "mutates": true, + "name": ["burn"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 16 + }, + "selector": "0x120bc564" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0100000001000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "len": 4294967295, + "offset": "0x0200000000000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 5 + } + }, + "offset": "0x0100000001000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "token_owner" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0300000002000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "len": 4294967295, + "offset": "0x0400000001000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 5 + } + }, + "offset": "0x0300000002000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "token_approvals" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0500000002000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0500000003000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "len": 4294967295, + "offset": "0x0600000002000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0600000003000000000000000000000000000000000000000000000000000000", + "ty": 10 + } + }, + "offset": "0x0500000003000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "owned_tokens_count" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0600000003000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0700000003000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0700000004000000000000000000000000000000000000000000000000000000", + "ty": 11 + } + }, + "len": 4294967295, + "offset": "0x0800000003000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0800000004000000000000000000000000000000000000000000000000000000", + "ty": 13 + } + }, + "offset": "0x0700000004000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "operator_approvals" + } + ] + } + }, + "types": [ + { + "def": { + "composite": { + "fields": [ + { + "name": "last_vacant", + "type": 2 + }, + { + "name": "len", + "type": 2 + }, + { + "name": "len_entries", + "type": 2 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "Header"] + }, + { + "def": { + "primitive": "u32" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 4 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 2 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [2], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "next", + "type": 2 + }, + { + "name": "prev", + "type": 2 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "VacantEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 6 + }, + { + "name": "key_index", + "type": 2 + } + ] + } + }, + "params": [6], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 7 + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + }, + { + "def": { + "array": { + "len": 32, + "type": 8 + } + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 4 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 6 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [6], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 2 + }, + { + "name": "key_index", + "type": 2 + } + ] + } + }, + "params": [2], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 4 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 12 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [12], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "tuple": [6, 6] + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 14 + }, + { + "name": "key_index", + "type": 2 + } + ] + } + }, + "params": [14], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "primitive": "bool" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "None" + }, + { + "fields": [ + { + "type": 6 + } + ], + "name": "Some" + } + ] + } + }, + "params": [6], + "path": ["Option"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 17 + } + ], + "name": "Ok" + }, + { + "fields": [ + { + "type": 18 + } + ], + "name": "Err" + } + ] + } + }, + "params": [17, 18], + "path": ["Result"] + }, + { + "def": { + "tuple": [] + } + }, + { + "def": { + "variant": { + "variants": [ + { + "discriminant": 0, + "name": "NotOwner" + }, + { + "discriminant": 1, + "name": "NotApproved" + }, + { + "discriminant": 2, + "name": "TokenExists" + }, + { + "discriminant": 3, + "name": "TokenNotFound" + }, + { + "discriminant": 4, + "name": "CannotInsert" + }, + { + "discriminant": 5, + "name": "CannotRemove" + }, + { + "discriminant": 6, + "name": "CannotFetchValue" + }, + { + "discriminant": 7, + "name": "NotAllowed" + } + ] + } + }, + "path": ["erc721", "erc721", "Error"] + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/erc721.wasm b/.api-contract/src/test/contracts/ink/v0/erc721.wasm new file mode 100644 index 00000000..8bbdf89b Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/erc721.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/flipper.contract.json b/.api-contract/src/test/contracts/ink/v0/flipper.contract.json new file mode 100644 index 00000000..1c5ca65d --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/flipper.contract.json @@ -0,0 +1,85 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0x98086d5ccadd437459b812682380250f51a3034272cd1108e499acc0cafe9f42", + "language": "ink! 3.0.0-rc2", + "compiler": "rustc 1.49.0-nightly", + "wasm": "0x0061736d01000000012c0860027f7f0060037f7f7f0060017f017f60017f006000017f60037f7f7f017f60047f7f7f7f0060017f017e02880106057365616c30107365616c5f6765745f73746f726167650005057365616c30107365616c5f7365745f73746f726167650001057365616c30167365616c5f76616c75655f7472616e736665727265640000057365616c300a7365616c5f696e7075740000057365616c300b7365616c5f72657475726e000103656e76066d656d6f72790201021003121102020002000100070303060402040503010608017f01418080040b071102066465706c6f7900100463616c6c00120a8e1111c90101017f230041406a22012400200141206a200041186a290300370300200141186a200041106a290300370300200141106a200041086a2903003703002001420037032820012000290300370308200141086a1006200141808001360234200141a4800436023020014180800136023841a48004200141386a10002100200141306a20012802381007024002400240024020000e0401000002000b000b20012001290330370338200141386a100841ff017122004102470d01000b000b200141406b240020004100470b6001037e200029032021012000420137032020002001200029030022027c22013703002000200029030822032001200254ad7c22013703082000200029031022022001200354ad7c2201370310200020002903182001200254ad7c37031820000b4901037f230041106b22022400200028020421032000410036020420002802002104200041a48004360200200241086a200120042003100f20002002290308370200200241106a24000b4201027f230041106b22012400200141086a2000100b20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b8f0101017f230041406a22022400200241206a200141186a290300370300200241186a200141106a290300370300200241106a200141086a2903003703002002420037032820022001290300370308200241086a1006200241386a41808001360200200241a48004360234200241003602302002200241306a2000100a200228020020022802041001200241406b24000b9d0101037f230041106b22032400200141086a220428020021052004410036020020012802042104200141a48004360204200320023a000f2003410120042005100f024020032802044101460440200328020020032d000f3a000020014100360208200141a480043602042005450d0120012005417f6a3602082001200441016a3602042000410136020420002004360200200341106a24000f0b000b000b4801027f230041106b22022400200241003a000f024020012002410f6a4101101345044020022d000f21010c010b410121030b200020013a0001200020033a0000200241106a24000b890101027f230041106b22012400200142003c000c200142003e0208027f0340200241044604402001280208210241000c020b20012000100b20012d0000410171450440200141086a20026a20012d00013a00002001200241016a22023a000c0c010b0b200241ff01710440200141003a000c0b4100210241010b200141106a2400ad2002ad420886840b2201017f230041106b220124002001200036020c2001410c6a2802002d0000100e000b4601017f230041206b22012400200141186a41808001360200200141a4800436021420014100360210200141086a200141106a2000100a41002001280208200128020c1004000b2300410020014d0440200320014f044020002001360204200020023602000f0b000b000b15004100101141ff0171410274418080046a2802000bd80502057f017e230041306b220124000240027f024002402000044020014180800136020c200141a48004360208200141086a10142001200129030837031041012103200141106a100c2206a722054101710440410121020c030b200642ffffffffff1f832206422088a721002006421888a721042006421088a72102200541087641ff01712205411e470440200541c00147200041f3014772200241ff017141960147720d0241002102200441ff017141a501460d030c020b200041d60047200241ff017141dc0047720d014100210241002103200441ff017141a401470d010c020b20014180800136020c200141a48004360208200141086a101420012001290308370310410321020240200141106a100c2206a722044101710d00200642ffffffffff1f832206422088a721002006421888a721032006421088a7210202400240200441087641ff0171220441ea00470440200441d101472000412b4772200241ff017141830147720d02200341ff017141d100460d010c020b200041e20147200241ff0171413747720d0141022102200341ff01714112470d010c020b41032102200141106a100841ff017122004102460d01200041004721020c010b410321020b4106200241034622030d021a4106200220031b22024102460440200141286a4200370300200141206a4200370300200141186a4200370300200142003703104100200141106a100941080c030b200141286a4200370300200141206a4200370300200141186a4200370300200142003703102002410171200141106a100941080c020b41012102410121030b410620020d001a2003450d01200141286a4200370300200141206a4200370300200141186a420037030020014200370310200141106a1005410173200141106a100941080b200141306a24000f0b200141286a4200370300200141206a4200370300200141186a4200370300200142003703102001200141106a10053a0008200141086a100d000ba90102027f027e230041206b22002400200041808001360204200041a4800436020020004180800136021041a48004200041106a100220002000280210100720002000290300370308200041186a2201420037030020004200370310027f4101200041086a200041106a411010130d001a200129030021022000290310210341000b200220038450457245044041011011200041206a240041ff0171410274418080046a2802000f0b000b45000240200028020420024f047f2001200028020020021015200028020422012002490d012000200120026b3602042000200028020020026a36020041000541010b0f0b000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10032000200128020c1007200141106a24000b2c01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b1a0b0b250100418080040b1d0100000002000000030000000400000005000000060000000700000008" + }, + "contract": { + "name": "flipper", + "version": "3.0.0-rc2", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "init_value", + "type": { + "displayName": ["bool"], + "type": 1 + } + } + ], + "docs": [" Creates a new flipper smart contract initialized with the given value."], + "name": ["new"], + "selector": "0xd183512b" + }, + { + "args": [], + "docs": [" Creates a new flipper smart contract initialized to `false`."], + "name": ["default"], + "selector": "0x6a3712e2" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [" Flips the current value of the Flipper's bool."], + "mutates": true, + "name": ["flip"], + "payable": false, + "returnType": null, + "selector": "0xc096a5f3" + }, + { + "args": [], + "docs": [" Returns the current value of the Flipper's bool."], + "mutates": false, + "name": ["get"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 1 + }, + "selector": "0x1e5ca456" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "bool" + } + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/flipper.json b/.api-contract/src/test/contracts/ink/v0/flipper.json new file mode 100644 index 00000000..46f0c1d5 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/flipper.json @@ -0,0 +1,84 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xb6b5fa9791b27da76f1046de45d57bb835a8dfc44f21b223d8d6bb88e5eb5141", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "flipper", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "init_value", + "type": { + "displayName": ["bool"], + "type": 1 + } + } + ], + "docs": [" Creates a new flipper smart contract initialized with the given value."], + "name": ["new"], + "selector": "0xd183512b" + }, + { + "args": [], + "docs": [" Creates a new flipper smart contract initialized to `false`."], + "name": ["default"], + "selector": "0x6a3712e2" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [" Flips the current value of the Flipper's bool."], + "mutates": true, + "name": ["flip"], + "payable": false, + "returnType": null, + "selector": "0xc096a5f3" + }, + { + "args": [], + "docs": [" Returns the current value of the Flipper's bool."], + "mutates": false, + "name": ["get"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 1 + }, + "selector": "0x1e5ca456" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "bool" + } + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/flipper.wasm b/.api-contract/src/test/contracts/ink/v0/flipper.wasm new file mode 100644 index 00000000..5b43da17 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/flipper.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/incrementer.json b/.api-contract/src/test/contracts/ink/v0/incrementer.json new file mode 100644 index 00000000..50d22a44 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/incrementer.json @@ -0,0 +1,92 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0x8b30429ee0f4dc19cec91b09d186c805eaac6615492c1edf3bc1efaff0b7fecf", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "incrementer", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "init_value", + "type": { + "displayName": ["i32"], + "type": 1 + } + } + ], + "docs": [], + "name": ["new"], + "selector": "0xd183512b" + }, + { + "args": [], + "docs": [], + "name": ["default"], + "selector": "0x6a3712e2" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [ + { + "name": "by", + "type": { + "displayName": ["i32"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["inc"], + "payable": false, + "returnType": null, + "selector": "0x2fb8d143" + }, + { + "args": [], + "docs": [], + "mutates": false, + "name": ["get"], + "payable": false, + "returnType": { + "displayName": ["i32"], + "type": 1 + }, + "selector": "0x1e5ca456" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "i32" + } + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/incrementer.wasm b/.api-contract/src/test/contracts/ink/v0/incrementer.wasm new file mode 100644 index 00000000..b059a693 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/incrementer.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/index.ts b/.api-contract/src/test/contracts/ink/v0/index.ts new file mode 100644 index 00000000..923a6fa6 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/index.ts @@ -0,0 +1,11 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as delegator } from './delegator.json' assert { type: 'json' }; +export { default as dns } from './dns.json' assert { type: 'json' }; +export { default as erc20 } from './erc20.json' assert { type: 'json' }; +export { default as erc721 } from './erc721.json' assert { type: 'json' }; +export { default as flipperBundle } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipper } from './flipper.json' assert { type: 'json' }; +export { default as incrementer } from './incrementer.json' assert { type: 'json' }; +export { default as multisigPlain } from './multisig_plain.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/ink/v0/multisig_plain.json b/.api-contract/src/test/contracts/ink/v0/multisig_plain.json new file mode 100644 index 00000000..bf3a21fa --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/multisig_plain.json @@ -0,0 +1,1259 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xfc0f0e88e25c5857c49f089ab8fb6a0ecdc37a69e10b9317ae71924c916cda12", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "multisig_plain", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "requirement", + "type": { + "displayName": ["u32"], + "type": 2 + } + }, + { + "name": "owners", + "type": { + "displayName": ["Vec"], + "type": 20 + } + } + ], + "docs": [ + " The only constructor of the contract.", + "", + " A list of owners must be supplied and a number of how many of them must", + " confirm a transaction. Duplicate owners are silently dropped.", + "", + " # Panics", + "", + " If `requirement` violates our invariant." + ], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [" The transaction that was confirmed."], + "indexed": true, + "name": "transaction", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + }, + { + "docs": [" The owner that sent the confirmation."], + "indexed": true, + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [" The confirmation status after this confirmation was applied."], + "indexed": true, + "name": "status", + "type": { + "displayName": ["ConfirmationStatus"], + "type": 22 + } + } + ], + "docs": [" Emitted when an owner confirms a transaction."], + "name": "Confirmation" + }, + { + "args": [ + { + "docs": [" The transaction that was revoked."], + "indexed": true, + "name": "transaction", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + }, + { + "docs": [" The owner that sent the revokation."], + "indexed": true, + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [" Emitted when an owner revoked a confirmation."], + "name": "Revokation" + }, + { + "args": [ + { + "docs": [" The transaction that was submitted."], + "indexed": true, + "name": "transaction", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [" Emitted when an owner submits a transaction."], + "name": "Submission" + }, + { + "args": [ + { + "docs": [" The transaction that was canceled."], + "indexed": true, + "name": "transaction", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [" Emitted when a transaction was canceled."], + "name": "Cancelation" + }, + { + "args": [ + { + "docs": [" The transaction that was executed."], + "indexed": true, + "name": "transaction", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + }, + { + "docs": [ + " Indicates whether the transaction executed successfully. If so the `Ok` value holds", + " the output in bytes. The Option is `None` when the transaction was executed through", + " `invoke_transaction` rather than `evaluate_transaction`." + ], + "indexed": true, + "name": "result", + "type": { + "displayName": ["Result"], + "type": 25 + } + } + ], + "docs": [" Emitted when a transaction was executed."], + "name": "Execution" + }, + { + "args": [ + { + "docs": [" The owner that was added."], + "indexed": true, + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [" Emitted when an owner is added to the wallet."], + "name": "OwnerAddition" + }, + { + "args": [ + { + "docs": [" The owner that was removed."], + "indexed": true, + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [" Emitted when an owner is removed from the wallet."], + "name": "OwnerRemoval" + }, + { + "args": [ + { + "docs": [" The new requirement value."], + "indexed": false, + "name": "new_requirement", + "type": { + "displayName": ["u32"], + "type": 2 + } + } + ], + "docs": [" Emitted when the requirement changed."], + "name": "RequirementChange" + } + ], + "messages": [ + { + "args": [ + { + "name": "new_owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [ + " Add a new owner to the contract.", + "", + " Only callable by the wallet itself.", + "", + " # Panics", + "", + " If the owner already exists.", + "", + " # Examples", + "", + " Since this message must be send by the wallet itself it has to be build as a", + " `Transaction` and dispatched through `submit_transaction` + `invoke_transaction`:", + " ```no_run", + " use ink_env::{DefaultEnvironment as Env, AccountId, call::{CallParams, Selector}, test::CallData};", + " use multisig_plain::{Transaction, ConfirmationStatus};", + "", + " // address of an existing MultiSigPlain contract", + " let wallet_id: AccountId = [7u8; 32].into();", + "", + " // first create the transaction that adds `alice` through `add_owner`", + " let alice: AccountId = [1u8; 32].into();", + " let mut call = CallData::new(Selector::new([166, 229, 27, 154])); // add_owner", + " call.push_arg(&alice);", + " let transaction = Transaction {", + " callee: wallet_id,", + " selector: call.selector().to_bytes(),", + " input: call.params().to_owned(),", + " transferred_value: 0,", + " gas_limit: 0", + " };", + "", + " // submit the transaction for confirmation", + " let mut submit = CallParams::::eval(", + " wallet_id,", + " Selector::new([86, 244, 13, 223]) // submit_transaction", + " );", + " let (id, _): (u32, ConfirmationStatus) = submit.push_arg(&transaction)", + " .fire()", + " .expect(\"submit_transaction won't panic.\");", + "", + " // wait until all required owners have confirmed and then execute the transaction", + " let mut invoke = CallParams::::invoke(", + " wallet_id,", + " Selector::new([185, 50, 225, 236]) // invoke_transaction", + " );", + " invoke.push_arg(&id).fire();", + " ```" + ], + "mutates": true, + "name": ["add_owner"], + "payable": false, + "returnType": null, + "selector": "0xf3fcef36" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [ + " Remove an owner from the contract.", + "", + " Only callable by the wallet itself. If by doing this the amount of owners", + " would be smaller than the requirement it is adjusted to be exactly the", + " number of owners.", + "", + " # Panics", + "", + " If `owner` is no owner of the wallet." + ], + "mutates": true, + "name": ["remove_owner"], + "payable": false, + "returnType": null, + "selector": "0xe397f829" + }, + { + "args": [ + { + "name": "old_owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "new_owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [ + " Replace an owner from the contract with a new one.", + "", + " Only callable by the wallet itself.", + "", + " # Panics", + "", + " If `old_owner` is no owner or if `new_owner` already is one." + ], + "mutates": true, + "name": ["replace_owner"], + "payable": false, + "returnType": null, + "selector": "0xab4bc64a" + }, + { + "args": [ + { + "name": "new_requirement", + "type": { + "displayName": ["u32"], + "type": 2 + } + } + ], + "docs": [ + " Change the requirement to a new value.", + "", + " Only callable by the wallet itself.", + "", + " # Panics", + "", + " If the `new_requirement` violates our invariant." + ], + "mutates": true, + "name": ["change_requirement"], + "payable": false, + "returnType": null, + "selector": "0x7347595d" + }, + { + "args": [ + { + "name": "transaction", + "type": { + "displayName": ["Transaction"], + "type": 14 + } + } + ], + "docs": [ + " Add a new transaction candiate to the contract.", + "", + " This also confirms the transaction for the caller. This can be called by any owner." + ], + "mutates": true, + "name": ["submit_transaction"], + "payable": false, + "returnType": { + "displayName": [], + "type": 21 + }, + "selector": "0x349db9e8" + }, + { + "args": [ + { + "name": "trans_id", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [ + " Remove a transaction from the contract.", + " Only callable by the wallet itself.", + "", + " # Panics", + "", + " If `trans_id` is no valid transaction id." + ], + "mutates": true, + "name": ["cancel_transaction"], + "payable": false, + "returnType": null, + "selector": "0xd31b7656" + }, + { + "args": [ + { + "name": "trans_id", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [ + " Confirm a transaction for the sender that was submitted by any owner.", + "", + " This can be called by any owner.", + "", + " # Panics", + "", + " If `trans_id` is no valid transaction id." + ], + "mutates": true, + "name": ["confirm_transaction"], + "payable": false, + "returnType": { + "displayName": ["ConfirmationStatus"], + "type": 22 + }, + "selector": "0xea923d30" + }, + { + "args": [ + { + "name": "trans_id", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [ + " Revoke the senders confirmation.", + "", + " This can be called by any owner.", + "", + " # Panics", + "", + " If `trans_id` is no valid transaction id." + ], + "mutates": true, + "name": ["revoke_confirmation"], + "payable": false, + "returnType": null, + "selector": "0x13ee3e97" + }, + { + "args": [ + { + "name": "trans_id", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [ + " Invoke a confirmed execution without getting its output.", + "", + " Its return value indicates whether the called transaction was successful.", + " This can be called by anyone." + ], + "mutates": true, + "name": ["invoke_transaction"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 23 + }, + "selector": "0x6131abbb" + }, + { + "args": [ + { + "name": "trans_id", + "type": { + "displayName": ["TransactionId"], + "type": 2 + } + } + ], + "docs": [ + " Evaluate a confirmed execution and return its output as bytes.", + "", + " Its return value indicates whether the called transaction was successful and contains", + " its output when sucesful.", + " This can be called by anyone." + ], + "mutates": true, + "name": ["eval_transaction"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 24 + }, + "selector": "0xe667c7ac" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0100000001000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "len": 4294967295, + "offset": "0x0200000000000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "offset": "0x0100000001000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "confirmations" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0300000002000000000000000000000000000000000000000000000000000000", + "ty": 11 + } + }, + "len": 4294967295, + "offset": "0x0400000001000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 12 + } + }, + "offset": "0x0300000002000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "confirmation_count" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0500000002000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0500000003000000000000000000000000000000000000000000000000000000", + "ty": 13 + } + }, + "len": 4294967295, + "offset": "0x0600000002000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "transactions" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0500000003000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0500000004000000000000000000000000000000000000000000000000000000", + "ty": 5 + } + }, + "len": 4294967295, + "offset": "0x0600000003000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "owners" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0500000004000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0600000004000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0600000005000000000000000000000000000000000000000000000000000000", + "ty": 19 + } + }, + "len": 4294967295, + "offset": "0x0700000004000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0700000005000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "offset": "0x0600000005000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "is_owner" + }, + { + "layout": { + "cell": { + "key": "0x0700000005000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "requirement" + } + ] + } + }, + "types": [ + { + "def": { + "composite": { + "fields": [ + { + "name": "last_vacant", + "type": 2 + }, + { + "name": "len", + "type": 2 + }, + { + "name": "len_entries", + "type": 2 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "Header"] + }, + { + "def": { + "primitive": "u32" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 4 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [4], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "tuple": [2, 5] + } + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 6 + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + }, + { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "next", + "type": 2 + }, + { + "name": "prev", + "type": 2 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "VacantEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 10 + }, + { + "name": "key_index", + "type": 2 + } + ] + } + }, + "params": [10], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "tuple": [] + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 2 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [2], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 2 + }, + { + "name": "key_index", + "type": 2 + } + ] + } + }, + "params": [2], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 14 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [14], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "callee", + "type": 5 + }, + { + "name": "selector", + "type": 15 + }, + { + "name": "input", + "type": 16 + }, + { + "name": "transferred_value", + "type": 17 + }, + { + "name": "gas_limit", + "type": 18 + } + ] + } + }, + "path": ["multisig_plain", "multisig_plain", "Transaction"] + }, + { + "def": { + "array": { + "len": 4, + "type": 7 + } + } + }, + { + "def": { + "sequence": { + "type": 7 + } + } + }, + { + "def": { + "primitive": "u128" + } + }, + { + "def": { + "primitive": "u64" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 5 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [5], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "sequence": { + "type": 5 + } + } + }, + { + "def": { + "tuple": [2, 22] + } + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "Confirmed" + }, + { + "fields": [ + { + "type": 2 + } + ], + "name": "ConfirmationsNeeded" + } + ] + } + }, + "path": ["multisig_plain", "multisig_plain", "ConfirmationStatus"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 10 + } + ], + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "name": "Err" + } + ] + } + }, + "params": [10, 10], + "path": ["Result"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 16 + } + ], + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "name": "Err" + } + ] + } + }, + "params": [16, 10], + "path": ["Result"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 26 + } + ], + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "name": "Err" + } + ] + } + }, + "params": [26, 10], + "path": ["Result"] + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "None" + }, + { + "fields": [ + { + "type": 16 + } + ], + "name": "Some" + } + ] + } + }, + "params": [16], + "path": ["Option"] + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/multisig_plain.wasm b/.api-contract/src/test/contracts/ink/v0/multisig_plain.wasm new file mode 100644 index 00000000..74341e84 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/multisig_plain.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/subber.wasm b/.api-contract/src/test/contracts/ink/v0/subber.wasm new file mode 100644 index 00000000..76d2a55f Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/subber.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v0/trait-flipper.json b/.api-contract/src/test/contracts/ink/v0/trait-flipper.json new file mode 100644 index 00000000..9e40d2a7 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v0/trait-flipper.json @@ -0,0 +1,84 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0x568432b99f4ebd39ec03c2caaf69992b248999cc857326174b220b5587c3515f", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.48.0-nightly" + }, + "contract": { + "name": "flipper", + "version": "3.0.0-rc1", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": [" Creates a new flipper smart contract initialized to `false`."], + "name": ["default"], + "selector": "0x6a3712e2" + }, + { + "args": [ + { + "name": "init_value", + "type": { + "displayName": ["bool"], + "type": 1 + } + } + ], + "docs": [], + "name": ["Flip", "new"], + "selector": "0x818482e7" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [], + "mutates": true, + "name": ["Flip", "flip"], + "payable": false, + "returnType": null, + "selector": "0xad931d5f" + }, + { + "args": [], + "docs": [], + "mutates": false, + "name": ["Flip", "get"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 1 + }, + "selector": "0x6b3549bc" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "bool" + } + } + ] +} diff --git a/.api-contract/src/test/contracts/ink/v0/trait-flipper.wasm b/.api-contract/src/test/contracts/ink/v0/trait-flipper.wasm new file mode 100644 index 00000000..53720c42 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v0/trait-flipper.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v1/flipper.contract.json b/.api-contract/src/test/contracts/ink/v1/flipper.contract.json new file mode 100644 index 00000000..73bcff81 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v1/flipper.contract.json @@ -0,0 +1,89 @@ +{ + "source": { + "hash": "0x7c5ff777929185b2350605e8f0163bfa25781097ad9ee2704c67021962720135", + "language": "ink! 3.0.0-rc5", + "compiler": "rustc 1.57.0-nightly", + "wasm": "0x0061736d01000000012b0860027f7f0060037f7f7f0060017f017f60000060037f7f7f017f60017f0060047f7f7f7f0060017f017e02880106057365616c30107365616c5f6765745f73746f726167650004057365616c30107365616c5f7365745f73746f726167650001057365616c30167365616c5f76616c75655f7472616e736665727265640000057365616c300a7365616c5f696e7075740000057365616c300b7365616c5f72657475726e000103656e76066d656d6f727902010210030e0d020002000100070603020304050608017f01418080040b071102066465706c6f79000d0463616c6c000f0ac60f0dc60101017f230041406a22012400200141206a200041186a290300370300200141186a200041106a290300370300200141106a200041086a2903003703002001420137032820012000290300370308200141808001360234200141808004360230200141808001360238200141086a41808004200141386a10002100200141306a2001280238100602400240024020000e0402000001000b000b000b20012001290330370338200141386a100741ff017122004102470440200141406b240020004100470f0b000b3101017f230041106b22022400200241086a200120002802002000280204100c20002002290308370200200241106a24000b4201027f230041106b22012400200141086a2000100a20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b8d0101017f230041406a22022400200241206a200141186a290300370300200241186a200141106a290300370300200241106a200141086a2903003703002002420137032820022001290300370308200241386a41808001360200200241808004360234200241003602302002200241306a20001009200241086a200228020020022802041001200241406b24000b9d0101037f230041106b22032400200141086a220428020021052004410036020020012802042104200141808004360204200320023a000f2003410120042005100c024020032802044101460440200328020020032d000f3a0000200141003602082001418080043602042005450d012001200541016b3602082001200441016a3602042000410136020420002004360200200341106a24000f0b000b000b3f01027f230041106b22022400200241003a000f200020012002410f6a410110102201047f41000520022d000f0b3a0001200020013a0000200241106a24000b900102027f017e230041106b220124002001420037030841042102027f02400340200241084604402001410436020820012903082203a741044f0d02000b20012000100a20012d0000410171450440200141086a20026a20012d00013a0000200241016a21020c010b0b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b1a00200120034d044020002001360204200020023602000f0b000b11004100100e41ff01714108470440000b0ba80602057f017e230041306b22012400027f02400240200045044020014180800136020c200141808004360208200141086a10112001200129030837031041032100200141106a100b2206a722034101710d02200642ffffffffff1f832206422088a721022006421888a721002006421088a721040240200341087641ff01712203419b01470440200341ed01460d010c030b200441ff017141ae0147200041ff0171419d014772200241de0047720d024103200141106a100741ff0171220020004102461b21000c030b200441ff017141cb0047200041ff0171419d0147720d01410221002002411b470d010c020b20014180800136020c200141808004360208200141086a101120012001290308370310410121020240200141106a100b2206a722054101710440410121000c010b200642ffffffffff1f832206422088a721042006421888a721002006421088a721030240200541087641ff01712205412f470440200541e30047200341ff0171413a4772200041ff017141a50147720d0141002100200441d100470d010c020b200341ff017141860147200041ff017141db0047720d004100210041002102200441d901460d010b41012100410121020b410620000d021a20020440200141286a4200370300200141206a4200370300200141186a420037030020014200370310200141106a1005410173200141106a100841080c030b200141286a4200370300200141206a4200370300200141186a4200370300200142003703102001200141106a10053a0008230041106b220024002000200141086a36020c2000410c6a2802002d00002101230041206b22002400200041186a4180800136020020004180800436021420004100360210200041086a200041106a2001100941002000280208200028020c1004000b410321000b4106200041034622020d001a4106200020021b22004102470440200141286a4200370300200141206a4200370300200141186a4200370300200142003703102000410171200141106a100841080c010b200141286a4200370300200141206a4200370300200141186a4200370300200142003703104100200141106a100841080b200141306a24000ba30102037f017e230041206b2200240020004180800136020420004180800436020020004180800136021041808004200041106a100220002000280210100620002000290300370308200041186a22014200370300200042003703100240200041086a200041106a411010102202047e4200052000290310210320012903000b20038450452002724504404101100e41ff01714108470d01200041206a24000f0b000b000b5701057f200028020422042002492205450440200028020022062107034020022003470440200120036a200320076a2d00003a0000200341016a21030c010b0b2000200420026b3602042000200220066a3602000b20050b3301017f230041106b220124002001200028020436020c20002802002001410c6a10032000200128020c1006200141106a24000b" + }, + "contract": { + "name": "flipper", + "version": "3.0.0-rc5", + "authors": ["Parity Technologies "] + }, + "V1": { + "spec": { + "constructors": [ + { + "args": [ + { + "name": "init_value", + "type": { + "displayName": ["bool"], + "type": 0 + } + } + ], + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "name": ["new"], + "selector": "0x9bae9d5e" + }, + { + "args": [], + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "name": ["default"], + "selector": "0xed4b9d1b" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [" Flips the current value of the Flipper's boolean."], + "mutates": true, + "name": ["flip"], + "payable": false, + "returnType": null, + "selector": "0x633aa551" + }, + { + "args": [], + "docs": [" Returns the current value of the Flipper's boolean."], + "mutates": false, + "name": ["get"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 0 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 0 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/ink/v1/index.ts b/.api-contract/src/test/contracts/ink/v1/index.ts new file mode 100644 index 00000000..b20c8916 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v1/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as flipper } from './flipper.contract.json' assert { type: 'json' }; +// A complex contract example with traits. +export { default as psp22 } from './psp22_minter_pauser.contract.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/ink/v1/psp22_minter_pauser.contract.json b/.api-contract/src/test/contracts/ink/v1/psp22_minter_pauser.contract.json new file mode 100644 index 00000000..f5ab1afb --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v1/psp22_minter_pauser.contract.json @@ -0,0 +1,1487 @@ +{ + "source": { + "hash": "0xf04668140e45f551ef324d9fea09e5adb7e8f70482ff1d216c6c4c5227a3d0ca", + "language": "ink! 3.0.0-rc6", + "compiler": "rustc 1.59.0-nightly", + "wasm": "0x0061736d01000000017e1360027f7f0060037f7f7f0060027f7f017f60047f7f7f7f0060037f7f7f017f60017f006000017f60017f017f60000060047f7f7e7e0060057f7f7f7f7f0060067f7f7f7f7e7e0060077f7f7f7f7e7e7f0060057f7f7f7e7e0060037f7f7e0060037e7e7f0060097f7f7e7f7f7f7f7f7f017f60027f7e017f60017f017e0281020b057365616c30127365616c5f6465706f7369745f6576656e740003057365616c30167365616c5f76616c75655f7472616e736665727265640000057365616c30097365616c5f63616c6c0010057365616c300b7365616c5f63616c6c65720000057365616c30147365616c5f686173685f626c616b65325f3235360001057365616c30107365616c5f7365745f73746f726167650001057365616c30127365616c5f636c6561725f73746f726167650005057365616c30107365616c5f6765745f73746f726167650004057365616c300a7365616c5f696e7075740000057365616c300b7365616c5f72657475726e000103656e76066d656d6f727902010210038c018a01040402050501030300000f01080708000005120000000000000505000d000005030b0c05010004020202020701010107000001090902010201020102000601020002000406010300000002010201020201020102000001070007000700000001000e0100010000010102000400001107000306040601030306040601030306040601030302000a0401020608017f01418080040b071102066465706c6f7900160463616c6c00180ad1f1028a010f0041034101200020012002100b1b0b6801017f230041306b22032400200341246a200241186a2900003702002003411c6a200241106a290000370200200341146a200241086a290000370200200320013602082003200229000037020c200041f8046a200341086a100c280200200341306a24004101460b960301047f230041b0016b22022400200241c8006a200141241091011a200241106a200041286a200241c8006a1057027f027f024020022802104101470440024020002903004201520d0020024198016a2203200041206a29030037030020024190016a2204200041186a29030037030020024188016a2205200041106a2903003703002002200029030837038001200241d0006a20024180016a200110692003200241e8006a2903003703002004200241e0006a2903003703002005200241d8006a29030037030020022002290350370380012002418080013602a401200241d484043602a0010240024020024180016a200241a0016a10490e0400010102010b200220022903a0013703a801200241086a200241a8016a104a2002280208450d030b000b41000c020b200241186a2802002002411c6a2802004102746a4190036a0c020b200228020c210141010b2103200241c8006a200241106a41047241341091011a410c4104104b220041013a00082000200136020420002003360200200241c8006a200010580b280200200241b0016a24000bdc0502057f027e230041a0016b22012400200141086a200041e0001091011a200141106a21030240200129030822074201520440200141f0006a220241808001360200200141d4840436026c20014100360268200141e8006a100e20014198016a220020022802003602002001200129036837039001200141e8006a20014190016a41988004100f200141e8006a41a48004411b2003101020002002280200360200200120012903683703900120014190016a41bf80044119200341216a10100c010b200141f0006a220241808001360200200141d4840436026c20014100360268200141e8006a100e20014198016a220020022802003602002001200129036837039001200141e8006a20014190016a41f08004100f200141e8006a41fc8004411c2003101120002002280200360200200120012903683703900120014190016a41988104411e200141306a10110b20014188016a2000280200360200200120012903900137038001230041206b22002400200041186a220420014180016a220241086a28020036020020002002290200220637031020004100360210200041086a200041106a2006a7101520002903082106200141e8006a220241086a2004280200360200200220002903103702002002200637020c200041206a240020014198016a200141f0006a28020022003602002001200129036837039001200141f8006a28020021042001280274210520012802940121022001200036026c200120023602680240027f20075004402000450d02200241003a0000200141013602702003200141e8006a1012200341216a200141e8006a1012200141d8006a0c010b2000450d01200241013a0000200141013602702003200141e8006a1013200141306a200141e8006a1013200141d0006a0b2200290300200041086a290300200141e8006a10142001200129036837029401200120014190016a2001280270101520052004200128020020012802041000200141a0016a24000f0b000b9a0101047f230041206b22012400200028020421042000419c8404360204200041086a22022802002103200241003602002001410336020c0240200320002802002202490d00200141003602182001200320026b3602142001200220046a3602102001410c6a200141106a105e2002200220012802186a22024b0d00200020033602082000200436020420002002360200200141206a24000f0b000be80201077f230041e0006b22032400200141086a2802002205200128020022044f04402003410036021020012802042106200341003602482003200520046b3602442003200420066a36024020022802002002280204200341406b1038200341406b20022802084115103720032003290340370214200341086a200341106a2003280248101520032802082104200328020c2102200341386a22054200370300200341306a22064200370300200341286a4200370300200342003703200240200241214f0440200341d8006a22074200370300200341d0006a22084200370300200341c8006a220942003703002003420037034020042002200341406b10042005200729030037030020062008290300370300200341286a2009290300370300200320032903403703200c010b200341206a200420021091011a0b2001200341206a1051200041086a200141086a28020036020020002001290200370200200341e0006a24000f0b000bc30201057f230041e0006b22042400200041086a2802002206200028020022054f04402004410036021020002802042107200441003602482004200620056b3602442004200520076a36024020012002200441406b10382003200441406b101220042004290340370214200441086a200441106a2004280248101520042802082102200428020c2101200441386a22034200370300200441306a22054200370300200441286a4200370300200442003703200240200141214f0440200441d8006a22064200370300200441d0006a22074200370300200441c8006a220842003703002004420037034020022001200441406b10042003200629030037030020052007290300370300200441286a2008290300370300200420042903403703200c010b200441206a200220011091011a0b2000200441206a1051200441e0006a24000f0b000bc30201057f230041e0006b22042400200041086a2802002206200028020022054f04402004410036021020002802042107200441003602482004200620056b3602442004200520076a36024020012002200441406b10382003200441406b101320042004290340370214200441086a200441106a2004280248101520042802082102200428020c2101200441386a22034200370300200441306a22054200370300200441286a4200370300200442003703200240200141214f0440200441d8006a22064200370300200441d0006a22074200370300200441c8006a220842003703002004420037034020022001200441406b10042003200629030037030020052007290300370300200441286a2008290300370300200420042903403703200c010b200441206a200220011091011a0b2000200441206a1051200441e0006a24000f0b000b230020002d000041014704402001410010460f0b200141011046200041016a200110130b08002000200110530b2a01017f230041106b2203240020032001370308200320003703002002200341101037200341106a24000b5201027f200141086a2203280200210420034100360200200128020421032001419c8404360204200220044b0440000b2001200420026b3602082001200220036a36020420002002360204200020033602000b11004100101741ff01714108470440000b0bf44002117f057e230041e00f6b22012400024002400240024002400240024002400240024020004504402001418080013602bc02200141d484043602b802200141b8026a101b200120012903b8023703a00441012100200141a0046a101c4281feffffff1f834280b6baede90b520d04200141e8016a200141a0046a101a20012802e8010d04200141f8016a290300211320012903f0012112200141900a6a200141a0046a101d20012802900a4101460d04200141e0036a2001419c0a6a2200280200360200200120012902940a3703d803200141900a6a200141a0046a101d20012802900a4101460d01200141c8046a2000280200360200200120012902940a3703c004200141e0016a200141a0046a101e4101210020012d00e0014101710d0420012d00e1012104200141b8036a200141e0036a280200360200200141e0026a200141c8046a280200360200200120012903d8033703b003200120012903c0043703d802410021000c040b2001418080013602bc02200141d484043602b802200141b8026a101b200120012903b802370380034101210020014180036a101c2212a722024101710d02201242ffffffffff1f832212422088a721032012421888a721052012421088a721060240024002400240024002400240200241087641ff0171220241e5006b0e03010905000b0240024002400240024002400240200241fc016b0e03010f08000b20024116460d04200241db01460d022002413d470440200241cd00460d06200241d400460d04200241f2004704402002418101460d0b2002419601460d03200241b201460d0a20024134470d1041002102200641ff0171412047200541ff017141db0047720d10200341e501460d0d0c100b41012102200641ff017141f10047200541ff017141b70147720d0f2003418201460d0c0c0f0b200641ff0171412647200541ff0171411b47720d0e41022102200341d401460d0b0c0e0b200641ff0171413c47200541ff017141f5004772200341d40147720d0d200141900a6a20014180036a101f20012d00900a4101460d0d200141d8046a2200200141a90a6a290000370300200141d0046a2204200141a10a6a290000370300200141c8046a2207200141990a6a290000370300200120012900910a3703c004200141d0006a20014180036a101a2001290350a70d0c200141e0006a290300211220012903582113200141f0036a2000290300370300200141e8036a2004290300370300200141e0036a2007290300370300200120012903c0043703d803200120133703a004200120123703a804410321020c0a0b200641ff017141d60147200541ff017141b5014772200341fa0047720d0c200141900a6a20014180036a101f20012d00900a4101460d0c200141d8046a2200200141a90a6a290000370300200141d0046a2204200141a10a6a290000370300200141c8046a2207200141990a6a290000370300200120012900910a3703c004200141e8006a20014180036a101a2001290368a70d0b200141f8006a290300211220012903702113200141f0036a2000290300370300200141e8036a2004290300370300200141e0036a2007290300370300200120012903c0043703d803200120133703a004200120123703a804410421020c090b200641ff0171412047200541ff017141f9014772200341f50147720d0b200141900a6a20014180036a101f20012d00900a4101460d0b200141d8046a200141a90a6a290000370300200141d0046a200141a10a6a290000370300200141c8046a200141990a6a290000370300200120012900910a3703c00420014180016a20014180036a101a2001280280010d0a20014190016a29030021122001290388012113200141900a6a20014180036a102020012802900a2204450d0a200141e0036a200141c8046a290300370300200141e8036a200141d0046a290300370300200141f0036a200141d8046a290300370300200141b0046a2012370300200120012903c0043703d803200120133703a804200120012902940a3703a004410521020c080b200641ff017141b30147200541ff017141c7014772200341ee0047720d0a200141900a6a20014180036a101f20012d00900a4101460d0a200141d8046a200141a90a6a290000370300200141d0046a200141a10a6a290000370300200141c8046a200141990a6a290000370300200120012900910a3703c004200141900a6a20014180036a101f20012d00900a4101460d092001419a026a20012d00930a3a0000200141e0026a200141a00a6a290300370300200141e8026a200141a80a6a290300370300200120012f00910a3b0198022001200141980a6a2903003703d802200141b00a6a2d0000210720012802940a210420014198016a20014180036a101a2001280298010d09200141a8016a290300211220012903a0012113200141900a6a20014180036a102020012802900a2210450d09200141e0036a200141c8046a290300370300200141e8036a200141d0046a290300370300200141f0036a200141d8046a29030037030020014182026a2001419a026a2d00003a0000200141a8046a200141e0026a290300370300200141b0046a200141e8026a290300370300200120012903c0043703d803200120012f0198023b018002200120012903d8023703a00420012902940a2116410621020c070b200641ff0171412d47200541ff017141f80147720d0941072102200341c201460d060c090b200641ff017141c70047200541ff017141d90147722003412147720d08200141900a6a20014180036a101f20012d00900a4101460d08200141d8046a2200200141a90a6a290000370300200141d0046a2204200141a10a6a29000037030041082102200141c8046a2207200141990a6a290000370300200120012900910a3703c004200141900a6a20014180036a101f20012d00900a4101460d0720014182026a20012d00930a3a0000200141a8046a200141a00a6a290300370300200141b0046a200141a80a6a290300370300200141e0036a2007290300370300200141e8036a2004290300370300200141f0036a2000290300370300200120012f00910a3b0180022001200141980a6a2903003703a004200120012903c0043703d803200141b00a6a2d0000210720012802940a21040c050b200641ff017141e80047200541ff0171413847722003412f47720d07200141900a6a20014180036a101f20012d00900a4101460d07200141f0036a200141a90a6a290000370300200141e8036a200141a10a6a29000037030041092102200141e0036a200141990a6a290000370300200120012900910a3703d8030c040b200641ff017141cb0147200541ff017141d7004772200341d50147720d06200141900a6a20014180036a101f20012d00900a4101460d06200141d8046a2200200141a90a6a290000370300200141d0046a2204200141a10a6a290000370300200141c8046a2207200141990a6a290000370300200120012900910a3703c004200141b0016a20014180036a101a20012903b001a70d05200141c0016a290300211220012903b8012113200141f0036a2000290300370300200141e8036a2004290300370300200141e0036a2007290300370300200120012903c0043703d803200120133703a004200120123703a804410a21020c030b200641ff0171410f47200541ff0171411b4772200341bd0147720d05200141900a6a20014180036a101f20012d00900a4101460d05200141d8046a2200200141a90a6a290000370300200141d0046a2204200141a10a6a290000370300200141c8046a2207200141990a6a290000370300200120012900910a3703c004200141c8016a20014180036a101a20012903c801a70d04200141d8016a290300211220012903d0012113200141f0036a2000290300370300200141e8036a2004290300370300200141e0036a2007290300370300200120012903c0043703d803200120133703a004200120123703a804410b21020c020b200641ff017141e00147200541ff017141c60147720d04410c210220034104460d010c040b200641ff017141e10047200541ff017141e60047720d03410d2102200341c900470d030b200141c8036a200141f0036a290300370300200141c0036a200141e8036a290300370300200141b8036a200141e0036a290300370300200141a2036a20014182026a2d00003a000020014188046a200141a8046a29030037030020014190046a200141b0046a290300370300200120012903d8033703b003200120012f0180023b01a003200120012903a0043703800441002100200221080c020b410121000c020b410121000b20000d01200141d0026a2200200141c8036a2205290300370300200141c8026a2202200141c0036a2206290300370300200141c0026a2203200141b8036a22092903003703004102210b200141b6026a200141a2036a2d00003a0000200141a0026a220c20014188046a220d290300370300200141a8026a220e20014190046a220f290300370300200120012903b0033703b802200120012f01a0033b01b40220012001290380043703980220014190026a2211200e29030037030020014188026a220a200c2903003703002001200129039802370380020240024002400240024002400240024002400240024002400240024002400240200841016b0e0d0102030405060708090a0b0c0d000b200141d8046a4200370300200141d0046a4200370300200141c8046a4200370300200142003703c004200141900a6a200141c0046a1021200141d8036a200141cc0f6a1022200141d8036a1023000b200141d8046a4200370300200141d0046a4200370300200141c8046a4200370300200142003703c004200141900a6a200141c0046a10212001200141d80f6a2d00003a00900a230041106b220024002000200141900a6a36020c2000410c6a2802002102230041206b22002400200041186a41808001360200200041d4840436021420004100360210200041086a200041106a200210602000280208200028020c105f000b200141d8046a4200370300200141d0046a4200370300200141c8046a4200370300200142003703c004200141900a6a200141c0046a1021200141d8036a200141c00f6a1022200141d8036a1023000b200a29030021122001290380022113200141f0036a4200370300200141e8036a4200370300200141e0036a4200370300200142003703d803200141900a6a200141d8036a1021024020012d00dc0f450440200141c0046a1024200141900a6a4196e4ea6c200141c0046a100a220041ff01714103470440200141b0036a200010250c020b200141d8046a200141d0026a290300370300200141d0046a200141c8026a290300370300200141c8046a200141c0026a290300370300200120012903b8023703c004200141b0036a200141900a6a200141c0046a2013201210260c010b200141b0036a410010270b200141900a6a200141d8036a1028200141b0036a1029000b200a290300211320012903800220014198046a4200370300200f4200370300200d42003703002001420037038004200141900a6a20014180046a1021200141a0046a1024200141f0026a200141b8046a2208290300370300200141e8026a200141b0046a2204290300370300200141e0026a200141a8046a2207290300370300200120012903a0043703d802200520002903003703002006200229030037030020092003290300370300200120012903b8023703b003200141f0036a2008290300370300200141e8036a2004290300370300200141e0036a2007290300370300200120012903a0043703d803200141d8046a2000290300370300200141d0046a2002290300370300200141c8046a2003290300370300200120012903b8023703c0042001200141900a6a200141d8036a200141c0046a102a200129030022147c221520145422002000ad2013200141086a29030022127c7c221320125420122013511b0d0e20014180036a200141900a6a200141d8026a200141b0036a20152013102b20012802800322004106470440200141cc046a2001418c036a28020036020020012001290284033702c4040b200120003602c004200141900a6a20014180046a1028200141c0046a1029000b201129030021122001290388022113200141f0026a4200370300200141e8026a4200370300200141e0026a4200370300200142003703d802200141900a6a200141d8026a1021200141b0036a1024200141f0036a2005290300370300200141e8036a2006290300370300200141e0036a2009290300370300200120012903b0033703d803200141d8046a2000290300370300200141d0046a2002290300370300200141c8046a2003290300370300200120012903b8023703c0042001200436028004200120012903800237028404200141a0046a200141900a6a200141d8036a200141c0046a2013201220014180046a102c0c0e0b200141f0026a4200370300200141e8026a4200370300200141e0026a4200370300200142003703d802200141900a6a200141d8026a1021200141b0036a1024200141f0036a2000290300370300200141e8036a2002290300370300200141e0036a2003290300370300200120012903b8023703d803200141d8046a2005290300370300200141d0046a2006290300370300200141c8046a2009290300370300200120012903b0033703c004200141106a200141900a6a200141d8036a200141c0046a102a200129031022152013542200200141186a290300221420125420122014511b450440200141f0036a2202200141d0026a2208290300370300200141e8036a2203200141c8026a2205290300370300200141e0036a2206200141c0026a2209290300370300200120012903b8023703d803200141cf046a200141a0026a290300370000200141d7046a200141a8026a2903003700002001200141b6026a2d00003a00c204200120012f01b4023b01c004200120043600c30420012001290398023700c704200120073a00df0420012016370284042001201036028004200141a0046a200141900a6a200141d8036a200141c0046a2013201220014180046a102c024020012802a00422044106460440200220082903003703002003200529030037030020062009290300370300200120012903b8023703d803200141d8046a200141c8036a290300370300200141d0046a200141c0036a290300370300200141c8046a200141b8036a290300370300200120012903b0033703c004201520137d2213201556201420127d2000ad7d221220145620122014511b0d0f200141a0046a200141900a6a200141d8036a200141c0046a20132012102b20012802a00422044106470d01200141063602c0040c0b0b0c090b0c080b200141023602c0040c080b200141d8046a4200370300200141d0046a4200370300200141c8046a4200370300200142003703c004200141900a6a200141c0046a102120012903900a21122001200141980a6a2903003703980a200120123703900a200141900a6a102d000b200141f0026a2000290300370300200141e8026a2002290300370300200141e0026a2003290300370300200141fa026a200141b6026a2d00003a0000200120012903b8023703d802200120012f01b4023b01f80220014198036a420037030020014190036a420037030020014188036a42003703002001420037038003200141900a6a20014180036a1021200141b0036a200141d8026a41231091011a200141f0036a2000290300370300200141e8036a2002290300370300200141e0036a2003290300370300200141fa036a200141d2036a2d00003a0000200120012903b8023703d803200120012f00d0033b01f803200141c0046a200141d8036a41231091011a20014198046a2000290300370300200f2002290300370300200d2003290300370300200120012903b80237038004200141af046a200c290300370000200141b7046a200e2903003700002001200141e2046a2d00003a00a204200120012f01e0043b01a004200120043600a30420012001290398023700a704200120073a00bf04200141206a200141900a6a20014180046a200141a0046a102a2001200141286a2903003703a803200120012903203703a003200141a0036a102d000b200141f0036a4200370300200141e8036a4200370300200141e0036a4200370300200142003703d803200141900a6a200141d8036a1021200141d8046a2000290300370300200141d0046a2002290300370300200141c8046a2003290300370300200120012903b8023703c004200141306a200141900a6a200141c0046a102e2001200141386a2903003703b803200120012903303703b003200141b0036a102d000b200a29030021122001290380022113200141f0026a4200370300200141e8026a4200370300200141e0026a4200370300200142003703d802200141900a6a200141d8026a1021200141b0036a1024200141f0036a2005290300370300200141e8036a2006290300370300200141e0036a2009290300370300200120012903b0033703d803200141d8046a2000290300370300200141d0046a2002290300370300200141c8046a2003290300370300200120012903b8023703c004200141406b200141900a6a200141d8036a200141c0046a102a0240200129034022152013542200200141c8006a290300221420125420122014511b450440200141f0036a200141c8036a290300370300200141e8036a200141c0036a290300370300200141e0036a200141b8036a290300370300200120012903b0033703d803200141d8046a200141d0026a290300370300200141d0046a200141c8026a290300370300200141c8046a200141c0026a290300370300200120012903b8023703c004200141a0046a200141900a6a200141d8036a200141c0046a201520137d201420127d2000ad7d102b20012802a004220b4106460440200141063602c0040c020b200141cc046a200141ac046a280200360200200120012902a4043702c4040b2001200b3602c0040b0c0a0b200a29030021122001290380022113200141f0026a4200370300200141e8026a4200370300200141e0026a4200370300200142003703d802200141900a6a200141d8026a1021200141b0036a1024200141f0036a2005290300370300200141e8036a2006290300370300200141e0036a2009290300370300200120012903b0033703d803200141d8046a2000290300370300200141d0046a2002290300370300200141c8046a2003290300370300200120012903b8023703c004200141a0046a200141900a6a200141d8036a200141c0046a20132012102b0c080b200141f0036a4200370300200141e8036a4200370300200141e0036a4200370300200142003703d803200141900a6a200141d8036a1021200141c0046a10240240200141900a6a41e6dfa6e704200141c0046a100a220041ff01714103470440200141d8026a200010250c010b02400240024020012d00dc0f450440200141013a00dc0f200141c0046a10240c010b200141b0036a4100102720012802b00322004106470d010b410621000c010b200141e4026a200141bc036a280200360200200120012902b4033702dc020b200120003602d8020b0c090b200141f0036a4200370300200141e8036a4200370300200141e0036a4200370300200142003703d803200141900a6a200141d8036a1021200141c0046a10240240200141900a6a41e6dfa6e704200141c0046a100a220041ff01714103470440200141d8026a200010250c010b02400240024020012d00dc0f0440200141003a00dc0f200141c0046a10240c010b200141b0036a4101102720012802b00322004106470d010b410621000c010b200141e4026a200141bc036a280200360200200120012902b4033702dc020b200120003602d8020b0c080b200141cc046a200141ac046a280200360200200120012902a4043702c404200120043602c0040b0c050b20000d0020014188046a200141b8036a2200280200220236020020014188036a200141e0026a22082802002203360200200120012903b003221437038004200120012903d802221537038003200141a8046a2002360200200141b40f6a4200370200200141880f6a4200370300200141fc0e6a4200370200200141d00e6a4200370300200141980a6a4200370300200141a00a6a4200370300200141e40c6a4200370200200141ac0c6a4200370200200141f00b6a4200370300200141bc0b6a4200370200200141840b6a4200370200200141c80a6a4200370300200141d80f6a41003a0000200141cc0f6a4100360200200141b80c6a4200370300200141800c6a4200370300200141f80b6a4100360200200141900b6a4200370300200141d80a6a4200370300200141d00a6a4100360200200120143703a00420082003360200200142003703900a200141003a00dc0f200141003602c00f200142003703c80b200120153703d802200141c80e6a4100360200200141c00e6a4200370300200141980e6a220242003703002001418c0e6a4200370200200141e00d6a4200370300200141d40d6a4200370200200141a80d6a4200370300200141a00d6a4100360200200141980d6a4200370300200142003703f00c200141b0036a1024200141f0036a200141c8036a2208290300370300200141e8036a200141c0036a2203290300370300200141e0036a2000290300370300200120012903b0033703d803200141900a6a4100200141d8036a100b450440200141dc046a2008290300370200200141d4046a2003290300370200200141cc046a2000290300370200200120012903b0033702c404200141003602c0042002200141c0046a102f0b200141c0046a1024200141900a6a4196e4ea6c200141c0046a103041ff01714103470d02200141c0046a1024200141900a6a41e6dfa6e704200141c0046a103041ff01714103470d02200141cc0f6a20012903d80237020041082100200141c80f6a200141a8046a280200360200200141d40f6a200141e0026a280200360200200120012903a0043703c00f200120043a00d80f200141c0046a1024200141d8036a200141900a6a200141c0046a20122013102620012802d8034106470d02200141c0046a200141900a6a41d0051091011a200141a80a6a4200370300200141a00a6a4200370300200141980a6a4200370300200142003703900a200141c0046a200141900a6a10280c010b410621000b200141e00f6a240020000f0b000b20012802a00422004106470440200141cc046a200141ac046a280200360200200120012902a4043702c4040b200120003602c0040b200141900a6a200141d8026a1028200141c0046a1029000b200141900a6a200141d8036a1028200141d8026a1029000b880101017f230041306b22002400200041808001360224200041d4840436022020004180800136022841d48404200041286a1001200041206a2000280228101920002000290320370328200041086a200041286a101a02402000290308a70d002000290310200041186a2903008450450d004101101741ff01714108470d00200041306a24000f0b000b3401017f230041106b22022400200241086a410020012000280200200028020410900120002002290308370200200241106a24000b5e02017f037e027e4201200128020422024110490d001a2001200241106b36020420012001280200220141106a360200200141086a29000021032001290000210442000b21052000200437030820002005370300200041106a20033703000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10082000200128020c1019200141106a24000b900102027f017e230041106b220124002001420037030841042102027f02400340200241084604402001410436020820012903082203a741044f0d02000b20012000101e20012d0000410171450440200141086a20026a20012d00013a0000200241016a21020c010b0b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b7d01027f230041206b22022400200241086a2001103a41012103024020022d00084101710d000240024020022d00090e020001020b41002103200041003602040c010b200241106a2001103b20022802102201450d00200041086a200229021437020020002001360204410021030b20002003360200200241206a24000b3801017f230041106b22022400200241086a2001103a20022d00082101200020022d00093a0001200020014101713a0000200241106a24000b8a0302067f017e230041406a22022400200241186a41047221042000027f024003402003412047044020022001101e20022d00004101710d02200320046a20022d00013a00002002200341016a22033602180c010b0b200241126a2201200241256a2d00003a00002002410e6a22032002412c6a2d00003a00002002410a6a2204200241336a2d00003a0000200220022f011c3b0114200220022d001e3a00162002200241236a2f00003b011020022002412a6a2f01003b010c2002200241316a2f00003b0108200241346a29020021082002412d6a2800002105200241266a2801002106200228001f2107200041036a20022d00163a0000200020022f01143b0001200041046a2007360000200041086a20022f01103b00002000410a6a20012d00003a00002000410b6a20063600002000410f6a20022f010c3b0000200041116a20032d00003a0000200041126a2005360000200041166a20022f01083b0000200041186a20042d00003a0000200041196a200837000041000c010b41010b3a0000200241406b24000b810302067f017e230041306b22022400200241186a2001103a024020022d00184101710d00024002400240024020022d0019220341037122054103470440200541016b0e020203010b200341ff017141044f0d04200241106a2001104a20022802100d042002280214220341ffffffff034b0d030c040b200341fc017141027621030c020b200220033a0025200241013a002420022001360220200241003b012c200241206a2002412c6a41021075220545044020022f012c21030b2005200341ffff037141ff014d720d02200341fcff037141027621030c010b200220033a0025200241013a0024200220013602202002410036022c200241206a2002412c6a410410750d01200228022c220341808004490d01200341027621030b200128020422052003490d00200241086a20034101103c200235020c2108200228020822042001280200220620031091012001200520036b3602042001200320066a360200450d0020002003ad4220862008843702040b20002004360200200241306a24000bfd0802027f057e230041e0006b22022400200241406b200141186a290300370300200241386a200141106a290300370300200241306a200141086a2903003703002002420037034820022001290300370328200241286a10612101200241808001360254200241d484043602500240024002402001200241d0006a10490d0020022002290350370358200241106a200241d8006a101a2002290310a70d00200241206a290300210420022903182105200041106a200241286a1062200041d0006a200241286a10632201290300370300200041e8006a200141186a290300370300200041e0006a200141106a290300370300200041d8006a200141086a290300370300200041f4006a4200370200200041c8006a420137030020004188016a200241286a10612201290300370300200041a0016a200141186a29030037030020004198016a200141106a29030037030020004190016a200141086a290300370300200041ac016a420037020020004180016a4201370300200041b8016a200241286a1062200041f8016a200241286a1063220129030037030020004190026a200141186a29030037030020004188026a200141106a29030037030020004180026a200141086a2903003703002000419c026a4200370200200041f0016a4201370300200041b0026a200241286a10612201290300370300200141086a2903002106200141106a2903002107200141186a29030021082000200437030820002005370300200041c8026a2008370300200041c0026a2007370300200041b8026a2006370300200041d4026a4200370200200041a8026a4201370300200041b0056a200241286a1064200041bc056a200241286a1064200041c8056a200241286a10653a0000200241286a1061200241808001360254200241d48404360250200241d0006a10490d0020022002290350370358200241086a200241d8006a103a20022d00084101710d0020022d000922030e020201000b000b410121030b200041e0026a200241286a1062200041a0036a200241286a10632201290300370300200041b8036a200141186a290300370300200041b0036a200141106a290300370300200041a8036a200141086a290300370300200041c4036a420037020020004198036a4201370300200041d8036a200241286a10612201290300370300200041f0036a200141186a290300370300200041e8036a200141106a290300370300200041e0036a200141086a290300370300200041fc036a4200370200200041d0036a420137030020004188046a200241286a1062200041c8046a200241286a10632201290300370300200041e0046a200141186a290300370300200041d8046a200141106a290300370300200041d0046a200141086a290300370300200041ec046a4200370200200041c0046a420137030020004180056a200241286a1061220129030037030020004198056a200141186a29030037030020004190056a200141106a29030037030020004188056a200141086a290300370300200020033a00cc05200041a4056a4200370200200041f8046a4201370300200241e0006a24000b2501017f20012802002202450440200041003602000f0b20002002200141086a28020010720b960201067f230041106b220124002001200036020c2001410c6a2802002100230041206b22022400200241186a41808001360200200241d4840436021420024100360210200241086a2106230041206b22012400200241106a220441086a2203280200210520034100360200200428020421032004419c8404360204200120053602142001200336021002400240027f20002802004504402005450d02200341003a000041010c010b2005450d01200341013a0000200141013602182000200141106a1052200128021421052001280210210320012802180b21002004200536020820042003360204200141086a20042000101520062001290308370300200141206a24000c010b000b2002280208200228020c105f000bf90101037f230041e0006b2201240020014180800136022c200141d4840436022820014180800136023041d48404200141306a1003200141286a2001280230101920012001290328370358200141306a200141d8006a101f20012d003022034101470440200141106a2001413a6a290100370300200141186a200141c2006a2901003703002001411f6a200141c9006a2900003700002001200129013237030820012d003121020b20034101460440000b200020023a000020002001290308370001200041096a200141106a290300370000200041116a200141186a290300370000200041186a2001411f6a290000370000200141e0006a24000b4e000240024002400240200141ff017141016b0e020102000b200041046a41f38104411110720c020b200041046a41e48104410f10720c010b200041046a41d38104411110720b200041003602000b840302077f037e230041e0006b22052400410321060240200020021035047f410305200541d0006a2206200241186a2200290000370300200541c8006a2207200241106a2208290000370300200541406b2209200241086a220a2900003703002005200229000037033820052001200541386a102e2005290300220c20037c220e200c54220b200bad200541086a290300220c20047c7c220d200c54200c200d511b0d0120062000290000370300200720082900003703002009200a29000037030020052002290000370338200141106a200541386a200e200d103d2001290300220c20037c220e200c5422062006ad200141086a290300220c20047c7c220d200c54200c200d511b0d012001200e3703002001200d370308200541003a0010200541d1006a200241186a290000370000200541c9006a200241106a290000370000200541c1006a200241086a290000370000200541013a003820052002290000370039200541106a200541386a20032004103e41060b360200200541e0006a24000f0b000b3101017f200041046a210202402001450440200241908204410910720c010b200241848204410c10720b200041003602000bd41f01087f230041b0016b22022400200241e0006a200141186a290300370300200241d8006a200141106a290300370300200241d0006a200141086a2903003703002002420037036820022001290300370348200241c8006a1061200241f8006a41808001360200200241d4840436027420024100360270200241406b200241f0006a20001036200228024020022802441005200041106a200241c8006a1066200241c8006a10632109200041f8006a2802004100200041f4006a28020022031b21072003454101742108200041f0006a2802002101034002400240200704400240024020080e03000103010b034020010440200141016b2101200328026021030c010b0b4101210841002105410021010b200741016b21072005210620032104034020042f015e20064d044020042802002203450d032001200141016a22014b0d0320042f015c2106200321040c010b0b200641016a22052006492103200145044020030d02200421030c030b20030d01200420054102746a41e0006a21034101210503402003280200210320012005460440410021050c0405200541016a2105200341e0006a21030c010b000b000b200241c8006a10612109200041b0016a2802004100200041ac016a28020022041b21072004454101742108200041a8016a280200210103400240200704400240024020080e03000105010b034020010440200141016b210120042802940321040c010b0b4101210841002103410021010b200741016b2107034020042f013220034d044020042802002205450d052001200141016a22014b0d0520042f01302103200521040c010b0b200341016a22062003492105200145044020050d04200421050c020b20050d03200420064102746a4194036a21054101210603402005280200210520012006460440410021060c0305200641016a210620054194036a21050c010b000b000b200041b8016a200241c8006a1066200241c8006a10632109200041a0026a28020041002000419c026a28020022031b2107200345410174210820004198026a280200210103400240200704400240024020080e03000107010b034020010440200141016b2101200328026021030c010b0b4101210841002105410021010b200741016b21072005210620032104034020042f015e20064d044020042802002203450d072001200141016a22014b0d0720042f015c2106200321040c010b0b200641016a22052006492103200145044020030d06200421030c020b20030d05200420054102746a41e0006a21034101210503402003280200210320012005460440410021050c0305200541016a2105200341e0006a21030c010b000b000b200241c8006a10612109200041d8026a2802004100200041d4026a28020022041b21072004454101742108200041d0026a280200210103400240200704400240024020080e03000109010b034020010440200141016b210120042802f40521040c010b0b4100210141012108410021030b200741016b2107034020042f013220034d044020042802002205450d092001200141016a22014b0d0920042f01302103200521040c010b0b200341016a22062003492105200145044020050d08200421050c020b20050d07200420064102746a41f4056a21054101210603402005280200210520012006460440410021060c0305200641016a2106200541f4056a21050c010b000b000b200041b0056a200241c8006a1067200041bc056a200241c8006a1067200041c8056a200241c8006a1068200241c8006a1061200241003602a001200242808001370274200241d48404360270200220002d00cc053a009001200241f0006a20024190016a41011037200220022903703702a401200241286a200241a0016a200228027810152002280228200228022c1005200041e0026a200241c8006a1066200241c8006a10632109200041c8036a2802004100200041c4036a28020022031b21072003454101742108200041c0036a280200210103400240200704400240024020080e0300010b010b034020010440200141016b2101200328026021030c010b0b4100210141012108410021050b200741016b21072005210620032104034020042f015e20064d044020042802002203450d0b2001200141016a22014b0d0b20042f015c2106200321040c010b0b200641016a22052006492103200145044020030d0a200421030c020b20030d09200420054102746a41e0006a21034101210503402003280200210320012005460440410021050c0305200541016a2105200341e0006a21030c010b000b000b200241c8006a1061210920004180046a2802004100200041fc036a28020022031b21072003454101742108200041f8036a280200210103400240200704400240024020080e0300010d010b034020010440200141016b2101200328026021030c010b0b4100210141012108410021050b200741016b21072005210620032104034020042f015e20064d044020042802002203450d0d2001200141016a22014b0d0d20042f015c2106200321040c010b0b200641016a22052006492103200145044020030d0c200421030c020b20030d0b200420054102746a41e0006a21034101210503402003280200210320012005460440410021050c0305200541016a2105200341e0006a21030c010b000b000b20004188046a200241c8006a1066200241c8006a10632109200041f0046a2802004100200041ec046a28020022031b21072003454101742108200041e8046a280200210103400240200704400240024020080e0300010f010b034020010440200141016b2101200328026021030c010b0b4100210141012108410021050b200741016b21072005210620032104034020042f015e20064d044020042802002203450d0f2001200141016a22014b0d0f20042f015c2106200321040c010b0b200641016a22052006492103200145044020030d0e200421030c020b20030d0d200420054102746a41e0006a21034101210503402003280200210320012005460440410021050c0305200541016a2105200341e0006a21030c010b000b000b200241c8006a10612109200041a8056a2802004100200041a4056a28020022031b21072003454101742108200041a0056a280200210103400240200704400240024020080e03000111010b034020010440200141016b210120032802c00321030c010b0b4100210141012108410021050b200741016b21072005210620032104034020042f01be0320064d044020042802002200450d112001200141016a22014b0d1120042f01bc032106200021040c010b0b200641016a22052006492100200145044020000d10200421030c020b20000d0f200420054102746a41c0036a21034101210503402003280200210320012005460440410021050c0305200541016a2105200341c0036a21030c010b000b000b200241b0016a24000f0b200241f0006a20092004200641246c6a41046a1069200420064102746a4190036a28020022002d00082101200041013a0008024020014101710d0020002802004101470440200241f0006a10060c010b20024100360290012002428080013702a401200241d484043602a0012000280204200241a0016a106a200220022903a00137029401200241086a20024190016a20022802a8011015200241f0006a2002280208200228020c10050b410021010c000b000b200241f0006a2009200420064102746a220141046a350200106b200141306a28020022012d00282104200141013a0028024020044101710d00200128020022064102460440200241f0006a10060c010b200241d484043602940120024100360290012002418080013602a401200241d484043602a001200141046a210402402006410147044041d4840441003a0000200241013602a8012004280200200141086a280200200241a0016a106c0c010b41d4840441013a0000200241013602a8012004200241a0016a106d0b200220022903a00137029401200241106a20024190016a20022802a8011015200241f0006a2002280210200228021410050b410021010c000b000b200241f0006a2009200420064102746a220141046a1048200141306a28020022012d000c2104200141013a000c024020044101710d0020012802004101470440200241f0006a10060c010b20024100360290012002428080013702a401200241d484043602a0012001280204200241a0016a106a200141086a280200200241a0016a106a200220022903a00137029401200241186a20024190016a20022802a8011015200241f0006a2002280218200228021c10050b410021010c000b000b200241f0006a2009200420064102746a220141046a350200106b200141306a28020022012d000c2104200141013a000c024020044101710d00200128020022044102460440200241f0006a10060c010b200241d484043602940120024100360290012002418080013602a401200241d484043602a00102402004410147044041d4840441003a0000200241013602a801200141046a280200200141086a280200200241a0016a106c0c010b41d4840441013a0000200241013602a8012001280204200241a0016a106a0b200220022903a00137029401200241206a20024190016a20022802a8011015200241f0006a2002280220200228022410050b410021010c000b000b200241f0006a2009200420034106746a41346a106e200420034102746a41046a280200200241f0006a106f4100210120062103200521040c000b000b200241f0006a2009200420064102746a220141046a350200106b200141306a28020022012d00442104200141013a0044024020044101710d0020012d000022044102460440200241f0006a10060c010b200241d484043602940120024100360290012002418080013602a401200241d484043602a00102402004410147044041d4840441003a0000200241013602a801200141046a280200200141086a280200200241a0016a106c0c010b41d4840441013a0000200241013602a801200141016a200241a0016a10700b200220022903a00137029401200241306a20024190016a20022802a8011015200241f0006a2002280230200228023410050b410021010c000b000b200241f0006a2009200420034105746a41346a1071200420034102746a41046a280200200241f0006a106f4100210120052104200621030c000b000b000b200241f0006a2009200420064102746a220141046a350200106b200141306a28020022012d00242104200141013a0024024020044101710d0020012d000022044102460440200241f0006a10060c010b200241d484043602940120024100360290012002418080013602a401200241d484043602a00102402004410147044041d4840441003a0000200241013602a801200141046a280200200141086a280200200241a0016a106c0c010b41d4840441013a0000200241013602a801200141016a200241a0016a10130b200220022903a00137029401200241386a20024190016a20022802a8011015200241f0006a2002280238200228023c10050b410021010c000b000bbd0301077f230041106b220124002001200036020c2001410c6a2802002100230041206b22042400200441186a41808001360200200441d4840436021420044100360210200441086a2106230041206b22012400200441106a220541086a2202280200210320024100360200200528020421022005419c840436020420012003360214200120023602100240024002402000280200220741064604402003450d02200241003a0000200141013602180c010b2003450d01200241013a00002001410136021802400240024002400240024020070e06000102030405060b200341014d0d06200241003a000120014102360218200041046a200141106a10520c050b200341014d0d05200241013a0001200141023602180c040b200341014d0d04200241023a0001200141023602180c030b200341014d0d03200241033a0001200141023602180c020b200341014d0d02200241043a0001200141023602180c010b200341014d0d01200241053a000120014102360218200041046a200141106a10520b20052001290310370204200141086a20052001280218101520062001290308370300200141206a24000c010b000b2004280208200428020c105f000bbd0102017f027e230041406a22042400200441186a200241186a290000370300200441106a200241106a290000370300200441086a200241086a290000370300200441286a200341086a290000370300200441306a200341106a290000370300200441386a200341186a29000037030020042002290000370300200420032900003703202000200141a8026a200410322201290300420151047e200141106a290300210520012903080542000b37030020002005370308200441406b24000b930901067f230041d0026b220624002000027f4104200210350d001a4103200310350d001a200641206a200241186a290000370300200641186a200241106a290000370300200641106a200241086a290000370300200641306a200341086a290000370300200641386a200341106a290000370300200641406b200341186a29000037030020062002290000370308200620032900003703280240200141a8026a200641086a10322200290300420151044020002004370308200041003a0020200041106a20053703000c010b200641c8006a200641086a41c0001091011a0240024002402001027f024002400240200141e4016a2802002208200141e8016a280200470440200141f0016a220b200141e0016a2802002208103f2100200641013a00f001200641f0016a410172200641c8006a41c0001091011a200641a0016a2000200641f0016a104020062d00a00122004102462000410146720d062008200641a8016a280200220746410020062802a40122002008461b0d01200b200710412209450d0620092d00004101460d06200941046a210a20002007460d02200a2000360200200b200010412209450d0620092d00004101460d06200941086a210a0c030b20064188016a20014198026a200810420240200628028801410147044020064180026a2006419c016a280200360200200641f8016a20064194016a2902003703002006200629028c013703f00141c80041041033220041013a0000200041016a200641c8006a41c0001091011a200041003a0044200641f0016a200010431a0c010b20064190016a28020020064194016a2802004102746a41306a2802002100200641013a00f001200641f0016a410172200641c8006a41c0001091011a200641a0016a2000200641f0016a10400b200141e0016a280200220041016a22072000490d05200120073602e00120012802e801220041016a22072000490d05200120073602e8010c040b20012802e4010c020b200920003602080b200a200736020020012802e0012008470d012000200720002007491b0b3602e0010b20012802e401220041016a220720004f0d010b000b200120073602e401200641c8006a200641086a41c0001091011a41284108103322002004370308200041003a00202000200836021820004201370300200041106a2005370300200641a0016a200641c8006a41c0001091011a200641f0016a200141d0026a200641a0016a104420062802f0014101470440200641a0016a200641f0016a41047241d0001091011a200641a0016a200010451a0c010b200641f8016a280200200641fc016a2802004102746a41046a20003602000b200641b8016a200241186a290000370300200641b0016a200241106a290000370300200641a8016a200241086a290000370300200641c8016a200341086a290000370300200641d0016a200341106a290000370300200641d8016a200341186a290000370300200620022900003703a001200620032900003703c001200641f8016a200641a0016a41c0001091011a200641c0026a2005370300200641b8026a2004370300200642013703f001200641f0016a100d41060b360200200641d0026a24000bbd10020b7f057e230041d0076b22072400410421080240200210350d0041032108200310350d0020074198026a2209200241186a220c29000037030020074190026a220b200241106a220d29000037030020074188026a220a200241086a220e2900003703002007200229000037038002200741406b200120074180026a102e41012108200729034022142004542211200741c8006a290300221320055420052013511b0d0020094200370300200b4200370300200a42003703002007420037038002200120074180026a1028200741b8016a1024200741f0006a200341186a290000370200200741e8006a200341106a290000370200200741e0006a200341086a29000037020020072003290000370258200741b8026a200741d0016a290300370300200741b0026a200741c8016a290300370300200741a8026a2208200741c0016a290300370300200a200e290000370300200b200d2900003703002009200c290000370300200720072903b8013703a0022007200229000037038002200741f8006a20074180026a41c0001091011a200741b8016a200741d4006a41241091011a200741a0026a200537030020074198036a200741d4016a29020037030020074190036a200741cc016a29020037030020074188036a200741c4016a2902003703002007200437039802200720072902bc01370380032008200741f8006a41c000109101200741f8026a220941fdcdc6cf7a360200200a4200370300200b4200370300200741f0026a220b200641086a280200360200200741e8026a220c20062902003703002007420037038002200741003602e0012007428080013702bc01200741d484043602b80120074180036a200741b8016a1013200720072903b8013702e401200741386a200741e0016a20072802c0011015200728023c21062007280238210d200741306a200741e0016a200a10362007280234210e2007280230210a20072902e4012112200741003602c001200720123703b801200741b8016a200941041037200741c8026a200741b8016a1013200741b8016a101320042005200741b8016a1014200c280200200b280200200741b8016a1038200720072903b8013702e401200741286a200741e0016a20072802c0011015200728022c21082007280228210b2007200741e8016a28020022093602f401200720072802e401220c3602f001200720093602b801200d20064200200a200e200b2008200c200741b8016a1002210b200741f0016a20072802b8011019410121084101210602400240024002400240024002400240024002400240024002400240200b103941016b0e0c0d0203040506070809010a0b000b200720072903f0013703f801200741206a200741f8016a103a20072d00204101710d0b4100210a0240024020072d00210e0201000d0b200741186a200741f8016a103a20072d001920072d0018410171720d0c200741b8016a200741f8016a103b20072802b801220a450d0c20072902bc0121120b410021080c0c0b000b410221060c0a0b410321060c090b410421060c080b410521060c070b410621060c060b410721060c050b410821060c040b410a21060c030b410b21060c020b410921060c010b410021060b027f02402008450440200a0d014101210b41060c020b4101210b4106200641ff017122064101462006410846720d011a4100210b411d210f200741106a411d4100103c200728021421102007280210220a41b68104290000370000200a41156a41cb8104290000370000200a41106a41c68104290000370000200a41086a41be810429000037000041050c010b2012422088a7210f2012a721104100210b41050b210820074190016a420037030020074188016a420037030020074180016a42003703002007420037037820074180026a200741f8006a1021410021060340200641b0054b450440200120066a22092903002112200920074180026a20066a220c290300370300200c2012370300200941086a220d2903002112200d200c41086a220d290300370300200941106a220e2903002115200e200c41106a220e290300370300200941186a220929030021162009200c41186a220929030037030020092016370300200e2015370300200d2012370300200641206a21060c010b0b200141c8056a200741c8076a290300370300200141c0056a200741c0076a290300370300200b4504402000200a3602042000410c6a200f360200200041086a20103602000c010b20074198026a2206200241186a29000037030020074190026a220a200241106a29000037030020074188026a2208200241086a290000370300200720022900003703800202402014201420047d221454201320057d2011ad7d221220135620122013511b0d00200141106a220b20074180026a20142012103d2006200341186a2209290000370300200a200341106a220c2900003703002008200341086a220f29000037030020072003290000370380022007200120074180026a102e200741086a29030021132007290300211220062009290000370300200a200c2900003703002008200f2900003703002007200329000037038002200420127c221420125422012001ad200520137c7c221220135420122013511b0d00200b20074180026a20142012103d20074191016a200241186a29000037000020074189016a200241106a29000037000020074181016a200241086a290000370000200741013a00782007200229000037007920074199026a200341186a29000037000020074191026a200341106a29000037000020074189026a200341086a290000370000200741013a0080022007200329000037008102200741f8006a20074180026a20042005103e410621080c010b000b20002008360200200741d0076a24000b5e01017f230041106b220124002001200036020c2001410c6a2802002101230041206b22002400200041186a41808001360200200041d4840436021420004100360210200041086a200041106a200110362000280208200028020c105f000b3701027e200020014180016a200210312201290300420151047e200141106a290300210320012903080542000b370300200020033703080bdf0501087f230041b0016b220824000240200041f0006a2001100c22022802004101460440200241003a00080c010b20082001412410910121020240024002402000027f0240024002402000412c6a2802002205200041306a280200470440200041386a2209200028022822051054210320024101360240200241406b410472200241241091011a200241f8006a2003200241406b1055200228027822034102462003410146720d06200520024180016a2802002204464100200228027c22032005461b0d012009200410562206450d0620062802004101460d06200641046a210720032004460d02200720033602002009200310562206450d0620062802004101460d06200641086a21070c030b200241286a200041e0006a20051042024020022802284101470440200241d0006a2002413c6a280200360200200241c8006a200241346a2902003703002002200229022c370340412c4104103322034101360200200341046a200241241091011a200341003a0028200241406b200310431a0c010b200241306a280200200241346a2802004102746a41306a280200210320024101360240200241406b410472200241241091011a200241f8006a2003200241406b10550b2000280228220341016a22042003490d05200020043602282000280230220341016a22042003490d05200020043602300c040b200028022c0c020b200620033602080b2007200436020020002802282005470d012003200420032004491b0b3602280b200028022c220341016a220420034f0d010b000b2000200436022c2002200141241091012101410c41041033220241003a00082002200536020420024101360200200141f8006a200141241091011a200141406b20004198016a200141f8006a105720012802404101470440200141f8006a200141406b41047241341091011a200141f8006a200210581a0c010b200141c8006a280200200141cc006a2802004102746a4190036a20023602000b200841b0016a24000b910d02117f017e23004180016b2203240020032001360224200041f8036a210b027f200041fc036a28020022060440200b2802000c010b200b10472206360204200b410036020041000b21080240024003402006412c6a210920062f015e22044102742107417f2105034002402007450440200421050c010b200941286b210a200541016a2105200941046a2109200741046b2107417f200a280200220a2001472001200a491b41ff01710e020301000b0b20080440200841016b2108200620054102746a41e0006a28020021060c010b0b4102210720002903d0034201510440200341e8006a2209200041f0036a290300370300200341e0006a2207200041e8036a290300370300200341d8006a2204200041e0036a2903003703002003200041d8036a290300370350200341306a200341d0006a200341246a10482009200341c8006a2903003703002007200341406b2903003703002004200341386a29030037030020032003290330370350200341808001360274200341d48404360270027f02400240200341d0006a200341f0006a10490e0400050501050b20032003290370370378200341186a200341f8006a104a20032802180d04200328021c2109200341106a200341f8006a104a20032802100d042003280214210441010c010b41000b21072009ad2004ad4220868421140b41104104104b220841013a000c2008201437020420084100200720074102461b360200200320053602582003410036025020032006360254027f02400240024020062f015e410b4f0440200341286a2005104c200341306a280200210f200328022c2109200328022821041047210a20062f015e220720046b220520074b0d062005200541016b2205490d06200a20053b015e200441016a220c2004490d0620072007200c6b2207492005410c4f722005200747720d06200620044102746a220741306a280200210d200741046a280200210e200a41046a2006200c4102746a41046a200541027422051091011a200a41306a2006200c4102746a41306a20051091011a200620043b015e2003200f3602302003200a200620091b36022c4100210420034100360228200341286a20012008104d210941002101034020062802002205450d02200441016a22072004490d07200320062f015c22043602582003200536025420032007360250200741016b220620074b2001200647720d0720052f015e410b490d03200341286a2004104c20032802302111200328022c2003280228210420052f015e104e210120052f015e220820046b220620084b0d072006200641016b2206490d07200120063b015e200441016a22102004490d072008200820106b2208492006410c4f722006200847720d07200520044102746a220841306a280200210c200841046a280200210f200141046a200520104102746a220841046a200641027422061091011a200141306a200841306a20061091011a200520043b015e41016a220620106b220420064b0d0720012f015e2206410c4f2004200641016a47720d07200141e0006a200841e0006a20044102741091011a200341086a20012007104f200328020c2106200328020821012007210420052108044020062108200121040b200320113602302003200836022c20032004360228200341286a200e200d200a1050200721042006210a200c210d200f210e200521060c000b000b200341d0006a20012008104d21090c020b200b2802042205450d04200b2802002104104e220720053602602004200441016a22044b0d04200320072004104f20032802002105200b20032802042204360204200b20053602002005200541016b2205492001200547720d0420042f015e2201410a4b0d042004200141016a22053b015e200420014102746a220141306a200d360200200141046a200e360200200420054102746a41e0006a200a360200200a20053b015c200a2004360200200b280208220141016a22072001490d04200b41086a0c020b200341d0006a200e200d200a10500b200b280208220141016a22072001490d02200b41086a0b20073602000b41002107200928020022012802004101460440200128020421070b200341286a1024024020002007200341286a100a220941ff01714103470d0041022109200020032802242002100b0d00200341346a200241086a2900003702002003413c6a200241106a290000370200200341c4006a200241186a290000370200200320032802243602282003200229000037022c20004188046a200341286a102f200341286a1024410321090b20034180016a240020090f0b000bdb0302047f027e230041b0016b22022400200241f8006a200141186a290000370300200241f0006a200141106a290000370300200241e8006a200141086a29000037030020022001290000370360200241086a200041286a200241e0006a105c027f200228020841014704404202210620002903004201510440200241a8016a2203200041206a290300370300200241a0016a2204200041186a29030037030020024198016a2205200041106a2903003703002002200029030837039001200241e8006a20024190016a20011071200320024180016a2903003703002004200241f8006a2903003703002005200241f0006a2903003703002002200229036837039001200241406b20024190016a108f01200229034021060b20064202520440200241a0016a200241d8006a29030037030020024198016a200241d0006a2903003703002002200229034837039001200621070b200241e0006a200241086a41047241301091011a41284108104b22002007370300200041013a00202000200229039001370308200041106a20024198016a290300370300200041186a200241a0016a290300370300200241e0006a2000105d2802000c010b200241106a280200200241146a2802004102746a41046a2802000b200241b0016a24000bb00302047f027e230041f0016b2202240020024180016a200141c0001091011a200241086a200041286a20024180016a1044027f200228020841014704404202210620002903004201510440200241e8016a2203200041206a290300370300200241e0016a2204200041186a290300370300200241d8016a2205200041106a290300370300200220002903083703d00120024188016a200241d0016a2001106e2003200241a0016a290300370300200420024198016a290300370300200520024190016a29030037030020022002290388013703d001200241e0006a200241d0016a108f01200229036021060b20064202520440200241e0016a200241f8006a290300370300200241d8016a200241f0006a290300370300200220022903683703d001200621070b20024180016a200241086a41047241d0001091011a41284108104b22002007370300200041013a0020200020022903d001370308200041106a200241d8016a290300370300200041186a200241e0016a29030037030020024180016a200010452802000c010b200241106a280200200241146a2802004102746a41046a2802000b200241f0016a24000b11002000200110342200450440000b20000bb50101027f2000200020016a41016b410020016b7122014d0440024041cc8404280200220020016a22032000490d0041d0840428020020034904402001200141ffff036a22004b044041000f0b2000411076220240002200417f46044041000f0b2000200041ffff037147044041000f0b2000411074220020024110746a2203200049044041000f0b4100210241d084042003360200200020016a22032000490d010b41cc84042003360200200021020b20020f0b000b4101017f230041206b22012400200141186a4200370300200141106a4200370300200141086a42003703002001420037030020002001109301200141206a2400450b6102017f017e230041206b220324002001290204210420034100360218200320043703102002290300200241086a290300200341106a101420012003290310370204200341086a20012003280218101520002003290308370300200341206a24000b6001037f230041106b2203240002402000280208220420026a220520044f0440200341086a2004200520002802002000280204109001200328020c2002470d012003280208200120021091011a20002005360208200341106a24000f0b000b000b2c01017f230041106b220324002003200136020c2003410c6a2002105e2002200020011037200341106a24000b2001017f410c21012000410b4d047f2000410274419c84046a28020005410c0b0b3c01017f200020012802042202047f2001200241016b36020420012001280200220141016a36020020012d00000520010b3a000120002002453a00000bc00502097f017e230041106b22062400200620011020024020062802002203044041002006290204220b422088a7220441076b2201200120044b1b210a200341036a417c7120036b210941002101034020012004490440024002400240200120036a2d00002207411874411875220841004e0440200920016b4103712009417f46720d0303402001200a4f0d03200120036a2205280200200541046a28020072418081828478710d032001200141086a22014d0d000b0c010b4100210502400240024002402007419982046a2d000041026b0e030002010a0b200141016a220120044f0d09200120036a2c000041bf7f4c0d020c090b200141016a220220044f0d08200220036a2d000021020240024002400240200741f0016b0e050100000002000b2002411874411875417f4a2008410f6a41ff017141024b720d0b200241c001490d020c0b0b200241f0006a41ff01714130490d010c0a0b2002411874411875417f4a2002418f014b720d090b200141026a220220044f0d08200220036a2c000041bf7f4a0d08200141036a220120044f0d08200120036a2c000041bf7f4c0d010c080b200141016a220220044f0d07200220036a2d00002102024002400240200741e001470440200741ed01460d012008411f6a41ff0171410c490d022008417e71416e472002411874411875417f4a720d0b200241c001490d030c0b0b200241e0017141a001460d020c0a0b2002411874411875417f4a0d09200241a001490d010c090b2002411874411875417f4a200241bf014b720d080b200141026a220120044f0d07200120036a2c000041bf7f4a0d070b200141016a21010c040b000b20012004200120044b1b2105034020012005460440200521010c040b200120036a2c00004100480d03200141016a21010c000b000b200141016a21010c010b0b2000200b370204200321050c010b0b20002005360200200641106a24000bf10101037f230041106b220424000240200141004e0440200441086a2105027f41012001450d001a20024504402001410110340c010b410041cc8404280200220220016a22032002490d001a024041d084042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141d0840420033602004100200120026a22032002490d021a0b41cc8404200336020020020c010b41000b21022005200136020420052002360200200428020822020d010b000b2000200136020420002002360200200441106a24000b8c0801077f230041a0016b220424000240200041f0006a200110312205290300420151044020052002370308200541003a0020200541106a20033703000c010b200441186a2205200141186a290000370300200441106a2206200141106a290000370300200441086a2207200141086a290000370300200420012900003703000240024002402000027f0240024002402000412c6a2802002208200041306a280200470440200041386a220a2000280228220810592109200441c1006a2007290300370000200441c9006a2006290300370000200441d1006a2005290300370000200441013a003820042004290300370039200441f0006a2009200441386a105a20042d007022054102462005410146720d062008200441f8006a2802002206464100200428027422052008461b0d01200a2006105b2207450d0620072d00004101460d06200741046a210920052006460d0220092005360200200a2005105b2207450d0620072d00004101460d06200741086a21090c030b200441206a200041e0006a20081042024020042802204101470440200441c8006a200441346a280200360200200441406b2004412c6a29020037030020042004290224370338412841041033220541013a0000200541003a002420052004290300370001200541096a200441086a290300370000200541116a200441106a290300370000200541196a200441186a290300370000200441386a200510431a0c010b200441286a2802002004412c6a2802004102746a41306a2802002105200441c1006a200441086a290300370000200441c9006a200441106a290300370000200441d1006a200441186a290300370000200441013a003820042004290300370039200441f0006a2005200441386a105a0b2000280228220541016a22062005490d05200020063602282000280230220541016a22062005490d05200020063602300c040b200028022c0c020b200720053602080b2009200636020020002802282008470d012005200620052006491b0b3602280b200028022c220541016a220620054f0d010b000b2000200636022c200441186a2205200141186a290000370300200441106a2206200141106a290000370300200441086a2207200141086a2900003703002004200129000037030041284108103322012002370308200141003a00202001200836021820014201370300200141106a200337030020044188016a200529030037030020044180016a2006290300370300200441f8006a200729030037030020042004290300370370200441386a20004198016a200441f0006a105c20042802384101470440200441f0006a200441386a41047241301091011a200441f0006a2001105d1a0c010b200441406b280200200441c4006a2802004102746a41046a20013602000b200441a0016a24000b6701017f230041b0016b22042400200441086a200041211091011a200441296a200141211091011a200441d8006a200441086a41c8001091011a200441a8016a2003370300200441a0016a200237030020044200370350200441d0006a100d200441b0016a24000ba30702047f057e230041a0026b22022400200241106a200041286a200110420240027f200228021041014704404102210320002903004201510440200041206a2903002109200041186a2903002108200041106a29030021062002200029030822072001ad7c220a370328200220062007200a56ad7c2207370330200220082006200756ad7c2206370338200220092006200854ad7c37034020024180800136028401200241d484043602800141002100024002400240200241286a20024180016a10490e0400060601060b20022002290380013703c801200241086a200241c8016a103a4101210020022d00084101710d00027f0240024020022d00090e020001030b200241c8006a200241c8016a107420022802484101460d02200241d0006a2802002104200228024c210541000c010b200241d0016a200241c8016a101f20022d00d0014101460d01200241f8016a200241c8016a101f20022d00f8014101460d01200241c6016a20022d00d3013a0000200241f5006a20024191026a290000370000200241ed006a20024189026a290000370000200241e5006a20024181026a290000370000200241d0006a200241e4016a290200370300200241d5006a200241e9016a290000370000200220022900f90137005d200220022f00d1013b01c4012002200241dc016a290200370348200241d8016a280200210420022802d40121052002418c016a200241c8006a41351091011a41010b2103200241fa016a200241c6016a2d00003a0000200220022f01c4013b01f801200241c8006a2002418c016a41381091011a410021000c010b0b20000d03200241d2016a2201200241fa016a22002d00003a0000200220022f01f8013b01d0012002418c016a200241c8006a41381091011a20034102470440200020012d00003a0000200220022f01d0013b01f801200241c8006a2002418c016a41381091011a0b200241ca016a20002d00003a0000200220022f01f8013b01c8012002418c016a200241c8006a41381091011a0b200241d8006a200241106a410472220041106a280200360200200241d0006a200041086a2902003703002002200029020037034841c8004104104b220020033a00002000200436000820002005360004200020022f01c8013b0001200041036a200241ca016a2d00003a00002000410c6a2002418c016a41381091011a200041013a0044200241c8006a200010432802000c010b200241186a2802002002411c6a2802004102746a41306a2802000b200241a0026a24000f0b000b3a01017f20022d000021032000200141c4001091012001200241c40010910121012d0000410246410020034102461b450440200141003a00440b0b2101017f20002001103f22002d0000410247047f200041003a004420000541000b0b900201077f027f20012802042204044020012802000c010b2001104722043602042001410036020041000b2106027f034020042f015e2208410274210941002105417f21030240034020052009460440200821030c020b200420056a2107200341016a2103200541046a21050240417f200741046a280200220720024720022007491b41ff01710e020001020b0b2000410c6a2003360200200041086a2004360200200041106a210541010c020b20060440200641016b2106200420034102746a41e0006a28020021040c010b0b200041106a20033602002000410c6a2004360200200041086a4100360200200041146a21052002210641000b21032000200636020420052001360200200020033602000b860801117f230041306b220224002000280200210e200241186a2000410c6a280200360200200220002902043703100240027f024002400240200228021422042f015e410b4f0440200241206a2002280218104c200241286a28020021072002280224210f2002280220210a200228021021031047210820042f015e2209200a6b220520094b0d05200541016b220b20054b0d052008200b3b015e200a41016a2206200a490d05200920066b220520094b200b410c4f722005200b47720d052004200a4102746a220541306a2802002110200541046a2802002109200841046a200420064102746a41046a200b41027422051091011a200841306a200420064102746a41306a20051091011a2004200a3b015e20022007360228200220082004200f1b36022441002106200241002003200f1b360220200241206a200e2001104d2112034020042802002207450d02200341016a22052003490d06200220042f015c22033602182002200736021420022005360210200541016b220120054b2001200647720d0620072f015e410b490d03200241206a2003104c2002280228210a2002280224210b2002280220210d20072f015e104e210c20072f015e2204200d6b220120044b0d06200141016b221120014b0d06200c20113b015e200d41016a2206200d490d06200420066b220120044b2011410c4f722001201147720d062007200d4102746a220141306a280200210e200141046a280200210f200c41046a200720064102746a220441046a201141027422011091011a200c41306a200441306a20011091011a2007200d3b015e41016a220120066b220320014b0d06200c2f015e2201410c4f2003200141016a47720d06200c41e0006a200441e0006a20034102741091011a200241086a200c2005104f200228020c21042002280208210620052103200721012002200a3602282002200b047f2006210320040520010b36022420022003360220200241206a20092010200810502005210320042108200e2110200f2109200721040c000b000b200241106a200e2001104d21120c020b200028021022042802042200450d0320042802002103104e22012000360260200341016a22002003490d03200220012000104f20022802002100200420022802042203360204200420003602002000200041016b2200492000200647720d0320032f015e2200410a4b0d032003200041016a22013b015e200320004102746a220041306a2010360200200041046a2009360200200320014102746a41e0006a2008360200200820013b015c200820033602002004280208220041016a22032000490d03200441086a0c020b200241106a20092010200810500b20002802102201280208220041016a22032000490d01200141086a0b2003360200200241306a240020120f0b000b880201097f027f20012802042203044020012802000c010b2001107c22033602042001410036020041000b2105200241206a2108027f034020032f01322209410674210a41002104417f2106024003402004200a460440200921060c020b2002200320046a220b41346a108e01220741ff01714504402008200b41d4006a108e0121070b200641016a2106200441406b21040240200741ff01710e020001020b0b41010c020b20050440200541016b2105200320064102746a41f4056a28020021030c010b0b200041146a200241c0001091011a4100210541000b21042000200536020420002004360200200041106a20013602002000410c6a2006360200200041086a20033602000b800b01117f230041e0026b22022400200241206a200041086a28020036020020022000290200370318200041106a21080240027f02400240027f0240200228021c22042f0132410b4f0440200241e0016a2002280220104c200241e8016a280200210720022802e401210c20022802e001210520022802182103107c210920042f0132220a20056b2206200a4b0d062006200641016b2206490d06200920063b0132200420054106746a220b41346a280000210d200241e0016a200b41386a413c1091011a200541016a220b2005490d06200a200a200b6b220a492006410c4f722006200a47720d06200420054102746a41046a280200210a200941346a2004200b4106746a41346a20064106741091011a200941046a2004200b4102746a41046a20064102741091011a200420053b0132200241a0026a200241e0016a413c1091011a20022007360260200220092004200c1b36025c41002107200241002003200c1b360258200241e0016a200841c0001091011a200241d8006a200241e0016a2001107d210c200241a4016a200241a0026a413c1091011a200241186a200241a4016a413c1091011a200241e0016a410472210e0340200428020022050440200341016a22062003490d08200220042f013022013602a0012002200536029c012002200636029801200641016b220320064b2003200747720d0820052f0132410b490d03200241e0016a2001104c20022802e801210f20022802e401211020022802e001210120052f0132107e210320052f0132220820016b220420084b0d082004200441016b2204490d08200320043b0132200520014106746a220741346a280000210b200241e0016a200741386a413c1091011a200141016a22072001490d082008200820076b2208492004410c4f722004200847720d08200520014102746a41046a2802002108200341346a200520074106746a41346a20044106741091011a200341046a200520074102746a221241046a20044102741091011a200520013b0132200241a0026a200241e0016a413c1091011a41016a220420076b220120044b0d0820032f01322204410c4f2001200441016a47720d08200341f4056a201241f4056a20014102741091011a200241106a20032006107f2002280214210420022802102107200241a4016a200241a0026a413c1091011a20062103200521012002200f3602a80220022010047f2007210320040520010b3602a402200220033602a0022002200d3602e001200e200241186a413c1091011a200241a0026a200241e0016a200a2009108001200241d8006a200241a4016a413c1091011a200241186a200241d8006a413c1091011a20062103200b210d200421092008210a200521040c010b0b200241a0026a200241186a413c1091011a41010c020b200241e0016a200841c0001091011a200241186a200241e0016a2001107d210c200028020c21000c020b2002200d3602e001200e200241186a413c1091011a20024198016a200241e0016a200a20091080012001210d41000b200028020c21000d010b2000280208220141016a22032001490d02200041086a0c010b20002802042203450d0120002802002101107e220520033602f4052001200141016a22014b0d01200241086a20052001107f200228020821032000200228020c220136020420002003360200200241e0016a200241a0026a413c1091011a2003200341016b2203492003200747720d0120012f01322203410a4b0d012001200341016a22053b0132200120034106746a220641346a200d360000200641386a200241e0016a413c1091011a200120054102746a41f4056a2009360200200120034102746a41046a200a360200200920053b0130200920013602002000280208220141016a22032001490d01200041086a0b2003360200200241e0026a2400200c0f0b000b2d01017f2000280208220220002802044904402000200241016a360208200028020020026a20013a00000f0b000b2201017f41e000410410732200450440000b200041003b015e2000410036020020000b900201037f230041e0006b220324002003411a6a41f0003a0000200341186a41edc2013b0100200342e9dcad8382add8b9e800370310200320013602082003200236020c200341386a22014200370300200341306a22044200370300200341286a220542003703002003420037032020034100360240200342808001370254200341d48404360250200341106a200341d0006a1076200341086a200341d0006a10772002280200200341d0006a106a200320032903503702442003200341406b2003280258101520032802002003280204200341206a1004200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290320370000200341e0006a24000b3701017f230041106b220224002002200128020436020c200020012802002002410c6a10072001200228020c10191039200241106a24000b4801017f027f4101200128020422024104490d001a2001200241046b36020420012001280200220141046a3602002001280000210241000b210120002002360204200020013602000b11002000200110732200044020000f0b000b5b01027f41042102024020014105490d002001210202400240200141056b0e020200010b4100210141012103410521020c010b200141076b210141012103410621020b2000200336020420002002360200200041086a20013602000b4101027f2000280204220341046a20032f015e41016a2204200028020822002001107b200341306a2201200420002002107b200320043b015e200120004102746a0b2201017f419001410410732200450440000b200041003b015e2000410036020020000b860101037f230041206b2203240020012f015e2104200341003a00182003200436021420034100360210024003400240200341086a200341106a107a2003280208450d002002450d022001200328020c22044102746a41e0006a280200220520043b015c200520013602000c010b0b2000200136020420002002360200200341206a24000f0b000bfc0101067f2000280204220441046a20042f015e220541016a2208200028020822062001107b200441306a200820062002107b0240200641016a22022006490d00200241016a22092002490d00200441e0006a2107200541026a220120094b0440200120026b220520014b0d012005200541016b2205490d01200720094102746a200720024102746a20054102741092010b200720024102746a2003360200200420083b015e20012002200120024b1b2103200420064102746a41e4006a2101200028020021000340200220034704402000450d022001280200220620023b015c20062004360200200141046a2101200241016a21020c010b0b0f0b000b8d0101047f230041106b22022400200028020421052000419c8404360204200041086a220328020021042003410036020002402000280200220320044d0440200241003602082002200420036b3602042002200320056a360200200120021053200320022802086a220120034f0d010b000b200020043602082000200536020420002001360200200241106a24000b100020002802002000280208200110380b0a0020012000412010370b900702087f057e230041c0016b22022400200241106a200041286a200110420240027f20022802104101470440024020002903004201520440410221010c010b200041206a290300210d200041186a290300210a200041106a290300210b20022000290308220c2001ad7c220e3703282002200b200c200e56ad7c220c3703302002200a200b200c56ad7c220b3703382002200d200a200b56ad7c37034020024180800136024c200241d4840436024841002100024002400240200241286a200241c8006a10490e0400060601060b20022002290348370370200241086a200241f0006a103a4101210020022d00084101710d00027f0240024020022d00090e020001030b20024198016a200241f0006a10742002280298014101460d02200228029c01210341002101200241a0016a2802000c010b2002200241f0006a104a20022802000d012002280204210320024198016a200241f0006a101f4101210120022d0098014101460d0120024188016a200241ad016a290000220a370300200241d8006a200241a5016a290000370300200241e0006a200a370300200241e8006a200241b5016a2800003602002002200229009d013703502002280099010b2106200241b0016a200241e8006a280200360200200241a8016a200241e0006a290300370300200241a0016a200241d8006a2903003703002002200229035037039801410021000c010b410221010b20000d0320024190016a2207200241b0016a220028020036020020024188016a2208200241a8016a220429030037030020024180016a2209200241a0016a220529030037030020022002290398013703782001410247044020002007280200360200200420082903003703002005200929030037030020022002290378370398010b200241d8006a2005290300370300200241e0006a2004290300370300200241e8006a200028020036020020022002290398013703500b200241a8016a200241106a410472220041106a280200360200200241a0016a200041086a2902003703002002200029020037039801412c4104104b220020063602082000200336020420002001360200200041013a00282000200229035037020c200041146a200241d8006a2903003702002000411c6a200241e0006a290300370200200041246a200241e8006a28020036020020024198016a200010432802000c010b200241186a2802002002411c6a2802004102746a41306a2802000b200241c0016a24000f0b000b3801017f200228020021032000200141281091012001200241281091012101280200410246410020034102461b450440200141003a00280b0b2101017f2000200110542200280200410247047f200041003a002820000541000b0bb702010a7f027f20012802042204044020012802000c010b200110820122043602042001410036020041000b2107200241046a210920022802002108027f034020042f01be03220a41246c210b41002105417f2106024003402005200b460440200a21060c020b417f2008200420056a220c41046a280200220347200320084b1b22034504402009200c41086a108e0121030b200641016a2106200541246a21050240200341ff01710e020001020b0b200020073602042000410c6a2006360200200041086a200436020041012103200041106a0c020b20070440200741016b2107200420064102746a41c0036a28020021040c010b0b200041046a200241241091011a200041306a20063602002000412c6a200436020041002103200041286a4100360200200041346a0b2000200336020020013602000bad0f021d7f047e230041d0016b22022400200241206a2000412c6a280200360200200220002902243703180240027f02400240027f0240200228021c22042f01be03410b4f044020024188016a2002280220104c20024190016a2802002107200228028c01210c200228028801210520022802182103108201210920042f01be03220a20056b2206200a4b0d062006200641016b2206490d06200920063b01be0320024190016a2004200541246c6a220b41106a29020037030020024198016a200b41186a290200370300200241a0016a200b41206a2902003703002002200b41086a29020037038801200541016a22082005490d06200a200a20086b220a492006410c4f722006200a47720d06200420054102746a4190036a280200210a200b41046a280200210b200941046a2004200841246c6a41046a200641246c1091011a20094190036a200420084102746a4190036a20064102741091011a200420053b01be03200241b8016a220e20024190016a2211290300370300200241c0016a220f20024198016a2212290300370300200241c8016a2210200241a0016a221329030037030020022002290388013703b00120022007360240200220092004200c1b36023c41002107200241002003200c1b36023820024188016a200041241091011a200241386a20024188016a2001108301211420024180016a22152010290300221f370300200241f8006a2216200f2903002220370300200241f0006a2217200e2903002221370300200220022903b0012222370368200241306a2218201f370300200241286a22192020370300200241206a221a20213703002002202237031820024188016a410472210d0340200428020022050440200341016a22062003490d08200220042f01bc0322013602602002200536025c20022006360258200641016b220320064b2003200747720d0820052f01be03410b490d0320024188016a2001104c200228029001211b200228028c01211c200228028801210120052f01be03108401210320052f01be03220820016b220420084b0d082004200441016b2204490d08200320043b01be0320112005200141246c6a220c41106a2902003703002012200c41186a2902003703002013200c41206a2902003703002002200c41086a29020037038801200141016a22072001490d082008200820076b2208492004410c4f722004200847720d08200520014102746a4190036a2802002108200c41046a280200210c200341046a2005200741246c6a41046a200441246c1091011a20034190036a200520074102746a221e4190036a20044102741091011a200520013b01be03200e2011290300370300200f20122903003703002010201329030037030020022002290388013703b00141016a220420076b220120044b0d0820032f01be032204410c4f2001200441016a47720d08200341c0036a201e41c0036a20014102741091011a200241106a200320061085012017200e2903003703002016200f29030037030020152010290300370300200220022903b001370368200228021421042002280210210720062103200521012002201b3602b8012002201c047f2007210320040520010b3602b401200220033602b001200d2002290318370200200d41086a201a290300370200200d41106a2019290300370200200d41186a20182903003702002002200b36028801200241b0016a20024188016a200a2009108601200241d0006a2015290300221f370300200241c8006a20162903002220370300200241406b20172903002221370300201a2021370300201920203703002018201f37030020022002290368221f3703382002201f37031820062103200c210b200421092008210a200521040c010b0b200241c8016a200241306a290300370300200241c0016a200241286a290300370300200241b8016a200241206a290300370300200220022903183703b00141010c020b20024188016a200041241091011a200241186a20024188016a20011083012114200028023021000c020b200d2002290318370200200d41086a200241206a290300370200200d41106a200241286a290300370200200d41186a200241306a2903003702002002200b36028801200241d8006a20024188016a200a20091086012001210b41000b200028023021000d010b2000280208220141016a22032001490d02200041086a0c010b20002802042203450d0120002802002101108401220520033602c0032001200141016a22014b0d01200241086a20052001108501200228020821032000200228020c220136020420002003360200200241a0016a200241c8016a29030037030020024198016a200241c0016a29030037030020024190016a200241b8016a290300370300200220022903b001370388012003200341016b2203492003200747720d0120012f01be032205410a4b0d012001200541246c6a220341046a200b3602002001200541016a22063b01be03200341106a20024190016a290300370200200341186a20024198016a290300370200200341206a200241a0016a290300370200200341086a200229038801370200200120054102746a4190036a200a360200200120064102746a41c0036a2009360200200920063b01bc03200920013602002000280208220141016a22032001490d01200041086a0b2003360200200241d0016a240020140f0b000bac0702087f057e230041b0016b22022400200241086a200041286a200110420240027f200228020841014704404102210320002903004201510440200041206a290300210d200041186a290300210c200041106a290300210a20022000290308220b2001ad7c220e3703382002200a200b200e56ad7c220b3703402002200c200a200b56ad7c220a3703482002200d200a200c54ad7c370350200241808001360264200241d4840436026041002100024002400240200241386a200241e0006a10490e0400060601060b200220022903603703202002200241206a103a4101210020022d00004101710d00027f0240024020022d00010e020001030b20024188016a200241206a10742002280288014101460d02200228028c0121044100210320024190016a2802000c010b20024188016a200241206a101f4101210320022d0088014101460d0120024186016a20022d008b013a0000200241f0006a2002419c016a290200370300200241f5006a200241a1016a290000370000200220022f0089013b018401200220024194016a290200370368200228028c01210420024190016a2802000b2105200241de006a20024186016a2d00003a000020024190016a200241f0006a29030037030020024198016a200241f8006a290300370300200220022f0184013b015c2002200229036837038801410021000c010b410221030b20000d03200241e2006a2206200241de006a22072d00003a0000200241f0006a220820024190016a2200290300370300200241f8006a220920024198016a2201290300370300200220022f015c3b016020022002290388013703682003410247044020024186016a20062d00003a00002000200829030037030020012009290300370300200220022f01603b01840120022002290368370388010b200720024186016a2d00003a0000200241286a2000290300370300200241306a2001290300370300200220022f0184013b015c20022002290388013703200b20024198016a200241086a410472220041106a28020036020020024190016a200041086a290200370300200220002902003703880141284104104b220020033a00002000200536000820002004360004200041013a0024200020022f015c3b0001200041036a200241de006a2d00003a00002000200229032037000c200041146a200241286a2903003700002000411c6a200241306a29030037000020024188016a200010432802000c010b200241106a280200200241146a2802004102746a41306a2802000b200241b0016a24000f0b000b3801017f20022d0000210320002001412410910120012002412410910121012d0000410246410020034102461b450440200141003a00240b0b2101017f20002001105922002d0000410247047f200041003a002420000541000b0b9a0201077f027f20012802042203044020012802000c010b200110880122033602042001410036020041000b2105027f034020032f01322207410574210841002104417f21060240034020042008460440200721060c020b200641016a2106200320046a2109200441206a210402402002200941346a108e0141ff01710e020001020b0b41010c020b20050440200541016b2105200320064102746a4194036a28020021030c010b0b200041146a20022900003700002000412c6a200241186a290000370000200041246a200241106a2900003700002000411c6a200241086a2900003700004100210541000b21042000200536020420002004360200200041106a20013602002000410c6a2006360200200041086a20033602000bf20f021e7f037e230041c0016b22022400200241186a200041086a28020036020020022000290200370310200041106a21080240027f02400240027f0240200228021422052f0132410b4f044020024180016a2002280218104c20024188016a28020021062002280284012104200228028001210c20022802102103108801210920052f01322211200c6b220a20114b0d06200a41016b220e200a4b0d062009200e3b013220024188016a2005200c4105746a220741406b29000037030020024190016a200741c8006a29000037030020024198016a200741d0006a2800003602002002200741386a29000037038001200c41016a220b200c490d062011200b6b220a20114b200e410c4f72200a200e47720d062005200c4102746a41046a2802002113200741346a280000210a200941346a2005200b4105746a41346a200e4105741091011a200941046a2005200b4102746a41046a200e4102741091011a2005200c3b0132200241a8016a221420024188016a2215290300370300200241b0016a221620024190016a2217290300370300200241b8016a221820024198016a221928020036020020022002290380013703a0012002200636023820022009200520041b3602344100210720024100200320041b3602302019200841186a2900003703002017200841106a2900003703002015200841086a2900003703002002200829000037038001200241306a20024180016a2001108901211a200241f8006a221b20182802002201360200200241f0006a221c20162903002222370300200241e8006a221d20142903002221370300200220022903a0012220370360200241286a221e2001360200200241206a221f2022370300200241186a220820213703002002202037031020024180016a410472210d0340200528020022040440200341016a22062003490d08200220052f013022013602582002200436025420022006360250200641016b220320064b2003200747720d0820042f0132410b490d0320024180016a2001104c200228028801210c200228028401200228028001210f20042f0132108a01211020042f01322203200f6b220120034b0d08200141016b221220014b0d08201020123b013220152004200f4105746a220b41406b2900003703002017200b41c8006a2900003703002019200b41d0006a2800003602002002200b41386a29000037038001200f41016a2207200f490d08200320076b220120034b2012410c4f722001201247720d082004200f4102746a41046a2802002111200b41346a280000210b201041346a200420074105746a41346a20124105741091011a201041046a200420074102746a220341046a20124102741091011a2004200f3b013220142015290300370300201620172903003703002018201928020036020020022002290380013703a00141016a220120076b220520014b0d0820102f01322201410c4f2005200141016a47720d0820104194036a20034194036a20054102741091011a200241086a20102006108b01201d2014290300370300201c2016290300370300201b2018280200360200200220022903a001370360200228020c2101200228020821072006210320042105044020012105200721030b2002200c3602a801200220053602a401200220033602a001200d2002290310370200200d41086a2008290300370200200d41106a201f290300370200200d41186a201e2802003602002002200a36028001200241a0016a20024180016a20132009108c01200241c8006a201b2802002203360200200241406b201c2903002221370300200241386a201d290300222037030020082020370300201f2021370300201e20033602002002200229036022203703302002202037031020062103200b210a2001210920112113200421050c010b0b200241b8016a200241286a280200360200200241b0016a200241206a290300370300200241a8016a200241186a290300370300200220022903103703a00141010c020b20024198016a200841186a29000037030020024190016a200841106a29000037030020024188016a200841086a2900003703002002200829000037038001200241106a20024180016a2001108901211a200028020c21040c020b200d2002290310370200200d41086a200241186a290300370200200d41106a200241206a290300370200200d41186a200241286a2802003602002002200a36028001200241d0006a20024180016a20132009108c012001210a41000b200028020c21040d010b2004280208220041016a22032000490d02200441086a0c010b20042802042200450d0120042802002103108a012201200036029403200341016a22002003490d01200220012000108b01200228020021002004200228020422063602042004200036020020024198016a200241b8016a28020036020020024190016a200241b0016a29030037030020024188016a200241a8016a290300370300200220022903a001370380012000200041016b2200492000200747720d0120062f01322201410a4b0d01200620014105746a220341346a200a3600002006200141016a22003b0132200341386a200229038001370000200341406b20024188016a290300370000200341c8006a20024190016a290300370000200341d0006a20024198016a280200360000200620014102746a41046a2013360200200620004102746a4194036a2009360200200920003b0130200920063602002004280208220041016a22032000490d01200441086a0b2003360200200241c0016a2400201a0f0b000b7901017f230041106b22022400024020002802002200413f4d04402001200041027410460c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210370c010b200041ffffffff034d044020004102744102722001106a0c010b20014103104620002001106a0b200241106a24000b0b004100200020011009000b6502017f017e230041206b22032400200129020421042003410036021820032004370310200320022d00003a001f200341106a2003411f6a4101103720012003290310370204200341086a20012003280218101520002003290308370300200341206a24000b08002000420110780bef0101037f230041306b22022400200110792103200241808001360224200241d48404360220024002402003200241206a10490d0020022002290320370328200241186a200241286a104a20022802180d00200228021c2103200241106a200241286a104a20022802100d0020022802142104200241086a200241286a104a2002280208450d010b000b200041306a200228020c3602002000412c6a2004360200200020033602282000420137030020002001290300370308200041106a200141086a290300370300200041186a200141106a290300370300200041206a200141186a290300370300200241306a24000b0c00200042808080801010780baf0102017f017e230041206b2202240002400240024002402001106541ff01710e020001030b2001420110781a200041003602000c010b200110612101200241808001360204200241d484043602000240024002402001200210490e0400040401040b20022002290300370318200241086a200241186a103b20022802082201450d03200229020c21030c010b410021010b2001450d0120002003370204200020013602000b200241206a24000f0b000b6301017f230041206b22012400200010612100200141808001360214200141d4840436021002402000200141106a104945044020012001290310370318200141086a200141186a101e20012d0008410171450d010b000b20012d0009200141206a24000b820101017f230041306b220224002001107920024100360210200242808001370224200241d484043602202000280228200241206a106a2000412c6a280200200241206a106a200041306a280200200241206a106a20022002290320370214200241086a200241106a200228022810152002280208200228020c1005200241306a24000b8a0101027f230041306b220224002002200028020022034100473a0020200241206a200110680240200304402001106120024100360210200242808001370224200241d484043602202000200241206a105220022002290320370214200241086a200241106a200228022810152002280208200228020c10050c010b2001420110781a0b200241306a24000b4e01017f230041206b2202240020011061200241186a41808001360200200241d4840436021420024100360210200241086a200241106a200010602002280208200228020c1005200241206a24000b8d0201037f230041e0006b220324002003411a6a41f0003a0000200341186a41edc2013b0100200342e9dcad8382add8b9e8003703102003200236020c20032001360208200341386a22014200370300200341306a22044200370300200341286a220542003703002003420037032020034100360240200342808001370254200341d48404360250200341106a200341d0006a1076200341086a200341d0006a10772002200341d0006a106d200320032903503702442003200341406b2003280258101520032802002003280204200341206a1004200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290320370000200341e0006a24000b2601017f230041106b220224002002200036020c20012002410c6a41041037200241106a24000b5001027e20002002200129030022027c22033703002000200129030822042002200356ad7c22023703082000200129031022032002200454ad7c2202370310200020012903182002200354ad7c3703180b0e0020002002106a20012002106a0b140020002802002001106a200041046a200110130b8d0201037f230041e0006b220324002003411a6a41f0003a0000200341186a41edc2013b0100200342e9dcad8382add8b9e8003703102003200236020c20032001360208200341386a22014200370300200341306a22044200370300200341286a220542003703002003420037032020034100360240200342808001370254200341d48404360250200341106a200341d0006a1076200341086a200341d0006a10772002200341d0006a1070200320032903503702442003200341406b2003280258101520032802002003280204200341206a1004200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290320370000200341e0006a24000ba20101027f230041306b2202240020002d00202103200041013a0020024020034101710d0020002903004201520440200110060c010b20024100360210200242808001370224200241d484043602202000290308200041106a290300200241206a1014200041186a280200200241206a106a20022002290320370214200241086a200241106a2002280228101520012002280208200228020c10050b200241306a24000b1100200020011013200041206a200110130b8d0201037f230041e0006b220324002003411a6a41f0003a0000200341186a41edc2013b0100200342e9dcad8382add8b9e8003703102003200236020c20032001360208200341386a22014200370300200341306a22044200370300200341286a220542003703002003420037032020034100360240200342808001370254200341d48404360250200341106a200341d0006a1076200341086a200341d0006a10772002200341d0006a1013200320032903503702442003200341406b2003280258101520032802002003280204200341206a1004200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290320370000200341e0006a24000b4801027f230041106b22032400200341086a20024100103c200328020821042000200328020c360204200020043602002004200120021091011a20002002360208200341106a24000b08002000200110340b6201037f230041106b22022400200241086a2001104a41012103024020022802080d00200228020c210420022001104a20022802000d002002280204210120002004360204200041086a2001360200410021030b20002003360200200241106a24000b930101027f20002f01042103200041003a0004410121040240024020034101714504402000280200220028020422032002490d0220012000280200220120021091011a0c010b200120034108763a0000200028020022002802042203200241016b2202490d01200141016a2000280200220120021091011a0b2000200320026b3602042000200120026a360200410021040b20040b0a0020012000410b10370b0d0020012000280200412010370b6001027e200029032021022000200137032020002002200029030022017c22023703002000200029030822032001200256ad7c22013703082000200029031022022001200354ad7c2201370310200020002903182001200254ad7c37031820000b6001037e200029032021012000420137032020002001200029030022027c22013703002000200029030822032001200254ad7c22013703082000200029031022022001200354ad7c2201370310200020002903182001200254ad7c37031820000b5001037f024020012d00080d0020012802002203200128020422044b0d00200320044f044041012102200141013a00080c010b410121022001200341016a3602000b20002003360204200020023602000b5a01017f0240200241016a22042002490d00200120044b04402001200120026b2201490d012001200141016b2201490d01200020044102746a200020024102746a20014102741092010b200020024102746a20033602000f0b000b2201017f41f405410410732200450440000b200041003b01322000410036020020000b5c01037f230041406a220324002000280204220441346a20042f013241016a2205200028020822002003200141c0001091012201108101200441046a2203200520002002107b200420053b0132200141406b2400200320004102746a0b2201017f41a406410410732200450440000b200041003b01322000410036020020000b860101037f230041206b2203240020012f01322104200341003a00182003200436021420034100360210024003400240200341086a200341106a107a2003280208450d002002450d022001200328020c22044102746a41f4056a280200220520043b0130200520013602000c010b0b2000200136020420002002360200200341206a24000f0b000b970201077f230041406a220724002000280204220441346a20042f0132220541016a2208200028020822062007200141c000109101220a108101200441046a200820062002107b0240200641016a22022006490d00200241016a22092002490d00200441f4056a2107200541026a220120094b0440200120026b220520014b0d012005200541016b2205490d01200720094102746a200720024102746a20054102741092010b200720024102746a2003360200200420083b013220012002200120024b1b2103200420064102746a41f8056a2101200028020021000340200220034704402000450d022001280200220620023b013020062004360200200141046a2101200241016a21020c010b0b200a41406b24000f0b000b5e01017f0240200241016a22042002490d00200120044b04402001200120026b2201490d012001200141016b2201490d01200020044106746a200020024106746a20014106741092010b200020024106746a200341c0001091011a0f0b000b2301017f41c003410410732200450440000b200041003b01be032000410036020020000b6b01037f230041306b2203240020002802082104200028020422002f01be032105200341086a200141241091011a200041046a200541016a22012004200341086a10870120004190036a2205200120042002107b200020013b01be03200341306a2400200520044102746a0b2301017f41f003410410732200450440000b200041003b01be032000410036020020000b880101037f230041206b2203240020012f01be032104200341003a00182003200436021420034100360210024003400240200341086a200341106a107a2003280208450d002002450d022001200328020c22044102746a41c0036a280200220520043b01bc03200520013602000c010b0b2000200136020420002002360200200341206a24000f0b000ba50201077f230041306b2207240020002802082104200028020422062f01be032105200741086a200141241091011a200641046a200541016a22092004200741086a10870120064190036a200920042002107b0240200441016a22022004490d00200241016a220a2002490d00200641c0036a2108200541026a2201200a4b0440200120026b220520014b0d012005200541016b2205490d012008200a4102746a200820024102746a20054102741092010b200820024102746a2003360200200620093b01be0320012002200120024b1b2103200620044102746a41c4036a2101200028020021000340200220034704402000450d022001280200220420023b01bc0320042006360200200141046a2101200241016a21020c010b0b200741306a24000f0b000b5d01017f0240200241016a22042002490d00200120044b04402001200120026b2201490d012001200141016b2201490d012000200441246c6a2000200241246c6a200141246c1092010b2000200241246c6a200341241091011a0f0b000b2201017f419403410410732200450440000b200041003b01322000410036020020000b920101037f230041206b2203240020002802082104200028020422002f01322105200341186a200141186a290000370300200341106a200141106a290000370300200341086a200141086a29000037030020032001290000370300200041346a200541016a220120042003108d01200041046a2205200120042002107b200020013b0132200341206a2400200520044102746a0b2201017f41c403410410732200450440000b200041003b01322000410036020020000b860101037f230041206b2203240020012f01322104200341003a00182003200436021420034100360210024003400240200341086a200341106a107a2003280208450d002002450d022001200328020c22044102746a4194036a280200220520043b0130200520013602000c010b0b2000200136020420002002360200200341206a24000f0b000bcb0201077f230041206b2206240020002802082104200028020422072f01322105200641186a200141186a290000370300200641106a200141106a290000370300200641086a200141086a29000037030020062001290000370300200741346a200541016a220920042006108d01200741046a200920042002107b0240200441016a22012004490d00200141016a220a2001490d0020074194036a2108200541026a2202200a4b0440200220016b220520024b0d012005200541016b2205490d012008200a4102746a200820014102746a20054102741092010b200820014102746a2003360200200720093b01322002200120012002491b2103200720044102746a4198036a2102200028020021000340200120034704402000450d022002280200220420013b013020042007360200200241046a2102200141016a21010c010b0b200641206a24000f0b000b8f0101017f0240200241016a22042002490d00200120044b04402001200120026b2201490d012001200141016b2201490d01200020044105746a200020024105746a20014105741092010b200020024105746a22002003290000370000200041186a200341186a290000370000200041106a200341106a290000370000200041086a200341086a2900003700000f0b000b1800417f41012000200110930122004100481b410020001b0bb40102017f027e230041306b22022400200241808001360224200241d484043602202000027e02400240024002402001200241206a10490e0400010102010b20022002290320370328200241086a200241286a101a20022802080d00200241186a2903002103200229031021042002200241286a104a2002280200450d020b000b42000c010b20022802042101200041106a200337030020002004370308200041186a200136020042010b370300200241306a24000b31000240200120024b200220044b720d002002200220016b2202490d00200020023602042000200120036a3602000f0b000be902010a7f02402002410f4d0440200021030c010b2000410020006b41037122046a210520012106200021030340200320054f450440200320062d00003a0000200641016a2106200341016a21030c010b0b0240200220046b220820024b0d002008417c7121070240200120046a22044103710440200520076a21092004417c71220241046a210141202004410374411871220a6b2203411871210b2003412071210c20022802002106200521030340200320094f0d02200c0d03200320012802002202200b742006200a7672360200200141046a2101200341046a2103200221060c000b000b200520076a210220042101200521030340200220034d0d0120032001280200360200200141046a2101200341046a21030c000b000b200820076b220220084b0d00200520076a2103200420076a21010c010b000b200220036a21020340200220034d450440200320012d00003a0000200141016a2101200341016a21030c010b0b20000be10501097f02400240024002402002200020016b4b0440200120026a2105200020026a21002002410f4d0d032000417c712106200120026a41016b21034100200041037122046b21070340200020064b0440200041016b220020032d00003a0000200341016b21030c010b0b200220046b220420024b0d012004417c7121020240200520076a22054103710440200620026b2108410020026b21072005417c71220041046b21014120200541037441187122096b2203411871210a2003412071210b20002802002103200621000340200020084d0d02200b0d04200041046b22002003200a742001280200220320097672360200200141046b21010c000b000b200620026b2103410020026b2107200120046a41046b2101200621000340200020034d0d01200041046b22002001280200360200200141046b21010c000b000b200420026b220220044b0d01200620076a2100200520076a21050c030b2002410f4d0d012000410020006b41037122046a210620012103034020002006490440200020032d00003a0000200341016a2103200041016a21000c010b0b200220046b220720024b0d002007417c7121050240200120046a22044103710440200520066a21082004417c71220041046a21014120200441037441187122096b2202411871210a2002412071210b20002802002103200621000340200020084f0d02200b0d03200020012802002202200a74200320097672360200200141046a2101200041046a2100200221030c000b000b200520066a210220042101200621000340200020024f0d0120002001280200360200200141046a2101200041046a21000c000b000b200720056b220220074b0d00200520066a2100200420056a21010c010b000b200020026a21020340200020024f0d02200020012d00003a0000200141016a2101200041016a21000c000b000b200541016b2101200020026b21020340200020024d0d01200041016b220020012d00003a0000200141016b21010c000b000b0b4301037f412021020340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b0b8c040300418080040b990350535032325374727563743a3a5472616e736665720000001c020100000000000000010050535032325374727563743a3a5472616e736665723a3a66726f6d50535032325374727563743a3a5472616e736665723a3a746f50535032325374727563743a3a417070726f76616c0000001c020100000000005800010050535032325374727563743a3a417070726f76616c3a3a6f776e657250535032325374727563743a3a417070726f76616c3a3a7370656e6465724572726f7220647572696e672063616c6c20746f20726563656976657241433a3a526f6c65526564756e64616e7441433a3a4d697373696e67526f6c6541433a3a496e76616c696443616c6c6572503a3a4e6f74506175736564503a3a50617573656401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041db83040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041a084040b290100000002000000030000000400000005000000060000000700000008000000090000000c0000000b" + }, + "contract": { + "name": "psp22_minter_pauser", + "version": "0.1.0", + "authors": ["Oleksandr Mykhailenko "] + }, + "V1": { + "spec": { + "constructors": [ + { + "args": [ + { + "name": "total_supply", + "type": { + "displayName": ["Balance"], + "type": 0 + } + }, + { + "name": "name", + "type": { + "displayName": ["Option"], + "type": 19 + } + }, + { + "name": "symbol", + "type": { + "displayName": ["Option"], + "type": 19 + } + }, + { + "name": "decimal", + "type": { + "displayName": ["u8"], + "type": 6 + } + } + ], + "docs": [], + "name": ["new"], + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "from", + "type": { + "displayName": ["Option"], + "type": 23 + } + }, + { + "docs": [], + "indexed": true, + "name": "to", + "type": { + "displayName": ["Option"], + "type": 23 + } + }, + { + "docs": [], + "indexed": false, + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [" Event emitted when a token transfer occurs."], + "name": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 4 + } + }, + { + "docs": [], + "indexed": true, + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 4 + } + }, + { + "docs": [], + "indexed": false, + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Event emitted when an approval occurs that `spender` is allowed to withdraw", + " up to the amount of `value` tokens from `owner`." + ], + "name": "Approval" + } + ], + "messages": [ + { + "args": [], + "docs": [" Returns the token name."], + "mutates": false, + "name": ["PSP22Metadata", "token_name"], + "payable": false, + "returnType": { + "displayName": ["psp22metadata_external", "TokenNameOutput"], + "type": 19 + }, + "selector": "0x3d261bd4" + }, + { + "args": [], + "docs": [" Returns the token symbol."], + "mutates": false, + "name": ["PSP22Metadata", "token_symbol"], + "payable": false, + "returnType": { + "displayName": ["psp22metadata_external", "TokenSymbolOutput"], + "type": 19 + }, + "selector": "0x34205be5" + }, + { + "args": [], + "docs": [" Returns the token decimals."], + "mutates": false, + "name": ["PSP22Metadata", "token_decimals"], + "payable": false, + "returnType": { + "displayName": ["psp22metadata_external", "TokenDecimalsOutput"], + "type": 6 + }, + "selector": "0x7271b782" + }, + { + "args": [ + { + "name": "account", + "type": { + "displayName": ["psp22mintable_external", "MintInput1"], + "type": 4 + } + }, + { + "name": "amount", + "type": { + "displayName": ["psp22mintable_external", "MintInput2"], + "type": 0 + } + } + ], + "docs": [], + "mutates": true, + "name": ["PSP22Mintable", "mint"], + "payable": false, + "returnType": { + "displayName": ["psp22mintable_external", "MintOutput"], + "type": 20 + }, + "selector": "0xfc3c75d4" + }, + { + "args": [ + { + "name": "spender", + "type": { + "displayName": ["psp22_external", "DecreaseAllowanceInput1"], + "type": 4 + } + }, + { + "name": "delta_value", + "type": { + "displayName": ["psp22_external", "DecreaseAllowanceInput2"], + "type": 0 + } + } + ], + "docs": [ + " Atomically decreases the allowance granted to `spender` by the caller.", + "", + " An `Approval` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " by owner for `spender`.", + "", + " Returns `ZeroSenderAddress` error if sender's address is zero.", + "", + " Returns `ZeroRecipientAddress` error if recipient's address is zero." + ], + "mutates": true, + "name": ["PSP22", "decrease_allowance"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "DecreaseAllowanceOutput"], + "type": 20 + }, + "selector": "0xfecb57d5" + }, + { + "args": [ + { + "name": "to", + "type": { + "displayName": ["psp22_external", "TransferInput1"], + "type": 4 + } + }, + { + "name": "value", + "type": { + "displayName": ["psp22_external", "TransferInput2"], + "type": 0 + } + }, + { + "name": "data", + "type": { + "displayName": ["psp22_external", "TransferInput3"], + "type": 22 + } + } + ], + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`", + " with additional `data` in unspecified format.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account Balance.", + "", + " Returns `ZeroSenderAddress` error if sender's address is zero.", + "", + " Returns `ZeroRecipientAddress` error if recipient's address is zero." + ], + "mutates": true, + "name": ["PSP22", "transfer"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "TransferOutput"], + "type": 20 + }, + "selector": "0xdb20f9f5" + }, + { + "args": [ + { + "name": "spender", + "type": { + "displayName": ["psp22_external", "ApproveInput1"], + "type": 4 + } + }, + { + "name": "value", + "type": { + "displayName": ["psp22_external", "ApproveInput2"], + "type": 0 + } + } + ], + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with `value`.", + "", + " An `Approval` event is emitted.", + "", + " # Errors", + "", + " Returns `ZeroSenderAddress` error if sender's address is zero.", + "", + " Returns `ZeroRecipientAddress` error if recipient's address is zero." + ], + "mutates": true, + "name": ["PSP22", "approve"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "ApproveOutput"], + "type": 20 + }, + "selector": "0xb20f1bbd" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["psp22_external", "AllowanceInput1"], + "type": 4 + } + }, + { + "name": "spender", + "type": { + "displayName": ["psp22_external", "AllowanceInput2"], + "type": 4 + } + } + ], + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set `0`." + ], + "mutates": false, + "name": ["PSP22", "allowance"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "AllowanceOutput"], + "type": 0 + }, + "selector": "0x4d47d921" + }, + { + "args": [ + { + "name": "from", + "type": { + "displayName": ["psp22_external", "TransferFromInput1"], + "type": 4 + } + }, + { + "name": "to", + "type": { + "displayName": ["psp22_external", "TransferFromInput2"], + "type": 4 + } + }, + { + "name": "value", + "type": { + "displayName": ["psp22_external", "TransferFromInput3"], + "type": 0 + } + }, + { + "name": "data", + "type": { + "displayName": ["psp22_external", "TransferFromInput4"], + "type": 22 + } + } + ], + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`", + " with additional `data` in unspecified format.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` and `Approval` events are emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the the account Balance of `from`.", + "", + " Returns `ZeroSenderAddress` error if sender's address is zero.", + "", + " Returns `ZeroRecipientAddress` error if recipient's address is zero." + ], + "mutates": true, + "name": ["PSP22", "transfer_from"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "TransferFromOutput"], + "type": 20 + }, + "selector": "0x54b3c76e" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["psp22_external", "BalanceOfInput1"], + "type": 4 + } + } + ], + "docs": [ + " Returns the account Balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "mutates": false, + "name": ["PSP22", "balance_of"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "BalanceOfOutput"], + "type": 0 + }, + "selector": "0x6568382f" + }, + { + "args": [ + { + "name": "spender", + "type": { + "displayName": ["psp22_external", "IncreaseAllowanceInput1"], + "type": 4 + } + }, + { + "name": "delta_value", + "type": { + "displayName": ["psp22_external", "IncreaseAllowanceInput2"], + "type": 0 + } + } + ], + "docs": [ + " Atomically increases the allowance granted to `spender` by the caller.", + "", + " An `Approval` event is emitted.", + "", + " # Errors", + "", + " Returns `ZeroSenderAddress` error if sender's address is zero.", + "", + " Returns `ZeroRecipientAddress` error if recipient's address is zero." + ], + "mutates": true, + "name": ["PSP22", "increase_allowance"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "IncreaseAllowanceOutput"], + "type": 20 + }, + "selector": "0x96d6b57a" + }, + { + "args": [], + "docs": [" Returns the total token supply."], + "mutates": false, + "name": ["PSP22", "total_supply"], + "payable": false, + "returnType": { + "displayName": ["psp22_external", "TotalSupplyOutput"], + "type": 0 + }, + "selector": "0x162df8c2" + }, + { + "args": [], + "docs": [], + "mutates": true, + "name": ["pause"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 20 + }, + "selector": "0x81e0c604" + }, + { + "args": [], + "docs": [], + "mutates": true, + "name": ["unpause"], + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 20 + }, + "selector": "0x67616649" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 0 + } + }, + "name": "supply" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "len": 4294967295, + "offset": "0x0300000000000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 8 + } + }, + "offset": "0x0200000001000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "balances" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0400000001000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "len": 4294967295, + "offset": "0x0500000001000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0500000002000000000000000000000000000000000000000000000000000000", + "ty": 8 + } + }, + "offset": "0x0400000002000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "allowances" + } + ] + } + }, + "name": "psp22" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0500000002000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0600000002000000000000000000000000000000000000000000000000000000", + "ty": 11 + } + }, + "name": null + } + ] + }, + "1": { + "fields": [] + } + } + } + }, + "name": "name" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x0600000002000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0700000002000000000000000000000000000000000000000000000000000000", + "ty": 11 + } + }, + "name": null + } + ] + }, + "1": { + "fields": [] + } + } + } + }, + "name": "symbol" + }, + { + "layout": { + "cell": { + "key": "0x0700000002000000000000000000000000000000000000000000000000000000", + "ty": 6 + } + }, + "name": "decimals" + } + ] + } + }, + "name": "psp22_metadata" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0800000002000000000000000000000000000000000000000000000000000000", + "ty": 12 + } + }, + "name": "paused" + } + ] + } + }, + "name": "pausable" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0900000002000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0a00000002000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0a00000003000000000000000000000000000000000000000000000000000000", + "ty": 13 + } + }, + "len": 4294967295, + "offset": "0x0b00000002000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0b00000003000000000000000000000000000000000000000000000000000000", + "ty": 14 + } + }, + "offset": "0x0a00000003000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "admin_roles" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0b00000003000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0c00000003000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0c00000004000000000000000000000000000000000000000000000000000000", + "ty": 15 + } + }, + "len": 4294967295, + "offset": "0x0d00000003000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0d00000004000000000000000000000000000000000000000000000000000000", + "ty": 17 + } + }, + "offset": "0x0c00000004000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "members" + } + ] + } + }, + "name": "access_control" + } + ] + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "last_vacant", + "type": 2, + "typeName": "Index" + }, + { + "name": "len", + "type": 2, + "typeName": "u32" + }, + { + "name": "len_entries", + "type": 2, + "typeName": "u32" + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "Header"] + } + }, + { + "id": 2, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7, + "typeName": "VacantEntry" + } + ], + "index": 0, + "name": "Vacant" + }, + { + "fields": [ + { + "type": 4, + "typeName": "T" + } + ], + "index": 1, + "name": "Occupied" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 4 + } + ], + "path": ["ink_storage", "collections", "stash", "Entry"] + } + }, + { + "id": 4, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 5, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + } + }, + { + "id": 5, + "type": { + "def": { + "array": { + "len": 32, + "type": 6 + } + } + } + }, + { + "id": 6, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 7, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "next", + "type": 2, + "typeName": "Index" + }, + { + "name": "prev", + "type": 2, + "typeName": "Index" + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "VacantEntry"] + } + }, + { + "id": 8, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 0, + "typeName": "V" + }, + { + "name": "key_index", + "type": 2, + "typeName": "KeyIndex" + } + ] + } + }, + "params": [ + { + "name": "V", + "type": 0 + } + ], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7, + "typeName": "VacantEntry" + } + ], + "index": 0, + "name": "Vacant" + }, + { + "fields": [ + { + "type": 10, + "typeName": "T" + } + ], + "index": 1, + "name": "Occupied" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 10 + } + ], + "path": ["ink_storage", "collections", "stash", "Entry"] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [4, 4] + } + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "str" + } + } + }, + { + "id": 12, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 13, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7, + "typeName": "VacantEntry" + } + ], + "index": 0, + "name": "Vacant" + }, + { + "fields": [ + { + "type": 2, + "typeName": "T" + } + ], + "index": 1, + "name": "Occupied" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": ["ink_storage", "collections", "stash", "Entry"] + } + }, + { + "id": 14, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 2, + "typeName": "V" + }, + { + "name": "key_index", + "type": 2, + "typeName": "KeyIndex" + } + ] + } + }, + "params": [ + { + "name": "V", + "type": 2 + } + ], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7, + "typeName": "VacantEntry" + } + ], + "index": 0, + "name": "Vacant" + }, + { + "fields": [ + { + "type": 16, + "typeName": "T" + } + ], + "index": 1, + "name": "Occupied" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 16 + } + ], + "path": ["ink_storage", "collections", "stash", "Entry"] + } + }, + { + "id": 16, + "type": { + "def": { + "tuple": [2, 4] + } + } + }, + { + "id": 17, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 18, + "typeName": "V" + }, + { + "name": "key_index", + "type": 2, + "typeName": "KeyIndex" + } + ] + } + }, + "params": [ + { + "name": "V", + "type": 18 + } + ], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + } + }, + { + "id": 18, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 11 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 11 + } + ], + "path": ["Option"] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 21 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 21 + } + ], + "path": ["Result"] + } + }, + { + "id": 21, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 11, + "typeName": "String" + } + ], + "index": 0, + "name": "Custom" + }, + { + "index": 1, + "name": "InsufficientBalance" + }, + { + "index": 2, + "name": "InsufficientAllowance" + }, + { + "index": 3, + "name": "ZeroRecipientAddress" + }, + { + "index": 4, + "name": "ZeroSenderAddress" + }, + { + "fields": [ + { + "type": 11, + "typeName": "String" + } + ], + "index": 5, + "name": "SafeTransferCheckFailed" + } + ] + } + }, + "path": ["contracts", "traits", "errors", "psp22", "PSP22Error"] + } + }, + { + "id": 22, + "type": { + "def": { + "sequence": { + "type": 6 + } + } + } + }, + { + "id": 23, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 4 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 4 + } + ], + "path": ["Option"] + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/ink/v2/erc20.contract.json b/.api-contract/src/test/contracts/ink/v2/erc20.contract.json new file mode 100644 index 00000000..507ef147 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v2/erc20.contract.json @@ -0,0 +1,548 @@ +{ + "source": { + "hash": "0x64d9597e882480b2e2e593eccc313cdb3cdd2aece25e6f10bae98f3efb4cdea0", + "language": "ink! 3.0.0-rc6", + "compiler": "rustc 1.58.0-nightly", + "wasm": "0x0061736d01000000016d1060037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060000060017f017e60067f7f7f7f7f7f0060037e7e7f0060017f017f60047f7f7f7f017f60057f7f7f7f7f017f60077f7f7f7f7f7f7f017f60057f7f7f7e7e017f028a020b057365616c30127365616c5f64656275675f6d6573736167650001057365616c30127365616c5f636c6561725f73746f726167650005057365616c30127365616c5f6465706f7369745f6576656e740004057365616c30107365616c5f7365745f73746f726167650003057365616c30107365616c5f6765745f73746f726167650000057365616c300a7365616c5f696e7075740002057365616c300b7365616c5f72657475726e0003057365616c30147365616c5f686173685f626c616b65325f3235360003057365616c300b7365616c5f63616c6c65720002057365616c30167365616c5f76616c75655f7472616e73666572726564000203656e76066d656d6f7279020102100365640004020203030302040302020201010204040303020402060504020202020a0305030100080203050302050201030502030205070507040f0303060100000301020107020101080d010c04000309020b04010103030001010006060601010e0101010101040501700118180608017f01418080040b071102066465706c6f79003d0463616c6c003f091d010041010b171718694f2c5b5c6d4e60676a6b4f2a2a47494b2a6c2a500ab1a40164c40201087f2002410f4d047f2000052000410020006b41037122056a210620012104200021030340200320064f450440200320042d00003a0000200441016a2104200341016a21030c010b0b200220056b2202417c7121070240200120056a22054103710440200620076a21082005417c71220341046a2101200541037422044118712109410020046b411871210a20032802002104200621030340200320084f0d022003200420097620012802002204200a7472360200200141046a2101200341046a21030c000b000b200620076a210420052101200621030340200320044f0d0120032001280200360200200141046a2101200341046a21030c000b000b20024103712102200520076a2101200620076a0b2103200220036a21020340200220034d450440200320012d00003a0000200141016a2101200341016a21030c010b0b20000bf00101037f230041e0006b22042400200441186a20033602002004200236021420042001360210200441386a22014200370300200441306a22054200370300200441286a220642003703002004420037032020044100360240200442808001370254200441b6b304360250200441106a200441d0006a100c2002200441d0006a100d2003200441d0006a100d20042004290350370244200441086a200441406b2004280258100e2004280208200428020c200441206a1007200041186a2001290300370000200041106a2005290300370000200041086a200629030037000020002004290320370000200441e0006a24000b0d0020012000280200412010290b0a0020012000412010290b5e01027f200141086a220328020021042003410036020020012802042103200141ccb004360204200220044b044041e7a904412341fcaa041030000b2001200420026b3602082001200220036a36020420002002360204200020033602000bd70101037f230041d0006b220324002003200236020c20032001360208200341286a22014200370300200341206a22044200370300200341186a220542003703002003420037031020034100360230200342808001370244200341b6b304360240200341086a200341406b100c2002200341406b100d200320032903403702342003200341306a2003280248100e20032802002003280204200341106a1007200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290310370000200341d0006a24000b2201017f230041206b22032400200320002001100f200220031011200341206a24000b4c01017f230041206b22022400200241186a41808001360200200241b6b30436021420024100360210200241086a200241106a2000101320012002280208200228020c1003200241206a24000b2401017f230041206b220424002004200020012002100b200320041011200441206a24000b6102017f017e230041206b220324002001290204210420034100360218200320043703102002290300200241086a290300200341106a102820012003290310370204200341086a20012003280218100e20002003290308370300200341206a24000bcc0102027f057e230041306b220224000240200029030022084202510d0020012900182104200129001021052001290008210620012900002107200041186a22012d0000200141013a00004101710d0020084201520440200241286a2004370300200241206a2005370300200241186a20063703002002200737031020024201370308200241106a10010c010b200241286a2004370300200241206a2005370300200241186a20063703002002200737031020024201370308200041086a200241106a10110b200241306a24000bc70102017f027e230041e0006b220224002002200136020c200241106a2001101620022d00104101460440200220022d00113a0037200241cc006a4102360200200241dc006a41013602002002420237023c200241a48204360238200241023602542002200241d0006a3602482002200241376a36025820022002410c6a360250200241386a41f482041019000b200241186a2903002103200241206a2903002104200041106a200241286a2903003703002000200437030820002003370300200241e0006a24000be40102017f027e230041406a22022400200241808001360224200241b6b30436022002400240024002402001200241206a10360e0402010100010b200041003a0000200041086a42003703000c020b2002413c6a4100360200200241ccb0043602382002420137022c200241a8b104360228200241286a41f0b1041019000b20022002290320370328200241086a200241286a10272002290308a70440200041013b01000c010b200241186a290300210320022903102104200041003a0000200041106a2004370300200041086a4201370300200041186a20033703000b200241406b24000bd90401017f230041106b22022400024002400240024002400240024002400240024002400240024020002d000041016b0e0b0102030405060708090a0b000b4101210020012802184194ae0441062001411c6a28020028020c1100000d0b024020012d0000410471450440200128021841b08c044101200128021c28020c1100000d0d200128021841f4b2044105200128021c28020c110000450d010c0d0b200128021841ae8c044102200128021c28020c1100000d0c200241013a000f200241086a2002410f6a36020020022001290218370300200241f4b204410510620d0c200241ac8c04410210620d0c0b200128021841b18c044101200128021c28020c11000021000c0b0b20012802184187ae04410d2001411c6a28020028020c11000021000c0a0b200128021841f9ad04410e2001411c6a28020028020c11000021000c090b200128021841eead04410b2001411c6a28020028020c11000021000c080b200128021841d5ad0441192001411c6a28020028020c11000021000c070b200128021841c7ad04410e2001411c6a28020028020c11000021000c060b200128021841b3ad0441142001411c6a28020028020c11000021000c050b200128021841a7ad04410c2001411c6a28020028020c11000021000c040b2001280218419cad04410b2001411c6a28020028020c11000021000c030b20012802184195ad0441072001411c6a28020028020c11000021000c020b20012802184186ad04410f2001411c6a28020028020c11000021000c010b200128021841f4ac0441122001411c6a28020028020c11000021000b200241106a240020000b810201047f230041406a220224002000280200210441002100200241346a4100360200200241ccb00436023020024201370224200241a0af04360220027f4101200141186a28020022052001411c6a2802002201200241206a105f0d001a024003402002410436021c20024104360214200241ccaf043602102002410436020c200241acaf043602082002410336023c200241033602342002410336022c200241033602242002200020046a22033602202002200341036a3602382002200341026a3602302002200341016a3602282002200241206a36021820052001200241086a105f0d01200041046a22004120470d000b41000c010b41010b200241406b24000be70301077f230041106b220224002002200136020c200220003602082002419c8a04360204200241ccb004360200230041406a220324002003200236020c200341346a41013602002003420237022420034190ab043602202003410836023c2003200341386a36023020032003410c6a360238200341106a210641002101230041206b22042400200341206a220528020021072005280204220841037422000440200741046a21020340200228020020016a2101200241086a2102200041086b22000d000b0b024002400240024002400240200541146a280200450440200121000c010b02402008450d0020072802040d004100210220014110490d020b41002102200120016a22002001490d010b200022024100480d010b20042002104d20042802002200450d0120042802042101200641003602082006200036020020062001360204200441186a200541106a290200370300200441106a200541086a290200370300200420052902003703082006200441086a10450d02200441206a24000c030b104c000b000b419887044133200441086a41f4850441b888041044000b2003280210210020032802182101024041b4b3042d000045044041b5b3042d00004101710d010b200020011000410947044041b4b30441013a00000b41b5b30441013a00000b000b900102017f017e230041406a22042400200441106a2000280200200041046a280200200041086a280200101b20042902142105200441003602282004200537032020012002200441206a101c2003200441206a100d20042004290320370214200441086a200441106a2004280228100e200441206a2004280208200428020c101d2000200441206a101e200441406b24000b3300200120034b0440200120034194ac04102b000b20004100360200200041086a200320016b3602002000200120026a3602040b100020012002102420022000200110290bb50101077f230041206b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341186a22074200370300200341106a22084200370300200341086a22094200370300200342003703002001200220031007200420072903003700002005200829030037000020062009290300370000200020032903003700000c010b20002002200120024184830410210b200341206a24000b5f01037f230041206b22022400200241086a20002802042203200041086a28020020002802002204102320024100360218200220022903083703102001200241106a100d200020033602042000200420022802186a360200200241206a24000b900102017f017e230041406a22042400200441106a2000280200200041046a280200200041086a280200101b20042902142105200441003602282004200537032020012002200441206a101c2003200441206a102020042004290320370214200441086a200441106a2004280228100e200441206a2004280208200428020c101d2000200441206a101e200441406b24000b230020002d000041014704402001410010330f0b200141011033200041016a2001100d0b7b0020012003460440200020022001100a1a0f0b230041306b2200240020002003360204200020013602002000411c6a41023602002000412c6a41043602002000420337020c200041ec9104360208200041043602242000200041206a360218200020003602282000200041046a360220200041086a20041019000b5f01037f230041206b22012400200141086a20002802042202200041086a28020020002802002203102320014100360218200120012903083703104103200141106a1024200020023602042000200320012802186a360200200141206a24000b2900200220034904402003200241a48304102b000b2000200220036b3602042000200120036a3602000b7401017f230041106b2202240002402000413f4d04402001200041027410330c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210290c010b200041ffffffff034d044020004102744102722001103b0c010b20014103103320002001103b0b200241106a24000bae0102017f027e230041406a22022400200241186a200110260240024020022d001841014704402002200110272002290300a7450d010b200042013703000c010b200241106a2903002103200229030821042000200229001937000820004200370300200041286a2004370300200041306a2003370300200041206a200241316a290000370000200041186a200241296a290000370000200041106a200241216a2900003700000b200241406b24000bb50202037f017e230041306b22022400200241086a41047221042000027f0240034020022001102f20022d00004101710d01200320046a20022d00013a0000200341016a22034120470d000b200041086a200241136a2f00003b00002000410a6a200241156a2d00003a00002000410f6a2002411a6a2f01003b0000200041116a2002411c6a2d00003a0000200041166a200241216a2f00003b0000200041186a200241236a2d00003a0000200220022f010c3b0104200220022d000e3a0006200241166a28010021012002411d6a2800002103200241246a2902002105200228000f2104200041036a20022d00063a0000200020022f01043b0001200041196a2005370000200041126a20033600002000410b6a2001360000200041046a200436000041000c010b41010b3a0000200241306a24000b6402027f037e230041106b22022400200241086a22034200370300200242003703000240200120024110102d45044020032903002105200229030021060c010b420121040b2000200637030820002004370300200041106a2005370300200241106a24000b2a01017f230041106b2203240020032001370308200320003703002002200341101029200341106a24000b5201027f230041106b22032400200341086a20002802082204200220046a22042000280200200028020441e4ab0410572003280208200328020c2001200241f4ab04102120002004360208200341106a24000b0300010b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41043602002003420237020c200341c89004360208200341043602242003200341206a3602182003200341046a36022820032003360220200341086a20021019000bc00101037f230041306b220224004183af042103411921040240024002400240024020002d000041016b0e0400010203040b41e7ae042103411c21040c030b41d1ae042103411621040c020b41bdae042103411421040c010b41a4ae0421030b2002411c6a41013602002002200436022c20022003360228200241063602242002420137020c2002419cae04360208200141186a2802002001411c6a2802002002200241286a3602202002200241206a360218200241086a105f200241306a24000b3d01027f2000280204220320024922044504402001200220002802002201200241e4b20410212000200320026b3602042000200120026a3602000b20040b910102027f017e230041106b220124002001420437030841042102027f02400240034020012000102f20012d00004101710d01200141086a20026a20012d00013a0000200241016a22024108470d000b20012903082203a741044f0d0141ccb004411b41e8b0041030000b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b3f01027f230041106b22022400200241003a000f200020012002410f6a4101102d2201047f41000520022d000f0b3a0001200020013a0000200241106a24000b4601017f230041206b22032400200341146a4100360200200341ccb004360210200342013702042003200136021c200320003602182003200341186a360200200320021019000bbe0502047f027e230041a0016b22012400200141086a200041e000100a1a200141106a21030240200129030822064201520440200141f0006a220241808001360200200141b6b30436026c20014100360268200141e8006a102220014198016a220020022802003602002001200129036837039001200141e8006a20014190016a41c483041032200141e8006a41d0830441152003101f20002002280200360200200120012903683703900120014190016a41e583044113200341216a101f0c010b200141f0006a220241808001360200200141b6b30436026c20014100360268200141e8006a102220014198016a220020022802003602002001200129036837039001200141e8006a20014190016a418884041032200141e8006a4194840441162003101a20002002280200360200200120012903683703900120014190016a41aa84044118200141306a101a0b20014188016a2000280200360200200120012903900137038001230041206b22002400200041186a220420014180016a220241086a28020036020020002002290200220537031020004100360210200041086a200041106a2005a7100e20002903082105200141e8006a220241086a2004280200360200200220002903103702002002200537020c200041206a240020014198016a200141f0006a2802003602002001200129036837039001200141f8006a2802002100200128027420012902940121052001410036027020012005370368027f2006500440200141e8006a410010332003200141e8006a1020200341216a200141e8006a1020200141d8006a0c010b200141e8006a410110332003200141e8006a100d200141306a200141e8006a100d200141d0006a0b2203290300200341086a290300200141e8006a10282001200129036837029401200120014190016a2001280270100e2000200128020020012802041002200141a0016a24000bb40102027f017e230041406a22032400200341106a2001280200200141046a280200200141086a2204280200101b20032902142105200341003602282003200537032020022802002002280204200341206a101c200341206a2002280208410f102920032003290320370214200341086a200341106a2003280228100e200341206a2003280208200328020c101d2001200341206a101e200041086a200428020036020020002001290200370200200341406b24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b200220034184ac041056000b4601017f230041206b22012400200141186a41808001360200200141b6b30436021420014100360210200141086a200141106a2000101341002001280208200128020c1037000baa0102047f017e230041206b22032400200341186a41808001360200200341b6b30436021420034100360210200341086a230041206b22022400200341106a220429020421062002410036021820022006370310200241106a200141ff0171410247047f200241106a4101103320010541000b103320042002290310370204200241086a20042002280218100e2002290308370300200241206a240020002003280208200328020c1037000b5401017f230041106b220224002002200128020436020c200020012802002002410c6a100421002001200228020c1039410c21012000410b4d0440200041027441fcb2046a28020021010b200241106a240020010b0b002000200120021006000b6001017f230041106b2201240020004200370000200041186a4200370000200041106a4200370000200041086a420037000020014120360204200120003602002001412036020c20002001410c6a10082001200128020c1039200141106a24000b3701017f230041106b22022400200241086a410020012000280200200028020441e4ac04105720002002290308370200200241106a24000b4c01017f230041206b220324002000450440410120021035000b200341186a4200370300200341106a4200370300200341086a420037030020034200370300200120031014410020021035000b2601017f230041106b220224002002200036020c20012002410c6a41041029200241106a24000b2e01017f230041e0006b22012400200141086a200041d800100a1a2001420037030020011031200141e0006a24000b880502027f027e230041e0026b22002400200041808001360224200041b6b304360220200041206a103e200020002903203703a801027f0240027f4101200041a8016a102e4281feffffff1f834280b6baede90b520d001a200041086a200041a8016a1027200041186a29030021022000290310210320002802084100470b450440200041e1016a4200370000200041d9016a4200370000200041d1016a4200370000200041c9016a4200370000200041f8016a420037030020004180026a420037030020004188026a420037030020004198026a4200370300200041a0026a4200370300200041a8026a4200370300200042013703f0012000420237039002200041013a00c801200042023703a801200020023703b802200020033703b002200041c0026a1038200041f0016a200041c0026a200041b0026a101020002903a8014202510d01200042013703a801200041b0016a0c020b200041033a00c002200041bc016a4101360200200042013702ac01200041e884043602a801200041053602242000200041206a3602b8012000200041c0026a360220200041a8016a41a085041019000b200042013703a801200041b0016a0b2201200337030020012002370308200041c0016a220141003a0000200041f0006a2002370300200041da006a200041d8026a290300370100200041d2006a200041d0026a290300370100200041ca006a200041c8026a290300370100200041c2006a20002903c00237010020002003370368200041013a0041200041003a0020200041206a103c200041206a200041a8016a418801100a1a20014200370300200041b8016a4200370300200041b0016a4200370300200042003703a801200041206a200041a8016a1014200041e0026a24000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10052000200128020c1039200141106a24000bb32002077f077e230041e0046b2200240002400240230041206b22012400200141086a220242003703002001420037030020014110360214200120013602102001411036021c20012001411c6a1009200141106a200128021c10392002290300210720012903002108200141206a2400410541042007200884501b41ff017122014105460440200041808001360264200041b6b304360260200041e0006a103e200020002903603703a801200041a8016a102e22074201832208a70d01200742807e8342002008501b22094280feffffff1f832207422088a721032007421888a721022007421088a721044106210102400240024002400240024002402009a741087641ff01712206410b6b0e050509090901000b0240200641e8006b0e03040902000b2006418401460d02200641db0147200441ff017141e3004772200241ff017141f50047720d0841002102200341a801460d050c080b200441ff017141f50047200241ff017141da004772200341d60047720d0720004188026a200041a8016a10264101210220002d0088024101460d06200041c0016a20004192026a290100370300200041c8016a2000419a026a290100370300200041cf016a200041a1026a2900003700002000200029018a023703b80120002d00890221050c040b200441ff0171200241ff017141164772200341de0047720d06200041c0036a200041a8016a102620002d00c0034101460d0520004180046a200041a8016a102620002d0080044101460d05200041aa026a200028008404360000200041d8006a200041a0046a2d00003a000020004190026a200041ca036a29010037030020004198026a200041d2036a2901003703002000419f026a200041d9036a29000037000020002000280081043600a702200020002901c20337038802200020004198046a29030037035020004190046a290300210820004188046a290300210720002d00c1032105200041b8016a20004188026a4126100a1a410221020c030b200441ff017141a10147200241ff017141dd004772200341a10147720d0520004188026a200041a8016a10252000290388024201510d042000419e046a200041a8026a290300220737010020004196046a200041a0026a2903002208370100200041ce036a20004198026a290300220a370100200041d6036a2008370100200041de036a2007370100200041ee016a200a370000200041f6016a2008370000200041fe016a2007370000200020002903900222073701c603200020073700e601200041b8026a2903002108200041b0026a2903002107200041b8016a200041e0016a4126100a1a410321020c020b200441ff0171411247200241ff017141e6004772200341a00147720d0420004188026a200041a8016a10252000290388024201510d032000419e046a200041a8026a290300220737010020004196046a200041a0026a2903002208370100200041ce036a20004198026a290300220a370100200041d6036a2008370100200041de036a2007370100200041ee016a200a370000200041f6016a2008370000200041fe016a2007370000200020002903900222073701c603200020073700e601200041b8026a2903002108200041b0026a2903002107200041b8016a200041e0016a4126100a1a410421020c010b200441ff0171413947200241ff017141ef0047722003411847720d03200041b8016a200041a8016a102620002d00b8014101460d02200041e0016a200041a8016a102620002d00e0014101460d02200041386a200041a8016a10272000290338a70d02200041c8006a290300210a2000290340210b200041a8036a2201200041d1016a290000370300200041a0036a2205200041c9016a29000037030020004198036a2202200041c1016a290000370300200041d8006a200041f9016a2d00003a0000200020002900b901370390032000200041f1016a2900003703502000200041fa016a2801003602b0012000200041fd016a2800003600b301200041e9016a290000210820002900e10121072000419e026a200529030022093701002000418e046a2002290300220c37010020004196046a20093701002000419e046a2001290300220d370100200041de036a200d370000200041d6036a2009370000200041ce036a200c3700002000200029039003220937018604200020093700c603200041b8016a200041c0036a4126100a1a410521020b20004180016a200041b8016a4126100a1a200041f8006a200041d8006a2d00003a000020002000290350370370200020002802b001360268200020002800b30136006b200221010c020b200020013a008802230041206b22012400200141146a4101360200200142013702042001419cae043602002001410536021c200120004188026a3602182001200141186a360210200141a085041019000b410621010b024020014106470440200041b8016a20004180016a4126100a1a200041bc036a200028006b360000200041b8036a2203200041f8006a2d00003a0000200020002802683600b903200041d8006a220220032903003703002000200029037022093703b00320002009370350200041e0016a200041b8016a4126100a1a024002400240024002400240200141016b0e050403020100050b200041c1026a4200370000200041b9026a4200370000200041b1026a4200370000200041a9026a4200370000200041d8026a4200370300200041e0026a4200370300200041e8026a4200370300200041f8026a420037030020004180036a420037030020004188036a4200370300200042013703d00241012101200041013a00a8022000420237038802200042023703f00220004198016a200041fe016a29000037030020004190016a200041f6016a29000037030020004188016a200041ee016a290000370300200020002900e60137038001200020083703c803200020073703c003200041d8036a2002290300370300200020002903503703d00320004180046a1038200041286a20004188026a20004180016a20004180046a1040024020002903282208200b542202200041306a2903002207200a542007200a511b0d0020004188026a20004180016a200041c0036a200b200a104141ff017122014102470d0020002008200b7d3703900320002007200a7d2002ad7d37039803200041f0026a20004180016a20004180046a20004190036a1012410221010b200141024620004188026a2001103a000b200041c1026a4200370000200041b9026a4200370000200041b1026a4200370000200041a9026a4200370000200041d8026a4200370300200041e0026a4200370300200041e8026a4200370300200041f8026a420037030020004180036a420037030020004188036a4200370300200042013703d002200041013a00a8022000420237038802200042023703f002200041a8036a2201200041fe016a290000370300200041a0036a2202200041f6016a29000037030020004198036a2203200041ee016a290000370300200020002900e60137039003200020083703b803200020073703b00320004180016a1038200041f0026a20004180016a20004190036a200041b0036a1012200041d8036a20004198016a290300370300200041d0036a20004190016a290300370300200041c8036a20004188016a290300370300200041e8036a2003290300370300200041f0036a2002290300370300200041f8036a200129030037030020002000290380013703c00320002000290390033703e00320004188046a200041c0036a41c000100a1a200041d0046a2008370300200041c8046a2007370300200042013703800420004180046a1031410120004188026a4102103a000b200041c1026a4200370000200041b9026a4200370000200041b1026a4200370000200041a9026a4200370000200041d8026a4200370300200041e0026a4200370300200041e8026a4200370300200041f8026a420037030020004180036a420037030020004188036a4200370300200042013703d002200041013a00a8022000420237038802200042023703f002200041d8036a200041fe016a290000370300200041d0036a200041f6016a290000370300200041c8036a200041ee016a290000370300200020002900e6013703c00320004180046a103820004188026a20004180046a200041c0036a20072008104141ff0171220141024620004188026a2001103a000b200041c1026a4200370000200041b9026a4200370000200041b1026a4200370000200041a9026a4200370000200041d8026a4200370300200041e0026a4200370300200041e8026a4200370300200041f8026a420037030020004180036a420037030020004188036a4200370300200042013703d002200041013a00a8022000420237038802200042023703f00220004180046a200041b8016a4126100a1a20004189016a200041c0016a29010037000020004191016a200041c8016a29010037000020004198016a200041cf016a290000370000200020053a008001200020002901b80137008101200041cf036a2008370000200041df036a20022d00003a0000200020073700c7032000200041a2046a2800003600c3032000200028009f043602c003200020002903503700d703200041186a20004188026a20004180016a200041c0036a10402000200041206a29030037039803200020002903183703900320004190036a1034000b200041c1026a4200370000200041b9026a4200370000200041b1026a4200370000200041a9026a4200370000200041d8026a4200370300200041e0026a4200370300200041e8026a4200370300200041f8026a420037030020004180036a420037030020004188036a4200370300200042013703d002200041013a00a8022000420237038802200042023703f002200020053a00800420004189046a200041c0016a29010037000020004191046a200041c8016a29010037000020004198046a200041cf016a290000370000200020002901b80137008104200041086a20004188026a20004180046a10422000200041106a2903003703c803200020002903083703c003200041c0036a1034000b200041d8036a22014200370300200041d0036a22024200370300200041c8036a4200370300200042003703c00320004180800136028404200041b6b304360280040240024002400240200041c0036a20004180046a10360e0401000002000b2000419c026a4100360200200041ccb004360298022000420137028c02200041a8b1043602880220004188026a41f0b1041019000b200041a8026a2001290300370300200041a0026a200229030037030020004198026a200041c8036a290300370300200020002903c00337039002200042013703880220004180046a20004190026a101620002d0080044101460d0320004188046a2903004200520d0141d88104411741f081041043000b41808004411e41d880041043000b20004198046a2903002107200020004190046a29030037038004200020073703880420004180046a1034000b200041033a00c0032000419c026a41013602002000420137028c02200041d48504360288022000410536028404200020004180046a360298022000200041c0036a3602800420004188026a41a085041019000b200020002d0081043a00800141e88004412720004180016a4194830441c881041044000b5d02017f017e230041406a22042400200441206a200141e8006a20022003100b200441086a200441206a1015200429031021052000200441186a2903004200200428020822011b37030820002005420020011b370300200441406b24000bda0202037f037e23004180016b22052400200541186a200020011042200529031822092003542207200541206a290300220820045420042008511b4504402005200920037d3703282005200820047d2007ad7d370330200041c8006a22062001200541286a1010200541086a200020021042200541106a290300210820052005290308220920037c220a37032820052009200a56ad200420087c7c37033020062002200541286a1010200541f8006a2004370300200541c1006a200141186a290000370000200541396a200141106a290000370000200541316a200141086a290000370000200541ca006a2002290000370100200541d2006a200241086a290000370100200541da006a200241106a290000370100200541e2006a200241186a29000037010020052003370370200541013a0049200541013a002820052001290000370029200541286a103c410221060b20054180016a240020060b5b02017f017e230041406a22032400200341206a200141c8006a2002100f200341086a200341206a1015200329031021042000200341186a2903004200200328020822011b37030820002004420020011b370300200341406b24000b6001017f230041106b220324002003200136020c20032000360208230041206b22002400200041146a4101360200200042013702042000419cae043602002000410636021c2000200341086a3602182000200041186a360210200020021019000b7c01017f230041406a220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41073602002005420237021c200541fcb004360218200541063602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041019000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41dc8504200241086a1046200241206a24000bfc0301057f230041406a22032400200341346a2001360200200341033a00382003428080808080043703182003200036023041002101200341003602282003410036022002400240024020022802082200450440200241146a28020041ffffffff0171220641016a210520022802102104410021000340200541016b2205450d02200228020020006a220141046a28020022070440200328023020012802002007200328023428020c1100000d040b200020046a2101200041086a21002001280200200341186a200141046a280200110100450d000b0c020b2002410c6a28020022064105742105200641ffffff3f71210603402005450d01200228020020016a220441046a28020022070440200328023020042802002007200328023428020c1100000d030b200320002d001c3a003820032000290204422089370318200341106a20022802102204200041146a105d20032003290310370320200341086a20042000410c6a105d20032003290308370328200141086a2101200541206b210520002802002107200041206a2100200420074103746a2204280200200341186a2004280204110100450d000b0c010b4100210020062002280204492201450d012003280230200228020020064103746a410020011b22012802002001280204200328023428020c110000450d010b410121000b200341406b240020000b0f00200028020020012002104841000b2801017f20002002104a2000280208220320002802006a20012002100a1a2000200220036a3602080b960201027f230041106b22022400200028020021000240200141ff004d044020002802082203200028020446044020004101104a200028020821030b2000200341016a360208200028020020036a20013a00000c010b2002410036020c20002002410c6a027f20014180104f044020014180800449044020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040c010b20022001413f71418001723a000d2002200141067641c001723a000c41020b10480b200241106a240041000ba70301077f230041106b2205240002400240200120002802042207200028020822026b4b0440200120026a22012002490d022000280200410020071b210841002102230041106b220624002005027f20074101742204200120012004491b22014108200141084b1b220141004e0440027f0240200804402007450440200641086a2001104d20062802082103200628020c0c030b200141acb304280200220420016a22022004490d021a41b0b3042802002002490440200141ffff036a220341107640002202417f46200241ffff0371200247720d022002411074220420034180807c716a22022004490d024100210341b0b30420023602002001200120046a22022004490d031a0b41acb304200236020020012004450d021a200420082007100a210320010c020b20062001104d2006280200210320062802040c010b4100210320010b2102200304402005200336020441000c020b20052001360204410121020b41010b360200200541086a2002360200200641106a240020052802004101460d01200020052902043702000b200541106a24000f0b200541086a280200450d00000b104c000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1045200241206a24000b0f0041f586044111418887041030000ba90101027f027f41012001450d001a410041acb304280200220220016a22032002490d001a024041b0b3042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141b0b30420033602004100200120026a22032002490d021a0b41acb304200336020020020c010b41000b210320002001360204200020033602000b0e0020002802001a03400c000b000bc00202047f027e20003502002106230041306b2203240041272100024020064290ce00540440200621070c010b0340200341096a20006a220241046b200620064290ce008022074290ce007e7da7220441ffff037141e4006e220541017441b48d046a2f00003b0000200241026b2004200541e4006c6b41ffff037141017441b48d046a2f00003b0000200041046b2100200642ffc1d72f56200721060d000b0b2007a7220241e3004a0440200041026b2200200341096a6a2007a72202200241ffff037141e4006e220241e4006c6b41ffff037141017441b48d046a2f00003b00000b02402002410a4e0440200041026b2200200341096a6a200241017441b48d046a2f00003b00000c010b200041016b2200200341096a6a200241306a3a00000b200141ccb0044100200341096a20006a412720006b1051200341306a24000b0d00429e9fe3ccf2a3c7c8fb000bb30301077f230041106b2206240020002802002205410171220820046a210702402005410471450440410021010c010b2001200120026a105220076a21070b412b418080c40020081b210802402000280208410147044041012105200020082001200210530d012000280218200320042000411c6a28020028020c11000021050c010b024020072000410c6a280200220949044020002d00004108710d014101210520062000200920076b4101105420062802002207418080c400460d0220062802042109200020082001200210530d022000280218200320042000411c6a28020028020c1100000d02200720092000105521050c020b41012105200020082001200210530d012000280218200320042000411c6a28020028020c11000021050c010b2000280204210a2000413036020420002d0020210b41012105200041013a0020200020082001200210530d00200641086a2000200920076b4101105420062802082201418080c400460d00200628020c21022000280218200320042000411c6a28020028020c1100000d0020012002200010550d002000200b3a00202000200a360204410021050b200641106a240020050b2b01017f200020014704400340200220002c000041bf7f4a6a2102200041016a22002001470d000b0b20020b4b000240027f2001418080c4004704404101200028021820012000411c6a2802002802101101000d011a0b20020d0141000b0f0b2000280218200220032000411c6a28020028020c1100000b9b0101027f20022105024002400240200320012d0020220320034103461b41ff017141016b0e03000100020b41002105200221040c010b20024101762104200241016a41017621050b200441016a21022001411c6a2802002103200128020421042001280218210102400340200241016b2202450d01200120042003280210110100450d000b418080c40021040b20002005360204200020043602000b4701027f2002411c6a28020021032002280218210441002102027f0340200120012002460d011a200241016a2102200420002003280210110100450d000b200241016b0b2001490b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41043602002003420237020c200341808b04360208200341043602242003200341206a360218200320033602282003200341046a360220200341086a20021019000bd2010002400240200120024d0440200220044d0d01230041306b2200240020002004360204200020023602002000411c6a41023602002000412c6a41043602002000420237020c200041e890043602080c020b230041306b2200240020002002360204200020013602002000411c6a41023602002000412c6a41043602002000420237020c2000419c91043602080c010b2000200220016b3602042000200120036a3602000f0b200041043602242000200041206a3602182000200041046a36022820002000360220200041086a20051019000b5301047f200141086a280200210220012802042103200141046a10592204418080c4004704402001200128020420012802002205200220036b6a6a20012802086b3602000b20002004360204200020053602000bb70101047f200028020022012000280204460440418080c4000f0b2000200141016a36020020012d00002203411874411875417f4c047f2000200141026a36020020012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020020012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602002004411274418080f0007120012d0003413f71200241067472720520030b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b980301057f230041306b2202240020012802102105200028020421042000280200210302400240024020012802082206410147044020050d012001280218200320042001411c6a28020028020c11000021000c030b2005450d010b200141146a28020020022003360224200241286a200320046a3602002002410036022041016a210002400340200041016b22000440200241186a200241206a1058200228021c418080c400470d010c020b0b200241106a200241206a10582002280214418080c400460d00200241086a200228021020032004105a200228020c2004200228020822001b21042000200320001b21030b20060d002001280218200320042001411c6a28020028020c11000021000c010b2001410c6a28020022002003200320046a105222054b044020022001200020056b410010544101210020022802002205418080c400460d01200228020421062001280218200320042001411c6a28020028020c1100000d01200520062001105521000c010b2001280218200320042001411c6a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141a48d04102b000b200041800120026b3602042000200120026a3602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1046200341206a24000b6c01027f230041206b220224004101210302402000200110610d002002411c6a4100360200200241ccb0043602182002420137020c200241cc8804360208200141186a2802002001411c6a280200200241086a105f0d00200041046a2001106121030b200241206a240020030b850201037f23004190016b22022400027f02402001280200220341107145044020034120710d0120002001104f0c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a105e2001419caf0441022002280208200228020c10510c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a105e2001419caf0441022002280200200228020410510b20024190016a24000bc306010c7f230041406a22032400027f024020020440200341386a210d2000280204210b2000280200210c2000280208210a0340200a2d00000440200c41918b044104200b28020c1100000d030b2003410a3602382003428a808080103703302003200236022c4100210020034100360228200320023602242003200136022041012107200341086a2001220420022205027f03400240200020046a2106200320076a41376a2d000021070240024002400240200541084f0440200641036a417c7120066b2200450440410021040c020b200341186a410020052000200020054b1b22042006200541f48f041057200328021c2208450d0120032802182109410021000340200020096a2d00002007460d03200041016a22002008470d000b0c010b2005450d04410021000340200020066a2d00002007460d02200041016a22002005470d000b0c040b02402004200541086b22084b0d00200741818284086c21000340200420066a2209280200200073220e417f73200e41818284086b71200941046a2802002000732209417f73200941818284086b7172418081828478710d01200441086a220420084d0d000b0b200420054b0d0120042005460d03200420056b2105200420066a21064100210003402007200020066a2d00004704402005200041016a22006a0d010c050b0b200020046a21000b2003200020032802286a41016a2200360228200020032802342204490d01200020032802244b0d0120032802202105200341106a41002004200d4104418094041057024020032802142004460440027f2005200020046b22086a210020032802102105034041002004450d011a200441016b210420052d0000210620002d00002107200041016a2100200541016a210520062007460d000b200720066b0b450d010b200328022821000c020b200a41013a0000200841016a0c040b2004200541849004102b000b200328022c22042000490d00200420032802244b0d00200420006b210520032802342107200328022021040c010b0b200a41003a000020020b2200418c8c041063200c2003280208200328020c200b28020c1100000d022003200120022000419c8c04106420032802002101200328020422020d000b0b41000c010b41010b200341406b24000b4e01027f230041106b22052400200541086a200320012002105a20052802082206450440200120024100200320041065000b200528020c21012000200636020020002001360204200541106a24000b4d0002402003450d000240200220034d044020022003470d010c020b200120036a2c000041bf7f4a0d010b200120022003200220041065000b2000200220036b3602042000200120036a3602000b9b0601027f23004180016b220524002005200336021c200520023602182005027f20014181024f0440418002210602400340200020066a2c000041bf7f4a0d01200641016b22060d000b410021060b200541106a20002001200641fc920410632005200529031037032020054190940436022841050c010b2005200136022420052000360220200541ccb00436022841000b36022c024002402005200120024f047f200120034f0d0120030520020b360238200541d4006a4103360200200541ec006a4106360200200541e4006a410636020020054203370244200541b894043602402005410436025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580c010b200541086a20002001027f02400240200220034d04402002450d010240200120024d044020012002470d010c030b200020026a2c000041bf7f4a0d020b20052002360230200221030c020b200541f4006a4106360200200541ec006a4106360200200541e4006a4104360200200541d4006a410436020020054204370244200541f494043602402005410436025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580c030b2005200336023041002003450d011a0b03400240200120034d044020012003470d0120010c030b200020036a2c00004140480d0020030c020b200341016b22030d000b41000b22062004106420052005280208220036025820052000200528020c6a36025c2005200541d8006a1059200410662200360234200520063602382005027f41012000418001490d001a41022000418010490d001a41034104200041808004491b0b20066a36023c200541d4006a4105360200200541fc006a4106360200200541f4006a4106360200200541ec006a410a360200200541e4006a410b36020020054205370244200541c895043602402005410436025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580b200541406b20041019000b1a002000418080c40046044041d88904412b20011030000b20000b8f0802077f017e4101210602402001280218220741272001411c6a28020028021022081101000d0041f4002103410221010240027f02400240027f0240024002402000280200220241096b0e050704010105000b2002412746200241dc0046720d010b2002410b7421044100210141202103412021000240027e02400240027f034002402004200341017620016a220341027441a4a3046a280200410b7422054d044020042005470440200321000c020b41010c030b200341016a21010b200020016b2103200020014b0d000b2001210341000b20036a2204411f4d04402004410274210141c20521032004411f470440200141a8a3046a28020041157641016b21030b410021002004200441016b22054f0440200541204f0d02200541027441a4a3046a28020041ffffff007121000b02402003200141a4a3046a2802004115762201460d00200141c305200141c3054b1b2104200220006b21054100210003400240200120044704402000200141a4a4046a2d00006a220020054d0d01200121030c030b200441c3054184a3041056000b2003200141016a2201470d000b0b20034101710d02024002402002418080044f04402002418080084f0d01200241ab9c04412a41ff9c0441c00141bf9e0441b60310680d070c020b2002418c9704412841dc970441a00241fc990441af021068450d010c060b200241e0ffff007141e0cd0a46200241b9ee0a6b41074972200241feffff0071419ef00a46200241a29d0b6b410e497272200241e1d70b6b419f18492002419ef40b6b41e20b4972200241cba60c6b41b5db2b4972720d00200241f08338490d050b200241017267410276410773ad4280808080d000840c030b2004412041f4a2041056000b200541204194a3041056000b200241017267410276410773ad4280808080d000840b210941032101200221030c060b41010c010b41020b2101200221030c030b41ee000c010b41f2000b21030b034020012102410021012003210002400240024002400240200241016b0e03040200010b024002400240024002402009422088a741ff017141016b0e050004010203050b200942ffffffff8f6083210941fd002100410321010c070b200942ffffffff8f608342808080802084210941fb002100410321010c060b200942ffffffff8f608342808080803084210941f5002100410321010c050b200942ffffffff8f60834280808080c00084210941dc002100410321010c040b413041d70020032009a7220141027476410f712200410a491b20006a41c88904106621002001450d02200942017d42ffffffff0f83200942808080807083842109410321010c030b20074127200811010021060c040b41dc002100410121010c010b200942ffffffff8f6083428080808010842109410321010b200720002008110100450d000b0b20060be00201087f230041106b2208240041012107024002402002450d00200120024101746a210a20004180fe0371410876210b41002102200041ff0171210d0340200141026a210c200220012d00016a2109200b20012d000022014704402001200b4b0d0220092102200c2201200a470d010c020b200841086a200220092003200441ec9604105720082802082102200828020c2101024003402001450d01200141016b210120022d0000210e200241016a2102200d200e470d000b410021070c030b20092102200c2201200a470d000b0b2006450d00200520066a2103200041ffff0371210203400240200541016a2100027f200020052d00002201411874411875220441004e0d001a20002003460d0120052d0001200441ff0071410874722101200541026a0b2105200220016b22024100480d022007410173210720032005470d010c020b0b41d88904412b41fc96041030000b200841106a240020074101710b7e01037f23004190016b2202240020002d0000210341ff0021000340200241106a20006a413041372003410f712204410a491b20046a3a0000200041016b21002003220441047621032004410f4b0d000b200241086a200241106a200041016a105e2001419caf0441022002280208200228020c105120024190016a24000b5b01027f230041206b220224002001411c6a28020021032001280218200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1046200241206a24000b0b0020002802002001105b0b1b00200128021841f4b20441052001411c6a28020028020c1100000bfe0201037f230041406a2202240020002802002103410121000240200141186a280200220441ac8a04410c2001411c6a280200220128020c1100000d0002402003280208220004402002200036020c410121002002413c6a41013602002002420237022c200241bc8a043602282002410c3602142002200241106a36023820022002410c6a36021020042001200241286a105f450d010c020b20032802002200200328020428020c11080042f4f99ee6eea3aaf9fe00520d002002200036020c410121002002413c6a41013602002002420237022c200241bc8a043602282002410d3602142002200241106a36023820022002410c6a36021020042001200241286a105f0d010b200328020c2100200241246a41033602002002413c6a410e360200200241346a410e36020020024203370214200241848a0436021020022000410c6a3602382002200041086a3602302002410636022c200220003602282002200241286a36022020042001200241106a105f21000b200241406b240020000b0ba1330600418080040bc72f656e636f756e746572656420656d7074792073746f726167652063656c6c2f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f73746f726167652f7372632f6c617a792f6d6f642e72730000001e000100370000009d00000019000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e7472792f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f73746f726167652f7372632f7472616974732f6d6f642e72738f00010039000000a80000000a00000073746f7261676520656e7472792077617320656d707479008f00010039000000a90000000a0000006661696c656420746f2070756c6c207061636b65642066726f6d20726f6f74206b657920000101002400000078180100020000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f73746f726167652f7372632f7472616974732f6f7074737065632e7273000000340101003d0000006b0000000d000000b0180100400000009d000000300000000f000000010000000100000001000000a015010041000000b50000003700000045726332303a3a5472616e73666572004c18010000000000b401010045726332303a3a5472616e736665723a3a66726f6d45726332303a3a5472616e736665723a3a746f45726332303a3a417070726f76616c004c18010000000000f801010045726332303a3a417070726f76616c3a3a6f776e657245726332303a3a417070726f76616c3a3a7370656e6465726469737061746368696e6720696e6b2120636f6e7374727563746f72206661696c65643a200042020100250000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6578616d706c65732f65726332302f6c69622e72730000700201002e0000000f000000050000006469737061746368696e6720696e6b21206d657373616765206661696c65643a20000000b002010021000000100000000400000004000000110000001200000013000000140000000000000001000000150000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f7700000403010071000000fd010000050000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273cb0301006d000000550200001c0000002e2e000048040100020000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72730000005404010071000000a30000003300000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75653a4c18010000000000030501000100000003050100010000001600000000000000010000001700000070616e69636b65642061742027272c2038050100010000003905010003000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732000004c050100200000006c0501001200000060202020202f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6275696c646572732e7273000095050100750000002f00000021000000950501007500000030000000120000002c0a280a28292f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727300003206010070000000650000001400000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72730000007c07010075000000420000001e0000007c070100750000005b0000000500000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468201408010012000000260801002200000072616e676520656e6420696e6465782058080100100000002608010022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200078080100160000008e0801000d000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028ac08010015000000c10801002b00000031060100010000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727304090100780000001d010000110000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e72738c09010074000000b7010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000150a01000b000000200a0100160000009005010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000500a01000e0000005e0a010004000000620a0100100000009005010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060150a01000b000000940a010026000000ba0a010008000000c20a01000600000090050100010000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e72730000f00a01007a0000000a0000001c000000f00a01007a0000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0d0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206160d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d0824016a046b02af03bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa02fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5fbfeeef5a62f4fcff9a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a161a261c1417094e042409440d19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d498107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48a4c630d842f8fd18247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781332d03110408818c89046b050d0309071092604709743c80f60a7308701546809a140c570919808781470385420f1584501f80e12b80d52d031a040281401f113a050184e080f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80510030d03740c59070c04010f0c0438080a062808224e81540c1503050307091d030b05060a0a060808070980cb250a84062f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e72730000f51001007d0000004b00000028000000f51001007d0000005700000016000000f51001007d000000520000003e0000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301ce147f31e214cf06ae14f4f6f21509dbca15000cf615165d1a15100da215200e0e15330e16155aee2a156d0e8e15620006e57f001ff5700700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f00070111020701020105000700013d0400076d07006080f000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28292f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e72730a15010072000000e6050000090000000a0000004c180100000000008c150100010000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000a0150100410000005800000009000000a0150100410000005800000031000000a0150100410000006300000009000000a015010041000000810000001a0000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000241601003e000000780100001400000045636473615265636f7665724661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e644e6577436f6e74726163744e6f7446756e6465645472616e736665724661696c656442656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f646500004c180100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f72307800009c170100020000005f000000a8170100010000004c180100000000004c180100000000004c18010041d0af040b092000000008000000020041e4af040b15020000000300000001000000200000000800000002004184b0040b150200000003000000020000002000000008000000020041a4b0040b150200000003000000030000002000000008000000020041c4b0040be50202000000030000005765206465636f646520604e6020656c656d656e74733b20716564000019010061000000cd020000170000003a2000004c180100000000007818010002000000656e636f756e746572656420756e6578706563746564206572726f728c1801001c0000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273b01801004000000018010000170000002f686f6d652f6d696368692f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e332e312f7372632f636f6465632e727300000000190100610000006d0000000e0000004572726f72000000000000000100000002000000030000000400000005000000060000000700000008000000090000000c0000000b" + }, + "contract": { + "name": "erc20", + "version": "3.0.0-rc6", + "authors": ["Parity Technologies "] + }, + "V2": { + "spec": { + "constructors": [ + { + "args": [ + { + "label": "initial_supply", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": ["Option"], + "type": 11 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": ["Option"], + "type": 11 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [" Event emitted when a token transfer occurs."], + "label": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Event emitted when an approval occurs that `spender` is allowed to withdraw", + " up to the amount of `value` tokens from `owner`." + ], + "label": "Approval" + } + ], + "messages": [ + { + "args": [], + "docs": [" Returns the total token supply."], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 0 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 0 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 0 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 8 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 8 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 8 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 6 + } + }, + "name": "allowances" + } + ] + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "offset_key", + "type": 5, + "typeName": "Key" + } + ] + } + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "Key"] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "offset_key", + "type": 5, + "typeName": "Key" + } + ] + } + }, + "params": [ + { + "name": "K", + "type": 7 + }, + { + "name": "V", + "type": 0 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 7, + "type": { + "def": { + "tuple": [2, 2] + } + } + }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 9, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": ["erc20", "erc20", "Error"] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": ["Option"] + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/ink/v2/flipper.contract.json b/.api-contract/src/test/contracts/ink/v2/flipper.contract.json new file mode 100644 index 00000000..3ce25230 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v2/flipper.contract.json @@ -0,0 +1,89 @@ +{ + "source": { + "hash": "0xaeb7dd63156e34f62a81be2f66e16410cf4dd633b591cf27dd40474ff61a352c", + "language": "ink! 3.0.0-rc6", + "compiler": "rustc 1.58.0-nightly", + "wasm": "0x0061736d0100000001620f60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060057f7f7f7f7f0060017f017f60000060017f017e60017f0060047f7f7f7f0060067f7f7f7f7f7f006000017f60047f7f7f7f017f60057f7f7f7f7f017f60077f7f7f7f7f7f7f017f02a30107057365616c30107365616c5f7365745f73746f726167650003057365616c30167365616c5f76616c75655f7472616e736665727265640002057365616c30107365616c5f6765745f73746f726167650000057365616c30127365616c5f64656275675f6d6573736167650001057365616c300a7365616c5f696e7075740002057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100343420203080102050207030a0b02020504060806010000030102010602010301070d010c090003020509010103030001010004040401010e01010001010101010501010004050170011e1e0608017f01418080040b071102066465706c6f7900150463616c6c00170923010041010b1d092e232f4521333a4142230846081a1c1e0843082408353c3d083e3f400ac164428d0101017f230041406a22022400200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a2900003703002002420137030820022001290000370310200241386a41808001360200200241f2ae04360234200241003602302002200241306a20001007200241106a200228020020022802041000200241406b24000b920201047f230041106b22042400200141086a220328020021052003410036020020012802042103200141bcad04360204200441086a410041012003200541a4aa04100f0240200428020c22064101460440200428020820023a000020014100360208200141bcad043602042005450d012001200541016b3602082001200341016a3602042000410136020420002003360200200441106a24000f0b230041306b2200240020004101360204200020063602002000411c6a41023602002000412c6a41033602002000420337020c200041ac9004360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41b4aa04100a000b41a7a804412341bca904100e000b0300010bc00101037f230041306b2202240041a3ad042103411921040240024002400240024020002d000041016b0e0400010203040b4187ad042103411c21040c030b41f1ac042103411621040c020b41ddac042103411421040c010b41c4ac0421030b2002411c6a41013602002002200436022c20022003360228200241023602242002420137020c200241bcac04360208200141186a2802002001411c6a2802002002200241286a3602202002200241206a360218200241086a1032200241306a24000be60301077f230041106b220224002002200136020c20022000360208200241a48804360204200241bcad04360200230041406a220324002003200236020c200341346a410136020020034202370224200341d0a9043602202003410536023c2003200341386a36023020032003410c6a360238200341106a210641002101230041206b22042400200341206a220528020422074103742102200528020022082100034020020440200241086b2102200028020420016a2101200041086a21000c010b0b024002400240024002400240200541146a280200450440200121000c010b02402007450d0020082802040d004100210220014110490d020b41002102200120016a22002001490d010b200022024100480d010b20042002102020042802002200450d0120042802042101200641003602082006200036020020062001360204200441186a200541106a290200370300200441106a200541086a290200370300200420052902003703082006200441086a10180d02200441206a24000c030b101f000b000b41a085044133200441086a41fc830441c086041014000b2003280210210020032802182101024041f0ae042d000045044041f1ae042d00004101710d010b2000200110031013410947044041f0ae0441013a00000b41f1ae0441013a00000b000b4201027f230041106b22012400200141086a2000100c20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b3c01017f200020012802042202047f2001200241016b36020420012001280200220141016a36020020012d00000520010b3a000120002002453a00000b9c0102027f017e230041106b220124002001420037030841042102027f02400340200241084604402001410436020820012903082203a741044f0d0241a88104411b41c48104100e000b20012000100c20012d0000410171450440200141086a20026a20012d00013a0000200241016a21020c010b0b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b4601017f230041206b22032400200341146a4100360200200341bcad04360210200342013702042003200136021c200320003602182003200341186a36020020032002100a000bd2010002400240200120024d0440200220044d0d01230041306b2200240020002004360204200020023602002000411c6a41023602002000412c6a41033602002000420237020c200041a88f043602080c020b230041306b2200240020002002360204200020013602002000411c6a41023602002000412c6a41033602002000420237020c200041dc8f043602080c010b2000200220016b3602042000200120036a3602000f0b200041033602242000200041206a3602182000200041046a36022820002000360220200041086a2005100a000b6c02027f027e230041206b22002400200041086a220142003703002000420037030020004110360214200020003602102000411036021c20002000411c6a1001200041106a200028021c10112001290300210220002903002103200041206a2400410541042002200384501b0b3701017f230041106b22022400200241086a41002001200028020020002802044184ab04100f20002002290308370200200241106a24000b8f0301027f230041d0006b220224004101210302402000027f20014101714504404104101041ff01714105470d011a0b200241186a4200370300200241206a4200370300200241286a42003703002002420037031020024201370308200241808001360234200241f2ae04360230200241808001360238200241106a41f2ae04200241386a10022101200241306a20022802381011024002400240200110130e0402000001000b200241cc006a4100360200200241bcad043602482002420137023c200241b08204360238200241386a41b88204100a000b230041106b220124002001411736020c200141f08004360208230041206b22002400200041146a410136020020004201370204200041bcac043602002000410236021c2000200141086a3602182000200041186a360210200041888104100a000b20022002290330370338200241386a100b41ff017122014102460d014100210320014100470b3a0001200020033a0000200241d0006a24000f0b200241003a0038418080044127200241386a4198810441e080041014000b2001017f410c21012000410b4d047f200041027441b8ae046a28020005410c0b0b7c01017f230041406a220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41043602002005420237021c200541c0ad04360218200541023602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004100a000b850302057f027e230041306b2200240020004180800136022c200041f2ae04360228200041286a10162000200029032837030002402000100d22054201832206a70d00200542807e8342002006501b22064280feffffff1f832205422088a721012005421888a721022005421088a72103024002402006a741087641ff0171220441ed014704402004419b0147200341ff017141ae014772200241ff0171419d0147200141de004772720d032000100b41ff017122014102470d010c030b200341ff017141cb0047200241ff0171419d0147722001411b47720d02200041186a4200370300200041106a4200370300200041086a4200370300200042003703004100200010060c010b200041186a4200370300200041106a4200370300200041086a4200370300200042003703002001410171200010060b200041306a24000f0b200041033a0027200041146a410136020020004201370204200041f082043602002000410136022c2000200041286a3602102000200041276a360228200041a88304100a000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10042000200128020c1011200141106a24000bdc0402057f027e230041406a2200240002400240101041ff01712201410546044020004180800136023c200041f2ae04360238200041386a101620002000290338370310027f0240200041106a100d22054201832206a70d00200542807e8342002006501b22064280feffffff1f832205422088a721022005421888a721012005421088a721032006a741087641ff01712204412f470440200441e30047200341ff0171413a4772200141ff017141a50147200241d1004772720d014101210141000c020b200341ff017141860147200141ff017141db0047720d00410021014100200241d901460d011a0b4101210141010b0440410321010c030b02400240200104402000418102101220002d0001210120002d00004101710d01200041286a4200370300200041206a4200370300200041186a4200370300200042003703102001417f73410171200041106a10060c020b200041086a4101101220002d0009210120002d0008410171450d030b20014105470d030b200041406b24000f0b200020013a0010230041206b22012400200141146a410136020020014201370204200141bcac043602002001410136021c2001200041106a3602182001200141186a360210200141a88304100a000b230041206b22002400200041186a41808001360200200041f2ae0436021420004100360210200041086a200041106a2001410171100741002000280208200028020c1005000b200020013a0037200041246a410136020020004201370214200041dc83043602102000410136023c2000200041386a3602202000200041376a360238200041106a41a88304100a000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41e48304200241086a1019200241206a24000bfc0301057f230041406a22032400200341346a2001360200200341033a00382003428080808080043703182003200036023041002101200341003602282003410036022002400240024020022802082200450440200241146a28020041ffffffff0171220641016a210520022802102104410021000340200541016b2205450d02200228020020006a220141046a28020022070440200328023020012802002007200328023428020c1100000d040b200020046a2101200041086a21002001280200200341186a200141046a280200110100450d000b0c020b2002410c6a28020022064105742105200641ffffff3f71210603402005450d01200228020020016a220441046a28020022070440200328023020042802002007200328023428020c1100000d030b200320002d001c3a003820032000290204422089370318200341106a20022802102204200041146a103020032003290310370320200341086a20042000410c6a103020032003290308370328200141086a2101200541206b210520002802002107200041206a2100200420074103746a2204280200200341186a2004280204110100450d000b0c010b4100210020062002280204492201450d012003280230200228020020064103746a410020011b22012802002001280204200328023428020c110000450d010b410121000b200341406b240020000b0f00200028020020012002101b41000b2801017f20002002101d2000280208220320002802006a2001200210471a2000200220036a3602080b960201027f230041106b22022400200028020021000240200141ff004d044020002802082203200028020446044020004101101d200028020821030b2000200341016a360208200028020020036a20013a00000c010b2002410036020c20002002410c6a027f20014180104f044020014180800449044020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c020b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040c010b20022001413f71418001723a000d2002200141067641c001723a000c41020b101b0b200241106a240041000bae0301077f230041106b2205240002400240200120002802042207200028020822026b4b0440200120026a22012002490d022000280200410020071b210841002102230041106b220624002005027f20074101742204200120012004491b22014108200141084b1b220141004e0440027f0240200804402007450440200641086a2001102020062802082103200628020c0c030b200141e8ae04280200220420016a22022004490d021a41ecae042802002002490440200141ffff036a22032001490d02200341107640002202417f46200241ffff0371200247720d022002411074220420034180807c716a22022004490d024100210341ecae0420023602002001200120046a22022004490d031a0b41e8ae04200236020020012004450d021a2004200820071047210320010c020b2006200110202006280200210320062802040c010b4100210320010b2102200304402005200336020441000c020b20052001360204410121020b41010b360200200541086a2002360200200641106a240020052802004101460d01200020052902043702000b200541106a24000f0b200541086a280200450d00000b101f000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1018200241206a24000b0f0041fd8404411141908504100e000ba90101027f027f41012001450d001a410041e8ae04280200220220016a22032002490d001a024041ecae042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141ecae0420033602004100200120026a22032002490d021a0b41e8ae04200336020020020c010b41000b210320002001360204200020033602000b0e0020002802001a03400c000b000b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41033602002003420237020c200341888f04360208200341033602242003200341206a3602182003200341046a36022820032003360220200341086a2002100a000b9a0202037f017e20003502002105230041306b2203240041272100024003402005428fce005804402005a7220241e3004c0d0205200341096a20006a220241026b20054290ce0082a7220441e4007041017441da8b046a2f00003b0000200241046b200441e4006e41017441da8b046a2f00003b0000200041046b210020054290ce008021050c010b0b200020036a41076a2005a741ffff0371220241e4007041017441da8b046a2f00003b0000200041026b2100200241e4006e21020b02402002410a4e0440200041026b2200200341096a6a200241017441da8b046a2f00003b00000c010b200041016b2200200341096a6a200241306a3a00000b200141bcad044100200341096a20006a412720006b1025200341306a24000b0d00429e9fe3ccf2a3c7c8fb000bb30301077f230041106b2206240020002802002205410171220820046a210702402005410471450440410021010c010b2001200120026a102620076a21070b412b418080c40020081b210802402000280208410147044041012105200020082001200210270d012000280218200320042000411c6a28020028020c11000021050c010b024020072000410c6a280200220949044020002d00004108710d014101210520062000200920076b4101102820062802002207418080c400460d0220062802042109200020082001200210270d022000280218200320042000411c6a28020028020c1100000d02200720092000102921050c020b41012105200020082001200210270d012000280218200320042000411c6a28020028020c11000021050c010b2000280204210a2000413036020420002d0020210b41012105200041013a0020200020082001200210270d00200641086a2000200920076b4101102820062802082201418080c400460d00200628020c21022000280218200320042000411c6a28020028020c1100000d0020012002200010290d002000200b3a00202000200a360204410021050b200641106a240020050b2901017f03402000200146450440200220002c000041bf7f4a6a2102200041016a21000c010b0b20020b4b000240027f2001418080c4004704404101200028021820012000411c6a2802002802101101000d011a0b20020d0141000b0f0b2000280218200220032000411c6a28020028020c1100000b9b0101027f20022105024002400240200320012d0020220320034103461b41ff017141016b0e03000100020b41002105200221040c010b20024101762104200241016a41017621050b200441016a21022001411c6a2802002103200128020421042001280218210102400340200241016b2202450d01200120042003280210110100450d000b418080c40021040b20002005360204200020043602000b4701027f2002411c6a28020021032002280218210441002102027f0340200120012002460d011a200241016a2102200420002003280210110100450d000b200241016b0b2001490b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41033602002003420237020c200341888904360208200341033602242003200341206a360218200320033602282003200341046a360220200341086a2002100a000b5301047f200141086a280200210220012802042103200141046a102c2204418080c4004704402001200128020420012802002205200220036b6a6a20012802086b3602000b20002004360204200020053602000bb70101047f200028020022012000280204460440418080c4000f0b2000200141016a36020020012d00002203411874411875417f4c047f2000200141026a36020020012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020020012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602002004411274418080f0007120012d0003413f71200241067472720520030b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b980301057f230041306b2202240020012802102105200028020421042000280200210302400240024020012802082206410147044020050d012001280218200320042001411c6a28020028020c11000021000c030b2005450d010b200141146a28020020022003360224200241286a200320046a3602002002410036022041016a210002400340200041016b22000440200241186a200241206a102b200228021c418080c400470d010c020b0b200241106a200241206a102b2002280214418080c400460d00200241086a200228021020032004102d200228020c2004200228020822001b21042000200320001b21030b20060d002001280218200320042001411c6a28020028020c11000021000c010b2001410c6a28020022002003200320046a102622054b044020022001200020056b410010284101210020022802002205418080c400460d01200228020421062001280218200320042001411c6a28020028020c1100000d01200520062001102921000c010b2001280218200320042001411c6a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044106470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141c88b041022000b200041800120026b3602042000200120026a3602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a1019200341206a24000b6c01027f230041206b220224004101210302402000200110340d002002411c6a4100360200200241bcad043602182002420137020c200241d48604360208200141186a2802002001411c6a280200200241086a10320d00200041046a2001103421030b200241206a240020030b850201037f23004190016b22022400027f02402001280200220341107145044020034120710d012000200110230c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a1031200141d88b0441022002280208200228020c10250c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a1031200141d88b0441022002280200200228020410250b20024190016a24000bb906010d7f230041406a22032400200341386a210d2000280204210b2000280200210c2000280208210a024003402002450d010240200a2d00000440200c41b489044104200b28020c1100000d010b2003410a3602382003428a808080103703302003200236022c41002100200341003602282003200236022420032001360220200222042105034002400240200341086a20012002027f02400240200020044b200420054b720d00200328022020006a2106200320032802346a41376a2d0000210702400240200420006b220541084f0440200641036a417c7120066b2204450440410021040c020b41002100200341186a410020052004200420054b1b22042006200541b48e04100f200328021c210820032802182109034020002008460d02200020096a2d00002007460d03200041016a21000c000b000b41002100034020002005460d03200020066a2d00002007460d02200041016a21000c000b000b200541086b2108200741818284086c210003400240200420084b0d00200420066a2209280200200073220e417f73200e41818284086b71200941046a2802002000732209417f73200941818284086b7172418081828478710d00200441086a21040c010b0b200420054b0d04200420056b2108200420066a210541002100034020002008460d02200720052d0000470440200041016b2100200541016a21050c010b0b200420006b21000b2003200020032802286a41016a2200360228200020032802342204490d04200020032802244b0d0420032802202105200341106a41002004200d410441c09204100f20032802142004460440027f2005200020046b22086a210020032802102105034041002004450d011a200441016b210420052d0000210620002d00002107200041016a2100200541016a210520062007460d000b200720066b0b450d020b200328022821000c040b200a41003a000020020c010b200a41013a0000200841016a0b220041b08a041036200c2003280208200328020c200b28020c1100000d03200320012002200041c08a04103720032802042102200328020021010c040b2004200541c48e041022000b200328022c2104200328022421050c000b000b0b4101210f0b200341406b2400200f0b4e01027f230041106b22052400200541086a200320012002102d20052802082206450440200120024100200320041038000b200528020c21012000200636020020002001360204200541106a24000b4d0002402003450d000240200220034d044020022003470d010c020b200120036a2c000041bf7f4a0d010b200120022003200220041038000b2000200220036b3602042000200120036a3602000b980601027f23004180016b220524002005200336021c200520023602182005027f024020014181024f0440418002210603402006450440410021060c030b200020066a2c000041bf7f4a0d02200641016b21060c000b000b2005200136022420052000360220200541bcad0436022841000c010b200541106a20002001200641bc9104103620052005290310370320200541d0920436022841050b36022c024002402005200120024f047f200120034f0d0120030520020b360238200541d4006a4103360200200541ec006a4102360200200541e4006a410236020020054203370244200541f892043602402005410336025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580c010b200220034d0440024002402002450d00200120024d044020012002460d010c020b200020026a2c00004140480d010b200321020b200520023602300340024002402002450440410021020c010b200120024d044020012002470d02200121020c010b200020026a2c00004140480d010b200541086a2000200120022004103720052005280208220036025820052000200528020c6a36025c2005200541d8006a102c200410392201360234200520023602382005027f41012001418001490d001a41022001418010490d001a41034104200141808004491b0b20026a36023c200541d4006a4105360200200541fc006a4102360200200541f4006a4102360200200541ec006a4107360200200541e4006a4108360200200542053702442005418894043602402005410336025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580c030b200241016b21020c000b000b200541f4006a4102360200200541ec006a4102360200200541e4006a4103360200200541d4006a410436020020054204370244200541b493043602402005410336025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580b200541406b2004100a000b1a002000418080c40046044041e08704412b2001100e000b20000b8f0802087f017e4101210702402001280218220841272001411c6a28020028021022091101000d0041f4002103410221010240027f0240027f024002400240024002402000280200220241096b0e050803010104000b2002412746200241dc0046720d010b2002410b7421044100210141202100412021030340200020014d0440200121030c060b02402004200341017620016a220341027441e4a1046a280200410b7422054d044020042005460d07200321000c010b200341016a21010b200020016b21030c000b000b41020c040b41ee000c010b41f2000b21030c020b0240027e024002402003200020014b6a2206411f4d04402006410274210141c20521032006411f470440200141e8a1046a28020041157641016b21030b41002100410021052006200641016b22044f0440200441204f0d02200441027441e4a1046a28020041ffffff007121050b200141e4a1046a280200411576220141c305200141c3054b1b2104200220056b21050240024003400240024002402001200347047f20012004460d012000200141e4a2046a2d00006a220020054d0d0220010520030b4101710d08200241808004490d022002418080084f0d04200241eb9a04412a41bf9b0441c00141ff9c0441b603103b0d0a0c050b200441c30541c4a104102a000b200141016a21010c010b0b200241cc95044128419c960441a00241bc980441af02103b450d010c060b200241e0ffff007141e0cd0a46200241b9ee0a6b41074972200241feffff0071419ef00a46200241a29d0b6b410e497272200241e1d70b6b419f18492002419ef40b6b41e20b4972200241cba60c6b41b5db2b4972720d00200241f08338490d050b200241017267410276410773ad4280808080d000840c030b2006412041b4a104102a000b2004412041d4a104102a000b200241017267410276410773ad4280808080d000840b210a41032101200221030c020b41010b2101200221030b034020012102410021012003210002400240024002400240200241016b0e03040200010b02400240024002400240200a422088a741ff017141016b0e050004010203050b200a42ffffffff8f6083210a41fd002100410321010c070b200a42ffffffff8f608342808080802084210a41fb002100410321010c060b200a42ffffffff8f608342808080803084210a41f5002100410321010c050b200a42ffffffff8f60834280808080c00084210a41dc002100410321010c040b413041d7002003200aa7220141027476410f712200410a491b20006a41d08704103921002001450d02200a42808080807083200a42017d42ffffffff0f8384210a410321010c030b20084127200911010021070c040b41dc002100410121010c010b200a42ffffffff8f608342808080801084210a410321010b200820002009110100450d000b0b20070bcc0201077f230041106b22072400200120024101746a210c20004180fe0371410876210a41002102200041ff0171210d02400240034002402001200c470440200141026a210b200220012d00016a210820012d00002209200a460d01200b2101200821022009200a4d0d020b200520066a2103200041ffff0371210041012102034020032005460d03200541016a210120052d000022044118744118752206410048044020012003460d0520052d0001200641ff0071410874722104200541026a21010b200020046b22004100480d0320024101732102200121050c000b000b200741086a200220082003200441ac9504100f20072802082102200728020c210103402001450440200b2101200821020c020b200141016b210120022d0000200241016a2102200d470d000b0b410021020b200741106a240020024101710f0b41e08704412b41bc9504100e000be30101017f230041106b220224002002410036020c20002002410c6a027f0240024020014180014f04402001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200220013a000c41010c020b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040b1035200241106a24000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41a48d04200241086a1019200241206a24000b0d0020002802002001200210350b0b0020002802002001103c0b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a103d200241206a24000b5b01027f230041206b220224002001411c6a28020021032001280218200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a1019200241206a24000b0b0020002802002001102e0b1b00200128021841b1ae0441052001411c6a28020028020c1100000b1b00200028021841b1ae0441052000411c6a28020028020c1100000bfe0201037f230041406a2202240020002802002103410121000240200141186a280200220441b48804410c2001411c6a280200220128020c1100000d0002402003280208220004402002200036020c410121002002413c6a41013602002002420237022c200241c48804360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a1032450d010c020b20032802002200200328020428020c11070042f4f99ee6eea3aaf9fe00520d002002200036020c410121002002413c6a41013602002002420237022c200241c488043602282002410a3602142002200241106a36023820022002410c6a36021020042001200241286a10320d010b200328020c2100200241246a41033602002002413c6a410b360200200241346a410b360200200242033702142002418c880436021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103221000b200241406b240020000b9c0501027f230041406a22022400024002400240024002400240024002400240024002400240024020002d000041016b0e0b0102030405060708090a0b000b41012100200128021841b4ac0441062001411c6a28020028020c1100000d0b024020012d0000410471450440200128021841d48a044101200128021c28020c1100000d0d20011044450d010c0d0b200128021841d28a044102200128021c28020c1100000d0c20012802002103200241013a0017200241346a419c8904360200200241106a200241176a3602002002200336021820022001290218370308200220012d00203a00382002200128020436021c20022001290210370328200220012902083703202002200241086a360230200241186a10440d0c200228023041d08a044102200228023428020c1100000d0c0b200128021841d58a044101200128021c28020c11000021000c0b0b200128021841a7ac04410d2001411c6a28020028020c11000021000c0a0b20012802184199ac04410e2001411c6a28020028020c11000021000c090b2001280218418eac04410b2001411c6a28020028020c11000021000c080b200128021841f5ab0441192001411c6a28020028020c11000021000c070b200128021841e7ab04410e2001411c6a28020028020c11000021000c060b200128021841d3ab0441142001411c6a28020028020c11000021000c050b200128021841c7ab04410c2001411c6a28020028020c11000021000c040b200128021841bcab04410b2001411c6a28020028020c11000021000c030b200128021841b5ab0441072001411c6a28020028020c11000021000c020b200128021841a6ab04410f2001411c6a28020028020c11000021000c010b20012802184194ab0441122001411c6a28020028020c11000021000b200241406b240020000bc40201087f2002410f4d047f2000052000410020006b41037122056a210620012104200021030340200320064f450440200320042d00003a0000200441016a2104200341016a21030c010b0b200220056b2202417c7121070240200120056a22054103710440200620076a21082005417c71220341046a2101200541037422044118712109410020046b411871210a20032802002104200621030340200320084f0d022003200420097620012802002204200a7472360200200141046a2101200341046a21030c000b000b200620076a210420052101200621030340200320044f0d0120032001280200360200200141046a2101200341046a21030c000b000b20024103712102200520076a2101200620076a0b2103200220036a21020340200220034d450440200320012d00003a0000200141016a2101200341016a21030c010b0b20000b0bee2e0100418080040be52e636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e7472792f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f73746f726167652f7372632f7472616974732f6d6f642e72732700010039000000a80000000a00000073746f7261676520656e7472792077617320656d707479002700010039000000a90000000a0000000c00000001000000010000000d0000005765206465636f646520604e6020656c656d656e74733b2071656400d016010061000000cd020000170000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273656e636f756e746572656420756e6578706563746564206572726f72140101001c000000d40001004000000018010000170000006469737061746368696e6720696e6b2120636f6e7374727563746f72206661696c65643a2000000048010100250000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6578616d706c65732f666c69707065722f6c69622e7273780101003000000008000000050000006469737061746368696e6720696e6b21206d657373616765206661696c65643a20000000b8010100210000000e00000004000000040000000f0000001000000011000000120000000000000001000000130000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f7700000c02010071000000fd010000050000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273d30201006d000000550200001c0000002e2e000050030100020000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72730000005c03010071000000a30000003300000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75653abc160100000000000b040100010000000b040100010000001400000000000000010000001500000070616e69636b65642061742027272c2040040100010000004104010003000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732000005404010020000000740401001200000060000000160000000c00000004000000170000001800000019000000202020202f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6275696c646572732e7273000000b8040100750000002f00000021000000b80401007500000030000000120000002c0a280a28292f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e72730000560501007000000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900001a00000004000000040000001b0000001c0000001d0000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000bc06010075000000420000001e000000bc060100750000005b0000000500000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468205407010012000000660701002200000072616e676520656e6420696e6465782098070100100000006607010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000b807010016000000ce0701000d000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028ec07010015000000010801002b00000055050100010000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e727344080100780000001d010000110000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273cc08010074000000b7010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000550901000b00000060090100160000009804010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000900901000e0000009e09010004000000a2090100100000009804010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060550901000b000000d409010026000000fa09010008000000020a01000600000098040100010000002f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e72730000300a01007a0000000a0000001c000000300a01007a0000001a0000003600000000010305050606020706080709110a1c0b190c1a0d100e0d0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206160d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d0824016a046b02af03bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa02fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5fbfeeef5a62f4fcff9a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a161a261c1417094e042409440d19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d498107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48a4c630d842f8fd18247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781332d03110408818c89046b050d0309071092604709743c80f60a7308701546809a140c570919808781470385420f1584501f80e12b80d52d031a040281401f113a050184e080f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80510030d03740c59070c04010f0c0438080a062808224e81540c1503050307091d030b05060a0a060808070980cb250a84062f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e72730000351001007d0000004b00000028000000351001007d0000005700000016000000351001007d000000520000003e0000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301ce147f31e214cf06ae14f4f6f21509dbca15000cf615165d1a15100da215200e0e15330e16155aee2a156d0e8e15620006e57f001ff5700700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f00070111020701020105000700013d0400076d07006080f000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28292f686f6d652f6d696368692f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d756e6b6e6f776e2d6c696e75782d676e752f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e72734a14010072000000e6050000090000000a000000bc16010000000000cc140100010000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000e0140100410000005800000009000000e01401004100000058000000310000002f686f6d652f6d696368692f70726f6a656374732f696e6b2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000441501003e000000780100001400000045636473615265636f7665724661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e644e6577436f6e74726163744e6f7446756e6465645472616e736665724661696c656442656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f64650000bc160100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f723a200000bc16010000000000bc160100020000002f686f6d652f6d696368692f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e332e312f7372632f636f6465632e72734572726f720000000000000100000002000000030000000400000005000000060000000700000008000000090000000c0000000b" + }, + "contract": { + "name": "flipper", + "version": "3.0.0-rc6", + "authors": ["Parity Technologies "] + }, + "V2": { + "spec": { + "constructors": [ + { + "args": [ + { + "label": "init_value", + "type": { + "displayName": ["bool"], + "type": 0 + } + } + ], + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "label": "new", + "selector": "0x9bae9d5e" + }, + { + "args": [], + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "label": "default", + "selector": "0xed4b9d1b" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [" Flips the current value of the Flipper's boolean."], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": null, + "selector": "0x633aa551" + }, + { + "args": [], + "docs": [" Returns the current value of the Flipper's boolean."], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 0 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 0 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/ink/v2/index.ts b/.api-contract/src/test/contracts/ink/v2/index.ts new file mode 100644 index 00000000..45359d54 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v2/index.ts @@ -0,0 +1,5 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as erc20 } from './erc20.contract.json' assert { type: 'json' }; +export { default as flipper } from './flipper.contract.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/ink/v3/flipper.contract.json b/.api-contract/src/test/contracts/ink/v3/flipper.contract.json new file mode 100644 index 00000000..7aa07d9c --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v3/flipper.contract.json @@ -0,0 +1,91 @@ +{ + "source": { + "hash": "0xbb381c2fc980121b17c7b2bf2756d5964a12151cb846e0a9eff9cc337806456d", + "language": "ink! 3.0.0-rc7", + "compiler": "rustc 1.60.0-nightly", + "wasm": "0x0061736d0100000001280860027f7f0060000060037f7f7f0060017f006000017f60017f017f60037f7f7f017f60017f017e02880106057365616c30107365616c5f7365745f73746f726167650002057365616c30107365616c5f6765745f73746f726167650006057365616c300a7365616c5f696e7075740000057365616c300b7365616c5f72657475726e0002057365616c30167365616c5f76616c75655f7472616e73666572726564000003656e76066d656d6f727902010210030a090400050103070001000608017f01418080040b071102066465706c6f7900080463616c6c000c0ac40b096102027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a1004200028021c41114f0440000b2001290300210220002903082103200041206a2400410541042002200384501b0bc20101027f230041306b220224004101210302402000027f20014101714504404104100541ff01714105470d011a0b200241106a4200370300200241186a4200370300200241206a42003703002002420037030820024201370300200241808001360228200241086a41808004200241286a100120022802282201418180014f720d012002200136022c200241808004360228200241286a100741ff017122014102460d014100210320014100470b3a0001200020033a0000200241306a24000f0b000b4201027f230041106b22012400200141086a2000100d20012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0bd30202057f027e230041306b2200240020004180800136020c200041808004360208200041086a1009200020002903083703100240200041106a100a22054201832206a70d00200542807e8342002006501b22064280feffffff1f832205422088a721012005421888a721022005421088a7210302402006a741087641ff0171220441ed014704402004419b0147200341ff017141ae014772200241ff0171419d0147200141de004772720d02200041106a100741ff017122014102460d02100541ff01714105470d02200041286a4200370300200041206a4200370300200041186a4200370300200042003703102001410171200041106a100b0c010b200341ff017141cb0047200241ff0171419d0147722001411b47720d01200041286a4200370300200041206a4200370300200041186a4200370300200042003703104100200041106a100b0b200041306a24000f0b000b4101027f230041106b2201240020012000280204220236020c20002802002001410c6a10022002200128020c2202490440000b20002002360204200141106a24000b850102027f017e230041106b220124002001420437030841042102027f02400240034020012000100d20012d00004101710d01200141086a20026a20012d00013a0000200241016a22024108470d000b20012903082203a741044f0d01000b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b6b01017f230041306b220224004180800420003a0000200241286a200141186a290000370300200241206a200141106a290000370300200241186a200141086a2900003703002002420137030820022001290000370310200241106a4180800441011000200241306a24000b910302057f027e230041406a22002400024002400240100541ff01714105470d0020004180800136021c200041808004360218200041186a100920002000290318370320027f0240200041206a100a22054201832206a70d00200542807e8342002006501b22064280feffffff1f832205422088a721022005421888a721012005421088a721032006a741087641ff01712204412f470440200441e30047200341ff0171413a4772200141ff017141a50147200241d1004772720d014101210141000c020b200341ff017141860147200141ff017141db0047720d00410021014100200241d901460d011a0b4101210141010b0d00024020010440200041086a418002100620002d0009210120002d00084101710d01200041386a4200370300200041306a4200370300200041286a4200370300200042003703202001417f73410171200041206a100b0c040b200041106a4100100620002d0011210120002d0010410171450d020b20014105460d020b000b4180800420014101713a000041004180800441011003000b200041406b24000b3c01017f200020012802042202047f2001200241016b36020420012001280200220141016a36020020012d00000520010b3a000120002002453a00000b" + }, + "contract": { + "name": "flipper", + "version": "3.0.0-rc7", + "authors": ["Parity Technologies "] + }, + "V3": { + "spec": { + "constructors": [ + { + "args": [ + { + "label": "init_value", + "type": { + "displayName": ["bool"], + "type": 0 + } + } + ], + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "label": "new", + "payable": false, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "label": "default", + "payable": true, + "selector": "0xed4b9d1b" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [" Flips the current value of the Flipper's boolean."], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": null, + "selector": "0x633aa551" + }, + { + "args": [], + "docs": [" Returns the current value of the Flipper's boolean."], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 0 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 0 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/ink/v3/index.ts b/.api-contract/src/test/contracts/ink/v3/index.ts new file mode 100644 index 00000000..c0c494cb --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v3/index.ts @@ -0,0 +1,6 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as flipper } from './flipper.contract.json' assert { type: 'json' }; +// A complex contract example with traits. +export { default as traitErc20 } from './trait_erc20.contract.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/ink/v3/trait_erc20.contract.json b/.api-contract/src/test/contracts/ink/v3/trait_erc20.contract.json new file mode 100644 index 00000000..a24188fa --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v3/trait_erc20.contract.json @@ -0,0 +1,549 @@ +{ + "source": { + "hash": "0x819f50e02feb5b4413261150c77edb5fdf85877ac1da53210f1b1327f342b81a", + "language": "ink! 3.0.0-rc7", + "compiler": "rustc 1.58.0-nightly", + "wasm": "0x0061736d010000000180011360037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060047f7f7f7f0060017f0060057f7f7f7f7f0060000060017f017e60067f7f7f7f7f7f0060047f7f7e7e0060037e7e7f0060057f7f7f7e7e006000017f60017f017f60047f7f7f7f017f60057f7f7f7f7f017f60077f7f7f7f7f7f7f017f60057f7f7f7e7e017f028a020b057365616c30127365616c5f64656275675f6d6573736167650001057365616c30127365616c5f636c6561725f73746f726167650005057365616c30127365616c5f6465706f7369745f6576656e740004057365616c30107365616c5f7365745f73746f726167650003057365616c30107365616c5f6765745f73746f726167650000057365616c300a7365616c5f696e7075740002057365616c300b7365616c5f72657475726e0003057365616c30147365616c5f686173685f626c616b65325f3235360003057365616c300b7365616c5f63616c6c65720002057365616c30167365616c5f76616c75655f7472616e73666572726564000203656e76066d656d6f7279020102100372710004030303020203030a0b0c0a02020201010204040302030204060504020202020b0305030501000802050304020502010305020d0302020507050704120306030100000301020107020101040810010f040003090303020e040101030300010100060606060101110101010101090404040501700118180608017f01418080040b071102066465706c6f7900430463616c6c0045091d010041010b171a1b7355306465775469717475552d2d4d4f512d762d570ac8b201712b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b3001017f2002200220016b22044f0440200020043602042000200120036a3602000f0b4180800441214188b604100c000b4601017f230041206b22032400200341146a410036020020034184be04360210200342013702042003200136021c200320003602182003200341186a36020020032002101c000b3501017f230041106b22032400200341086a410020012002100b200020032802083602002000200328020c360204200341106a24000be60101037f230041d0006b22032400200320013602082003200236020c200341286a22014200370300200341206a22044200370300200341186a220542003703002003420037031020034100360230200342808001370244200341a6c204360240200341086a200341406b100f2002280200200341406b10102002280204200341406b1010200320032903403702342003200341306a2003280248101120032802002003280204200341106a1007200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290310370000200341d0006a24000b0d00200120002802004120102c0b0a00200120004120102c0b5e01027f200141086a22032802002104200341003602002001280204210320014184be04360204200220044b044041ecb60441234180b804100c000b2001200420026b3602082001200220036a36020420002002360204200020033602000bda0101037f230041d0006b22032400200320013602082003200236020c200341286a22014200370300200341206a22044200370300200341186a220542003703002003420037031020034100360230200342808001370244200341a6c204360240200341086a200341406b100f2002280200200341406b1010200320032903403702342003200341306a2003280248101120032802002003280204200341106a1007200041186a2001290300370000200041106a2004290300370000200041086a200529030037000020002003290310370000200341d0006a24000b3401017f230041306b220424002004200136020c200441106a20002004410c6a101220022003200441106a1014200441306a24000b4e01017f230041206b22032400200341186a41808001360200200341a6c20436021420034100360210200341086a200341106a20002001101620022003280208200328020c1003200341206a24000b3b01017f230041306b220524002005200236020c20052001360208200541106a2000200541086a100e20032004200541106a1014200541306a24000b5802017f017e230041206b2204240020012902042105200441003602182004200537031020022003200441106a102b20012004290310370204200441086a20012004280218101120002004290308370300200441206a24000bd40102027f057e230041306b220224000240200029030022084202510d0020012900182104200129001021052001290008210620012900002107200041186a22012d0000200141013a00004101710d0020084201520440200241286a2004370300200241206a2005370300200241186a20063703002002200737031020024201370308200241106a10010c010b200241286a2004370300200241206a2005370300200241186a200637030020022007370310200242013703082000290308200041106a290300200241106a10140b200241306a24000bc70102017f027e230041e0006b220224002002200136020c200241106a2001101920022d00104101460440200220022d00113a0037200241cc006a4102360200200241dc006a41013602002002420237023c200241ec8204360238200241023602542002200241d0006a3602482002200241376a36025820022002410c6a360250200241386a41d08304101c000b200241186a2903002103200241206a2903002104200041106a200241286a2903003703002000200437030820002003370300200241e0006a24000be40102017f027e230041406a22022400200241808001360224200241a6c20436022002400240024002402001200241206a103a0e0402010100010b200041003a0000200041086a42003703000c020b2002413c6a410036020020024184be043602382002420137022c200241e0be04360228200241286a41bcbf04101c000b20022002290320370328200241086a200241286a102a2002290308a70440200041013b01000c010b200241186a290300210320022903102104200041003a0000200041106a2004370300200041086a4201370300200041186a20033703000b200241406b24000bd90401017f230041106b22022400024002400240024002400240024002400240024002400240024020002d000041016b0e0b0102030405060708090a0b000b41012100200128021841cebb0441062001411c6a28020028020c1100000d0b024020012d0000410471450440200128021841f491044101200128021c28020c1100000d0d200128021841e4c1044105200128021c28020c110000450d010c0d0b200128021841f291044102200128021c28020c1100000d0c200241013a000f200241086a2002410f6a36020020022001290218370300200241e4c1044105106b0d0c200241f091044102106b0d0c0b200128021841f591044101200128021c28020c11000021000c0b0b200128021841c1bb04410d2001411c6a28020028020c11000021000c0a0b200128021841b3bb04410e2001411c6a28020028020c11000021000c090b200128021841a8bb04410b2001411c6a28020028020c11000021000c080b2001280218418ebb04411a2001411c6a28020028020c11000021000c070b20012802184180bb04410e2001411c6a28020028020c11000021000c060b200128021841f0ba0441102001411c6a28020028020c11000021000c050b200128021841e4ba04410c2001411c6a28020028020c11000021000c040b200128021841d9ba04410b2001411c6a28020028020c11000021000c030b200128021841d2ba0441072001411c6a28020028020c11000021000c020b200128021841c3ba04410f2001411c6a28020028020c11000021000c010b200128021841b0ba0441132001411c6a28020028020c11000021000b200241106a240020000b810201047f230041406a220224002000280200210441002100200241346a410036020020024184be0436023020024201370224200241d8bc04360220027f4101200141186a28020022052001411c6a2802002201200241206a10680d001a024003402002410436021c2002410436021420024184bd043602102002410436020c200241e4bc043602082002410336023c200241033602342002410336022c200241033602242002200020046a22033602202002200341036a3602382002200341026a3602302002200341016a3602282002200241206a36021820052001200241086a10680d01200041046a22004120470d000b41000c010b41010b200241406b24000b840401087f230041106b220324002003200136020c20032000360208200341d48f0436020420034184be04360200230041406a220224002002200336020c200241346a41013602002002420237022420024194b8043602202002410836023c2002200241386a36023020022002410c6a360238200241106a21064100210041002101230041206b22042400200241206a22052802002107024002400240024002402005280204220941037422080440200741046a21030340200120032802006a22002001490d02200341086a210320002101200841086b22080d000b0b02400240200541146a280200450440200021030c010b02402009450d0020072802040d004100210120004110490d020b41002101200020006a22032000490d010b200322014100480d020b20042001105320042802002200450d0220042802042101200641003602082006200036020020062001360204200441186a200541106a290200370300200441106a200541086a290200370300200420052902003703082006200441086a104b0d03200441206a24000c040b41808804411c41a4af04100c000b1052000b000b41f889044133200441086a419c880441948b041049000b2002280210210020022802182101024041a4c2042d000045044041a5c2042d00004101710d010b200020011000410947044041a4c20441013a00000b41a5c20441013a00000b000b900102017f017e230041406a22042400200441106a2000280200200041046a280200200041086a280200101e20042902142105200441003602282004200537032020012002200441206a101f2003200441206a102020042004290320370214200441086a200441106a20042802281011200441206a2004280208200428020c10212000200441206a1022200441406b24000b4b02017f017e230041106b22042400200120034b04402001200341bcb904102e000b200441086a2001200320021079200429030821052000410036020020002005370204200441106a24000b1000200120021027200220002001102c0b230020002d000041014704402001410010370f0b200141011037200041016a200110100bb40101017f230041306b2203240020004200370000200041186a4200370000200041106a4200370000200041086a42003700000240200241214f0440200341286a4200370300200341206a4200370300200341186a42003703002003420037031020012002200341106a1007200341202000100d20032802002003280204200341106a412041f0830410240c010b200341086a20022000100d2003280208200328020c2001200241e0830410240b200341306a24000b960101047f230041206b220224002000280204210420004184be04360204200041086a2203280200210520034100360200200241086a2004200520002802002203102620024100360218200220022903083703102001200241106a10102003200320022802186a22014d0440200020053602082000200436020420002001360200200241206a24000f0b41808404411c41bc8404100c000b900102017f017e230041406a22042400200441106a2000280200200041046a280200200041086a280200101e20042902142105200441003602282004200537032020012002200441206a101f2003200441206a101020042004290320370214200441086a200441106a20042802281011200441206a2004280208200428020c10212000200441206a1022200441406b24000b7b0020012003460440200020022001100a1a0f0b230041306b2200240020002003360204200020013602002000411c6a41023602002000412c6a41043602002000420337020c200041d49904360208200041043602242000200041206a360218200020003602282000200041046a360220200041086a2004101c000b950101057f230041206b220124002000280204210320004184be04360204200041086a2202280200210420024100360200200141086a2003200420002802002202102620014100360218200120012903083703104104200141106a10272002200220012802186a22054b044041808404411c41bc8404100c000b200020043602082000200336020420002005360200200141206a24000b4801017f230041106b22042400200220034904402003200241ac8404102e000b200441086a200320022001100b200020042802083602002000200428020c360204200441106a24000b7401017f230041106b2202240002402000413f4d04402001200041027410370c010b200041ffff004d0440200220004102744101723b010e20012002410e6a4102102c0c010b200041ffffffff034d04402000410274410272200110410c010b2001410310372000200110410b200241106a24000bae0102017f027e230041406a22022400200241186a200110290240024020022d0018410147044020022001102a2002290300a7450d010b200042013703000c010b200241106a2903002103200229030821042000200229001937000820004200370300200041286a2004370300200041306a2003370300200041206a200241316a290000370000200041186a200241296a290000370000200041106a200241216a2900003700000b200241406b24000bb50202037f017e230041306b22022400200241086a41047221042000027f0240034020022001103320022d00004101710d01200320046a20022d00013a0000200341016a22034120470d000b200041086a200241136a2f00003b00002000410a6a200241156a2d00003a00002000410f6a2002411a6a2f01003b0000200041116a2002411c6a2d00003a0000200041166a200241216a2f00003b0000200041186a200241236a2d00003a0000200220022f010c3b0104200220022d000e3a0006200241166a28010021012002411d6a2800002103200241246a2902002105200228000f2104200041036a20022d00063a0000200020022f01043b0001200041196a2005370000200041126a20033600002000410b6a2001360000200041046a200436000041000c010b41010b3a0000200241306a24000b6402027f037e230041106b22022400200241086a22034200370300200242003703000240200120024110103145044020032903002105200229030021060c010b420121040b2000200637030820002004370300200041106a2005370300200241106a24000b2a01017f230041106b220324002003200137030820032000370300200220034110102c200341106a24000b6701037f230041106b220324002000280208220420026a2205200449044041d0b604411c41fcb804100c000b200341086a2004200520002802002000280204418cb90410782003280208200328020c20012002419cb904102420002005360208200341106a24000b0300010b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41043602002003420237020c200341809804360208200341043602242003200341206a3602182003200341046a36022820032003360220200341086a2002101c000b4801017f230041206b22012400200141146a410136020020014201370204200141d4bb043602002001410536021c200120003602182001200141186a360210200141d08604101c000bc00101037f230041306b2202240041bbbc042103411921040240024002400240024020002d000041016b0e0400010203040b419fbc042103411c21040c030b4189bc042103411621040c020b41f5bb042103411421040c010b41dcbb0421030b2002411c6a41013602002002200436022c20022003360228200241063602242002420137020c200241d4bb04360208200141186a2802002001411c6a2802002002200241286a3602202002200241206a360218200241086a1068200241306a24000b6001047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206107a200120022003280208200328020c41d4c10410242003200220042006107a200020032903003702000b200341106a240020050b910102027f017e230041106b220124002001420437030841042102027f02400240034020012000103320012d00004101710d01200141086a20026a20012d00013a0000200241016a22024108470d000b20012903082203a741044f0d014184be04411b41a0be04100c000b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b3f01027f230041106b22022400200241003a000f200020012002410f6a410110312201047f41000520022d000f0b3a0001200020013a0000200241106a24000bfe0502047f027e23004190016b22012400200141086a200041e000100a1a200141106a21030240200129030822064201520440200141f0006a220041808001360200200141a6c20436026c20014100360268200141e8006a102520014188016a220220002802003602002001200129036837038001200141e8006a20014180016a41dc84041035200141e8006a41e8840441152003101d20022000280200360200200120012903683703800120014180016a41fd84044113200341216a101d20002002280200360200200120012903800137036820014180016a200141e8006a41908504200141d8006a10360c010b200141f0006a220041808001360200200141a6c20436026c20014100360268200141e8006a102520014188016a220220002802003602002001200129036837038001200141e8006a20014180016a41b885041035200141e8006a41c4850441162003102320022000280200360200200120012903683703800120014180016a41da85044118200141306a102320002002280200360200200120012903800137036820014180016a200141e8006a41f28504200141d0006a10360b230041206b22002400200041186a220420014180016a220241086a28020036020020002002290200220537031020004100360210200041086a200041106a2005a7101120002903082105200141e8006a220241086a2004280200360200200220002903103702002002200537020c200041206a240020014188016a200141f0006a2802003602002001200129036837038001200141f8006a2802002100200128027420012902840121052001410036027020012005370368027f2006500440200141e8006a410010372003200141e8006a1020200341216a200141e8006a1020200141d8006a0c010b200141e8006a410110372003200141e8006a1010200141306a200141e8006a1010200141d0006a0b2203290300200341086a290300200141e8006a102b2001200129036837028401200120014180016a20012802701011200020012802002001280204100220014190016a24000bb40102027f017e230041406a22032400200341106a2001280200200141046a280200200141086a2204280200101e20032902142105200341003602282003200537032020022802002002280204200341206a101f200341206a2002280208410f102c20032003290320370214200341086a200341106a20032802281011200341206a2003280208200328020c10212001200341206a1022200041086a200428020036020020002001290200370200200341406b24000bb40102027f017e230041406a22042400200441106a2001280200200141046a280200200141086a2205280200101e20042902142106200441003602282004200637032020024116200441206a101f2003290300200341086a290300200441206a102b20042004290320370214200441086a200441106a20042802281011200441206a2004280208200428020c10212001200441206a1022200041086a200528020036020020002001290200370200200441406b24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b2002200341acb904105d000b5901027e20002903002101200041086a2903002102230041206b22002400200041186a41808001360200200041a6c20436021420004100360210200041086a200041106a20012002101641002000280208200028020c103b000baa0102047f017e230041206b22032400200341186a41808001360200200341a6c20436021420034100360210200341086a230041206b22022400200341106a220429020421062002410036021820022006370310200241106a200141ff0171410247047f200241106a4101103720010541000b103720042002290310370204200241086a2004200228021810112002290308370300200241206a240020002003280208200328020c103b000b5401017f230041106b220224002002200128020436020c200020012802002002410c6a100421002001200228020c103d410c21012000410b4d0440200041027441ecc1046a28020021010b200241106a240020010b0b002000200120021006000b6001017f230041106b2201240020004200370000200041186a4200370000200041106a4200370000200041086a420037000020014120360204200120003602002001412036020c20002001410c6a10082001200128020c103d200141106a24000b3701017f230041106b22022400200241086a410020012000280200200028020441a0ba04107820002002290308370200200241106a24000b6c02027f027e230041206b22002400200041086a220142003703002000420037030020004110360214200020003602102000411036021c20002000411c6a1009200041106a200028021c103d2001290300210220002903002103200041206a2400410541042002200384501b0b4c01017f230041206b220324002000450440410120021039000b200341186a4200370300200341106a4200370300200341086a420037030020034200370300200120031017410020021039000bc101002000027f024020014101710d00103e41ff01714105460d00200041043a000141010c010b200041c1006a4200370000200041396a4200370000200041316a4200370000200041296a4200370000200041f8006a4200370300200041f0006a420237030020004180016a420037030020004188016a4200370300200041d8006a4200370000200041d0006a4201370000200041e0006a4200370000200041e8006a4200370000200041286a41013a0000200041086a420237030041000b3a00000b2601017f230041106b220224002002200036020c20012002410c6a4104102c200241106a24000b2e01017f230041e0006b22012400200141086a200041d800100a1a2001420037030020011034200141e0006a24000ba90502027f027e230041d0026b220024000240103e41ff01714105460440200041808001360224200041a6c204360220200041206a1044200020002903203703a801027f4101200041a8016a10324281feffffff1f834280b6baede90b520d001a200041086a200041a8016a102a200041186a29030021022000290310210320002802080b0440410321010c020b103e41ff01714105470440410421010c020b200041e1016a4200370000200041d9016a4200370000200041d1016a4200370000200041c9016a4200370000200041f8016a420037030020004180026a420037030020004188026a420037030020004198026a4200370300200041a0026a4200370300200041a8026a4200370300200042013703f0012000420237039002200041013a00c801200042023703a801200041b0026a103c200041f0016a200041b0026a200320021013027f20002903a8014202520440200042013703a801200041b0016a0c010b200042013703a801200041b0016a0b2201200337030020012002370308200041c0016a220141003a0000200041f0006a2002370300200041da006a200041c8026a290300370100200041d2006a200041c0026a290300370100200041ca006a200041b8026a290300370100200041c2006a20002903b00237010020002003370368200041013a0041200041003a0020200041206a1042200041206a200041a8016a418801100a1a20014200370300200041b8016a4200370300200041b0016a4200370300200042003703a801200041206a200041a8016a1017200041d0026a24000f0b200041043a00a801200041a8016a102f000b200020013a00b002200041bc016a4101360200200042013702ac012000418887043602a801200041053602242000200041206a3602b8012000200041b0026a360220200041a8016a41d08604101c000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10052000200128020c103d200141106a24000bb81d02067f077e23004190056b2200240002400240103e41ff01712201410546044020004180800136026c200041a6c204360268200041e8006a1044200020002903683703b001200041b0016a103222064201832207a70d01200642807e8342002007501b22074280feffffff1f832206422088a721032006421888a721022006421088a7210402400240024002400240024002402007a741087641ff017122014182016b0e020105000b024020014192016b0e020402000b200141f400460d02200141fa01470d0741062101200441ff0171419801470d08200241ff01714133470d08200341a301470d08200041a0036a200041b0016a102820002903a0034201510d07200041ae026a200041c0036a2903002206370100200041a6026a200041b8036a2903002207370100200041de046a200041b0036a2903002208370100200041e6046a2007370100200041ee046a2006370100200041f6016a2008370000200041fe016a200737000020004186026a2006370000200020002903a80322063701d604200020063700ee01200041d0036a2903002107200041c8036a2903002106200041c0016a200041e8016a4126100a1a410321020c050b41062101200441ff017141c400470d07200241ff017141a101470d0741002102200341ad01460d040c070b41062101200441ff0171413a470d06200241ff017141e301470d06200341c801470d06200041a0036a200041b0016a10294101210220002d00a0034101460d05200041c8016a200041aa036a290100370300200041d0016a200041b2036a290100370300200041d7016a200041b9036a290000370000200020002901a2033703c00120002d00a10321050c030b41062101200441ff017141a201470d05200241ff017141fa00470d05200341c801470d05200041d0046a200041b0016a102920002d00d0044101460d0420004190026a200041b0016a102920002d0090024101460d04200041c2036a200028009402360000200041d0006a200041b0026a2d00003a0000200041a8036a200041da046a290100370300200041b0036a200041e2046a290100370300200041b7036a200041e9046a29000037000020002000280091023600bf03200020002901d2043703a0032000200041a8026a290300370348200041a0026a290300210720004198026a290300210620002d00d1042105200041c0016a200041a0036a4126100a1a410221020c020b41062101200441ff0171412e470d04200241ff01714129470d042003411f470d04200041a0036a200041b0016a102820002903a0034201510d03200041ae026a200041c0036a2903002206370100200041a6026a200041b8036a2903002207370100200041de046a200041b0036a2903002208370100200041e6046a2007370100200041ee046a2006370100200041f6016a2008370000200041fe016a200737000020004186026a2006370000200020002903a80322063701d604200020063700ee01200041d0036a2903002107200041c8036a2903002106200041c0016a200041e8016a4126100a1a410421020c010b41062101200441ff0171419f01470d03200241ff01714102470d03200341e300470d03200041c0016a200041b0016a102920002d00c0014101460d02200041e8016a200041b0016a102920002d00e8014101460d02200041306a200041b0016a102a2000290330a70d02200041406b29030021082000290338210a200041c8046a2201200041d9016a290000370300200041c0046a2205200041d1016a290000370300200041b8046a2202200041c9016a290000370300200041d0006a20004181026a2d00003a0000200020002900c1013703b0042000200041f9016a290000370348200020004182026a2801003602b801200020004185026a2800003600bb01200041f1016a290000210720002900e9012106200041b6036a200529030022093701002000419e026a2002290300220b370100200041a6026a2009370100200041ae026a2001290300220c370100200041ee046a200c370000200041e6046a2009370000200041de046a200b370000200020002903b004220937019602200020093700d604200041c0016a200041d0046a4126100a1a410521020b20004188016a200041c0016a4126100a1a20004180016a200041d0006a2d00003a000020002000290348370378200020002802b801360270200020002800bb01360073200221010c020b200020013a00a003200041a0036a102f000b410621010b20002001410646047f410305200041c0016a20004188016a4126100a1a200041e4006a2000280073360000200041e0006a220220004180016a2d00003a000020002000280270360061200041d0006a200229030037030020002000290378220937035820002009370348200041e8016a200041c0016a4126100a1a02400240024002400240024002400240024002400240200141016b0e050403020100050b200041a0036a41800210404101210120002d00a0034101460d09200041a0036a20004196026a200041a8036a418801100a418801100a1a200041a0016a20004186026a29000037030020004198016a200041fe016a29000037030020004190016a200041f6016a290000370300200020002900ee0137038801200041e8046a200041d0006a290300370300200020073703d804200020063703d004200020002903483703e00420004190026a103c200041206a200041a0036a20004188016a20004190026a10460240024020002903202207200a542202200041286a290300220620085420062008511b0d00200041a0036a20004188016a200041d0046a200a2008104741ff017122014102470d002007200a7d220a200756200620087d2002ad7d220720065620062007511b0d0120004188046a20004188016a20004190026a200a20071015410221010b2001410246200041a0036a2001103f000b41808004412141bc8704100c000b200041a0036a418002104020002d00a0034101460d08200041a0036a20004196026a200041a8036a418801100a418801100a1a200041c8046a220120004186026a290000370300200041c0046a2202200041fe016a290000370300200041b8046a2203200041f6016a290000370300200020002900ee013703b00420004188016a103c20004188046a20004188016a200041b0046a200620071015200041e8046a200041a0016a290300370300200041e0046a20004198016a290300370300200041d8046a20004190016a290300370300200041f8046a200329030037030020004180056a200229030037030020004188056a200129030037030020002000290388013703d004200020002903b0043703f00420004198026a200041d0046a41c000100a1a200041e0026a2007370300200041d8026a2006370300200042013703900220004190026a10344101200041a0036a4102103f000b200041a0036a418002104020002d00a0034101460d07200041a0036a20004196026a200041a8036a418801100a418801100a1a200041e8046a20004186026a290000370300200041e0046a200041fe016a290000370300200041d8046a200041f6016a290000370300200020002900ee013703d00420004190026a103c200041a0036a20004190026a200041d0046a20062007104741ff01712201410246200041a0036a2001103f000b200041a0036a4100104020002d00a0034101470d020c060b200041a0036a4100104020002d00a0034101460d05200041a0036a20004196026a200041a8036a418801100a418801100a1a20004199026a200041c8016a290100370000200041a1026a200041d0016a290100370000200041a8026a200041d7016a290000370000200020053a009002200020002901c001370091022000200041a0036a20004190026a10482000200041086a2903003703d804200020002903003703d004200041d0046a1038000b200041a0036a4100104020002d00a0034101460d0420004190016a200041d1036a29000037030020004198016a200041d9036a290000370300200041a0016a200041e1036a2900003703002000200041c9036a290000370388010240200041a8036a29030022064202520440200041b8036a2903002107200041b0036a29030021080c010b200041c8036a2d00004101470d04200041e8046a2201200041a0016a290300370300200041e0046a220220004198016a290300370300200041d8046a220320004190016a29030037030020002000290388013703d00420004180800136029402200041a6c20436029002024002400240200041d0046a20004190026a103a0e0402000001000b200041b4036a410036020020004184be043602b003200042013702a403200041e0be043602a003200041a0036a41bcbf04101c000b420021060c010b200041c0036a2001290300370300200041b8036a2002290300370300200041b0036a2003290300370300200020002903d0043703a803200042013703a00320004190026a200041a8036a101920002d0090024101460d0220004198026a290300500d03200041a8026a2903002107200041a0026a2903002108420121060b20064201520d03200020083703a003200020073703a803200041a0036a1038000b200041a0036a20004196026a200041a8036a418801100a418801100a1a20004190026a200041c0016a4126100a1a20004191016a200041c8016a29010037000020004199016a200041d0016a290100370000200041a0016a200041d7016a290000370000200020053a008801200020002901c00137008901200041df046a2007370000200041ef046a200041d0006a2d00003a0000200020063700d7042000200041b2026a2800003600d304200020002800af023602d004200020002903483700e704200041106a200041a0036a20004188016a200041d0046a10462000200041186a2903003703b804200020002903103703b004200041b0046a1038000b200020002d0091023a00b004419c81044127200041b0046a419c8404419082041049000b41a08204411741b88204104a000b41a18004411e418c8104104a000b20002d00a1030b3a00d004200041b4036a4101360200200042013702a403200041b487043602a0032000410536029402200020004190026a3602b0032000200041d0046a36029002200041a0036a41d08604101c000b6902017f017e230041406a220424002004200336021c20042002360218200441206a200141e8006a200441186a100e2004200441206a1018200429030821052000200441106a2903004200200428020022011b37030820002005420020011b370300200441406b24000bde0202037f037e23004180016b22052400200541186a2000200110480240200529031822092003542207200541206a290300220820045420042008511b450440200041c8006a22062001200920037d200820047d2007ad7d1013200541086a2000200210482005290308220820037c220a20085422002000ad200541106a290300220820047c7c220920085420082009511b0d0120062002200a20091013200541f8006a2004370300200541c1006a200141186a290000370000200541396a200141106a290000370000200541316a200141086a290000370000200541ca006a2002290000370100200541d2006a200241086a290000370100200541da006a200241106a290000370100200541e2006a200241186a29000037010020052003370370200541013a0049200541013a002820052001290000370029200541286a1042410221060b20054180016a240020060f0b41808404411c41cc8704100c000b6202017f017e230041406a220324002003200236021c200341206a200141c8006a2003411c6a10122003200341206a1018200329030821042000200341106a2903004200200328020022011b37030820002004420020011b370300200341406b24000b7c01017f230041406a220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41073602002005420237021c200541b4be04360218200541063602342005200541306a3602282005200541106a3602382005200541086a360230200541186a2004101c000b6001017f230041106b220324002003200136020c20032000360208230041206b22002400200041146a410136020020004201370204200041d4bb043602002000410636021c2000200341086a3602182000200041186a36021020002002101c000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41dc8704200241086a104c200241206a24000bfc0301057f230041406a22032400200341346a2001360200200341033a00382003428080808080043703182003200036023041002101200341003602282003410036022002400240024020022802082200450440200241146a28020041ffffffff0171220641016a210520022802102104410021000340200541016b2205450d02200228020020006a220141046a28020022070440200328023020012802002007200328023428020c1100000d040b200020046a2101200041086a21002001280200200341186a200141046a280200110100450d000b0c020b2002410c6a28020022064105742105200641ffffff3f71210603402005450d01200228020020016a220441046a28020022070440200328023020042802002007200328023428020c1100000d030b200320002d001c3a003820032000290204422089370318200341106a20022802102204200041146a106620032003290310370320200341086a20042000410c6a106620032003290308370328200141086a2101200541206b210520002802002107200041206a2100200420074103746a2204280200200341186a2004280204110100450d000b0c010b4100210020062002280204492201450d012003280230200228020020064103746a410020011b22012802002001280204200328023428020c110000450d010b410121000b200341406b240020000b0f00200028020020012002104e41000b3f01017f2000200210502000280208220320002802006a20012002100a1a2003200220036a22014b044041808804411c41a48c04100c000b200020013602080bb90201027f230041106b22022400024002400240200028020022002002410c6a027f02400240200141ff004d0440200028020822032000280204460d010c040b2002410036020c2001418010490d0120014180800449044020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040c020b200041011050200028020821030c020b20022001413f71418001723a000d2002200141067641c001723a000c41020b104e0c010b200028020020036a20013a0000200341016a22012003490d01200020013602080b200241106a240041000f0b41808804411c41948c04100c000bbe0301077f230041106b22052400024002400240200120002802042207200028020822026b4b0440200120026a22012002490d03200720076a22032007490d022000280200410020071b210841002102230041106b220624002005027f2003200120012003491b22014108200141084b1b220141004e0440027f0240200804402007450440200641086a2001105320062802082104200628020c0c030b2001419cc204280200220320016a22022003490d021a41a0c2042802002002490440200141ffff036a220441107640002202417f46200241ffff0371200247720d022002411074220320044180807c716a22022003490d024100210441a0c20420023602002001200120036a22022003490d031a0b419cc204200236020020012003450d021a200320082007100a210420010c020b2006200110532006280200210420062802040c010b4100210420010b2102200404402005200436020441000c020b20052001360204410121020b41010b360200200541086a2002360200200641106a240020052802004101460d01200020052902043702000b200541106a24000f0b200541086a280200450d01000b41a08904412141c48904100c000b1052000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a104b200241206a24000b0f0041d48904411141e88904100c000ba90101027f027f41012001450d001a4100419cc204280200220220016a22032002490d001a024041a0c2042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141a0c20420033602004100200120026a22032002490d021a0b419cc204200336020020020c010b41000b210320002001360204200020033602000b0e0020002802001a03400c000b000bb20302047f027e027f2000350200210620012104230041306b22032400412721000240024020064290ce00540440200621070c010b412721010240034020064290ce00802107200141046b220020014e0d01200341096a20006a200620074290ce007e7da7220141ffff037141e4006e220241017441f492046a2f00003b00002000200041026a22054c0440200341096a20056a2001200241e4006c6b41ffff037141017441f492046a2f00003b0000200642ffc1d72f562000210120072106450d030c010b0b41f08c04411c41b4af04100c000b0c010b02402007a7220241e3004c0440200021010c010b200041026b220120004e0d01200341096a20016a2007a72200200041ffff037141e4006e220241e4006c6b41ffff037141017441f492046a2f00003b00000b02402002410a4e0440200141026b220020014e0d02200341096a20006a200241017441f492046a2f00003b00000c010b200141016b220020014e0d01200341096a20006a200241306a3a00000b412720006b220141274b04400c010b20044184be044100200341096a20006a20011058200341306a24000c010b41c08c04412141b4af04100c000b0b3001017f2002200220016b22044f0440200020043602042000200120036a3602000f0b41c08c04412141bcc004100c000b0d0042a0e5d6f4fad3e0bc897f0b920401077f230041106b22072400418080c400210920042105024020002802002206410171450d002004200441016a22054d0440412b21090c010b41f08c04411c41a89504100c000b0240024002400240200641047145044041002101200521060c010b2001200120026a105920056a22062005490d010b41012105200028020841014704402000200920012002105a0d032000280218200320042000411c6a28020028020c11000021050c030b024002402000410c6a280200220820064b044020002d00004108710d01200820066b220620084b0d022007200020064101105b20072802002206418080c400460d05200728020421082000200920012002105a0d052000280218200320042000411c6a28020028020c1100000d05200620082000105c21050c050b2000200920012002105a0d042000280218200320042000411c6a28020028020c11000021050c040b2000280204210a2000413036020420002d0020210b200041013a00202000200920012002105a0d03200820066b220120084b0d02200741086a200020014101105b20072802082201418080c400460d03200728020c21022000280218200320042000411c6a28020028020c1100000d03200120022000105c0d032000200b3a00202000200a360204410021050c030b41c08c04412141d89504100c000b41f08c04411c41b89504100c000b41c08c04412141c89504100c000b200741106a240020050b4401017f2000200146044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a22002001470d000b20020f0b41f08c04411c41a4af04100c000b4b000240027f2001418080c4004704404101200028021820012000411c6a2802002802101101000d011a0b20020d0141000b0f0b2000280218200220032000411c6a28020028020c1100000bb20101027f20022105024002400240200320012d0020220320034103461b41ff017141016b0e03010001020b2002200241016a22034d044020034101762105200241017621040c020b41f08c04411c41e89504100c000b41002105200221040b200441016a21022001411c6a2802002103200128020421042001280218210102400340200241016b2202450d01200120042003280210110100450d000b418080c40021040b20002005360204200020043602000b4701027f2002411c6a28020021032002280218210441002102027f0340200120012002460d011a200241016a2102200420002003280210110100450d000b200241016b0b2001490b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41043602002003420237020c200341b89004360208200341043602242003200341206a360218200320033602282003200341046a360220200341086a2002101c000b5901017f230041106b220624000240200120024d0440200220044d0d01200220042005105f000b2001200220051060000b200641086a2001200220031056200020062802083602002000200628020c360204200641106a24000b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41043602002003420237020c200341a09804360208200341043602242003200341206a3602182003200341046a36022820032003360220200341086a2002101c000b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41043602002003420237020c200341d49804360208200341043602242003200341206a3602182003200341046a36022820032003360220200341086a2002101c000b880101047f200141086a28020021022001280204210402400240200141046a10622205418080c400470440200220046b2203200128020420012802086b6a220220034b0d012001280200220320026a22022003490d02200120023602000b20002005360204200020033602000f0b41c08c04412141dc9a04100c000b41f08c04411c41ec9a04100c000bb70101047f200028020022012000280204460440418080c4000f0b2000200141016a36020020012d00002203411874411875417f4c047f2000200141026a36020020012d0001413f7121022003411f712104200341df014d044020044106742002720f0b2000200141036a36020020012d0002413f712002410674722102200341f00149044020022004410c74720f0b2000200141046a3602002004411274418080f0007120012d0003413f71200241067472720520030b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b980301057f230041306b2202240020012802102105200028020421042000280200210302400240024020012802082206410147044020050d012001280218200320042001411c6a28020028020c11000021000c030b2005450d010b200141146a28020020022003360224200241286a200320046a3602002002410036022041016a210002400340200041016b22000440200241186a200241206a1061200228021c418080c400470d010c020b0b200241106a200241206a10612002280214418080c400460d00200241086a2002280210200320041063200228020c2004200228020822001b21042000200320001b21030b20060d002001280218200320042001411c6a28020028020c11000021000c010b2001410c6a28020022002003200320046a105922054d04402001280218200320042001411c6a28020028020c11000021000c010b20022001200020056b4100105b4101210020022802002205418080c400460d00200228020421062001280218200320042001411c6a28020028020c1100000d00200520062001105c21000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141e49204102e000b200041800120026b3602042000200120026a3602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a104c200341206a24000b6c01027f230041206b2202240041012103024020002001106a0d002002411c6a410036020020024184be043602182002420137020c200241e88d04360208200141186a2802002001411c6a280200200241086a10680d00200041046a2001106a21030b200241206a240020030b850201037f23004190016b22022400027f02402001280200220341107145044020034120710d012000200110550c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a1067200141d4bc0441022002280208200228020c10580c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a1067200141d4bc0441022002280200200228020410580b20024190016a24000ba908010c7f230041e0006b22032400027f024020020440200341d8006a210d2000280204210b2000280200210c2000280208210a0340200a2d00000440200c41c990044104200b28020c1100000d030b2003410a3602582003428a808080103703502003200236024c200341003602482003200236024420032001360240200341386a2001200241002002106c0240024020032802382207450d00200328023c210503400240024002400240024002402003280254220041016b220420004d0440200320046a41d8006a2d00002108200541084f0440200741036a417c7120076b2200450440410021040c030b200341306a410020052000200020054b1b22042007200541ec9604105e20032802342206450d0220032802302109410021000340200020096a2d00002008460d04200041016a22002006470d000b0c020b2005450d08410021000340200020076a2d00002008460d03200041016a22002005470d000b0c080b41c08c04412141f09d04100c000b0240024002402005200541086b22004f0440200020044f0d010c020b41c08c04412141fc9604100c000b200841818284086c210902400340200441046a22062004490d01200420076a280200200973220e417f73200e41818284086b71200620076a2802002009732206417f73200641818284086b7172418081828478710d022004200441086a22064d04402000200622044f0d010c040b0b41f08c04411c419c9704100c000b41f08c04411c418c9704100c000b200421060b20052006490d01200341286a2006200520071056200328022c2204450d06200328022821054100210003402008200020056a2d00004704402004200041016a2200470d010c080b0b200020066a220020064f0d0041f08c04411c41bc9704100c000b2000200041016a22044b0d012004200328024822046a22002004490d0220032000360248200020032802542204490d03200341206a20032802402003280244200020046b22052000106c20032802202200450d0320032802242104200341186a41002003280254200d410441a09e04105e2004200328021c470d03027f20032802182106034041002004450d011a200441016b210420062d0000210720002d00002108200041016a2100200641016a210620072008460d000b200820076b0b0d03200a41013a0000200541016a220020054f0d0641f08c04411c41c09104100c000b2006200541ac9704102e000b41f08c04411c41809e04100c000b41f08c04411c41909e04100c000b200341106a200328024020032802442003280248200328024c106c20032802142105200328021022070d000b0b200a41003a0000200221000b200341086a20012002200041d09104106d200c2003280208200328020c200b28020c1100000d02200320002001200241e09104106e20032802002101200328020422020d000b0b41000c010b41010b200341e0006a24000b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011056200528020c2107200528020821060b2000200736020420002006360200200541106a24000b4e01027f230041106b22052400200541086a20032001200210632005280208220645044020012002410020032004106f000b200528020c21012000200636020020002001360204200541106a24000b6400024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b2003200320016b220449044041c08c04412141ec9b04100c000b200020043602042000200120026a3602000f0b20022003200120032004106f000bb20601027f23004180016b220524002005200336021c200520023602182005027f20014181024f0440418002210602400340200020066a2c000041bf7f4a0d01200641016b22060d000b410021060b200541106a20002001200641f09c04106d20052005290310370320200541b09e0436022841050c010b200520013602242005200036022020054184be0436022841000b36022c024002402005200120024f047f200120034f0d0120030520020b360238200541d4006a4103360200200541ec006a4106360200200541e4006a410636020020054203370244200541d89e043602402005410436025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580c010b200541086a027f02400240200220034d04402002450d010240200120024d044020012002470d010c030b200020026a2c000041bf7f4a0d020b20052002360230200221030c020b200541f4006a4106360200200541ec006a4106360200200541e4006a4104360200200541d4006a410436020020054204370244200541949f043602402005410436025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580c030b2005200336023041002003450d011a0b03400240200120034d044020012003470d0120010c030b200020036a2c00004140480d0020030c020b200341016b22030d000b41000b2206200020012004106e20052005280208220036025820052000200528020c6a36025c2005200541d8006a10622004107022003602342006027f41012000418001490d001a41022000418010490d001a41034104200041808004491b0b20066a22004d04402005200036023c20052006360238200541d4006a4105360200200541fc006a4106360200200541f4006a4106360200200541ec006a410a360200200541e4006a410b36020020054205370244200541e89f043602402005410436025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580c010b41f08c04411c2004100c000b200541406b2004101c000b1a002000418080c40046044041908f04412b2001100c000b20000b920a02097f017e4101210602402001280218220741272001411c6a28020028021022081101000d0041f4002103410221010240027f02400240027f0240024002402000280200220241096b0e050704010105000b2002412746200241dc0046720d010b2002410b7421034100210141202100412021040240027e024002400240024002400240024002400240024002400340200120004101766a22002001490d0302402003200041027441c4af046a280200410b7422054d044020032005460d03200021040c010b200041016a22012000490d050b2004200420016b22004f044020012004490d010c030b0b41c08c04412141849904100c000b200041016a21010b2001411f4b0d022001410274220341c4af046a280200411576210002402001411f470440200341c8af046a280200411576220320006b220420034d0d0141c08c04412141ccad04100c000b41c30520006b220441c4054f0d040b4100210320022001200141016b22054f047f200541204f0d05200541027441c4af046a28020041ffffff00710541000b6b220a20024b0d05200441016b220320044b0d06200020046a41016b210402402003450d00200041c305200041c3054b1b210941002101034020002009460d09024020012001200041c4b0046a2d00006a22054d04402005200a4d0d01200021040c030b41f08c04411c418cae04100c000b200041016a210020052101200341016b22030d000b0b20044101710d08024002402002418080044f04402002418080084f0d01200241e7a604412a41bba70441c00141fba80441b60310720d0d0c020b200241c8a10441284198a20441a00241b8a40441af021072450d010c0c0b200241e0ffff007141e0cd0a46200241b9ee0a6b41074972200241feffff0071419ef00a46200241a29d0b6b410e497272200241e1d70b6b419f18492002419ef40b6b41e20b4972200241cba60c6b41b5db2b4972720d00200241f08338490d0b0b200241017267410276410773ad4280808080d000840c090b41f08c04411c41e49804100c000b41f08c04411c41f49804100c000b2001412041acad04105d000b41c08c04412141bcad04100c000b20054120419cae04105d000b41c08c04412141dcad04100c000b41c08c04412141ecad04100c000b200941c30541fcad04105d000b200241017267410276410773ad4280808080d000840b210b41032101200221030c060b41010c010b41020b2101200221030c030b41ee000c010b41f2000b21030b0240034002402001210241002101200321000240024002400240200241016b0e03030200010b02400240024002400240200b422088a741ff017141016b0e050004010203050b200b42ffffffff8f6083210b41fd002100410321010c060b200b42ffffffff8f608342808080802084210b41fb002100410321010c050b200b42ffffffff8f608342808080803084210b41f5002100410321010c040b200b42ffffffff8f60834280808080c00084210b41dc002100410321010c030b200ba7220141ffffffff03712001470d032001410274220041204f0d0520032000411c7176410f712200413072200041d7006a2000410a491b41808f04107021002001450440200b42ffffffff8f608342808080801084210b410321010c030b200b42017d42ffffffff0f83200b4280808080708384210b410321010c020b20074127200811010021060c050b41dc002100410121010b200720002008110100450d010c030b0b41908d04412141e08e04100c000b41c08d04412441f08e04100c000b20060b970301087f230041106b220a240041012107024002402002450d00200120024101746a210b20004180fe0371410876210c200141026a210820012d00012102200041ff0171210e03402002210d0240200c20012d000022014704402008200b462001200c4b720d030c010b200a41086a2009200d200320044198a104105e200a2802082102200a28020c2101024003402001450d01200141016b210120022d0000200241016a2102200e470d000b410021070c040b2008200b460d020b20082d000121022008220141026a2108200d2209200220096a22024d0d000b41f08c04411c4188a104100c000b2006450d00200520066a2103200041ffff03712102024003400240200541016a2100027f200020052d00002201411874411875220441004e0d001a20002003460d0120052d0001200441ff0071410874722101200541026a0b2105200141004a2002200220016b22024a730d0220024100480d032007410173210720032005470d010c030b0b41908f04412b41a8a104100c000b41c08c04412141b8a104100c000b200a41106a240020074101710b7e01037f23004190016b2202240020002d0000210341ff0021000340200241106a20006a413041372003410f712204410a491b20046a3a0000200041016b21002003220441047621032004410f4b0d000b200241086a200241106a200041016a1067200141d4bc0441022002280208200228020c105820024190016a24000b5b01027f230041206b220224002001411c6a28020021032001280218200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a104c200241206a24000b0b002000280200200110640b1b00200128021841e4c10441052001411c6a28020028020c1100000bfe0201037f230041406a2202240020002802002103410121000240200141186a280200220441e48f04410c2001411c6a280200220128020c1100000d0002402003280208220004402002200036020c410121002002413c6a41013602002002420237022c200241f48f043602282002410c3602142002200241106a36023820022002410c6a36021020042001200241286a1068450d010c020b20032802002200200328020428020c11080042f4f99ee6eea3aaf9fe00520d002002200036020c410121002002413c6a41013602002002420237022c200241f48f043602282002410d3602142002200241106a36023820022002410c6a36021020042001200241286a10680d010b200328020c2100200241246a41033602002002413c6a410e360200200241346a410e36020020024203370214200241bc8f0436021020022000410c6a3602382002200041086a3602302002410636022c200220003602282002200241286a36022020042001200241106a106821000b200241406b240020000b5901017f230041106b220624000240200120024d0440200220044d0d01200220042005105f000b2001200220051060000b200641086a2001200220031079200020062802083602002000200628020c360204200641106a24000b3001017f2002200220016b22044f0440200020043602042000200120036a3602000f0b41a0b60441214188b604100c000b3001017f2002200220016b22044f0440200020043602042000200120036a3602000f0b41d0c004412141bcc004100c000b0be8410c00418080040bf107617474656d707420746f2073756274726163742077697468206f766572666c6f77656e636f756e746572656420656d7074792073746f726167652063656c6c2f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6372617465732f73746f726167652f7372632f6c617a792f6d6f642e727300003f0001004b0000009d00000019000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e7472792f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6372617465732f73746f726167652f7372632f7472616974732f6d6f642e7273c30001004d000000a80000000a00000073746f7261676520656e7472792077617320656d70747900c30001004d000000a90000000a0000006661696c656420746f2070756c6c207061636b65642066726f6d20726f6f74206b6579204801010024000000301f0100020000002f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6372617465732f73746f726167652f7372632f7472616974732f6f7074737065632e72730000007c010100510000006b0000000d000000681f0100540000009900000030000000681f0100540000009e0000002e000000617474656d707420746f206164642077697468206f766572666c6f770f000000010000000100000001000000241c010055000000b500000037000000241c010055000000b80000000900000045726332303a3a5472616e7366657200041f0100000000004c02010045726332303a3a5472616e736665723a3a66726f6d45726332303a3a5472616e736665723a3a746f45726332303a3a5472616e736665723a3a76616c756545726332303a3a417070726f76616c000000041f010000000000a602010045726332303a3a417070726f76616c3a3a6f776e657245726332303a3a417070726f76616c3a3a7370656e64657245726332303a3a417070726f76616c3a3a76616c75652f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6578616d706c65732f74726169742d65726332302f6c69622e727308030100480000003f000000050000006469737061746368696e6720696e6b2120636f6e7374727563746f72206661696c65643a2000000060030100250000006469737061746368696e6720696e6b21206d657373616765206661696c65643a2000000090030100210000000803010048000000cc0000002c0000000803010048000000020100002700000010000000040000000400000011000000120000001300418088040bb104617474656d707420746f206164642077697468206f766572666c6f77140000000000000001000000150000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727300000000000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000002c0401006d000000830100001c0000006361706163697479206f766572666c6f770000002c0401006d000000fd010000050000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72732b05010069000000550200001c0000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e7273000000a40501006d000000c60600000d000000a40501006d00000002070000090041c08c040b21617474656d707420746f2073756274726163742077697468206f766572666c6f770041f08c040b41617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770041c08d040bd528617474656d707420746f2073686966742072696768742077697468206f766572666c6f772e2e0000e4060100020000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e7273000000f00601006d000000a200000035000000f00601006d000000a200000021000000f00601006d000000a30000003300000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75653a041f010000000000bb07010001000000bb070100010000001600000000000000010000001700000070616e69636b65642061742027272c20f007010001000000f107010003000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e6465782069732000000408010020000000240801001200000060202020202f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6275696c646572732e727300004d0801007100000028000000150000004d080100710000002f000000210000004d0801007100000030000000120000002c0a280a28292f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e72730000f60801006c000000650000001400000030303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72733c0a01006c0000001e0500000d0000003c0a01006c000000220500000d0000003c0a01006c00000045050000310000003c0a01006c0000004e050000310000003c0a01006c000000b2050000380000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000f80a010071000000420000001e000000f80a0100710000004900000015000000f80a0100710000004e0000001f000000f80a0100710000005700000009000000f80a0100710000005b00000005000000f80a0100710000005b0000003d00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820cc0b010012000000de0b01002200000072616e676520656e6420696e64657820100c010010000000de0b010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000300c010016000000460c01000d0000008f1b01006e000000c6080000170000008f1b01006e000000d1080000180000008f1b01006e000000da08000014000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028940c010015000000a90c01002b000000f5080100010000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273000000ec0c01006d0000009200000026000000ec0c01006d00000092000000110000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e7273007c0d01006f0000005c010000130000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e7273fc0d0100740000001d010000110000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273800e010070000000a001000047000000800e010070000000b301000020000000800e010070000000b301000011000000800e010070000000b7010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000350f01000b000000400f0100160000004808010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e6720600000700f01000e0000007e0f010004000000820f0100100000004808010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060350f01000b000000b40f010026000000da0f010008000000e20f01000600000048080100010000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e727300001010010076000000080000001800000010100100760000000a0000001c00000010100100760000001a0000003600000010100100760000001e0000000900000000010305050606020706080709110a1c0b190c1a0d100e0d0f0410031212130916011704180119031a071b011c021f1620032b032d0b2e01300331023201a702a902aa04ab08fa02fb05fd02fe03ff09ad78798b8da23057588b8c901cdd0e0f4b4cfbfc2e2f3f5c5d5fe2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d11293a3b4549575b5c5e5f64658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff806d71dedf0e1f6e6f1c1d5f7d7eaeaf7fbbbc16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f747596262e2fa7afb7bfc7cfd7df9a409798308f1fd2d4ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab051f09811b03190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15054e071b0757070206160d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd03590716091809140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a062f314d0380a4083c030f033c0738082b0582ff1118082f112d03210f210f808c048297190b158894052f053b07020e180980be22740c80d61a0c0580ff0580df0cf29d033709815c1480b80880cb050a183b030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a61081f50701202a064c04808d0480be031b030f0d000601010301040205070702080809020a050b020e041001110212051311140115021702190d1c051d0824016a046b02af03bc02cf02d102d40cd509d602d702da01e005e102e704e802ee20f004f802fa02fb010c273b3e4e4f8f9e9e9f7b8b9396a2b2ba86b1060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5fbfeeef5a62f4fcff9a9b2e2f2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fe7ecefffc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b4e43813709160a08183b45390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a161a261c1417094e042409440d19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d133a060a362c041780b93c64530c48090a46451b4808530d498107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48a4c630d842f8fd18247a1b98239072a045c06260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2e781332d03110408818c89046b050d0309071092604709743c80f60a7308701546809a140c570919808781470385420f1584501f80e12b80d52d031a040281401f113a050184e080f7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d80510030d03740c59070c04010f0c0438080a062808224e81540c1503050307091d030b05060a0a060808070980cb250a84062f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273000031160100790000004b0000002800000031160100790000004f0000000900000031160100790000004d00000009000000311601007900000054000000110000003116010079000000560000001100000031160100790000005700000016000000311601007900000058000000090000003116010079000000520000003e0000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e727300002c170100760000008d00000001000000f60801006c000000cd010000050000000003000083042000910560005d13a0001217201f0c20601fef2ca02b2a30202c6fa6e02c02a8602d1efb602e00fe20369eff6036fd01e136010a2137240de137ab0e61392f18a139301ce147f31e214cf06ae14f4f6f21509dbca15000cf615165d1a15100da215200e0e15330e16155aee2a156d0e8e15620006e57f001ff5700700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b033c082a180120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c01090128010301370101030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d021e021e02400201070801020b09012d030101750222017603040209010603db0202013a010107010101010208060a0201301f310430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c6400001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990b31047b01360f290102020a033104020207013d03240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002002e0217000101030405080802071e0494030037043208010e011605010f00070111020701020105000700013d0400076d07006080f00000cc1f010070000000e70000004f0041a0b6040b21617474656d707420746f2073756274726163742077697468206f766572666c6f770041d0b6040baf06617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28292f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e72730000008f1b01006e000000e6050000090000000a000000041f010000000000101c0100010000002f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000241c010055000000580000001c000000241c0100550000005800000009000000241c0100550000005800000031000000241c0100550000006300000009000000241c010055000000810000001a0000002f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000cc1c010052000000530100001400000045636473615265636f766572794661696c65644c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e645f456e646f776d656e74546f6f4c6f775472616e736665724661696c65645f42656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f6465041f0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f7230780000541e0100020000005f000000601e010001000000041f010000000000041f010000000000041f01004188bd040b0920000000080000000200419cbd040b150200000003000000010000002000000008000000020041bcbd040b150200000003000000020000002000000008000000020041dcbd040b150200000003000000030000002000000008000000020041fcbd040b9d0402000000030000005765206465636f646520604e6020656c656d656e74733b20716564007120010062000000cd020000170000003a200000041f010000000000301f010002000000656e636f756e746572656420756e6578706563746564206572726f72441f01001c0000002f55736572732f677265656e2f45787465726e616c2f346972652e6c6162732f696e6b5f6f726967696e616c2f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273681f01005400000014010000170000002f55736572732f677265656e2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e7273cc1f010070000000e00000004c00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f677265656e2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e332e312f7372632f636f6465632e72730071200100620000006d0000000e0000004572726f72000000000000000100000002000000030000000400000005000000060000000700000008000000090000000c0000000b" + }, + "contract": { + "name": "trait_erc20", + "version": "3.0.0-rc7", + "authors": ["Parity Technologies "] + }, + "V3": { + "spec": { + "constructors": [ + { + "args": [ + { + "label": "initial_supply", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "payable": false, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": ["Option"], + "type": 11 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": ["Option"], + "type": 11 + } + }, + { + "docs": [], + "indexed": true, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [" Event emitted when a token transfer occurs."], + "label": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Event emitted when an approval occurs that `spender` is allowed to withdraw", + " up to the amount of `value` tokens from `owner`." + ], + "label": "Approval" + } + ], + "messages": [ + { + "args": [], + "docs": [" Returns the total token supply."], + "label": "BaseErc20::total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 0 + }, + "selector": "0x8244a1ad" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "BaseErc20::balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 0 + }, + "selector": "0x933ae3c8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "BaseErc20::allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 0 + }, + "selector": "0x74a27ac8" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "BaseErc20::transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 8 + }, + "selector": "0xfa9833a3" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "BaseErc20::approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 8 + }, + "selector": "0x922e291f" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "BaseErc20::transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["Result"], + "type": 8 + }, + "selector": "0x839f0263" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 6 + } + }, + "name": "allowances" + } + ] + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "offset_key", + "type": 5, + "typeName": "Key" + } + ] + } + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "Key"] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "offset_key", + "type": 5, + "typeName": "Key" + } + ] + } + }, + "params": [ + { + "name": "K", + "type": 7 + }, + { + "name": "V", + "type": 0 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 7, + "type": { + "def": { + "tuple": [2, 2] + } + } + }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 9, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": ["trait_erc20", "erc20", "Error"] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": ["Option"] + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/ink/v4/erc20.contract.json b/.api-contract/src/test/contracts/ink/v4/erc20.contract.json new file mode 100644 index 00000000..555671be --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v4/erc20.contract.json @@ -0,0 +1,377 @@ +{ + "source": { + "hash": "0x114f55289bcdfd0d28e0bbd1c63452b4e45901a022b1011d298fa2eb12d1711d", + "language": "ink! 4.3.0", + "compiler": "rustc 1.75.0", + "wasm": "0x0061736d0100000001601060037f7f7f017f60027f7f0060027f7f017f60037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060047f7f7e7e0060037e7e7f0060037f7e7e006000017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c301176616c75655f7472616e736665727265640001057365616c3005696e7075740001057365616c300663616c6c65720001057365616c300d64656275675f6d6573736167650002057365616c300f686173685f626c616b65325f3235360003057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100351500007030b0101030c0d0101030305030101070401010001010304070e03010409030201020004030108010a0a0104080f0408030501040801090200000202020204010202070605060105020203050205040501700110100608017f01418080040b0711020463616c6c0037066465706c6f79003a0915010041010b0f54532c2a465748272747274445424a0ad37d502b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2200200120034d044020002001360204200020023602000f0b200120032004100b000b0e0020002001200241cc960410580bbb0102037f017e230041306b2204240020044100360220200442808001370228200441d0a30436022441b7c380e57e200441246a2205100d20002005100e20012005100e20042004290224370218200441106a200441186a2206200428022c100f2004280214210020042802102101200429021821072004410036022c20042007370224200220032005101020042004290224370218200441086a2006200428022c100f200120002004280208200428020c10071a200441306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041021200241106a24000b0a0020012000412010210b4501017f2002200128020422034b0440419ca00441234194a2041017000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101021200341106a24000bb50102047f017e230041306b2203240020034100360220200342808001370228200341d0a30436022441e7b98fb102200341246a2204100d20002004100e20032003290224370218200341106a200341186a2205200328022c100f2003280214210020032802102106200329021821072003410036022c20032007370224200120022004101020032003290224370218200341086a2005200328022c100f200620002003280208200328020c10071a200341306a24000bd10102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c2002200537022420012802002001280204200241246a2203101420012802082003100e20022002290224370218200241106a2004200228022c100f2003200228021020022802141015200241086a200028020020002802042000280208220110162002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22034b044041c08204411c41c886041017000b20002003360208200241d0006a24000b3f01027f2001280204220320012802082202490440200220034184a2041029000b200041003602082000200320026b3602042000200128020020026a3602000b100020012002101c20022000200110210b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1005200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041988204100a2003280208200328020c2001200241a88204101a0b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b2900200220034904402003200241b886041029000b2000200220036b3602042000200120036a3602000b4601017f230041206b220324002003410c6a420037020020034101360204200341f49f043602082003200136021c200320003602182003200341186a36020020032002102b000bd10102037f017e230041d0006b22022400200241186a220420001013200229021821052002410036022c2002200537022420012802002001280204200241246a2203101420012802082003101920022002290224370218200241106a2004200228022c100f2003200228021020022802141015200241086a200028020020002802042000280208220110162002410036024c200220022903083702442003200241c4006a100e20012001200228024c6a22034b044041c08204411c41c886041017000b20002003360208200241d0006a24000b210020002d00004504402001410010300f0b200141011030200041016a2001100e0b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41053602002000410336020c200041a09804360208200041053602242000200041206a360210200020003602282000200041046a360220200041086a2004102b000b6a01037f230041206b22012400200141086a200028020020002802042000280208220210162001410036021c200120012903083702144103200141146a101c20022002200128021c6a22034b044041c08204411c41c886041017000b20002003360208200141206a24000b7401017f230041106b2202240002402000413f4d04402001200041027410300c010b200041ffff004d0440200220004102744101723b010e20012002410e6a410210210c010b200041ffffffff034d044020004102744102722001100d0c010b20014103103020002001100d0b200241106a24000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120101e45044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f200028020422032002492204450440200120022000280200220120024190a304101a2000200320026b3602042000200120026a3602000b20040ba90102017f027e230041406a220224002002411f6a2001101d0240024020022d001f0d002002200110202002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110101e45044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241e4a104101a200020033602080f0b4180a004411c41c4a1041017000b2003200541d4a104100b000bb20101027f230041306b2201240020014180800136020441d0a304200141046a2202100320014180800136022c200141d0a3043602282002200141286a101d20012d00040440200141003a000441a0850441c100200141046a41dc820441e485041023000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541fc9004360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a2004102b000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10012000290308210120002903002102200041206a2400410541042001200284501b0b850302047f027e230041d0006b220324002003410036023020034280800137023c200341d0a30436023841b7c380e57e200341386a2204100d20012004100e20022004100e20032003290238370228200341206a200341286a2003280240100f2003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641908504100a027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a10202003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341a08604360238200341f49f04360240200341386a41a88604102b000b200341003a0037200341c4006a42013702002003410136023c2003419081043602382003410336022c2003200341286a3602402003200341376a360228200341386a41988104102b000b42000b21082000200737030020002008370308200341d0006a24000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241d0a30436023841e7b98fb102200241386a2204100d20012004100e20022002290238370228200241206a200241286a2002280240100f2002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641908504100a027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a10202002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241a08604360238200241f49f04360240200241386a41a88604102b000b200241003a0037200241c4006a42013702002002410136023c2002419081043602382002410336022c2002200241286a3602402002200241376a360228200241386a41988104102b000b42000b21082000200737030020002008370308200241d0006a24000b0300010b1b002000418180014f044020004180800141f48504100b000b20000b0e0020002001200241ac960410580b840101017f230041306b22022400200241146a42013702002002410136020c200241f49e0436020820024102360224200220002d0000410274220041a0a3046a28020036022c2002200041b4a3046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10432100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241989004360210200241f49f0436020c2002410c6a1049000bdd0401047f230041106b220224000240024002400240024002400240024002400240024002400240024020002d000041016b0e0c0102030405060708090a0b0c000b410121002001280214220341ec82044106200141186a280200220528020c22041100000d0c024020012d001c410471450440200341929104410120041100000d0e200341e4890441052004110000450d010c0e0b200341939104410220041100000d0d2002200536020420022003360200200241013a000f20022002410f6a360208200241e489044105102d0d0d2002419091044102102d0d0d0b200341fc8f044101200411000021000c0c0b200128021441f28204410d200141186a28020028020c11000021000c0b0b200128021441ff8204410e200141186a28020028020c11000021000c0a0b2001280214418d8304410b200141186a28020028020c11000021000c090b200128021441988304411a200141186a28020028020c11000021000c080b200128021441b28304410e200141186a28020028020c11000021000c070b200128021441c083044110200141186a28020028020c11000021000c060b200128021441d08304410c200141186a28020028020c11000021000c050b200128021441dc8304410b200141186a28020028020c11000021000c040b200128021441e783044107200141186a28020028020c11000021000c030b200128021441ee8304410f200141186a28020028020c11000021000c020b200128021441fd83044111200141186a28020028020c11000021000c010b2001280214418e84044113200141186a28020028020c11000021000b200241106a240020000bd40701107f230041d0006b22032400200341003b014c200320023602482003410036024420034281808080a00137023c2003200236023820034100360234200320023602302003200136022c2003410a3602282000280204210c2000280200210d2000280208210e200341406b210f027f0340024020032d004d450440200328022c210a02400240024002402003280238220b200328023022104b0d0020032802342202200b4b0d00200328023c2204450d012004200f6a41016b21110340200a200222076a210020112d0000210602400240024002400240027f02400240200b20026b220541084f0440024002402000200041036a417c712202460440200541086b2108410021020c010b200341206a20062000200220006b2202105620032802204101460d012002200541086b22084b0d030b200641818284086c21090340200020026a220141046a2802002009732212417f73201241818284086b7120012802002009732201417f73200141818284086b7172418081828478710d03200241086a220220084d0d000b0c020b200328022421010c020b200341106a20062000200510562003280214210120032802100c020b200220054b0d02200341186a2006200020026a200520026b1056410020032802184101470d011a2002200328021c6a22012002490d030b41010b22004101460440200141016a2202450d0302402007200220076a22024d04402003200236023420022004490d07200220104d0d010c070b41e08f04411c41b89d041017000b200441054f0d04027f200a200220046b6a2106200f210720042105034041002005450d011a200541016b210520072d0000210820062d00002109200641016a2106200741016a210720082009460d000b200920086b0b0d05200341086a20032802442002200a105220032002360244200328020c2100200328020821020c0a0b2003200b3602340c060b41b08f04412141d895041017000b41e08f04411c41e895041017000b41e08f04411c41a89d041017000b2004410441c89d04100b000b2002200b4d0d000b0b200341013a004d20032d004c044020032802482101200328024421040c020b20032802482201200328024422044f04404100210220012004470d020c030b41b08f04412141909b041017000b41b08f04412141989d041017000b200320042001200a105220032802042100200328020021020b20020d010b41000c020b0240200e2d00000440200d418c91044104200c28020c1100000d010b200e2000047f200020026a41016b2d0000410a460541000b22013a0000200d20022000200c28020c110000450d010b0b41010b2100200341d0006a240020000bd70502047f017e230041b0016b22012400200141086a200041e00010091a20014280800137028001200141d0a30436027c02402001290308500440200141fc006a101b200141f0006a220020014184016a2802003602002001200129027c370368200141a0016a2202200141e8006a220341e88604102f2001200141206a36029c012001411536029801200141f4860436029401200220014194016a10182000200141a8016a280200360200200120012902a0013703682001200141c1006a3602a801200141133602a4012001418987043602a0012003200210180c010b200141fc006a101b200141f0006a220020014184016a2802003602002001200129027c370368200141a0016a2202200141e8006a220341ac8704102f2001200141106a36029c012001411636029801200141b8870436029401200220014194016a10122000200141a8016a280200360200200120012902a0013703682001200141306a3602a801200141183602a401200141ce87043602a0012003200210120b20014190016a20002802003602002001200129036837038801230041206b22002400200041186a22024100360200200020014188016a2204290200370310200041086a200041106a200441086a280200100f20002903082105200341086a2002280200360200200320002903103702002003200537020c200041206a2400200141a8016a200141f0006a2802003602002001200129026822053703a001200141f8006a2802002103200128027421022001410036027020012005370268027f2001290308500440200141e8006a220041001030200141206a20001019200141c1006a20001019200141106a0c010b200141e8006a220041011030200141106a2000100e200141306a2000100e200141d0006a0b2200290300200041086a290300200141e8006a1010200120012902683703a0012001200141a0016a2001280270100f20022003200128020020012802041006200141b0016a24000bef0102037f017e230041d0006b22032400200341186a220520011013200329021821062003410036022c2003200637022420022802002002280204200341246a2204101420042002280208410f102120032003290224370218200341106a2005200328022c100f2004200328021020032802141015200341086a200128020020012802042001280208220210162003410036024c200320032903083702442004200341c4006a100e20022002200328024c6a22044b044041c08204411c41c886041017000b200141086a22022004360200200041086a200228020036020020002001290200370200200341d0006a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41053602002000410236020c200041e89004360208200041053602242000200041206a360210200020003602282000200041046a360220200041086a41f4a104102b000b3c01027f230041106b22002400200042808001370208200041d0a304360204200041046a2201410110302001410110304101200028020c10281035000b5101027f230041106b22022400200242808001370208200241d0a304360204200241046a2203410010302003200141ff0171410247047f20034101103020010541000b10302000200228020c10281035000b3e01027f230041106b22022400200242808001370208200241d0a304360204200241046a22034100103020002001200310104100200228020c10281035000bab0102057f017e230041306b2202240020024100360220200242808001370228200241d0a3043602244100200241246a2203100d20022002290224370218200241106a200241186a2204200228022c100f2002280214210520022802102106200229021821072002410036022c20022007370224200020012003101020022002290224370218200241086a2004200228022c100f200620052002280208200228020c10071a200241306a24000b0d00200041d0a30420011008000b2e01017f230041e0006b22012400200141086a200041d80010091a200142003703002001102e200141e0006a24000be71302077f047e23004190056b2200240002400240102441ff017141054604402000418080013602b00441d0a304200041b0046a22021002200041f0006a20002802b00441d0a3044180800141908504100a200020002903703702d001200041003602b004200041d0016a20024104101e0d0120002d00b304210120002d00b204210320002d00b1042102027f02400240024002400240024020002d00b0042204410b6b0e050508080801000b0240200441e8006b0e03040802000b2004418401460d02200441db0147200241ff017141e3004772200341f50047200141a8014772720d0741000c050b200241ff017141f50047200341da004772200141d60047720d06200041b0046a200041d0016a101d20002d00b0040d06200041e8016a200041ba046a290000370300200041f0016a200041c2046a290000370300200041f7016a200041c9046a2900003700002000200041b2046a2900003703e00120002d00b104210241010c040b200241ff0171200341164772200141de0047720d05200041a0026a200041d0016a101d20002d00a0020d05200041f8006a200041d0016a101d20002d00780d05200041e7046a20004191016a290000370000200041df046a20004189016a290000370000200041d7046a20004181016a290000370000200041b8046a200041aa026a290000370300200041c0046a200041b2026a290000370300200041c7046a200041b9026a290000370000200020002900793700cf042000200041a2026a2900003703b00420002d00a1022102200041e0016a200041b0046a413f10091a41020c030b200241ff017141a10147200341dd004772200141a10147720d04200041b0046a200041d0016a101f20002903b0044200520d04200041ae036a200041a6026a200041fe006a200041b8046a4130100941301009413010091a200041e0016a200041a8036a413610091a41030c020b200241ff0171411247200341e6004772200141a00147720d03200041b0046a200041d0016a101f20002903b0044200520d03200041ae036a200041a6026a200041fe006a200041b8046a4130100941301009413010091a200041e0016a200041a8036a413610091a41040c010b200241ff0171413947200341ef0047722001411847720d02200041ee036a200041d0016a101d20002d00ee030d022000418f046a200041d0016a101d20002d008f040d02200041d8006a200041d0016a10202000290358a70d02200041e8006a290300210720002903602108200041c0036a200041ef036a220241186a290000370300200041b8036a200241106a290000370300200041b0036a200241086a290000370300200041d0036a20004198046a290000370300200041d8036a200041a0046a290000370300200041e0036a200041a8046a29000037030020002000290090043703c803200020022900003703a803200041e8026a2201200041a8036a41c00010091a200041a6026a200041fe006a200041b6046a200141c000100941c000100941c00010091a200041e0016a200041a0026a413f10091a2000200041e2026a2800003600db01200020002800df023602d80141050b2101200041f8006a410272200041e0016a413f10091a200041bc016a20002800db01360000200041c8016a2007370300200020002802d8013600b901200020083703c001200020023a0079200020013a0078200041003602a8022000428080013702b404200041d0a3043602b0044100200041b0046a2203100d200020002902b0043702a002200041d0006a200041a0026a20002802b804100f200028025421042000280250210520002802a0022102200020002802a40222063602b004200520042002200310002103200041c8006a20002802b0042002200641908504100a024002400240024020030e0401000002000b200041bc046a4200370200200041013602b404200041a086043602b004200041f49f043602b804200041b0046a41a88604102b000b200028024821022000200028024c3602b404200020023602b004200041306a200041b0046a10202000290330a7450d01200041bc046a4200370200200041013602b404200041ec88043602b0040c040b200041bc046a4200370200200041013602b404200041bc88043602b0040c030b200041f8006a4101722102200041406b29030021072000200029033822083703e001200020073703e80102400240024002400240024002400240200141016b0e050001040502030b230041406a22012400200141286a200241086a290000370200200141306a200241106a290000370200200141386a200241186a2900003702002001200041e0016a36021c20012002290000370220200141086a200141206a1026200129030821072000200141106a29030037030820002007370300200141406b24002000290300200041086a2903001033000b230041e0006b220124002001200041e0016a36021c200141086a200141206a200241c0001009200141406b102520012903082107200041106a2202200141106a29030037030820022007370300200141e0006a24002000290310200041186a2903001033000b200041b8046a20004180016a41d000100921022000200041e0016a3602b004200041f8046a290300210820004180056a2903002107200041a0026a22011022200041206a20022001102541012103410121012000290320220a2008542204200041286a290300220920075420072009511b0d04410221012002200041d8046a20082007103841ff017122054102460d03200541004721010c040b200820071033000b200041b8046a20004180016a4130100921022000200041e0016a3602b004200041e0046a2903002107200041d8046a2903002108200041a0026a2201102220012002200820071038220241ff0171410247220145044020002903e001200041e8016a29030010340b200120021032000b200041b0036a20004180016a4130100921022000200041e0016a3602a803200041d8036a2903002107200041d0036a2903002108200041e8026a220110222001200220082007100c200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041a8026a200041f0026a290000370300200041c8026a20004188016a290300370300200041d0026a20004190016a290300370300200041d8026a20004198016a290300370300200020002900e8023703a00220002000290380013703c002200041b8046a200041a0026a41c00010091a20004180056a2007370300200041f8046a2008370300200042013703b004200041b0046a102e20002903e001200041e8016a2903001034410041021032000b2002200041a0026a200a20087d200920077d2004ad7d100c20002903e001200041e8016a2903001034410021030b200320011032000b200041043a00b004200041b0046a1039000b1031000b200041f49f043602b804200041b0046a41948804102b000bd10202037f037e23004180016b22042400200441186a200010260240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d1011200441086a200110262004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b0d012001200920081011200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1036410221050b20044180016a240020050f0b41c08204411c41f488041017000b4801017f230041206b220124002001410c6a420137020020014101360204200141f49e043602002001410436021c200120003602182001200141186a360208200141948804102b000bf40402087f037e230041c0016b2200240002401024220141ff0171410546044020004180800136025041d0a304200041d0006a22011002200041286a200028025041d0a3044180800141908504100a200020002903283702502000410036023002402001200041306a4104101e0d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200041d0006a10202000290310a7450d020b1031000b200020013a0050200041d0006a1039000b200041206a290300210820002903182109200041306a1022200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041ec8004360250200041003602b0012000428080013702b801200041d0a3043602b40141e7b98fb102200041b4016a2201100d200041d4006a2001100e200020002902b4013702a801200041086a200041a8016a220520002802bc01100f200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011010200020002902b4013702a8012000200520002802bc01100f200720062000280200200028020410071a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a1036200920081034230041106b22002400200042808001370208200041d0a304360204200041046a2201410010302001410010304100200028020c10281035000b7701027f230041106b2204240020022000280204200028020822036b4b0440200441086a200020032002103c2004280208200428020c103d200028020821030b200028020020036a2001200210091a2003200220036a22014b044041908904411c419c8f041017000b20002001360208200441106a24000bc00301057f230041206b220424000240027f4100200220036a22032002490d001a200128020422024100480d01410820024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104020022802082105200228020c0c020b200528020021080240200310412205450440410021050c010b20052008200710091a0b20030c010b2002200310402002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000f0b41b08904412141f88a041017000b1f00024020004181808080784704402000450d012001103e000b0f0b103f000b860101017f230041306b220124002001200036020c2001411c6a420137020020014102360214200141c88c043602102001410536022c2001200141286a36021820012001410c6a360228230041206b22002400200041003b011c200041d88c043602182000200141106a360214200041989004360210200041f49f0436020c2000410c6a1049000b3c01017f230041206b22002400200041146a42003702002000410136020c2000419c8b04360208200041f49f04360210200041086a41a48b04102b000b2001017f41d2a3052d00001a20011041210220002001360204200020023602000b800101027f0240027f410041c8a304280200220120006a22022001490d001a41cca3042802002002490440200041ffff036a22024110764000220141ffff034b0d022001411074220120024180807c716a22022001490d0241cca30420023602004100200020016a22022001490d011a0b41c8a304200236020020010b0f0b41000b0c00200041ec8904200110430bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110200450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10552003200329031037021c200341086a20062001105520032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110200450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002103b41000bd10201037f230041106b220224000240024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101103c2004280208200428020c103d200441106a2400200028020821030b200028020020036a20013a0000200341016a2201450d04200020013602080c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b103b0b200241106a240041000f0b41908904411c418c8f041017000bd606020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e034020004104490d09200341196a20006a220241046b200e4290ce0080220d42f0b1037e200e7ca7220441ffff037141e4006e2206410174418592046a2f00003b0000200241026b2006419c7f6c20046a41ffff0371410174418592046a2f00003b0000200041046b2100200e42ffc1d72f562102200d210e20020d000b200da7220241e3004d0d02200041024f0d010c080b41272100200241e3004d0d020b200041026b2200200341196a6a200da7220441ffff037141e4006e2202419c7f6c20046a41ffff0371410174418592046a2f00003b00000b2002410a4f044020004102490d060c040b20000d010c050b2002410a4f0d020b200041016b2200200341196a6a200241306a3a00000c020b000b200041026b2200200341196a6a2002410174418592046a2f00003b00000b02400240200041274d0440412820006b412720006b2206200128021c220541017122071b2102410021042005410471044041f49f042104200241f49f0441f49f04104b20026a22024b0d020b412b418080c40020071b2107200341196a20006a2108200128020045044041012100200128021422022001280218220120072004104e0d03200220082006200128020c11000021000c030b2002200128020422094f044041012100200128021422022001280218220120072004104e0d03200220082006200128020c11000021000c030b200541087104402001280210210b2001413036021020012d0020210c41012100200141013a0020200128021422052001280218220a20072004104e0d03200341106a2001200920026b4101104f20032802102202418080c400460d0320032802142104200520082006200a28020c1100000d03200220042005200a10500d032001200c3a00202001200b360210410021000c030b41012100200341086a2001200920026b4101104f20032802082205418080c400460d02200328020c2109200128021422022001280218220120072004104e0d02200220082006200128020c1100000d022005200920022001105021000c020b0c020b41e08f04411c41c094041017000b200341406b240020000f0b41b08f04412141e49e041017000b1b00200128021441e489044105200141186a28020028020c1100000b0e0020002802001a03400c000b000bc20201047f230041406a220124002001200036020c2001411c6a420137020020014102360214200141c0a0043602102001410636022c2001200141286a36021820012001410c6a360228410021000240024002400240034020002000200241037441c4a0046a2802006a22004b0d014101210220032104410121032004450d000b20004101744100200041104e1b2200044020004100480d0220012000104020012802002202450d030b200141003602382001200036023420012002360230200141306a200141106a10420d032001280230210020012802382103024041d0a3052d000045044041d1a3052d00004101710d010b200020031004410947044041d0a30541013a00000b41d1a30541013a00000b000b41908904411c41d49e041017000b103f000b2000103e000b41e88c0441332001413f6a41d4890441888e041023000b2000200042b1a1a2be8cd0b08931370308200042b2c98bdc9db884a6203703000b8e04010a7f230041106b220224000240200120006b220141104f04402000200041036a417c71220620006b2200104c22042006200120006b2200417c716a2000410371104c6a220320044f0440200041027621050240024003402005450d0520022006200541c0012005200541c0014f1b41d09704104d200228020c21052002280208210620022002280200200228020422002000417c7141bc9904104d200228020c210820022802082107024020022802042200450440410021000c010b2002280200220420004102746a21094100210003402004220a41106a21044100210102400340200020002001200a6a280200220b417f73410776200b410676724181828408716a22004d0440200141046a22014110470d010c020b0b41e08f04411c41fc99041017000b20042009470d000b0b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034b0d012008450d000b200841027421014100210003402000200020072802002204417f734107762004410676724181828408716a22004b0d02200741046a2107200141046b22010d000b20032003200041087641ff81fc0771200041ff81fc07716a418180046c4110766a22034d0d0441e08f04411c41dc99041017000b41e08f04411c41cc99041017000b41e08f04411c41ec99041017000b41e08f04411c41ac99041017000b20002001104c21030b200241106a240020030b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41e08f04411c41d49e041017000b3d0020022003490440419ca004412320041017000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101102000d011a0b20030d0141000b0f0b200020034100200128020c1100000bb20101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b200241016a2203044020024101762104200341017621020c010b41e08f04411c41d094041017000b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110200450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110200450d000b200441016b0b2001490b900201067f02402000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722107200341f00149044020072006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200741067472722203418080c400460d011a0b20012802082204200520026b6a22022004490d012001200236020820030b360204200020043602000f0b41e08f04411c41809b041017000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41b08f04412141949c041017000bca0301067f230041306b22022400200028020421042000280200210302400240027f024020012802002205200128020822007204402000450d032001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1051200228021c418080c400470d010c050b0b200241106a200241246a10512002280214418080c400460d03024020022802102200450d00200020044f044020002004460d010c030b200020036a2c00004140480d020b200241086a4100200020031052200228020c210620022802080c020b200128021420032004200141186a28020028020c11000021000c030b41000b21002006200420001b21042000200320001b21030b2005450440200128021420032004200141186a28020028020c11000021000c010b200128020422002003200320046a104b22054b044020022001200020056b4100104f4101210020022802002205418080c400460d01200228020421062001280214220720032004200141186a280200220128020c1100000d012005200620072001105021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1102000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044107470d0120012802000b2802002104410121030b20002004360204200020033602000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000beb0201057f230041406a22022400200028020021054101210002402001280214220441a89004410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4105360200200241346a41053602002002410336021420024180900436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a36021820042006200241106a10430d00200528020822030440200441b49004410220011100000d01200241386a200341106a290200370300200241306a200341086a2902003703002002200329020037032820042006200241286a104321000c010b200220052802002203200528020428020c11010041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441b49004410220011100000d00200420032802002003280204200111000021000b200241406b240020000b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41053602002004410236020c20042003360208200441053602242004200441206a3602102004200441046a36022820042004360220200441086a2002102b000b0bbb230500418080040bb5022f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f73746f726167652d342e332e302f7372632f6c617a792f6d617070696e672e727300e7dc23264661696c656420746f206765742076616c756520696e204d617070696e673a207000010020000000000001006b0000009c000000250000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d342e332e302f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273a8000100700000009d00000020000000a8000100700000009d000000300041c082040bc106617474656d707420746f206164642077697468206f766572666c6f77080000000100000001000000030000004465636f646543616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c65556e6b6e6f776e4c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c65642f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d342e332e302f7372632f656e67696e652f6f6e5f636861696e2f6578742e727300210201006e000000e40000001700000054686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e000000a8000100700000006b0100000e000000a8000100700000002401000032000000656e636f756e746572656420756e6578706563746564206572726f72040301001c000000a800010070000000ed000000170000005010010071000000c10000003d0000005010010071000000c40000000900000045726332303a3a5472616e7366657200f40f0100000000005803010045726332303a3a5472616e736665723a3a66726f6d45726332303a3a5472616e736665723a3a746f45726332303a3a417070726f76616c00f40f0100000000009c03010045726332303a3a417070726f76616c3a3a6f776e657245726332303a3a417070726f76616c3a3a7370656e6465722f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e7273e60301002e000000070000000500000073746f7261676520656e7472792077617320656d707479002404010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279004404010027000000e60301002e000000cf0000002700419089040bc106617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000a0000004572726f720000000b0000000c000000040000000c0000000d0000000e0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730000000405010071000000980100001c0000006361706163697479206f766572666c6f770000008805010011000000040501007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c65640000002306010015000000380601000d000000b40501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72739b0601006d00000064020000200000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000001807010071000000610700000d0000001807010071000000d00700000900000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f770041e08f040b9410617474656d707420746f206164642077697468206f766572666c6f77293a0000f40f010000000000fd07010001000000fd070100010000000900000000000000010000000f00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320360801002000000056080100120000003a200000f40f0100000000007808010002000000202020202c0a28280a2f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000cd09010070000000050500000d000000cd0901007000000097050000300000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e7273000000600a010075000000760000004b000000600a010075000000770000003400000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820f80a0100120000000a0b01002200000072616e676520656e6420696e646578203c0b0100100000000a0b0100220000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273005c0b010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028e00b010015000000f50b01002b000000fc070100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000380c0100720000004700000015000000380c0100720000004f00000032000000380c0100720000005a00000009000000380c010072000000660000000d000000380c0100720000006400000011000000380c01007200000054000000110000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e72730000000c0d01007100000091000000110000000c0d0100710000004f0200002d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e727300a00d010073000000d3000000130000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e7273240e010074000000a101000047000000240e010074000000b401000020000000240e010074000000b401000011000000240e010074000000b8010000370000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e72730000d80e01007a00000095000000010000009508010070000000d201000005000000f40f010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d657373616765004180a0040bc703617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290af40f0100000000003f100100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f696e6b5f656e762d342e332e302f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300000050100100710000005a0000001c00000050100100710000005a0000001400000050100100710000005a00000031000000501001007100000065000000090000005010010071000000830000002500000050100100710000008d000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300241101006b000000770000000e000000190000001c0000001600000014000000190000007c0f0100950f0100b10f0100c70f0100db0f01", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.2.0", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } + } + }, + "contract": { + "name": "erc20", + "version": "4.3.0", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [{ "label": "total_supply", "type": { "displayName": ["Balance"], "type": 0 } }], + "default": false, + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "payable": false, + "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 1 }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { "displayName": ["AccountId"], "type": 5 }, + "balance": { "displayName": ["Balance"], "type": 0 }, + "blockNumber": { "displayName": ["BlockNumber"], "type": 14 }, + "chainExtension": { "displayName": ["ChainExtension"], "type": 15 }, + "hash": { "displayName": ["Hash"], "type": 12 }, + "maxEventTopics": 4, + "timestamp": { "displayName": ["Timestamp"], "type": 13 } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { "displayName": ["Option"], "type": 11 } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { "displayName": ["Option"], "type": 11 } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { "displayName": ["Balance"], "type": 0 } + } + ], + "docs": ["Event emitted when a token transfer occurs."], + "label": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { "displayName": ["AccountId"], "type": 5 } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { "displayName": ["AccountId"], "type": 5 } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { "displayName": ["Balance"], "type": 0 } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval" + } + ], + "lang_error": { "displayName": ["ink", "LangError"], "type": 3 }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Returns the total token supply."], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 4 }, + "selector": "0xdb6375a8" + }, + { + "args": [{ "label": "owner", "type": { "displayName": ["AccountId"], "type": 5 } }], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 4 }, + "selector": "0x0f755a56" + }, + { + "args": [ + { "label": "owner", "type": { "displayName": ["AccountId"], "type": 5 } }, + { "label": "spender", "type": { "displayName": ["AccountId"], "type": 5 } } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 4 }, + "selector": "0x6a00165e" + }, + { + "args": [ + { "label": "to", "type": { "displayName": ["AccountId"], "type": 5 } }, + { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, + "selector": "0x84a15da1" + }, + { + "args": [ + { "label": "spender", "type": { "displayName": ["AccountId"], "type": 5 } }, + { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, + "selector": "0x681266a0" + }, + { + "args": [ + { "label": "from", "type": { "displayName": ["AccountId"], "type": 5 } }, + { "label": "to", "type": { "displayName": ["AccountId"], "type": 5 } }, + { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 8 }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "total_supply" }, + { + "layout": { + "root": { + "layout": { "leaf": { "key": "0x2623dce7", "ty": 0 } }, + "root_key": "0x2623dce7" + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { "leaf": { "key": "0xeca021b7", "ty": 0 } }, + "root_key": "0xeca021b7" + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { "id": 0, "type": { "def": { "primitive": "u128" } } }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 2 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 3 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 2 }, + { "name": "E", "type": 3 } + ], + "path": ["Result"] + } + }, + { "id": 2, "type": { "def": { "tuple": [] } } }, + { + "id": 3, + "type": { + "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 3 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 0 }, + { "name": "E", "type": 3 } + ], + "path": ["Result"] + } + }, + { + "id": 5, + "type": { + "def": { "composite": { "fields": [{ "type": 6, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { "id": 6, "type": { "def": { "array": { "len": 32, "type": 7 } } } }, + { "id": 7, "type": { "def": { "primitive": "u8" } } }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 9 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 3 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 9 }, + { "name": "E", "type": 3 } + ], + "path": ["Result"] + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 2 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 10 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 2 }, + { "name": "E", "type": 10 } + ], + "path": ["Result"] + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { "index": 0, "name": "InsufficientBalance" }, + { "index": 1, "name": "InsufficientAllowance" } + ] + } + }, + "path": ["erc20", "erc20", "Error"] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { "index": 0, "name": "None" }, + { "fields": [{ "type": 5 }], "index": 1, "name": "Some" } + ] + } + }, + "params": [{ "name": "T", "type": 5 }], + "path": ["Option"] + } + }, + { + "id": 12, + "type": { + "def": { "composite": { "fields": [{ "type": 6, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { "id": 13, "type": { "def": { "primitive": "u64" } } }, + { "id": 14, "type": { "def": { "primitive": "u32" } } }, + { + "id": 15, + "type": { "def": { "variant": {} }, "path": ["ink_env", "types", "NoChainExtension"] } + } + ], + "version": "4" +} diff --git a/.api-contract/src/test/contracts/ink/v4/erc20.json b/.api-contract/src/test/contracts/ink/v4/erc20.json new file mode 100644 index 00000000..f354e533 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v4/erc20.json @@ -0,0 +1,714 @@ +{ + "source": { + "hash": "0x114f55289bcdfd0d28e0bbd1c63452b4e45901a022b1011d298fa2eb12d1711d", + "language": "ink! 4.3.0", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "3.2.0", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "4.3.0", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 1 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": ["AccountId"], + "type": 5 + }, + "balance": { + "displayName": ["Balance"], + "type": 0 + }, + "blockNumber": { + "displayName": ["BlockNumber"], + "type": 14 + }, + "chainExtension": { + "displayName": ["ChainExtension"], + "type": 15 + }, + "hash": { + "displayName": ["Hash"], + "type": 12 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": ["Timestamp"], + "type": 13 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": ["Option"], + "type": 11 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": ["Option"], + "type": 11 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": ["Event emitted when a token transfer occurs."], + "label": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval" + } + ], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 3 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Returns the total token supply."], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 4 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 4 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 4 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 8 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 8 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 8 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x2623dce7", + "ty": 0 + } + }, + "root_key": "0x2623dce7" + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xeca021b7", + "ty": 0 + } + }, + "root_key": "0xeca021b7" + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 3 + } + ], + "path": ["Result"] + } + }, + { + "id": 2, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 3 + } + ], + "path": ["Result"] + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 8, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 9 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 9 + }, + { + "name": "E", + "type": 3 + } + ], + "path": ["Result"] + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": ["erc20", "erc20", "Error"] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 5 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 5 + } + ], + "path": ["Option"] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { + "id": 13, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 14, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 15, + "type": { + "def": { + "variant": {} + }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": "4" +} diff --git a/.api-contract/src/test/contracts/ink/v4/erc20.wasm b/.api-contract/src/test/contracts/ink/v4/erc20.wasm new file mode 100644 index 00000000..799afda9 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v4/erc20.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v4/flipper.contract.json b/.api-contract/src/test/contracts/ink/v4/flipper.contract.json new file mode 100644 index 00000000..49045d25 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v4/flipper.contract.json @@ -0,0 +1,157 @@ +{ + "source": { + "hash": "0xa5b19cb655755feba8e34ab5b413ac6593ecc7e24e19af485a4d30036be9d577", + "language": "ink! 4.2.0", + "compiler": "rustc 1.69.0", + "wasm": "0x0061736d0100000001450c60027f7f017f60037f7f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f017f60000060047f7f7f7f0060017f017f60017f017e60057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650005057365616c301176616c75655f7472616e736665727265640002057365616c3005696e7075740002057365616c300d64656275675f6d6573736167650000057365616c320b7365745f73746f726167650005057365616c300b7365616c5f72657475726e000303656e76066d656d6f7279020102100337360102030b0803040002080102020604030202060600010103000300070204060202000400040900000a0507050000030a01000000000704050170010f0f0608017f01418080040b0711020463616c6c0018066465706c6f7900190914010041010b0e0d32273a29333839281c1e20372b0ac744362b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b2601017f230041106b22022400200220003a000f20012002410f6a41011008200241106a24000b5c01037f02402000280208220420026a220320044f04402003200028020422054b0d01200028020020046a200320046b2001200241cc97041035200020033602080f0b41909604411c41ac9704101f000b2003200541bc9704100b000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a10012001290300210220002903082103200041206a2400410541042002200384501b0b1b002000418180014f044020004180800141a88104100b000b20000b7501017f230041306b220324002003200136020420032000360200200341146a41023602002003411c6a41023602002003412c6a4103360200200341988f0436021020034100360208200341033602242003200341206a3602182003200341046a36022820032003360220200341086a2002100e000b5201017f230041206b220124002001410c6a4101360200200141146a41013602002001418c9504360208200141003602002001410136021c200120003602182001200141186a360210200141b08204100e000b910101017f230041306b22022400200241146a41013602002002411c6a41013602002002418c95043602102002410036020820024102360224200220002d0000410274220041ac9a046a28020036022c2002200041c09a046a280200360228200141046a28020021002002200241206a3602182002200241286a36022020012802002000200241086a1036200241306a24000b3c01017f230041206b22022400200241013a00182002200136021420022000360210200241d08a0436020c2002418c9604360208200241086a102a000b4001017f230041106b22012400200141003a000f20002001410f6a41011010047f4102054101410220012d000f22004101461b410020001b0b200141106a24000b6001047f230041106b22032400200028020422042002492205450440200341086a4100200220002802002206103b200120022003280208200328020c419c9a0410352003200220042006103b200020032903003702000b200341106a240020050b4701017f230041106b220224002002410036020c024020012002410c6a410410104504402000200228020c360001200041003a00000c010b200041013a00000b200241106a24000b3f01017f230041106b22022400200242808001370204200241dc9a0436020020022001047f20024101101741010541000b101720002002280208100a1016000b3701017f230041106b22002400200042808001370204200041dc9a0436020020004100101720004100101741002000280208100a1016000bae0102057f017e230041306b2201240020014100360218200142808001370224200141dc9a043602202001410036021c200141206a22022001411c6a4104100820012001290320370310200141086a200141106a220320012802281015200128020c2104200128020820012903102106200141003602282001200637032020002002100720012001290320370310200120032001280228101520042001280200200128020410041a200141306a24000b4501017f2002200128020422034b044041ac9604412341ec9704101f000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d00200041dc9a0420011005000ba10101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a41023602002000411c6a41023602002000412c6a4103360200200041a48a0436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41dc9704100e000bab0501077f230041406a22002400024002400240024002400240100941ff0171410546044020004180800136022041dc9a04200041206a100220002802202201418180014f0d0120002001360224200041dc9a04360220200041106a200041206a101120002d00100d0520002800112201411876210220014110762104200141087621030240200141ff01712201412f470440200141e30047200341ff0171413a4772200441ff017141a50147720d0741012101200241d100460d010c070b200341ff017141860147200441ff017141db0047720d0641002101200241d901470d060b20004100360218200042808001370224200041dc9a043602202000410036023c200041206a22032000413c6a4104100820002000290320370310200041086a200041106a20002802281015200028020c210520002802082000280210210220002000280214220436022020052002200310002103200420002802202205490d02024002400240410c20032003410c4f1b0e0402000001000b2000412c6a4101360200200041346a4100360200200041d481043602282000418c960436023020004100360220200041206a41dc8104100e000b2000412c6a4101360200200041346a41003602002000418883043602280c070b2000200536022420002002360220200041206a100f41ff017122024102460d042001450d032002451014410041001012000b200041043a0020200041206a100c000b20014180800141cc8004100b000b2005200441cc8004100b000b230041106b22002400200042808001370204200041dc9a0436020020004100101720024100472000100741002000280208100a1016000b2000412c6a4101360200200041346a4100360200200041e882043602280c010b410141011012000b2000418c960436023020004100360220200041206a41b08204100e000b8c0201057f230041106b2200240002400240100941ff01712201410546044020004180800136020041dc9a042000100220002802002201418180014f0d0120002001360204200041dc9a04360200200041086a20001011024020002d00080d002000280009220141187621022001411076210320014108762104200141ff0171220141e1004704402001419b0147200441ff017141ae014772200341ff0171419d0147200241de004772720d012000100f41ff017122004102460d01200010141013000b200441ff017141ef0147200341ff017141fe0047720d002002413e460d030b410141011012000b200020013a00002000100c000b20014180800141cc8004100b000b410010141013000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a41908304200241086a101b200241206a24000bee0301057f230041406a22032400200341033a003820034280808080800437033020034100360228200341003602202003200136021c20032000360218027f0240024020022802002201450440200241146a28020022004103742105200041ffffffff017121072002280210210441002101034020012005460d02200228020820016a220041046a28020022060440200328021820002802002006200328021c28020c1101000d040b200141086a2101200428020020042802042106200441086a2104200341186a2006110000450d000b0c020b200228020422074105742100200741ffffff3f71210703402000450d01200228020820046a220541046a28020022060440200328021820052802002006200328021c28020c1101000d030b20032001411c6a2d00003a00382003200141146a290200370330200341106a200228021022052001410c6a103420032003290310370320200341086a2005200141046a103420032003290308370328200441086a2104200041206b210020012802002106200141206a2101200520064103746a2205280200200341186a2005280204110000450d000b0c010b2002410c6a28020020074b04402003280218200228020820074103746a22002802002000280204200328021c28020c1101000d010b41000c010b41010b200341406b24000b0f00200028020020012002101d41000b7701027f230041106b2204240020022000280200200028020822036b4b0440200441086a20002003200210212004280208200428020c1022200028020821030b200028020420036a2001200210061a2003200220036a22014b044041b08304411c41a08904101f000b20002001360208200441106a24000bdd0201037f230041106b220224000240024002400240200028020022002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280200460d030c040b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b101d0c020b230041106b22042400200441086a20002003410110212004280208200428020c1022200441106a2400200028020821030b200028020420036a20013a0000200341016a2201450d01200020013602080b200241106a240041000f0b41b08304411c41908904101f000b5001017f230041206b220324002003410c6a4101360200200341146a41003602002003418c9604360210200341003602002003200136021c200320003602182003200341186a36020820032002100e000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a101a200241206a24000bac0401067f230041206b2204240002402000027f4100200220036a22032002490d001a2001280200220220026a22062002490d0141082006200320032006491b2203200341084d1b2203417f73411f7621050240200204402004410136021820042002360214200420012802043602100c010b200441003602180b200441106a2107230041106b220624002004027f0240027f0240200504400240200341004e044020072802080d012006200310252006280204210220062802000c040b0c040b20072802042209450440200641086a20031025200628020c210220062802080c030b20032102410041d49a04280200220520036a22082005490d021a2007280200210741d89a042802002008490440200341ffff036a220841107640002202417f46200241ffff0371200247720d022002411074220520084180807c716a22022005490d0241d89a042002360200200321024100200320056a22082005490d031a0b41d49a04200836020041002005450d021a20052007200910060c020b200420033602040c020b2003210241000b2205044020042005360204200441086a200236020041000c020b20042003360204200441086a410136020041010c010b200441086a410036020041010b360200200641106a240020042802004504402004280204210220012003360200200120023602044181808080780c010b20042802042103200441086a2802000b36020420002003360200200441206a24000f0b41d08304412141f88404101f000b1f00024020014181808080784704402001450d0120001023000b0f0b1024000b900101017f230041306b220124002001200036020c2001411c6a4102360200200141246a4101360200200141c88604360218200141003602102001410336022c2001200141286a36022020012001410c6a360228230041206b22002400200041003a0018200041d886043602142000200141106a360210200041d08a0436020c2000418c9604360208200041086a102a000b4601017f230041206b22002400200041146a41013602002000411c6a41003602002000419c85043602102000418c960436021820004100360208200041086a41a48504100e000ba10101027f027f410041d49a04280200220220016a22032002490d001a024041d89a042802002003490440200141ffff036a22032001490d01200341107640002202417f46200241ffff0371200247720d012002411074220220034180807c716a22032002490d0141d89a0420033602004100200120026a22032002490d021a0b41d49a04200336020020020c010b41000b210320002001360204200020033602000b5301027f230041106b2202240002402001450440410121030c010b200141004e0440200241086a20011025200228020822030d0120011023000b1024000b2000200336020420002001360200200241106a24000bd806020b7f027e230041406a2203240020002802002202ad210d0240024002400240024002400240024020024190ce004f044041272100200d210e0240034020004104490d01200341196a20006a220241046b200e200e4290ce0080220d4290ce007e7da7220441ffff037141e4006e220641017441878c046a2f00003b0000200241026b2004200641e4006c6b41ffff037141017441878c046a2f00003b0000200041046b2100200e42ffc1d72f56200d210e0d000b200da7220241e3004d0d0320004102490d090c020b0c080b41272100200241e3004b0d002002410a490d040c020b200041026b2200200341196a6a200da72202200241ffff037141e4006e220241e4006c6b41ffff037141017441878c046a2f00003b00000b2002410a490d01200041024f0d000c050b200041026b2200200341196a6a200241017441878c046a2f00003b00000c020b2000450d030b200041016b2200200341196a6a200241306a3a00000b200041274b0d01412820006b412720006b22062001280218220541017122071b21024100210420054104710440418c960421042002418c9604418c9604102c20026a22024b0d010b412b418080c40020071b2107200341196a20006a2108024020012802084504404101210020012802002202200141046a280200220120072004102f0d01200220082006200128020c11010021000c010b024020022001410c6a28020022094904402005410871450d01200128021c210b2001413036021c20012d0020210c41012100200141013a002020012802002205200141046a280200220a20072004102f0d02200341106a2001200920026b4101103020032802142202418080c400460d022003280210200520082006200a28020c1101000d0220022005200a10310d022001200c3a00202001200b36021c410021000c020b4101210020012802002202200141046a280200220120072004102f0d01200220082006200128020c11010021000c010b41012100200341086a2001200920026b41011030200328020c2205418080c400460d00200328020820012802002202200141046a280200220120072004102f0d00200220082006200128020c1101000d00200520022001103121000b200341406b240020000f0b41b08904411c41c48e04101f000b41d08904412141f49404101f000b0300010b0e0020002802001a03400c000b000baa05020a7f017e230041406a220124002001200036020c2001412c6a4102360200200141346a4101360200200141d09604360228200141003602202001410436023c2001200141386a36023020012001410c6a360238200141106a210641002100230041306b22022400200141206a220441146a2802002107200428020821050240024002400240200241086a027f024002400240200241106a027f024002402004410c6a28020022080e020001040b20070d02418c9604210341000c010b20070d022005280200210320052802040b22001026200228021021042006200228021422053602042006200436020020052003200010061a200620003602080c040b200428021021090c010b200541046a21032008410374210a2004280210210903402000200020032802006a22004b0d04200341086a2103200a41086b220a0d000b20002007450d011a2000410f4b0d0041002005280204450d011a0b200020006a22034100200020034d1b0b10262002290308210b200641003602082006200b3702002002200736022c200220093602282002200836022420022005360220200220042902003703182006200241186a101a0d020b200241306a24000c020b41b08304411c41e49404101f000b230041406a220024002000413336020c200041e88604360208200041f483043602142000200241186a360210200041246a41023602002000412c6a41023602002000413c6a4106360200200041848b0436022020004100360218200041023602342000200041306a3602282000200041106a3602382000200041086a360230200041186a418c8804100e000b2001280214210020012802182101024041dc9a052d000045044041dd9a052d00004101710d010b410c20002001100322002000410c4f1b410947044041dc9a0541013a00000b41dd9a0541013a00000b000b0c0042f8f3eee1d7afe2bb350ba704010a7f230041106b2203240002400240200020016b22024110490d002002200141036a417c7120016b220049200041044b720d00200220006b22044104490d0020012000102d2206200020016a22082004417c716a2004410371102d6a220220064f0440200441027621050240024003402005450d0520032008200541c0012005200541c0014f1b41a09004102e200328020c21052003280208210820032003280200200328020422002000417c7141909204102e200328020c210920032802082107024020032802042200450440410021010c010b2003280200220420004102746a210a4100210103402004220641106a2104410021000240034020012001200020066a280200220b417f73410776200b410676724181828408716a22014d0440200041046a22004110470d010c020b0b41b08904411c41a09204101f000b2004200a470d000b0b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024b0d012009450d000b200941027421004100210103402001200120072802002204417f734107762004410676724181828408716a22014b0d02200741046a2107200041046b22000d000b20022002200141087641ff81fc0771200141ff81fc07716a418180046c4110766a22024d0d0441b08904411c41d09204101f000b41b08904411c41b09204101f000b41b08904411c41c09204101f000b41b08904411c41809204101f000b20012002102d21020b200341106a240020020b4601017f200145044041000f0b024003402002200220002c000041bf7f4a6a22024b0d01200041016a2100200141016b22010d000b20020f0b41b08904411c41e49404101f000b3e00200220034f044020002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080f0b41ac960441232004101f000b39000240027f2002418080c40047044041012000200220012802101100000d011a0b20030d0141000b0f0b200020034100200128020c1101000bae0101027f20022104024002400240200320012d0020220320034103461b41ff0171220341016b0e03010001020b200241016a2203044020034101762104200241017621030c020b41b08904411c41d48e04101f000b41002104200221030b200341016a2102200128021c2103200128020421052001280200210102400340200241016b2202450d01200120032005280210110000450d000b418080c40021030b20002003360204200020043602000b3201017f027f0340200020002004460d011a200441016a2104200220012003280210110000450d000b200441016b0b2000490bea04010b7f230041106b2209240020002802042104200028020021030240024002402001280208220b410147200128021022024101477145044020024101470d02200320046a210c200141146a28020041016a210a410021022003210003402000200c460d03027f024020002c0000220641004e0440200041016a2105200641ff017121070c010b20002d0001413f7121052006411f7121072006415f4d044020074106742005722107200041026a21050c010b20002d0002413f7120054106747221082006417049044020082007410c74722107200041036a21050c010b200041046a210520022106418080c4002007411274418080f0007120002d0003413f71200841067472722207418080c400460d011a0b2002200520006b6a22062002490d0320070b2108200a41016b220a044020052100200621022008418080c400470d010c040b0b2008418080c400460d02024002402002450d00200220044f04404100210020022004460d010c020b41002100200220036a2c00004140480d010b200321000b2002200420001b21042000200320001b21030c020b200128020020032004200128020428020c11010021000c020b41b08904411c41d49304101f000b200b450440200128020020032004200128020428020c11010021000c010b2001410c6a2802002200200320046a2003102c22024b0440200941086a2001200020026b4100103041012100200928020c2202418080c400460d0120092802082001280200220520032004200141046a280200220128020c1101000d01200220052001103121000c010b200128020020032004200128020428020c11010021000b200941106a240020000b140020002802002001200028020428020c1100000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b8501002001200346044020002002200110061a0f0b230041306b220024002000200336020420002001360200200041146a41033602002000411c6a41023602002000412c6a4103360200200041f0900436021020004100360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a2004100e000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a101b200341206a24000b18002001280200418495044105200128020428020c1101000b5801027f230041206b22022400200128020421032001280200200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a101b200241206a24000b0b002000280200200110320b990301037f230041406a22022400200028020021034101210002402001280200220441e08a04410c200141046a280200220128020c1101000d0002402003280208220004402002200036020c200241346a4102360200410121002002413c6a4101360200200241f08a0436023020024100360228200241073602142002200241106a36023820022002410c6a36021020042001200241286a1036450d010c020b20032802002200200328020428020c11090042c8b5e0cfca86dbd3897f520d002002200036020c200241346a4102360200410121002002413c6a4101360200200241f08a0436023020024100360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a10360d010b200328020c21002002411c6a4103360200200241246a41033602002002413c6a4103360200200241346a4103360200200241b88a043602182002410036021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103621000b200241406b240020000b2c00200120024d04402000200220016b3602042000200120036a3602000f0b41909904412141f49804101f000b0bd21a0300418080040ba5032f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000000000010049000000e4000000140000002f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273005c0001004b0000002401000023000000656e636f756e746572656420756e6578706563746564206572726f72b80001001c0000005c0001004b000000ed000000170000002f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f696e746567726174696f6e2d74657374732f666c69707065722f6c69622e7273ec000100440000000600000005000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e74727900400101002700000073746f7261676520656e7472792077617320656d7074790070010100170000000900000004000000040000000a0000000b0000000c0041b083040bd115617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770000000900000000000000010000000d0000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e727304020100740000008f0100001c0000006361706163697479206f766572666c6f77000000880201001100000004020100740000000d020000050000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c656426030100150000003b0301000d000000b4020100720000009f0100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273009b0301007000000064020000200000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72731c04010074000000350700000d0000001c04010074000000a307000009000000617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f2073756274726163742077697468206f766572666c6f7729696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320f20401002000000012050100120000003a0000000c0b010000000000340501000100000034050100010000000900000000000000010000000e00000070616e69636b65642061742027272c206c050100010000006d050100030000003a2000000c0b01000000000080050100020000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e727330303031303230333034303530363037303830393130313131323133313431353136313731383139323032313232323332343235323632373238323933303331333233333334333533363337333833393430343134323433343434353436343734383439353035313532353335343535353635373538353936303631363236333634363536363637363836393730373137323733373437353736373737383739383038313832383338343835383638373838383939303931393239333934393539363937393839392f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e72730000cf06010073000000750500000d000000cf060100730000000506000038000000206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e646578200000860701001000000064070100220000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e72730000a807010076000000c005000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820283008010015000000450801002b000000f1040100010000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000008808010075000000470000001500000088080100750000004f000000320000008808010075000000540000001100000088080100750000005a00000009000000880801007500000064000000110000008808010075000000660000000d0000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e7273600901007400000091000000110000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e7273000000e40901007d00000095000000010000009405010073000000cd010000050000004572726f720000000c0b0100000000007061696420616e20756e70617961626c65206d657373616765636f756c64206e6f74207265616420696e707574756e61626c6520746f206465636f646520696e707574656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f64652073656c6563746f7200000000617474656d707420746f206164642077697468206f766572666c6f77617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28290a0c0b0100000000004f0b0100010000002f55736572732f616e6472656561656674656e652f776f726b2f696e6b2d342e322e302f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273600b01004c0000005a0000001c000000600b01004c0000005a00000009000000600b01004c0000005a00000031000000600b01004c0000006500000009000000600b01004c0000008d000000210000002f55736572732f616e6472656561656674656e652f2e7275737475702f746f6f6c636861696e732f737461626c652d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e727300fc0b010077000000820100004700419099040bc301617474656d707420746f2073756274726163742077697468206f766572666c6f772f55736572732f616e6472656561656674656e652f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d332e352e302f7372632f636f6465632e727300b10c01006a000000780000000e000000190000001c000000160000001400000019000000f30a0100d70a0100c10a0100ad0a0100940a01", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "2.2.1", + "rust_toolchain": "stable-x86_64-apple-darwin", + "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } + } + }, + "contract": { + "name": "flipper", + "version": "4.2.0", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [{ "label": "init_value", "type": { "displayName": ["bool"], "type": 0 } }], + "default": false, + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "label": "new", + "payable": false, + "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 1 }, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "default": false, + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "label": "new_default", + "payable": false, + "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 1 }, + "selector": "0x61ef7e3e" + } + ], + "docs": [], + "environment": { + "accountId": { "displayName": ["AccountId"], "type": 5 }, + "balance": { "displayName": ["Balance"], "type": 8 }, + "blockNumber": { "displayName": ["BlockNumber"], "type": 11 }, + "chainExtension": { "displayName": ["ChainExtension"], "type": 12 }, + "hash": { "displayName": ["Hash"], "type": 9 }, + "maxEventTopics": 4, + "timestamp": { "displayName": ["Timestamp"], "type": 10 } + }, + "events": [], + "lang_error": { "displayName": ["ink", "LangError"], "type": 3 }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Flips the current value of the Flipper's boolean."], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 1 }, + "selector": "0x633aa551" + }, + { + "args": [], + "default": false, + "docs": [" Returns the current value of the Flipper's boolean."], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 4 }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "value" }], + "name": "Flipper" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { "id": 0, "type": { "def": { "primitive": "bool" } } }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 2 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 3 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 2 }, + { "name": "E", "type": 3 } + ], + "path": ["Result"] + } + }, + { "id": 2, "type": { "def": { "tuple": [] } } }, + { + "id": 3, + "type": { + "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 3 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 0 }, + { "name": "E", "type": 3 } + ], + "path": ["Result"] + } + }, + { + "id": 5, + "type": { + "def": { "composite": { "fields": [{ "type": 6, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { "id": 6, "type": { "def": { "array": { "len": 32, "type": 7 } } } }, + { "id": 7, "type": { "def": { "primitive": "u8" } } }, + { "id": 8, "type": { "def": { "primitive": "u128" } } }, + { + "id": 9, + "type": { + "def": { "composite": { "fields": [{ "type": 6, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { "id": 10, "type": { "def": { "primitive": "u64" } } }, + { "id": 11, "type": { "def": { "primitive": "u32" } } }, + { + "id": 12, + "type": { "def": { "variant": {} }, "path": ["ink_env", "types", "NoChainExtension"] } + } + ], + "version": "4" +} diff --git a/.api-contract/src/test/contracts/ink/v4/flipper.json b/.api-contract/src/test/contracts/ink/v4/flipper.json new file mode 100644 index 00000000..0ff5a4d3 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v4/flipper.json @@ -0,0 +1,338 @@ +{ + "source": { + "hash": "0xa5b19cb655755feba8e34ab5b413ac6593ecc7e24e19af485a4d30036be9d577", + "language": "ink! 4.2.0", + "compiler": "rustc 1.69.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "2.2.1", + "rust_toolchain": "stable-x86_64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "flipper", + "version": "4.2.0", + "authors": ["Parity Technologies "] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "init_value", + "type": { + "displayName": ["bool"], + "type": 0 + } + } + ], + "default": false, + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 1 + }, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "default": false, + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "label": "new_default", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 1 + }, + "selector": "0x61ef7e3e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": ["AccountId"], + "type": 5 + }, + "balance": { + "displayName": ["Balance"], + "type": 8 + }, + "blockNumber": { + "displayName": ["BlockNumber"], + "type": 11 + }, + "chainExtension": { + "displayName": ["ChainExtension"], + "type": 12 + }, + "hash": { + "displayName": ["Hash"], + "type": 9 + }, + "maxEventTopics": 4, + "timestamp": { + "displayName": ["Timestamp"], + "type": 10 + } + }, + "events": [], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 3 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Flips the current value of the Flipper's boolean."], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 1 + }, + "selector": "0x633aa551" + }, + { + "args": [], + "default": false, + "docs": [" Returns the current value of the Flipper's boolean."], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 4 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "value" + } + ], + "name": "Flipper" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 1, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + }, + { + "name": "E", + "type": 3 + } + ], + "path": ["Result"] + } + }, + { + "id": 2, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 3, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 3 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 3 + } + ], + "path": ["Result"] + } + }, + { + "id": 5, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 6, + "type": { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 8, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 6, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { + "id": 10, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 12, + "type": { + "def": { + "variant": {} + }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": "4" +} diff --git a/.api-contract/src/test/contracts/ink/v4/flipper.wasm b/.api-contract/src/test/contracts/ink/v4/flipper.wasm new file mode 100644 index 00000000..3f77edb2 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v4/flipper.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v4/index.ts b/.api-contract/src/test/contracts/ink/v4/index.ts new file mode 100644 index 00000000..808eba8c --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v4/index.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; +export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/ink/v5/erc20.contract.json b/.api-contract/src/test/contracts/ink/v5/erc20.contract.json new file mode 100644 index 00000000..a236791a --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v5/erc20.contract.json @@ -0,0 +1,480 @@ +{ + "source": { + "hash": "0xf6939855fe6abe0b79cd23a154f0816d8205a5751f36b8703e9a60f31d9e48a5", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "wasm": "0x0061736d0100000001691160037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f0060047f7f7f7f0060047f7f7f7f017f60057f7f7f7f7f0060000060017f017f60027e7e0060047f7f7e7e0060037e7e7f0060037f7e7e006000017f60057f7f7f7f7f017f60047f7f7e7e017f02c7010a057365616c310b6765745f73746f726167650006057365616c3005696e7075740002057365616c300d6465706f7369745f6576656e740005057365616c320b7365745f73746f726167650006057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c300663616c6c65720002057365616c301176616c75655f7472616e736665727265640002057365616c300f686173685f626c616b65325f323536000303656e76066d656d6f7279020102100356550000000007030b0202030c0d0402030305040207040202000202020403020204070e01010203040903030102010f0a02080a0208100408030502020901000001010104020101070605060201010300050101010205040501700116160616037f01418080040b7f0041809b050b7f0041fe9a050b0711020463616c6c003c066465706c6f79003f091b010041010b15555435332b2c495b4a2f2f2b2f4748454c2f57595a0afa78552b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200141016a2101200341016a2103200241016b21020c000b000b200141016b2101200041016b210303402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b2200200120034d044020002001360204200020023602000f0b200120032004100e000b0e0020002001200241f89004105d0bbb0102037f017e230041306b2204240020044100360220200442808001370228200441fe9a0436022441b7c380e57e200441246a2205101020002005101120012005101120042004290224370218200441106a200441186a2206200428022c10122004280214210020042802102101200429021821072004410036022c20042007370224200220032005101320042004290224370218200441086a2006200428022c1012200120002004280208200428020c10031a200441306a24000b2601017f230041106b220224002002200036020c20012002410c6a41041017200241106a24000b0a0020012000412010170b4501017f2002200128020422034b044041a09604412341cc98041032000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b2a01017f230041106b2203240020032001370308200320003703002002200341101017200341106a24000bb50102047f017e230041306b2203240020034100360220200342808001370228200341fe9a0436022441e7b98fb102200341246a2204101020002004101120032003290224370218200341106a200341186a2205200328022c10122003280214210020032802102106200329021821072003410036022c20032007370224200120022004101320032003290224370218200341086a2005200328022c1012200620002003280208200328020c10031a200341306a24000bbd0102047f017e230041d0006b22012400200141186a220220001016200129021821052001410036022c20012005370224200141003a0044200141246a2203200141c4006a22044101101720012001290224370218200141106a2002200128022c10122003200128021020012802141018200141086a200028020020002802042000280208220210192001410036024c2001200129030837024420032004101120022002200128024c6a22024d101a20002002360208200141d0006a24000b3f01027f20012802042203200128020822024904402002200341bc98041031000b200041003602082000200320026b3602042000200128020020026a3602000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741ec9704105c0240200320044f0440200320054b0d01200420066a200320046b20012002418c9804101c2007419c9804105c200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41073602002000410236020c200041ac9104360208200041073602242000200041206a3602102000200041046a36022820002000360220200041086a41fc97041034000b2003200541fc9704100e000b8f0201077f230041d0006b22032400200341286a22044200370300200341206a22054200370300200341186a22064200370300200342003703100240200241214f0440200341c8006a22074200370300200341406b22084200370300200341386a220942003703002003420037033020012002200341306a1008200420072903003703002005200829030037030020062009290300370300200320032903303703100c010b200341086a2002200341106a412041a48104100d2003280208200328020c2001200241b48104101c0b20002003290310370000200041186a200341286a290300370000200041106a200341206a290300370000200041086a200341186a290300370000200341d0006a24000b29002002200349044020032002418c84041031000b2000200220036b3602042000200120036a3602000b1500200045044041c39604412b419c84041032000b0bb20102037f017e230041d0006b22022400200241186a220420001016200229021821052002410036022c200220053702242001200241246a2203101120022002290224370218200241106a2004200228022c10122003200228021020022802141018200241086a200028020020002802042000280208220110192002410036024c200220022903083702442003200241c4006a101120012001200228024c6a22014d101a20002001360208200241d0006a24000b7b002001200346044020002002200110091a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41073602002000410336020c200041809304360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a20041034000b5c01027f230041206b22012400200141086a200028020020002802042000280208220210192001410036021c20012001290308370214200141146a410c101e20022002200128021c6a22024d101a20002002360208200141206a24000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41073602002000410236020c200041948e04360208200041073602242000200041206a360210200020003602282000200041046a360220200041086a41ac98041034000b8a0101047f230041206b22022400200241186a22034200370300200241106a22044200370300200241086a22054200370300200242003703002000027f200120024120102045044020002002290300370001200041196a2003290300370000200041116a2004290300370000200041096a200529030037000041000c010b41010b3a0000200241206a24000b3d01027f2000280204220320024922044504402001200220002802002201200241b49a04101c2000200320026b3602042000200120026a3602000b20040b5502027f017e230041206b22022400200241086a20011022200241186a29030021042002280208210320002002290310370308200041106a200437030020002003200128020472410047ad370300200241206a24000b5f02017f037e230041106b2202240020024200370308200242003703000240200120024110102045044020022903082104200229030021050c010b420121030b2000200537030820002003370300200041106a2004370300200241106a24000ba90102017f027e230041406a220224002002411f6a2001101f0240024020022d001f0d002002200110222002290300a70d00200241106a2903002103200229030821042000200229002037000820004200370300200041286a2004370300200041306a2003370300200041206a200241386a290000370000200041186a200241306a290000370000200041106a200241286a2900003700000c010b200042013703000b200241406b24000be80202077f017e230041406a22012400200142808001370228200141fe9a04360224200141246a101d200141186a2001412c6a28020036020020012001290224370310200141306a2202200141106a41b587041025200041316a2105024020002d001004402002200041116a101b0c010b200141306a10150b200041106a2106200141186a200141386a28020036020020012001290230370310024020052d00000440200141106a200041326a101b0c010b200141106a10150b200141386a2202200141186a220328020036020020012001290310370330200141106a2204200141306a2207102620022003280200360200200120012902102208370330200141206a2802002102200128021c210320014100360218200120083702102006200410272005200410272000290300200041086a2903002004101320012001290210370330200141086a200720012802181012200320022001280208200128020c1002200141406b24000bda0102037f017e230041d0006b22032400024020020440200341186a220520011016200329021821062003410036022c200320063702242002200341246a2204101120032003290224370218200341106a2005200328022c10122004200328021020032802141018200341086a200128020020012802042001280208220210192003410036024c200320032903083702442004200341c4006a101120022002200328024c6a22024d101a200120023602080c010b200110150b20002001290200370200200041086a200141086a280200360200200341d0006a24000b6502027f017e230041206b22022400200241186a2203410036020020022001290200370310200241086a200241106a200141086a280200101220022903082104200041086a2003280200360200200020022903103702002000200437020c200241206a24000b210020002d000045044020014100101e0f0b20014101101e200041016a200110110baf0101027f230041306b2201240020014180800136020441fe9a04200141046a2202100620014180800136022c200141fe9a043602282002200141286a101f20012d00040440200141103a000441f7820441c100200241c8820441b883041029000b2000200141066a290000370001200041096a2001410e6a290000370000200041116a200141166a290000370000200041186a2001411d6a290000370000200020012d00053a0000200141306a24000b7c01017f230041406a220524002005200136020c200520003602082005200336021420052002360210200541246a42023702002005413c6a41013602002005410236021c200541a88e04360218200541023602342005200541306a3602202005200541106a3602382005200541086a360230200541186a20041034000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10072000290308210120002903002102200041206a2400410541042001200284501b0b1b002001280214418889044105200141186a28020028020c1100000b3400200128021420002802002d0000410274220041b888046a280200200041f887046a280200200141186a28020028020c1100000bff0202057f027e230041d0006b220224002002410036023020024280800137023c200241fe9a0436023841e7b98fb102200241386a2204101020012004101120022002290238370228200241206a200241286a200228024010122002280224210320022802202105200228022821012002200228022c2206360238200520032001200410002103200241186a20022802382001200641b88204100d027e024002400240024020030e0400010103010b200228021821012002200228021c36023c200220013602382002200241386a10212002290300a70d0120022903082107200241106a2903000c030b200241c4006a42003702002002410136023c200241f48304360238200241a09604360240200241386a41fc83041034000b200241103a0037200241c4006a42013702002002410136023c2002418c81043602382002410336022c2002200241286a3602402002200241376a360228200241386a419481041034000b42000b21082000200737030020002008370308200241d0006a24000b850302047f027e230041d0006b220324002003410036023020034280800137023c200341fe9a0436023841b7c380e57e200341386a2204101020012004101120022004101120032003290238370228200341206a200341286a200328024010122003280224210220032802202105200328022821012003200328022c2206360238200520022001200410002102200341186a20032802382001200641b88204100d027e024002400240024020020e0400010103010b200328021821012003200328021c36023c200320013602382003200341386a10212003290300a70d0120032903082107200341106a2903000c030b200341c4006a42003702002003410136023c200341f48304360238200341a09604360240200341386a41fc83041034000b200341103a0037200341c4006a42013702002003410136023c2003418c81043602382003410336022c2003200341286a3602402003200341376a360228200341386a419481041034000b42000b21082000200737030020002008370308200341d0006a24000b0300010b1b002000418180014f044020004180800141c88304100e000b20000b0e0020002001200241d89004105d0b4601017f230041206b220324002003410c6a420037020020034101360204200341a096043602082003200136021c200320003602182003200341186a360200200320021034000b840101017f230041306b22022400200241146a42013702002002410136020c200241a0950436020820024102360224200220002d0000410274220041c49a046a28020036022c2002200041d89a046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10462100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241c48d04360210200241a0960436020c2002410c6a104b000b8f0101027f230041106b22022400027f024002400240410220002d000041106b41ff01712203200341024f1b41016b0e020102000b20022000360208200141d882044106200241086a410510360c020b200128021441de8204410e200141186a28020028020c1100000c010b2002200036020c200141ec8204410b2002410c6a410610360b2100200241106a240020000ba20201047f230041406a220524004101210702402000280214220620012002200041186a280200220228020c22011100000d000240200028021c2208410471450440200641d68e04410120011100000d022003200020041101000d0220002802142106200028021828020c21010c010b200641d78e04410220011100000d01200541013a001b200541346a41b88e04360200200520023602102005200636020c20052008360238200520002d00203a003c2005200028021036022c200520002902083702242005200029020037021c20052005411b6a36021420052005410c6a36023020032005411c6a20041101000d01200528023041d48e044102200528023428020c1100000d010b200641a88d044101200111000021070b200541406b240020070b3e01027f230041106b22022400200242808001370208200241fe9a04360204200241046a22034100101e20002001200310134100200228020c1030103b000b5101027f230041106b22022400200242808001370208200241fe9a04360204200241046a22034100101e2003200141ff0171410247047f20034101101e20010541000b101e2000200228020c1030103b000b3c01027f230041106b22002400200042808001370208200041fe9a04360204200041046a22014101101e20014101101e4101200028020c1030103b000bab0102057f017e230041306b2202240020024100360220200242808001370228200241fe9a043602244100200241246a2203101020022002290224370218200241106a200241186a2204200228022c10122002280214210520022802102106200229021821072002410036022c20022007370224200020012003101320022002290224370218200241086a2004200228022c1012200620052002280208200228020c10031a200241306a24000b0d00200041fe9a0420011005000b821602087f047e230041a0056b22002400024002400240102a41ff017141054604402000418080013602c80441fe9a04200041c8046a2201100120004180016a20002802c80441fe9a044180800141b88204100d20002000290380013702bc04200041003602c804200041bc046a2001410410200d0220002d00cb04210220002d00ca04210320002d00c9042101027f02400240024002400240024020002d00c8042204410b6b0e050509090901000b0240200441e8006b0e03040902000b2004418401460d02200441db0147200141ff017141e3004772200341f50047200241a8014772720d0841000c050b200141ff017141f50047200341da004772200241d60047720d07200041c8046a200041bc046a101f20002d00c8040d07200041f0016a200041d2046a290000370300200041f8016a200041da046a290000370300200041ff016a200041e1046a2900003700002000200041ca046a2900003703e80120002d00c904210141010c040b200141ff0171200341164772200241de0047720d06200041a8026a200041bc046a2201101f20002d00a8020d0620004188016a2001101f20002d0088010d06200041ff046a200041a1016a290000370000200041f7046a20004199016a290000370000200041ef046a20004191016a290000370000200041d0046a200041b2026a290000370300200041d8046a200041ba026a290000370300200041df046a200041c1026a29000037000020002000290089013700e7042000200041aa026a2900003703c80420002d00a9022101200041e8016a200041c8046a413f10091a41020c030b200141ff017141a10147200341dd004772200241a10147720d05200041c8046a200041bc046a102320002903c8044200520d05200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41030c020b200141ff0171411247200341e6004772200241a00147720d04200041c8046a200041bc046a102320002903c8044200520d04200041b6036a200041ae026a2000418e016a200041d0046a4130100941301009413010091a200041e8016a200041b0036a413610091a41040c010b200141ff0171413947200341ef0047722002411847720d03200041f0036a200041bc046a2201101f20002d00f0030d0320004198046a2001101f20002d0098040d03200041e8006a200110222000290368a70d03200041f8006a290300210820002903702109200041c8036a200041f1036a220141186a290000370300200041c0036a200141106a290000370300200041b8036a200141086a290000370300200041d8036a200041a1046a290000370300200041e0036a200041a9046a290000370300200041e8036a200041b1046a29000037030020002000290099043703d003200020012900003703b003200041f0026a2202200041b0036a41c00010091a200041ae026a2000418e016a200041ce046a200241c000100941c000100941c00010091a200041e8016a200041a8026a413f10091a2000200041ea026a2800003600e301200020002800e7023602e00141050b210220004188016a410272200041e8016a413f10091a200041cc016a20002800e301360000200041d8016a2008370300200020002802e0013600c901200020093703d001200020013a008901200020023a008801200041003602b0022000428080013702cc04200041fe9a043602c8044100200041c8046a22031010200020002902c8043702a802200041e0006a200041a8026a20002802d0041012200028026421042000280260210520002802a8022101200020002802ac0222063602c804200520042001200310002103200041d8006a20002802c8042001200641b88204100d02400240024020030e0400040401040b200028025821012000200028025c3602cc04200020013602c804200041406b200041c8046a10222000290340a745044020002802cc04450d020b200041d4046a4200370200200041013602cc042000419c87043602c8040c050b200041d4046a4200370200200041013602cc04200041ec86043602c8040c040b20004188016a4101722101200041d0006a290300210820002000290348220937039804200020083703a00402400240024002400240024002400240200241016b0e050001040502030b230041406a22022400200241286a200141086a290000370200200241306a200141106a290000370200200241386a200141186a290000370200200220004198046a36021c20022001290000370220200241086a200241206a102d20022903082108200041086a2201200241106a29030037030820012008370300200241406b24002000290308200041106a2903001037000b230041e0006b22022400200220004198046a36021c200241086a200241206a200141c0001009200241406b102e20022903082108200041186a2201200241106a29030037030820012008370300200241e0006a24002000290318200041206a2903001037000b200041d0046a20004190016a41d00010092101200020004198046a3602c80420004190056a290300210920004198056a2903002108200041a8026a22021028200041306a20012002102e41012103410121022000290330220b2009542204200041386a290300220a2008542008200a511b0d04410221022001200041f0046a20092008103d41ff017122054102460d03200541004721020c040b200920081037000b200041d0046a20004190016a413010092101200020004198046a3602c804200041f8046a2903002108200041f0046a2903002109200041a8026a220210282002200120092008103d220141ff0171410246047f200029039804200041a0046a290300103a41000541010b20011038000b200041b8036a20004190016a413010092101200020004198046a3602b003200041e0036a2903002108200041d8036a2903002109200041f0026a220210282002200120092008100f200041c0026a20004188036a290000370300200041b8026a20004180036a290000370300200041b0026a200041f8026a290000370300200041d0026a20004198016a290300370300200041d8026a200041a0016a290300370300200041e0026a200041a8016a290300370300200020002900f0023703a80220002000290390013703c802200041c8046a2204200041a8026a41c00010091a20004190056a2206200837030020002009370388052000428080013702c004200041fe9a043602bc04200041bc046a101d200041f0016a2202200041c4046a280200360200200020002902bc043703e801200041f0036a2203200041e8016a220141d68704102520032004101b2002200041f8036a2205280200360200200020002902f0033703e8012001200041e8046a2207101b20052002280200360200200020002903e8013703f00320012003102620052002280200360200200020002902e80122083703f003200041f8016a280200210220002802f4012105200041003602f001200020083702e801200420011011200720011011200029038805200629030020011013200020002902e8013703f003200041286a200320002802f0011012200520022000280228200028022c1002200029039804200041a0046a290300103a410041021038000b2001200041a8026a200b20097d200a20087d2004ad7d100f200029039804200041a0046a290300103a410021030b200320021038000b200041043a00c804200041c8046a103e000b200041d4046a4200370200200041013602cc04200041f483043602c804200041a096043602d004200041c8046a41fc83041034000b1039000b200041a096043602d004200041c8046a41c486041034000bd40202037f037e23004180016b22042400200441186a2000102d0240200429031822082002542206200441206a290300220720035420032007511b4504402000200820027d200720037d2006ad7d1014200441086a2001102d2004290308220720027c220920075422052005ad200441106a290300220720037c7c220820075420072008511b4101460d012001200920081014200441396a2000290000370000200441c1006a200041086a290000370000200441c9006a200041106a290000370000200441d1006a200041186a290000370000200441da006a2001290000370100200441e2006a200141086a290000370100200441ea006a200141106a290000370100200441f2006a200141186a290000370100200441013a0038200441013a00592004200337033020042002370328200441286a1024410221050b20044180016a240020050f0b41c39604412b41a487041032000b4801017f230041206b220124002001410c6a420137020020014101360204200141a095043602002001410436021c200120003602182001200141186a360208200141c486041034000bf00402087f037e230041c0016b220024000240102a220141ff0171410546044020004180800136025041fe9a04200041d0006a22011001200041286a200028025041fe9a044180800141b88204100d200020002903283702502000410036023002402001200041306a410410200d0020002d0030419b01470d0020002d003141ae01470d0020002d0032419d01470d0020002d003341de00470d00200041106a200110222000290310a7450d020b1039000b200020013a0050200041d0006a103e000b200041206a290300210820002903182109200041306a1028200041ec006a200041c8006a2202290000370200200041e4006a200041406b2203290000370200200041dc006a200041386a220429000037020020002000290030370254200041808004360250200041003602b0012000428080013702b801200041fe9a043602b40141e7b98fb102200041b4016a22011010200041d4006a20011011200020002902b4013702a801200041086a200041a8016a220520002802bc011012200028020c21062000280208210720002902a801210a200041003602bc012000200a3702b4012009200820011013200020002902b4013702a8012000200520002802bc011012200720062000280200200028020410031a2000419a016a200229000037010020004192016a20032900003701002000418a016a200429000037010020004182016a20002900303701002000200837035820002009370350200041013a008101200041003a0060200041d0006a102420092008103a230041106b22002400200042808001370208200041fe9a04360204200041046a22014100101e20014100101e4100200028020c1030103b000b6001027f230041106b2203240020022000280204200028020822046b4b0440200341086a20002004200210412003280208200328020c1042200028020821040b200028020020046a2001200210091a2000200220046a360208200341106a24000ba80301057f230041206b22042400027f4100200220036a22032002490d001a4108200128020422024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003104320022802082105200228020c0c020b200528020021080240200310442205450440410021050c010b20052008200710091a0b20030c010b2002200310432002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000bd10100024020004181808080784704402000450d01230041306b220024002000200136020c2000411c6a420137020020004102360214200041d88b043602102000410736022c2000200041286a36021820002000410c6a360228230041206b22012400200141003b011c200141e88b043602182001200041106a360214200141c48d04360210200141a0960436020c2001410c6a104b000b0f0b230041206b22002400200041146a42003702002000410136020c200041ac8a04360208200041a09604360210200041086a41b48a041034000b2001017f41ec9a042d00001a20011044210220002001360204200020023602000bb70101027f027f41f09a042d0000044041f49a042802000c010b3f00210141f49a0441809b0536020041f09a0441013a000041f89a04200141107436020041809b050b21010240027f4100200020016a22022001490d001a41f89a042802002002490440200041ffff036a220241107640002201417f460d022001411074220120024180807c716a22022001490d0241f89a0420023602004100200020016a22022001490d011a0b41f49a04200236020020010b0f0b41000b0c00200041908904200110460bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10562003200329031037021c200341086a20062001105620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0c00200020012002104041000bb90201037f230041106b22022400024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a20002003410110412004280208200428020c1042200441106a2400200028020821030b2000200341016a360208200028020020036a20013a00000c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b10400b200241106a240041000bdb05020b7f027e230041406a220324004127210202402000350200220d4290ce00540440200d210e0c010b0340200341196a20026a220041046b200d4290ce0080220e42f0b1037e200d7ca7220441ffff037141e4006e220641017441d98e046a2f00003b0000200041026b2006419c7f6c20046a41ffff037141017441d98e046a2f00003b0000200241046b2102200d42ffc1d72f562100200e210d20000d000b0b200ea7220041e3004b0440200241026b2202200341196a6a200ea7220441ffff037141e4006e2200419c7f6c20046a41ffff037141017441d98e046a2f00003b00000b02402000410a4f0440200241026b2202200341196a6a200041017441d98e046a2f00003b00000c010b200241016b2202200341196a6a200041306a3a00000b200128021c22054101712207412720026b22066a2100410021042005410471044041a09604210441a0960441a09604104d20006a21000b412b418080c40020071b2107200341196a20026a2108024020012802004504404101210220012802142200200128021822012007200410500d01200020082006200128020c11000021020c010b2000200128020422094f04404101210220012802142200200128021822012007200410500d01200020082006200128020c11000021020c010b200541087104402001280210210b2001413036021020012d0020210c41012102200141013a0020200128021422052001280218220a2007200410500d01200341106a2001200920006b4101105120032802102200418080c400460d0120032802142104200520082006200a28020c1100000d01200020042005200a10520d012001200c3a00202001200b360210410021020c010b41012102200341086a2001200920006b4101105120032802082205418080c400460d00200328020c210920012802142200200128021822012007200410500d00200020082006200128020c1100000d002005200920002001105221020b200341406b240020020b0e0020002802001a03400c000b000bc40101017f230041406a220124002001200036020c2001411c6a420137020020014102360214200141f096043602102001410836022c2001200141286a36021820012001410c6a3602282001410036023820014201370230200141306a200141106a10454504402001280230210020012802382101024041fc9a042d000045044041fd9a042d00004101710d010b200020011004410947044041fc9a0441013a00000b41fd9a0441013a00000b000b41f88b0441332001413f6a41f8880441988d041029000b210020004283ddaa8bf8ede3ea20370308200042ec80a48aff99c486ab7f3703000ba10301067f230041106b220224000240200120006b220141104f04402000200041036a417c71220520006b2200104e2005200120006b2200417c716a2000410371104e6a21042000410276210303402003450d0220022005200341c0012003200341c0014f1b41b09204104f200228020c21032002280208210520022002280200200228020422002000417c71418c9404104f024020022802042200450440410021010c010b2002280200220620004102746a21074100210103404100210003402001200020066a2802002201417f734107762001410676724181828408716a2101200041046a22004110470d000b200641106a22062007470d000b0b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a2104200228020c2201450d000b2002280208210020014102742103410021010340200120002802002201417f734107762001410676724181828408716a2101200041046a2100200341046b22030d000b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a21040c010b20002001104e21040b200241106a240020040b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b3d002002200349044041a09604412320041032000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000b9c0101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b20024101762104200241016a41017621020b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490bf60101067f2000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722104200341f00149044020042006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200441067472722203418080c400460d011a0b200120012802082207200520026b6a36020820030b360204200020073602000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1053200228021c418080c400470d010c020b0b200241106a200241246a10532002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a104d22054d0d01200241086a2001200020056b410010514101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001105221000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044109470d0120012802000b2802002104410121030b20002004360204200020033602000bd30501107f230041406a22032400200341003b013c200320023602382003410036023420034281808080a00137022c2003200236022820034100360224200320023602202003200136021c2003410a3602182000280204210a2000280200210b2000280208210c200341306a210d027f0340027f024020032d003d450440200328021c2108024020032802282205200328022022104b0d002003280224220120054b0d00200328022c2200200d6a41016b21110340200120086a210420112d0000210602400240027f0240200520016b220741084f0440024002402004200441036a417c712202460440200741086b210e410021020c010b200341106a20062004200220046b2202105820032802104101460d012002200741086b220e4b0d030b200641818284086c210f0340200220046a220941046a280200200f732212417f73201241818284086b712009280200200f732209417f73200941818284086b7172418081828478710d03200241086a2202200e4d0d000b0c020b2003280214210241010c020b200320062004200710582003280204210220032802000c010b200341086a2006200220046a200720026b1058200328020c20026a210220032802084101460b41014604402003200120026a41016a2201360224200020014b200120104b720d02200041054f0d012008200120006b6a21022002200d2000100c0d022003280234210020032001360234200120006b0c070b200320053602240c030b2000410441909504100e000b200120054d0d000b0b200341013a003d20032d003c044020032802382102200328023421000c020b2003280238220220032802342200470d010b41000c030b200220006b0b21010240200c2d00000440200b41d08e044104200a28020c1100000d010b200020086a2100200c2001047f200020016a41016b2d0000410a460541000b3a0000200b20002001200a28020c110000450d010b0b41010b2100200341406b240020000b5701027f024002402003450440410021030c010b200141ff017121054101210103402005200220046a2d0000460440200421030c030b2003200441016a2204470d000b0b410021010b20002003360204200020013602000b4e01027f20002802042102200028020021030240200028020822002d0000450d00200341d08e044104200228020c110000450d0041010f0b20002001410a463a00002003200120022802101101000b0c00200041b88e04200110460bea0201067f230041406a22022400200028020021054101210002402001280214220441d48d04410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4107360200200241346a410736020020024103360214200241ac8d0436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a220736021820042006200241106a10460d00200528020822030440200441e08d04410220011100000d01200241386a200341106a290200370300200241306a200341086a29020037030020022003290200370328200420062007104621000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441e08d04410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041c39604412b20011032000b0b6901017f230041306b220424002004200136020420042000360200200441146a42023702002004412c6a41073602002004410236020c20042003360208200441073602242004200441206a3602102004200441046a36022820042004360220200441086a20021034000b0bf41a0100418080040beb1ae7dc23262f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f73746f726167652f7372632f6c617a792f6d617070696e672e72734661696c656420746f206765742076616c756520696e204d617070696e673a2000000069000100200000000400010065000000c4000000250000005c0c01006a00000093000000200000005c0c01006a00000093000000300000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f70616c6c65742d636f6e7472616374732d756170692d6e6578742d362e302e312f7372632f686f73742e72730000c4000100720000002d000000170000000a0000000100000001000000030000004465636f6465427566666572546f6f536d616c6c52657475726e4572726f7254686520657865637574656420636f6e7472616374206d757374206861766520612063616c6c6572207769746820612076616c6964206163636f756e742069642e5c0c01006a000000820100000e0000005c0c01006a0000001a01000032000000656e636f756e746572656420756e6578706563746564206572726f72d80101001c0000005c0c01006a000000e300000017000000800b01006b000000cf0000003d000000800b01006b000000d20000003b0000005375636365737343616c6c65655472617070656443616c6c656552657665727465644b65794e6f74466f756e645f42656c6f7753756273697374656e63655468726573686f6c645472616e736665724661696c65645f456e646f776d656e74546f6f4c6f77436f64654e6f74466f756e644e6f7443616c6c61626c654c6f6767696e6744697361626c656443616c6c52756e74696d654661696c656445636473615265636f766572794661696c6564537232353531395665726966794661696c656458636d457865637574696f6e4661696c656458636d53656e644661696c6564556e6b6e6f776e2f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f65726332302f6c69622e72730000140301002e000000070000000500000073746f7261676520656e7472792077617320656d707479005403010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279007403010027000000140301002e000000d30000003d00000001b5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb011a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d0000070000000d0000000e0000000b0000001a0000000e000000100000000c0000000b0000000f000000110000001300000013000000120000000d000000070000002c02010033020100400201004e020100590201007302010081020100910201009d020100a8020100b7020100c8020100db020100ee020100000301000d0301000b00000000000000010000000c0000004572726f720000000d0000000c000000040000000e0000000f000000100000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f7700001905010011000000a80401007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564000000b305010015000000c80501000d000000440501006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72732b0601006d0000006402000020000000293a0000200b010000000000a906010001000000a9060100010000000b00000000000000010000001100000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e64657820697320e20601002000000002070100120000003a200000200b0100000000002407010002000000120000000c00000004000000130000001400000015000000202020202c0a28280a303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393972616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e677468200000002108010012000000330801002200000072616e676520656e6420696e6465782068080100100000003308010022000000736c69636520696e64657820737461727473206174202062757420656e6473206174200088080100160000009e0801000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300bc08010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e67746820284009010015000000550901002b000000a8060100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e7273000098090100720000004f000000320000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e72731c0a010074000000b801000037000000200b010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d657373616765617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00200b0100000000006e0b0100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300800b01006b0000005c0000003b000000800b01006b0000005c00000014000000800b01006b0000005d0000000e000000800b01006b0000005e00000034000000800b01006b0000006800000009000000800b01006b0000008600000025000000800b01006b00000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72732f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e7273000000c60c01006b000000770000000e000000190000001c000000160000001400000019000000a80a0100c10a0100dd0a0100f30a0100070b01", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "4.0.0-rc.2", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } + } + }, + "contract": { + "name": "erc20", + "version": "5.0.0-rc.1", + "authors": ["Parity Technologies "] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [{ "label": "total_supply", "type": { "displayName": ["Balance"], "type": 0 } }], + "default": false, + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "payable": false, + "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 14 }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { "displayName": ["AccountId"], "type": 2 }, + "balance": { "displayName": ["Balance"], "type": 0 }, + "blockNumber": { "displayName": ["BlockNumber"], "type": 23 }, + "chainExtension": { "displayName": ["ChainExtension"], "type": 24 }, + "hash": { "displayName": ["Hash"], "type": 21 }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { "displayName": ["Timestamp"], "type": 22 } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { "displayName": ["Option"], "type": 20 } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { "displayName": ["Option"], "type": 20 } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { "displayName": ["Balance"], "type": 0 } + } + ], + "docs": ["Event emitted when a token transfer occurs."], + "label": "Transfer", + "module_path": "erc20::erc20", + "signature_topic": "0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { "displayName": ["AccountId"], "type": 2 } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { "displayName": ["AccountId"], "type": 2 } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { "displayName": ["Balance"], "type": 0 } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval", + "module_path": "erc20::erc20", + "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" + } + ], + "lang_error": { "displayName": ["ink", "LangError"], "type": 15 }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Returns the total token supply."], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, + "selector": "0xdb6375a8" + }, + { + "args": [{ "label": "owner", "type": { "displayName": ["AccountId"], "type": 2 } }], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, + "selector": "0x0f755a56" + }, + { + "args": [ + { "label": "owner", "type": { "displayName": ["AccountId"], "type": 2 } }, + { "label": "spender", "type": { "displayName": ["AccountId"], "type": 2 } } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 16 }, + "selector": "0x6a00165e" + }, + { + "args": [ + { "label": "to", "type": { "displayName": ["AccountId"], "type": 2 } }, + { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 17 }, + "selector": "0x84a15da1" + }, + { + "args": [ + { "label": "spender", "type": { "displayName": ["AccountId"], "type": 2 } }, + { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 17 }, + "selector": "0x681266a0" + }, + { + "args": [ + { "label": "from", "type": { "displayName": ["AccountId"], "type": 2 } }, + { "label": "to", "type": { "displayName": ["AccountId"], "type": 2 } }, + { "label": "value", "type": { "displayName": ["Balance"], "type": 0 } } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 17 }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "total_supply" }, + { + "layout": { + "root": { + "layout": { "leaf": { "key": "0xe7dc2326", "ty": 0 } }, + "root_key": "0xe7dc2326", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { "leaf": { "key": "0xb721a0ec", "ty": 0 } }, + "root_key": "0xb721a0ec", + "ty": 9 + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000", + "ty": 13 + } + }, + "types": [ + { "id": 0, "type": { "def": { "primitive": "u128" } } }, + { + "id": 1, + "type": { + "def": { "composite": {} }, + "params": [ + { "name": "K", "type": 2 }, + { "name": "V", "type": 0 }, + { "name": "KeyType", "type": 5 } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 2, + "type": { + "def": { "composite": { "fields": [{ "type": 3, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { "id": 3, "type": { "def": { "array": { "len": 32, "type": 4 } } } }, + { "id": 4, "type": { "def": { "primitive": "u8" } } }, + { + "id": 5, + "type": { + "def": { "composite": {} }, + "params": [ + { "name": "L", "type": 6 }, + { "name": "R", "type": 7 } + ], + "path": ["ink_storage_traits", "impls", "ResolverKey"] + } + }, + { + "id": 6, + "type": { "def": { "composite": {} }, "path": ["ink_storage_traits", "impls", "AutoKey"] } + }, + { + "id": 7, + "type": { + "def": { "composite": {} }, + "params": [{ "name": "ParentKey", "type": 8 }], + "path": ["ink_storage_traits", "impls", "ManualKey"] + } + }, + { "id": 8, "type": { "def": { "tuple": [] } } }, + { + "id": 9, + "type": { + "def": { "composite": {} }, + "params": [ + { "name": "K", "type": 10 }, + { "name": "V", "type": 0 }, + { "name": "KeyType", "type": 11 } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { "id": 10, "type": { "def": { "tuple": [2, 2] } } }, + { + "id": 11, + "type": { + "def": { "composite": {} }, + "params": [ + { "name": "L", "type": 6 }, + { "name": "R", "type": 12 } + ], + "path": ["ink_storage_traits", "impls", "ResolverKey"] + } + }, + { + "id": 12, + "type": { + "def": { "composite": {} }, + "params": [{ "name": "ParentKey", "type": 8 }], + "path": ["ink_storage_traits", "impls", "ManualKey"] + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "total_supply", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "balances", + "type": 1, + "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" + }, + { + "name": "allowances", + "type": 9, + "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" + } + ] + } + }, + "path": ["erc20", "erc20", "Erc20"] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 8 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 15 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 8 }, + { "name": "E", "type": 15 } + ], + "path": ["Result"] + } + }, + { + "id": 15, + "type": { + "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 15 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 0 }, + { "name": "E", "type": 15 } + ], + "path": ["Result"] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 18 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 15 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 18 }, + { "name": "E", "type": 15 } + ], + "path": ["Result"] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 8 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 19 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 8 }, + { "name": "E", "type": 19 } + ], + "path": ["Result"] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { "index": 0, "name": "InsufficientBalance" }, + { "index": 1, "name": "InsufficientAllowance" } + ] + } + }, + "path": ["erc20", "erc20", "Error"] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { "index": 0, "name": "None" }, + { "fields": [{ "type": 2 }], "index": 1, "name": "Some" } + ] + } + }, + "params": [{ "name": "T", "type": 2 }], + "path": ["Option"] + } + }, + { + "id": 21, + "type": { + "def": { "composite": { "fields": [{ "type": 3, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { "id": 22, "type": { "def": { "primitive": "u64" } } }, + { "id": 23, "type": { "def": { "primitive": "u32" } } }, + { + "id": 24, + "type": { "def": { "variant": {} }, "path": ["ink_env", "types", "NoChainExtension"] } + } + ], + "version": 5 +} diff --git a/.api-contract/src/test/contracts/ink/v5/erc20.json b/.api-contract/src/test/contracts/ink/v5/erc20.json new file mode 100644 index 00000000..3123452e --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v5/erc20.json @@ -0,0 +1,881 @@ +{ + "source": { + "hash": "0xf6939855fe6abe0b79cd23a154f0816d8205a5751f36b8703e9a60f31d9e48a5", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "4.0.0-rc.2", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "5.0.0-rc.1", + "authors": ["Parity Technologies "] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 14 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": ["AccountId"], + "type": 2 + }, + "balance": { + "displayName": ["Balance"], + "type": 0 + }, + "blockNumber": { + "displayName": ["BlockNumber"], + "type": 23 + }, + "chainExtension": { + "displayName": ["ChainExtension"], + "type": 24 + }, + "hash": { + "displayName": ["Hash"], + "type": 21 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": ["Timestamp"], + "type": 22 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": ["Option"], + "type": 20 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": ["Option"], + "type": 20 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": ["Event emitted when a token transfer occurs."], + "label": "Transfer", + "module_path": "erc20::erc20", + "signature_topic": "0xb5b61a3e6a21a16be4f044b517c28ac692492f73c5bfd3f60178ad98c767f4cb" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval", + "module_path": "erc20::erc20", + "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" + } + ], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 15 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Returns the total token supply."], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xe7dc2326", + "ty": 0 + } + }, + "root_key": "0xe7dc2326", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xb721a0ec", + "ty": 0 + } + }, + "root_key": "0xb721a0ec", + "ty": 9 + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000", + "ty": 13 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 5 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 7 + } + ], + "path": ["ink_storage_traits", "impls", "ResolverKey"] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": {} + }, + "path": ["ink_storage_traits", "impls", "AutoKey"] + } + }, + { + "id": 7, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": ["ink_storage_traits", "impls", "ManualKey"] + } + }, + { + "id": 8, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 10 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 11 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [2, 2] + } + } + }, + { + "id": 11, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 12 + } + ], + "path": ["ink_storage_traits", "impls", "ResolverKey"] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": ["ink_storage_traits", "impls", "ManualKey"] + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "total_supply", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "balances", + "type": 1, + "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" + }, + { + "name": "allowances", + "type": 9, + "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" + } + ] + } + }, + "path": ["erc20", "erc20", "Erc20"] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 15 + } + ], + "path": ["Result"] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 15 + } + ], + "path": ["Result"] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 15 + } + ], + "path": ["Result"] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 19 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 19 + } + ], + "path": ["Result"] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": ["erc20", "erc20", "Error"] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": ["Option"] + } + }, + { + "id": 21, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { + "id": 22, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 23, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 24, + "type": { + "def": { + "variant": {} + }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": 5 +} diff --git a/.api-contract/src/test/contracts/ink/v5/erc20.wasm b/.api-contract/src/test/contracts/ink/v5/erc20.wasm new file mode 100644 index 00000000..f6800bb8 Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v5/erc20.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json b/.api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json new file mode 100644 index 00000000..8bba35bb --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v5/erc20_anonymous_transfer.json @@ -0,0 +1,881 @@ +{ + "source": { + "hash": "0x3f4668bee7d86719c3219962213b5d5bcb70a6e8611f166e1dae06019dd481d2", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "4.0.0-rc.2", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "erc20", + "version": "5.0.0-rc.1", + "authors": ["Parity Technologies "] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "total_supply", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": ["Creates a new ERC-20 contract with the specified initial supply."], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 14 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": ["AccountId"], + "type": 2 + }, + "balance": { + "displayName": ["Balance"], + "type": 0 + }, + "blockNumber": { + "displayName": ["BlockNumber"], + "type": 23 + }, + "chainExtension": { + "displayName": ["ChainExtension"], + "type": 24 + }, + "hash": { + "displayName": ["Hash"], + "type": 21 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": ["Timestamp"], + "type": 22 + } + }, + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": ["Option"], + "type": 20 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": ["Option"], + "type": 20 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": ["Event emitted when a token transfer occurs."], + "label": "Transfer", + "module_path": "erc20::erc20", + "signature_topic": null + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": true, + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "docs": [], + "indexed": false, + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "docs": [ + "Event emitted when an approval occurs that `spender` is allowed to withdraw", + "up to the amount of `value` tokens from `owner`." + ], + "label": "Approval", + "module_path": "erc20::erc20", + "signature_topic": "0x1a35e726f5feffda199144f6097b2ba23713e549bfcbe090c0981e3bcdfbcc1d" + } + ], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 15 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Returns the total token supply."], + "label": "total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0xdb6375a8" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the account balance for the specified `owner`.", + "", + " Returns `0` if the account is non-existent." + ], + "label": "balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0x0f755a56" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + } + ], + "default": false, + "docs": [ + " Returns the amount which `spender` is still allowed to withdraw from `owner`.", + "", + " Returns `0` if no allowance has been set." + ], + "label": "allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0x6a00165e" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` amount of tokens from the caller's account to account `to`.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the caller's account balance." + ], + "label": "transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0x84a15da1" + }, + { + "args": [ + { + "label": "spender", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Allows `spender` to withdraw from the caller's account multiple times, up to", + " the `value` amount.", + "", + " If this function is called again it overwrites the current allowance with", + " `value`.", + "", + " An `Approval` event is emitted." + ], + "label": "approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0x681266a0" + }, + { + "args": [ + { + "label": "from", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 2 + } + }, + { + "label": "value", + "type": { + "displayName": ["Balance"], + "type": 0 + } + } + ], + "default": false, + "docs": [ + " Transfers `value` tokens on the behalf of `from` to the account `to`.", + "", + " This can be used to allow a contract to transfer tokens on ones behalf and/or", + " to charge fees in sub-currencies, for example.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `InsufficientAllowance` error if there are not enough tokens allowed", + " for the caller to withdraw from `from`.", + "", + " Returns `InsufficientBalance` error if there are not enough tokens on", + " the account balance of `from`." + ], + "label": "transfer_from", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 17 + }, + "selector": "0x0b396f18" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "total_supply" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xe7dc2326", + "ty": 0 + } + }, + "root_key": "0xe7dc2326", + "ty": 1 + } + }, + "name": "balances" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0xb721a0ec", + "ty": 0 + } + }, + "root_key": "0xb721a0ec", + "ty": 9 + } + }, + "name": "allowances" + } + ], + "name": "Erc20" + } + }, + "root_key": "0x00000000", + "ty": 13 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 2 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 5 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 2, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 3, + "type": { + "def": { + "array": { + "len": 32, + "type": 4 + } + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 5, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 7 + } + ], + "path": ["ink_storage_traits", "impls", "ResolverKey"] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": {} + }, + "path": ["ink_storage_traits", "impls", "AutoKey"] + } + }, + { + "id": 7, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": ["ink_storage_traits", "impls", "ManualKey"] + } + }, + { + "id": 8, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 9, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "K", + "type": 10 + }, + { + "name": "V", + "type": 0 + }, + { + "name": "KeyType", + "type": 11 + } + ], + "path": ["ink_storage", "lazy", "mapping", "Mapping"] + } + }, + { + "id": 10, + "type": { + "def": { + "tuple": [2, 2] + } + } + }, + { + "id": 11, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "L", + "type": 6 + }, + { + "name": "R", + "type": 12 + } + ], + "path": ["ink_storage_traits", "impls", "ResolverKey"] + } + }, + { + "id": 12, + "type": { + "def": { + "composite": {} + }, + "params": [ + { + "name": "ParentKey", + "type": 8 + } + ], + "path": ["ink_storage_traits", "impls", "ManualKey"] + } + }, + { + "id": 13, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "total_supply", + "type": 0, + "typeName": ",>>::Type" + }, + { + "name": "balances", + "type": 1, + "typeName": " as::ink::storage::traits::\nAutoStorableHint<::ink::storage::traits::ManualKey<639884519u32, ()\n>,>>::Type" + }, + { + "name": "allowances", + "type": 9, + "typeName": " as::ink::storage::traits\n::AutoStorableHint<::ink::storage::traits::ManualKey<\n3969917367u32, ()>,>>::Type" + } + ] + } + }, + "path": ["erc20", "erc20", "Erc20"] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 15 + } + ], + "path": ["Result"] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 15 + } + ], + "path": ["Result"] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 18 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 15 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 18 + }, + { + "name": "E", + "type": 15 + } + ], + "path": ["Result"] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 19 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + }, + { + "name": "E", + "type": 19 + } + ], + "path": ["Result"] + } + }, + { + "id": 19, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InsufficientBalance" + }, + { + "index": 1, + "name": "InsufficientAllowance" + } + ] + } + }, + "path": ["erc20", "erc20", "Error"] + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 2 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 2 + } + ], + "path": ["Option"] + } + }, + { + "id": 21, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 3, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { + "id": 22, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 23, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 24, + "type": { + "def": { + "variant": {} + }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": 5 +} diff --git a/.api-contract/src/test/contracts/ink/v5/flipper.contract.json b/.api-contract/src/test/contracts/ink/v5/flipper.contract.json new file mode 100644 index 00000000..2855f338 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v5/flipper.contract.json @@ -0,0 +1,177 @@ +{ + "source": { + "hash": "0xaf1c6d2ea289d7d4f8753db2d658782f4d066544f3ee34b3d54272075ad0de99", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "wasm": "0x0061736d0100000001400b60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060047f7f7f7f017f60017f0060017f017f60000060047f7f7f7f0060057f7f7f7f7f006000017f028a0107057365616c310b6765745f73746f726167650004057365616c3005696e7075740002057365616c320b7365745f73746f726167650004057365616c300d64656275675f6d6573736167650001057365616c300b7365616c5f72657475726e0003057365616c301176616c75655f7472616e73666572726564000203656e76066d656d6f7279020102100334330000000002030a060301020600070205030202070507030802020601000500010101010502010109040804030902010103010204050170010e0e0616037f01418080040b7f00419093050b7f00418693050b0711020463616c6c0019066465706c6f79001b0913010041010b0d0f34263728352327232425212a0afc3b332b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6f01017f0240200020014d04402000210303402002450d02200320012d00003a0000200141016a2101200341016a2103200241016b21020c000b000b200141016b2101200041016b210303402002450d01200220036a200120026a2d00003a0000200241016b21020c000b000b20000b2501017f037f2002200346047f200005200020036a20013a0000200341016a21030c010b0b0b3f01027f0340200245044041000f0b200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b2601017f230041106b22022400200220003a000f20012002410f6a4101100b200241106a24000bd30101057f20002802042105200028020021062000280208220420026a220320044f220741f0900410380240200320044f0440200320054b0d01200420066a200320046b20012002419091041032200741a091041038200020033602080f0b230041306b220024002000200336020420002004360200200041146a42023702002000412c6a41033602002000410236020c200041b48b04360208200041033602242000200041206a3602102000200041046a36022820002000360220200041086a418091041010000b2003200541809104100e000b4d02017f027e230041206b2200240020004200370308200042003703002000411036021c20002000411c6a10052000290308210120002903002102200041206a2400410541042001200284501b0b1b002000418180014f044020004180800141f08104100e000b20000b6b01017f230041306b220324002003200136020420032000360200200341146a42023702002003412c6a41033602002003410236020c200341808b04360208200341033602242003200341206a3602102003200341046a36022820032003360220200341086a20021010000b840101017f230041306b22022400200241146a42013702002002410136020c200241a48e0436020820024102360224200220002d0000410274220041cc92046a28020036022c2002200041e092046a2802003602282002200241206a3602102002200241286a36022020012802142001280218200241086a10222100200241306a240020000b3c01017f230041206b22022400200241013b011c2002200136021820022000360214200241908804360210200241a48f0436020c2002410c6a1029000b4701027f230041106b22012400200141003a000f20002001410f6a41011012220045044020012d000f21020b200141106a240041024101410220024101461b410020021b20001b0b3d01027f2000280204220320024922044504402001200220002802002201200241bc920410322000200320026b3602042000200120026a3602000b20040b3c01027f230041106b22002400200042808001370208200041869304360204200041046a2201410010182001410010184100200028020c100d1017000b4401027f230041106b22022400200242808001370208200241869304360204200241046a22032001047f20034101101841010541000b10182000200228020c100d1017000bb20102057f017e230041306b220124002001410036021c20014280800137022820014186930436022420014100360220200141246a2202200141206a4104100b20012001290224370214200141086a200141146a2203200128022c1016200128020c210420012802082105200129021421062001410036022c2001200637022420002002100a2001200129022437021420012003200128022c1016200520042001280200200128020410021a200141306a24000b4501017f2002200128020422034b044041a48f04412341c091041031000b2001200320026b36020420012001280200220120026a36020020002002360204200020013602000b0d0020004186930420011004000b970101027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b230041306b220024002000200336020420002002360200200041146a42023702002000412c6a41033602002000410236020c200041e08804360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a41b091041010000b880501077f230041306b22002400024002400240024002400240100c41ff0171410546044020004180800136021441869304200041146a2202100120002802142201418180014f0d0120002001360218200041869304360214200041003602082002200041086a410410120d0520002d000b210120002d000a210220002d00092103024020002d00082204412f470440200441e300470d07410121042003413a47200241a5014772200141d1004772450d010c070b41002104200341860147200241db004772200141d90147720d060b200041003602102000428080013702182000418693043602142000410036022c200041146a22032000412c6a4104100b200020002902143702082000200041086a200028021c10162000280204210520002802002106200028020821012000200028020c2202360214200620052001200310002105200220002802142203490d0202400240024020050e0400060601060b2000200336021820002001360214200041146a1011220141ff017141024704402000280218450d020b200041206a420037020020004101360218200041bc83043602140c080b200041206a4200370200200041013602182000418c83043602140c070b20040d04230041106b22002400200042808001370208200041869304360204200041046a22024100101820012002100a4100200028020c100d1017000b200041043a0014200041146a101a000b20014180800141f48004100e000b2003200241f48004100e000b200041206a4200370200200041013602182000419c8204360214200041a48f0436021c200041146a41a482041010000b200141ff0171451015410041001014000b410141011014000b200041a48f0436021c200041146a41e482041010000b4801017f230041206b220124002001410c6a420137020020014101360204200141a48e043602002001410136021c200120003602182001200141186a360208200141e482041010000b820201057f230041106b2200240002400240100c220141ff0171410546044020004180800136020441869304200041046a2202100120002802042201418180014f0d01200020013602082000418693043602042000410036020c024020022000410c6a410410120d0020002d000f210120002d000e210320002d000d210420002d000c220041e1004704402000419b0147200441ae0147722003419d0147200141de004772720d0120021011220041ff01714102460d01200010151013000b200441ef0147200341fe0047720d002001413e460d030b410141011014000b200020013a0004200041046a101a000b20014180800141f48004100e000b410010151013000b6001027f230041106b2203240020022000280204200028020822046b4b0440200341086a200020042002101d2003280208200328020c101e200028020821040b200028020020046a2001200210061a2000200220046a360208200341106a24000ba80301057f230041206b22042400027f4100200220036a22032002490d001a4108200128020422024101742206200320032006491b2203200341084d1b2203417f73411f76210702402002450440200441003602180c010b2004200236021c20044101360218200420012802003602140b200441146a2105230041106b22022400200441086a2206027f02402007044020034100480d01027f20052802040440200541086a2802002207450440200241086a2003101f20022802082105200228020c0c020b200528020021080240200310202205450440410021050c010b20052008200710061a0b20030c010b20022003101f2002280200210520022802040b21072005044020062005360204200641086a200736020041000c030b20064101360204200641086a200336020041010c020b20064100360204200641086a200336020041010c010b2006410036020441010b360200200241106a24002004280208450440200428020c210220012003360204200120023602004181808080780c010b200441106a2802002103200428020c0b21012000200336020420002001360200200441206a24000bd10100024020004181808080784704402000450d01230041306b220024002000200136020c2000411c6a420137020020004102360214200041a486043602102000410336022c2000200041286a36021820002000410c6a360228230041206b22012400200141003b011c200141b486043602182001200041106a360214200141908804360210200141a48f0436020c2001410c6a1029000b0f0b230041206b22002400200041146a42003702002000410136020c200041f88404360208200041a48f04360210200041086a418085041010000b2001017f41f492042d00001a20011020210220002001360204200020023602000bb70101027f027f41f892042d0000044041fc92042802000c010b3f00210141fc92044190930536020041f8920441013a0000418093042001411074360200419093050b21010240027f4100200020016a22022001490d001a418093042802002002490440200041ffff036a220241107640002201417f460d022001411074220120024180807c716a22022001490d024180930420023602004100200020016a22022001490d011a0b41fc9204200236020020010b0f0b41000b0c00200041dc8304200110220bfc0301067f230041406a22032400200341346a2001360200200341033a003c2003412036022c2003410036023820032000360230200341003602242003410036021c027f02400240200228021022014504402002410c6a28020022004103742106200041ffffffff017121072002280200210820022802082101034020042006460d02200420086a220041046a28020022050440200328023020002802002005200328023428020c1100000d040b200441086a21042001280200210020012802042105200141086a210120002003411c6a2005110100450d000b0c020b200241146a28020022044105742100200441ffffff3f7121072002280208210620022802002208210403402000450d01200441046a28020022050440200328023020042802002005200328023428020c1100000d030b2003200128021036022c200320012d001c3a003c20032001280218360238200341106a2006200141086a10362003200329031037021c200341086a20062001103620032003290308370224200441086a2104200041206b210020012802142105200141206a2101200620054103746a22052802002003411c6a2005280204110100450d000b0c010b200228020420074b04402003280230200820074103746a22002802002000280204200328023428020c1100000d010b41000c010b41010b2101200341406b240020010b0300010b0c00200020012002101c41000bb90201037f230041106b22022400024020002002410c6a027f0240024020014180014f04402002410036020c2001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200028020822032000280204460440230041106b22042400200441086a200020034101101d2004280208200428020c101e200441106a2400200028020821030b2000200341016a360208200028020020036a20013a00000c030b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f20022001410676413f71418001723a000e20022001410c76413f71418001723a000d2002200141127641077141f001723a000c41040b101c0b200241106a240041000bdb05020b7f027e230041406a220324004127210202402000350200220d4290ce00540440200d210e0c010b0340200341196a20026a220041046b200d4290ce0080220e42f0b1037e200d7ca7220441ffff037141e4006e2206410174418489046a2f00003b0000200041026b2006419c7f6c20046a41ffff0371410174418489046a2f00003b0000200241046b2102200d42ffc1d72f562100200e210d20000d000b0b200ea7220041e3004b0440200241026b2202200341196a6a200ea7220441ffff037141e4006e2200419c7f6c20046a41ffff0371410174418489046a2f00003b00000b02402000410a4f0440200241026b2202200341196a6a2000410174418489046a2f00003b00000c010b200241016b2202200341196a6a200041306a3a00000b200128021c22054101712207412720026b22066a2100410021042005410471044041a48f04210441a48f0441a48f04102b20006a21000b412b418080c40020071b2107200341196a20026a21080240200128020045044041012102200128021422002001280218220120072004102e0d01200020082006200128020c11000021020c010b2000200128020422094f044041012102200128021422002001280218220120072004102e0d01200020082006200128020c11000021020c010b200541087104402001280210210b2001413036021020012d0020210c41012102200141013a0020200128021422052001280218220a20072004102e0d01200341106a2001200920006b4101102f20032802102200418080c400460d0120032802142104200520082006200a28020c1100000d01200020042005200a10300d012001200c3a00202001200b360210410021020c010b41012102200341086a2001200920006b4101102f20032802082205418080c400460d00200328020c2109200128021422002001280218220120072004102e0d00200020082006200128020c1100000d002005200920002001103021020b200341406b240020020b1b00200128021441d483044105200141186a28020028020c1100000b0e0020002802001a03400c000b000baf0201017f230041406a220124002001200036020c2001411c6a420137020020014102360214200141f48f043602102001410436022c2001200141286a36021820012001410c6a3602282001410036023820014201370230200141306a200141106a102145044020012802302100200128023821010240418493042d0000450440418593042d00004101710d010b20002001100341094704404184930441013a00000b4185930441013a00000b000b230041406a220024002000413336020c200041c48604360208200041c4830436021420002001413f6a360210200041246a42023702002000413c6a41063602002000410236021c200041f48804360218200041023602342000200041306a3602202000200041106a3602382000200041086a360230200041186a41e487041010000b210020004283ddaa8bf8ede3ea20370308200042ec80a48aff99c486ab7f3703000ba10301067f230041106b220224000240200120006b220141104f04402000200041036a417c71220520006b2200102c2005200120006b2200417c716a2000410371102c6a21042000410276210303402003450d0220022005200341c0012003200341c0014f1b41b88c04102d200228020c21032002280208210520022002280200200228020422002000417c7141948e04102d024020022802042200450440410021010c010b2002280200220620004102746a21074100210103404100210003402001200020066a2802002201417f734107762001410676724181828408716a2101200041046a22004110470d000b200641106a22062007470d000b0b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a2104200228020c2201450d000b2002280208210020014102742103410021010340200120002802002201417f734107762001410676724181828408716a2101200041046a2100200341046b22030d000b200141087641ff81fc0771200141ff81fc07716a418180046c41107620046a21040c010b20002001102c21040b200241106a240020040b2c01017f200104400340200220002c000041bf7f4a6a2102200041016a2100200141016b22010d000b0b20020b3d002002200349044041a48f04412320041031000b20002003360204200020013602002000410c6a200220036b3602002000200120034102746a3602080b39000240027f2002418080c40047044041012000200220012802101101000d011a0b20030d0141000b0f0b200020034100200128020c1100000b9c0101027f024002400240024020012d0020220441016b0e03010200030b200341ff01710d00410021040c020b20022104410021020c010b20024101762104200241016a41017621020b200441016a2104200141186a2802002105200128021021032001280214210102400340200441016b2204450d01200120032005280210110100450d000b418080c40021030b20002002360204200020033602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b4601017f230041206b220324002003410c6a420037020020034101360204200341a48f043602082003200136021c200320003602182003200341186a360200200320021010000b7b002001200346044020002002200110061a0f0b230041306b220024002000200336020420002001360200200041146a42023702002000412c6a41033602002000410336020c200041888d04360208200041033602242000200041206a360210200020003602282000200041046a360220200041086a20041010000bf60101067f2000027f418080c400200128020022022001280204460d001a2001200241016a2205360200024020022d0000220341187441187541004e0d002001200241026a220536020020022d0001413f7121042003411f712106200341df014d0440200641067420047221030c010b2001200241036a220536020020022d0002413f712004410674722104200341f00149044020042006410c747221030c010b2001200241046a2205360200418080c4002006411274418080f0007120022d0003413f71200441067472722203418080c400460d011a0b200120012802082207200520026b6a36020820030b360204200020073602000bb90301067f230041306b22022400200028020421042000280200210302400240200128020022062001280208220072044002402000450d002001410c6a28020021002002410036022c200220033602242002200320046a360228200041016a21000340200041016b22000440200241186a200241246a1033200228021c418080c400470d010c020b0b200241106a200241246a10332002280214418080c400460d000240024020022802102205450d00200420054d04404100210020042005460d010c020b41002100200320056a2c00004140480d010b200321000b2005200420001b21042000200320001b21030b2006450440200128021420032004200141186a28020028020c11000021000c030b200128020422002003200320046a102b22054d0d01200241086a2001200020056b4100102f4101210020022802082205418080c400460d02200228020c21062001280214220720032004200141186a280200220128020c1100000d022005200620072001103021000c020b200128021420032004200141186a28020028020c11000021000c010b200128021420032004200141186a28020028020c11000021000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000bea0201067f230041406a22022400200028020021054101210002402001280214220441a08804410c200141186a280200220628020c22011100000d00200528020c21032002411c6a42033702002002413c6a4103360200200241346a410336020020024103360214200241f8870436021020022003410c6a3602382002200341086a3602302002410236022c200220033602282002200241286a220736021820042006200241106a10220d00200528020822030440200441ac8804410220011100000d01200241386a200341106a290200370300200241306a200341086a29020037030020022003290200370328200420062007102221000c010b200220052802002203200528020428020c11020041002100200229030042c1f7f9e8cc93b2d14185200241086a29030042e4dec78590d085de7d858450450d0041012100200441ac8804410220011100000d00200420032802002003280204200111000021000b200241406b240020000b1300200045044041c78f04412b20011031000b0b0bfc120100418080040bf3122f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f70616c6c65742d636f6e7472616374732d756170692d6e6578742d362e302e312f7372632f686f73742e7273000000000100720000002d000000170000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e72730000840001006a0000001a01000032000000656e636f756e746572656420756e6578706563746564206572726f72000101001c000000840001006a000000e3000000170000002f55736572732f70706f6c6f637a656b2f6769742f696e6b2d6578616d706c65732f666c69707065722f6c69622e72733401010030000000060000000500000073746f7261676520656e7472792077617320656d707479007401010017000000636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e747279009401010027000000070000000000000001000000080000004572726f72000000090000000c000000040000000a0000000b0000000c0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72736361706163697479206f766572666c6f7700006502010011000000f40101007100000021020000050000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f616c6c6f632e72736d656d6f727920616c6c6f636174696f6e206f6620206279746573206661696c6564000000ff02010015000000140301000d000000900201006f000000a20100000d0000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e7273770301006d0000006402000020000000293a0000a407010000000000f503010001000000f5030100010000000700000000000000010000000d00000070616e69636b6564206174203a0a696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973202e040100200000004e040100120000003a200000a40701000000000070040100020000003030303130323033303430353036303730383039313031313132313331343135313631373138313932303231323232333234323532363237323832393330333133323333333433353336333733383339343034313432343334343435343634373438343935303531353235333534353535363537353835393630363136323633363436353636363736383639373037313732373337343735373637373738373938303831383238333834383538363837383838393930393139323933393439353936393739383939206f7574206f662072616e676520666f7220736c696365206f66206c656e6774682072616e676520656e6420696e6465782000006e050100100000004c05010022000000736c69636520696e64657820737461727473206174202062757420656e647320617420009005010016000000a60501000d0000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e727300c405010073000000c405000025000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e677468202848060100150000005d0601002b000000f4030100010000002f55736572732f70706f6c6f637a656b2f2e7275737475702f746f6f6c636861696e732f737461626c652d616172636836342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f636f756e742e72730000a0060100720000004f00000032000000a407010000000000756e61626c6520746f206465636f64652073656c6563746f72656e636f756e746572656420756e6b6e6f776e2073656c6563746f72756e61626c6520746f206465636f646520696e707574636f756c64206e6f74207265616420696e7075747061696420616e20756e70617961626c65206d657373616765617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e282963616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c75650a00a407010000000000f2070100010000002f55736572732f70706f6c6f637a656b2f2e636172676f2f6769742f636865636b6f7574732f696e6b2d316164643531336564613866356138392f616537336430622f6372617465732f656e762f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e727300040801006b0000005c0000003b000000040801006b0000005c00000014000000040801006b0000005d0000000e000000040801006b0000005e00000034000000040801006b0000006800000009000000040801006b00000090000000210000002f55736572732f70706f6c6f637a656b2f2e636172676f2f72656769737472792f7372632f696e6465782e6372617465732e696f2d366631376432326262613135303031662f7061726974792d7363616c652d636f6465632d332e362e392f7372632f636f6465632e727300d00801006b000000770000000e000000190000001c0000001600000014000000190000002c0701004507010061070100770701008b0701", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "4.0.0-rc.2", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { "keep_debug_symbols": false, "optimization_passes": "Z" } + } + }, + "contract": { + "name": "flipper", + "version": "5.0.0-rc.1", + "authors": ["Parity Technologies "] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [{ "label": "init_value", "type": { "displayName": ["bool"], "type": 0 } }], + "default": false, + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "label": "new", + "payable": false, + "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 2 }, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "default": false, + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "label": "new_default", + "payable": false, + "returnType": { "displayName": ["ink_primitives", "ConstructorResult"], "type": 2 }, + "selector": "0x61ef7e3e" + } + ], + "docs": [], + "environment": { + "accountId": { "displayName": ["AccountId"], "type": 6 }, + "balance": { "displayName": ["Balance"], "type": 9 }, + "blockNumber": { "displayName": ["BlockNumber"], "type": 12 }, + "chainExtension": { "displayName": ["ChainExtension"], "type": 13 }, + "hash": { "displayName": ["Hash"], "type": 10 }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { "displayName": ["Timestamp"], "type": 11 } + }, + "events": [], + "lang_error": { "displayName": ["ink", "LangError"], "type": 4 }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Flips the current value of the Flipper's boolean."], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 2 }, + "selector": "0x633aa551" + }, + { + "args": [], + "default": false, + "docs": [" Returns the current value of the Flipper's boolean."], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { "displayName": ["ink", "MessageResult"], "type": 5 }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [{ "layout": { "leaf": { "key": "0x00000000", "ty": 0 } }, "name": "value" }], + "name": "Flipper" + } + }, + "root_key": "0x00000000", + "ty": 1 + } + }, + "types": [ + { "id": 0, "type": { "def": { "primitive": "bool" } } }, + { + "id": 1, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 0, + "typeName": ",>>::Type" + } + ] + } + }, + "path": ["flipper", "flipper", "Flipper"] + } + }, + { + "id": 2, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 3 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 4 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 3 }, + { "name": "E", "type": 4 } + ], + "path": ["Result"] + } + }, + { "id": 3, "type": { "def": { "tuple": [] } } }, + { + "id": 4, + "type": { + "def": { "variant": { "variants": [{ "index": 1, "name": "CouldNotReadInput" }] } }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 5, + "type": { + "def": { + "variant": { + "variants": [ + { "fields": [{ "type": 0 }], "index": 0, "name": "Ok" }, + { "fields": [{ "type": 4 }], "index": 1, "name": "Err" } + ] + } + }, + "params": [ + { "name": "T", "type": 0 }, + { "name": "E", "type": 4 } + ], + "path": ["Result"] + } + }, + { + "id": 6, + "type": { + "def": { "composite": { "fields": [{ "type": 7, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { "id": 7, "type": { "def": { "array": { "len": 32, "type": 8 } } } }, + { "id": 8, "type": { "def": { "primitive": "u8" } } }, + { "id": 9, "type": { "def": { "primitive": "u128" } } }, + { + "id": 10, + "type": { + "def": { "composite": { "fields": [{ "type": 7, "typeName": "[u8; 32]" }] } }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { "id": 11, "type": { "def": { "primitive": "u64" } } }, + { "id": 12, "type": { "def": { "primitive": "u32" } } }, + { + "id": 13, + "type": { "def": { "variant": {} }, "path": ["ink_env", "types", "NoChainExtension"] } + } + ], + "version": 5 +} diff --git a/.api-contract/src/test/contracts/ink/v5/flipper.json b/.api-contract/src/test/contracts/ink/v5/flipper.json new file mode 100644 index 00000000..291e9a93 --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v5/flipper.json @@ -0,0 +1,358 @@ +{ + "source": { + "hash": "0xaf1c6d2ea289d7d4f8753db2d658782f4d066544f3ee34b3d54272075ad0de99", + "language": "ink! 5.0.0-rc.1", + "compiler": "rustc 1.75.0", + "build_info": { + "build_mode": "Debug", + "cargo_contract_version": "4.0.0-rc.2", + "rust_toolchain": "stable-aarch64-apple-darwin", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "flipper", + "version": "5.0.0-rc.1", + "authors": ["Parity Technologies "] + }, + "image": null, + "spec": { + "constructors": [ + { + "args": [ + { + "label": "init_value", + "type": { + "displayName": ["bool"], + "type": 0 + } + } + ], + "default": false, + "docs": ["Creates a new flipper smart contract initialized with the given value."], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 2 + }, + "selector": "0x9bae9d5e" + }, + { + "args": [], + "default": false, + "docs": ["Creates a new flipper smart contract initialized to `false`."], + "label": "new_default", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 2 + }, + "selector": "0x61ef7e3e" + } + ], + "docs": [], + "environment": { + "accountId": { + "displayName": ["AccountId"], + "type": 6 + }, + "balance": { + "displayName": ["Balance"], + "type": 9 + }, + "blockNumber": { + "displayName": ["BlockNumber"], + "type": 12 + }, + "chainExtension": { + "displayName": ["ChainExtension"], + "type": 13 + }, + "hash": { + "displayName": ["Hash"], + "type": 10 + }, + "maxEventTopics": 4, + "staticBufferSize": 16384, + "timestamp": { + "displayName": ["Timestamp"], + "type": 11 + } + }, + "events": [], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 4 + }, + "messages": [ + { + "args": [], + "default": false, + "docs": [" Flips the current value of the Flipper's boolean."], + "label": "flip", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 2 + }, + "selector": "0x633aa551" + }, + { + "args": [], + "default": false, + "docs": [" Returns the current value of the Flipper's boolean."], + "label": "get", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 5 + }, + "selector": "0x2f865bd9" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 0 + } + }, + "name": "value" + } + ], + "name": "Flipper" + } + }, + "root_key": "0x00000000", + "ty": 1 + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 1, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 0, + "typeName": ",>>::Type" + } + ] + } + }, + "path": ["flipper", "flipper", "Flipper"] + } + }, + { + "id": 2, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 4 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 4 + } + ], + "path": ["Result"] + } + }, + { + "id": 3, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 4, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 5, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 0 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 4 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + }, + { + "name": "E", + "type": 4 + } + ], + "path": ["Result"] + } + }, + { + "id": 6, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 7, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 7, + "type": { + "def": { + "array": { + "len": 32, + "type": 8 + } + } + } + }, + { + "id": 8, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 9, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 10, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 7, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "Hash"] + } + }, + { + "id": 11, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 12, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 13, + "type": { + "def": { + "variant": {} + }, + "path": ["ink_env", "types", "NoChainExtension"] + } + } + ], + "version": 5 +} diff --git a/.api-contract/src/test/contracts/ink/v5/flipper.wasm b/.api-contract/src/test/contracts/ink/v5/flipper.wasm new file mode 100644 index 00000000..c359b6db Binary files /dev/null and b/.api-contract/src/test/contracts/ink/v5/flipper.wasm differ diff --git a/.api-contract/src/test/contracts/ink/v5/index.ts b/.api-contract/src/test/contracts/ink/v5/index.ts new file mode 100644 index 00000000..8e9497fa --- /dev/null +++ b/.api-contract/src/test/contracts/ink/v5/index.ts @@ -0,0 +1,8 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as erc20Contract } from './erc20.contract.json' assert { type: 'json' }; +export { default as erc20Metadata } from './erc20.json' assert { type: 'json' }; +export { default as erc20AnonymousTransferMetadata } from './erc20_anonymous_transfer.json' assert { type: 'json' }; +export { default as flipperContract } from './flipper.contract.json' assert { type: 'json' }; +export { default as flipperMetadata } from './flipper.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/solang/index.ts b/.api-contract/src/test/contracts/solang/index.ts new file mode 100644 index 00000000..e5ef0340 --- /dev/null +++ b/.api-contract/src/test/contracts/solang/index.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { createVersionedExport } from '../util.js'; +import * as v0 from './v0/index.js'; + +export default createVersionedExport({ v0 }); diff --git a/.api-contract/src/test/contracts/solang/v0/index.ts b/.api-contract/src/test/contracts/solang/v0/index.ts new file mode 100644 index 00000000..6c73b8f6 --- /dev/null +++ b/.api-contract/src/test/contracts/solang/v0/index.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as ints256 } from './ints256.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/solang/v0/ints256.json b/.api-contract/src/test/contracts/solang/v0/ints256.json new file mode 100644 index 00000000..a8384707 --- /dev/null +++ b/.api-contract/src/test/contracts/solang/v0/ints256.json @@ -0,0 +1,93 @@ +{ + "contract": { + "authors": ["Sean Young "], + "description": "Test 256 bits types", + "name": "ints256", + "version": "0.0.1" + }, + "metadataVersion": "0.1.0", + "source": { + "compiler": "solang 0.1.4", + "hash": "0xa85fb5c61a09d71dce84c15a8bd87e6f4eafac498a1aec3869e8cf7ea4389697", + "language": "Solidity 0.1.4" + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": [""], + "name": "new", + "selector": "0x861731d5" + } + ], + "events": [], + "messages": [ + { + "args": [ + { + "name": "a", + "type": { + "display_name": ["u256"], + "type": 1 + } + }, + { + "name": "b", + "type": { + "display_name": ["u256"], + "type": 1 + } + } + ], + "docs": ["Multiply two 256 bit values\n\n"], + "mutates": false, + "name": "multiply", + "payable": false, + "return_type": { + "display_name": ["u256"], + "type": 1 + }, + "selector": "0x165c4a16" + }, + { + "args": [ + { + "name": "a", + "type": { + "display_name": ["u256"], + "type": 1 + } + }, + { + "name": "b", + "type": { + "display_name": ["u256"], + "type": 1 + } + } + ], + "docs": ["Add two 256 bit values\n\n"], + "mutates": false, + "name": "add", + "payable": false, + "return_type": { + "display_name": ["u256"], + "type": 1 + }, + "selector": "0x771602f7" + } + ] + }, + "storage": { + "struct": { + "fields": [] + } + }, + "types": [ + { + "def": { + "primitive": "u256" + } + } + ] +} diff --git a/.api-contract/src/test/contracts/solang/v0/ints256.sol b/.api-contract/src/test/contracts/solang/v0/ints256.sol new file mode 100644 index 00000000..1225a6b9 --- /dev/null +++ b/.api-contract/src/test/contracts/solang/v0/ints256.sol @@ -0,0 +1,13 @@ +/// @title Test 256 bits types +/// @author Sean Young +contract ints256 { + /// Multiply two 256 bit values + function multiply(uint256 a, uint256 b) public pure returns (uint256) { + return a * b; + } + + /// Add two 256 bit values + function add(uint256 a, uint256 b) public pure returns (uint256) { + return a + b; + } +} diff --git a/.api-contract/src/test/contracts/solang/v0/ints256.wasm b/.api-contract/src/test/contracts/solang/v0/ints256.wasm new file mode 100644 index 00000000..1973316b Binary files /dev/null and b/.api-contract/src/test/contracts/solang/v0/ints256.wasm differ diff --git a/.api-contract/src/test/contracts/user/index.ts b/.api-contract/src/test/contracts/user/index.ts new file mode 100644 index 00000000..69e91c72 --- /dev/null +++ b/.api-contract/src/test/contracts/user/index.ts @@ -0,0 +1,9 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import { createVersionedExport } from '../util.js'; +import * as v0 from './v0/index.js'; +import * as v3 from './v3/index.js'; +import * as v4 from './v4/index.js'; + +export default createVersionedExport({ v0, v3, v4 }); diff --git a/.api-contract/src/test/contracts/user/v0/assetTransfer.json b/.api-contract/src/test/contracts/user/v0/assetTransfer.json new file mode 100644 index 00000000..f1d8030a --- /dev/null +++ b/.api-contract/src/test/contracts/user/v0/assetTransfer.json @@ -0,0 +1,245 @@ +{ + "contract": { + "authors": ["unknown"], + "name": "AssetTransfer", + "version": "0.0.1" + }, + "metadataVersion": "0.1.0", + "source": { + "compiler": "solang 0.1.4", + "hash": "0x7d163f445bec3d33e90d0f60bda40acd42f2760dbc1b731616af70a6001e05c7", + "language": "Solidity 0.1.4" + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": [""], + "name": "new", + "selector": "0x861731d5" + } + ], + "events": [ + { + "args": [ + { + "indexed": false, + "name": "_newUser", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + } + ], + "docs": [""], + "name": "successfulRegistration" + }, + { + "args": [ + { + "indexed": false, + "name": "sender", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + }, + { + "indexed": false, + "name": "_hexAsset", + "type": { + "display_name": ["String"], + "type": 5 + } + } + ], + "docs": [""], + "name": "addedAsset" + }, + { + "args": [ + { + "indexed": false, + "name": "sender", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + }, + { + "indexed": false, + "name": "receiver", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + }, + { + "indexed": false, + "name": "hexOfAsset", + "type": { + "display_name": ["String"], + "type": 5 + } + } + ], + "docs": [""], + "name": "assetSent" + } + ], + "messages": [ + { + "args": [ + { + "name": "_user", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + } + ], + "docs": [""], + "mutates": false, + "name": "viewBalance", + "payable": false, + "return_type": { + "display_name": ["u256"], + "type": 1 + }, + "selector": "0xc1a13d1a" + }, + { + "args": [ + { + "name": "_assetHex", + "type": { + "display_name": ["String"], + "type": 5 + } + } + ], + "docs": [""], + "mutates": false, + "name": "findOwner", + "payable": false, + "return_type": { + "display_name": ["AccountId"], + "type": 4 + }, + "selector": "0x63560a8e" + }, + { + "args": [ + { + "name": "_hexAsset", + "type": { + "display_name": ["String"], + "type": 5 + } + } + ], + "docs": [""], + "mutates": true, + "name": "addAsset", + "payable": false, + "return_type": null, + "selector": "0xa7c6b52e" + }, + { + "args": [], + "docs": [""], + "mutates": true, + "name": "receiveAsset", + "payable": false, + "return_type": { + "display_name": ["String"], + "type": 5 + }, + "selector": "0xb2f3b5bc" + }, + { + "args": [ + { + "name": "_assetHex", + "type": { + "display_name": ["String"], + "type": 5 + } + }, + { + "name": "_receiver", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + } + ], + "docs": [""], + "mutates": true, + "name": "sendAsset", + "payable": false, + "return_type": null, + "selector": "0xd6e5288f" + }, + { + "args": [ + { + "name": "_newUser", + "type": { + "display_name": ["AccountId"], + "type": 4 + } + } + ], + "docs": [""], + "mutates": true, + "name": "register", + "payable": false, + "return_type": null, + "selector": "0x4420e486" + } + ] + }, + "storage": { + "struct": { + "fields": [] + } + }, + "types": [ + { + "def": { + "primitive": "u256" + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "array": { + "len": 32, + "type": 2 + } + } + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 3 + } + ] + } + }, + "path": ["AccountId"] + }, + { + "def": { + "primitive": "str" + } + } + ] +} diff --git a/.api-contract/src/test/contracts/user/v0/assetTransfer.wasm b/.api-contract/src/test/contracts/user/v0/assetTransfer.wasm new file mode 100644 index 00000000..516f7698 Binary files /dev/null and b/.api-contract/src/test/contracts/user/v0/assetTransfer.wasm differ diff --git a/.api-contract/src/test/contracts/user/v0/enumExample.json b/.api-contract/src/test/contracts/user/v0/enumExample.json new file mode 100644 index 00000000..02d7dcfb --- /dev/null +++ b/.api-contract/src/test/contracts/user/v0/enumExample.json @@ -0,0 +1,496 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0x1a37c380fe02fe3b670480dff1393b0401788955315d092e39fcc06047f1413c", + "language": "ink! 3.0.0-rc2", + "compiler": "rustc 1.49.0-nightly" + }, + "contract": { + "name": "enum_example", + "version": "0.1.0", + "authors": ["[your_name] <[your_email]>"] + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": [], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [], + "messages": [ + { + "args": [ + { + "name": "variant", + "type": { + "displayName": ["Variant"], + "type": 4 + } + } + ], + "docs": [], + "mutates": true, + "name": ["set_variant"], + "payable": false, + "returnType": null, + "selector": "0x4fa6b9cf" + }, + { + "args": [], + "docs": [], + "mutates": false, + "name": ["get_variant"], + "payable": false, + "returnType": { + "displayName": ["Variant"], + "type": 4 + }, + "selector": "0x1d5962d1" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0000000000000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [] + }, + "1": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0100000000000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [] + }, + "1": { + "fields": [] + }, + "2": { + "fields": [] + }, + "3": { + "fields": [] + }, + "4": { + "fields": [] + }, + "5": { + "fields": [] + }, + "6": { + "fields": [] + } + } + } + }, + "name": null + } + ] + }, + "2": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0100000000000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": null + } + ] + }, + "1": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": null + } + ] + } + } + } + }, + "name": null + } + ] + }, + "3": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0100000000000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "value" + } + ] + }, + "1": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "value" + } + ] + } + } + } + }, + "name": null + } + ] + }, + "4": { + "fields": [ + { + "layout": { + "enum": { + "dispatchKey": "0x0100000000000000000000000000000000000000000000000000000000000000", + "variants": { + "0": { + "fields": [] + }, + "1": { + "fields": [] + }, + "2": { + "fields": [] + }, + "3": { + "fields": [] + }, + "4": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "r" + }, + { + "layout": { + "cell": { + "key": "0x0300000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "g" + }, + { + "layout": { + "cell": { + "key": "0x0400000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "b" + } + ] + }, + "5": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "r" + }, + { + "layout": { + "cell": { + "key": "0x0300000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "g" + }, + { + "layout": { + "cell": { + "key": "0x0400000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "b" + }, + { + "layout": { + "cell": { + "key": "0x0500000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "a" + } + ] + } + } + } + }, + "name": null + } + ] + } + } + } + }, + "name": "last" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "i32" + } + }, + { + "def": { + "primitive": "u32" + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "None" + }, + { + "fields": [ + { + "type": 5 + } + ], + "name": "Weekday" + }, + { + "fields": [ + { + "type": 6 + } + ], + "name": "TupleMaybeSigned" + }, + { + "fields": [ + { + "type": 7 + } + ], + "name": "NamedMaybeSigned" + }, + { + "fields": [ + { + "type": 8 + } + ], + "name": "Color" + } + ] + } + }, + "path": ["enum_example", "enum_example", "Variant"] + }, + { + "def": { + "variant": { + "variants": [ + { + "discriminant": 0, + "name": "Monday" + }, + { + "discriminant": 1, + "name": "Tuesday" + }, + { + "discriminant": 2, + "name": "Wednesday" + }, + { + "discriminant": 3, + "name": "Thursday" + }, + { + "discriminant": 4, + "name": "Friday" + }, + { + "discriminant": 5, + "name": "Saturday" + }, + { + "discriminant": 6, + "name": "Sunday" + } + ] + } + }, + "path": ["enum_example", "enum_example", "Weekday"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 1 + } + ], + "name": "Signed" + }, + { + "fields": [ + { + "type": 2 + } + ], + "name": "Unsigned" + } + ] + } + }, + "path": ["enum_example", "enum_example", "TupleMaybeSigned"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "name": "value", + "type": 1 + } + ], + "name": "Signed" + }, + { + "fields": [ + { + "name": "value", + "type": 2 + } + ], + "name": "Unsigned" + } + ] + } + }, + "path": ["enum_example", "enum_example", "NamedMaybeSigned"] + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "Red" + }, + { + "name": "Blue" + }, + { + "name": "Green" + }, + { + "name": "Yellow" + }, + { + "fields": [ + { + "name": "r", + "type": 3 + }, + { + "name": "g", + "type": 3 + }, + { + "name": "b", + "type": 3 + } + ], + "name": "Rgb" + }, + { + "fields": [ + { + "name": "r", + "type": 3 + }, + { + "name": "g", + "type": 3 + }, + { + "name": "b", + "type": 3 + }, + { + "name": "a", + "type": 3 + } + ], + "name": "Rgba" + } + ] + } + }, + "path": ["enum_example", "enum_example", "Color"] + } + ] +} diff --git a/.api-contract/src/test/contracts/user/v0/enumExample.wasm b/.api-contract/src/test/contracts/user/v0/enumExample.wasm new file mode 100644 index 00000000..5cbe4bf9 Binary files /dev/null and b/.api-contract/src/test/contracts/user/v0/enumExample.wasm differ diff --git a/.api-contract/src/test/contracts/user/v0/index.ts b/.api-contract/src/test/contracts/user/v0/index.ts new file mode 100644 index 00000000..0837c3e2 --- /dev/null +++ b/.api-contract/src/test/contracts/user/v0/index.ts @@ -0,0 +1,7 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as assetTransfer } from './assetTransfer.json' assert { type: 'json' }; +export { default as enumExample } from './enumExample.json' assert { type: 'json' }; +export { default as recursive } from './recursive.contract.json' assert { type: 'json' }; +export { default as withString } from './withString.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/user/v0/recursive.contract.json b/.api-contract/src/test/contracts/user/v0/recursive.contract.json new file mode 100644 index 00000000..a8e64a5b --- /dev/null +++ b/.api-contract/src/test/contracts/user/v0/recursive.contract.json @@ -0,0 +1,70 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xdb5366415b71e5d52af252f2be5f955f1272b7f1ec0ce3493b7a9404b3b9119c", + "language": "ink! 3.0.0-rc5", + "compiler": "rustc 1.57.0-nightly", + "wasm": "0x0061736d0100000001620f60037f7f7f017f60027f7f017f60027f7f0060037f7f7f0060017f017f60057f7f7f7f7f0060047f7f7f7f0060000060017f017e60017f0060047f7f7f7f017f60067f7f7f7f7f7f006000017f60057f7f7f7f7f017f60077f7f7f7f7f7f7f017f02a30107057365616c30107365616c5f6765745f73746f726167650000057365616c30107365616c5f7365745f73746f726167650003057365616c30167365616c5f76616c75655f7472616e736665727265640002057365616c30127365616c5f64656275675f6d6573736167650001057365616c300a7365616c5f696e7075740002057365616c300b7365616c5f72657475726e000303656e76066d656d6f727902010210034e4d020204030205020309030c0802020407040700090100000301020107020103010206080d010a060a030b0302040601010303000101000505050501010e01010001010401010101040101010600040501700121210608017f01418080040b071102066465706c6f7900150463616c6c00170926010041010b203534254e233941494a250e4f0e500e1c1e200e4b0e280e3b43440e4546470e4c0a9c744db50301027f230041d0006b22022400200241286a200141186a290300370300200241206a200141106a290300370300200241186a200141086a2903003703002002420137033020022001290300370310200241808001360244200241fabf04360240200241808001360248200241106a41fabf04200241c8006a10002101200241406b2002280248100702400240200110082201410b47044020014103460d0141d48304411c41f083041009000b20022002290340370348200241086a200241c8006a100a2002280208450d01200241003a0048418080044127200241c8006a41c0810441888104100b000b230041306b220024002000411736020c200041988104360208200041246a410136020020004201370214200041e88e043602102000410236022c2000200041286a3602202000200041086a360228200041106a41b081041026000b2002200228020c220336023c2002413c6a21010340200128020022010d000b200020022903103703082000200336022820004201370300200041206a200241286a290300370300200041186a200241206a290300370300200041106a200241186a290300370300200241d0006a24000b2301017f2001200028020422024b04402001200241c0bb041030000b200020013602040b2001017f410a2101200041094d047f200041027441c8bf046a28020005410a0b0b4601017f230041206b22032400200341146a410036020020034188be04360210200342013702042003200136021c200320003602182003200341186a360200200320021026000b850101037f230041106b22022400200241086a20011012410121030240024020022d00084101710d00410021030240024020022d00090e020201000b410121030c010b20022001100a4101210320022802000d002002280204210110102204450d0120042001360200410021030b2000200436020420002003360200200241106a24000f0b000b7c01017f230041406a220524002005200136020c2005200036020820052003360214200520023602102005412c6a41023602002005413c6a41013602002005420237021c2005418cbe04360218200541023602342005200541306a3602282005200541106a3602382005200541086a360230200541186a20041026000ba20101017f230041406a22022400200241206a200141186a290300370300200241186a200141106a290300370300200241106a200141086a2903003703002002420137032820022001290300370308200041286a220021010340200128020022010d000b200241386a41808001360200200241fabf04360234200241003602302002200241306a2000100d200241086a200228020020022802041001200241406b24000ba30102037f017e230041106b22032400200129020421062003410036020820032006370300034020022802000440200341011013200228020021020c010b0b2003410010132001410036020820014188be04360204200328020422052003280208220249044041a8b804412341b8b9041009000b200328020021042001200520026b3602082001200220046a3602042000200236020420002004360200200341106a24000b0300010b3c01017f230041106b22032400200041ff01714108460440200341106a24000f0b200320003a000f200120022003410f6a41d08104419c8604100b000b6e01037f024041f0bf04280200220041046a22012000490d0041f0bf0441f4bf04280200200149047f410140002200417f46200041ffff0371200047720d0120004110742200418080046a22012000490d0141f4bf04200136020020004104720520010b360200200021020b20020b9c0102027f017e230041106b220124002001420037030841042102027f02400340200241084604402001410436020820012903082203a741044f0d0241e08104411b41dc82041009000b20012000101220012d0000410171450440200141086a20026a20012d00013a0000200241016a21020c010b0b4101210241000c010b410021022003422088a70b2100200141106a24002002ad2000ad420886840b3f01027f230041106b22022400200241003a000f200020012002410f6a410110182201047f41000520022d000f0b3a0001200020013a0000200241106a24000b3901027f20002802082202200028020422034904402000200241016a360208200028020020026a20013a00000f0b2002200341c8ba04102e000b2601017f2000280200220145044041000f0b10102200044020002001101436020020000f0b000b12004100101641ff017141a485044122100f0b8d0502057f017e230041e0006b220124000240027f2000450440200141808001360244200141fabf04360240200141406b1019200120012903403703104106200141106a10114281feffffff1f834280b6baede90b520d011a2001410036023820014200370310200141d8006a4200370300200141d0006a4200370300200141c8006a420037030020014200370340200141106a200141406b100c41080c010b200141808001360244200141fabf04360240200141406b101920012001290340370310410121000240200141106a10112206a722044101710d00200642ffffffffff1f832206422088a721052006421888a721032006421088a72102200441087641ff01712204412f470440200441e80147200241ff017141c4014772200341ff017141de0047200541b6014772720d012001200141106a100a20012802000d012001280204210341002102410021000c010b200241ff017141860147200341ff017141db004772200541d90147720d0041002100410121020b410620000d001a20024101710d01200141d8006a4200370300200141d0006a4200370300200141c8006a420037030020014200370340200141106a200141406b1006200141386a21000340200028020022000d000b20012003360238200141106a200141406b100c41080b200141e0006a24000f0b200141d8006a4200370300200141d0006a4200370300200141c8006a420037030020014200370340200141106a200141406b10062001200141386a101436020c230041106b2200240020002001410c6a36020c2000410c6a2802002101230041206b22002400200041186a41808001360200200041fabf0436021420004100360210200041086a200041106a2001100d41002000280208200028020c1005000bca0102037f027e230041206b22002400200041808001360204200041fabf0436020020004180800136021041fabf04200041106a100220002000280210100720002000290300370308200041186a2201420037030020004200370310200041086a200041106a41101018220245044020002903102104200129030021030b20020440200041003a0010418084044134200041106a41c0810441948504100b000b410841072003200484501b41ac860441c300100f4101101641ff017141ef8604411b100f200041206a24000bd10101057f230041106b220324000240200028020422042002492205450440200341086a41002002200028020022061051200328020c22072002470d0120012003280208200210521a20032002200420061051200020032903003702000b200341106a240020050f0b230041306b2200240020002007360204200020023602002000411c6a41023602002000412c6a41033602002000420337020c200041c89904360208200041033602242000200041206a360218200020003602282000200041046a360220200041086a41f898041026000b3301017f230041106b220124002001200028020436020c20002802002001410c6a10042000200128020c1007200141106a24000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a418c8704200241086a101b200241206a24000bfc0301057f230041406a22032400200341346a2001360200200341033a00382003428080808080043703182003200036023041002101200341003602282003410036022002400240024020022802082200450440200241146a28020041ffffffff0171220641016a210520022802102104410021000340200541016b2205450d02200228020020006a220141046a28020022070440200328023020012802002007200328023428020c1100000d040b200020046a2101200041086a21002001280200200341186a200141046a280200110100450d000b0c020b2002410c6a28020022064105742105200641ffffff3f71210603402005450d01200228020020016a220441046a28020022070440200328023020042802002007200328023428020c1100000d030b200320002d001c3a003820032000290204422089370318200341106a20022802102204200041146a103620032003290310370320200341086a20042000410c6a103620032003290308370328200141086a2101200541206b210520002802002107200041206a2100200420074103746a2204280200200341186a2004280204110100450d000b0c010b4100210020062002280204492201450d012003280230200228020020064103746a410020011b22012802002001280204200328023428020c110000450d010b410121000b200341406b240020000b0f00200028020020012002101d41000b3f01017f20002002101f2000280208220320002802006a2001200210521a2003200220036a22014b044041b08704411c41d48b041009000b200020013602080bb90201027f230041106b22022400024002400240200028020022002002410c6a027f02400240200141ff004d0440200028020822032000280204460d010c040b2002410036020c2001418010490d0120014180800449044020022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040c020b20004101101f200028020821030c020b20022001413f71418001723a000d2002200141067641c001723a000c41020b101d0c010b200028020020036a20013a0000200341016a22012003490d01200020013602080b200241106a240041000f0b41b08704411c41c48b041009000bc50301077f230041106b22052400024002400240200120002802042207200028020822026b4b0440200120026a22012002490d03200720076a22032007490d022000280200410020071b210841002102230041106b220624002005027f2003200120012003491b22014108200141084b1b220141004e0440027f0240200804402007450440200641086a2001102220062802082104200628020c0c030b200141f0bf04280200220320016a22022003490d021a41f4bf042802002002490440200141ffff036a22042001490d02200441107640002202417f46200241ffff0371200247720d022002411074220320044180807c716a22022003490d024100210441f4bf0420023602002001200120036a22022003490d031a0b41f0bf04200236020020012003450d021a2003200820071052210420010c020b2006200110222006280200210420062802040c010b4100210420010b2102200404402005200436020441000c020b20052001360204410121020b41010b360200200541086a2002360200200641106a240020052802004101460d01200020052902043702000b200541106a24000f0b200541086a280200450d01000b41808a04412141a48a041009000b1021000b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a101a200241206a24000b0f0041b48a04411141c88a041009000bb90101037f2001047f230041106b22042400027f410041f0bf04280200220220016a22032002490d001a024041f4bf042802002003490440200141ffff036a22022001490d012002411076220340002202417f46200241ffff0371200247720d012002411074220220034110746a22032002490d0141f4bf0420033602004100200120026a22032002490d021a0b41f0bf04200336020020020c010b41000b200441106a24000541010b210220002001360204200020023602000b0e0020002802001a03400c000b000b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41033602002003420237020c200341e49704360208200341033602242003200341206a3602182003200341046a36022820032003360220200341086a20021026000bf30202037f027e027f20003502002105230041306b220324004127210002400240024003402005428fce005804402005a7220241e3004a0d020c030b2000200041046b22004c0d0320054290ce00802106200341096a20006a20054290ce0082a7220241e4006e41017441c292046a2f00003b00002000200041026a22044c0440200341096a20046a200241e4007041017441c292046a2f00003b0000200621050c010b0b41a08c04411c41f4ae041009000b2000200041026b22004c0d01200341096a20006a2005a741ffff0371220241e4007041017441c292046a2f00003b0000200241e4006e21020b02402002410a4e04402000200041026b22004c0d02200341096a20006a200241017441c292046a2f00003b00000c010b2000200041016b22004c0d01200341096a20006a200241306a3a00000b412720006b220241274b04400c010b20014188be044100200341096a20006a20021029200341306a24000c010b41f08b04412141f4ae041009000b0bfb0301077f230041106b220224002002200136020c200220003602082002418c8f0436020420024188be04360200230041406a220324002003200236020c200341346a410136020020034202370224200341ccb9043602202003410436023c2003200341386a36023020032003410c6a360238200341106a210641002101230041206b22042400200341206a220528020422074103742102200528020022082100024002400240024002400340200204402001200120002802046a22014b0d02200241086b2102200041086a21000c010b0b02400240200541146a280200450440200121000c010b02402007450d0020082802040d004100210220014110490d020b41002102200120016a22002001490d010b200022024100480d020b20042002102220042802002200450d0220042802042101200641003602082006200036020020062001360204200441186a200541106a290200370300200441106a200541086a290200370300200420052902003703082006200441086a101a0d03200441206a24000c040b41b08704411c41e4ae041009000b1021000b000b41dc87044133200441086a41cc870441f88804100b000b2003280210210020032802182101024041f8bf042d000045044041f9bf042d00004101710d010b2000200110031008410947044041f8bf0441013a00000b41f9bf0441013a00000b000b3001017f2002200220016b22044f0440200020043602042000200120036a3602000f0b41f08b044121418cbf041009000b0c0042fbe3b7f3e291cedb280b9b0401077f230041106b22072400418080c40021092004210502402000280200220a410171450d002004200441016a22054d0440412b21090c010b41a08c04411c419095041009000b0240024002400240200a41047145044041002101200521060c010b2001200120026a102a20056a22062005490d010b41012105200028020841014704402000200920012002102b0d032000280218200320042000411c6a28020028020c11000021050c030b024002402000410c6a280200220820064b0440200a4108710d01200820066b220620084b0d022007200020064101102c20072802002206418080c400460d05200728020421082000200920012002102b0d0520002802182201200320042000411c6a280200220028020c1100000d052006200820012000102d21050c050b2000200920012002102b0d042000280218200320042000411c6a28020028020c11000021050c040b2000280204210a2000413036020420002d0020210b200041013a00202000200920012002102b0d03200820066b220120084b0d02200741086a200020014101102c20072802082201418080c400460d03200728020c210220002802182206200320042000411c6a280200220328020c1100000d032001200220062003102d0d032000200b3a00202000200a360204410021050c030b41f08b04412141c095041009000b41a08c04411c41a095041009000b41f08b04412141b095041009000b200741106a240020050b4201017f02400340200020014704402002200220002d000041c00171418001476a22024b0d02200041016a21000c010b0b20020f0b41a08c04411c41e4ae041009000b4b000240027f2001418080c4004704404101200028021820012000411c6a2802002802101101000d011a0b20020d0141000b0f0b2000280218200220032000411c6a28020028020c1100000bb20101027f20022105024002400240200320012d0020220320034103461b41ff017141016b0e03010001020b2002200241016a22034d044020034101762105200241017621040c020b41a08c04411c41d095041009000b41002105200221040b200441016a21022001411c6a2802002103200128020421042001280218210102400340200241016b2202450d01200120042003280210110100450d000b418080c40021040b20002005360204200020043602000b3201017f027f0340200120012004460d011a200441016a2104200220002003280210110100450d000b200441016b0b2001490b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41033602002003420237020c200341f08f04360208200341033602242003200341206a360218200320033602282003200341046a360220200341086a20021026000bb70101017f230041106b220624000240200120024d0440200220044d0d012002200420051030000b230041306b2200240020002002360204200020013602002000411c6a41023602002000412c6a41033602002000420237020c200041b89804360208200041033602242000200041206a3602182000200041046a36022820002000360220200041086a20051026000b200641086a2001200220031027200020062802083602002000200628020c360204200641106a24000b6b01017f230041306b2203240020032001360204200320003602002003411c6a41023602002003412c6a41033602002003420237020c200341849804360208200341033602242003200341206a3602182003200341046a36022820032003360220200341086a20021026000b880101047f200141086a28020021022001280204210402400240200141046a10322205418080c400470440200220046b2203200128020420012802086b6a220220034b0d012001280200220320026a22022003490d02200120023602000b20002005360204200020033602000f0b41f08b04412141cc9a041009000b41a08c04411c41dc9a041009000bf00101057f2000280200220120002802042203460440418080c4000f0b2000200141016a220236020020012d00002204411874411875417f4c047f027f200220034604402003210241000c010b2000200141026a220236020020012d0001413f710b21012004411f712105200441df014d044020012005410674720f0b2001410674027f200220034604402003210141000c010b2000200241016a220136020020022d0000413f710b722102200441f00149044020022005410c74720f0b2001200346047f4100052000200141016a36020020012d0000413f710b2005411274418080f00071200241067472720520040b0b3f01017f024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b200221040b20002001360204200020043602000b9e0301067f230041306b2202240020012802102105200028020421042000280200210302400240024020012802082206410147044020050d012001280218200320042001411c6a28020028020c11000021000c030b2005450d010b200141146a28020020022003360224200241286a200320046a3602002002410036022041016a210002400340200041016b22000440200241186a200241206a1031200228021c418080c400470d010c020b0b200241106a200241206a10312002280214418080c400460d00200241086a2002280210200320041033200228020c2004200228020822001b21042000200320001b21030b20060d002001280218200320042001411c6a28020028020c11000021000c010b2001410c6a28020022002003200320046a102a22054d04402001280218200320042001411c6a28020028020c11000021000c010b20022001200020056b4100102c4101210020022802002205418080c400460d002002280204210620012802182207200320042001411c6a280200220128020c1100000d002005200620072001102d21000b200241306a240020000b140020002802002001200028020428020c1101000b5501027f0240027f02400240200228020041016b0e020103000b200241046a0c010b200120022802044103746a22012802044105470d0120012802000b2802002104410121030b20002004360204200020033602000b2c0020024181014f0440200241800141b092041024000b200041800120026b3602042000200120026a3602000b4901017f230041206b22032400200341186a200241106a290200370300200341106a200241086a2902003703002003200229020037030820002001200341086a101b200341206a24000b6c01027f230041206b2202240041012103024020002001103a0d002002411c6a410036020020024188be043602182002420137020c200241988d04360208200141186a2802002001411c6a280200200241086a10380d00200041046a2001103a21030b200241206a240020030b850201037f23004190016b22022400027f02402001280200220341107145044020034120710d012000200110250c020b2000280200210041ff0021030340200241106a20036a413041d7002000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b200241086a200241106a200341016a1037200141c0920441022002280208200228020c10290c010b2000280200210041ff0021030340200241106a20036a413041372000410f712204410a491b20046a3a0000200341016b21032000410f4b200041047621000d000b2002200241106a200341016a1037200141c0920441022002280200200228020410290b20024190016a24000bca08010d7f230041e0006b22032400200341d8006a210e2000280204210c2000280200210d2000280208210a024003402002450d010240200a2d00000440200d419c90044104200c28020c1100000d010b2003410a3602582003428a808080103703502003200236024c41002100200341003602482003200236024420032001360240200222052106200121040340200341386a2004200620002005103c024002400240024002400240024020032802382207450d00024002402003280254220041016b220420004d0440200320046a41d8006a2d00002108200328023c220641084f0440200741036a417c7120076b2204450440410021050c030b41002100200341306a410020062004200420064b1b22052007200641d09604102f200328023421092003280230210b034020002009460d032000200b6a2d00002008460d042000200041016a22044d0440200421000c010b0b41a08c04411c41f0af041009000b41002100034020002006460d04200020076a2d00002008460d03200041016a21000c000b000b41f08b04412141dc9d041009000b02402006200641086b22044f0440200841818284086c21000c010b41f08b04412141e096041009000b02400340024020042005490d00200541046a22092005490d06200520076a280200200073220b417f73200b41818284086b71200720096a2802002000732209417f73200941818284086b7172418081828478710d002005200541086a22054d0d010c020b0b200520064b0d05200341286a200520062007102741002100200328022c2106200328022821070240034020002006460d04200020076a2d00002008460d012000200041016a22044d0440200421000c010b0b41a08c04411c41f0af041009000b200020056a220020054f0d0141a08c04411c41a097041009000b41a08c04411c418097041009000b2000200041016a22044b0d042004200328024822046a22002004490d0520032000360248200020032802542204490d06200341206a20032802402003280244200020046b22062000103c20032802202200450d0620032802242104200341186a41002003280254200e4104418c9e04102f2004200328021c470d06027f20032802182105034041002004450d011a200441016b210420052d0000210720002d00002108200041016a2100200541016a210520072008460d000b200820076b0b0d06200a41013a0000200641016a220020064f0d0141a08c04411c419091041009000b200a41003a0000200221000b200341106a20002001200241a09104103d200d20032802102003280214200c28020c1100000d06200341086a20002001200241b09104103e200328020c2102200328020821010c070b41a08c04411c41f096041009000b20052006419097041024000b41a08c04411c41ec9d041009000b41a08c04411c41fc9d041009000b200328024c21052003280248210020032802442106200328024021040c000b000b0b4101210f0b200341e0006a2400200f0b4c01037f230041106b220524002002200449200320044b72450440200541086a2003200420011027200528020c2107200528020821060b2000200736020420002006360200200541106a24000b4e01027f230041106b22052400200541086a20012002200310332005280208220645044020022003410020012004103f000b200528020c21012000200636020020002001360204200541106a24000b6400024002402001450d00200120034f044020012003460d010c020b200120026a2c00004140480d010b2003200320016b220449044041f08b04412141d89b041009000b200020043602042000200120026a3602000f0b20022003200120032004103f000baf0601027f23004180016b220524002005200336021c200520023602182005027f024020014181024f0440418002210603402006450440410021060c030b200020066a2c000041bf7f4a0d02200641016b21060c000b000b200520013602242005200036022020054188be0436022841000c010b200541106a20062000200141dc9c04103d200520052903103703202005419c9e0436022841050b36022c024020012002492206200120034972450440200220034d0440024002402002450d00200120024d044020012002460d010c020b200020026a2c00004140480d010b200321020b2005200236023003400240024002402002450440410021020c010b200120024d044020012002470d02200121020c010b200020026a2c00004140480d010b200541086a2002200020012004103e20052005280208220036025820052000200528020c6a36025c2005200541d8006a1032200410402201360234027f41012001418001490d001a41022001418010490d001a41034104200141808004491b0b20026a220020024f0d0141a08c04411c20041009000b200241016b21020c010b0b2005200036023c20052002360238200541d4006a4105360200200541fc006a4102360200200541f4006a4102360200200541ec006a4106360200200541e4006a410736020020054205370244200541d49f043602402005410336025c2005200541d8006a3602502005200541286a3602782005200541206a3602702005200541386a3602682005200541346a3602602005200541306a3602580c020b200541f4006a4102360200200541ec006a4102360200200541e4006a4103360200200541d4006a410436020020054204370244200541809f043602402005410336025c2005200541d8006a3602502005200541286a3602702005200541206a36026820052005411c6a3602602005200541186a3602580c010b20052002200320061b360238200541d4006a4103360200200541ec006a4102360200200541e4006a410236020020054203370244200541c49e043602402005410336025c2005200541d8006a3602502005200541286a3602682005200541206a3602602005200541386a3602580b200541406b20041026000b1a002000418080c40046044041bc8e04412b20011009000b20000b860a02087f017e4101210602402001280218220741272001411c6a28020028021022081101000d0041f4002103410221010240027f02400240027f0240024002402000280200220241096b0e050704010105000b2002412746200241dc0046720d010b2002410b74210541002101411f2100411f21040240027e024002400240024002400240024002400240024002400340200020014d0d02200120044101766a22032001490d030240200520034102744180b0046a280200410b7422044d044020042005460d03200321000c010b200341016a22012003490d050b200020016b220420004d0d000b41f08b04412141e898041009000b200341016a21010b2001411e4b0d02200141027422034180b0046a280200411576210002402001411e47044020034184b0046a280200411576220320006b220420034d0d0141f08b0441214190ad041009000b41b10520006b220441b2054f0d040b4100210320022001200141016b22054f047f2005411f4f0d0520054102744180b0046a28020041ffffff00710541000b6b220920024b0d05200441016b220120044b0d06200041b105200041b1054b1b2105200020046a41016b2103410021040240024003400240024002402001047f20002005460d0e20042004200041fcb0046a2d00006a22044b0d01200420094d0d0220000520030b4101710d0e200241808004490d022002418080084f0d04200241d9a604412641a5a70441af0141d4a80441a30310420d100c050b41a08c04411c41d0ad041009000b200141016b2101200041016a21000c010b0b200241b0a10441294182a20441a20241a4a40441b5021042450d010c0c0b200241decd0a6b412249200241b5ee0a6b410b4972200241feffff0071419ef00a46200241a29d0b6b410e497272200241e1d70b6b419f18492002419ef40b6b41e20b4972200241cba60c6b41b5db2b4972720d00200241f08338490d0b0b200241017267410276410773ad4280808080d000840c090b41a08c04411c41c898041009000b41a08c04411c41d898041009000b2001411f41f0ac04102e000b41f08b0441214180ad041009000b2005411f41e0ad04102e000b41f08b04412141a0ad041009000b41f08b04412141b0ad041009000b200541b10541c0ad04102e000b200241017267410276410773ad4280808080d000840b210a41032101200221030c060b41010c010b41020b2101200221030c030b41ee000c010b41f2000b21030b0240034002402001210241002101200321000240024002400240200241016b0e03030200010b02400240024002400240200a422088a741ff017141016b0e050004010203050b200a42ffffffff8f6083210a41fd002100410321010c060b200a42ffffffff8f608342808080802084210a41fb002100410321010c050b200a42ffffffff8f608342808080803084210a41f5002100410321010c040b200a42ffffffff8f60834280808080c00084210a41dc002100410321010c030b200aa7220141ffffffff03712001470d032001410274220041204f0d0520032000411c7176410f712200413072200041d7006a2000410a491b41ac8e04104021002001450440200a42ffffffff8f608342808080801084210a410321010c030b200a42808080807083200a42017d42ffffffff0f8384210a410321010c020b20074127200811010021060c050b41dc002100410121010b200720002008110100450d010c030b0b41c08c044121418c8e041009000b41f08c044124419c8e041009000b20060bfa0201067f230041106b22072400200120024101746a210c20004180fe0371410876210a410021020240024002400240034002402001200c470440200220012d00016a22082002490d04200141026a210b20012d00002209200a460d01200b2101200821022009200a4d0d020b200520066a2104200041ffff0371210241012103034020042005460d03200541016a210020052d000022014118744118752206410048044020002004460d0620052d0001200641ff0071410874722101200541026a21000b200141004a2002200220016b22024a730d0620024100480d0320034101732103200021050c000b000b200741086a20022008200320044180a104102f20072802082102200728020c210103402001450440200b2101200821020c020b200141016b210120022d0000200241016a2102200041ff0171470d000b0b410021030b200741106a240020034101710f0b41a08c04411c41f0a0041009000b41bc8e04412b4190a1041009000b41f08b04412141a0a1041009000be30101017f230041106b220224002002410036020c20002002410c6a027f0240024020014180014f04402001418010490d012001418080044f0d0220022001413f71418001723a000e20022001410c7641e001723a000c20022001410676413f71418001723a000d41030c030b200220013a000c41010c020b20022001413f71418001723a000d2002200141067641c001723a000c41020c010b20022001413f71418001723a000f2002200141127641f001723a000c20022001410676413f71418001723a000e20022001410c76413f71418001723a000d41040b103b200241106a24000b5501017f230041206b2202240020022000360204200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241046a418c9404200241086a101b200241206a24000b0d00200028020020012002103b0b0b002000280200200110430b4a01017f230041206b220224002000280200200241186a200141106a290200370300200241106a200141086a29020037030020022001290200370308200241086a1044200241206a24000b940101027f20002d00082101200028020422020440200141ff017121012000027f410120010d001a024020024101470d0020002d0009450d00200028020022022d00004104710d004101200228021841c5910441012002411c6a28020028020c1100000d011a0b2000280200220128021841c6910441012001411c6a28020028020c1100000b22013a00080b200141ff01714100470b5b01027f230041206b220224002001411c6a28020021032001280218200241186a2000280200220041106a290200370300200241106a200041086a290200370300200220002902003703082003200241086a101b200241206a24000b0b002000280200200110340b4900230041106b220024002000200128021841c1bf0441052001411c6a28020028020c1100003a000820002001360200200041003a00092000410036020420001048200041106a24000b4900230041106b220024002000200128021841adb604410b2001411c6a28020028020c1100003a000820002001360200200041003a00092000410036020420001048200041106a24000b1b00200028021841c1bf0441052000411c6a28020028020c1100000bfe0201037f230041406a2202240020002802002103410121000240200141186a2802002204419c8f04410c2001411c6a280200220128020c1100000d0002402003280208220004402002200036020c410121002002413c6a41013602002002420237022c200241ac8f04360228200241083602142002200241106a36023820022002410c6a36021020042001200241286a1038450d010c020b20032802002200200328020428020c11080042f4f99ee6eea3aaf9fe00520d002002200036020c410121002002413c6a41013602002002420237022c200241ac8f04360228200241093602142002200241106a36023820022002410c6a36021020042001200241286a10380d010b200328020c2100200241246a41033602002002413c6a410a360200200241346a410a36020020024203370214200241f48e0436021020022000410c6a3602382002200041086a3602302002410236022c200220003602282002200241286a36022020042001200241106a103821000b200241406b240020000bc60701017f230041d0006b22022400027f0240024002400240024002400240024002400240024020002d000041016b0e0a0102030405060708090a000b200128021841debc0441062001411c6a28020028020c1100002100200241003a001120022001360208027f410120000d001a20012d00004104714504404101200128021841c491044101200128021c28020c1100000d011a2001104d0c010b4101200128021841c291044102200128021c28020c1100000d001a20012802002100200241013a0027200241c4006a41849004360200200241206a200241276a3602002002200036022820022001290218370318200220012d00203a00482002200128020436022c20022001290210370338200220012902083703302002200241186a3602404101200241286a104d0d001a200228024041c091044102200228024428020c1100000b21002002410136020c200220003a0010200241086a10480c0a0b2002200128021841d1bc04410d2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c090b2002200128021841c3bc04410e2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c080b2002200128021841b8bc04410b2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c070b20022001280218419fbc0441192001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c060b200220012802184191bc04410e2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c050b2002200128021841fdbb0441142001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c040b2002200128021841f1bb04410c2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c030b2002200128021841e6bb04410b2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c020b2002200128021841dfbb0441072001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480c010b2002200128021841d0bb04410f2001411c6a28020028020c1100003a003020022001360228200241003a00312002410036022c200241286a10480b200241d0006a24000bd80201017f230041106b2202240002400240024002400240024002400240024020002d000041016b0e0701020304050607000b2002200128021841f8bd04410f2001411c6a28020028020c1100003a00080c070b2002200128021841debd04411a2001411c6a28020028020c1100003a00080c060b2002200128021841cbbd0441132001411c6a28020028020c1100003a00080c050b2002200128021841babd0441112001411c6a28020028020c1100003a00080c040b20022001280218419ebd04411c2001411c6a28020028020c1100003a00080c030b200220012802184189bd0441152001411c6a28020028020c1100003a00080c020b2002200128021841f8bc0441112001411c6a28020028020c1100003a00080c010b2002200128021841e4bc0441142001411c6a28020028020c1100003a00080b20022001360200200241003a00092002410036020420021048200241106a24000b3001017f2002200220016b22044f0440200020043602042000200120036a3602000f0b41a0bf044121418cbf041009000b2b01017f03402002200346450440200020036a200120036a2d00003a0000200341016a21030c010b0b20000b0bcf3f0700418080040ba107636f756c64206e6f742070726f7065726c79206465636f64652073746f7261676520656e7472792f55736572732f746d2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f73746f726167652d332e302e302d7263352f7372632f7472616974732f6d6f642e727327000100610000008f0000000a00000073746f7261676520656e7472792077617320656d707479002700010061000000900000000a0000000b00000001000000010000000c0000000d00000001000000010000000e0000005765206465636f646520604e6020656c656d656e74733b207165642f55736572732f746d2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f7061726974792d7363616c652d636f6465632d322e332e312f7372632f636f6465632e72730000fb0001005f000000cd020000170000002f55736572732f746d2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d332e302e302d7263352f7372632f656e67696e652f6f6e5f636861696e2f696d706c732e7273656e636f756e746572656420756e6578706563746564206572726f726c01010068000000e900000017000000656e636f756e7465726564206572726f72207768696c65207175657279696e67207472616e736665727265642062616c616e63652f55736572732f746d2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f6c616e672d332e302e302d7263352f7372632f646973706174636865722e72730000340201005e000000910000000a0000006661696c656420746f2064697370617463682074686520636f6e7374727563746f722f55736572732f746d2f6768712f6769746875622e636f6d2f746173682d32732f32303231303933305f706f6c6b61646f745f6170692d636f6e74726163745f6572726f722f7265637572736976652f6c69622e7273c6020100560000001c0000000100000063616c6c6572207472616e736665727265642076616c7565206576656e2074686f75676820616c6c20696e6b21206d6573736167652064656e79207061796d656e74736661696c656420746f206469737061746368207468652063616c6c00000f00000004000000040000001000000011000000120041b087040bc202617474656d707420746f206164642077697468206f766572666c6f77130000000000000001000000140000006120666f726d617474696e6720747261697420696d706c656d656e746174696f6e2072657475726e656420616e206572726f722f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f666d742e72730000000f04010066000000470200001c0000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7261775f7665632e72730041808a040be101617474656d707420746f206d756c7469706c792077697468206f766572666c6f77000000880401006a000000b50100001c0000006361706163697479206f766572666c6f77000000880401006a0000002f020000050000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f616c6c6f632f7372632f7665632f6d6f642e72730000580501006a0000008e0600000d000000580501006a000000ca060000090041f08b040b21617474656d707420746f2073756274726163742077697468206f766572666c6f770041a08c040b41617474656d707420746f206164642077697468206f766572666c6f7700000000617474656d707420746f206d756c7469706c792077697468206f766572666c6f770041f08c040bc52a617474656d707420746f2073686966742072696768742077697468206f766572666c6f772e2e000094060100020000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f636861722f6d6f642e72730000a00601006a000000a200000035000000a00601006a000000a200000021000000a00601006a000000a30000003300000063616c6c656420604f7074696f6e3a3a756e77726170282960206f6e206120604e6f6e65602076616c756500081f0100000000003a000000081f010000000000700701000100000070070100010000001500000000000000010000001600000070616e69636b65642061742027272c20a807010001000000a907010003000000696e646578206f7574206f6620626f756e64733a20746865206c656e20697320206275742074686520696e646578206973200000bc07010020000000dc0701001200000060000000170000000c0000000400000018000000190000001a000000202020202f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6275696c646572732e72730000200801006e0000002800000015000000200801006e0000002f00000021000000200801006e00000030000000120000002c0a280a282c292f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6e756d2e7273c70801006900000065000000140000003078303030313032303330343035303630373038303931303131313231333134313531363137313831393230323132323233323432353236323732383239333033313332333333343335333633373338333934303431343234333434343534363437343834393530353135323533353435353536353735383539363036313632363336343635363636373638363937303731373237333734373537363737373837393830383138323833383438353836383738383839393039313932393339343935393639373938393900001b00000004000000040000001c0000001d0000001e0000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f666d742f6d6f642e7273000000240a0100690000001f0500000d000000240a010069000000230500000d000000240a0100690000004605000031000000240a0100690000004f05000031000000240a010069000000b3050000380000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d656d6368722e72730000e00a01006e000000410000001e000000e00a01006e0000004800000015000000e00a01006e0000004d0000001f000000e00a01006e0000005600000009000000e00a01006e0000005a00000005000000e00a01006e0000005a0000003d00000072616e676520737461727420696e64657820206f7574206f662072616e676520666f7220736c696365206f66206c656e67746820b00b010012000000c20b01002200000072616e676520656e6420696e64657820f40b010010000000c20b010022000000736c69636520696e64657820737461727473206174202062757420656e64732061742000140c0100160000002a0c01000d0000004b1c01006b00000095080000170000004b1c01006b000000a0080000180000004b1c01006b000000a9080000140000004b1c01006b000000f00b00000d000000736f7572636520736c696365206c656e67746820282920646f6573206e6f74206d617463682064657374696e6174696f6e20736c696365206c656e6774682028880c0100150000009d0c01002b000000c6080100010000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f697465722e72730000e00c01006a0000009100000026000000e00c01006a00000091000000110000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7472616974732e72736c0d01006c0000005d010000130000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f76616c69646174696f6e732e7273000000e80d01007100000011010000110000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f7374722f7061747465726e2e72730000006c0e01006d00000099010000470000006c0e01006d000000ac010000200000006c0e01006d000000ac010000110000006c0e01006d000000b0010000260000005b2e2e2e5d6279746520696e64657820206973206f7574206f6620626f756e6473206f6620600000210f01000b0000002c0f0100160000000008010001000000626567696e203c3d20656e642028203c3d2029207768656e20736c6963696e67206000005c0f01000e0000006a0f0100040000006e0f0100100000000008010001000000206973206e6f742061206368617220626f756e646172793b20697420697320696e7369646520202862797465732029206f662060210f01000b000000a00f010026000000c60f010008000000ce0f01000600000000080100010000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f7072696e7461626c652e727300fc0f0100730000000800000018000000fc0f0100730000000a0000001c000000fc0f0100730000001a00000036000000fc0f0100730000001e0000000900000000010305050606030706080809110a1c0b190c140d100e0d0f0410031212130916011705180219031a071c021d011f1620032b032c022d0b2e01300331023201a702a902aa04ab08fa02fb05fd04fe03ff09ad78798b8da23057588b8c901c1ddd0e0f4b4cfbfc2e2f3f5c5d5fb5e2848d8e9192a9b1babbc5c6c9cadee4e5ff00041112293134373a3b3d494a5d848e92a9b1b4babbc6cacecfe4e500040d0e11122931343a3b4546494a5e646584919b9dc9cecf0d112945495764658d91a9b4babbc5c9dfe4e5f00d11454964658084b2bcbebfd5d7f0f183858ba4a6bebfc5c7cecfdadb4898bdcdc6cecf494e4f57595e5f898e8fb1b6b7bfc1c6c7d71116175b5cf6f7feff800d6d71dedf0e0f1f6e6f1c1d5f7d7eaeafbbbcfa16171e1f46474e4f585a5c5e7e7fb5c5d4d5dcf0f1f572738f7475962f5f262e2fa7afb7bfc7cfd7df9a409798308f1fc0c1ceff4e4f5a5b07080f10272feeef6e6f373d3f42459091feff536775c8c9d0d1d8d9e7feff00205f2282df048244081b04061181ac0e80ab35280b80e003190801042f043404070301070607110a500f1207550703041c0a090308030703020303030c0405030b06010e15053a0311070605100757070207150d500443032d03010411060f0c3a041d255f206d046a2580c80582b0031a0682fd035907150b1709140c140c6a060a061a0659072b05460a2c040c040103310b2c041a060b0380ac060a06213f4c042d0374083c030f033c0738082b0582ff1118082f112d032010210f808c048297190b158894052f053b07020e180980b32d740c80d61a0c0580ff0580df0cee0d03848d033709815c1480b80880cb2a38030a06380846080c06740b1e035a0459098083181c0a16094c04808a06aba40c170431a10481da26070c050580a511816d1078282a064c04808d0480be031b030f0d0006010103010402080809020a050b020e041001110212051311140115021702190d1c051d0824016a036b02bc02d102d40cd509d602d702da01e005e102e802ee20f004f802f902fa02fb010c273b3e4e4f8f9e9e9f060709363d3e56f3d0d1041418363756577faaaeafbd35e01287898e9e040d0e11122931343a4546494a4e4f64655cb6b71b1c07080a0b141736393aa8a9d8d909379091a8070a3b3e66698f926f5feeef5a629a9b2728559da0a1a3a4a7a8adbabcc4060b0c151d3a3f4551a6a7cccda007191a22253e3fc5c604202325262833383a484a4c50535556585a5c5e606365666b73787d7f8aa4aaafb0c0d0aeaf79cc6e6f935e227b0503042d036603012f2e80821d03310f1c0424091e052b0544040e2a80aa06240424042808340b018090813709160a088098390363080930160521031b05014038044b052f040a070907402027040c0936033a051a07040c07504937330d33072e080a8126524e28082a561c1417094e041e0f430e19070a0648082709750b3f412a063b050a0651060105100305808b621e48080a80a65e22450b0a060d1339070a362c041080c03c64530c48090a46451b4808531d398107460a1d03474937030e080a0639070a81361980b7010f320d839b66750b80c48abc842f8fd18247a1b98239072a040260260a460a28051382b05b654b0439071140050b020e97f80884d62a09a2f7811f3103110408818c89046b050d03090710936080f60a73086e1746809a140c570919808781470385420f1585502b80d52d031a040281703a0501850080d7294c040a04028311444c3d80c23c06010455051b3402810e2c04640c560a80ae381d0d2c040907020e06809a83d8080d030d03740c59070c140c0438080a062808224e81540c15030305070919070709030d072980cb250a84062f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f756e69636f64652f756e69636f64655f646174612e7273000000f7150100760000004b00000028000000f7150100760000004f00000009000000f7150100760000004d00000009000000f7150100760000005400000011000000f7150100760000005600000011000000f7150100760000005700000016000000f7150100760000005800000009000000f715010076000000520000003e0000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f697465722f7472616974732f616363756d2e727300f0160100730000008d00000001000000c708010069000000ce010000050000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f697465722e7273841701006c00000085000000010000000003000083042000910560005d13a0001217a01e0c20e01eef2c202b2a30a02b6fa6602c02a8e02c1efbe02d00fea0359effe035fd016136010aa136240d6137ab0ee1382f182139301c6146f31ea14af06a614e4f6fa14e9dbc214f65d1e14f00da215000e0e15130e16153ece2a154d0e8e15420002e55f001bf5500700007002d0101010201020101480b30151001650702060202010423011e1b5b0b3a09090118040109010301052b03770f0120370101010408040103070a021d013a0101010204080109010a021a010202390104020402020303011e0203010b0239010405010204011402160601013a0101020104080107030a021e013b0101010c0109012801030139030503010407020b021d013a01020102010301050207020b021c02390201010204080109010a021d0148010401020301010801510102070c08620102090b064a021b0101010101370e01050102050b0124090166040106010202021902040310040d01020206010f01000300031d031d021e02400201070801020b09012d03770222017603040209010603db0202013a010107010101010208060a020130113f0430070101050128090c0220040202010338010102030101033a0802029803010d0107040106010302c63a01050001c32100038d016020000669020004010a200250020001030104011902050197021a120d012608190b2e0330010204020227014306020202020c0108012f01330101030202050201012a020801ee010201040100010010101000020001e201950500030102050428030401a50200040002990bb001360f3803310402024503240501083e010c0234090a0402015f03020101020601a0010308150239020101010116010e070305c308020301011701510102060101020101020102eb010204060201021b025508020101026a0101010206010165030204010500090102f5010a0201010401900402020401200a280602040801090602032e0d010200070106010152160207010201027a060301010201070101480203010101000200053b0700013f0451010002000101030405080802071e0494030037043208010e011605010f000701110207010201050007000400076d07006080f0004c61796f75744572726f722f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f616c6c6f632f6c61796f75742e72730000381b01006e0000000e010000180041c0b7040bad08617474656d707420746f206164642077697468206f766572666c6f77381b01006e000000100100003900000063616c6c65642060526573756c743a3a756e77726170282960206f6e20616e2060457272602076616c7565001f000000000000000100000020000000617373657274696f6e206661696c65643a206d6964203c3d2073656c662e6c656e28292f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f6d6f642e727300004b1c01006b000000ff050000090000000a000000081f010000000000c81c0100010000002f55736572732f746d2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d332e302e302d7263352f7372632f656e67696e652f6f6e5f636861696e2f6275666665722e7273000000dc1c01006900000063000000090000002f55736572732f746d2f2e636172676f2f72656769737472792f7372632f6769746875622e636f6d2d316563633632393964623965633832332f696e6b5f656e762d332e302e302d7263352f7372632f656e67696e652f6f6e5f636861696e2f6578742e72730000581d0100660000006f010000140000004c6f6767696e6744697361626c6564556e6b6e6f776e4e6f7443616c6c61626c65436f64654e6f74466f756e644e6577436f6e74726163744e6f7446756e6465645472616e736665724661696c656442656c6f7753756273697374656e63655468726573686f6c644b65794e6f74466f756e6443616c6c6565526576657274656443616c6c6565547261707065644465636f646550616964556e70617961626c654d657373616765436f756c644e6f7452656164496e707574496e76616c696443616c6c506172616d6574657273496e76616c6964496e7374616e7469617465506172616d6574657273496e76616c6964506172616d6574657273556e6b6e6f776e43616c6c53656c6563746f72556e6b6e6f776e496e7374616e746961746553656c6563746f72556e6b6e6f776e53656c6563746f72003a200000081f010000000000081f0100020000002f55736572732f746d2f2e7275737475702f746f6f6c636861696e732f6e696768746c792d7838365f36342d6170706c652d64617277696e2f6c69622f727573746c69622f7372632f727573742f6c6962726172792f636f72652f7372632f736c6963652f696e6465782e72730000001c1f01006d000000e00000004c00000000000000617474656d707420746f2073756274726163742077697468206f766572666c6f774572726f7200000b000000010000000200000003000000040000000500000006000000070000000800000009" + }, + "contract": { + "name": "recursive", + "version": "0.1.0", + "authors": ["[your_name] <[your_email]>"] + }, + "spec": { + "constructors": [{ "args": [], "docs": [], "name": ["new"], "selector": "0x9bae9d5e" }], + "docs": [], + "events": [], + "messages": [ + { + "args": [], + "docs": [], + "mutates": false, + "name": ["get"], + "payable": false, + "returnType": { "displayName": ["MyEnum"], "type": 1 }, + "selector": "0x2f865bd9" + }, + { + "args": [{ "name": "new", "type": { "displayName": ["MyEnum"], "type": 1 } }], + "docs": [], + "mutates": true, + "name": ["set"], + "payable": false, + "returnType": null, + "selector": "0xe8c45eb6" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "value" + } + ] + } + }, + "types": [ + { + "def": { + "variant": { + "variants": [ + { "name": "A" }, + { + "fields": [{ "type": 1, "typeName": "ink_prelude::boxed::Box" }], + "name": "B" + } + ] + } + }, + "path": ["recursive", "MyEnum"] + } + ] +} diff --git a/.api-contract/src/test/contracts/user/v0/withString.json b/.api-contract/src/test/contracts/user/v0/withString.json new file mode 100644 index 00000000..2c42e438 --- /dev/null +++ b/.api-contract/src/test/contracts/user/v0/withString.json @@ -0,0 +1,661 @@ +{ + "metadataVersion": "0.1.0", + "source": { + "hash": "0xafcd0acf1a747cca1febe5bad81a6c0244a381ceb02635ab1069a1a396adda3f", + "language": "ink! 3.0.0-rc1", + "compiler": "rustc 1.49.0-nightly" + }, + "contract": { + "name": "erc20", + "version": "0.1.0", + "authors": ["[your_name] <[your_email]>"] + }, + "spec": { + "constructors": [ + { + "args": [ + { + "name": "initial_supply", + "type": { + "displayName": ["Balance"], + "type": 1 + } + }, + { + "name": "_name", + "type": { + "displayName": ["String"], + "type": 12 + } + }, + { + "name": "_symbol", + "type": { + "displayName": ["String"], + "type": 12 + } + } + ], + "docs": [], + "name": ["new"], + "selector": "0xd183512b" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "from", + "type": { + "displayName": ["Option"], + "type": 14 + } + }, + { + "docs": [], + "indexed": true, + "name": "to", + "type": { + "displayName": ["Option"], + "type": 14 + } + }, + { + "docs": [], + "indexed": true, + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "name": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [], + "indexed": true, + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "docs": [], + "indexed": true, + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "name": "Approval" + } + ], + "messages": [ + { + "args": [], + "docs": [], + "mutates": false, + "name": ["total_supply"], + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 1 + }, + "selector": "0xdcb736b5" + }, + { + "args": [], + "docs": [], + "mutates": false, + "name": ["name"], + "payable": false, + "returnType": { + "displayName": ["String"], + "type": 12 + }, + "selector": "0xa0a95494" + }, + { + "args": [], + "docs": [], + "mutates": false, + "name": ["symbol"], + "payable": false, + "returnType": { + "displayName": ["String"], + "type": 12 + }, + "selector": "0x57178a4a" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [], + "mutates": false, + "name": ["balance_of"], + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 1 + }, + "selector": "0x56e929b2" + }, + { + "args": [ + { + "name": "owner", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + } + ], + "docs": [], + "mutates": false, + "name": ["allowance"], + "payable": false, + "returnType": { + "displayName": ["Balance"], + "type": 1 + }, + "selector": "0xf3cfff66" + }, + { + "args": [ + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["transfer"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 13 + }, + "selector": "0xfae3a09d" + }, + { + "args": [ + { + "name": "spender", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["approve"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 13 + }, + "selector": "0x03d0e114" + }, + { + "args": [ + { + "name": "from", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "to", + "type": { + "displayName": ["AccountId"], + "type": 5 + } + }, + { + "name": "value", + "type": { + "displayName": ["Balance"], + "type": 1 + } + } + ], + "docs": [], + "mutates": true, + "name": ["transfer_from"], + "payable": false, + "returnType": { + "displayName": ["bool"], + "type": 13 + }, + "selector": "0xfcfb2ccd" + } + ] + }, + "storage": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0000000000000000000000000000000000000000000000000000000000000000", + "ty": 1 + } + }, + "name": "total_supply" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0100000000000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0200000000000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0200000001000000000000000000000000000000000000000000000000000000", + "ty": 4 + } + }, + "len": 4294967295, + "offset": "0x0300000000000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "offset": "0x0200000001000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "balances" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0300000001000000000000000000000000000000000000000000000000000000", + "ty": 2 + } + }, + "name": "header" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "cell": { + "key": "0x0400000001000000000000000000000000000000000000000000000000000000", + "ty": 3 + } + }, + "name": "len" + }, + { + "layout": { + "array": { + "cellsPerElem": 1, + "layout": { + "cell": { + "key": "0x0400000002000000000000000000000000000000000000000000000000000000", + "ty": 10 + } + }, + "len": 4294967295, + "offset": "0x0500000001000000000000000000000000000000000000000000000000000000" + } + }, + "name": "elems" + } + ] + } + }, + "name": "entries" + } + ] + } + }, + "name": "keys" + }, + { + "layout": { + "hash": { + "layout": { + "cell": { + "key": "0x0500000002000000000000000000000000000000000000000000000000000000", + "ty": 9 + } + }, + "offset": "0x0400000002000000000000000000000000000000000000000000000000000000", + "strategy": { + "hasher": "Blake2x256", + "postfix": "", + "prefix": "0x696e6b20686173686d6170" + } + } + }, + "name": "values" + } + ] + } + }, + "name": "allowances" + }, + { + "layout": { + "cell": { + "key": "0x0500000002000000000000000000000000000000000000000000000000000000", + "ty": 12 + } + }, + "name": "name" + }, + { + "layout": { + "cell": { + "key": "0x0600000002000000000000000000000000000000000000000000000000000000", + "ty": 12 + } + }, + "name": "symbol" + } + ] + } + }, + "types": [ + { + "def": { + "primitive": "u128" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "last_vacant", + "type": 3 + }, + { + "name": "len", + "type": 3 + }, + { + "name": "len_entries", + "type": 3 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "Header"] + }, + { + "def": { + "primitive": "u32" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 5 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [5], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "type": 6 + } + ] + } + }, + "path": ["ink_env", "types", "AccountId"] + }, + { + "def": { + "array": { + "len": 32, + "type": 7 + } + } + }, + { + "def": { + "primitive": "u8" + } + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "next", + "type": 3 + }, + { + "name": "prev", + "type": 3 + } + ] + } + }, + "path": ["ink_storage", "collections", "stash", "VacantEntry"] + }, + { + "def": { + "composite": { + "fields": [ + { + "name": "value", + "type": 1 + }, + { + "name": "key_index", + "type": 3 + } + ] + } + }, + "params": [1], + "path": ["ink_storage", "collections", "hashmap", "ValueEntry"] + }, + { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8 + } + ], + "name": "Vacant" + }, + { + "fields": [ + { + "type": 11 + } + ], + "name": "Occupied" + } + ] + } + }, + "params": [11], + "path": ["ink_storage", "collections", "stash", "Entry"] + }, + { + "def": { + "tuple": [5, 5] + } + }, + { + "def": { + "primitive": "str" + } + }, + { + "def": { + "primitive": "bool" + } + }, + { + "def": { + "variant": { + "variants": [ + { + "name": "None" + }, + { + "fields": [ + { + "type": 5 + } + ], + "name": "Some" + } + ] + } + }, + "params": [5], + "path": ["Option"] + } + ] +} diff --git a/.api-contract/src/test/contracts/user/v3/ask.json b/.api-contract/src/test/contracts/user/v3/ask.json new file mode 100644 index 00000000..a254f602 --- /dev/null +++ b/.api-contract/src/test/contracts/user/v3/ask.json @@ -0,0 +1,458 @@ +{ + "source": { + "hash": "", + "language": "Ask! 0.4.0", + "compiler": "asc 0.19.23" + }, + "contract": { + "name": "", + "version": "", + "authors": [] + }, + "V3": { + "spec": { + "constructors": [ + { + "args": [ + { + "type": { + "type": 1, + "displayName": ["string"] + }, + "label": "name" + }, + { + "type": { + "type": 1, + "displayName": ["string"] + }, + "label": "symbol" + } + ], + "docs": [], + "label": "default", + "payable": false, + "selector": "0xed4b9d1b" + } + ], + "messages": [ + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "to" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "amount" + } + ], + "docs": [], + "label": "mint", + "selector": "0xcfdd9aa2" + }, + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "from" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "amount" + } + ], + "docs": [], + "label": "burn", + "selector": "0xb1efc17b" + }, + { + "mutates": false, + "payable": false, + "args": [], + "returnType": { + "type": 1, + "displayName": ["string"] + }, + "docs": [], + "label": "name", + "selector": "0x3adaf70d" + }, + { + "mutates": false, + "payable": false, + "args": [], + "returnType": { + "type": 1, + "displayName": ["string"] + }, + "docs": [], + "label": "symbol", + "selector": "0x9bd1933e" + }, + { + "mutates": false, + "payable": false, + "args": [], + "returnType": { + "type": 0, + "displayName": ["u8"] + }, + "docs": [], + "label": "decimal", + "selector": "0xcc3fec6d" + }, + { + "mutates": false, + "payable": false, + "args": [], + "returnType": { + "type": 4, + "displayName": ["u128"] + }, + "docs": [], + "label": "totalSupply", + "selector": "0xcae60595" + }, + { + "mutates": false, + "payable": false, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "account" + } + ], + "returnType": { + "type": 4, + "displayName": ["u128"] + }, + "docs": [], + "label": "balanceOf", + "selector": "0xf48def67" + }, + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "recipient" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "amount" + } + ], + "returnType": { + "type": 5, + "displayName": ["bool"] + }, + "docs": [], + "label": "transfer", + "selector": "0x84a15da1" + }, + { + "mutates": false, + "payable": false, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "owner" + }, + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "spender" + } + ], + "returnType": { + "type": 4, + "displayName": ["u128"] + }, + "docs": [], + "label": "allowance", + "selector": "0x6a00165e" + }, + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "spender" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "amount" + } + ], + "returnType": { + "type": 5, + "displayName": ["bool"] + }, + "docs": [], + "label": "approve", + "selector": "0x681266a0" + }, + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "sender" + }, + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "recipient" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "amount" + } + ], + "returnType": { + "type": 5, + "displayName": ["bool"] + }, + "docs": [], + "label": "transferFrom", + "selector": "0x02a6e0d5" + }, + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "spender" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "addedValue" + } + ], + "returnType": { + "type": 5, + "displayName": ["bool"] + }, + "docs": [], + "label": "increaseAllowance", + "selector": "0xcb005356" + }, + { + "mutates": true, + "payable": true, + "args": [ + { + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "label": "spender" + }, + { + "type": { + "type": 4, + "displayName": ["u128"] + }, + "label": "subtractedValue" + } + ], + "returnType": { + "type": 5, + "displayName": ["bool"] + }, + "docs": [], + "label": "decreaseAllowance", + "selector": "0xe19fabb4" + } + ], + "events": [ + { + "id": 1, + "label": "Transfer", + "args": [ + { + "label": "from", + "indexed": false, + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "docs": [""] + }, + { + "label": "to", + "indexed": false, + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "docs": [""] + }, + { + "label": "value", + "indexed": false, + "type": { + "type": 4, + "displayName": ["u128"] + }, + "docs": [""] + } + ], + "docs": [""] + }, + { + "id": 2, + "label": "Approval", + "args": [ + { + "label": "owner", + "indexed": false, + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "docs": [""] + }, + { + "label": "spender", + "indexed": false, + "type": { + "type": 3, + "displayName": ["AccountId"] + }, + "docs": [""] + }, + { + "label": "value", + "indexed": false, + "type": { + "type": 4, + "displayName": ["u128"] + }, + "docs": [""] + } + ], + "docs": [""] + } + ], + "docs": [""] + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 1, + "type": { + "def": { + "primitive": "str" + } + } + }, + { + "id": 2, + "type": { + "def": { + "array": { + "len": 32, + "type": 0 + } + } + } + }, + { + "id": 3, + "type": { + "def": { + "composite": { + "fields": [ + { + "name": "inner", + "type": 2, + "typeName": "FixedArray32" + } + ] + }, + "path": [] + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 5, + "type": { + "def": { + "primitive": "bool" + } + } + } + ] + } +} diff --git a/.api-contract/src/test/contracts/user/v3/index.ts b/.api-contract/src/test/contracts/user/v3/index.ts new file mode 100644 index 00000000..388ac3d8 --- /dev/null +++ b/.api-contract/src/test/contracts/user/v3/index.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as ask } from './ask.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/user/v4/events.contract.json b/.api-contract/src/test/contracts/user/v4/events.contract.json new file mode 100644 index 00000000..e6f06859 --- /dev/null +++ b/.api-contract/src/test/contracts/user/v4/events.contract.json @@ -0,0 +1,2696 @@ +{ + "source": { + "hash": "0x4165bede6b0abd9016f77561a6ae14ff335af5437ec70efbb653776b18751515", + "language": "ink! 4.1.0", + "compiler": "rustc 1.70.0-nightly", + "wasm": "0x0061736d01000000014f0e60027f7f0060037f7f7f0060017f0060027f7f017f60037f7f7f017f60017f017f60047f7f7f7f017f60037e7e7f0060000060037f7e7e0060047f7f7f7f0060037f7f7e006000017f60027e7f0002f0010c057365616c310b6765745f73746f726167650006057365616c3005696e7075740000057365616c3007616464726573730000057365616c300d6465706f7369745f6576656e74000a057365616c320b7365745f73746f726167650006057365616c310d636c6561725f73746f726167650003057365616c3110636f6e7461696e735f73746f726167650003057365616c300b7365616c5f72657475726e0001057365616c300f686173685f626c616b65325f3235360001057365616c300663616c6c65720000057365616c301176616c75655f7472616e73666572726564000003656e76066d656d6f7279020102100354530400000000010101000000000102030b010100000000050002020000000000050c03030004010101050000000200000000000202020d07070002000000080008000100000100090000090100000001000004000608017f01418080040b071102066465706c6f7900480463616c6c004a0afdb201532b01017f037f2002200346047f200005200020036a200120036a2d00003a0000200341016a21030c010b0b0b6401017f024002400240024041012000280200220241066b200241054d1b41016b0e03010203000b20014100100d200120002d0004100d0f0b20014101100d20002001100e0f0b20014102100d200120002d0004100d0f0b20014103100d20014100100d0b2d01017f2000280208220220002802044904402000200241016a360208200028020020026a20013a00000f0b000b7500024002400240024002400240200028020041016b0e050102030405000b20014100100d200041086a2802002000410c6a280200200110100f0b20014101100d0f0b20014102100d0f0b20014103100d0f0b20014104100d0f0b20014105100d200041086a2802002000410c6a280200200110100bb70101047f230041306b2202240002402000280204220420002802082203490d0020002802002105200241003602082002200420036b22043602042002200320056a2205360200200128020020012802042002101020022001280208410d10112002280208220120022802044b0d0020022002280200200110122002410036022820022004360224200220053602202002200241206a1013200320022802286a22012003490d0020002001360208200241306a24000f0b000b2c01017f230041106b220324002003200136020c2003410c6a200210162002200020011011200341106a24000b4801027f024002402000280208220320026a22042003490d00200420002802044b0d00200420036b2002470d01200028020020036a20012002100b1a200020043602080f0b000b000bb00101077f230041206b2203240020004200370000200041186a22044200370000200041106a22054200370000200041086a220642003700000240200241214f0440200341186a22074200370300200341106a22084200370300200341086a22094200370300200342003703002001200220031008200420072903003700002005200829030037000020062009290300370000200020032903003700000c010b200020012002100b1a0b200341206a24000b0a0020012000412010110bb50101047f230041306b2202240002402000280204220420002802082203490d0020002802002105200241003602082002200420036b22043602042002200320056a220536020020012802002001280204200210102001280208200210132002280208220120022802044b0d0020022002280200200110122002410036022820022004360224200220053602202002200241206a1013200320022802286a22012003490d0020002001360208200241306a24000f0b000b7501037f230041206b220224002002200136020c02402000280204220320002802082201490d0020002802002104200241003602182002200320016b3602142002200120046a3602102002410c6a200241106a10162001200120022802186a22014b0d0020002001360208200241206a24000f0b000b550020002802002200413f4d044020012000410274100d0f0b200041ffff004d044020004102744101722001104d0f0b200041ffffffff034d044020004102744102722001101f0f0b20014103100d20002001101f0bc30101027f230041206b2203240020031018024041012003101945044020004108360204200041063a0000200041086a41013a00000c010b200320014201101a20032802002204410a460440200341186a200241186a290000370300200341106a200241106a290000370300200341086a200241086a29000037030020032002290000370300200020012003101b0c010b200041086a2003290204370200200041106a2003410c6a280200360200200041063a0000200020043602040b200341206a24000b6d01017f230041106b2201240020014180800136020c419083042001410c6a1009200041918304290000370001200041096a41998304290000370000200041116a41a18304290000370000200041186a41a883042900003700002000419083042d00003a0000200141106a24000b5d01017f230041206b220224002002200136020c20022000360208200242808001370214200241908304360210200241086a200241106a10472002280218220020022802144b0440000b200228021020001006200241206a2400417f470b5e02027f017e024002402002500440410d21030c010b411121032002200129032022027c22052002540d00410a21042001290310500d012005200141186a290300220258200250720d010b200020033a0004410621040b200020043602000be00202047f017e230041a0016b2203240002400240200129032042017c220750450440200341033a000020032007370308200341306a2204200241186a290000370300200341286a2205200241106a290000370300200341206a2206200241086a29000037030020032002290000370318200341e0006a2003101e20032d00600d01200341186a2202200341011031200320021022200341003a0038200341f9006a2004290300370000200341f1006a2005290300370000200341e9006a200629030037000020032003290318370061200341013a006020034198016a200341106a29030037030020034190016a200341086a2903003703002003200329030037038801200341386a200341e0006a20034188016a103220002007370308200041033a0000200120073703200c020b20004106360204200041063a0000200041086a41113a00000c010b200041063a0000200041033602040b200341a0016a24000b7d01017f230041306b220324002003200236020420032001360200200341fc8204360224200341f8820436022020032003360228200341086a200341206a101d20032d00084107460440000b20002003290308370300200041106a200341186a290300370300200041086a200341106a290300370300200341306a24000b870201047f230041206b220224002002428080013702042002419083043602002001280200200141046a2802002002105520012802082002105802402002280204220420022802082201490d00200228020021032002200420016b220436020020032001200120036a2203200210002101200420022802002205490d00024002400240410c20012001410c4f1b0e0401030300030b200041063a00000c010b2002200536021c200220033602182002200241186a102820022d00002201410647044020002002290001370001200041106a200241106a290000370000200041096a200241096a290000370000200020013a00000c010b200041073b01000b200241206a24000f0b000bae0201047f230041206b2202240020024280800137020420024190830436020041b48ca0e6012002101f20012002102002402002280204220420022802082201490d00200228020021032002200420016b220436020020032001200120036a2201200210002103200420022802002205490d002000027f02400240410c20032003410c4f1b0e0400030301030b20054120490d02200241086a200141096a290000370300200241106a200141116a290000370300200241176a200141186a290000370000200220012900013703004101210320012d00000c010b4100210341000b3a0001200020033a0000200020022903003700022000410a6a200241086a290300370000200041126a200241106a290300370000200041196a200241176a290000370000200241206a24000f0b000b2601017f230041106b220224002002200036020c20012002410c6a41041011200241106a24000b96010002400240024002400240024020002d000041016b0e050102030405000b20014100100d20002d00012001103a0f0b20014101100d20002f01022001104d0f0b20014102100d20002802042001101f0f0b20014103100d2000290308200110400f0b20014104100d2000290308200041106a290300200110420f0b20014105100d200041086a2802002000410c6a280200200110100b8e0201037f230041106b2201240020014280800137020420014190830436020041ebdcfef1072001101f2000280200200110132000280204200110130240027f2000280208220228020045044020012802082200200128020422024f0d022001280200220320006a41003a0000200041016a0c010b2001280208220020012802044f0d01200128020020006a41013a00002001200041016a360208200228020020011020200128020421022001280200210320012802080b220020024b0d002001200220006b220236020020032000200020036a20011000210020022001280200490d004101210202400240410c20002000410c4f1b0e0401020200020b410021020b200141106a240020020f0b000b910101037f230041106b2202240020024280800137020420024190830436020041b48ca0e6012002101f20002002102002402002280204220420022802082200490d0020022802002103200241003602082002200420006b3602042002200020036a3602002001200210132002280208220120022802044b0d00200320002002280200200110041a200241106a24000f0b000b5101017f230041106b2201240020014280800137020420014190830436020041b48ca0e6012001101f2000200110202001280208220020012802044b0440000b2001280200200010051a200141106a24000bcf0101037f230041106b2201240020014280800137020420014190830436020041ebdcfef1072001101f2000280200200110132000280204200110130240027f2000280208220228020045044020012802082200200128020422024f0d022001280200220320006a41003a0000200041016a0c010b2001280208220020012802044f0d01200128020020006a41013a00002001200041016a360208200228020020011020200128020421022001280200210320012802080b220020024b0d002003200010051a200141106a24000f0b000ba20101037f230041106b22022400200241086a2001102641012103024020022802080d00200128020422044120490d002000200228020c3602042001200441206b36020420012001280200220141206a360200200041086a2001290000370000200041106a200141086a290000370000200041186a200141106a290000370000200041206a200141186a290000370000410021030b20002003360200200241106a24000b4601017f20012802042202410449047f4101052001200241046b36020420012001280200220141046a3602002001280000210241000b210120002002360204200020013602000b9e0101017f230041d0006b22022400200241286a20011028024020022d00284106470440200241406b2001102920022802440440200241206a200241c8006a280200360200200241086a200241306a290300370300200241106a200241386a2903003703002002200229034037031820022002290328370300200020024128100b1a0c020b200041063a00000c010b200041063a00000b200241d0006a24000b8c0502047f037e230041f0006b22022400200241386a200110340240024002400240024002400240024020022d003841017145044020022d00390e06010203040507060b200041063a00000c070b20022001104b20022d000041017145044020022d00012101200041003a0000200020013a00010c070b200041063a00000c060b2001280204220341024f0440200041013a0000200128020022042f000021052001200341026b3602042001200441026a360200200020053b01020c060b200041063a00000c050b200241086a200110262002280208450440200228020c2101200041023a0000200020013602040c050b200041063a00000c040b200241106a210320012802042204410849047e4201052001200441086b36020420012001280200220141086a3602002001290000210642000b210720032006370308200320073703002002290310a745044020022903182106200041033a0000200020063703080c040b200041063a00000c030b200241206a210320012802042204411049047e4201052001200441106b36020420012001280200220141106a360200200141086a29000021062001290000210742000b21082003200737030820032008370300200341106a20063703002002290320a7450440200241306a290300210620022903282107200041043a000020002007370308200041106a20063703000c030b200041063a00000c020b200041063a00000c010b200241d0006a2001102920022802540440200241e8006a200241d8006a2802002201360200200241cc006a2001360000200220022903502206370360200041053a00002002200637004420002002290041370001200041086a200241c8006a2900003700000c010b200041063a00000b200241f0006a24000bfa0201067f230041306b22022400200241186a200110340240024020022d00184101710d00024020022d0019220341037122044103470440024002400240200441016b0e020102000b200341fc017141027621030c030b200220033a0025200241013a002420022001360220200241003b012c200241206a2002412c6a4102105c0d0320022f012c220341ff014d0d03200341027621030c020b200220033a0025200241013a0024200220013602202002410036022c200241206a2002412c6a4104105c0d02200228022c220341808004490d02200341027621030c010b200341044f0d01200241106a2001102620022802100d0120022802142203418080808004490d010b2003200128020422044d0440200241086a20034101103020022802082105200228020c200128020022062003100b21072001200420036b3602042001200320066a3602002000200336020820002007360204200020053602000c020b200041003602040c010b200041003602040b200241306a24000ba70101047f230041106b2201240020014280800137020420014190830436020041b4a5b3d1062001101f20002001101f02402001280204220020012802082202490d00200128020021032001200020026b220436020020032002200220036a2203200110002102200420012802002200490d004100210402400240410c20022002410c4f1b0e0400020201020b20004104490d01200328000021040b200141106a240020040f0b000b5502027f027e230041206b22002400200041106a22014200370300200042003703082000411036021c200041086a2000411c6a100a2001290300210220002903082103200041206a2400410541042002200384501b0b0b0020002001102d4101730b4601037f027f41202102034041002002450d011a200241016b210220012d0000210320002d00002104200041016a2100200141016a210120032004460d000b200420036b0b450bd70102047f027e230041206b2202240020022001360208200241848304360204200241f882043602002002428080013702142002419083043602102002200241106a105702402002280214220420022802182201490d00200228021021032002200420016b220436021020032001200120036a2201200241106a10002103200420022802102205490d00027e02400240410c20032003410c4f1b0e0400030301030b20054110490d0220012900002106200141086a2900000c010b42000b21072000200637030020002007370308200241206a24000f0b000b5b01017f230041106b220324002003418483043602082003200136020420032000360200027f4101200310210d001a41002002280200450d001a200320023602082003200136020420032000360200200310210b200341106a24000b900201047f230041106b2205240002402001450440410121020c010b200141004e0440200541086a2106027f2001417f73411f7622032001450d001a41888304280200210202402001200120036a41016b410020036b7122044d04404100200220046a22032002490d021a418c83042802002003490440200441ffff036a22032004490d02200341107640002202417f46200241ffff0371200247720d022002411074220220034180807c716a22032002490d02418c830420033602004100200220046a22032002490d031a0b41888304200336020020020c020b000b41000b21032006200136020420062003360200200528020822020d010b000b2000200236020420002001360200200541106a24000b3101017f230041106b220324002003200036020c2003410c6a2001105d20020440418483042001105d0b200341106a24000b7901017f230041d0016b22032400200341206a20004121100b1a200341c1006a20014121100b1a200341186a200241106a290300370300200341106a200241086a29030037030020032002290300370308200341f0006a200341086a41e000100b1a20034200370368200341e8006a1037200341d0016a24000b4201027f230041106b22012400200141086a2000103420012d0009210020012d00082102200141106a240041024101410220004101461b410020001b20024101711b0b3c01017f200020012802042202047f2001200241016b36020420012001280200220141016a36020020012d00000520010b3a000120002002453a00000b0f002001200041ff0171410047100d0b7501017f230041306b22022400200241086a2001101e2000027f20022d00084504402000410436020441010c010b20002002290009370001200041196a200241216a290000370000200041116a200241196a290000370000200041096a200241116a29000037000041000b3a0000200241306a24000bdf05020a7f017e230041d0016b22012400200141086a200041e800100b1a20014190830436027020014280800137027402400240024002402001290308500440200141f0006a41011015200141a8016a2200200141f8006a280200360200200120012903703703a001200141a0016a41948004100f20012802a401220220002802002200490d0420012802a00121032001200220006b22023602a4012001200020036a22043602a0010c010b200141f0006a41041015200141a8016a2200200141f8006a280200360200200120012903703703a001200141a0016a220241b08004100f200141c8016a22032000280200360200200120012903a0013703c0012001200141106a2206360288012001411336028401200141bc800436028001200141c0016a20014180016a101420002003280200360200200120012903c0013703a0012001200141306a2207360298012001411136029401200141cf800436029001200220014190016a101420012802a401220220002802002200490d0320012802a0012103200141003602a8012001200220006b22043602a4012001200020036a22083602a00141e080044111200141a0016a22051010200141d0006a22092005103820012802a801220520012802a4014b0d03200141a0016a220a20012802a00120051012200141003602c801200120043602c401200120083602c001200a200141c0016a10132000200020012802c8016a22004b200020024b720d0320012903082001200220006b22023602a4012001200020036a22043602a0014200520d010b2002450d02200441003a0000200141013602a801200141286a200141a0016a22021039200141c9006a20021039200141106a200210200c010b2002450d01200441013a0000200141013602a8012006200141a0016a22021013200720021013200920021038200141e8006a2d00002002103a0b20012802a801220220012802a4014b0d002003200020012802a00120021003200141d0016a24000f0b000b200020002d0000410646044020014100100d0f0b20014101100d2000200110200b210020002d000045044020014100100d0f0b20014101100d200041016a200110130b2601017f230041106b22022400200220003a000f20012002410f6a41011011200241106a24000b9b0101027f230041106b22022400200241808001360204200241908304360200024002402001280200220341074704404190830441003a00002003410646044041022101200241023602084191830441003a00000c030b4191830441013a00002002410236020820012002100e0c010b4190830441013a000020024101360208200210440b2002280208220141818001490d00000b200020011043000b4801017f4190830441003a0000410321020240200141ff017141034604404191830441003a0000410221020c010b4192830420013a00004191830441013a00000b200020021043000b4701017f230041106b220124002001419083043602004190830441003a0000200142808081801037020420002001101f20012802082200418180014f0440000b410020001043000b4701017f230041106b220124002001419083043602004190830441003a0000200142808081801037020420002001103a20012802082200418180014f0440000b410020001043000bf70101047f230041106b2201240020014280800137020420014190830436020041002001101f02402001280204220420012802082202490d0020012802002103200141003602082001200420026b3602042001200220036a36020020002d002820011035200041296a2d00002001103520002d002a2001103a2000412b6a2d00002001103520002d002c200110352000412d6a2d00002001103520002d002e20011035200029032020011040200041106a290300200041186a290300200110412000290300200041086a290300200110422001280208220020012802044b0d00200320022001280200200010041a200141106a24000f0b000b2601017f230041106b22022400200220003703082001200241086a41081011200241106a24000b1b00200050044020024100100d0f0b20024101100d2001200210400b2a01017f230041106b2203240020032001370308200320003703002002200341101011200341106a24000b0d0020004190830420011007000b080020004101100d0b8b0101027f230041206b2202240020022001103441072103024020022d00004101710d00410621030240024020022d00010e020200010b200241086a2001102820022d000822034106460d0020002002290009370001200041106a200241186a290000370000200041096a200241116a2900003700000c010b410721030b200020033a0000200241206a24000b6201017f230041306b220224002002200136022c2002200036022820024280800137020c200241908304360208200241286a200241086a104720022802102200200228020c4b0440000b2002280208200010051a200241086a1018200241306a24000b1c0041f482042001105a20002802002001101f2000280204200110130baf0101027f230041e0006b2200240002400240102b41ff01714105470d0020004180800136023041908304200041306a100120002802302201418180014f0d00200141044f044041908304280200419bddf6f405460d020b410141011049000b000b200041106a4200370300200041086a4200370300200041276a42003700002000420037030020004200370320200041306a220120004130100b1a2001103f4190830441003b0100410041021043000b29002000027f20014504404190830441003a000041010c010b419083044181023b010041020b1043000bc25f02147f0b7e230041e0036b220024000240024002400240024002400240024002400240024002400240027f02400240027f02400240027f024002400240024002400240102b41ff01714105470d002000418080013602c00141908304200041c0016a100120002802c0012207418180014f0d000240024020074104490d002000419483043602c0032000200741046b22023602c403419083042802002208411876210320084110762105200841087621060240024002400240024002400240024002400240024002400240200841ff0171220841ea016b0e0a010d0d0d060d0d020d07000b02400240024002400240024002400240024002400240200841e2006b0e07010e171717170f000b02402008410f6b0e03121705000b0240200841c7006b0e0402171708000b0240200841ee006b0e040a171713000b0240200841cd016b0e03041714000b20084119460d0220084131460d052008413b460d0c2008418301460d06200841c101460d08200841ff0147200641ff017141a2014772200541ff017141fa0047200341df004772720d16410421070c170b200641ff017141840147200541ff017141134772200341fe0147720d15410021070c160b200641ff017141900147200541ff017141f5014772200341da004720024120497272200741246b412049720d14419a830433010021184196830435010041ac8304290200211941a483042902002117419c83042902002116419583042d00002103419483042d00002105200041d483043602c0032000200741c4006b3602c403200041cd8304280000360238200041d0830428000036003b41bc8304290200211441b48304290200211b41cc83042d0000210441c48304290200211a200041c0016a200041c0036a104520002d00c001220d4107460d142018422086842115200041f7006a200041d0016a290000370000200041f0006a200041c9016a290000370300200020002900c101370368200020002802383602e0022000200028003b3600e302201b4208882118201ba72102410121070c150b200641ff0171413247200541ff017141a8014772200341b00147200241204972720d13200041b483043602c0032000200741246b3602c403419a830433010021144196830435010041ac8304290200211941a483042902002117419c83042902002116419583042d00002103419483042d00002105200041c0016a200041c0036a104520002d00c0014107460d1320002802c403450d13200020002802c003220241016a3602c0034102210720022d0000220441024f0d13201442208684211520002903c001221b4208882118200041c8016a290300211420002903d001211a201ba721020c140b200641ff017122064103460d11200641e70147200541ff017141e5014772200341df0047200241204972720d12419b8304290000221442108821152014420888a7210341b38304310000211941a38304290000211641ab83042900002117419783042800002101419583042f00002109419483042d0000210b2014a72105410321070c130b200641ff017141e80047200541ff017141e2004772200341cd0047720d11200041c0016a200041c0036a102820002d00c00122054106460d1120003501c20120003301c60142208684211520002903d001211720002903c801211620002d00c1012103410521070c120b200641ff0171412847200541ff017141d60147722003411b47200241204972720d10200041b483043602c0032000200741246b3602c403419a830433010021184196830435010041ac8304290200211941a483042902002117419c83042902002116419583042d00002103419483042d00002105200041c0016a200041c0036a102820002d00c00122024106460d1020003100c701211b20003300c501211c20003500c101211d20002903d001211a20002903c8012114200041386a200041c0036a1029200028023c450d102018422086842115201d201c201b42108684422086842118200041ea006a200041c3006a2d00003a0000200020002800393602e0022000200028003c3600e302200020002f00413b016820002d0038210420002d0040210d410621070c110b200641ff017141da0147200541ff0171413b4772200341b20147200241044972720d0f2000419883043602c0032000200741086b3602c403419483042802002101410721070c100b200641ff017141c00147200541ff017141e2004772200341fd0147720d0e200041c0016a200041c0036a102520002802c0010d0e41082107200041c8016a290300221442108821152014420888a72103200041d0016a2903002116200041e0016a2903002119200041d8016a290300211720002802c40121012014a721050c0f0b200641ff017141d90147200541ff017141ac0147722003411847720d0d200041c0016a200041c0036a102520002802c0010d0d200041c8016a290300221442108821152014420888a72103200041d0016a2903002116200041e0016a2903002119200041d8016a290300211720002802c40121012014a72105410921070c0e0b200641ff017141cf0047200541ff017141094772200341910147720d0c200041c0016a200041c0036a102520002802c0010d0c200041c8016a290300221442108821152014420888a72103200041d0016a2903002116200041e0016a2903002119200041d8016a290300211720002802c40121012014a72105410a21070c0d0b200641ff017141f10147200541ff0171412447722003418a0147720d0b200041c0016a200041c0036a102520002802c0010d0b200041c8016a290300221442108821152014420888a72103200041d0016a2903002116200041e0016a2903002119200041d8016a290300211720002802c40121012014a72105410b21070c0c0b200641ff0171419d0147200541ff017141c8004772200341d10147720d0a200041c0016a200041c0036a102720002d00c00122054106460d0a20002903e0012214420888211820003501c20120003301c60142208684211520002903d801211920002903d001211720002903c801211620002d00c10121032014a72102410c21070c0b0b200641ff017141cf0147200541ff017141b5014772200341114720024120497272200741246b411049720d09419c8304290200211641948304290200211441ac8304290200211941a483042902002117200041c483043602c0032000200741346b3602c4032014421088211541b48304290200221a42088821182014420888a721032014a7210541bc83042902002114201aa72102410e21070c0a0b200641ff017141c90147200541ff01714187014772200341fa0047200241204972720d08200041b483043602c0032000200741246b3602c403419a830433010021144196830435010041ac8304290200211941a483042902002117419c83042902002116419583042d00002103419483042d00002105200041c0016a200041c0036a102820002d00c00122024106460d08201442208684211520003500c10120003300c50120003100c7014210868442208684211820002903d001211a20002903c8012114410f21070c090b200641ff017141930147200541ff017141d90147720d072003411b460d050c070b200641ff017141e40147200541ff017141c8004772200341dc014720024120497272200741246b410849720d06419c8304290200211641948304290200211441ac8304290200211941a483042902002117200041bc83043602c00320002007412c6b3602c4032014421088211541b48304290200221a42088821182014420888a721032014a72105201aa72102411121070c070b200641ff0171418e0147200541ff017141354772200341bf0147720d05411221070c060b200641ff0171418c0147200541ff017141d0004772200341890147200241204972720d04200041b483043602c0032000200741246b3602c403419b8304290000221442108821152014420888a7210341b38304310000211941a38304290000211641ab83042900002117419783042800002101419583042f00002109419483042d0000210b2014a72105411321070c050b200641ff0171413647200541ff0171411447722003410d47200241084972720d032000419c83043602c00320002007410c6b3602c40341948304290200221642108821152016420888a721032016a72105411421070c040b200641ff017141dd0147200541ff0171419a014772200341a20147720d02411521070c030b200041c0016a200041c0036a102720002d00c00122054106460d0120002903e0012214420888211820003501c20120003301c60142208684211520002903d801211920002903d001211720002903c801211620002d00c10121032014a72102411021070c020b200541ff017141c00047200341d00147722002411049720d00200041a483043602c00341948304290200221742108821152017420888a72103419c830429020021162017a72105410d21070c010b410141011049000b200041206a200041f0006a290300370300200041276a200041f7006a290000370000200020002800e302360033200020002802e002360230200020002903683703182000428080013702c4012000419083043602c0014100200041c0016a101f20002802c401220a20002802c8012206490d0020002802c00121082000200a20066b220a3602c00120082006200620086a2208200041c0016a10002106200a20002802c001220c49410c20062006410c4f1b720d002000200c3602c401200020083602c001200041c0016a103341ff0171220f4102460d00200041c0016a103341ff017122064102460d00200041106a200041c0016a104b20002d00104101710d0020002d0011210c200041c0016a103341ff017122104102460d00200041c0016a103341ff017122114102460d00200041c0016a103341ff017122124102460d00200041c0016a103341ff017122134102460d0020002802c40122084108490d00200020002802c001220a41086a3602c00120084108460d00200a290000211d200020002802c001220e41016a3602c001200841096b210a4200211b02400240200e2d00000e020100020b200a4108490d01200020002802c001220e41086a3602c001200841116b210a200e290000211c4201211b0b200a4110490d002002ad42ff018320184208868421182005ad42ff01832003ad42ff01834208862015421086848421154108210320002802c0012205290000211e2000200541086a2900003703402000201e370338200020133a0066200020124101713a0065200020113a00642000201041017122053a00632000200c3a0062200020064101713a00612000200f3a00602000201d3703582000201c3703502000201b370348024002400240024002400240024002400240024002400240024002400240024002400240200741016b0e1500010214030405060708090a0b0c0d0e0f1f201021130b200041e8016a2014370300200041fc016a200028003336000020004189026a200041206a29030037000020004190026a200041276a290000370000200020183703e001200020163703c801200020153703c001200020043a00f8012000201a3703f001200020193703d801200020173703d001200020002802303600f9012000200d3a0080022000200029031837008102230041c0016b22012400200141086a200041c0016a220241d800100b1a200141f0006a200141d8006a290300370300200141e8006a200141d0006a2903003703002001200129034837036020014190016a200241186a29000037030020014188016a200241106a29000037030020014180016a200241086a29000037030020012002290000370378200141b0016a200141406b290300370300200141a8016a200141386a290300370300200141a0016a200141306a29030037030020012001290328370398012001200141e0006a410020012d00604106471b3602bc01200141f8006a20014198016a200141bc016a102f200141c0016a2400103e000b200020143703c802200020183703c0022000201a3703d002200020163703e802200020153703e002200020193703f802200020173703f002200041c0036a1018027f027f0240200241ff01714106470440200041c0016a200041c0026a101e20002d00c001450d0120004186036a220320002d00c30122013a0000200041a0036a2205200041d0016a2802002206360200200041a6036a20013a000020004190036a2006360200200020002f00c10122013b0184032000200041c8016a2903002214370398032000200041d4016a2902003703a8022000200041d9016a2900003700ad02200020013b01a403200020143703880320002802c4012101200020002900ad023700ad03200020002903a8023703a803200020032d00003a006a200020002f0184033b01682000200136006b200041f7006a2005280200360000200020002903980337006f20004180016a20002900ad02370000200020002903a80237007b200404404101200041e8006a200041e0026a102d0d031a0b200041e8006a200041c0036a102c04404102200041e8006a200041c0036a41848304102f450d031a0b200041d8036a20002900ad03370000200041cf036a20004190036a280200360000200020002f01a4033b01c003200020013600c30320002000290388033700c703200020002903a8033700d3032000200041a6036a2d00003a00c2030b024020044504402000200041c0026a4100200241ff01714106471b3602682000200041e8006a3602c8012000200041e0026a3602c4012000200041c0036a3602c001200041c0016a10240c010b2000428080013702c4012000419083043602c00141ebdcfef107200041c0016a2201101f200041c0036a20011013200041e0026a20011013027f200241ff01712202410646044020002802c801220120002802c40122064f0d1620002802c001220320016a41003a0000200141016a0c010b20002802c801220120002802c4014f0d1520002802c00120016a41013a00002000200141016a3602c801200041c0026a410020024106471b200041c0016a102020002802c401210620002802c001210320002802c8010b220120064b0d1420032001200120036a410010041a0b20004180016a200041d8036a290300370300200041f8006a200041d0036a290300370300200041f0006a200041c8036a29030037030020004190016a200041e8026a29030037030020004198016a200041f0026a290300370300200041a0016a200041f8026a290300370300200041b0016a200041c8026a290300370300200041b8016a200041d0026a290300370300200020002903c003370368200020002903e00237038801200020002903c0023703a801200041c8016a200041e8006a41d800100b1a200041a0026a20043a0000200042013703c001200041c0016a220110372001200041386a4130100b1a2001103f4106210241000c020b41040b210241010b2106200041cc016a200041f0006a280200360200200020002902683702c4010c250b200041cf016a2016370000200020153700c701200020193c00df01200020173700d701200020013600c301200020093b00c1012000200b3a00c001230041406a22012400200141306a200041c0016a220241186a290000370300200141286a200241106a290000370300200141206a200241086a290000370300200120022900003703182001200141186a36023c200141086a2001413c6a102e2001280208200141406b2400103d000b200020163703c801200020153703c001200020173703d001230041206b22022400200241106a200041c0016a220141086a290300370300200241186a200141106a2903003703002002200041386a36020020022001290300370308200041e8006a2204200241086a101e200241206a2400200141017220044121100b1a200041003a00c001230041106b22022400200241808001360204200241908304360200024020012d00004504404190830441003a000020024101360208200141016a200210390c010b4190830441013a000020024101360208200210440b20022802082201418180014f0440000b0c260b200020143703b002200020183703a8022000201a3703b802200020163703c802200020153703c002200020193703d802200020173703d002200041c0016a200041a8026a103620002d00c0010d1120004186036a220120002d00c30122023a0000200041c8036a2204200041d0016a2802002203360200200041a6036a220520023a0000200041a0036a22062003360200200020002f00c10122023b0184032000200041c8016a29030022143703c0032000200041d4016a2902003703682000200041d9016a220329000037006d200020023b01a403200020143703980320002802c40121022000200029006d37008d032000200029036837038803200020012d00003a00e202200020002f0184033b01e002200020023600e302200041ef026a2004280200360000200020002903c0033700e702200041f8026a200029006d370000200020002903683700f302200041c0036a22011018200041e0026a2001102c450d102000200041a8026a3602c001200041e0026a200041c0036a200041c0016a102f0d104102210241010c130b2001102a103d000b20002016370370200020153703682000201937038001200020173703782001102a2102200041c0016a2204101841012103027f4101200220041019450d001a41022001200041e8006a10190d001a200020013602c0032000200041e8006a3602c4032000428080013702c4012000419083043602c001200041c0036a200041c0016a104720002802c801220120002802c4014b0d0c4100210320002802c00122022001200120026a410010041a200041c0016a220110182001200041386a4130100b1a2001103f41030b210120032001103c000b200041cc016a2016370200200020153702c401200020193702dc01200020173702d401200020013602c001230041206b22012400200041c0016a2202280200200141186a2002411c6a290000370300200141106a200241146a290000370300200141086a2002410c6a2900003703002001200229000437030020011019200141206a2400103e000b2001102a200041c0016a22031018410121024101210620031019450d1d200020163703c801200020153703c001200020193703d801200020173703d0012001200041c0016a10190d100c1d0b2000201637037020002015370368200020193703800120002017370378200041c0016a22041018410021022004200041e8006a102c450440200041d8016a220420004180016a2203290300370300200041d0016a2205200041f8006a2206290300370300200041c8016a2207200041f0006a2208290300370300200020002903683703c001410121022001200041c0016a10190d110b41010c110b200020163703c801200020153703c001200020183703e001200020193703d801200020173703d001200041e8006a210341002106230041306b22042400200041c0016a22012802202105200128021c200441106a200141106a290300370300200441086a200141086a290300370300200420012903003703002004428080013702242004419083043602204182c7b4d979200441206a2202101f200420021020200520021010024002402004280224220220042802282205490d00200428022021072004200220056b220236022020072005200520076a2208200441206a10002105200220042802202209490d004100210702400240410c20052005410c4f1b0e0400020201020b2004200936021c20042008360218200441206a200441186a102920042802242207450d0120042802282102200428022021060b200320023602082003200736020420032006360200200441306a24000c010b000b200041cc016a200041f0006a280200360200200020002903683702c401200041003602c001230041106b22022400200241808001360204200241908304360200024041918304027f20012802004504404190830441003a00004100200141086a2802002204450d011a4191830441013a00002002410236020802402001410c6a2802002201413f4d04404192830420014102743a0000200241033602080c010b200141ffff004d0440200220014102744101723b010e20022002410e6a410210110c010b200141ffffffff034d044020014102744102722002101f0c010b4192830441033a00002002410336020820012002101f0b20022004200110112002280208220141818001490d02000b4190830441013a000041010b3a000041022101200241023602080b0c1f0b2000201637037020002015370368200041c0016a41848304200041e8006a101c20002d00c00122024106462201047f410405200041e2026a20002d00c3013a0000200041c8036a200041d0016a280200360200200020002f00c1013b01e002200020002903c8013703c00320002802d401210520002802c4010b2104200041d0016a200041c8036a280200360200200020002f01e0023b00c1012000200041e2026a2d00003a00c301200020043602c401200020002903c0033703c8010c1c0b200020163703c801200020153703c001200020193703d801200020173703d001200020143703c803200020183703c0032000200041c0016a3602c002200041e8006a200041c0026a200041c0036a101c20002d006822024106462201047f410405200041aa036a20002d006b3a0000200041e8026a200041f8006a280200360200200020002f00693b01a803200020002903703703e002200028027c2105200028026c0b2104200041d0016a200041e8026a280200360200200020002f01a8033b00c1012000200041aa036a2d00003a00c301200020043602c401200020002903e0023703c8010c1b0b200020143703c802200020183703c0022000201a3703d002200020163703c803200020153703c003200020193703d803200020173703d003200041c0016a200041c0026a103620002d00c0010d0e200041c0026a22011023200041c0036a20014101104c20004181016a200041d8036a290300370000200041f9006a200041d0036a290300370000200041f1006a200041c8036a290300370000200020002903c003370069200041013a0068200041003a00c001200041f0026a200041d0026a290300370300200041e8026a200041c8026a290300370300200020002903c0023703e002200041e8006a200041c0016a200041e0026a10320c0f0b200041c0016a2201101820004101200110192204047f200041d0016a2016370300200041d8016a2017370300200020153703c8012000418080043602c00120004280800137026c200041908304360268419cefe1ea05200041e8006a2201101f200041c8016a20011020200028026c220320002802702201490d0420002802682102200041003602702000200320016b36026c2000200120026a3602682019422088a72018a7200041e8006a101020002802702203200028026c4b0d04200220012000280268200310041a200041c0016a2201200041386a4130100b1a2001103f410a0541080b3602c001200041013a00c4012004410173230041106b2201240020014180800136020420014190830436020002400240200041c0016a22022802002203410b4704404190830441003a00002003410a46044041022102200141023602084191830441003a00000c030b4191830441013a00002001410236020820022001100c0c010b4190830441013a000020014101360208200110440b2001280208220241818001490d00000b20021043000b200041c0016a22011018410121024200211a4201211441062106410120011019450d15200c4101460440410921030c160b200041013a00622000428080013702c4012000419083043602c0014100200041c0016a101f20002802c401220420002802c8012201490d0220002802c0012102200041003602c8012000200420016b3602c4012000200120026a3602c0014101200041c0016a2204103a20052004103520002802c801220420002802c4014b0d022002200120002802c001200410041a200041c0016a200041386a2018101a20002802c0012203410a460440201d42017c2214500d03201420187c221c2014540d032014201c5404400340200020163703c801200020153703c001200020193703d801200020173703d001200041e8006a200041386a200041c0016a101b20002d00684106460d04201842017d221850450d000b0b201c500d0341002102200041003a0062200041c0016a2201200041386a4130100b1a201442807e83211a201c42017d21162001103f410321060c160b20002802cc01210220002902c40121140c140b200041033a006820002015370370200041c0016a200041e8006a101e4101210420002d00c001450440410421070c130b200041d0016a2015370300200041033a00c8012000418080043602c00120004280800137026c200041908304360268419cefe1ea05200041e8006a2201101f200041c8016a20011020200028026c220320002802702201490d01200028026821022000200320016b220636026820022001200120026a2205200041e8006a10002101200620002802682202490d010240410c20012001410c4f1b0e0400020212020b200020023602c403200020053602c003200041e8006a200041c0036a1029200028026c2206450d01410021042000280268024020002802702205450440410021050c010b200541076b22014100200120054d1b210a200641036a417c7120066b220d417f46210c41002102034002400240200220066a2d00002208411874411875220b41004e0440200c200d20026b410371720d0102402002200a4f0d000340200220066a220141046a280200200128020072418081828478710d012002200241086a22024b0d082002200a490d000b0b41002104200220054f0d0420022005200220054b1b21010340200220066a2c00004100480d032001200241016a2202470d000b0c040b4106210741012104411021010240024002400240200841f180046a2d000041026b0e030002011a0b200241016a220220054f0d19200220066a2c000041bf7f4c0d020c190b200241016a220920054f0d18200620096a2c000021090240024002400240200841f0016b0e050100000002000b200b410f6a41ff017141024b0d1b20094140480d020c1b0b200941f0006a41ff01714130490d010c1a0b2009418f7f4a0d190b200241026a220820054f0d18200620086a2c000041bf7f4a0d18200241036a220220054f0d18200220066a2c000041bf7f4c0d010c180b200241016a220920054f0d17200620096a2c00002109024002400240200841e001470440200841ed01460d01200b411f6a41ff0171410c490d02200b417e71416e470d1b20094140480d030c1b0b200941607141a07f460d020c1a0b200941a07f480d010c190b200941bf7f4a0d180b200241026a220220054f0d17200220066a2c000041bf7f4a0d170b200241016a21020c010b200241016a21020b20022005490d000b410021040b2101410a21070c120b2000280278210220002903702114200028026c21030c120b000b230041106b22012400200141848304102e200129030021142000200141086a29030037030820002014370300200141106a24002000290300200041086a290300230041106b220124002001419083043602004190830441003a00002001428080818010370204200110420c150b230041306b2201240020014180800136022c419083042001412c6a1002200141106a220441998304290000370300200141186a220341a183042900003703002001411f6a220541a88304290000370000200141918304290000370308419083042d000021062001412041001030200128020021072001280204220220063a000020022001290308370001200241096a2004290300370000200241116a2003290300370000200241186a2005290000370000200041e8006a2204410c6a4120360200200441086a200236020020042007360204200441053a0000200141306a2400200041d0016a200041f8006a290300370300200041c8016a200041f0006a290300370300200020002903683703c001230041106b220124002001418080013602042001419083043602000240200041c0016a22022d00004106470440200141013602084190830441003a00002002200110200c010b4190830441013a000020014101360208200110440b0c140b2000200041e8006a22043602c8012000200041c0036a3602c4012000200041e0026a22073602c0012000200041a8026a2201360268200041c0016a22081024200720014100104c20011023200041c0026a2207200141001031200120071022200041f0006a200029039803370300200041f8006a2006280200360200200041fc006a20002903880337020020004181016a200029008d03370000200020052d00003a006b200020002f01a4033b00692000200236026c200041013a00682003200041d8026a290300370000200041d1016a200041d0026a290300370000200041c9016a200041c8026a290300370000200020002903c0023700c101200041013a00c001200041b8036a200041b8026a290300370300200041b0036a200041b0026a290300370300200020002903a8023703a80320042008200041a8036a10320c010b200041b0036a200041d0016a2802003602002000200041c8016a2903003703a803410120002802c40122024106470d011a0b200041c0016a2201200041386a4130100b1a2001103f4106210241000b2106200041cc016a200041b0036a280200360200200020002903a8033702c4010c0e0b200020153703c001200020193703d801200020173703d001200020163703c8012001200041c0016a220110462001200041386a4130100b1a2001103f41032106410021020c0c0b200420032903003703002005200629030037030020072008290300370300200020002903683703c0012001200041c0016a220110462001200041386a4130100b1a2001103f4103210241000b2002103c000b200041f0006a200041d0016a2802003602002000200041c8016a290300370368410120002802c40122064106470d011a0b200041c0016a2201200041386a4130100b1a2001103f4106210641000b200041cc016a200041f0006a280200360200200020002903683702c401200020063602c001200041c0016a103b000b230041106b220124002001419083043602004190830441003a00002001428080818010370204201b201c200110410c090b200041cf016a2016370000200020153700c701200020193c00df01200020173700d701200020013600c301200020093b00c1012000200b3a00c001200041e8006a200041386a200041c0016a101720002d00684106462201450440200041c0016a2202200041386a4130100b1a2002103f0b200041d0016a200041f8006a290300370300200041c8016a200041f0006a290300370300200020002903683703c001230041106b220224002002418080013602042002419083043602000240200041c0016a22042d0000220341074704404190830441003a000020034106470440200241023602084191830441003a00002004200210200c020b4191830441013a000020024102360208200441046a2002100c0c010b4190830441013a000020024101360208200210440b0c0a0b230041406a22012400200141206a22021018200141086a200041386a22042002101720012d00084106460440000b200141406b2400200041c0016a220120044130100b1a2001103f410041001049000b41062107411021010b200020053602cc01200020063602c801200020013602c401200020073602c001230041106b220124002001418080013602042001419083043602000240200041c0016a22022802002203410b4704404190830441003a00002003410a460440200141023602084191830441003a0000200241086a2802002002410c6a280200200110100c020b4191830441013a00002001410236020820022001100c0c010b4190830441013a000020014101360208200110440b20012802082201418180014f0440000b200420011043000b200041003a0062201442807e83211a2002ad2117410121020b200020163703e001200041033a00d801200020173703d001200020033602c401200020063a00c0012000201a201442ff0183843703c801230041106b220124002001418080013602042001419083043602000240200041c0016a22042d0000220341074704404190830441003a000020034106470440200141023602084191830441003a0000200420011020200441186a200110200c020b4191830441013a000020014102360208200441046a2001100c0c010b4190830441013a000020014101360208200110440b20012802082201418180014f0440000b200220011043000b20022006103c000b200020023602c0012006200041c0016a103b000b200020053602d401200020023a00c001230041106b220224002002418080013602042002419083043602000240200041c0016a22042d0000220341074704404190830441003a000020034106470440200241023602084191830441003a00002004200210200c020b4191830441013a000020024102360208200441046a2002100e0c010b4190830441013a000020024101360208200210440b0c020b20012802082201418180014f0440000b0b410020011043000b20022802082202418180014f0440000b200120021043000b3801017f230041106b22022400200241086a2001103420022d00092101200020022d00084101713a0000200020013a0001200241106a24000b3101017f230041106b220324002003200036020c2003410c6a2001104e20020440418483042001104e0b200341106a24000b2601017f230041106b22022400200220003b010e20012002410e6a41021011200241106a24000bc30502067f057e23004190016b22022400200241106a20002001104f02402002290310a74101460440200241206a290300210920022002290318220b3703282002200937033020022000102e20022903002208200241086a290300220c84500d012002200842017d220a3703382002200c2008200a56ad7c42017d2208370340200a200b8520082009858450450440200220003602602002200241386a360264200241fc820436028401200241f88204360280012002200241e0006a36028801200241e8006a20024180016a101d20022d006822034107460d02200241d7006a2204200241f8006a2205290000370000200241d0006a2206200241f1006a22072900003703002002200229006937034820034106460d02200520042900003700002007200629030037000020022002290348370069200220033a006820022000360280012002200241286a36028401200241fc820436024c200241f88204360248200220024180016a2203360250200241c8006a2204200241e8006a220510502002200036028001200220053602840120024180830436024c200241f882043602482002200336025020042002290328200241306a29030010510b20022000360280012002200241386a36028401200241fc820436024c200241f88204360248200220024180016a36025020024280800137026c200241908304360268200241c8006a200241e8006a105220022802702203200228026c4b0d012002280268200310051a2002200136028401200220003602800120024180830436024c200241f88204360248200220024180016a36025020024280800137026c200241908304360268200241c8006a200241e8006a105320022802702201200228026c4b0d012002280268200110051a2002200036027020024184830436026c200241f88204360268200241e8006a2002290338200241406b29030010540b20024190016a24000f0b000be40102037f037e230041206b220324002003200236020c2003200136020820034280800137021420034190830436021041f8820441808304200341106a22011055200341086a2001105602402003280214220420032802182201490d00200328021021022003200420016b220436021020022001200120026a2201200341106a10002102200420032802102205490d0002400240410c20022002410c4f1b0e0400020201020b20054110490d01200141086a290000210720012900002108420121060b2000200837030820002006370300200041106a2007370300200341206a24000f0b000b870101037f230041106b2202240020024280800137020420024190830436020020002002105202402002280204220420022802082200490d0020022802002103200241003602082002200420006b3602042002200020036a3602002001200210202002280208220120022802044b0d00200320002002280200200110041a200241106a24000f0b000b890101037f230041106b2203240020034280800137020420034190830436020020002003105302402003280204220420032802082200490d0020032802002105200341003602082003200420006b3602042003200020056a36020020012002200310422003280208220420032802044b0d00200520002003280200200410041a200341106a24000f0b000b1c002000280200200041046a280200200110592000280208200110580b1c002000280200200041046a280200200110592000280208200110560b890101037f230041106b2203240020034280800137020420034190830436020020002003105702402003280204220420032802082200490d0020032802002105200341003602082003200420006b3602042003200020056a36020020012002200310422003280208220420032802044b0d00200520002003280200200410041a200341106a24000f0b000b2f01017f230041106b2203240020002002105a2003200128020036020c20022003410c6a41041011200341106a24000b140020002802002001105b2000280204200110200b1c002000280200200041046a2802002001105920002802082001105b0b210020002802002001105b20002802042200290300200041086a290300200110420b0e0020002002105a20012002105a0b0b0020002802002001101f0b2100200028020045044020014100100d0f0b20014101100d2000280200200110130b8f0101017f20002d00042103200041003a0004027f0240200345044041012000280200220028020422032002490d021a2001200028020022012002100b1a0c010b2001200041056a2d00003a00004101200028020022002802042203200241016b2202490d011a200141016a200028020022012002100b1a0b2000200320026b3602042000200120026a36020041000b0b950202037f047e230041d0006b22022400200241106a20002001104f024002402002290310a745044020022000102e2002290300220542017c22072005542203200241086a29030022062003ad7c220820065420052007581b0d022002200036023020024184830436022c200241f88204360228200241286a2007200810540c010b200241206a2903002106200229031821050b20022005370328200220063703302002200136023c20022000360238200241808304360244200241f882043602402002200241386a2203360248200241406b2204200520061051200220003602382002200241286a36023c200241fc8204360244200241f8820436024020022003360248200420011050200241d0006a24000f0b000b0bc8020300418080040bf1019c77585d4b65793a3a5472616e736665720000008801010000000000040001004b65793a3a417070726f76616c0000008801010000000000200001004b65793a3a417070726f76616c3a3a66726f6d4b65793a3a417070726f76616c3a3a746f4b65793a3a417070726f76616c3a3a696401010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010041b382040b330202020202020202020202020202020202020202020202020202020202020303030303030303030303030303030304040404040041f482040b0d75b15d5d40a232ca0200000001", + "build_info": { + "build_mode": "Release", + "cargo_contract_version": "2.1.0", + "rust_toolchain": "nightly-x86_64-unknown-linux-gnu", + "wasm_opt_settings": { + "keep_debug_symbols": false, + "optimization_passes": "Z" + } + } + }, + "contract": { + "name": "collection_demo", + "version": "0.1.0", + "authors": ["[your_name] <[your_email]>"] + }, + "spec": { + "constructors": [ + { + "args": [], + "docs": ["Instantiate new RMRK contract"], + "label": "new", + "payable": false, + "returnType": { + "displayName": ["ink_primitives", "ConstructorResult"], + "type": 9 + }, + "selector": "0x9bae9d5e" + } + ], + "docs": [], + "events": [ + { + "args": [ + { + "docs": [], + "indexed": false, + "label": "from", + "type": { + "displayName": ["Option"], + "type": 15 + } + }, + { + "docs": [], + "indexed": false, + "label": "to", + "type": { + "displayName": ["Option"], + "type": 15 + } + }, + { + "docs": [], + "indexed": false, + "label": "id", + "type": { + "displayName": ["Id"], + "type": 13 + } + } + ], + "docs": [], + "label": "Transfer" + }, + { + "args": [ + { + "docs": [], + "indexed": true, + "label": "from", + "type": { + "displayName": ["AccountId"], + "type": 0 + } + }, + { + "docs": [], + "indexed": true, + "label": "to", + "type": { + "displayName": ["AccountId"], + "type": 0 + } + }, + { + "docs": [], + "indexed": true, + "label": "id", + "type": { + "displayName": ["Option"], + "type": 17 + } + }, + { + "docs": [], + "indexed": false, + "label": "approved", + "type": { + "displayName": ["bool"], + "type": 19 + } + } + ], + "docs": [" Event emitted when a token approve occurs."], + "label": "Approval" + } + ], + "lang_error": { + "displayName": ["ink", "LangError"], + "type": 10 + }, + "messages": [ + { + "args": [], + "docs": [], + "label": "mint", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 9 + }, + "selector": "0xcfdd9aa2" + }, + { + "args": [], + "docs": [" Returns current NFT total supply."], + "label": "PSP34::total_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 11 + }, + "selector": "0x628413fe" + }, + { + "args": [], + "docs": [ + " Returns the collection `Id` of the NFT token.", + "", + " This can represents the relationship between tokens/contracts/pallets." + ], + "label": "PSP34::collection_id", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 12 + }, + "selector": "0xffa27a5f" + }, + { + "args": [ + { + "label": "id", + "type": { + "displayName": ["psp34_external", "OwnerOfInput1"], + "type": 13 + } + } + ], + "docs": [" Returns the owner of the token if any."], + "label": "PSP34::owner_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 14 + }, + "selector": "0x1168624d" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["psp34_external", "BalanceOfInput1"], + "type": 0 + } + } + ], + "docs": [ + " Returns the balance of the owner.", + "", + " This represents the amount of unique tokens the owner has." + ], + "label": "PSP34::balance_of", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0xcde7e55f" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["psp34_external", "AllowanceInput1"], + "type": 0 + } + }, + { + "label": "operator", + "type": { + "displayName": ["psp34_external", "AllowanceInput2"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34_external", "AllowanceInput3"], + "type": 17 + } + } + ], + "docs": [ + " Returns `true` if the operator is approved by the owner to withdraw `id` token.", + " If `id` is `None`, returns `true` if the operator is approved to withdraw all owner's tokens." + ], + "label": "PSP34::allowance", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 18 + }, + "selector": "0x4790f55a" + }, + { + "args": [ + { + "label": "operator", + "type": { + "displayName": ["psp34_external", "ApproveInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34_external", "ApproveInput2"], + "type": 17 + } + }, + { + "label": "approved", + "type": { + "displayName": ["psp34_external", "ApproveInput3"], + "type": 19 + } + } + ], + "docs": [ + " Approves `operator` to withdraw the `id` token from the caller's account.", + " If `id` is `None` approves or disapproves the operator for all tokens of the caller.", + "", + " On success a `Approval` event is emitted.", + "", + " # Errors", + "", + " Returns `SelfApprove` error if it is self approve.", + "", + " Returns `NotApproved` error if caller is not owner of `id`." + ], + "label": "PSP34::approve", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 20 + }, + "selector": "0x1932a8b0" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["psp34_external", "TransferInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34_external", "TransferInput2"], + "type": 13 + } + }, + { + "label": "data", + "type": { + "displayName": ["psp34_external", "TransferInput3"], + "type": 8 + } + } + ], + "docs": [ + " Transfer approved or owned token from caller.", + "", + " On success a `Transfer` event is emitted.", + "", + " # Errors", + "", + " Returns `TokenNotExists` error if `id` does not exist.", + "", + " Returns `NotApproved` error if `from` doesn't have allowance for transferring.", + "", + " Returns `SafeTransferCheckFailed` error if `to` doesn't accept transfer." + ], + "label": "PSP34::transfer", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 20 + }, + "selector": "0x3128d61b" + }, + { + "args": [ + { + "label": "role", + "type": { + "displayName": ["accesscontrol_external", "GetRoleAdminInput1"], + "type": 5 + } + } + ], + "docs": [ + " Returns the admin role that controls `role`. See `grant_role` and `revoke_role`." + ], + "label": "AccessControl::get_role_admin", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 16 + }, + "selector": "0x83da3bb2" + }, + { + "args": [ + { + "label": "role", + "type": { + "displayName": ["accesscontrol_external", "RevokeRoleInput1"], + "type": 5 + } + }, + { + "label": "account", + "type": { + "displayName": ["accesscontrol_external", "RevokeRoleInput2"], + "type": 0 + } + } + ], + "docs": [ + " Revokes `role` from `account`.", + "", + " On success a `RoleRevoked` event is emitted.", + "", + " # Errors", + "", + " Returns with `MissingRole` error if caller can't grant the `role` or if `account` doesn't have `role`." + ], + "label": "AccessControl::revoke_role", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 23 + }, + "selector": "0x6e4f0991" + }, + { + "args": [ + { + "label": "role", + "type": { + "displayName": ["accesscontrol_external", "GrantRoleInput1"], + "type": 5 + } + }, + { + "label": "account", + "type": { + "displayName": ["accesscontrol_external", "GrantRoleInput2"], + "type": 0 + } + } + ], + "docs": [ + " Grants `role` to `account`.", + "", + " On success a `RoleGranted` event is emitted.", + "", + " # Errors", + "", + " Returns with `MissingRole` error if caller can't grant the role.", + " Returns with `RoleRedundant` error `account` has `role`." + ], + "label": "AccessControl::grant_role", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 23 + }, + "selector": "0x4ac062fd" + }, + { + "args": [ + { + "label": "role", + "type": { + "displayName": ["accesscontrol_external", "HasRoleInput1"], + "type": 5 + } + }, + { + "label": "address", + "type": { + "displayName": ["accesscontrol_external", "HasRoleInput2"], + "type": 0 + } + } + ], + "docs": [" Returns `true` if `account` has been granted `role`."], + "label": "AccessControl::has_role", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 18 + }, + "selector": "0xc1d9ac18" + }, + { + "args": [ + { + "label": "role", + "type": { + "displayName": ["accesscontrol_external", "RenounceRoleInput1"], + "type": 5 + } + }, + { + "label": "account", + "type": { + "displayName": ["accesscontrol_external", "RenounceRoleInput2"], + "type": 0 + } + } + ], + "docs": [ + " Revokes `role` from the calling account.", + " Roles are often managed via `grant_role` and `revoke_role`: this function's", + " purpose is to provide a mechanism for accounts to lose their privileges", + " if they are compromised (such as when a trusted device is misplaced).", + "", + " On success a `RoleRevoked` event is emitted.", + "", + " # Errors", + "", + " Returns with `InvalidCaller` error if caller is not `account`.", + " Returns with `MissingRole` error if `account` doesn't have `role`." + ], + "label": "AccessControl::renounce_role", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 23 + }, + "selector": "0xeaf1248a" + }, + { + "args": [ + { + "label": "id", + "type": { + "displayName": ["psp34metadata_external", "GetAttributeInput1"], + "type": 13 + } + }, + { + "label": "key", + "type": { + "displayName": ["psp34metadata_external", "GetAttributeInput2"], + "type": 8 + } + } + ], + "docs": [ + " Returns the attribute of `id` for the given `key`.", + "", + " If `id` is a collection id of the token, it returns attributes for collection." + ], + "label": "PSP34Metadata::get_attribute", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 26 + }, + "selector": "0xf19d48d1" + }, + { + "args": [ + { + "label": "owner", + "type": { + "displayName": ["psp34enumerable_external", "OwnersTokenByIndexInput1"], + "type": 0 + } + }, + { + "label": "index", + "type": { + "displayName": ["psp34enumerable_external", "OwnersTokenByIndexInput2"], + "type": 7 + } + } + ], + "docs": [ + " Returns a token `Id` owned by `owner` at a given `index` of its token list.", + " Use along with `balance_of` to enumerate all of ``owner``'s tokens.", + "", + " The start index is zero." + ], + "label": "PSP34Enumerable::owners_token_by_index", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 28 + }, + "selector": "0x3bcfb511" + }, + { + "args": [ + { + "label": "index", + "type": { + "displayName": ["psp34enumerable_external", "TokenByIndexInput1"], + "type": 7 + } + } + ], + "docs": [ + " Returns a token `Id` at a given `index` of all the tokens stored by the contract.", + " Use along with `total_supply` to enumerate all tokens.", + "", + " The start index is zero." + ], + "label": "PSP34Enumerable::token_by_index", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 28 + }, + "selector": "0xcd0340d0" + }, + { + "args": [ + { + "label": "account", + "type": { + "displayName": ["psp34burnable_external", "BurnInput1"], + "type": 0 + } + }, + { + "label": "id", + "type": { + "displayName": ["psp34burnable_external", "BurnInput2"], + "type": 13 + } + } + ], + "docs": [ + " Destroys token with id equal to `id` from `account`", + "", + " Caller must be approved to transfer tokens from `account`", + " or to transfer token with `id`" + ], + "label": "PSP34Burnable::burn", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 20 + }, + "selector": "0x63c9877a" + }, + { + "args": [ + { + "label": "token_id", + "type": { + "displayName": ["minting_external", "TokenUriInput1"], + "type": 6 + } + } + ], + "docs": [" Get URI for the token Id."], + "label": "Minting::token_uri", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 30 + }, + "selector": "0x7136140d" + }, + { + "args": [], + "docs": [" Get max supply of tokens."], + "label": "Minting::max_supply", + "mutates": false, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 36 + }, + "selector": "0xf38e35bf" + }, + { + "args": [ + { + "label": "token_id", + "type": { + "displayName": ["minting_external", "AssignMetadataInput1"], + "type": 13 + } + }, + { + "label": "metadata", + "type": { + "displayName": ["minting_external", "AssignMetadataInput2"], + "type": 8 + } + } + ], + "docs": [" Assign metadata to specified token."], + "label": "Minting::assign_metadata", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 38 + }, + "selector": "0x6893d91b" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["minting_external", "MintInput1"], + "type": 0 + } + } + ], + "docs": [" Mint one or more tokens."], + "label": "Minting::mint", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 40 + }, + "selector": "0x0f8c5089" + }, + { + "args": [ + { + "label": "to", + "type": { + "displayName": ["minting_external", "MintManyInput1"], + "type": 0 + } + }, + { + "label": "mint_amount", + "type": { + "displayName": ["minting_external", "MintManyInput2"], + "type": 6 + } + } + ], + "docs": [" Mint many to specified account."], + "label": "Minting::mint_many", + "mutates": true, + "payable": false, + "returnType": { + "displayName": ["ink", "MessageResult"], + "type": 42 + }, + "selector": "0xeee448dc" + } + ] + }, + "storage": { + "root": { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x1cc80634", + "ty": 0 + } + }, + "root_key": "0x1cc80634" + } + }, + "name": "token_owner" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x7e3fae6b", + "ty": 3 + } + }, + "root_key": "0x7e3fae6b" + } + }, + "name": "operator_approvals" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "enum": { + "dispatchKey": "0xca32a240", + "name": "Id", + "variants": { + "0": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 2 + } + }, + "name": "0" + } + ], + "name": "U8" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 4 + } + }, + "name": "0" + } + ], + "name": "U16" + }, + "2": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 5 + } + }, + "name": "0" + } + ], + "name": "U32" + }, + "3": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 6 + } + }, + "name": "0" + } + ], + "name": "U64" + }, + "4": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 7 + } + }, + "name": "0" + } + ], + "name": "U128" + }, + "5": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0xca32a240", + "ty": 8 + } + }, + "name": "0" + } + ], + "name": "Bytes" + } + } + } + }, + "root_key": "0xca32a240" + } + }, + "name": "enumerable" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Balances" + } + }, + "name": "balances" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Data" + } + }, + "name": "psp34" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 2 + } + }, + "name": "status" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Data" + } + }, + "name": "guard" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x6a2cd2b4", + "ty": 5 + } + }, + "root_key": "0x6a2cd2b4" + } + }, + "name": "admin_roles" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x5d5db175", + "ty": 3 + } + }, + "root_key": "0x5d5db175" + } + }, + "name": "members" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Members" + } + }, + "name": "members" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Data" + } + }, + "name": "access" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x9b2d2382", + "ty": 8 + } + }, + "root_key": "0x9b2d2382" + } + }, + "name": "attributes" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 3 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "_reserved" + } + ], + "name": "Data" + } + }, + "name": "metadata" + }, + { + "layout": { + "struct": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 6 + } + }, + "name": "last_token_id" + }, + { + "layout": { + "enum": { + "dispatchKey": "0x00000000", + "name": "Option", + "variants": { + "0": { + "fields": [], + "name": "None" + }, + "1": { + "fields": [ + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 6 + } + }, + "name": "0" + } + ], + "name": "Some" + } + } + } + }, + "name": "max_supply" + }, + { + "layout": { + "leaf": { + "key": "0x00000000", + "ty": 7 + } + }, + "name": "price_per_mint" + }, + { + "layout": { + "root": { + "layout": { + "leaf": { + "key": "0x5d58779c", + "ty": 8 + } + }, + "root_key": "0x5d58779c" + } + }, + "name": "nft_metadata" + } + ], + "name": "MintingData" + } + }, + "name": "minting" + } + ], + "name": "Key" + } + }, + "root_key": "0x00000000" + } + }, + "types": [ + { + "id": 0, + "type": { + "def": { + "composite": { + "fields": [ + { + "type": 1, + "typeName": "[u8; 32]" + } + ] + } + }, + "path": ["ink_primitives", "types", "AccountId"] + } + }, + { + "id": 1, + "type": { + "def": { + "array": { + "len": 32, + "type": 2 + } + } + } + }, + { + "id": 2, + "type": { + "def": { + "primitive": "u8" + } + } + }, + { + "id": 3, + "type": { + "def": { + "tuple": [] + } + } + }, + { + "id": 4, + "type": { + "def": { + "primitive": "u16" + } + } + }, + { + "id": 5, + "type": { + "def": { + "primitive": "u32" + } + } + }, + { + "id": 6, + "type": { + "def": { + "primitive": "u64" + } + } + }, + { + "id": 7, + "type": { + "def": { + "primitive": "u128" + } + } + }, + { + "id": 8, + "type": { + "def": { + "sequence": { + "type": 2 + } + } + } + }, + { + "id": 9, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 10, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 1, + "name": "CouldNotReadInput" + } + ] + } + }, + "path": ["ink_primitives", "LangError"] + } + }, + { + "id": 11, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 7 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 7 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 12, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 13 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 13 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 13, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 2, + "typeName": "u8" + } + ], + "index": 0, + "name": "U8" + }, + { + "fields": [ + { + "type": 4, + "typeName": "u16" + } + ], + "index": 1, + "name": "U16" + }, + { + "fields": [ + { + "type": 5, + "typeName": "u32" + } + ], + "index": 2, + "name": "U32" + }, + { + "fields": [ + { + "type": 6, + "typeName": "u64" + } + ], + "index": 3, + "name": "U64" + }, + { + "fields": [ + { + "type": 7, + "typeName": "u128" + } + ], + "index": 4, + "name": "U128" + }, + { + "fields": [ + { + "type": 8, + "typeName": "Vec" + } + ], + "index": 5, + "name": "Bytes" + } + ] + } + }, + "path": ["openbrush_contracts", "traits", "types", "Id"] + } + }, + { + "id": 14, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 15 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 15 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 15, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 0 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 0 + } + ], + "path": ["Option"] + } + }, + { + "id": 16, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 5 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 5 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 17, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 13 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 13 + } + ], + "path": ["Option"] + } + }, + { + "id": 18, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 19 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 19 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 19, + "type": { + "def": { + "primitive": "bool" + } + } + }, + { + "id": 20, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 21 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 21 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 21, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 22 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 22 + } + ], + "path": ["Result"] + } + }, + { + "id": 22, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 8, + "typeName": "String" + } + ], + "index": 0, + "name": "Custom" + }, + { + "index": 1, + "name": "SelfApprove" + }, + { + "index": 2, + "name": "NotApproved" + }, + { + "index": 3, + "name": "TokenExists" + }, + { + "index": 4, + "name": "TokenNotExists" + }, + { + "fields": [ + { + "type": 8, + "typeName": "String" + } + ], + "index": 5, + "name": "SafeTransferCheckFailed" + } + ] + } + }, + "path": ["openbrush_contracts", "traits", "errors", "psp34", "PSP34Error"] + } + }, + { + "id": 23, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 24 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 24 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 24, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 25 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 25 + } + ], + "path": ["Result"] + } + }, + { + "id": 25, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "InvalidCaller" + }, + { + "index": 1, + "name": "MissingRole" + }, + { + "index": 2, + "name": "RoleRedundant" + } + ] + } + }, + "path": ["openbrush_contracts", "traits", "errors", "access_control", "AccessControlError"] + } + }, + { + "id": 26, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 27 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 27 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 27, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 8 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 8 + } + ], + "path": ["Option"] + } + }, + { + "id": 28, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 29 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 29 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 29, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 13 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 22 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 13 + }, + { + "name": "E", + "type": 22 + } + ], + "path": ["Result"] + } + }, + { + "id": 30, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 31 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 31 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 31, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 32 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 33 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 32 + }, + { + "name": "E", + "type": 33 + } + ], + "path": ["Result"] + } + }, + { + "id": 32, + "type": { + "def": { + "primitive": "str" + } + } + }, + { + "id": 33, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 34, + "typeName": "RmrkError" + } + ], + "index": 0, + "name": "Rmrk" + }, + { + "fields": [ + { + "type": 22, + "typeName": "PSP34Error" + } + ], + "index": 1, + "name": "PSP34" + }, + { + "fields": [ + { + "type": 25, + "typeName": "AccessControlError" + } + ], + "index": 2, + "name": "AccessControl" + }, + { + "fields": [ + { + "type": 35, + "typeName": "ReentrancyGuardError" + } + ], + "index": 3, + "name": "Reentrancy" + } + ] + } + }, + "path": ["rmrk_common", "errors", "Error"] + } + }, + { + "id": 34, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "AcceptedAssetsMissing" + }, + { + "index": 1, + "name": "AddingPendingAsset" + }, + { + "index": 2, + "name": "AddingPendingChild" + }, + { + "index": 3, + "name": "AddressNotEquippable" + }, + { + "index": 4, + "name": "AlreadyAddedAsset" + }, + { + "index": 5, + "name": "AlreadyAddedChild" + }, + { + "index": 6, + "name": "AssetHasNoParts" + }, + { + "index": 7, + "name": "AssetIdAlreadyExists" + }, + { + "index": 8, + "name": "AssetIdNotFound" + }, + { + "index": 9, + "name": "AssetIdNotEquippable" + }, + { + "index": 10, + "name": "BadConfig" + }, + { + "index": 11, + "name": "BadMintValue" + }, + { + "index": 12, + "name": "BadPriorityLength" + }, + { + "index": 13, + "name": "CannotMintZeroTokens" + }, + { + "index": 14, + "name": "CatalogNotFoundForAsset" + }, + { + "index": 15, + "name": "ChildNotFound" + }, + { + "index": 16, + "name": "UriNotFound" + }, + { + "index": 17, + "name": "CollectionIsFull" + }, + { + "index": 18, + "name": "InvalidAssetId" + }, + { + "index": 19, + "name": "InvalidParentId" + }, + { + "index": 20, + "name": "InvalidTokenId" + }, + { + "index": 21, + "name": "NotEquipped" + }, + { + "index": 22, + "name": "NotTokenOwner" + }, + { + "index": 23, + "name": "PartIsNotSlot" + }, + { + "index": 24, + "name": "SlotAlreayUsed" + }, + { + "index": 25, + "name": "TargetAssetCannotReceiveSlot" + }, + { + "index": 26, + "name": "UnknownEquippableAsset" + }, + { + "index": 27, + "name": "UnknownPart" + }, + { + "index": 28, + "name": "UnknownPartId" + }, + { + "index": 29, + "name": "WithdrawalFailed" + } + ] + } + }, + "path": ["rmrk_common", "errors", "RmrkError"] + } + }, + { + "id": 35, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "ReentrantCall" + } + ] + } + }, + "path": [ + "openbrush_contracts", + "traits", + "errors", + "reentrancy_guard", + "ReentrancyGuardError" + ] + } + }, + { + "id": 36, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 37 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 37 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 37, + "type": { + "def": { + "variant": { + "variants": [ + { + "index": 0, + "name": "None" + }, + { + "fields": [ + { + "type": 6 + } + ], + "index": 1, + "name": "Some" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 6 + } + ], + "path": ["Option"] + } + }, + { + "id": 38, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 39 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 39 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 39, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 3 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 33 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 3 + }, + { + "name": "E", + "type": 33 + } + ], + "path": ["Result"] + } + }, + { + "id": 40, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 41 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 41 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 41, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 13 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 33 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 13 + }, + { + "name": "E", + "type": 33 + } + ], + "path": ["Result"] + } + }, + { + "id": 42, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 43 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 10 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 43 + }, + { + "name": "E", + "type": 10 + } + ], + "path": ["Result"] + } + }, + { + "id": 43, + "type": { + "def": { + "variant": { + "variants": [ + { + "fields": [ + { + "type": 44 + } + ], + "index": 0, + "name": "Ok" + }, + { + "fields": [ + { + "type": 33 + } + ], + "index": 1, + "name": "Err" + } + ] + } + }, + "params": [ + { + "name": "T", + "type": 44 + }, + { + "name": "E", + "type": 33 + } + ], + "path": ["Result"] + } + }, + { + "id": 44, + "type": { + "def": { + "tuple": [13, 13] + } + } + } + ], + "version": "4" +} diff --git a/.api-contract/src/test/contracts/user/v4/index.ts b/.api-contract/src/test/contracts/user/v4/index.ts new file mode 100644 index 00000000..46af49a4 --- /dev/null +++ b/.api-contract/src/test/contracts/user/v4/index.ts @@ -0,0 +1,4 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export { default as events } from './events.contract.json' assert { type: 'json' }; diff --git a/.api-contract/src/test/contracts/util.ts b/.api-contract/src/test/contracts/util.ts new file mode 100644 index 00000000..d305fb5b --- /dev/null +++ b/.api-contract/src/test/contracts/util.ts @@ -0,0 +1,16 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +export function createVersionedExport( + versioned: Record>, +): Record> { + const result: Record> = {}; + + Object.entries(versioned).forEach(([version, contracts]) => + Object.entries(contracts).forEach(([name, contract]): void => { + result[`${version}_${name}`] = contract as Record; + }), + ); + + return result; +} diff --git a/.api-contract/src/types.ts b/.api-contract/src/types.ts new file mode 100644 index 00000000..3f92f537 --- /dev/null +++ b/.api-contract/src/types.ts @@ -0,0 +1,104 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { ApiBase } from '@polkadot/api/base'; +import type { ApiTypes } from '@polkadot/api/types'; +import type { Text } from '@polkadot/types'; +import type { + ContractExecResultResult, + ContractSelector, + StorageDeposit, + Weight, + WeightV2, +} from '@polkadot/types/interfaces'; +import type { Codec, TypeDef } from '@polkadot/types/types'; +import type { BN } from '@polkadot/util'; +import type { HexString } from '@polkadot/util/types'; +import type { Abi } from './index.js'; + +export interface ContractBase { + readonly abi: Abi; + readonly api: ApiBase; + + getMessage: (name: string) => AbiMessage; + messages: AbiMessage[]; +} + +export interface AbiParam { + name: string; + type: TypeDef; +} + +export type AbiMessageParam = AbiParam; + +export interface AbiEventParam extends AbiParam { + indexed: boolean; +} + +export interface AbiEvent { + args: AbiEventParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedEvent; + identifier: string; + index: number; + signatureTopic?: HexString | null; +} + +export interface AbiMessage { + args: AbiMessageParam[]; + docs: string[]; + fromU8a: (data: Uint8Array) => DecodedMessage; + identifier: string; + index: number; + isConstructor?: boolean; + isDefault?: boolean; + isMutating?: boolean; + isPayable?: boolean; + method: string; + path: string[]; + returnType?: TypeDef | null; + selector: ContractSelector; + toU8a: (params: unknown[]) => Uint8Array; +} + +export type AbiConstructor = AbiMessage; + +// eslint-disable-next-line @typescript-eslint/ban-types +export type InterfaceContractCalls = Record; + +export interface ContractCallOutcome { + debugMessage: Text; + gasConsumed: Weight; + gasRequired: Weight; + output: Codec | null; + result: ContractExecResultResult; + storageDeposit: StorageDeposit; +} + +export interface DecodedEvent { + args: Codec[]; + event: AbiEvent; +} + +export interface DecodedMessage { + args: Codec[]; + message: AbiMessage; +} + +export interface ContractOptions { + gasLimit?: bigint | string | number | BN | WeightV2; + storageDepositLimit?: bigint | string | number | BN | null; + value?: bigint | BN | string | number; +} + +export interface BlueprintOptions extends ContractOptions { + salt?: Uint8Array | string | null; +} + +export interface WeightAll { + v1Weight: BN; + v2Weight: { + refTime: BN; + proofSize?: BN | undefined; + }; +} diff --git a/.api-contract/src/util.ts b/.api-contract/src/util.ts new file mode 100644 index 00000000..21e5018a --- /dev/null +++ b/.api-contract/src/util.ts @@ -0,0 +1,23 @@ +// Copyright 2017-2025 @polkadot/api-contract authors & contributors +// SPDX-License-Identifier: Apache-2.0 + +import type { SubmittableResult } from '@polkadot/api'; +import type { EventRecord } from '@polkadot/types/interfaces'; + +type ContractEvents = 'CodeStored' | 'ContractEmitted' | 'ContractExecution' | 'Instantiated'; + +export function applyOnEvent( + result: SubmittableResult, + types: ContractEvents[], + fn: (records: EventRecord[]) => T, +): T | undefined { + if (result.isInBlock || result.isFinalized) { + const records = result.filterRecords('contracts', types); + + if (records.length) { + return fn(records); + } + } + + return undefined; +} diff --git a/.api-contract/tsconfig.build.json b/.api-contract/tsconfig.build.json new file mode 100644 index 00000000..c371165c --- /dev/null +++ b/.api-contract/tsconfig.build.json @@ -0,0 +1,16 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src" + }, + "exclude": ["**/test/**/*", "**/*.spec.ts", "**/checkTypes.manual.ts", "**/mod.ts", "mock.ts"], + "references": [ + { "path": "../api/tsconfig.build.json" }, + { "path": "../api-augment/tsconfig.build.json" }, + { "path": "../types/tsconfig.build.json" }, + { "path": "../types-codec/tsconfig.build.json" }, + { "path": "../types-create/tsconfig.build.json" } + ] +} diff --git a/.api-contract/tsconfig.spec.json b/.api-contract/tsconfig.spec.json new file mode 100644 index 00000000..38b05b54 --- /dev/null +++ b/.api-contract/tsconfig.spec.json @@ -0,0 +1,26 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "baseUrl": "..", + "outDir": "./build", + "rootDir": "./src", + "emitDeclarationOnly": false, + "resolveJsonModule": true, + "noEmit": true + }, + "include": [ + "**/test/**/*.json", + "**/test/**/*.ts", + "**/test/**/*.wasm", + "**/checkTypes.manual.ts", + "**/*.spec.ts", + "mock.ts" + ], + "references": [ + { "path": "../api-augment/tsconfig.build.json" }, + { "path": "../api-contract/tsconfig.build.json" }, + { "path": "../api/tsconfig.build.json" }, + { "path": "../types-support/tsconfig.build.json" }, + { "path": "../types/tsconfig.build.json" } + ] +} diff --git a/.gitignore b/.gitignore index ec70f75c..92f33b3b 100644 --- a/.gitignore +++ b/.gitignore @@ -41,6 +41,7 @@ build/Release # Dependency directories node_modules/ jspm_packages/ +.polkadot-js-api # Snowpack dependency directory (https://snowpack.dev/) web_modules/ diff --git a/package.json b/package.json index 40692501..7bbdbfda 100644 --- a/package.json +++ b/package.json @@ -34,8 +34,9 @@ "@headlessui/react": "^1.7.18", "@heroicons/react": "^1.0.6", "@polkadot/api": "15.8.1", - "@polkadot/api-contract": "15.8.1", + "@polkadot/api-contract": "file:./.api-contract/build", "@polkadot/extension-dapp": "^0.58.6", + "@polkadot/types": "15.8.1", "@polkadot/ui-keyring": "^3.12.2", "@polkadot/ui-shared": "^3.12.2", "big.js": "^6.2.1", @@ -44,6 +45,7 @@ "date-fns": "^2.30.0", "dexie": "^3.2.4", "dexie-react-hooks": "1.1.7", + "ethers": "^6.13.5", "json5": "^2.2.3", "react": "^18.3.1", "react-dom": "^18.3.1", @@ -66,7 +68,8 @@ "@types/bcryptjs": "^2.4.6", "@types/big.js": "^6.2.2", "@types/node": "^22.5.0", - "@types/react-dom": "^18.3.0", + "@types/react": "^19.1.2", + "@types/react-dom": "^19.1.2", "@typescript-eslint/eslint-plugin": "^8.2.0", "@typescript-eslint/parser": "^8.2.0", "@vitejs/plugin-react": "^4.3.1", diff --git a/snapshots.js b/snapshots.js index f31fefea..fdb8a84f 100644 --- a/snapshots.js +++ b/snapshots.js @@ -1,6 +1,3 @@ -// Copyright 2022-2024 use-ink/contracts-ui authors & contributors -// SPDX-License-Identifier: GPL-3.0-only - module.exports = { __version: '13.13.3', 'Storage Types Contract': { diff --git a/src/constants/index.ts b/src/constants/index.ts index f7eb16af..5b2185b7 100644 --- a/src/constants/index.ts +++ b/src/constants/index.ts @@ -12,12 +12,6 @@ export const LOCAL_STORAGE_KEY = { export type LocalStorageKey = (typeof LOCAL_STORAGE_KEY)[keyof typeof LOCAL_STORAGE_KEY]; -export const ROCOCO_CONTRACTS = { - relay: 'Rococo', - name: 'Contracts (Rococo)', - rpc: 'wss://rococo-contracts-rpc.polkadot.io', -}; - const CUSTOM_ENDPOINT = localStorage.getItem(LOCAL_STORAGE_KEY.CUSTOM_ENDPOINT); export const LOCAL = { relay: undefined, @@ -25,100 +19,24 @@ export const LOCAL = { rpc: CUSTOM_ENDPOINT ? (JSON.parse(CUSTOM_ENDPOINT) as string) : 'ws://127.0.0.1:9944', }; -// https://docs.peaq.network/networks-overview -// const PEAQ_AGUNG = { -// relay: 'Rococo', -// name: 'Peaq Agung', -// rpc: 'wss://wss.agung.peaq.network', -// }; - -const POP_NETWORK_TESTNET = { +export const POP_NETWORK_TESTNET = { relay: 'Paseo', name: 'Pop Network Testnet', rpc: 'wss://rpc2.paseo.popnetwork.xyz', }; -const PHALA_TESTNET = { - relay: undefined, - name: 'Phala PoC-6', - rpc: 'wss://poc6.phala.network/ws', -}; - -// https://docs.astar.network/docs/build/environment/endpoints -const SHIDEN = { - relay: 'Kusama', - name: 'Astar Shiden', - rpc: 'wss://rpc.shiden.astar.network', -}; - -// https://docs.astar.network/docs/build/environment/endpoints -const ASTAR_SHIBUYA = { - relay: 'Tokyo', - name: 'Astar Shibuya', - rpc: 'wss://rpc.shibuya.astar.network', -}; - -// https://docs.astar.network/docs/build/environment/endpoints -const ASTAR = { - relay: 'Polkadot', - name: 'Astar', - rpc: 'wss://rpc.astar.network', -}; - -const ALEPH_ZERO_TESTNET = { - relay: undefined, - name: 'Aleph Zero Testnet', - rpc: 'wss://ws.test.azero.dev', -}; - -const ALEPH_ZERO = { - relay: undefined, - name: 'Aleph Zero', - rpc: 'wss://ws.azero.dev', -}; - -// https://docs.t3rn.io/collator/testnet/testnet-collator -const T3RN_T0RN = { - relay: undefined, - name: 'T3RN T0RN', - rpc: 'wss://ws.t0rn.io', -}; - -const TERNOA_ALPHANET = { - relay: undefined, - name: 'Ternoa Alphanet', - rpc: 'wss://alphanet.ternoa.com', -}; -// https://pendulum.gitbook.io/pendulum-docs/build/build-environment/foucoco-testnet -const PENDULUM_TESTNET = { - relay: 'Rococo', - name: 'Pendulum Testnet', - rpc: 'wss://rpc-foucoco.pendulumchain.tech', -}; - -const ZEITGEIST_BATTERY_STATION = { - relay: 'Rococo', - name: 'Zeitgeist Battery Station', - rpc: 'wss://bsr.zeitgeist.pm', +export const ROCOCO_CONTRACTS = { + relay: 'Westend', + name: 'Westend Asset Hub', + rpc: 'wss://westend-asset-hub-rpc.polkadot.io', }; export const TESTNETS = [ - ...[ - ROCOCO_CONTRACTS, - // PEAQ_AGUNG, - PHALA_TESTNET, - ASTAR_SHIBUYA, - ALEPH_ZERO_TESTNET, - T3RN_T0RN, - TERNOA_ALPHANET, - PENDULUM_TESTNET, - POP_NETWORK_TESTNET, - ZEITGEIST_BATTERY_STATION, - ].sort((a, b) => a.name.localeCompare(b.name)), + ...[ROCOCO_CONTRACTS, POP_NETWORK_TESTNET].sort((a, b) => a.name.localeCompare(b.name)), LOCAL, ]; -export const MAINNETS = [ASTAR, SHIDEN, ALEPH_ZERO].sort((a, b) => a.name.localeCompare(b.name)); +// export const MAINNETS = [].sort((a, b) => a.name.localeCompare(b.name)); export const DEFAULT_DECIMALS = 12; diff --git a/src/lib/getContractFromPatron.ts b/src/lib/getContractFromPatron.ts index d5a827dd..607ee6fd 100644 --- a/src/lib/getContractFromPatron.ts +++ b/src/lib/getContractFromPatron.ts @@ -29,7 +29,7 @@ function getFromPatron(field: string, hash: string) { export function getContractFromPatron(codeHash: string): Promise { const metadataPromise = getFromPatron('metadata', codeHash); - const wasmPromise = getFromPatron('wasm', codeHash); + const wasmPromise = getFromPatron('contract_binary', codeHash); return Promise.all([metadataPromise, wasmPromise]).then(([metadataResponse, wasmResponse]) => { const result = Buffer.from(wasmResponse as ArrayBuffer).toString('hex'); diff --git a/src/lib/util.ts b/src/lib/util.ts index bdc782e5..9452002f 100644 --- a/src/lib/util.ts +++ b/src/lib/util.ts @@ -1,8 +1,6 @@ // Copyright 2022-2024 use-ink/contracts-ui authors & contributors // SPDX-License-Identifier: GPL-3.0-only -import { decodeAddress, encodeAddress } from '@polkadot/keyring'; -import { hexToU8a, isHex } from '@polkadot/util'; import { keyring } from '@polkadot/ui-keyring'; import format from 'date-fns/format'; import parseISO from 'date-fns/parseISO'; @@ -74,7 +72,8 @@ export function isUndefined(value: unknown): value is undefined { export function isValidAddress(address: string | Uint8Array | null | undefined) { try { - encodeAddress(isHex(address) ? hexToU8a(address) : decodeAddress(address)); + // TODO: check isValidAddress + console.log(address); return true; } catch (error) { return false; diff --git a/src/services/chain/contract.ts b/src/services/chain/contract.ts index 4ab83b6c..4673ed93 100644 --- a/src/services/chain/contract.ts +++ b/src/services/chain/contract.ts @@ -11,6 +11,7 @@ import { InstantiateData, SubmittableExtrinsic, } from 'types'; +import { u8aToU8a } from '@polkadot/util'; export function createInstantiateTx( api: ApiPromise, @@ -25,7 +26,8 @@ export function createInstantiateTx( storageDepositLimit, }: Omit, ): SubmittableExtrinsic<'promise'> { - const wasm = metadata?.info.source.wasm; + //@ts-ignore TODO: need to update type in @polkadot/api-contracts + const wasm = u8aToU8a(metadata?.json.source.contract_binary); const isValid = codeHash || !!wasm; if (isValid && metadata && isNumber(constructorIndex) && metadata && argValues) { @@ -40,7 +42,7 @@ export function createInstantiateTx( const codeOrBlueprint = codeHash ? new BlueprintPromise(api, metadata, codeHash) - : new CodePromise(api, metadata, wasm && wasm.toU8a()); + : new CodePromise(api, metadata, wasm && wasm); const transformed = transformUserInput(api.registry, constructor.args, argValues); @@ -53,8 +55,9 @@ export function createInstantiateTx( } export async function getContractInfo(api: ApiPromise, address: string) { - if (isValidAddress(address)) { - return (await api.query.contracts.contractInfoOf(address)).unwrapOr(null); + // TODO: fix isValidAddress + if (isValidAddress(address) || true) { + return (await api.query.revive.contractInfoOf(address)).unwrapOr(null); } } diff --git a/src/services/db/index.ts b/src/services/db/index.ts index 9056bc48..a38e17a0 100644 --- a/src/services/db/index.ts +++ b/src/services/db/index.ts @@ -14,6 +14,7 @@ export interface CodeBundleDocument { export interface ContractDocument extends CodeBundleDocument { abi: Record; address: string; + dotAddress: string; external?: boolean; } diff --git a/src/types/ui/hooks.ts b/src/types/ui/hooks.ts index 8a4b3643..3224917d 100644 --- a/src/types/ui/hooks.ts +++ b/src/types/ui/hooks.ts @@ -49,4 +49,5 @@ export interface UIContract extends Pick { type: 'added' | 'instantiated'; codeHash: string; address: string; + dotAddress: string; } diff --git a/src/ui/components/common/HeaderButtons.tsx b/src/ui/components/common/HeaderButtons.tsx index 1fdfa76f..0699b838 100644 --- a/src/ui/components/common/HeaderButtons.tsx +++ b/src/ui/components/common/HeaderButtons.tsx @@ -61,7 +61,7 @@ export function HeaderButtons({ contract: { address, codeHash } }: Props) { }} title="Forget contract" > - + diff --git a/src/ui/components/contract/ContractRow.tsx b/src/ui/components/contract/ContractRow.tsx index 1089d6b9..a6635e55 100644 --- a/src/ui/components/contract/ContractRow.tsx +++ b/src/ui/components/contract/ContractRow.tsx @@ -14,7 +14,7 @@ interface Props { contract: ContractDocument; } -export function ContractRow({ contract: { address, name, date } }: Props) { +export function ContractRow({ contract: { address, dotAddress, name, date } }: Props) { const { api } = useApi(); const [isOnChain, setIsOnChain] = useState(true); @@ -46,7 +46,7 @@ export function ContractRow({ contract: { address, name, date } }: Props) {
{displayDate(date)}
- +
); diff --git a/src/ui/components/contract/Interact.tsx b/src/ui/components/contract/Interact.tsx index 3202ec00..18959f44 100644 --- a/src/ui/components/contract/Interact.tsx +++ b/src/ui/components/contract/Interact.tsx @@ -21,7 +21,6 @@ import { SubmittableResult, UIContract, } from 'types'; -import { Text } from '@polkadot/types'; import { AccountSelect } from 'ui/components/account'; import { Button, Buttons, Dropdown } from 'ui/components/common'; import { ArgumentForm, Form, FormField, OptionsForm } from 'ui/components/form'; @@ -41,6 +40,7 @@ export const InteractTab = ({ abi: { registry }, tx, address, + dotAddress, }, }: Props) => { const { accounts, api } = useApi(); @@ -73,7 +73,7 @@ export const InteractTab = ({ setCallResults([]); }, [abi.messages, setArgValues, address]); - const params: Parameters = useMemo(() => { + const params: Parameters = useMemo(() => { return [ accountId, address, @@ -87,6 +87,7 @@ export const InteractTab = ({ }, [ accountId, address, + dotAddress, api.registry, inputData, isCustom, @@ -101,7 +102,7 @@ export const InteractTab = ({ useEffect((): void => { async function dryRun() { if (!message) return; - const newOutcome = await api.call.contractsApi.call(...params); + const newOutcome = await api.call.reviveApi.call(...params); // auto-generated @polkadot/type-augment data uses a different flag representation: `{"ok":{"flags":{"bits":0},"data":"0x00"}}` let convertedFlags = api.registry.createType('ContractReturnFlags', 0); @@ -117,7 +118,7 @@ export const InteractTab = ({ gasRequired: newOutcome.gasRequired, storageDeposit: newOutcome.storageDeposit, // debugMessage is Bytes, must convert to Text - debugMessage: new Text(api.registry, newOutcome.debugMessage.toUtf8()), + // debugMessage: new Text(api.registry, newOutcome.debugMessage.toUtf8()), result: newOutcome.result.isOk ? { Ok: { flags: convertedFlags, data: newOutcome.result.asOk.data } } : { Err: newOutcome.result.asErr }, @@ -136,7 +137,7 @@ export const InteractTab = ({ } debouncedDryRun(); - }, [api.call.contractsApi, message, params, nextResultId]); + }, [api.call.reviveApi, message, params, nextResultId]); useEffect(() => { async function processTx() { @@ -164,7 +165,7 @@ export const InteractTab = ({ setNextResultId(nextResultId + 1); }; - const newId = useRef(); + const newId = useRef(0); const call = () => { if (!outcome || !message || !accountId) throw new Error('Unable to call contract.'); diff --git a/src/ui/components/contract/OutcomeItem.tsx b/src/ui/components/contract/OutcomeItem.tsx index c40bff89..28195342 100644 --- a/src/ui/components/contract/OutcomeItem.tsx +++ b/src/ui/components/contract/OutcomeItem.tsx @@ -13,12 +13,12 @@ export function OutcomeItem({ displayValue: string; copyValue?: string; id?: string; -}): JSX.Element { +}): React.ReactElement { return (
{title}
@@ -26,7 +26,7 @@ export function OutcomeItem({
         
diff --git a/src/ui/components/form/InputBn.tsx b/src/ui/components/form/InputBn.tsx index 099dfcf8..acf44624 100644 --- a/src/ui/components/form/InputBn.tsx +++ b/src/ui/components/form/InputBn.tsx @@ -35,7 +35,7 @@ function getMinMax(type: string): [bigint, bigint] { } } -export function InputBn({ onChange, typeDef: { type } }: Props): JSX.Element { +export function InputBn({ onChange, typeDef: { type } }: Props): React.ReactElement { const [displayValue, setDisplayValue] = useState('0'); const [min, max] = getMinMax(type); diff --git a/src/ui/components/instantiate/Step2.tsx b/src/ui/components/instantiate/Step2.tsx index 679367e9..69761e15 100644 --- a/src/ui/components/instantiate/Step2.tsx +++ b/src/ui/components/instantiate/Step2.tsx @@ -63,8 +63,10 @@ export function Step2() { }, [metadata, setConstructorIndex]); const [isUsingSalt, toggleIsUsingSalt] = useToggle(true); + //@ts-ignore TODO: need to update type in @polkadot/api-contracts + const code = metadata?.json.source.contract_binary; - const params: Parameters = useMemo(() => { + const params: Parameters = useMemo(() => { return [ accountId, deployConstructor?.isPayable @@ -72,7 +74,7 @@ export function Step2() { : api.registry.createType('Balance', BN_ZERO), getGasLimit(isCustom, refTime.limit, proofSize.limit, api.registry), getStorageDepositLimit(storageDepositLimit.isActive, storageDepositLimit.value, api.registry), - codeHashUrlParam ? { Existing: codeHashUrlParam } : { Upload: metadata?.info.source.wasm }, + codeHashUrlParam ? { Existing: codeHashUrlParam } : { Upload: code }, // TODO: update type inputData ?? '', isUsingSalt ? salt.value : '', ]; @@ -87,7 +89,8 @@ export function Step2() { storageDepositLimit.isActive, storageDepositLimit.value, codeHashUrlParam, - metadata?.info.source.wasm, + //@ts-ignore TODO: need to update type in @polkadot/api-contracts + metadata?.json.source.contract_binary, inputData, isUsingSalt, salt.value, @@ -96,7 +99,7 @@ export function Step2() { useEffect((): void => { async function dryRun() { try { - const result = await api.call.contractsApi.instantiate(...params); + const result = await api.call.reviveApi.instantiate(...params); // default is no revert let convertedFlags = api.registry.createType('ContractReturnFlags', 0); @@ -111,7 +114,6 @@ export function Step2() { instantiateResult = { Ok: { result: { flags: convertedFlags, data: okResult.result.data }, - accountId: okResult.accountId, }, }; } else { @@ -123,7 +125,7 @@ export function Step2() { gasRequired: result.gasRequired, storageDeposit: result.storageDeposit, // debugMessage is Bytes, must convert to Text - debugMessage: api.registry.createType('Text', result.debugMessage.toU8a()), + // debugMessage: api.registry.createType('Text', result.debugMessage.toU8a()), result: instantiateResult, }); @@ -148,7 +150,8 @@ export function Step2() { setData({ ...data, constructorIndex, - salt: params[6] || null, + // salt: params[6] || null, + salt: (params[6] as string | Uint8Array | null) || null, value: deployConstructor?.isPayable ? (params[1] as Balance) : undefined, argValues, storageDepositLimit: getStorageDepositLimit( diff --git a/src/ui/components/instantiate/Step3.tsx b/src/ui/components/instantiate/Step3.tsx index 4496883d..ff8479e8 100644 --- a/src/ui/components/instantiate/Step3.tsx +++ b/src/ui/components/instantiate/Step3.tsx @@ -10,12 +10,15 @@ import { createInstantiateTx } from 'services/chain'; import { SubmittableResult } from 'types'; import { useApi, useInstantiate, useTransactions } from 'ui/contexts'; import { useNewContract } from 'ui/hooks'; +import { transformUserInput } from 'lib/callOptions'; export function Step3() { const { codeHash: codeHashUrlParam } = useParams<{ codeHash: string }>(); const { data, step, setStep } = useInstantiate(); const { api } = useApi(); - const { accountId, value, metadata, gasLimit, name, constructorIndex } = data; + const { accountId, value, metadata, gasLimit, name, constructorIndex, salt } = data; + + // const transformed = transformUserInput(api.registry, data.constructor.args, argValues); const { queue, process, txs, dismiss } = useTransactions(); const [txId, setTxId] = useState(0); const onSuccess = useNewContract(); @@ -26,13 +29,29 @@ export function Step3() { const isValid = (result: SubmittableResult) => !result.isError && !result.dispatchError; if (data.accountId) { + const constructor = metadata?.findConstructor(constructorIndex); + const transformed = transformUserInput(api.registry, constructor?.args || [], data.argValues); + const inputData = constructor?.toU8a(transformed).slice(1); // exclude the first byte (the length byte) + const tx = createInstantiateTx(api, data); if (!txId) { const newId = queue({ extrinsic: tx, accountId: data.accountId, - onSuccess, + onSuccess: result => { + // Pass the contract data and extrinsic to onSuccess + // @ts-ignore: TODO: solve type issue + return onSuccess({ + ...result, + contractData: { + salt: salt?.toString() || '', // Using codeHash as salt for demonstration + data: inputData || new Uint8Array(), + // @ts-ignore TODO + code: metadata?.json.source.contract_binary, + }, + }); + }, isValid, }); setTxId(newId); diff --git a/src/ui/contexts/DatabaseContext.tsx b/src/ui/contexts/DatabaseContext.tsx index cefaf4b5..470f5140 100644 --- a/src/ui/contexts/DatabaseContext.tsx +++ b/src/ui/contexts/DatabaseContext.tsx @@ -14,7 +14,7 @@ const INITIAL = {} as unknown as DbState; export function DatabaseContextProvider({ children, -}: React.HTMLAttributes): JSX.Element | null { +}: React.HTMLAttributes): React.ReactElement | null { const { genesisHash } = useApi(); const [state, setState] = useState(INITIAL); diff --git a/src/ui/hooks/useNewContract.ts b/src/ui/hooks/useNewContract.ts index 6d8e8295..e7e77ff2 100644 --- a/src/ui/hooks/useNewContract.ts +++ b/src/ui/hooks/useNewContract.ts @@ -3,21 +3,187 @@ import { useNavigate } from 'react-router'; import type { BlueprintSubmittableResult } from 'types'; -import { useDatabase, useInstantiate } from 'ui/contexts'; +import { useApi, useDatabase, useInstantiate } from 'ui/contexts'; +import { BigNumberish, ethers } from 'ethers'; +import { ApiTypes } from '@polkadot/api/types'; +import { hexToU8a, stringToU8a, u8aToHex } from '@polkadot/util'; +import { keccak256 } from 'ethers'; +import { decodeAddress } from '@polkadot/keyring'; + +interface ExtendedBlueprintSubmittableResult + extends BlueprintSubmittableResult { + contractData?: { + salt: string; + data: Uint8Array; + code: string; + originIsCaller?: boolean; + }; +} + +/** + * TypeScript equivalent of H160 (20-byte Ethereum address) + */ +type Address = string; + +/** + * Determine the address of a contract using CREATE semantics. + * @param deployer The address of the deployer + * @param nonce The nonce value + * @returns The contract address + */ +export function create1(deployer: string, nonce: number): Address { + // Convert deployer to bytes (remove 0x prefix if present) + const deployerBytes = ethers.hexlify(deployer); + ethers.toBeHex(nonce as BigNumberish); + // Convert nonce to hex (minimal encoding) + const nonceBytes = ethers.toBeHex(nonce as BigNumberish); + + // RLP encode [deployer, nonce] + const encodedData = ethers.encodeRlp([deployerBytes, nonceBytes]); + + // Calculate keccak256 hash of the RLP encoded data + const hash = ethers.keccak256(encodedData); + + // Take the last 20 bytes (40 hex chars + 0x prefix) + return ethers.getAddress('0x' + hash.substring(26)); +} + +export function create2( + deployer: string, + code: Uint8Array, + inputData: Uint8Array, + salt: string, +): string { + const initCode = new Uint8Array([...code, ...inputData]); + const initCodeHash = hexToU8a(keccak256(initCode)); + + const parts = new Uint8Array(1 + 20 + 32 + 32); // 0xff + deployer + salt + initCodeHash + parts[0] = 0xff; + parts.set(hexToU8a(deployer), 1); + parts.set(hexToU8a(salt), 21); + parts.set(initCodeHash, 53); + + const hash = keccak256(parts); + + // Return last 20 bytes as 0x-prefixed hex string + return ethers.getAddress('0x' + hash.substring(26)); +} + +/** + * Converts an account ID to an Ethereum address (H160) + * @param accountId The account ID bytes + * @returns The Ethereum address + */ +export function toEthAddress(accountId: Uint8Array | string): string { + // Convert string input to Uint8Array if needed + const accountBytes = typeof accountId === 'string' ? stringToU8a(accountId) : accountId; + + // Create a 32-byte buffer and copy account bytes into it + const accountBuffer = new Uint8Array(32); + accountBuffer.set(accountBytes.slice(0, 32)); + + if (isEthDerived(accountBytes)) { + // This was originally an eth address + // We just strip the 0xEE suffix to get the original address + return '0x' + Buffer.from(accountBuffer.slice(0, 20)).toString('hex'); + } else { + // This is an (ed|sr)25519 derived address + // Avoid truncating the public key by hashing it first + const accountHash = ethers.keccak256(accountBuffer); + return ethers.getAddress('0x' + accountHash.slice(2 + 24, 2 + 24 + 40)); // Skip '0x' prefix, then skip 12 bytes, take 20 bytes + } +} + +export function fromEthAddress(ethAddress: string): string { + // Remove '0x' prefix if it exists + const cleanAddress = ethAddress.startsWith('0x') ? ethAddress.slice(2) : ethAddress; + + // Convert the hex string to bytes + const addressBytes = Buffer.from(cleanAddress, 'hex'); + + // Check if the address is the expected length (20 bytes) + if (addressBytes.length !== 20) { + throw new Error('Invalid Ethereum address: must be 20 bytes'); + } + + // Create a 32-byte buffer + const result = new Uint8Array(32); + + // Set the first 20 bytes to the Ethereum address + result.set(addressBytes, 0); + + // Fill the remaining 12 bytes with 0xEE + for (let i = 20; i < 32; i++) { + result[i] = 0xee; + } + + return u8aToHex(result); +} + +/** + * Determines if an account ID is derived from an Ethereum address + * @param accountId The account ID bytes + * @returns True if the account is derived from an Ethereum address + */ +export function isEthDerived(accountId: Uint8Array): boolean { + if (accountId.length >= 32) { + return accountId[20] === 0xee && accountId[21] === 0xee; + } + return false; +} export function useNewContract() { const { db } = useDatabase(); const navigate = useNavigate(); + const instantiate = useInstantiate(); + const { api } = useApi(); + const { data: { accountId, name }, - } = useInstantiate(); + } = instantiate; + + async function getNonce() { + try { + const nonce = await api.call.accountNonceApi.accountNonce(accountId); + return nonce.toNumber(); + } catch (error) { + console.error('Error fetching nonce:', error); + return null; + } + } - return async function ({ contract }: BlueprintSubmittableResult<'promise'>): Promise { + return async function ({ + contract, + contractData, + }: ExtendedBlueprintSubmittableResult<'promise'>): Promise { if (accountId && contract?.abi.json) { + // Calculate the expected contract address based on the Rust logic + let calculatedAddress; + + if (contractData) { + const { salt, code, data, originIsCaller = false } = contractData; + const mappedAccount = toEthAddress(decodeAddress(accountId)); + + if (salt) { + // Use CREATE2 if salt is provided + calculatedAddress = create2(mappedAccount, hexToU8a(code), data, salt); + } else { + // Use CREATE1 if no salt is provided + const nonce = await getNonce(); + + if (nonce !== null) { + const adjustedNonce = originIsCaller ? Math.max(0, nonce - 1) : nonce; + calculatedAddress = create1(mappedAccount, adjustedNonce - 2); + } + } + } + const codeHash = contract.abi.info.source.wasmHash.toHex(); + const document = { abi: contract.abi.json, - address: contract.address.toString(), + address: calculatedAddress!, + dotAddress: fromEthAddress(calculatedAddress!), codeHash, date: new Date().toISOString(), name, @@ -32,7 +198,7 @@ export function useNewContract() { }), ]); - navigate(`/contract/${contract.address}`); + navigate(`/contract/${document.address}`); } }; } diff --git a/src/ui/hooks/useStoredContract.ts b/src/ui/hooks/useStoredContract.ts index 67d4286c..2b90a187 100644 --- a/src/ui/hooks/useStoredContract.ts +++ b/src/ui/hooks/useStoredContract.ts @@ -38,6 +38,7 @@ export function useStoredContract(address: string): UIContract | undefined { tx: contract.tx, codeHash: document.codeHash, address: contract.address.toString(), + dotAddress: document.dotAddress, date: document.date, id: document.id, type: document.external ? 'added' : 'instantiated', diff --git a/src/ui/layout/RootLayout.tsx b/src/ui/layout/RootLayout.tsx index 5545696a..0f3dc6dc 100644 --- a/src/ui/layout/RootLayout.tsx +++ b/src/ui/layout/RootLayout.tsx @@ -12,6 +12,13 @@ export function RootLayout({ accessory, heading, help, children, aside }: PagePr aside && 'grid grid-cols-[1fr_400px] gap-10', )} > +
+ NOTE: This is an ALPHA version for the ink! v6 Alpha release. If you run into issues, please + open an issue at{' '} + + https://github.com/use-ink/contracts-ui + +
{accessory &&
{accessory}
} diff --git a/src/ui/layout/sidebar/NavLink.tsx b/src/ui/layout/sidebar/NavLink.tsx index a1e91a0b..b0065b4f 100644 --- a/src/ui/layout/sidebar/NavLink.tsx +++ b/src/ui/layout/sidebar/NavLink.tsx @@ -4,7 +4,7 @@ import { NavLink as NavLinkBase, NavLinkProps } from 'react-router-dom'; interface Props extends NavLinkProps { - icon: (_: React.ComponentProps<'svg'>) => JSX.Element; + icon: (_: React.ComponentProps<'svg'>) => React.ReactElement; } export function NavLink({ children, icon: Icon, ...props }: Props): React.ReactElement { diff --git a/src/ui/layout/sidebar/NetworkAndUser.tsx b/src/ui/layout/sidebar/NetworkAndUser.tsx index 65290366..b7ab39ac 100644 --- a/src/ui/layout/sidebar/NetworkAndUser.tsx +++ b/src/ui/layout/sidebar/NetworkAndUser.tsx @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router'; -import { MAINNETS, TESTNETS } from '../../../constants'; +import { TESTNETS } from '../../../constants'; import { useApi } from 'ui/contexts'; import { classes } from 'lib/util'; import { Dropdown } from 'ui/components'; @@ -13,18 +13,18 @@ const testnetOptions = TESTNETS.map(network => ({ value: network.rpc, })); -const mainnetOptions = MAINNETS.map(network => ({ - label: network.name, - value: network.rpc, -})); +// const mainnetOptions = MAINNETS.map(network => ({ +// label: network.name, +// value: network.rpc, +// })); -const allOptions = [...testnetOptions, ...mainnetOptions]; +const allOptions = [...testnetOptions]; const dropdownOptions = [ - { - label: 'Live Networks', - options: mainnetOptions, - }, + // { + // label: 'Live Networks', + // options: mainnetOptions, + // }, { label: 'Test Networks', options: testnetOptions, diff --git a/src/ui/pages/AddressLookup.tsx b/src/ui/pages/AddressLookup.tsx index a66916de..58f9fb31 100644 --- a/src/ui/pages/AddressLookup.tsx +++ b/src/ui/pages/AddressLookup.tsx @@ -21,6 +21,7 @@ import { useApi, useDatabase } from 'ui/contexts'; import { useNonEmptyString } from 'ui/hooks/useNonEmptyString'; import { useStoredMetadata } from 'ui/hooks/useStoredMetadata'; import { RootLayout } from 'ui/layout'; +import { fromEthAddress } from 'ui/hooks'; export function AddressLookup() { const [searchString, setSearchString] = useState(''); @@ -62,6 +63,7 @@ export function AddressLookup() { const isOnChain = await getContractInfo(api, searchString); if (isOnChain) { const contract = await db.contracts.get({ address: searchString }); + // Contract is already instantiated in current UI if (contract) { navigate(`/contract/${searchString}`); @@ -191,6 +193,7 @@ export function AddressLookup() { const document = { abi: metadata.json, address, + dotAddress: fromEthAddress(address), codeHash: metadata.info.source.wasmHash.toHex(), date: new Date().toISOString(), name, diff --git a/src/ui/pages/ContractHeader.tsx b/src/ui/pages/ContractHeader.tsx index c2fbde3f..3ea5a8f8 100644 --- a/src/ui/pages/ContractHeader.tsx +++ b/src/ui/pages/ContractHeader.tsx @@ -11,21 +11,23 @@ interface Props { document: UIContract; } -export function ContractHeader({ document: { name, type, address, date, codeHash } }: Props) { +export function ContractHeader({ + document: { name, type, address, dotAddress, date, codeHash }, +}: Props) { switch (type) { case 'added': return (
You added this contract from{' '}
- - {truncate(address, 4)} + + {truncate(address.toString(), 4)}
{' '} on {displayDate(date)} and holds a value of{' '} - +
); @@ -38,7 +40,7 @@ export function ContractHeader({ document: { name, type, address, date, codeHash className="relative inline-block rounded bg-blue-500 bg-opacity-20 px-1.5 py-1 font-mono text-xs text-blue-400" title={address} > - {truncate(address, 4)} + {truncate(address.toString(), 4)}
{' '} @@ -52,7 +54,7 @@ export function ContractHeader({ document: { name, type, address, date, codeHash {' '} on {displayDate(date)} and holds a value of{' '} - + ); diff --git a/yarn.lock b/yarn.lock index 4b53b8cd..4dc60ce2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,10 +5,10 @@ __metadata: version: 5 cacheKey: 8 -"@aashutoshrathi/word-wrap@npm:^1.2.3": - version: 1.2.6 - resolution: "@aashutoshrathi/word-wrap@npm:1.2.6" - checksum: ada901b9e7c680d190f1d012c84217ce0063d8f5c5a7725bb91ec3c5ed99bb7572680eb2d2938a531ccbaec39a95422fcd8a6b4a13110c7d98dd75402f66a0cd +"@adraffy/ens-normalize@npm:1.10.1": + version: 1.10.1 + resolution: "@adraffy/ens-normalize@npm:1.10.1" + checksum: 0836f394ea256972ec19a0b5e78cb7f5bcdfd48d8a32c7478afc94dd53ae44c04d1aa2303d7f3077b4f3ac2323b1f557ab9188e8059978748fdcd83e04a80dcc languageName: node linkType: hard @@ -20,16 +20,6 @@ __metadata: linkType: hard "@ampproject/remapping@npm:^2.2.0": - version: 2.2.1 - resolution: "@ampproject/remapping@npm:2.2.1" - dependencies: - "@jridgewell/gen-mapping": ^0.3.0 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 03c04fd526acc64a1f4df22651186f3e5ef0a9d6d6530ce4482ec9841269cf7a11dbb8af79237c282d721c5312024ff17529cd72cc4768c11e999b58e2302079 - languageName: node - linkType: hard - -"@ampproject/remapping@npm:^2.3.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" dependencies: @@ -39,465 +29,209 @@ __metadata: languageName: node linkType: hard -"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/code-frame@npm:7.23.5" +"@babel/code-frame@npm:^7.0.0, @babel/code-frame@npm:^7.26.2": + version: 7.26.2 + resolution: "@babel/code-frame@npm:7.26.2" dependencies: - "@babel/highlight": ^7.23.4 - chalk: ^2.4.2 - checksum: d90981fdf56a2824a9b14d19a4c0e8db93633fd488c772624b4e83e0ceac6039a27cd298a247c3214faa952bf803ba23696172ae7e7235f3b97f43ba278c569a - languageName: node - linkType: hard - -"@babel/code-frame@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/code-frame@npm:7.24.7" - dependencies: - "@babel/highlight": ^7.24.7 + "@babel/helper-validator-identifier": ^7.25.9 + js-tokens: ^4.0.0 picocolors: ^1.0.0 - checksum: 830e62cd38775fdf84d612544251ce773d544a8e63df667728cc9e0126eeef14c6ebda79be0f0bc307e8318316b7f58c27ce86702e0a1f5c321d842eb38ffda4 - languageName: node - linkType: hard - -"@babel/compat-data@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/compat-data@npm:7.23.5" - checksum: 06ce244cda5763295a0ea924728c09bae57d35713b675175227278896946f922a63edf803c322f855a3878323d48d0255a2a3023409d2a123483c8a69ebb4744 + checksum: db13f5c42d54b76c1480916485e6900748bbcb0014a8aca87f50a091f70ff4e0d0a6db63cade75eb41fcc3d2b6ba0a7f89e343def4f96f00269b41b8ab8dd7b8 languageName: node linkType: hard -"@babel/compat-data@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/compat-data@npm:7.25.4" - checksum: b12a91d27c3731a4b0bdc9312a50b1911f41f7f728aaf0d4b32486e2257fd2cb2d3ea1a295e98449600c48f2c7883a3196ca77cda1cef7d97a10c2e83d037974 +"@babel/compat-data@npm:^7.26.8": + version: 7.26.8 + resolution: "@babel/compat-data@npm:7.26.8" + checksum: 1bb04c6860c8c9555b933cb9c3caf5ef1dac331a37a351efb67956fc679f695d487aea76e792dd43823702c1300f7906f2a298e50b4a8d7ec199ada9c340c365 languageName: node linkType: hard -"@babel/core@npm:^7.23.9, @babel/core@npm:^7.24.5": - version: 7.25.2 - resolution: "@babel/core@npm:7.25.2" +"@babel/core@npm:^7.23.9, @babel/core@npm:^7.26.10, @babel/core@npm:^7.7.5": + version: 7.26.10 + resolution: "@babel/core@npm:7.26.10" dependencies: "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.0 - "@babel/helper-compilation-targets": ^7.25.2 - "@babel/helper-module-transforms": ^7.25.2 - "@babel/helpers": ^7.25.0 - "@babel/parser": ^7.25.0 - "@babel/template": ^7.25.0 - "@babel/traverse": ^7.25.2 - "@babel/types": ^7.25.2 + "@babel/code-frame": ^7.26.2 + "@babel/generator": ^7.26.10 + "@babel/helper-compilation-targets": ^7.26.5 + "@babel/helper-module-transforms": ^7.26.0 + "@babel/helpers": ^7.26.10 + "@babel/parser": ^7.26.10 + "@babel/template": ^7.26.9 + "@babel/traverse": ^7.26.10 + "@babel/types": ^7.26.10 convert-source-map: ^2.0.0 debug: ^4.1.0 gensync: ^1.0.0-beta.2 json5: ^2.2.3 semver: ^6.3.1 - checksum: 9a1ef604a7eb62195f70f9370cec45472a08114e3934e3eaaedee8fd754edf0730e62347c7b4b5e67d743ce57b5bb8cf3b92459482ca94d06e06246ef021390a - languageName: node - linkType: hard - -"@babel/core@npm:^7.7.5": - version: 7.23.9 - resolution: "@babel/core@npm:7.23.9" - dependencies: - "@ampproject/remapping": ^2.2.0 - "@babel/code-frame": ^7.23.5 - "@babel/generator": ^7.23.6 - "@babel/helper-compilation-targets": ^7.23.6 - "@babel/helper-module-transforms": ^7.23.3 - "@babel/helpers": ^7.23.9 - "@babel/parser": ^7.23.9 - "@babel/template": ^7.23.9 - "@babel/traverse": ^7.23.9 - "@babel/types": ^7.23.9 - convert-source-map: ^2.0.0 - debug: ^4.1.0 - gensync: ^1.0.0-beta.2 - json5: ^2.2.3 - semver: ^6.3.1 - checksum: 634a511f74db52a5f5a283c1121f25e2227b006c095b84a02a40a9213842489cd82dc7d61cdc74e10b5bcd9bb0a4e28bab47635b54c7e2256d47ab57356e2a76 - languageName: node - linkType: hard - -"@babel/generator@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/generator@npm:7.23.6" - dependencies: - "@babel/types": ^7.23.6 - "@jridgewell/gen-mapping": ^0.3.2 - "@jridgewell/trace-mapping": ^0.3.17 - jsesc: ^2.5.1 - checksum: 1a1a1c4eac210f174cd108d479464d053930a812798e09fee069377de39a893422df5b5b146199ead7239ae6d3a04697b45fc9ac6e38e0f6b76374390f91fc6c + checksum: 0217325bd46fb9c828331c14dbe3f015ee13d9aecec423ef5acc0ce8b51a3d2a2d55f2ede252b99d0ab9b2f1a06e2881694a890f92006aeac9ebe5be2914c089 languageName: node linkType: hard -"@babel/generator@npm:^7.25.0, @babel/generator@npm:^7.25.4": - version: 7.25.5 - resolution: "@babel/generator@npm:7.25.5" +"@babel/generator@npm:^7.26.10, @babel/generator@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/generator@npm:7.27.0" dependencies: - "@babel/types": ^7.25.4 + "@babel/parser": ^7.27.0 + "@babel/types": ^7.27.0 "@jridgewell/gen-mapping": ^0.3.5 "@jridgewell/trace-mapping": ^0.3.25 - jsesc: ^2.5.1 - checksum: d7713f02536a8144eca810e9b13ae854b05fec462348eaf52e7b50df2c0a312bc43bfff0e8e10d6dd982e8986d61175ac8e67d7358a8b4dad9db4d6733bf0c9c - languageName: node - linkType: hard - -"@babel/helper-compilation-targets@npm:^7.23.6": - version: 7.23.6 - resolution: "@babel/helper-compilation-targets@npm:7.23.6" - dependencies: - "@babel/compat-data": ^7.23.5 - "@babel/helper-validator-option": ^7.23.5 - browserslist: ^4.22.2 - lru-cache: ^5.1.1 - semver: ^6.3.1 - checksum: c630b98d4527ac8fe2c58d9a06e785dfb2b73ec71b7c4f2ddf90f814b5f75b547f3c015f110a010fd31f76e3864daaf09f3adcd2f6acdbfb18a8de3a48717590 + jsesc: ^3.0.2 + checksum: cdb6e3e8441241321192275f7a1265b6d610b44d57ae3bbb6047cb142849fd2ace1e15d5ee0685337e152f5d8760babd3ab898b6e5065e4b344006d2f0da759f languageName: node linkType: hard -"@babel/helper-compilation-targets@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-compilation-targets@npm:7.25.2" +"@babel/helper-compilation-targets@npm:^7.26.5": + version: 7.27.0 + resolution: "@babel/helper-compilation-targets@npm:7.27.0" dependencies: - "@babel/compat-data": ^7.25.2 - "@babel/helper-validator-option": ^7.24.8 - browserslist: ^4.23.1 + "@babel/compat-data": ^7.26.8 + "@babel/helper-validator-option": ^7.25.9 + browserslist: ^4.24.0 lru-cache: ^5.1.1 semver: ^6.3.1 - checksum: aed33c5496cb9db4b5e2d44e26bf8bc474074cc7f7bb5ebe1d4a20fdeb362cb3ba9e1596ca18c7484bcd6e5c3a155ab975e420d520c0ae60df81f9de04d0fd16 - languageName: node - linkType: hard - -"@babel/helper-environment-visitor@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-environment-visitor@npm:7.22.20" - checksum: d80ee98ff66f41e233f36ca1921774c37e88a803b2f7dca3db7c057a5fea0473804db9fb6729e5dbfd07f4bed722d60f7852035c2c739382e84c335661590b69 - languageName: node - linkType: hard - -"@babel/helper-function-name@npm:^7.23.0": - version: 7.23.0 - resolution: "@babel/helper-function-name@npm:7.23.0" - dependencies: - "@babel/template": ^7.22.15 - "@babel/types": ^7.23.0 - checksum: e44542257b2d4634a1f979244eb2a4ad8e6d75eb6761b4cfceb56b562f7db150d134bc538c8e6adca3783e3bc31be949071527aa8e3aab7867d1ad2d84a26e10 + checksum: ad8b2351cde8d2e5c417f02f0d88af61ba080439e74f6d6ac578af5d63f8e35d0f36619cf18620ab627e9360c5c4b8a23784eecbef32d97944acb4ad2a57223f languageName: node linkType: hard -"@babel/helper-hoist-variables@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-hoist-variables@npm:7.22.5" +"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-module-imports@npm:7.25.9" dependencies: - "@babel/types": ^7.22.5 - checksum: 394ca191b4ac908a76e7c50ab52102669efe3a1c277033e49467913c7ed6f7c64d7eacbeabf3bed39ea1f41731e22993f763b1edce0f74ff8563fd1f380d92cc + "@babel/traverse": ^7.25.9 + "@babel/types": ^7.25.9 + checksum: 1b411ce4ca825422ef7065dffae7d8acef52023e51ad096351e3e2c05837e9bf9fca2af9ca7f28dc26d596a588863d0fedd40711a88e350b736c619a80e704e6 languageName: node linkType: hard -"@babel/helper-module-imports@npm:^7.16.7, @babel/helper-module-imports@npm:^7.22.15": - version: 7.22.15 - resolution: "@babel/helper-module-imports@npm:7.22.15" +"@babel/helper-module-transforms@npm:^7.26.0": + version: 7.26.0 + resolution: "@babel/helper-module-transforms@npm:7.26.0" dependencies: - "@babel/types": ^7.22.15 - checksum: ecd7e457df0a46f889228f943ef9b4a47d485d82e030676767e6a2fdcbdaa63594d8124d4b55fd160b41c201025aec01fc27580352b1c87a37c9c6f33d116702 - languageName: node - linkType: hard - -"@babel/helper-module-imports@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-module-imports@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: 8ac15d96d262b8940bc469052a048e06430bba1296369be695fabdf6799f201dd0b00151762b56012a218464e706bc033f27c07f6cec20c6f8f5fd6543c67054 - languageName: node - linkType: hard - -"@babel/helper-module-transforms@npm:^7.23.3": - version: 7.23.3 - resolution: "@babel/helper-module-transforms@npm:7.23.3" - dependencies: - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-module-imports": ^7.22.15 - "@babel/helper-simple-access": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/helper-validator-identifier": ^7.22.20 + "@babel/helper-module-imports": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + "@babel/traverse": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0 - checksum: 5d0895cfba0e16ae16f3aa92fee108517023ad89a855289c4eb1d46f7aef4519adf8e6f971e1d55ac20c5461610e17213f1144097a8f932e768a9132e2278d71 + checksum: 942eee3adf2b387443c247a2c190c17c4fd45ba92a23087abab4c804f40541790d51ad5277e4b5b1ed8d5ba5b62de73857446b7742f835c18ebd350384e63917 languageName: node linkType: hard -"@babel/helper-module-transforms@npm:^7.25.2": - version: 7.25.2 - resolution: "@babel/helper-module-transforms@npm:7.25.2" - dependencies: - "@babel/helper-module-imports": ^7.24.7 - "@babel/helper-simple-access": ^7.24.7 - "@babel/helper-validator-identifier": ^7.24.7 - "@babel/traverse": ^7.25.2 - peerDependencies: - "@babel/core": ^7.0.0 - checksum: 282d4e3308df6746289e46e9c39a0870819630af5f84d632559171e4fae6045684d771a65f62df3d569e88ccf81dc2def78b8338a449ae3a94bb421aa14fc367 +"@babel/helper-plugin-utils@npm:^7.25.9": + version: 7.26.5 + resolution: "@babel/helper-plugin-utils@npm:7.26.5" + checksum: 4771fbb1711c624c62d12deabc2ed7435a6e6994b6ce09d5ede1bc1bf19be59c3775461a1e693bdd596af865685e87bb2abc778f62ceadc1b2095a8e2aa74180 languageName: node linkType: hard -"@babel/helper-plugin-utils@npm:^7.24.7": - version: 7.24.8 - resolution: "@babel/helper-plugin-utils@npm:7.24.8" - checksum: 73b1a83ba8bcee21dc94de2eb7323207391715e4369fd55844bb15cf13e3df6f3d13a40786d990e6370bf0f571d94fc31f70dec96c1d1002058258c35ca3767a +"@babel/helper-string-parser@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-string-parser@npm:7.25.9" + checksum: 6435ee0849e101681c1849868278b5aee82686ba2c1e27280e5e8aca6233af6810d39f8e4e693d2f2a44a3728a6ccfd66f72d71826a94105b86b731697cdfa99 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.22.5": - version: 7.22.5 - resolution: "@babel/helper-simple-access@npm:7.22.5" - dependencies: - "@babel/types": ^7.22.5 - checksum: fe9686714caf7d70aedb46c3cce090f8b915b206e09225f1e4dbc416786c2fdbbee40b38b23c268b7ccef749dd2db35f255338fb4f2444429874d900dede5ad2 +"@babel/helper-validator-identifier@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-identifier@npm:7.25.9" + checksum: 5b85918cb1a92a7f3f508ea02699e8d2422fe17ea8e82acd445006c0ef7520fbf48e3dbcdaf7b0a1d571fc3a2715a29719e5226636cb6042e15fe6ed2a590944 languageName: node linkType: hard -"@babel/helper-simple-access@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-simple-access@npm:7.24.7" - dependencies: - "@babel/traverse": ^7.24.7 - "@babel/types": ^7.24.7 - checksum: ddbf55f9dea1900213f2a1a8500fabfd21c5a20f44dcfa957e4b0d8638c730f88751c77f678644f754f1a1dc73f4eb8b766c300deb45a9daad000e4247957819 +"@babel/helper-validator-option@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/helper-validator-option@npm:7.25.9" + checksum: 9491b2755948ebbdd68f87da907283698e663b5af2d2b1b02a2765761974b1120d5d8d49e9175b167f16f72748ffceec8c9cf62acfbee73f4904507b246e2b3d languageName: node linkType: hard -"@babel/helper-split-export-declaration@npm:^7.22.6": - version: 7.22.6 - resolution: "@babel/helper-split-export-declaration@npm:7.22.6" +"@babel/helpers@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/helpers@npm:7.27.0" dependencies: - "@babel/types": ^7.22.5 - checksum: e141cace583b19d9195f9c2b8e17a3ae913b7ee9b8120246d0f9ca349ca6f03cb2c001fd5ec57488c544347c0bb584afec66c936511e447fd20a360e591ac921 + "@babel/template": ^7.27.0 + "@babel/types": ^7.27.0 + checksum: d11bb8ada0c5c298d2dbd478d69b16a79216b812010e78855143e321807df4e34f60ab65e56332e72315ccfe52a22057f0cf1dcc06e518dcfa3e3141bb8576cd languageName: node linkType: hard -"@babel/helper-string-parser@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/helper-string-parser@npm:7.23.4" - checksum: c0641144cf1a7e7dc93f3d5f16d5327465b6cf5d036b48be61ecba41e1eece161b48f46b7f960951b67f8c3533ce506b16dece576baef4d8b3b49f8c65410f90 - languageName: node - linkType: hard - -"@babel/helper-string-parser@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-string-parser@npm:7.24.8" - checksum: 39b03c5119216883878655b149148dc4d2e284791e969b19467a9411fccaa33f7a713add98f4db5ed519535f70ad273cdadfd2eb54d47ebbdeac5083351328ce - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.22.20": - version: 7.22.20 - resolution: "@babel/helper-validator-identifier@npm:7.22.20" - checksum: 136412784d9428266bcdd4d91c32bcf9ff0e8d25534a9d94b044f77fe76bc50f941a90319b05aafd1ec04f7d127cd57a179a3716009ff7f3412ef835ada95bdc - languageName: node - linkType: hard - -"@babel/helper-validator-identifier@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/helper-validator-identifier@npm:7.24.7" - checksum: 6799ab117cefc0ecd35cd0b40ead320c621a298ecac88686a14cffceaac89d80cdb3c178f969861bf5fa5e4f766648f9161ea0752ecfe080d8e89e3147270257 - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.23.5": - version: 7.23.5 - resolution: "@babel/helper-validator-option@npm:7.23.5" - checksum: 537cde2330a8aede223552510e8a13e9c1c8798afee3757995a7d4acae564124fe2bf7e7c3d90d62d3657434a74340a274b3b3b1c6f17e9a2be1f48af29cb09e - languageName: node - linkType: hard - -"@babel/helper-validator-option@npm:^7.24.8": - version: 7.24.8 - resolution: "@babel/helper-validator-option@npm:7.24.8" - checksum: a52442dfa74be6719c0608fee3225bd0493c4057459f3014681ea1a4643cd38b68ff477fe867c4b356da7330d085f247f0724d300582fa4ab9a02efaf34d107c - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.23.9": - version: 7.23.9 - resolution: "@babel/helpers@npm:7.23.9" - dependencies: - "@babel/template": ^7.23.9 - "@babel/traverse": ^7.23.9 - "@babel/types": ^7.23.9 - checksum: 2678231192c0471dbc2fc403fb19456cc46b1afefcfebf6bc0f48b2e938fdb0fef2e0fe90c8c8ae1f021dae5012b700372e4b5d15867f1d7764616532e4a6324 - languageName: node - linkType: hard - -"@babel/helpers@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/helpers@npm:7.25.0" - dependencies: - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 739e3704ff41a30f5eaac469b553f4d3ab02be6ced083f5925851532dfbd9efc5c347728e77b754ed0b262a4e5e384e60932a62c192d338db7e4b7f3adf9f4a7 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.23.4": - version: 7.23.4 - resolution: "@babel/highlight@npm:7.23.4" +"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9, @babel/parser@npm:^7.26.10, @babel/parser@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/parser@npm:7.27.0" dependencies: - "@babel/helper-validator-identifier": ^7.22.20 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - checksum: 643acecdc235f87d925979a979b539a5d7d1f31ae7db8d89047269082694122d11aa85351304c9c978ceeb6d250591ccadb06c366f358ccee08bb9c122476b89 - languageName: node - linkType: hard - -"@babel/highlight@npm:^7.24.7": - version: 7.24.7 - resolution: "@babel/highlight@npm:7.24.7" - dependencies: - "@babel/helper-validator-identifier": ^7.24.7 - chalk: ^2.4.2 - js-tokens: ^4.0.0 - picocolors: ^1.0.0 - checksum: 5cd3a89f143671c4ac129960024ba678b669e6fc673ce078030f5175002d1d3d52bc10b22c5b916a6faf644b5028e9a4bd2bb264d053d9b05b6a98690f1d46f1 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.1.0, @babel/parser@npm:^7.20.7, @babel/parser@npm:^7.23.9": - version: 7.23.9 - resolution: "@babel/parser@npm:7.23.9" - bin: - parser: ./bin/babel-parser.js - checksum: e7cd4960ac8671774e13803349da88d512f9292d7baa952173260d3e8f15620a28a3701f14f709d769209022f9e7b79965256b8be204fc550cfe783cdcabe7c7 - languageName: node - linkType: hard - -"@babel/parser@npm:^7.25.0, @babel/parser@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/parser@npm:7.25.4" - dependencies: - "@babel/types": ^7.25.4 + "@babel/types": ^7.27.0 bin: parser: ./bin/babel-parser.js - checksum: fe4f083d4ad34f019dd7fad672cd007003004fb0a3df9b7315a5da9a5e8e56c1fed95acab6862e7d76cfccb2e8e364bcc307e9117718e6bb6dfb2e87ad065abf + checksum: 062a4e6d51553603253990c84e051ed48671a55b9d4e9caf2eff9dc888465070a0cfd288a467dbf0d99507781ea4a835b5606e32ddc0319f1b9273f913676829 languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-self@npm:^7.24.5": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-self@npm:7.24.7" +"@babel/plugin-transform-react-jsx-self@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-self@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: 2d72c33664e614031b8a03fc2d4cfd185e99efb1d681cbde4b0b4ab379864b31d83ee923509892f6d94b2c5893c309f0217d33bcda3e470ed42297f958138381 + checksum: 41c833cd7f91b1432710f91b1325706e57979b2e8da44e83d86312c78bbe96cd9ef778b4e79e4e17ab25fa32c72b909f2be7f28e876779ede28e27506c41f4ae languageName: node linkType: hard -"@babel/plugin-transform-react-jsx-source@npm:^7.24.1": - version: 7.24.7 - resolution: "@babel/plugin-transform-react-jsx-source@npm:7.24.7" +"@babel/plugin-transform-react-jsx-source@npm:^7.25.9": + version: 7.25.9 + resolution: "@babel/plugin-transform-react-jsx-source@npm:7.25.9" dependencies: - "@babel/helper-plugin-utils": ^7.24.7 + "@babel/helper-plugin-utils": ^7.25.9 peerDependencies: "@babel/core": ^7.0.0-0 - checksum: c9afcb2259dd124a2de76f8a578589c18bd2f24dbcf78fe02b53c5cbc20c493c4618369604720e4e699b52be10ba0751b97140e1ef8bc8f0de0a935280e9d5b7 - languageName: node - linkType: hard - -"@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": - version: 7.23.9 - resolution: "@babel/runtime@npm:7.23.9" - dependencies: - regenerator-runtime: ^0.14.0 - checksum: 6bbebe8d27c0c2dd275d1ac197fc1a6c00e18dab68cc7aaff0adc3195b45862bae9c4cc58975629004b0213955b2ed91e99eccb3d9b39cabea246c657323d667 + checksum: a3e0e5672e344e9d01fb20b504fe29a84918eaa70cec512c4d4b1b035f72803261257343d8e93673365b72c371f35cf34bb0d129720bf178a4c87812c8b9c662 languageName: node linkType: hard -"@babel/runtime@npm:^7.21.0": - version: 7.25.4 - resolution: "@babel/runtime@npm:7.25.4" +"@babel/runtime@npm:^7.12.0, @babel/runtime@npm:^7.12.5, @babel/runtime@npm:^7.18.3, @babel/runtime@npm:^7.21.0, @babel/runtime@npm:^7.5.5, @babel/runtime@npm:^7.8.7": + version: 7.27.0 + resolution: "@babel/runtime@npm:7.27.0" dependencies: regenerator-runtime: ^0.14.0 - checksum: 5c2aab03788e77f1f959d7e6ce714c299adfc9b14fb6295c2a17eb7cad0dd9c2ebfb2d25265f507f68c43d5055c5cd6f71df02feb6502cea44b68432d78bcbbe - languageName: node - linkType: hard - -"@babel/template@npm:^7.22.15, @babel/template@npm:^7.23.9": - version: 7.23.9 - resolution: "@babel/template@npm:7.23.9" - dependencies: - "@babel/code-frame": ^7.23.5 - "@babel/parser": ^7.23.9 - "@babel/types": ^7.23.9 - checksum: 6e67414c0f7125d7ecaf20c11fab88085fa98a96c3ef10da0a61e962e04fdf3a18a496a66047005ddd1bb682a7cc7842d556d1db2f3f3f6ccfca97d5e445d342 + checksum: 3e73d9e65f76fad8f99802b5364c941f4a60c693b3eca66147bb0bfa54cf0fbe017232155e16e3fd83c0a049b51b8d7239efbd73626534abe8b54a6dd57dcb1b languageName: node linkType: hard -"@babel/template@npm:^7.25.0": - version: 7.25.0 - resolution: "@babel/template@npm:7.25.0" +"@babel/template@npm:^7.26.9, @babel/template@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/template@npm:7.27.0" dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/parser": ^7.25.0 - "@babel/types": ^7.25.0 - checksum: 3f2db568718756d0daf2a16927b78f00c425046b654cd30b450006f2e84bdccaf0cbe6dc04994aa1f5f6a4398da2f11f3640a4d3ee31722e43539c4c919c817b - languageName: node - linkType: hard - -"@babel/traverse@npm:^7.23.9": - version: 7.23.9 - resolution: "@babel/traverse@npm:7.23.9" - dependencies: - "@babel/code-frame": ^7.23.5 - "@babel/generator": ^7.23.6 - "@babel/helper-environment-visitor": ^7.22.20 - "@babel/helper-function-name": ^7.23.0 - "@babel/helper-hoist-variables": ^7.22.5 - "@babel/helper-split-export-declaration": ^7.22.6 - "@babel/parser": ^7.23.9 - "@babel/types": ^7.23.9 - debug: ^4.3.1 - globals: ^11.1.0 - checksum: a932f7aa850e158c00c97aad22f639d48c72805c687290f6a73e30c5c4957c07f5d28310c9bf59648e2980fe6c9d16adeb2ff92a9ca0f97fa75739c1328fc6c3 + "@babel/code-frame": ^7.26.2 + "@babel/parser": ^7.27.0 + "@babel/types": ^7.27.0 + checksum: 46d6db4c204a092f11ad6c3bfb6ec3dc1422e32121186d68ab1b3e633313aa5b7e21f26ca801dbd7da21f256225305a76454429fc500e52dabadb30af35df961 languageName: node linkType: hard -"@babel/traverse@npm:^7.24.7, @babel/traverse@npm:^7.25.2": - version: 7.25.4 - resolution: "@babel/traverse@npm:7.25.4" +"@babel/traverse@npm:^7.25.9, @babel/traverse@npm:^7.26.10": + version: 7.27.0 + resolution: "@babel/traverse@npm:7.27.0" dependencies: - "@babel/code-frame": ^7.24.7 - "@babel/generator": ^7.25.4 - "@babel/parser": ^7.25.4 - "@babel/template": ^7.25.0 - "@babel/types": ^7.25.4 + "@babel/code-frame": ^7.26.2 + "@babel/generator": ^7.27.0 + "@babel/parser": ^7.27.0 + "@babel/template": ^7.27.0 + "@babel/types": ^7.27.0 debug: ^4.3.1 globals: ^11.1.0 - checksum: 3b6d879b9d843b119501585269b3599f047011ae21eb7820d00aef62fc3a2bcdaf6f4cdf2679795a2d7c0b6b5d218974916e422f08dea08613dc42188ef21e4b - languageName: node - linkType: hard - -"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.22.15, @babel/types@npm:^7.22.5, @babel/types@npm:^7.23.0, @babel/types@npm:^7.23.6, @babel/types@npm:^7.23.9, @babel/types@npm:^7.8.3": - version: 7.23.9 - resolution: "@babel/types@npm:7.23.9" - dependencies: - "@babel/helper-string-parser": ^7.23.4 - "@babel/helper-validator-identifier": ^7.22.20 - to-fast-properties: ^2.0.0 - checksum: 0a9b008e9bfc89beb8c185e620fa0f8ed6c771f1e1b2e01e1596870969096fec7793898a1d64a035176abf1dd13e2668ee30bf699f2d92c210a8128f4b151e65 + checksum: 922d22aa91200e1880cfa782802100aa5b236fab89a44b9c40cfea94163246efd010626f7dc2b9d7769851c1fa2d8e8f8a1e0168ff4a7094e9b737c32760baa1 languageName: node linkType: hard -"@babel/types@npm:^7.24.7, @babel/types@npm:^7.25.0, @babel/types@npm:^7.25.2, @babel/types@npm:^7.25.4": - version: 7.25.4 - resolution: "@babel/types@npm:7.25.4" +"@babel/types@npm:^7.0.0, @babel/types@npm:^7.20.7, @babel/types@npm:^7.25.9, @babel/types@npm:^7.26.10, @babel/types@npm:^7.27.0": + version: 7.27.0 + resolution: "@babel/types@npm:7.27.0" dependencies: - "@babel/helper-string-parser": ^7.24.8 - "@babel/helper-validator-identifier": ^7.24.7 - to-fast-properties: ^2.0.0 - checksum: 497f8b583c54a92a59c3ec542144695064cd5c384fcca46ba1aa301d5e5dd6c1d011f312ca024cb0f9c956da07ae82fb4c348c31a30afa31a074c027720d2aa8 + "@babel/helper-string-parser": ^7.25.9 + "@babel/helper-validator-identifier": ^7.25.9 + checksum: 59582019eb8a693d4277015d4dec0233874d884b9019dcd09550332db7f0f2ac9e30eca685bb0ada4bab5a4dc8bbc2a6bcaadb151c69b7e6aa94b5eaf8fc8c51 languageName: node linkType: hard @@ -518,13 +252,13 @@ __metadata: linkType: hard "@cypress/code-coverage@npm:^3.12.20": - version: 3.12.20 - resolution: "@cypress/code-coverage@npm:3.12.20" + version: 3.14.0 + resolution: "@cypress/code-coverage@npm:3.14.0" dependencies: "@cypress/webpack-preprocessor": ^6.0.0 chalk: 4.1.2 - dayjs: 1.11.10 - debug: 4.3.4 + dayjs: 1.11.13 + debug: 4.4.0 execa: 4.1.0 globby: 11.1.0 istanbul-lib-coverage: ^3.0.0 @@ -536,13 +270,13 @@ __metadata: babel-loader: ^8.3 || ^9 cypress: "*" webpack: ^4 || ^5 - checksum: c8674aaa79b039d1b712f8ff426594a061d11e07b8b4078dc9fa3103849643ac582ad694b01303afef8326a26f8a2925e8d6a4a07f14ca7b23e1e482da2da55b + checksum: 6835c21d59d6fa159b5b40645abcc82560d6a71ec02b1d184ae4794eb688a5dabe89b4205f7079b9e699cd4d64720ec3576ac790c07c2c338fa22360547f4504 languageName: node linkType: hard "@cypress/request@npm:^3.0.1": - version: 3.0.1 - resolution: "@cypress/request@npm:3.0.1" + version: 3.0.8 + resolution: "@cypress/request@npm:3.0.8" dependencies: aws-sign2: ~0.7.0 aws4: ^1.8.0 @@ -550,19 +284,19 @@ __metadata: combined-stream: ~1.0.6 extend: ~3.0.2 forever-agent: ~0.6.1 - form-data: ~2.3.2 - http-signature: ~1.3.6 + form-data: ~4.0.0 + http-signature: ~1.4.0 is-typedarray: ~1.0.0 isstream: ~0.1.2 json-stringify-safe: ~5.0.1 mime-types: ~2.1.19 performance-now: ^2.1.0 - qs: 6.10.4 + qs: 6.14.0 safe-buffer: ^5.1.2 - tough-cookie: ^4.1.3 + tough-cookie: ^5.0.0 tunnel-agent: ^0.6.0 uuid: ^8.3.2 - checksum: 7175522ebdbe30e3c37973e204c437c23ce659e58d5939466615bddcd58d778f3a8ea40f087b965ae8b8138ea8d102b729c6eb18c6324f121f3778f4a2e8e727 + checksum: 0a80d5872c6a82b74ed639be773ea68f5047aea63e9e6a10e64eda73ebab9c0ee0a7435df4b11ededc49a7e186884aa7997143effd21ef6321e233489764668b languageName: node linkType: hard @@ -583,18 +317,19 @@ __metadata: linkType: hard "@cypress/webpack-preprocessor@npm:^6.0.0": - version: 6.0.1 - resolution: "@cypress/webpack-preprocessor@npm:6.0.1" + version: 6.0.4 + resolution: "@cypress/webpack-preprocessor@npm:6.0.4" dependencies: bluebird: 3.7.1 debug: ^4.3.4 lodash: ^4.17.20 + semver: ^7.3.2 peerDependencies: - "@babel/core": ^7.0.1 - "@babel/preset-env": ^7.0.0 - babel-loader: ^8.3 || ^9 + "@babel/core": ^7.25.2 + "@babel/preset-env": ^7.25.3 + babel-loader: ^8.3 || ^9 || ^10 webpack: ^4 || ^5 - checksum: 7e7195603423c6147220642829b02a5953c624bfcb618942ac5def545d289c72fb183f2d7b7810e3db39ae9441927fe3bcadcb51bf693e2a4b48251c08a78666 + checksum: 345c9b07f3e090f8e0eb8260c8d8331914ba3cbd2a985843e0a87aa70094b675cc8871c3ca86e23098507427272bb18258f4a8a6bcf70e024c48c7b7ba98a164 languageName: node linkType: hard @@ -608,120 +343,148 @@ __metadata: languageName: node linkType: hard -"@emotion/babel-plugin@npm:^11.11.0": - version: 11.11.0 - resolution: "@emotion/babel-plugin@npm:11.11.0" +"@emnapi/core@npm:^1.4.0": + version: 1.4.3 + resolution: "@emnapi/core@npm:1.4.3" + dependencies: + "@emnapi/wasi-threads": 1.0.2 + tslib: ^2.4.0 + checksum: 1c757d380b3cecec637a2eccfb31b770b995060f695d1e15b29a86e2038909a24152947ef6e4b6586759e6716148ff17f40e51367d1b79c9a3e1b6812537bdf4 + languageName: node + linkType: hard + +"@emnapi/runtime@npm:^1.4.0": + version: 1.4.3 + resolution: "@emnapi/runtime@npm:1.4.3" + dependencies: + tslib: ^2.4.0 + checksum: ff2074809638ed878e476ece370c6eae7e6257bf029a581bb7a290488d8f2a08c420a65988c7f03bfc6bb689218f0cd995d2f935bd182150b357fc2341142f4f + languageName: node + linkType: hard + +"@emnapi/wasi-threads@npm:1.0.2": + version: 1.0.2 + resolution: "@emnapi/wasi-threads@npm:1.0.2" + dependencies: + tslib: ^2.4.0 + checksum: c289cd3d0e26f11de23429a4abc7f99927917c0871d5a22637cbb75170f2b58d3a42e80d76dea89d054e529f79e35cdc953324819a7f990305d0db2897fa5fab + languageName: node + linkType: hard + +"@emotion/babel-plugin@npm:^11.13.5": + version: 11.13.5 + resolution: "@emotion/babel-plugin@npm:11.13.5" dependencies: "@babel/helper-module-imports": ^7.16.7 "@babel/runtime": ^7.18.3 - "@emotion/hash": ^0.9.1 - "@emotion/memoize": ^0.8.1 - "@emotion/serialize": ^1.1.2 + "@emotion/hash": ^0.9.2 + "@emotion/memoize": ^0.9.0 + "@emotion/serialize": ^1.3.3 babel-plugin-macros: ^3.1.0 convert-source-map: ^1.5.0 escape-string-regexp: ^4.0.0 find-root: ^1.1.0 source-map: ^0.5.7 stylis: 4.2.0 - checksum: 6b363edccc10290f7a23242c06f88e451b5feb2ab94152b18bb8883033db5934fb0e421e2d67d09907c13837c21218a3ac28c51707778a54d6cd3706c0c2f3f9 + checksum: c41df7e6c19520e76d1939f884be878bf88b5ba00bd3de9d05c5b6c5baa5051686ab124d7317a0645de1b017b574d8139ae1d6390ec267fbe8e85a5252afb542 languageName: node linkType: hard -"@emotion/cache@npm:^11.11.0, @emotion/cache@npm:^11.4.0": - version: 11.11.0 - resolution: "@emotion/cache@npm:11.11.0" +"@emotion/cache@npm:^11.14.0, @emotion/cache@npm:^11.4.0": + version: 11.14.0 + resolution: "@emotion/cache@npm:11.14.0" dependencies: - "@emotion/memoize": ^0.8.1 - "@emotion/sheet": ^1.2.2 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 + "@emotion/memoize": ^0.9.0 + "@emotion/sheet": ^1.4.0 + "@emotion/utils": ^1.4.2 + "@emotion/weak-memoize": ^0.4.0 stylis: 4.2.0 - checksum: 8eb1dc22beaa20c21a2e04c284d5a2630a018a9d51fb190e52de348c8d27f4e8ca4bbab003d68b4f6cd9cc1c569ca747a997797e0f76d6c734a660dc29decf08 + checksum: 0a81591541ea43bc7851742e6444b7800d72e98006f94e775ae6ea0806662d14e0a86ff940f5f19d33b4bb2c427c882aa65d417e7322a6e0d5f20fe65ed920c9 languageName: node linkType: hard -"@emotion/hash@npm:^0.9.1": - version: 0.9.1 - resolution: "@emotion/hash@npm:0.9.1" - checksum: 716e17e48bf9047bf9383982c071de49f2615310fb4e986738931776f5a823bc1f29c84501abe0d3df91a3803c80122d24e28b57351bca9e01356ebb33d89876 +"@emotion/hash@npm:^0.9.2": + version: 0.9.2 + resolution: "@emotion/hash@npm:0.9.2" + checksum: 379bde2830ccb0328c2617ec009642321c0e009a46aa383dfbe75b679c6aea977ca698c832d225a893901f29d7b3eef0e38cf341f560f6b2b56f1ff23c172387 languageName: node linkType: hard -"@emotion/memoize@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/memoize@npm:0.8.1" - checksum: a19cc01a29fcc97514948eaab4dc34d8272e934466ed87c07f157887406bc318000c69ae6f813a9001c6a225364df04249842a50e692ef7a9873335fbcc141b0 +"@emotion/memoize@npm:^0.9.0": + version: 0.9.0 + resolution: "@emotion/memoize@npm:0.9.0" + checksum: 038132359397348e378c593a773b1148cd0cf0a2285ffd067a0f63447b945f5278860d9de718f906a74c7c940ba1783ac2ca18f1c06a307b01cc0e3944e783b1 languageName: node linkType: hard "@emotion/react@npm:^11.8.1": - version: 11.11.3 - resolution: "@emotion/react@npm:11.11.3" + version: 11.14.0 + resolution: "@emotion/react@npm:11.14.0" dependencies: "@babel/runtime": ^7.18.3 - "@emotion/babel-plugin": ^11.11.0 - "@emotion/cache": ^11.11.0 - "@emotion/serialize": ^1.1.3 - "@emotion/use-insertion-effect-with-fallbacks": ^1.0.1 - "@emotion/utils": ^1.2.1 - "@emotion/weak-memoize": ^0.3.1 + "@emotion/babel-plugin": ^11.13.5 + "@emotion/cache": ^11.14.0 + "@emotion/serialize": ^1.3.3 + "@emotion/use-insertion-effect-with-fallbacks": ^1.2.0 + "@emotion/utils": ^1.4.2 + "@emotion/weak-memoize": ^0.4.0 hoist-non-react-statics: ^3.3.1 peerDependencies: react: ">=16.8.0" peerDependenciesMeta: "@types/react": optional: true - checksum: 2e4b223591569f0a41686d5bd72dc8778629b7be33267e4a09582979e6faee4d7218de84e76294ed827058d4384d75557b5d71724756539c1f235e9a69e62b2e + checksum: 3cf023b11d132b56168713764d6fced8e5a1f0687dfe0caa2782dfd428c8f9e30f9826a919965a311d87b523cd196722aaf75919cd0f6bd0fd57f8a6a0281500 languageName: node linkType: hard -"@emotion/serialize@npm:^1.1.2, @emotion/serialize@npm:^1.1.3": - version: 1.1.3 - resolution: "@emotion/serialize@npm:1.1.3" +"@emotion/serialize@npm:^1.3.3": + version: 1.3.3 + resolution: "@emotion/serialize@npm:1.3.3" dependencies: - "@emotion/hash": ^0.9.1 - "@emotion/memoize": ^0.8.1 - "@emotion/unitless": ^0.8.1 - "@emotion/utils": ^1.2.1 + "@emotion/hash": ^0.9.2 + "@emotion/memoize": ^0.9.0 + "@emotion/unitless": ^0.10.0 + "@emotion/utils": ^1.4.2 csstype: ^3.0.2 - checksum: 5a756ce7e2692322683978d8ed2e84eadd60bd6f629618a82c5018c84d98684b117e57fad0174f68ec2ec0ac089bb2e0bcc8ea8c2798eb904b6d3236aa046063 + checksum: 510331233767ae4e09e925287ca2c7269b320fa1d737ea86db5b3c861a734483ea832394c0c1fe5b21468fe335624a75e72818831d303ba38125f54f44ba02e7 languageName: node linkType: hard -"@emotion/sheet@npm:^1.2.2": - version: 1.2.2 - resolution: "@emotion/sheet@npm:1.2.2" - checksum: d973273c9c15f1c291ca2269728bf044bd3e92a67bca87943fa9ec6c3cd2b034f9a6bfe95ef1b5d983351d128c75b547b43ff196a00a3875f7e1d269793cecfe +"@emotion/sheet@npm:^1.4.0": + version: 1.4.0 + resolution: "@emotion/sheet@npm:1.4.0" + checksum: eeb1212e3289db8e083e72e7e401cd6d1a84deece87e9ce184f7b96b9b5dbd6f070a89057255a6ff14d9865c3ce31f27c39248a053e4cdd875540359042586b4 languageName: node linkType: hard -"@emotion/unitless@npm:^0.8.1": - version: 0.8.1 - resolution: "@emotion/unitless@npm:0.8.1" - checksum: 385e21d184d27853bb350999471f00e1429fa4e83182f46cd2c164985999d9b46d558dc8b9cc89975cb337831ce50c31ac2f33b15502e85c299892e67e7b4a88 +"@emotion/unitless@npm:^0.10.0": + version: 0.10.0 + resolution: "@emotion/unitless@npm:0.10.0" + checksum: d79346df31a933e6d33518e92636afeb603ce043f3857d0a39a2ac78a09ef0be8bedff40130930cb25df1beeee12d96ee38613963886fa377c681a89970b787c languageName: node linkType: hard -"@emotion/use-insertion-effect-with-fallbacks@npm:^1.0.1": - version: 1.0.1 - resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.0.1" +"@emotion/use-insertion-effect-with-fallbacks@npm:^1.2.0": + version: 1.2.0 + resolution: "@emotion/use-insertion-effect-with-fallbacks@npm:1.2.0" peerDependencies: react: ">=16.8.0" - checksum: 700b6e5bbb37a9231f203bb3af11295eed01d73b2293abece0bc2a2237015e944d7b5114d4887ad9a79776504aa51ed2a8b0ddbc117c54495dd01a6b22f93786 + checksum: 8ff6aec7f2924526ff8c8f8f93d4b8236376e2e12c435314a18c9a373016e24dfdf984e82bbc83712b8e90ff4783cd765eb39fc7050d1a43245e5728740ddd71 languageName: node linkType: hard -"@emotion/utils@npm:^1.2.1": - version: 1.2.1 - resolution: "@emotion/utils@npm:1.2.1" - checksum: e0b44be0705b56b079c55faff93952150be69e79b660ae70ddd5b6e09fc40eb1319654315a9f34bb479d7f4ec94be6068c061abbb9e18b9778ae180ad5d97c73 +"@emotion/utils@npm:^1.4.2": + version: 1.4.2 + resolution: "@emotion/utils@npm:1.4.2" + checksum: 04cf76849c6401205c058b82689fd0ec5bf501aed6974880fe9681a1d61543efb97e848f4c38664ac4a9068c7ad2d1cb84f73bde6cf95f1208aa3c28e0190321 languageName: node linkType: hard -"@emotion/weak-memoize@npm:^0.3.1": - version: 0.3.1 - resolution: "@emotion/weak-memoize@npm:0.3.1" - checksum: b2be47caa24a8122622ea18cd2d650dbb4f8ad37b636dc41ed420c2e082f7f1e564ecdea68122b546df7f305b159bf5ab9ffee872abd0f052e687428459af594 +"@emotion/weak-memoize@npm:^0.4.0": + version: 0.4.0 + resolution: "@emotion/weak-memoize@npm:0.4.0" + checksum: db5da0e89bd752c78b6bd65a1e56231f0abebe2f71c0bd8fc47dff96408f7065b02e214080f99924f6a3bfe7ee15afc48dad999d76df86b39b16e513f7a94f52 languageName: node linkType: hard @@ -734,13 +497,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/aix-ppc64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/aix-ppc64@npm:0.19.12" - conditions: os=aix & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/aix-ppc64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/aix-ppc64@npm:0.21.5" @@ -748,13 +504,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-arm64@npm:0.19.12" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/android-arm64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/android-arm64@npm:0.21.5" @@ -762,13 +511,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-arm@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-arm@npm:0.19.12" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - "@esbuild/android-arm@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/android-arm@npm:0.21.5" @@ -776,13 +518,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/android-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/android-x64@npm:0.19.12" - conditions: os=android & cpu=x64 - languageName: node - linkType: hard - "@esbuild/android-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/android-x64@npm:0.21.5" @@ -790,13 +525,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/darwin-arm64@npm:0.19.12" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/darwin-arm64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/darwin-arm64@npm:0.21.5" @@ -804,13 +532,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/darwin-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/darwin-x64@npm:0.19.12" - conditions: os=darwin & cpu=x64 - languageName: node - linkType: hard - "@esbuild/darwin-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/darwin-x64@npm:0.21.5" @@ -818,13 +539,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/freebsd-arm64@npm:0.19.12" - conditions: os=freebsd & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/freebsd-arm64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/freebsd-arm64@npm:0.21.5" @@ -832,13 +546,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/freebsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/freebsd-x64@npm:0.19.12" - conditions: os=freebsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/freebsd-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/freebsd-x64@npm:0.21.5" @@ -846,13 +553,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-arm64@npm:0.19.12" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/linux-arm64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-arm64@npm:0.21.5" @@ -860,13 +560,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-arm@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-arm@npm:0.19.12" - conditions: os=linux & cpu=arm - languageName: node - linkType: hard - "@esbuild/linux-arm@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-arm@npm:0.21.5" @@ -874,13 +567,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ia32@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-ia32@npm:0.19.12" - conditions: os=linux & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/linux-ia32@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-ia32@npm:0.21.5" @@ -888,13 +574,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-loong64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-loong64@npm:0.19.12" - conditions: os=linux & cpu=loong64 - languageName: node - linkType: hard - "@esbuild/linux-loong64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-loong64@npm:0.21.5" @@ -902,13 +581,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-mips64el@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-mips64el@npm:0.19.12" - conditions: os=linux & cpu=mips64el - languageName: node - linkType: hard - "@esbuild/linux-mips64el@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-mips64el@npm:0.21.5" @@ -916,13 +588,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-ppc64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-ppc64@npm:0.19.12" - conditions: os=linux & cpu=ppc64 - languageName: node - linkType: hard - "@esbuild/linux-ppc64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-ppc64@npm:0.21.5" @@ -930,13 +595,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-riscv64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-riscv64@npm:0.19.12" - conditions: os=linux & cpu=riscv64 - languageName: node - linkType: hard - "@esbuild/linux-riscv64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-riscv64@npm:0.21.5" @@ -944,13 +602,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-s390x@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-s390x@npm:0.19.12" - conditions: os=linux & cpu=s390x - languageName: node - linkType: hard - "@esbuild/linux-s390x@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-s390x@npm:0.21.5" @@ -958,13 +609,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/linux-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/linux-x64@npm:0.19.12" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - "@esbuild/linux-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/linux-x64@npm:0.21.5" @@ -972,13 +616,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/netbsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/netbsd-x64@npm:0.19.12" - conditions: os=netbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/netbsd-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/netbsd-x64@npm:0.21.5" @@ -986,13 +623,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/openbsd-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/openbsd-x64@npm:0.19.12" - conditions: os=openbsd & cpu=x64 - languageName: node - linkType: hard - "@esbuild/openbsd-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/openbsd-x64@npm:0.21.5" @@ -1000,13 +630,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/sunos-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/sunos-x64@npm:0.19.12" - conditions: os=sunos & cpu=x64 - languageName: node - linkType: hard - "@esbuild/sunos-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/sunos-x64@npm:0.21.5" @@ -1014,13 +637,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-arm64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-arm64@npm:0.19.12" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - "@esbuild/win32-arm64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/win32-arm64@npm:0.21.5" @@ -1028,13 +644,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-ia32@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-ia32@npm:0.19.12" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - "@esbuild/win32-ia32@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/win32-ia32@npm:0.21.5" @@ -1042,13 +651,6 @@ __metadata: languageName: node linkType: hard -"@esbuild/win32-x64@npm:0.19.12": - version: 0.19.12 - resolution: "@esbuild/win32-x64@npm:0.19.12" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - "@esbuild/win32-x64@npm:0.21.5": version: 0.21.5 resolution: "@esbuild/win32-x64@npm:0.21.5" @@ -1057,37 +659,62 @@ __metadata: linkType: hard "@eslint-community/eslint-utils@npm:^4.2.0, @eslint-community/eslint-utils@npm:^4.4.0": - version: 4.4.0 - resolution: "@eslint-community/eslint-utils@npm:4.4.0" + version: 4.6.1 + resolution: "@eslint-community/eslint-utils@npm:4.6.1" dependencies: - eslint-visitor-keys: ^3.3.0 + eslint-visitor-keys: ^3.4.3 peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - checksum: cdfe3ae42b4f572cbfb46d20edafe6f36fc5fb52bf2d90875c58aefe226892b9677fef60820e2832caf864a326fe4fc225714c46e8389ccca04d5f9288aabd22 + checksum: 924f38a069cc281dacd231f1293f5969dff98d4ad867f044ee384f1ad35937c27d12222a45a7da0b294253ffbaccc0a6f7878aed3eea8f4f9345f195ae24dea2 languageName: node linkType: hard -"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.11.0": - version: 4.11.0 - resolution: "@eslint-community/regexpp@npm:4.11.0" - checksum: 97d2fe46690b69417a551bd19a3dc53b6d9590d2295c43cc4c4e44e64131af541e2f4a44d5c12e87de990403654d3dae9d33600081f3a2f0386b368abc9111ec +"@eslint-community/regexpp@npm:^4.10.0, @eslint-community/regexpp@npm:^4.12.1": + version: 4.12.1 + resolution: "@eslint-community/regexpp@npm:4.12.1" + checksum: 0d628680e204bc316d545b4993d3658427ca404ae646ce541fcc65306b8c712c340e5e573e30fb9f85f4855c0c5f6dca9868931f2fcced06417fbe1a0c6cd2d6 languageName: node linkType: hard -"@eslint/config-array@npm:^0.18.0": - version: 0.18.0 - resolution: "@eslint/config-array@npm:0.18.0" +"@eslint/config-array@npm:^0.20.0": + version: 0.20.0 + resolution: "@eslint/config-array@npm:0.20.0" dependencies: - "@eslint/object-schema": ^2.1.4 + "@eslint/object-schema": ^2.1.6 debug: ^4.3.1 minimatch: ^3.1.2 - checksum: 5ff748e1788745bfb3160c3b3151d62a7c054e336e9fe8069e86cfa6106f3abbd59b24f1253122268295f98c66803e9a7b23d7f947a8c00f62d2060cc44bc7fc + checksum: 55824ea31f0502166a6fea97176c9c25089a0354474cdc72a5f739b1cf6925f44f667bf8f4f3a9dabf1112ab0fa671778ca3f96f1499f31ec42caf84cae55005 languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.1.0": - version: 3.1.0 - resolution: "@eslint/eslintrc@npm:3.1.0" +"@eslint/config-helpers@npm:^0.2.0": + version: 0.2.1 + resolution: "@eslint/config-helpers@npm:0.2.1" + checksum: b463805bc319608436a8b19c94fd533d8196b326c03361db54c0f3ec59d7bd6337c9764bc945ef15df94f50443973241dc265f661b07aceed4938f7d1cf2e822 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.12.0": + version: 0.12.0 + resolution: "@eslint/core@npm:0.12.0" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 3979af324102a3af2742060360563ba6b9525b8e1e524ad3d3e31e65af27db554b61d1cdfeaa42e15fb7d9ce9097c44225fd9e4f8193576accc1772457b88c12 + languageName: node + linkType: hard + +"@eslint/core@npm:^0.13.0": + version: 0.13.0 + resolution: "@eslint/core@npm:0.13.0" + dependencies: + "@types/json-schema": ^7.0.15 + checksum: 4d1a4163ba7f667297ba6e60de82f41d139b01951e2870b1bb609072c3c5df68b0288cc911ce3af0564dfa19bfda23cbf04eebd243ccb4960e0b5f927aa9a723 + languageName: node + linkType: hard + +"@eslint/eslintrc@npm:^3.3.1": + version: 3.3.1 + resolution: "@eslint/eslintrc@npm:3.3.1" dependencies: ajv: ^6.12.4 debug: ^4.3.2 @@ -1098,64 +725,57 @@ __metadata: js-yaml: ^4.1.0 minimatch: ^3.1.2 strip-json-comments: ^3.1.1 - checksum: b0a9bbd98c8b9e0f4d975b042ff9b874dde722b20834ea2ff46551c3de740d4f10f56c449b790ef34d7f82147cbddfc22b004a43cc885dbc2664bb134766b5e4 + checksum: 8241f998f0857abf5a615072273b90b1244d75c1c45d217c6a8eb444c6e12bbb5506b4879c14fb262eb72b7d8e3d2f0542da2db1a7f414a12496ebb790fb4d62 languageName: node linkType: hard -"@eslint/js@npm:9.9.1": - version: 9.9.1 - resolution: "@eslint/js@npm:9.9.1" - checksum: 24436d7a1023dbc6c63fd199e45afa9eab8537f7bd808872d9d17dd70c5237f599fe3d08f519d55b40e33bfde02a460861df1c96aa07674090c3f98c83b0c178 +"@eslint/js@npm:9.24.0": + version: 9.24.0 + resolution: "@eslint/js@npm:9.24.0" + checksum: 423c09a9a52ae596cd77f38f97491261447e04d31a6d681b49cec7ff25dadb64f9b30e48ee5fcfb0a238a3dc3f6ee7c678fdd6ec2415bf687a73ddebaa8adff4 languageName: node linkType: hard -"@eslint/object-schema@npm:^2.1.4": - version: 2.1.4 - resolution: "@eslint/object-schema@npm:2.1.4" - checksum: 5a03094115bcdab7991dbbc5d17a9713f394cebb4b44d3eaf990d7487b9b8e1877b817997334ab40be52e299a0384595c6f6ba91b389901e5e1d21efda779271 +"@eslint/object-schema@npm:^2.1.6": + version: 2.1.6 + resolution: "@eslint/object-schema@npm:2.1.6" + checksum: e32e565319f6544d36d3fa69a3e163120722d12d666d1a4525c9a6f02e9b54c29d9b1f03139e25d7e759e08dda8da433590bc23c09db8d511162157ef1b86a4c languageName: node linkType: hard -"@floating-ui/core@npm:^1.6.0": - version: 1.6.0 - resolution: "@floating-ui/core@npm:1.6.0" +"@eslint/plugin-kit@npm:^0.2.7": + version: 0.2.8 + resolution: "@eslint/plugin-kit@npm:0.2.8" dependencies: - "@floating-ui/utils": ^0.2.1 - checksum: 2e25c53b0c124c5c9577972f8ae21d081f2f7895e6695836a53074463e8c65b47722744d6d2b5a993164936da006a268bcfe87fe68fd24dc235b1cb86bed3127 + "@eslint/core": ^0.13.0 + levn: ^0.4.1 + checksum: b5bd769f3f96cb3bdc4051d9ebd973b30d1cd00a02953ded1eeb74fb5b2af73cf38c20cc76acddc8e74828f0dbf92ba9d725414b3026177935fc4b48784a7fba languageName: node linkType: hard -"@floating-ui/dom@npm:^1.0.1": - version: 1.6.1 - resolution: "@floating-ui/dom@npm:1.6.1" +"@floating-ui/core@npm:^1.6.0": + version: 1.6.9 + resolution: "@floating-ui/core@npm:1.6.9" dependencies: - "@floating-ui/core": ^1.6.0 - "@floating-ui/utils": ^0.2.1 - checksum: 5565e4dee612bab62950913c311d75d3f773bd1d9dc437f7e33b46340f32ec565733c995c6185381adaf64e627df3c79901d0a9d555f58c02509d0764bceb57d + "@floating-ui/utils": ^0.2.9 + checksum: 21cbcac72a40172399570dedf0eb96e4f24b0d829980160e8d14edf08c2955ac6feffb7b94e1530c78fb7944635e52669c9257ad08570e0295efead3b5a9af91 languageName: node linkType: hard -"@floating-ui/dom@npm:^1.6.1": - version: 1.6.10 - resolution: "@floating-ui/dom@npm:1.6.10" +"@floating-ui/dom@npm:^1.0.1, @floating-ui/dom@npm:^1.6.1": + version: 1.6.13 + resolution: "@floating-ui/dom@npm:1.6.13" dependencies: "@floating-ui/core": ^1.6.0 - "@floating-ui/utils": ^0.2.7 - checksum: dc86989f1b7dc00f2786e2aa369e7c26c7c63c8c5bad0ba9bede0e45df4b9699c6908b0405c92701bcde69e21a4a582d29dc5d1c924ed8d5fe072dfc777558c7 + "@floating-ui/utils": ^0.2.9 + checksum: eabab9d860d3b5beab1c2d6936287efc4d9ab352de99062380589ef62870d59e8730397489c34a96657e128498001b5672330c4a9da0159fe8b2401ac59fe314 languageName: node linkType: hard -"@floating-ui/utils@npm:^0.2.1": - version: 0.2.1 - resolution: "@floating-ui/utils@npm:0.2.1" - checksum: 9ed4380653c7c217cd6f66ae51f20fdce433730dbc77f95b5abfb5a808f5fdb029c6ae249b4e0490a816f2453aa6e586d9a873cd157fdba4690f65628efc6e06 - languageName: node - linkType: hard - -"@floating-ui/utils@npm:^0.2.7": - version: 0.2.7 - resolution: "@floating-ui/utils@npm:0.2.7" - checksum: 7e6707c4c6d496f86377a97aac0232926953a2da9c2058ed79d8b44031038ef8fcf9743dac7b38c1da7148460194da987814d78af801ec5c278abf9b303adb22 +"@floating-ui/utils@npm:^0.2.9": + version: 0.2.9 + resolution: "@floating-ui/utils@npm:0.2.9" + checksum: d518b80cec5a323e54a069a1dd99a20f8221a4853ed98ac16c75275a0cc22f75de4f8ac5b121b4f8990bd45da7ad1fb015b9a1e4bac27bb1cd62444af84e9784 languageName: node linkType: hard @@ -1181,6 +801,23 @@ __metadata: languageName: node linkType: hard +"@humanfs/core@npm:^0.19.1": + version: 0.19.1 + resolution: "@humanfs/core@npm:0.19.1" + checksum: 611e0545146f55ddfdd5c20239cfb7911f9d0e28258787c4fc1a1f6214250830c9367aaaeace0096ed90b6739bee1e9c52ad5ba8adaf74ab8b449119303babfe + languageName: node + linkType: hard + +"@humanfs/node@npm:^0.16.6": + version: 0.16.6 + resolution: "@humanfs/node@npm:0.16.6" + dependencies: + "@humanfs/core": ^0.19.1 + "@humanwhocodes/retry": ^0.3.0 + checksum: f9cb52bb235f8b9c6fcff43a7e500669a38f8d6ce26593404a9b56365a1644e0ed60c720dc65ff6a696b1f85f3563ab055bb554ec8674f2559085ba840e47710 + languageName: node + linkType: hard + "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" @@ -1189,9 +826,16 @@ __metadata: linkType: hard "@humanwhocodes/retry@npm:^0.3.0": - version: 0.3.0 - resolution: "@humanwhocodes/retry@npm:0.3.0" - checksum: 4349cb8b60466a000e945fde8f8551cefb01ebba22ead4a92ac7b145f67f5da6b52e5a1e0c53185d732d0a49958ac29327934a4a5ac1d0bc20efb4429a4f7bf7 + version: 0.3.1 + resolution: "@humanwhocodes/retry@npm:0.3.1" + checksum: 7e5517bb51dbea3e02ab6cacef59a8f4b0ca023fc4b0b8cbc40de0ad29f46edd50b897c6e7fba79366a0217e3f48e2da8975056f6c35cfe19d9cc48f1d03c1dd + languageName: node + linkType: hard + +"@humanwhocodes/retry@npm:^0.4.2": + version: 0.4.2 + resolution: "@humanwhocodes/retry@npm:0.4.2" + checksum: 764127449a9f97d807b9c47f898fce8d7e0e8e8438366116b9ddcaacded99b2c285b8eed2cfdd5fdcb68be47728218db949f9618a58c0d3898d9fd14a6d6671e languageName: node linkType: hard @@ -1209,6 +853,15 @@ __metadata: languageName: node linkType: hard +"@isaacs/fs-minipass@npm:^4.0.0": + version: 4.0.1 + resolution: "@isaacs/fs-minipass@npm:4.0.1" + dependencies: + minipass: ^7.0.4 + checksum: 5d36d289960e886484362d9eb6a51d1ea28baed5f5d0140bbe62b99bac52eaf06cc01c2bc0d3575977962f84f6b2c4387b043ee632216643d4787b0999465bf2 + languageName: node + linkType: hard + "@istanbuljs/load-nyc-config@npm:^1.0.0, @istanbuljs/load-nyc-config@npm:^1.1.0": version: 1.1.0 resolution: "@istanbuljs/load-nyc-config@npm:1.1.0" @@ -1240,39 +893,21 @@ __metadata: languageName: node linkType: hard -"@jridgewell/gen-mapping@npm:^0.3.0, @jridgewell/gen-mapping@npm:^0.3.2": - version: 0.3.3 - resolution: "@jridgewell/gen-mapping@npm:0.3.3" - dependencies: - "@jridgewell/set-array": ^1.0.1 - "@jridgewell/sourcemap-codec": ^1.4.10 - "@jridgewell/trace-mapping": ^0.3.9 - checksum: 4a74944bd31f22354fc01c3da32e83c19e519e3bbadafa114f6da4522ea77dd0c2842607e923a591d60a76699d819a2fbb6f3552e277efdb9b58b081390b60ab - languageName: node - linkType: hard - -"@jridgewell/gen-mapping@npm:^0.3.5": - version: 0.3.5 - resolution: "@jridgewell/gen-mapping@npm:0.3.5" +"@jridgewell/gen-mapping@npm:^0.3.2, @jridgewell/gen-mapping@npm:^0.3.5": + version: 0.3.8 + resolution: "@jridgewell/gen-mapping@npm:0.3.8" dependencies: "@jridgewell/set-array": ^1.2.1 "@jridgewell/sourcemap-codec": ^1.4.10 "@jridgewell/trace-mapping": ^0.3.24 - checksum: ff7a1764ebd76a5e129c8890aa3e2f46045109dabde62b0b6c6a250152227647178ff2069ea234753a690d8f3c4ac8b5e7b267bbee272bffb7f3b0a370ab6e52 + checksum: c0687b5227461717aa537fe71a42e356bcd1c43293b3353796a148bf3b0d6f59109def46c22f05b60e29a46f19b2e4676d027959a7c53a6c92b9d5b0d87d0420 languageName: node linkType: hard "@jridgewell/resolve-uri@npm:^3.0.3, @jridgewell/resolve-uri@npm:^3.1.0": - version: 3.1.1 - resolution: "@jridgewell/resolve-uri@npm:3.1.1" - checksum: f5b441fe7900eab4f9155b3b93f9800a916257f4e8563afbcd3b5a5337b55e52bd8ae6735453b1b745457d9f6cdb16d74cd6220bbdd98cf153239e13f6cbb653 - languageName: node - linkType: hard - -"@jridgewell/set-array@npm:^1.0.1": - version: 1.1.2 - resolution: "@jridgewell/set-array@npm:1.1.2" - checksum: 69a84d5980385f396ff60a175f7177af0b8da4ddb81824cb7016a9ef914eee9806c72b6b65942003c63f7983d4f39a5c6c27185bbca88eb4690b62075602e28e + version: 3.1.2 + resolution: "@jridgewell/resolve-uri@npm:3.1.2" + checksum: 83b85f72c59d1c080b4cbec0fef84528963a1b5db34e4370fa4bd1e3ff64a0d80e0cee7369d11d73c704e0286fb2865b530acac7a871088fbe92b5edf1000870 languageName: node linkType: hard @@ -1283,14 +918,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14": - version: 1.4.15 - resolution: "@jridgewell/sourcemap-codec@npm:1.4.15" - checksum: b881c7e503db3fc7f3c1f35a1dd2655a188cc51a3612d76efc8a6eb74728bef5606e6758ee77423e564092b4a518aba569bbb21c9bac5ab7a35b0c6ae7e344c8 - languageName: node - linkType: hard - -"@jridgewell/sourcemap-codec@npm:^1.5.0": +"@jridgewell/sourcemap-codec@npm:^1.4.10, @jridgewell/sourcemap-codec@npm:^1.4.14, @jridgewell/sourcemap-codec@npm:^1.5.0": version: 1.5.0 resolution: "@jridgewell/sourcemap-codec@npm:1.5.0" checksum: 05df4f2538b3b0f998ea4c1cd34574d0feba216fa5d4ccaef0187d12abf82eafe6021cec8b49f9bb4d90f2ba4582ccc581e72986a5fcf4176ae0cfeb04cf52ec @@ -1307,16 +935,6 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.17, @jridgewell/trace-mapping@npm:^0.3.9": - version: 0.3.22 - resolution: "@jridgewell/trace-mapping@npm:0.3.22" - dependencies: - "@jridgewell/resolve-uri": ^3.1.0 - "@jridgewell/sourcemap-codec": ^1.4.14 - checksum: ac7dd2cfe0b479aa1b81776d40d789243131cc792dc8b6b6a028c70fcd6171958ae1a71bf67b618ffe3c0c3feead9870c095ee46a5e30319410d92976b28f498 - languageName: node - linkType: hard - "@jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" @@ -1327,19 +945,46 @@ __metadata: languageName: node linkType: hard +"@napi-rs/wasm-runtime@npm:^0.2.8": + version: 0.2.9 + resolution: "@napi-rs/wasm-runtime@npm:0.2.9" + dependencies: + "@emnapi/core": ^1.4.0 + "@emnapi/runtime": ^1.4.0 + "@tybys/wasm-util": ^0.9.0 + checksum: bffa375d960ebe5f0e98583f46a14bf4aaa086c2cce45582229b36eb0f5987d9dae1c184ebc218df504ffdd92a7169f73ac60697e6e2a2fc064277e3150a3764 + languageName: node + linkType: hard + +"@noble/curves@npm:1.2.0": + version: 1.2.0 + resolution: "@noble/curves@npm:1.2.0" + dependencies: + "@noble/hashes": 1.3.2 + checksum: bb798d7a66d8e43789e93bc3c2ddff91a1e19fdb79a99b86cd98f1e5eff0ee2024a2672902c2576ef3577b6f282f3b5c778bebd55761ddbb30e36bf275e83dd0 + languageName: node + linkType: hard + "@noble/curves@npm:^1.3.0": - version: 1.3.0 - resolution: "@noble/curves@npm:1.3.0" + version: 1.8.2 + resolution: "@noble/curves@npm:1.8.2" dependencies: - "@noble/hashes": 1.3.3 - checksum: b65342ee66c4a440eee2978524412eabba9a9efdd16d6370e15218c6a7d80bddf35e66bb57ed52c0dfd32cb9a717b439ab3a72db618f1a0066dfebe3fd12a421 + "@noble/hashes": 1.7.2 + checksum: f26fd77b4d78fe26dba2754cbcaddee5da23a711a0c9778ee57764eb0084282d97659d9b0a760718f42493adf68665dbffdca9d6213950f03f079d09c465c096 languageName: node linkType: hard -"@noble/hashes@npm:1.3.3, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.3": - version: 1.3.3 - resolution: "@noble/hashes@npm:1.3.3" - checksum: 8a6496d1c0c64797339bc694ad06cdfaa0f9e56cd0c3f68ae3666cfb153a791a55deb0af9c653c7ed2db64d537aa3e3054629740d2f2338bb1dcb7ab60cd205b +"@noble/hashes@npm:1.3.2": + version: 1.3.2 + resolution: "@noble/hashes@npm:1.3.2" + checksum: fe23536b436539d13f90e4b9be843cc63b1b17666a07634a2b1259dded6f490be3d050249e6af98076ea8f2ea0d56f578773c2197f2aa0eeaa5fba5bc18ba474 + languageName: node + linkType: hard + +"@noble/hashes@npm:1.7.2, @noble/hashes@npm:^1.3.1, @noble/hashes@npm:^1.3.3": + version: 1.7.2 + resolution: "@noble/hashes@npm:1.7.2" + checksum: f9e3c2e62c2850073f8d6ac30cc33b03a25cae859eb2209b33ae90ed3d1e003cb2a1ddacd2aacd6b7c98a5ad70795a234ccce04b0526657cd8020ce4ffdb491f languageName: node linkType: hard @@ -1360,7 +1005,7 @@ __metadata: languageName: node linkType: hard -"@nodelib/fs.walk@npm:^1.2.3, @nodelib/fs.walk@npm:^1.2.8": +"@nodelib/fs.walk@npm:^1.2.3": version: 1.2.8 resolution: "@nodelib/fs.walk@npm:1.2.8" dependencies: @@ -1370,25 +1015,32 @@ __metadata: languageName: node linkType: hard -"@npmcli/agent@npm:^2.0.0": - version: 2.2.1 - resolution: "@npmcli/agent@npm:2.2.1" +"@nolyfill/is-core-module@npm:1.0.39": + version: 1.0.39 + resolution: "@nolyfill/is-core-module@npm:1.0.39" + checksum: 0d6e098b871eca71d875651288e1f0fa770a63478b0b50479c99dc760c64175a56b5b04f58d5581bbcc6b552b8191ab415eada093d8df9597ab3423c8cac1815 + languageName: node + linkType: hard + +"@npmcli/agent@npm:^3.0.0": + version: 3.0.0 + resolution: "@npmcli/agent@npm:3.0.0" dependencies: agent-base: ^7.1.0 http-proxy-agent: ^7.0.0 https-proxy-agent: ^7.0.1 lru-cache: ^10.0.1 - socks-proxy-agent: ^8.0.1 - checksum: c69aca42dbba393f517bc5777ee872d38dc98ea0e5e93c1f6d62b82b8fecdc177a57ea045f07dda1a770c592384b2dd92a5e79e21e2a7cf51c9159466a8f9c9b + socks-proxy-agent: ^8.0.3 + checksum: e8fc25d536250ed3e669813b36e8c6d805628b472353c57afd8c4fde0fcfcf3dda4ffe22f7af8c9070812ec2e7a03fb41d7151547cef3508efe661a5a3add20f languageName: node linkType: hard -"@npmcli/fs@npm:^3.1.0": - version: 3.1.0 - resolution: "@npmcli/fs@npm:3.1.0" +"@npmcli/fs@npm:^4.0.0": + version: 4.0.0 + resolution: "@npmcli/fs@npm:4.0.0" dependencies: semver: ^7.3.5 - checksum: a50a6818de5fc557d0b0e6f50ec780a7a02ab8ad07e5ac8b16bf519e0ad60a144ac64f97d05c443c3367235d337182e1d012bbac0eb8dbae8dc7b40b193efd0e + checksum: 68951c589e9a4328698a35fd82fe71909a257d6f2ede0434d236fa55634f0fbcad9bb8755553ce5849bd25ee6f019f4d435921ac715c853582c4a7f5983c8d4a languageName: node linkType: hard @@ -1481,6 +1133,21 @@ __metadata: languageName: node linkType: hard +"@polkadot/api-augment@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/api-augment@npm:15.9.2" + dependencies: + "@polkadot/api-base": 15.9.2 + "@polkadot/rpc-augment": 15.9.2 + "@polkadot/types": 15.9.2 + "@polkadot/types-augment": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/util": ^13.4.4 + tslib: ^2.8.1 + checksum: 86c59ea1f4bd0d86d19cd3e4a2b2fc4ab24be551de739ddea1c6e172913f1f0eb905c5753ba145495f4aa3a05e998795123340b876cb6ce97f2ccb92c44dbcd7 + languageName: node + linkType: hard + "@polkadot/api-base@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/api-base@npm:15.8.1" @@ -1494,9 +1161,22 @@ __metadata: languageName: node linkType: hard -"@polkadot/api-contract@npm:15.8.1": +"@polkadot/api-base@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/api-base@npm:15.9.2" + dependencies: + "@polkadot/rpc-core": 15.9.2 + "@polkadot/types": 15.9.2 + "@polkadot/util": ^13.4.4 + rxjs: ^7.8.1 + tslib: ^2.8.1 + checksum: fc81cf0d3af373c653bffc5b3cf8ecd4539e7bcb18d9f592e7cbbf17341fd5c15b92e45a0fe1c30a83f80e954df3d3b45dc635fe59c640fabbefb2030c09b4c7 + languageName: node + linkType: hard + +"@polkadot/api-contract@file:./.api-contract/build::locator=contracts-ui%40workspace%3A.": version: 15.8.1 - resolution: "@polkadot/api-contract@npm:15.8.1" + resolution: "@polkadot/api-contract@file:./.api-contract/build#./.api-contract/build::hash=cafe2b&locator=contracts-ui%40workspace%3A." dependencies: "@polkadot/api": 15.8.1 "@polkadot/api-augment": 15.8.1 @@ -1507,7 +1187,7 @@ __metadata: "@polkadot/util-crypto": ^13.4.3 rxjs: ^7.8.1 tslib: ^2.8.1 - checksum: df19da214f800660f6fe22cb8f7113ec3b5a5dfbb622a0deb96a911850fe5c9f4b6418f361009ec3cb41e3fd5cce22fa2681ed4c1aeae2a4543ba8adaf51f3aa + checksum: e7fd8bd7e0fc12450879feb3df3eff323e4169e116eb69ce8f35b585e26cbac2c846fa8cee0b0e7c43dad4a763385133de5ddbddac1254147e6eaa5de4abd30d languageName: node linkType: hard @@ -1529,7 +1209,25 @@ __metadata: languageName: node linkType: hard -"@polkadot/api@npm:15.8.1, @polkadot/api@npm:^15.8.1": +"@polkadot/api-derive@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/api-derive@npm:15.9.2" + dependencies: + "@polkadot/api": 15.9.2 + "@polkadot/api-augment": 15.9.2 + "@polkadot/api-base": 15.9.2 + "@polkadot/rpc-core": 15.9.2 + "@polkadot/types": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/util": ^13.4.4 + "@polkadot/util-crypto": ^13.4.4 + rxjs: ^7.8.1 + tslib: ^2.8.1 + checksum: d547219b48a0cb77b15d96df1ae6d555e533576749a23840b0fdf8e4e88c00e086fd0fb95349952fc92266cc531d5f3607634bce4a4ccf28f4d35b9a32982f76 + languageName: node + linkType: hard + +"@polkadot/api@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/api@npm:15.8.1" dependencies: @@ -1554,11 +1252,36 @@ __metadata: languageName: node linkType: hard +"@polkadot/api@npm:15.9.2, @polkadot/api@npm:^15.9.1": + version: 15.9.2 + resolution: "@polkadot/api@npm:15.9.2" + dependencies: + "@polkadot/api-augment": 15.9.2 + "@polkadot/api-base": 15.9.2 + "@polkadot/api-derive": 15.9.2 + "@polkadot/keyring": ^13.4.4 + "@polkadot/rpc-augment": 15.9.2 + "@polkadot/rpc-core": 15.9.2 + "@polkadot/rpc-provider": 15.9.2 + "@polkadot/types": 15.9.2 + "@polkadot/types-augment": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/types-create": 15.9.2 + "@polkadot/types-known": 15.9.2 + "@polkadot/util": ^13.4.4 + "@polkadot/util-crypto": ^13.4.4 + eventemitter3: ^5.0.1 + rxjs: ^7.8.1 + tslib: ^2.8.1 + checksum: ed25d0382b35f1da134576a4d3b05204a2bd1980e12638c7ac68e2848ac2bac929da5a07b052e5308908b047586b7cde9a54dfe8ad5aebf1f7fe36a714bc05d1 + languageName: node + linkType: hard + "@polkadot/extension-dapp@npm:^0.58.6": - version: 0.58.6 - resolution: "@polkadot/extension-dapp@npm:0.58.6" + version: 0.58.7 + resolution: "@polkadot/extension-dapp@npm:0.58.7" dependencies: - "@polkadot/extension-inject": 0.58.6 + "@polkadot/extension-inject": 0.58.7 "@polkadot/util": ^13.4.3 "@polkadot/util-crypto": ^13.4.3 tslib: ^2.8.1 @@ -1566,17 +1289,17 @@ __metadata: "@polkadot/api": "*" "@polkadot/util": "*" "@polkadot/util-crypto": "*" - checksum: 5f7d20b331ab06af9d269b3f8b9c361088b53664e410ef20d95a67891a31748ada4d3cf8938c9f589c1c3af1f9cbb6948a2b0b138daa1b86c4bbadc50ce0fcbe + checksum: 615e69a5fcd5f3cbf28ce833610654355b2ee3e81926bcc0e7a285eec9a2530ee2a3d4a7df6c15a65e08998eb7be1d8c8269fe5b0f70ff23345a9d19f2bdf763 languageName: node linkType: hard -"@polkadot/extension-inject@npm:0.58.6": - version: 0.58.6 - resolution: "@polkadot/extension-inject@npm:0.58.6" +"@polkadot/extension-inject@npm:0.58.7": + version: 0.58.7 + resolution: "@polkadot/extension-inject@npm:0.58.7" dependencies: - "@polkadot/api": ^15.8.1 - "@polkadot/rpc-provider": ^15.8.1 - "@polkadot/types": ^15.8.1 + "@polkadot/api": ^15.9.1 + "@polkadot/rpc-provider": ^15.9.1 + "@polkadot/types": ^15.9.1 "@polkadot/util": ^13.4.3 "@polkadot/util-crypto": ^13.4.3 "@polkadot/x-global": ^13.4.3 @@ -1584,32 +1307,32 @@ __metadata: peerDependencies: "@polkadot/api": "*" "@polkadot/util": "*" - checksum: 52a526605c75e5c14575cb06452027238f93083512a4a52b59f230329bfdf0cc2d34eb6a0d87b9ed2d1bd312b108799277f6df7ecb8f2bf8ce18cd41eb5805ea + checksum: d570001946972aa28dac6fac6f775cbf221086fa6a704780e9371b6142387b7deb00551ee16b7631502a325c35d5db5114461c1a0e8a5acefa28c5c788f531f8 languageName: node linkType: hard -"@polkadot/keyring@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/keyring@npm:13.4.3" +"@polkadot/keyring@npm:^13.4.3, @polkadot/keyring@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/keyring@npm:13.4.4" dependencies: - "@polkadot/util": 13.4.3 - "@polkadot/util-crypto": 13.4.3 + "@polkadot/util": 13.4.4 + "@polkadot/util-crypto": 13.4.4 tslib: ^2.8.0 peerDependencies: - "@polkadot/util": 13.4.3 - "@polkadot/util-crypto": 13.4.3 - checksum: 4ce70ea4ced3bafc5284c6e645a61380415d80f8dd42efd1073fed1c1944ef311e2ef805261009ecafe760fb097165ae7110b76a1ae7c44c3ac511a7a7368898 + "@polkadot/util": 13.4.4 + "@polkadot/util-crypto": 13.4.4 + checksum: 44e819f962caed6d679820cec3195b9a8acf8f8d19132199bb2d9bf0011a49aa46b40c6526cac0949c2b71d8aba5bd960cf54d2c782f663cce869b3b65296b6a languageName: node linkType: hard -"@polkadot/networks@npm:13.4.3, @polkadot/networks@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/networks@npm:13.4.3" +"@polkadot/networks@npm:13.4.4, @polkadot/networks@npm:^13.4.3, @polkadot/networks@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/networks@npm:13.4.4" dependencies: - "@polkadot/util": 13.4.3 + "@polkadot/util": 13.4.4 "@substrate/ss58-registry": ^1.51.0 tslib: ^2.8.0 - checksum: bd9736a745d8b1cc40b6f9c8708afc40b1817d2d30c77f3377de5cab62e18ddb4102740dfde4b2ab08db9d9753c304595989b4ee3c1c6564aee94913ff5215e8 + checksum: 4842ba3576a1c2a222f27bccd41cf632735dd3d048c28e00ab67169568177e0f67305792244bd147a689a5d65a1e2ea1fa918eacdd0e75b80818ac17ded32342 languageName: node linkType: hard @@ -1626,6 +1349,19 @@ __metadata: languageName: node linkType: hard +"@polkadot/rpc-augment@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/rpc-augment@npm:15.9.2" + dependencies: + "@polkadot/rpc-core": 15.9.2 + "@polkadot/types": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/util": ^13.4.4 + tslib: ^2.8.1 + checksum: d0a63e9095a52bb555a7f32f0f0d5a5b0c0b0bf5c58da2ec85ea88702e70ebda69b4a504189ca3ebbf79407f30ef3a384a393b75bb2aa78ac6b8f9c274035207 + languageName: node + linkType: hard + "@polkadot/rpc-core@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/rpc-core@npm:15.8.1" @@ -1640,7 +1376,21 @@ __metadata: languageName: node linkType: hard -"@polkadot/rpc-provider@npm:15.8.1, @polkadot/rpc-provider@npm:^15.8.1": +"@polkadot/rpc-core@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/rpc-core@npm:15.9.2" + dependencies: + "@polkadot/rpc-augment": 15.9.2 + "@polkadot/rpc-provider": 15.9.2 + "@polkadot/types": 15.9.2 + "@polkadot/util": ^13.4.4 + rxjs: ^7.8.1 + tslib: ^2.8.1 + checksum: 7581189cc474f0a9a931dc3f53bee16288c117096f3ad2462e866d0f31017410d03203beb8dd92b57add609d0732ca30376d75dadd22c1e15f1ac0051a81c4a1 + languageName: node + linkType: hard + +"@polkadot/rpc-provider@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/rpc-provider@npm:15.8.1" dependencies: @@ -1664,6 +1414,30 @@ __metadata: languageName: node linkType: hard +"@polkadot/rpc-provider@npm:15.9.2, @polkadot/rpc-provider@npm:^15.9.1": + version: 15.9.2 + resolution: "@polkadot/rpc-provider@npm:15.9.2" + dependencies: + "@polkadot/keyring": ^13.4.4 + "@polkadot/types": 15.9.2 + "@polkadot/types-support": 15.9.2 + "@polkadot/util": ^13.4.4 + "@polkadot/util-crypto": ^13.4.4 + "@polkadot/x-fetch": ^13.4.4 + "@polkadot/x-global": ^13.4.4 + "@polkadot/x-ws": ^13.4.4 + "@substrate/connect": 0.8.11 + eventemitter3: ^5.0.1 + mock-socket: ^9.3.1 + nock: ^13.5.5 + tslib: ^2.8.1 + dependenciesMeta: + "@substrate/connect": + optional: true + checksum: 7c5cef2ce4364842d41f05a9bc0221aeebbf5bc3476105255a956fc3b29e5af80b78b67bc88440b71a2d969ca5c8b15f7ded7e34d5c5a0ed6867f0fbe0f7fa03 + languageName: node + linkType: hard + "@polkadot/types-augment@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/types-augment@npm:15.8.1" @@ -1676,6 +1450,18 @@ __metadata: languageName: node linkType: hard +"@polkadot/types-augment@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/types-augment@npm:15.9.2" + dependencies: + "@polkadot/types": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/util": ^13.4.4 + tslib: ^2.8.1 + checksum: 3907ff2b3db8df0db10dca991ac419548f2aa5994324ab741622176b841d207ce47888f6e4cfd789e9b5e1c83b738844b8556c35b538f17421512b97b7a3ed34 + languageName: node + linkType: hard + "@polkadot/types-codec@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/types-codec@npm:15.8.1" @@ -1687,6 +1473,17 @@ __metadata: languageName: node linkType: hard +"@polkadot/types-codec@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/types-codec@npm:15.9.2" + dependencies: + "@polkadot/util": ^13.4.4 + "@polkadot/x-bigint": ^13.4.4 + tslib: ^2.8.1 + checksum: f4c45f44c03d35c24fa6c1037d02492ac3720b0f29ff407885113f09eb5d9b07db8b09b1435d5ee925f14d408bd93c7c1278863bb295fbbc00b14e7057eff6ff + languageName: node + linkType: hard + "@polkadot/types-create@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/types-create@npm:15.8.1" @@ -1698,6 +1495,17 @@ __metadata: languageName: node linkType: hard +"@polkadot/types-create@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/types-create@npm:15.9.2" + dependencies: + "@polkadot/types-codec": 15.9.2 + "@polkadot/util": ^13.4.4 + tslib: ^2.8.1 + checksum: 222cd0c9ce5ecdef5bc1fa5519de065a26f125849d52d014d73ef54d9bfc21ca19717745b5e83d890b5213cdb78384bfe25f0496de005011a6d4bc1d866116db + languageName: node + linkType: hard + "@polkadot/types-known@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/types-known@npm:15.8.1" @@ -1712,6 +1520,20 @@ __metadata: languageName: node linkType: hard +"@polkadot/types-known@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/types-known@npm:15.9.2" + dependencies: + "@polkadot/networks": ^13.4.4 + "@polkadot/types": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/types-create": 15.9.2 + "@polkadot/util": ^13.4.4 + tslib: ^2.8.1 + checksum: e81265d547e277d1ab2bf14539f91b6394ed643f16008575198527b6fb0095750d3579a0314ea5185c15dd887245198275a251ef12c7519169514099bd4d37e8 + languageName: node + linkType: hard + "@polkadot/types-support@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/types-support@npm:15.8.1" @@ -1722,7 +1544,17 @@ __metadata: languageName: node linkType: hard -"@polkadot/types@npm:15.8.1, @polkadot/types@npm:^15.8.1": +"@polkadot/types-support@npm:15.9.2": + version: 15.9.2 + resolution: "@polkadot/types-support@npm:15.9.2" + dependencies: + "@polkadot/util": ^13.4.4 + tslib: ^2.8.1 + checksum: 31cf062103c39b98bea0c9acb49aa5d576a756b0c96a3a4fb0c8ce092ebdc63d5ea12c6ceafd96643a84df96a49bac49b72781501b4b5708bad8197c7efc3f6d + languageName: node + linkType: hard + +"@polkadot/types@npm:15.8.1": version: 15.8.1 resolution: "@polkadot/types@npm:15.8.1" dependencies: @@ -1738,14 +1570,30 @@ __metadata: languageName: node linkType: hard +"@polkadot/types@npm:15.9.2, @polkadot/types@npm:^15.9.1": + version: 15.9.2 + resolution: "@polkadot/types@npm:15.9.2" + dependencies: + "@polkadot/keyring": ^13.4.4 + "@polkadot/types-augment": 15.9.2 + "@polkadot/types-codec": 15.9.2 + "@polkadot/types-create": 15.9.2 + "@polkadot/util": ^13.4.4 + "@polkadot/util-crypto": ^13.4.4 + rxjs: ^7.8.1 + tslib: ^2.8.1 + checksum: 344d4de44325e289fa1143287c73cb42f147c3cb8839a33ec2c2d669034b27ba84ecce7ff0d8daaf385a8dce744ba098ecba571037044d6869acd7e3aee18f86 + languageName: node + linkType: hard + "@polkadot/ui-keyring@npm:^3.12.2": - version: 3.12.2 - resolution: "@polkadot/ui-keyring@npm:3.12.2" + version: 3.13.1 + resolution: "@polkadot/ui-keyring@npm:3.13.1" dependencies: - "@polkadot/keyring": ^13.4.3 - "@polkadot/ui-settings": 3.12.2 - "@polkadot/util": ^13.4.3 - "@polkadot/util-crypto": ^13.4.3 + "@polkadot/keyring": ^13.4.4 + "@polkadot/ui-settings": 3.13.1 + "@polkadot/util": ^13.4.4 + "@polkadot/util-crypto": ^13.4.4 mkdirp: ^3.0.1 rxjs: ^7.8.1 store: ^2.0.12 @@ -1754,71 +1602,71 @@ __metadata: "@polkadot/keyring": "*" "@polkadot/ui-settings": "*" "@polkadot/util": "*" - checksum: 78bec0f27a69f919875eb33daf71ab668eb68067d715ff785de6d07deabfaabf714406e556efc6f707f9f75a9724330cface7341327403eb930e9cd0dbc44324 + checksum: e0082ee43412e1db2c194b9e052329e022de3e41681b0874b8452f454a678c644cb9ca67e1d8b99d16df15f8d711d181fa515ec339ecd41bf7f5c1a72460c051 languageName: node linkType: hard -"@polkadot/ui-settings@npm:3.12.2": - version: 3.12.2 - resolution: "@polkadot/ui-settings@npm:3.12.2" +"@polkadot/ui-settings@npm:3.13.1": + version: 3.13.1 + resolution: "@polkadot/ui-settings@npm:3.13.1" dependencies: - "@polkadot/networks": ^13.4.3 - "@polkadot/util": ^13.4.3 + "@polkadot/networks": ^13.4.4 + "@polkadot/util": ^13.4.4 eventemitter3: ^5.0.1 store: ^2.0.12 tslib: ^2.8.1 peerDependencies: "@polkadot/networks": "*" "@polkadot/util": "*" - checksum: 812b235117182cc2748cf39ca37ee5efcc889758d714c4bc0c383045fdcc2c927ed25847a549c89f296dcfc8cb77c5a2bef85ce30cea6fab8c6baf4d7928b043 + checksum: 2231c17252d83230e967c686e37efac81c291279d9090d14b1267ce86f387b46c2213a1e2789cc7021b23717c42337b679a89397604435ad43cd63b892cd69ba languageName: node linkType: hard "@polkadot/ui-shared@npm:^3.12.2": - version: 3.12.2 - resolution: "@polkadot/ui-shared@npm:3.12.2" + version: 3.13.1 + resolution: "@polkadot/ui-shared@npm:3.13.1" dependencies: colord: ^2.9.3 tslib: ^2.8.1 peerDependencies: "@polkadot/util": "*" "@polkadot/util-crypto": "*" - checksum: 75d771d8ad94daa2be8e913201ba6a6e4f4b53fd47d89a0b3a8470a3ae36b47b308bfa5b7d70c41beca7108a48157bf33ce6752d4c63e5fe6108df3bd6e0b430 + checksum: 21e6c2f2d2d05b483fa0270d352a7ecefe2a5e0a502bcca8feb7996478ddeba257a65a1f0282897342531500e9ba9c156be0afb489a2e467731712ab2b16659a languageName: node linkType: hard -"@polkadot/util-crypto@npm:13.4.3, @polkadot/util-crypto@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/util-crypto@npm:13.4.3" +"@polkadot/util-crypto@npm:13.4.4, @polkadot/util-crypto@npm:^13.4.3, @polkadot/util-crypto@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/util-crypto@npm:13.4.4" dependencies: "@noble/curves": ^1.3.0 "@noble/hashes": ^1.3.3 - "@polkadot/networks": 13.4.3 - "@polkadot/util": 13.4.3 + "@polkadot/networks": 13.4.4 + "@polkadot/util": 13.4.4 "@polkadot/wasm-crypto": ^7.4.1 "@polkadot/wasm-util": ^7.4.1 - "@polkadot/x-bigint": 13.4.3 - "@polkadot/x-randomvalues": 13.4.3 + "@polkadot/x-bigint": 13.4.4 + "@polkadot/x-randomvalues": 13.4.4 "@scure/base": ^1.1.7 tslib: ^2.8.0 peerDependencies: - "@polkadot/util": 13.4.3 - checksum: eeddf313e80c898570a0ee0b999d0c560b489f8749188c678a1be2219e57a15a5123e50ab21e4bbb6bfaab380facdde3b75dba1b2fe16021415b62ee62abdfdb + "@polkadot/util": 13.4.4 + checksum: a97eb0b3096ea2bb6deefd6b14d5d3ecd1cbf6ad95a857b3123b6db8ce57c1fbf212d3b19bd4c736cc2bb6c0dec41550f2fc470fdc3913d5de9e5cdd5052cf42 languageName: node linkType: hard -"@polkadot/util@npm:13.4.3, @polkadot/util@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/util@npm:13.4.3" +"@polkadot/util@npm:13.4.4, @polkadot/util@npm:^13.4.3, @polkadot/util@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/util@npm:13.4.4" dependencies: - "@polkadot/x-bigint": 13.4.3 - "@polkadot/x-global": 13.4.3 - "@polkadot/x-textdecoder": 13.4.3 - "@polkadot/x-textencoder": 13.4.3 + "@polkadot/x-bigint": 13.4.4 + "@polkadot/x-global": 13.4.4 + "@polkadot/x-textdecoder": 13.4.4 + "@polkadot/x-textencoder": 13.4.4 "@types/bn.js": ^5.1.6 bn.js: ^5.2.1 tslib: ^2.8.0 - checksum: 64f643d427fa3664f996a9004ef970d25e676dd598a3edb5d04e134a62edfae896a84082398435deca9066bab6e8c80f1cd945bb5b02c0bd8a331464db35966a + checksum: e81f964f02c8c8ababa54c1dbd62eb4189692ac9a607836b8edfd0d2bb139172d1ea88cebd1c44b15484a61c1fbb6d01f9b444ecfa9eb5c0cec13f7c684ea2f9 languageName: node linkType: hard @@ -1902,298 +1750,235 @@ __metadata: languageName: node linkType: hard -"@polkadot/x-bigint@npm:13.4.3, @polkadot/x-bigint@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-bigint@npm:13.4.3" +"@polkadot/x-bigint@npm:13.4.4, @polkadot/x-bigint@npm:^13.4.3, @polkadot/x-bigint@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-bigint@npm:13.4.4" dependencies: - "@polkadot/x-global": 13.4.3 + "@polkadot/x-global": 13.4.4 tslib: ^2.8.0 - checksum: 7d6e43bfead093b4af6421e4bec8f305ae7eba6059e145e1830f6e874173701639f2273c36b37fe63ec89d18a0992e24b246ee583a44c7656920f039e590018a + checksum: 8c18c9164e6d744d708aa66dd2edcdbecf2c8d83813444bcd9772002433718fc06900a0e4628c0725efe12fab85e66dc947337d06df114c2bfcb47d430061a0d languageName: node linkType: hard -"@polkadot/x-fetch@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-fetch@npm:13.4.3" +"@polkadot/x-fetch@npm:^13.4.3, @polkadot/x-fetch@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-fetch@npm:13.4.4" dependencies: - "@polkadot/x-global": 13.4.3 + "@polkadot/x-global": 13.4.4 node-fetch: ^3.3.2 tslib: ^2.8.0 - checksum: e587ddb73a2aa5244f2597467cc6e02685a1b161fb47f8c585570920883e5368d5dff1aca88824f70180534169fb3cab109f531d4e298280043dc103261b5e2d + checksum: f37d127ebfcd4f622c006134b5a7269978077808a4c82d7e90dd5b6057a552d53068c00761119777ad357dd92c3994e6cf8637267904441be4188847e7e593d7 languageName: node linkType: hard -"@polkadot/x-global@npm:13.4.3, @polkadot/x-global@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-global@npm:13.4.3" +"@polkadot/x-global@npm:13.4.4, @polkadot/x-global@npm:^13.4.3, @polkadot/x-global@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-global@npm:13.4.4" dependencies: tslib: ^2.8.0 - checksum: 731750a234437e6d8b41757631644bca8f3c58df8e705392e3eafc040b82c562c6bc1f90aacc39abc39c712a3caa6c5e9ecd60efd4e36b1914b950507bc703df + checksum: 690539a3e1ff54193fcbf8f650d7a7068616a3fa8845ebe98a0a601d2e87cb52b054fbab85856a4c7758acd280c5d0b3cefae01d159389f0aae4fdea79549d5e languageName: node linkType: hard -"@polkadot/x-randomvalues@npm:13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-randomvalues@npm:13.4.3" +"@polkadot/x-randomvalues@npm:13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-randomvalues@npm:13.4.4" dependencies: - "@polkadot/x-global": 13.4.3 + "@polkadot/x-global": 13.4.4 tslib: ^2.8.0 peerDependencies: - "@polkadot/util": 13.4.3 + "@polkadot/util": 13.4.4 "@polkadot/wasm-util": "*" - checksum: 4fb06d2ecbbe6ffe70b596064f8ac0d3df772a551337547fa5979698726e7f2dee323d35bf577e50f7f84a50ba3b7bdc620ccb9c246b6eb32ce43608f22b77a9 + checksum: b750df4f83ea866820b562c4d4bb0c3774af4734883542adb6bc16227b845b84a56a1c3089e57b865db104b0dafec6c18079a268aef57e9e5c851b309a6afe08 languageName: node linkType: hard -"@polkadot/x-textdecoder@npm:13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-textdecoder@npm:13.4.3" +"@polkadot/x-textdecoder@npm:13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-textdecoder@npm:13.4.4" dependencies: - "@polkadot/x-global": 13.4.3 + "@polkadot/x-global": 13.4.4 tslib: ^2.8.0 - checksum: f47f0721bb61804e193e8d0219e367c1c5e7a2d46d07a0a60a1878b12ee1403792e5c0c74fc2a3c7fab231bac9b1140cb39008d1cf0e13694817ec8a97b48ed8 + checksum: 44a09304c1013345518e9bf05e0ca506845447515ab018f857c5d7428c048e9ca8623be0b659ed1b9a1e9cf6d702775eef850b6ceab10f6ceea7da959e623892 languageName: node linkType: hard -"@polkadot/x-textencoder@npm:13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-textencoder@npm:13.4.3" +"@polkadot/x-textencoder@npm:13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-textencoder@npm:13.4.4" dependencies: - "@polkadot/x-global": 13.4.3 + "@polkadot/x-global": 13.4.4 tslib: ^2.8.0 - checksum: bee2d2b0458214858ae8a48b50333b155f1b315f38e42a0ea72287ee621d00dbb06022ac831a70f331297df30b5ff7c3120b1a6cde35137addcb81ac9281cd43 + checksum: 2534f585115d6bdd192ca76422789b897a3f50b7530014b71211f32fd201c1b0e4b1c3e2608599f09df1fcd0951b5c4c8ac04800584aa1b8521d1e8464179b88 languageName: node linkType: hard -"@polkadot/x-ws@npm:^13.4.3": - version: 13.4.3 - resolution: "@polkadot/x-ws@npm:13.4.3" +"@polkadot/x-ws@npm:^13.4.3, @polkadot/x-ws@npm:^13.4.4": + version: 13.4.4 + resolution: "@polkadot/x-ws@npm:13.4.4" dependencies: - "@polkadot/x-global": 13.4.3 + "@polkadot/x-global": 13.4.4 tslib: ^2.8.0 ws: ^8.18.0 - checksum: 6e1dc064527576cd88798a04cd7f8d296ea45dba769cba6972127a563ac18de59642c997f50d5b99b55d9f67aec46c27f4315f7dedbb516cdcab5676f0b17ff8 + checksum: 4729fcce9f09584d5cdccfa7e25f2c00f1654c11f1f3e804e41f696714b721eb22082532887ebf1c2bf4af2315544900747ab21dff38e01a80cdae166e3597f4 languageName: node linkType: hard -"@remix-run/router@npm:1.19.1": - version: 1.19.1 - resolution: "@remix-run/router@npm:1.19.1" - checksum: ebe4474ba0c1046093976b48a4eb4e39bd2f47368aacea21400126d72e133d2cfbfb50254cf1bde0b66dacdf0344452f743049d1595a22e86130668f60112376 +"@remix-run/router@npm:1.23.0": + version: 1.23.0 + resolution: "@remix-run/router@npm:1.23.0" + checksum: 6a403b7bc740f15185f3b68f90f98d4976fe231e819b44a0f0628783c4f31ca1072e3370c24b98488be3e4f68ecf51b20cb9463f20a5a6cf4c21929fc7721964 languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.21.0" +"@rollup/rollup-android-arm-eabi@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-android-arm-eabi@npm:4.40.0" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rollup/rollup-android-arm-eabi@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-android-arm-eabi@npm:4.9.6" - conditions: os=android & cpu=arm - languageName: node - linkType: hard - -"@rollup/rollup-android-arm64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-android-arm64@npm:4.21.0" +"@rollup/rollup-android-arm64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-android-arm64@npm:4.40.0" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-android-arm64@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-android-arm64@npm:4.9.6" - conditions: os=android & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-arm64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-darwin-arm64@npm:4.21.0" - conditions: os=darwin & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-darwin-arm64@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-darwin-arm64@npm:4.9.6" +"@rollup/rollup-darwin-arm64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-darwin-arm64@npm:4.40.0" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-darwin-x64@npm:4.21.0" +"@rollup/rollup-darwin-x64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-darwin-x64@npm:4.40.0" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-darwin-x64@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-darwin-x64@npm:4.9.6" - conditions: os=darwin & cpu=x64 +"@rollup/rollup-freebsd-arm64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-freebsd-arm64@npm:4.40.0" + conditions: os=freebsd & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.21.0" - conditions: os=linux & cpu=arm +"@rollup/rollup-freebsd-x64@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-freebsd-x64@npm:4.40.0" + conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-arm-gnueabihf@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.9.6" +"@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm-gnueabihf@npm:4.40.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rollup/rollup-linux-arm-musleabihf@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.21.0" +"@rollup/rollup-linux-arm-musleabihf@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm-musleabihf@npm:4.40.0" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.21.0" +"@rollup/rollup-linux-arm64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.40.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-linux-arm64-gnu@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-linux-arm64-gnu@npm:4.9.6" +"@rollup/rollup-linux-arm64-musl@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-arm64-musl@npm:4.40.0" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-linux-arm64-musl@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.21.0" - conditions: os=linux & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-arm64-musl@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-linux-arm64-musl@npm:4.9.6" - conditions: os=linux & cpu=arm64 +"@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-loongarch64-gnu@npm:4.40.0" + conditions: os=linux & cpu=loong64 languageName: node linkType: hard -"@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.21.0" +"@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-powerpc64le-gnu@npm:4.40.0" conditions: os=linux & cpu=ppc64 languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.21.0" +"@rollup/rollup-linux-riscv64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.40.0" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@rollup/rollup-linux-riscv64-gnu@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-linux-riscv64-gnu@npm:4.9.6" +"@rollup/rollup-linux-riscv64-musl@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-riscv64-musl@npm:4.40.0" conditions: os=linux & cpu=riscv64 languageName: node linkType: hard -"@rollup/rollup-linux-s390x-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.21.0" +"@rollup/rollup-linux-s390x-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-s390x-gnu@npm:4.40.0" conditions: os=linux & cpu=s390x languageName: node linkType: hard -"@rollup/rollup-linux-x64-gnu@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.21.0" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-gnu@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-linux-x64-gnu@npm:4.9.6" - conditions: os=linux & cpu=x64 - languageName: node - linkType: hard - -"@rollup/rollup-linux-x64-musl@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.21.0" +"@rollup/rollup-linux-x64-gnu@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-x64-gnu@npm:4.40.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-linux-x64-musl@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-linux-x64-musl@npm:4.9.6" +"@rollup/rollup-linux-x64-musl@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-linux-x64-musl@npm:4.40.0" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.21.0" +"@rollup/rollup-win32-arm64-msvc@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.40.0" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rollup/rollup-win32-arm64-msvc@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-win32-arm64-msvc@npm:4.9.6" - conditions: os=win32 & cpu=arm64 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.21.0" - conditions: os=win32 & cpu=ia32 - languageName: node - linkType: hard - -"@rollup/rollup-win32-ia32-msvc@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.9.6" +"@rollup/rollup-win32-ia32-msvc@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-ia32-msvc@npm:4.40.0" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.21.0": - version: 4.21.0 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.21.0" +"@rollup/rollup-win32-x64-msvc@npm:4.40.0": + version: 4.40.0 + resolution: "@rollup/rollup-win32-x64-msvc@npm:4.40.0" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@rollup/rollup-win32-x64-msvc@npm:4.9.6": - version: 4.9.6 - resolution: "@rollup/rollup-win32-x64-msvc@npm:4.9.6" - conditions: os=win32 & cpu=x64 - languageName: node - linkType: hard - -"@scure/base@npm:^1.1.1": - version: 1.1.5 - resolution: "@scure/base@npm:1.1.5" - checksum: 9e9ee6088cb3aa0fb91f5a48497d26682c7829df3019b1251d088d166d7a8c0f941c68aaa8e7b96bbad20c71eb210397cb1099062cde3e29d4bad6b975c18519 +"@rtsao/scc@npm:^1.1.0": + version: 1.1.0 + resolution: "@rtsao/scc@npm:1.1.0" + checksum: 17d04adf404e04c1e61391ed97bca5117d4c2767a76ae3e879390d6dec7b317fcae68afbf9e98badee075d0b64fa60f287729c4942021b4d19cd01db77385c01 languageName: node linkType: hard -"@scure/base@npm:^1.1.7": +"@scure/base@npm:^1.1.1, @scure/base@npm:^1.1.7": version: 1.2.4 resolution: "@scure/base@npm:1.2.4" checksum: db554eb550a1bd17684af9282e1ad751050a13d4add0e83ad61cc496680d7d1c1c1120ca780e72935a293bb59721c20a006a53a5eec6f6b5bdcd702cf27c8cae @@ -2201,16 +1986,16 @@ __metadata: linkType: hard "@substrate/connect-extension-protocol@npm:^2.0.0": - version: 2.0.0 - resolution: "@substrate/connect-extension-protocol@npm:2.0.0" - checksum: a7c6ff3fefc0784f28b1d253514c1d2951684fe3d06392dfd70299fa2184fbe040d2bd6e0f113e30a1920920b649d43668aa4565847778ab3334c7e445e880cf + version: 2.2.2 + resolution: "@substrate/connect-extension-protocol@npm:2.2.2" + checksum: 6baca8b28eb515bf6508517183ce911a61c598aa676a670631da3da52fb83aeab7cad952ce85696a21dc0aa54adc08f211ea0365b06a0486a95c6a895f80a635 languageName: node linkType: hard "@substrate/connect-known-chains@npm:^1.1.5": - version: 1.3.0 - resolution: "@substrate/connect-known-chains@npm:1.3.0" - checksum: 217d8161cfdd67795509425a4dbd41c0a054f6197053abae1232ab95c111a5834f8d158b0bb6224c754e9b0a14c8e5b1a37b14abac320f729266c0ebe050f12e + version: 1.10.0 + resolution: "@substrate/connect-known-chains@npm:1.10.0" + checksum: 077259b89402f25a4482137c8588588096e0e1c952513bccc3adf4e402bb6f8e5fc2fac69d84544e9f1edf0118aa63193e15901ef6d5cd7aee7b768b3cc602e0 languageName: node linkType: hard @@ -2250,94 +2035,94 @@ __metadata: languageName: node linkType: hard -"@swc/core-darwin-arm64@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-darwin-arm64@npm:1.7.18" +"@swc/core-darwin-arm64@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-darwin-arm64@npm:1.11.21" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@swc/core-darwin-x64@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-darwin-x64@npm:1.7.18" +"@swc/core-darwin-x64@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-darwin-x64@npm:1.11.21" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-arm-gnueabihf@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-linux-arm-gnueabihf@npm:1.7.18" +"@swc/core-linux-arm-gnueabihf@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-arm-gnueabihf@npm:1.11.21" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@swc/core-linux-arm64-gnu@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-linux-arm64-gnu@npm:1.7.18" +"@swc/core-linux-arm64-gnu@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-arm64-gnu@npm:1.11.21" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@swc/core-linux-arm64-musl@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-linux-arm64-musl@npm:1.7.18" +"@swc/core-linux-arm64-musl@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-arm64-musl@npm:1.11.21" conditions: os=linux & cpu=arm64 languageName: node linkType: hard -"@swc/core-linux-x64-gnu@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-linux-x64-gnu@npm:1.7.18" +"@swc/core-linux-x64-gnu@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-x64-gnu@npm:1.11.21" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@swc/core-linux-x64-musl@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-linux-x64-musl@npm:1.7.18" +"@swc/core-linux-x64-musl@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-linux-x64-musl@npm:1.11.21" conditions: os=linux & cpu=x64 languageName: node linkType: hard -"@swc/core-win32-arm64-msvc@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-win32-arm64-msvc@npm:1.7.18" +"@swc/core-win32-arm64-msvc@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-win32-arm64-msvc@npm:1.11.21" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@swc/core-win32-ia32-msvc@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-win32-ia32-msvc@npm:1.7.18" +"@swc/core-win32-ia32-msvc@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-win32-ia32-msvc@npm:1.11.21" conditions: os=win32 & cpu=ia32 languageName: node linkType: hard -"@swc/core-win32-x64-msvc@npm:1.7.18": - version: 1.7.18 - resolution: "@swc/core-win32-x64-msvc@npm:1.7.18" +"@swc/core-win32-x64-msvc@npm:1.11.21": + version: 1.11.21 + resolution: "@swc/core-win32-x64-msvc@npm:1.11.21" conditions: os=win32 & cpu=x64 languageName: node linkType: hard -"@swc/core@npm:^1.5.7": - version: 1.7.18 - resolution: "@swc/core@npm:1.7.18" +"@swc/core@npm:^1.11.21": + version: 1.11.21 + resolution: "@swc/core@npm:1.11.21" dependencies: - "@swc/core-darwin-arm64": 1.7.18 - "@swc/core-darwin-x64": 1.7.18 - "@swc/core-linux-arm-gnueabihf": 1.7.18 - "@swc/core-linux-arm64-gnu": 1.7.18 - "@swc/core-linux-arm64-musl": 1.7.18 - "@swc/core-linux-x64-gnu": 1.7.18 - "@swc/core-linux-x64-musl": 1.7.18 - "@swc/core-win32-arm64-msvc": 1.7.18 - "@swc/core-win32-ia32-msvc": 1.7.18 - "@swc/core-win32-x64-msvc": 1.7.18 + "@swc/core-darwin-arm64": 1.11.21 + "@swc/core-darwin-x64": 1.11.21 + "@swc/core-linux-arm-gnueabihf": 1.11.21 + "@swc/core-linux-arm64-gnu": 1.11.21 + "@swc/core-linux-arm64-musl": 1.11.21 + "@swc/core-linux-x64-gnu": 1.11.21 + "@swc/core-linux-x64-musl": 1.11.21 + "@swc/core-win32-arm64-msvc": 1.11.21 + "@swc/core-win32-ia32-msvc": 1.11.21 + "@swc/core-win32-x64-msvc": 1.11.21 "@swc/counter": ^0.1.3 - "@swc/types": ^0.1.12 + "@swc/types": ^0.1.21 peerDependencies: - "@swc/helpers": "*" + "@swc/helpers": ">=0.5.17" dependenciesMeta: "@swc/core-darwin-arm64": optional: true @@ -2362,7 +2147,7 @@ __metadata: peerDependenciesMeta: "@swc/helpers": optional: true - checksum: 090708fefbfac6b803f7f186579d788d977e39e68007e44415ad64b51386c38f647c4de3657913f8d2f4f908d0e1b51dd10c473a4bfd0234df4caf94144557a1 + checksum: 11f1e54ba42af019ed123ab0019ff43fd67c35a7b6efe0d3c83afddb244b2b0f65832e56c213ea9ed630925f62101a8155bc8aa18a033e4474d0cf52e9c273a7 languageName: node linkType: hard @@ -2373,49 +2158,49 @@ __metadata: languageName: node linkType: hard -"@swc/types@npm:^0.1.12": - version: 0.1.12 - resolution: "@swc/types@npm:0.1.12" +"@swc/types@npm:^0.1.21": + version: 0.1.21 + resolution: "@swc/types@npm:0.1.21" dependencies: "@swc/counter": ^0.1.3 - checksum: cf7f89e46f859864075d7965582baea9c5f98830f45b1046251568c9bdf1ca484b1bf37f6d3c32b7c82ecf8cd5df89d22f05268c391819c44e49911bb1a8e71a + checksum: 857621e50ec78407bfeaa92663be86fc9ee2c9c103ccffd7f48c55b6f3c67a82e270f6524c7974c2c608a2ed0fcf4f00c20f61c8d1fdfd2aa55b2c42a28223f1 languageName: node linkType: hard "@tailwindcss/forms@npm:^0.5.7": - version: 0.5.7 - resolution: "@tailwindcss/forms@npm:0.5.7" + version: 0.5.10 + resolution: "@tailwindcss/forms@npm:0.5.10" dependencies: mini-svg-data-uri: ^1.2.3 peerDependencies: - tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1" - checksum: 406fe102a44f89d896c9a945b705a40b926520472ffd8613d9fbfb9e63c23d600629f54096b8ba78316ce1278b79ae6070c166b820328256cf359e80f9d2146f + tailwindcss: ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20 || >= 4.0.0-beta.1" + checksum: 4526d02edccc4e44599d9588f83e4ac3e9435d137da5638653de2e74d5b612ade449a8c26d075be21692c1ac00a514aaffdb6723e526e3c8314c9a75a9f45979 languageName: node linkType: hard "@tanstack/react-virtual@npm:^3.0.0-beta.60": - version: 3.10.4 - resolution: "@tanstack/react-virtual@npm:3.10.4" + version: 3.13.6 + resolution: "@tanstack/react-virtual@npm:3.13.6" dependencies: - "@tanstack/virtual-core": 3.10.4 + "@tanstack/virtual-core": 3.13.6 peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: 04b6159a09b5f69567849ad4150766ac71ef99243380214b411d0ab77e3a4dc2d16ec4ec231cee4ba8e2096ebe7e4ad26afb34ed21e4203947d787deda66ab53 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: 4500088f7719a5a6241f4fcf24074a2fa8cb54d9c5c50786e909e87aee98af2ac0c1513139984c388e97e8ddb65d108390d39083b0b793fbfd343976f13447c4 languageName: node linkType: hard -"@tanstack/virtual-core@npm:3.10.4": - version: 3.10.4 - resolution: "@tanstack/virtual-core@npm:3.10.4" - checksum: 9e33942a2f9450881c510d31bce18a94c9edbab2e723f04c34535e61234817d2d3197270d341de9850de7bf011339e7724d72276258003bdfaca8a3438905be3 +"@tanstack/virtual-core@npm:3.13.6": + version: 3.13.6 + resolution: "@tanstack/virtual-core@npm:3.13.6" + checksum: ac3dfde6208e4dbe404a4cdb3e0de772af17b8c245d313d1b13fe31910e680dc3f4f6b699ad244b148363700293841d2a2dadf2cc50354da294acac7c4af7c86 languageName: node linkType: hard "@tsconfig/node10@npm:^1.0.7": - version: 1.0.9 - resolution: "@tsconfig/node10@npm:1.0.9" - checksum: a33ae4dc2a621c0678ac8ac4bceb8e512ae75dac65417a2ad9b022d9b5411e863c4c198b6ba9ef659e14b9fb609bbec680841a2e84c1172df7a5ffcf076539df + version: 1.0.11 + resolution: "@tsconfig/node10@npm:1.0.11" + checksum: 51fe47d55fe1b80ec35e6e5ed30a13665fd3a531945350aa74a14a1e82875fb60b350c2f2a5e72a64831b1b6bc02acb6760c30b3738b54954ec2dea82db7a267 languageName: node linkType: hard @@ -2440,6 +2225,15 @@ __metadata: languageName: node linkType: hard +"@tybys/wasm-util@npm:^0.9.0": + version: 0.9.0 + resolution: "@tybys/wasm-util@npm:0.9.0" + dependencies: + tslib: ^2.4.0 + checksum: 8d44c64e64e39c746e45b5dff7b534716f20e1f6e8fc206f8e4c8ac454ec0eb35b65646e446dd80745bc898db37a4eca549a936766d447c2158c9c43d44e7708 + languageName: node + linkType: hard + "@types/babel__core@npm:^7.20.5": version: 7.20.5 resolution: "@types/babel__core@npm:7.20.5" @@ -2454,11 +2248,11 @@ __metadata: linkType: hard "@types/babel__generator@npm:*": - version: 7.6.8 - resolution: "@types/babel__generator@npm:7.6.8" + version: 7.27.0 + resolution: "@types/babel__generator@npm:7.27.0" dependencies: "@babel/types": ^7.0.0 - checksum: 5b332ea336a2efffbdeedb92b6781949b73498606ddd4205462f7d96dafd45ff3618770b41de04c4881e333dd84388bfb8afbdf6f2764cbd98be550d85c6bb48 + checksum: e6739cacfa276c1ad38e1d8a6b4b1f816c2c11564e27f558b68151728489aaf0f4366992107ee4ed7615dfa303f6976dedcdce93df2b247116d1bcd1607ee260 languageName: node linkType: hard @@ -2473,11 +2267,11 @@ __metadata: linkType: hard "@types/babel__traverse@npm:*": - version: 7.20.5 - resolution: "@types/babel__traverse@npm:7.20.5" + version: 7.20.7 + resolution: "@types/babel__traverse@npm:7.20.7" dependencies: "@babel/types": ^7.20.7 - checksum: 608e0ab4fc31cd47011d98942e6241b34d461608c0c0e153377c5fd822c436c475f1ded76a56bfa76a1adf8d9266b727bbf9bfac90c4cb152c97f30dadc5b7e8 + checksum: 2a2e5ad29c34a8b776162b0fe81c9ccb6459b2b46bf230f756ba0276a0258fcae1cbcfdccbb93a1e8b1df44f4939784ee8a1a269f95afe0c78b24b9cb6d50dd1 languageName: node linkType: hard @@ -2522,10 +2316,10 @@ __metadata: languageName: node linkType: hard -"@types/estree@npm:*, @types/estree@npm:1.0.5, @types/estree@npm:^1.0.0": - version: 1.0.5 - resolution: "@types/estree@npm:1.0.5" - checksum: dd8b5bed28e6213b7acd0fb665a84e693554d850b0df423ac8076cc3ad5823a6bc26b0251d080bdc545af83179ede51dd3f6fa78cad2c46ed1f29624ddf3e41a +"@types/estree@npm:*, @types/estree@npm:1.0.7, @types/estree@npm:^1.0.0, @types/estree@npm:^1.0.6": + version: 1.0.7 + resolution: "@types/estree@npm:1.0.7" + checksum: d9312b7075bdd08f3c9e1bb477102f5458aaa42a8eec31a169481ce314ca99ac716645cff4fca81ea65a2294b0276a0de63159d1baca0f8e7b5050a92de950ad languageName: node linkType: hard @@ -2538,6 +2332,13 @@ __metadata: languageName: node linkType: hard +"@types/json-schema@npm:^7.0.15": + version: 7.0.15 + resolution: "@types/json-schema@npm:7.0.15" + checksum: 97ed0cb44d4070aecea772b7b2e2ed971e10c81ec87dd4ecc160322ffa55ff330dace1793489540e3e318d90942064bb697cc0f8989391797792d919737b3b98 + languageName: node + linkType: hard + "@types/json5@npm:^0.0.29": version: 0.0.29 resolution: "@types/json5@npm:0.0.29" @@ -2555,27 +2356,27 @@ __metadata: linkType: hard "@types/ms@npm:*": - version: 0.7.34 - resolution: "@types/ms@npm:0.7.34" - checksum: f38d36e7b6edecd9badc9cf50474159e9da5fa6965a75186cceaf883278611b9df6669dc3a3cc122b7938d317b68a9e3d573d316fcb35d1be47ec9e468c6bd8a + version: 2.1.0 + resolution: "@types/ms@npm:2.1.0" + checksum: 532d2ebb91937ccc4a89389715e5b47d4c66e708d15942fe6cc25add6dc37b2be058230a327dd50f43f89b8b6d5d52b74685a9e8f70516edfc9bdd6be910eff4 languageName: node linkType: hard -"@types/node@npm:*": - version: 20.11.16 - resolution: "@types/node@npm:20.11.16" +"@types/node@npm:*, @types/node@npm:^22.5.0": + version: 22.14.1 + resolution: "@types/node@npm:22.14.1" dependencies: - undici-types: ~5.26.4 - checksum: 51f0831c1219bf4698e7430aeb9892237bd851deeb25ce23c5bb0ceefcc77c3b114e48f4e98d9fc26def5a87ba9d8079f0281dd37bee691140a93f133812c152 + undici-types: ~6.21.0 + checksum: e22363f40ac8290da2bb5261c2b348241fd93b000908cefd3c56575df9d4f6b8d102fc8631275eac7ec4a9e0ac4f38f01c9d8104ebbda76c936aef96fd1e55f3 languageName: node linkType: hard -"@types/node@npm:^22.5.0": - version: 22.5.0 - resolution: "@types/node@npm:22.5.0" +"@types/node@npm:22.7.5": + version: 22.7.5 + resolution: "@types/node@npm:22.7.5" dependencies: undici-types: ~6.19.2 - checksum: 3710b6f42416796061cf47cff0a37955f2ca0afc63ab281cc23e46b3ec8dffcabc66b970e4ee34fff5e2082617bed47610b4a1122c7b3880f551d3c673c40f84 + checksum: 1a8bbb504efaffcef7b8491074a428e5c0b5425b0c0ffb13e7262cb8462c275e8cc5eaf90a38d8fbf52a1eeda7c01ab3b940673c43fc2414140779c973e40ec6 languageName: node linkType: hard @@ -2586,46 +2387,30 @@ __metadata: languageName: node linkType: hard -"@types/prop-types@npm:*": - version: 15.7.11 - resolution: "@types/prop-types@npm:15.7.11" - checksum: 7519ff11d06fbf6b275029fe03fff9ec377b4cb6e864cac34d87d7146c7f5a7560fd164bdc1d2dbe00b60c43713631251af1fd3d34d46c69cd354602bc0c7c54 - languageName: node - linkType: hard - -"@types/react-dom@npm:^18.3.0": - version: 18.3.0 - resolution: "@types/react-dom@npm:18.3.0" - dependencies: - "@types/react": "*" - checksum: a0cd9b1b815a6abd2a367a9eabdd8df8dd8f13f95897b2f9e1359ea3ac6619f957c1432ece004af7d95e2a7caddbba19faa045f831f32d6263483fc5404a7596 +"@types/react-dom@npm:^19.1.2": + version: 19.1.2 + resolution: "@types/react-dom@npm:19.1.2" + peerDependencies: + "@types/react": ^19.0.0 + checksum: 62a5c398e87b5a42f34497152c67367db70d5e348a05fc4bd78c119fc8d4367c02833c022b2f5dba4df33ae65b7ff76409847722ce6b8f9ea5d31983832688da languageName: node linkType: hard "@types/react-transition-group@npm:^4.4.0": - version: 4.4.10 - resolution: "@types/react-transition-group@npm:4.4.10" - dependencies: + version: 4.4.12 + resolution: "@types/react-transition-group@npm:4.4.12" + peerDependencies: "@types/react": "*" - checksum: fe2ea11f70251e9f79f368e198c18fd469b1d4f1e1d44e4365845b44e15974b0ec925100036f449b023b0ca3480a82725c5f0a73040e282ad32ec7b0def9b57c + checksum: 13d36396cae4d3c316b03d4a0ba299f0d039c59368ba65e04b0c3dc06fd0a16f59d2c669c3e32d6d525a95423f156b84e550d26bff0bdd8df285f305f8f3a0ed languageName: node linkType: hard -"@types/react@npm:*": - version: 18.2.55 - resolution: "@types/react@npm:18.2.55" +"@types/react@npm:^19.1.2": + version: 19.1.2 + resolution: "@types/react@npm:19.1.2" dependencies: - "@types/prop-types": "*" - "@types/scheduler": "*" csstype: ^3.0.2 - checksum: a8eb4fa77f73831b9112d4f11a7006217dc0740361649b9b0da3fd441d151a9cd415d5d68b91c0af4e430e063424d301c77489e5edaddc9f711c4e46cf9818a5 - languageName: node - linkType: hard - -"@types/scheduler@npm:*": - version: 0.16.8 - resolution: "@types/scheduler@npm:0.16.8" - checksum: 6c091b096daa490093bf30dd7947cd28e5b2cd612ec93448432b33f724b162587fed9309a0acc104d97b69b1d49a0f3fc755a62282054d62975d53d7fd13472d + checksum: 5a911a2c84be0c9451bb8a7c75c907af1f52afbb4d51b0d62e7516a9b0b1e63c3c1cdc35b79bfc6e66176c76cfff9d43023a781cd3dc59e2744715ced7d7e7c4 languageName: node linkType: hard @@ -2637,9 +2422,9 @@ __metadata: linkType: hard "@types/sizzle@npm:^2.3.2": - version: 2.3.8 - resolution: "@types/sizzle@npm:2.3.8" - checksum: 2ac62443dc917f5f903cbd9afc51c7d6cc1c6569b4e1a15faf04aea5b13b486e7f208650014c3dc4fed34653eded3e00fe5abffe0e6300cbf0e8a01beebf11a6 + version: 2.3.9 + resolution: "@types/sizzle@npm:2.3.9" + checksum: 413811a79e7e9f1d8f47e6047ae0aea1530449d612304cdda1c30018e3d053b8544861ec2c70bdeca75a0a010192e6bb78efc6fb4caaafdd65c4eee90066686a languageName: node linkType: hard @@ -2651,9 +2436,9 @@ __metadata: linkType: hard "@types/unist@npm:^2.0.0": - version: 2.0.10 - resolution: "@types/unist@npm:2.0.10" - checksum: e2924e18dedf45f68a5c6ccd6015cd62f1643b1b43baac1854efa21ae9e70505db94290434a23da1137d9e31eb58e54ca175982005698ac37300a1c889f6c4aa + version: 2.0.11 + resolution: "@types/unist@npm:2.0.11" + checksum: 6d436e832bc35c6dde9f056ac515ebf2b3384a1d7f63679d12358766f9b313368077402e9c1126a14d827f10370a5485e628bf61aa91117cf4fc882423191a4e languageName: node linkType: hard @@ -2667,214 +2452,342 @@ __metadata: linkType: hard "@typescript-eslint/eslint-plugin@npm:^8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/eslint-plugin@npm:8.2.0" + version: 8.30.1 + resolution: "@typescript-eslint/eslint-plugin@npm:8.30.1" dependencies: "@eslint-community/regexpp": ^4.10.0 - "@typescript-eslint/scope-manager": 8.2.0 - "@typescript-eslint/type-utils": 8.2.0 - "@typescript-eslint/utils": 8.2.0 - "@typescript-eslint/visitor-keys": 8.2.0 + "@typescript-eslint/scope-manager": 8.30.1 + "@typescript-eslint/type-utils": 8.30.1 + "@typescript-eslint/utils": 8.30.1 + "@typescript-eslint/visitor-keys": 8.30.1 graphemer: ^1.4.0 ignore: ^5.3.1 natural-compare: ^1.4.0 - ts-api-utils: ^1.3.0 + ts-api-utils: ^2.0.1 peerDependencies: "@typescript-eslint/parser": ^8.0.0 || ^8.0.0-alpha.0 eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: f702ea1c72941a225e2461da1dbc538bfc6eca4c81d377a457c6af18e74de11e5b06f1cd555d410bbe37c1c5eaab100d8b00fbb491f309944447103ef6f8c97f + typescript: ">=4.8.4 <5.9.0" + checksum: dbdc516ad95ac46d6ce4591356207e179def1b332883a635a3319fe8e2bcdb9de788f3df7a9afae80b7fa803a347be0ca90b45da06d33bc43ff67ec9182f3dbe languageName: node linkType: hard "@typescript-eslint/parser@npm:^8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/parser@npm:8.2.0" + version: 8.30.1 + resolution: "@typescript-eslint/parser@npm:8.30.1" dependencies: - "@typescript-eslint/scope-manager": 8.2.0 - "@typescript-eslint/types": 8.2.0 - "@typescript-eslint/typescript-estree": 8.2.0 - "@typescript-eslint/visitor-keys": 8.2.0 + "@typescript-eslint/scope-manager": 8.30.1 + "@typescript-eslint/types": 8.30.1 + "@typescript-eslint/typescript-estree": 8.30.1 + "@typescript-eslint/visitor-keys": 8.30.1 debug: ^4.3.4 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 3121ac888f080bafdb4e57c6bf949222d4756fcce617620af574a1b3fa93dec315098c70309849fcd0fdd70edcbbed33dd1f3b6320bb379016c6407de588b96e + typescript: ">=4.8.4 <5.9.0" + checksum: cac3cfe1c1e85e6639a05b9fedf3bdc56034eba063c1d637282c278cf6d4d6bd039f31513e9591056e8da4dd6c433d4f9ac841e8bee52a19e5b8709599a9168a languageName: node linkType: hard -"@typescript-eslint/scope-manager@npm:8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/scope-manager@npm:8.2.0" +"@typescript-eslint/scope-manager@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/scope-manager@npm:8.30.1" dependencies: - "@typescript-eslint/types": 8.2.0 - "@typescript-eslint/visitor-keys": 8.2.0 - checksum: c42fdd44bf06fcf0767ebee33b0d9199365066afa43e8f8fe7243c4b6ecb8d9056126df98d5ce771b4ff9f91132974c0348754ee1862cb6d5ae78e6608530650 + "@typescript-eslint/types": 8.30.1 + "@typescript-eslint/visitor-keys": 8.30.1 + checksum: cef9e700167fa1345edf26f60b384f04d05c386d2a255f6b89d602306165b6d7cf2a6e5d51f683571af6ebf1eebf89c07aed7f3253f399d632ecbb2ef1cbbaf1 languageName: node linkType: hard -"@typescript-eslint/type-utils@npm:8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/type-utils@npm:8.2.0" +"@typescript-eslint/type-utils@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/type-utils@npm:8.30.1" dependencies: - "@typescript-eslint/typescript-estree": 8.2.0 - "@typescript-eslint/utils": 8.2.0 + "@typescript-eslint/typescript-estree": 8.30.1 + "@typescript-eslint/utils": 8.30.1 debug: ^4.3.4 - ts-api-utils: ^1.3.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 10d85f856204012b56b78710572f5e9bcd4b7483b72e2497b9d7415495e3f0000b5a5197ffd652ed4273f444ab79d1589f12859a5dd7ad6e69e7ac0623942908 + ts-api-utils: ^2.0.1 + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 + typescript: ">=4.8.4 <5.9.0" + checksum: 6283d4b4d0edd371e9ad8172030ba51e9b69ed6f19a1ad6ad8ea98a00d07e77dd2a2618cd12a0827762ccd3c058b746b1d77b975dc5e81aad6e1b19abee650a7 languageName: node linkType: hard -"@typescript-eslint/types@npm:8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/types@npm:8.2.0" - checksum: 915fd7667308cb3fe3a50bbeb5b7cfa34ece87732a4e1107e6b4afcde64e6885dc3fcae0a0ccc417e90cd55090e4eeccc1310225be8706a58f522a899be8e626 +"@typescript-eslint/types@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/types@npm:8.30.1" + checksum: 264c4d8e1bef5b9e79509e2322a3978716768f03ef3af9ed62a7490bec04d3aaa1535b71221fe95f0d113227dfbade3664f5d5687d7859585c6bce536f138927 languageName: node linkType: hard -"@typescript-eslint/typescript-estree@npm:8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/typescript-estree@npm:8.2.0" +"@typescript-eslint/typescript-estree@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/typescript-estree@npm:8.30.1" dependencies: - "@typescript-eslint/types": 8.2.0 - "@typescript-eslint/visitor-keys": 8.2.0 + "@typescript-eslint/types": 8.30.1 + "@typescript-eslint/visitor-keys": 8.30.1 debug: ^4.3.4 - globby: ^11.1.0 + fast-glob: ^3.3.2 is-glob: ^4.0.3 minimatch: ^9.0.4 semver: ^7.6.0 - ts-api-utils: ^1.3.0 - peerDependenciesMeta: - typescript: - optional: true - checksum: 9bddd72398d24c5fb1a8c6d0481886928d80e6798ae357778574ac2c8b6c6e18cc32e42865167f0698fede9ad5abbdeced0d0b1b45486cf4eeff7ae30bb5b87d + ts-api-utils: ^2.0.1 + peerDependencies: + typescript: ">=4.8.4 <5.9.0" + checksum: f57a34e36de92aad859081bd64004fa8cbc5c00836145230bf6ed555bcd63a360e34086619aa77bbf17b97167a17be75b8a472c7951eee7a423760c482852b62 languageName: node linkType: hard -"@typescript-eslint/utils@npm:8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/utils@npm:8.2.0" +"@typescript-eslint/utils@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/utils@npm:8.30.1" dependencies: "@eslint-community/eslint-utils": ^4.4.0 - "@typescript-eslint/scope-manager": 8.2.0 - "@typescript-eslint/types": 8.2.0 - "@typescript-eslint/typescript-estree": 8.2.0 + "@typescript-eslint/scope-manager": 8.30.1 + "@typescript-eslint/types": 8.30.1 + "@typescript-eslint/typescript-estree": 8.30.1 peerDependencies: eslint: ^8.57.0 || ^9.0.0 - checksum: c3b35fc9de40d94c717fd6e0ce77212d78c4a0377dbdc716d82ce1babeb61891e91e566c9108b336fd74095c810f164ce23eb9adc51471975ffec360e332ecff + typescript: ">=4.8.4 <5.9.0" + checksum: 637b3b8b3dd6115122d1008572a86c356708682c28bfc40d916d8453caaefa9ac90cac2bf91b1a434e57ae5a84c81003c52389efff4371c71ee78ca91bb5b940 languageName: node linkType: hard -"@typescript-eslint/visitor-keys@npm:8.2.0": - version: 8.2.0 - resolution: "@typescript-eslint/visitor-keys@npm:8.2.0" +"@typescript-eslint/visitor-keys@npm:8.30.1": + version: 8.30.1 + resolution: "@typescript-eslint/visitor-keys@npm:8.30.1" dependencies: - "@typescript-eslint/types": 8.2.0 - eslint-visitor-keys: ^3.4.3 - checksum: 2f701efa1b63bc4141bbe3a38f0f0b51cbdcd3df3d8ca87232ac1d5cf16e957682302da74106952edb87e6435f2ab99e3b4f66103b94a21c2b5aa7d030926f06 + "@typescript-eslint/types": 8.30.1 + eslint-visitor-keys: ^4.2.0 + checksum: 7878f1e3e2d497596e007c96ee5fd7993e79009c7de88fa10a431983be16de5292b73ccbb5ebab4dc2ab88d4864250a6b0f3c3e3acde775bb915fa6e34fc878d languageName: node linkType: hard "@ungap/structured-clone@npm:^1.0.0": - version: 1.2.0 - resolution: "@ungap/structured-clone@npm:1.2.0" - checksum: 4f656b7b4672f2ce6e272f2427d8b0824ed11546a601d8d5412b9d7704e83db38a8d9f402ecdf2b9063fc164af842ad0ec4a55819f621ed7e7ea4d1efcc74524 + version: 1.3.0 + resolution: "@ungap/structured-clone@npm:1.3.0" + checksum: 64ed518f49c2b31f5b50f8570a1e37bde3b62f2460042c50f132430b2d869c4a6586f13aa33a58a4722715b8158c68cae2827389d6752ac54da2893c83e480fc + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-arm64@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-darwin-arm64@npm:1.5.0" + conditions: os=darwin & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-darwin-x64@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-darwin-x64@npm:1.5.0" + conditions: os=darwin & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-freebsd-x64@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-freebsd-x64@npm:1.5.0" + conditions: os=freebsd & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm-gnueabihf@npm:1.5.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm-musleabihf@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm-musleabihf@npm:1.5.0" + conditions: os=linux & cpu=arm + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm64-gnu@npm:1.5.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-arm64-musl@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-arm64-musl@npm:1.5.0" + conditions: os=linux & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-ppc64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-ppc64-gnu@npm:1.5.0" + conditions: os=linux & cpu=ppc64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-riscv64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-riscv64-gnu@npm:1.5.0" + conditions: os=linux & cpu=riscv64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-s390x-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-s390x-gnu@npm:1.5.0" + conditions: os=linux & cpu=s390x + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-gnu@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-x64-gnu@npm:1.5.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-linux-x64-musl@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-linux-x64-musl@npm:1.5.0" + conditions: os=linux & cpu=x64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-wasm32-wasi@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-wasm32-wasi@npm:1.5.0" + dependencies: + "@napi-rs/wasm-runtime": ^0.2.8 + conditions: cpu=wasm32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-arm64-msvc@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-win32-arm64-msvc@npm:1.5.0" + conditions: os=win32 & cpu=arm64 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-ia32-msvc@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-win32-ia32-msvc@npm:1.5.0" + conditions: os=win32 & cpu=ia32 + languageName: node + linkType: hard + +"@unrs/resolver-binding-win32-x64-msvc@npm:1.5.0": + version: 1.5.0 + resolution: "@unrs/resolver-binding-win32-x64-msvc@npm:1.5.0" + conditions: os=win32 & cpu=x64 languageName: node linkType: hard "@vitejs/plugin-react-swc@npm:^3.7.0": - version: 3.7.0 - resolution: "@vitejs/plugin-react-swc@npm:3.7.0" + version: 3.9.0 + resolution: "@vitejs/plugin-react-swc@npm:3.9.0" dependencies: - "@swc/core": ^1.5.7 + "@swc/core": ^1.11.21 peerDependencies: - vite: ^4 || ^5 - checksum: 87ee71cc7d261a0047a1a080c81081cb163edd555e1c8c60ff3372d14b7d76a19a28a7a03334417f622e704abd67e39e89a59d45f4742ec7036ca2988ee6651f + vite: ^4 || ^5 || ^6 + checksum: 3c69ce56649742c1f1c5d4a5130263135825ea09a79935c9b307d83e0d29d1764c8ac063b1454df2f8cdf00d67fc6195fc94286e94f10a04d9e4da35e504df30 languageName: node linkType: hard "@vitejs/plugin-react@npm:^4.3.1": - version: 4.3.1 - resolution: "@vitejs/plugin-react@npm:4.3.1" + version: 4.4.0 + resolution: "@vitejs/plugin-react@npm:4.4.0" dependencies: - "@babel/core": ^7.24.5 - "@babel/plugin-transform-react-jsx-self": ^7.24.5 - "@babel/plugin-transform-react-jsx-source": ^7.24.1 + "@babel/core": ^7.26.10 + "@babel/plugin-transform-react-jsx-self": ^7.25.9 + "@babel/plugin-transform-react-jsx-source": ^7.25.9 "@types/babel__core": ^7.20.5 - react-refresh: ^0.14.2 + react-refresh: ^0.17.0 peerDependencies: - vite: ^4.2.0 || ^5.0.0 - checksum: 57872e0193c7e545c5ef4852cbe1adf17a6b35406a2aba4b3acce06c173a9dabbf6ff4c72701abc11bb3cbe24a056f5054f39018f7034c9aa57133a3a7770237 + vite: ^4.2.0 || ^5.0.0 || ^6.0.0 + checksum: d15226cdbddea5dc9b5eedcb89ec68cf008cfde326a43d94819ef52944231ae702c6a26e5979c0584554fe6443222c552b7e6bc226229968eab031016bf00a7d languageName: node linkType: hard -"@vitest/expect@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/expect@npm:2.0.5" +"@vitest/expect@npm:2.1.9": + version: 2.1.9 + resolution: "@vitest/expect@npm:2.1.9" dependencies: - "@vitest/spy": 2.0.5 - "@vitest/utils": 2.0.5 - chai: ^5.1.1 + "@vitest/spy": 2.1.9 + "@vitest/utils": 2.1.9 + chai: ^5.1.2 tinyrainbow: ^1.2.0 - checksum: 0c65eb24c2fd9ef5735d1e65dc8fee59936e6cab1d6ab24a95e014b8337be5598242fceae4e8ec2974e2ae70a30c1906ad41208bf6de6cdf2043594cdb65e627 + checksum: a234f96dd42c76e20af68b2ad2f00b80a3873501d5daa524bf1405b344e86123716b925f976d8104fd242bfbd0d9cf7084d0eb4a690097e6e5db456d220ed67a languageName: node linkType: hard -"@vitest/pretty-format@npm:2.0.5, @vitest/pretty-format@npm:^2.0.5": - version: 2.0.5 - resolution: "@vitest/pretty-format@npm:2.0.5" +"@vitest/mocker@npm:2.1.9": + version: 2.1.9 + resolution: "@vitest/mocker@npm:2.1.9" + dependencies: + "@vitest/spy": 2.1.9 + estree-walker: ^3.0.3 + magic-string: ^0.30.12 + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + checksum: 17de391acc4d899f15356b45cde8202e5d5ca4517c32c0c9dcf32ce0660501773fdc29675b4f7d48c1579a560ac41f8f5181ebe41a7daf675f561d611e8e30dc + languageName: node + linkType: hard + +"@vitest/pretty-format@npm:2.1.9, @vitest/pretty-format@npm:^2.1.9": + version: 2.1.9 + resolution: "@vitest/pretty-format@npm:2.1.9" dependencies: tinyrainbow: ^1.2.0 - checksum: d60346001180e5bb3c53be4b4d0b6d9352648b066641d5aba7b97d7c97a8e252dc934204d58818330262a65f07127455fc5f3b5f7e3647c60f6ff302a725733b + checksum: 33f7ff0a9d356ddd6534390a0aea260dc04a3022a94901c87d141bacf71d2b3fff2e3bf08a55dd424c5355fd3b41656cb7871c76372fef45ffac1ea89d0dc508 languageName: node linkType: hard -"@vitest/runner@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/runner@npm:2.0.5" +"@vitest/runner@npm:2.1.9": + version: 2.1.9 + resolution: "@vitest/runner@npm:2.1.9" dependencies: - "@vitest/utils": 2.0.5 + "@vitest/utils": 2.1.9 pathe: ^1.1.2 - checksum: 4d6c23ea77ada83d70cb8cfd20b17cd0b9a375bc70b95466acee822734e203952931319abf167abcdba33dca415affed71d98d3f7212e1812dbf81e540fae4a4 + checksum: d8aaadc98bcbe1ee7c832a7d619d3c77d3c67536f10b80a3106d9d6e03ecc0f5467ef7bd4a65a07fe924cc166fe7415d637b2b08ef71e1a208a250543f9f3545 languageName: node linkType: hard -"@vitest/snapshot@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/snapshot@npm:2.0.5" +"@vitest/snapshot@npm:2.1.9": + version: 2.1.9 + resolution: "@vitest/snapshot@npm:2.1.9" dependencies: - "@vitest/pretty-format": 2.0.5 - magic-string: ^0.30.10 + "@vitest/pretty-format": 2.1.9 + magic-string: ^0.30.12 pathe: ^1.1.2 - checksum: 468d040106aa186a63ff3a86ce6bf333d52de83a2d906dc8c7c5c63406f2ecb46850ac5d69f5838a15764094946963962fa963d64c62a1a8a127ba20496fa3f1 + checksum: fb693dea59709c9df8660e5948c7971d2c3ce74212eafa7d542a578bbb8aed203dc03129dd5e476251e1946b50432e79a4fd59069fd4f950283e188167b9496d languageName: node linkType: hard -"@vitest/spy@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/spy@npm:2.0.5" +"@vitest/spy@npm:2.1.9": + version: 2.1.9 + resolution: "@vitest/spy@npm:2.1.9" dependencies: - tinyspy: ^3.0.0 - checksum: a010dec99146832a2586c639fccf533b194482f6f25ffb2d64367598a4e77d094aedd3d82cdb55fc1a3971649577a039513ccf8dc1571492e5982482c530c7b9 + tinyspy: ^3.0.2 + checksum: f9279488b5d2a27800e33e8fe51cc685b2a0db49d30b80b2b0cc924f8b1736eb520459c6e8bd09fa4457f5bb86ff073e7bdcf60d36452c11a8a8f9cbc8030237 languageName: node linkType: hard -"@vitest/utils@npm:2.0.5": - version: 2.0.5 - resolution: "@vitest/utils@npm:2.0.5" +"@vitest/utils@npm:2.1.9": + version: 2.1.9 + resolution: "@vitest/utils@npm:2.1.9" dependencies: - "@vitest/pretty-format": 2.0.5 - estree-walker: ^3.0.3 - loupe: ^3.1.1 + "@vitest/pretty-format": 2.1.9 + loupe: ^3.1.2 tinyrainbow: ^1.2.0 - checksum: 6867556dd7e376437e454b96c7e596ec16e141fb00b002b6ce435611ab3d9d1e3f38ebf48b1fc49f4c97f9754ed37abb602de8bf122f4ac0de621a4dbe0a314e + checksum: b24fb9c6765801f2e0578ad5c32fadf9541a833301eaed2877a427096cf05214244b361f94eda80be2b9c841f58ae3c67d37dedc5a902b2cb44041979bae4d8f languageName: node linkType: hard @@ -2892,10 +2805,10 @@ __metadata: languageName: node linkType: hard -"abbrev@npm:^2.0.0": - version: 2.0.0 - resolution: "abbrev@npm:2.0.0" - checksum: 0e994ad2aa6575f94670d8a2149afe94465de9cedaaaac364e7fb43a40c3691c980ff74899f682f4ca58fa96b4cbd7421a015d3a6defe43a442117d7821a2f36 +"abbrev@npm:^3.0.0": + version: 3.0.1 + resolution: "abbrev@npm:3.0.1" + checksum: e70b209f5f408dd3a3bbd0eec4b10a2ffd64704a4a3821d0969d84928cc490a8eb60f85b78a95622c1841113edac10161c62e52f5e7d0027aa26786a8136e02e languageName: node linkType: hard @@ -2909,36 +2822,34 @@ __metadata: linkType: hard "acorn-walk@npm:^8.1.1": - version: 8.3.2 - resolution: "acorn-walk@npm:8.3.2" - checksum: 3626b9d26a37b1b427796feaa5261faf712307a8920392c8dce9a5739fb31077667f4ad2ec71c7ac6aaf9f61f04a9d3d67ff56f459587206fc04aa31c27ef392 + version: 8.3.4 + resolution: "acorn-walk@npm:8.3.4" + dependencies: + acorn: ^8.11.0 + checksum: 4ff03f42323e7cf90f1683e08606b0f460e1e6ac263d2730e3df91c7665b6f64e696db6ea27ee4bed18c2599569be61f28a8399fa170c611161a348c402ca19c languageName: node linkType: hard -"acorn@npm:^8.12.0": - version: 8.12.1 - resolution: "acorn@npm:8.12.1" +"acorn@npm:^8.11.0, acorn@npm:^8.14.0, acorn@npm:^8.4.1": + version: 8.14.1 + resolution: "acorn@npm:8.14.1" bin: acorn: bin/acorn - checksum: 677880034aee5bdf7434cc2d25b641d7bedb0b5ef47868a78dadabedccf58e1c5457526d9d8249cd253f2df087e081c3fe7d903b448d8e19e5131a3065b83c07 + checksum: 260d9bb6017a1b6e42d31364687f0258f78eb20210b36ef2baad38fd619d78d4e95ff7dde9b3dbe0d81f137f79a8d651a845363a26e6985997f7b71145dc5e94 languageName: node linkType: hard -"acorn@npm:^8.4.1": - version: 8.11.3 - resolution: "acorn@npm:8.11.3" - bin: - acorn: bin/acorn - checksum: 76d8e7d559512566b43ab4aadc374f11f563f0a9e21626dd59cb2888444e9445923ae9f3699972767f18af61df89cd89f5eaaf772d1327b055b45cb829b4a88c +"aes-js@npm:4.0.0-beta.5": + version: 4.0.0-beta.5 + resolution: "aes-js@npm:4.0.0-beta.5" + checksum: cc2ea969d77df939c32057f7e361b6530aa6cb93cb10617a17a45cd164e6d761002f031ff6330af3e67e58b1f0a3a8fd0b63a720afd591a653b02f649470e15b languageName: node linkType: hard -"agent-base@npm:^7.0.2, agent-base@npm:^7.1.0": - version: 7.1.0 - resolution: "agent-base@npm:7.1.0" - dependencies: - debug: ^4.3.4 - checksum: f7828f991470a0cc22cb579c86a18cbae83d8a3cbed39992ab34fc7217c4d126017f1c74d0ab66be87f71455318a8ea3e757d6a37881b8d0f2a2c6aa55e5418f +"agent-base@npm:^7.1.0, agent-base@npm:^7.1.2": + version: 7.1.3 + resolution: "agent-base@npm:7.1.3" + checksum: 87bb7ee54f5ecf0ccbfcba0b07473885c43ecd76cb29a8db17d6137a19d9f9cd443a2a7c5fd8a3f24d58ad8145f9eb49116344a66b107e1aeab82cf2383f4753 languageName: node linkType: hard @@ -3018,9 +2929,9 @@ __metadata: linkType: hard "ansi-regex@npm:^6.0.1": - version: 6.0.1 - resolution: "ansi-regex@npm:6.0.1" - checksum: 1ff8b7667cded1de4fa2c9ae283e979fc87036864317da86a2e546725f96406746411d0d85e87a2d12fa5abd715d90006de7fa4fa0477c92321ad3b4c7d4e169 + version: 6.1.0 + resolution: "ansi-regex@npm:6.1.0" + checksum: 495834a53b0856c02acd40446f7130cb0f8284f4a39afdab20d5dc42b2e198b1196119fe887beed8f9055c4ff2055e3b2f6d4641d0be018cdfb64fedf6fc1aac languageName: node linkType: hard @@ -3031,15 +2942,6 @@ __metadata: languageName: node linkType: hard -"ansi-styles@npm:^3.2.1": - version: 3.2.1 - resolution: "ansi-styles@npm:3.2.1" - dependencies: - color-convert: ^1.9.0 - checksum: d85ade01c10e5dd77b6c89f34ed7531da5830d2cb5882c645f330079975b716438cd7ebb81d0d6e6b4f9c577f19ae41ab55f07f19786b02f9dfd9e0377395665 - languageName: node - linkType: hard - "ansi-styles@npm:^4.0.0, ansi-styles@npm:^4.1.0": version: 4.3.0 resolution: "ansi-styles@npm:4.3.0" @@ -3126,30 +3028,17 @@ __metadata: languageName: node linkType: hard -"array-buffer-byte-length@npm:^1.0.0, array-buffer-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "array-buffer-byte-length@npm:1.0.1" - dependencies: - call-bind: ^1.0.5 - is-array-buffer: ^3.0.4 - checksum: 53524e08f40867f6a9f35318fafe467c32e45e9c682ba67b11943e167344d2febc0f6977a17e699b05699e805c3e8f073d876f8bbf1b559ed494ad2cd0fae09e - languageName: node - linkType: hard - -"array-includes@npm:^3.1.6, array-includes@npm:^3.1.7": - version: 3.1.7 - resolution: "array-includes@npm:3.1.7" +"array-buffer-byte-length@npm:^1.0.1, array-buffer-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "array-buffer-byte-length@npm:1.0.2" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - get-intrinsic: ^1.2.1 - is-string: ^1.0.7 - checksum: 06f9e4598fac12a919f7c59a3f04f010ea07f0b7f0585465ed12ef528a60e45f374e79d1bddbb34cdd4338357d00023ddbd0ac18b0be36964f5e726e8965d7fc + call-bound: ^1.0.3 + is-array-buffer: ^3.0.5 + checksum: 0ae3786195c3211b423e5be8dd93357870e6fb66357d81da968c2c39ef43583ef6eece1f9cb1caccdae4806739c65dea832b44b8593414313cd76a89795fca63 languageName: node linkType: hard -"array-includes@npm:^3.1.8": +"array-includes@npm:^3.1.6, array-includes@npm:^3.1.8": version: 3.1.8 resolution: "array-includes@npm:3.1.8" dependencies: @@ -3170,19 +3059,6 @@ __metadata: languageName: node linkType: hard -"array.prototype.filter@npm:^1.0.3": - version: 1.0.3 - resolution: "array.prototype.filter@npm:1.0.3" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-array-method-boxes-properly: ^1.0.0 - is-string: ^1.0.7 - checksum: 5443cde6ad64596649e5751252b1b2f5242b41052980c2fb2506ba485e3ffd7607e8f6f2f1aefa0cb1cfb9b8623b2b2be103579cb367a161a3426400619b6e73 - languageName: node - linkType: hard - "array.prototype.findlast@npm:^1.2.5": version: 1.2.5 resolution: "array.prototype.findlast@npm:1.2.5" @@ -3197,40 +3073,42 @@ __metadata: languageName: node linkType: hard -"array.prototype.findlastindex@npm:^1.2.3": - version: 1.2.4 - resolution: "array.prototype.findlastindex@npm:1.2.4" +"array.prototype.findlastindex@npm:^1.2.5": + version: 1.2.6 + resolution: "array.prototype.findlastindex@npm:1.2.6" dependencies: - call-bind: ^1.0.5 + call-bind: ^1.0.8 + call-bound: ^1.0.4 define-properties: ^1.2.1 - es-abstract: ^1.22.3 + es-abstract: ^1.23.9 es-errors: ^1.3.0 - es-shim-unscopables: ^1.0.2 - checksum: cc8dce27a06dddf6d9c40a15d4c573f96ac5ca3583f89f8d8cd7d7ffdb96a71d819890a5bdb211f221bda8fafa0d97d1d8cbb5460a5cbec1fff57ae80b8abc31 + es-object-atoms: ^1.1.1 + es-shim-unscopables: ^1.1.0 + checksum: bd2665bd51f674d4e1588ce5d5848a8adb255f414070e8e652585598b801480516df2c6cef2c60b6ea1a9189140411c49157a3f112d52e9eabb4e9fc80936ea6 languageName: node linkType: hard "array.prototype.flat@npm:^1.3.1, array.prototype.flat@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flat@npm:1.3.2" + version: 1.3.3 + resolution: "array.prototype.flat@npm:1.3.3" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: 5d6b4bf102065fb3f43764bfff6feb3295d372ce89591e6005df3d0ce388527a9f03c909af6f2a973969a4d178ab232ffc9236654149173e0e187ec3a1a6b87b + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-shim-unscopables: ^1.0.2 + checksum: 5d5a7829ab2bb271a8d30a1c91e6271cef0ec534593c0fe6d2fb9ebf8bb62c1e5326e2fddcbbcbbe5872ca04f5e6b54a1ecf092e0af704fb538da9b2bfd95b40 languageName: node linkType: hard -"array.prototype.flatmap@npm:^1.3.2": - version: 1.3.2 - resolution: "array.prototype.flatmap@npm:1.3.2" +"array.prototype.flatmap@npm:^1.3.2, array.prototype.flatmap@npm:^1.3.3": + version: 1.3.3 + resolution: "array.prototype.flatmap@npm:1.3.3" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - es-shim-unscopables: ^1.0.0 - checksum: ce09fe21dc0bcd4f30271f8144083aa8c13d4639074d6c8dc82054b847c7fc9a0c97f857491f4da19d4003e507172a78f4bcd12903098adac8b9cd374f734be3 + call-bind: ^1.0.8 + define-properties: ^1.2.1 + es-abstract: ^1.23.5 + es-shim-unscopables: ^1.0.2 + checksum: 11b4de09b1cf008be6031bb507d997ad6f1892e57dc9153583de6ebca0f74ea403fffe0f203461d359de05048d609f3f480d9b46fed4099652d8b62cc972f284 languageName: node linkType: hard @@ -3247,19 +3125,18 @@ __metadata: languageName: node linkType: hard -"arraybuffer.prototype.slice@npm:^1.0.2, arraybuffer.prototype.slice@npm:^1.0.3": - version: 1.0.3 - resolution: "arraybuffer.prototype.slice@npm:1.0.3" +"arraybuffer.prototype.slice@npm:^1.0.4": + version: 1.0.4 + resolution: "arraybuffer.prototype.slice@npm:1.0.4" dependencies: array-buffer-byte-length: ^1.0.1 - call-bind: ^1.0.5 + call-bind: ^1.0.8 define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.2.1 - get-intrinsic: ^1.2.3 + es-abstract: ^1.23.5 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 is-array-buffer: ^3.0.4 - is-shared-array-buffer: ^1.0.2 - checksum: 352259cba534dcdd969c92ab002efd2ba5025b2e3b9bead3973150edbdf0696c629d7f4b3f061c5931511e8207bdc2306da614703c820b45dabce39e3daf7e3e + checksum: b1d1fd20be4e972a3779b1569226f6740170dca10f07aa4421d42cefeec61391e79c557cda8e771f5baefe47d878178cd4438f60916ce831813c08132bced765 languageName: node linkType: hard @@ -3293,10 +3170,17 @@ __metadata: languageName: node linkType: hard +"async-function@npm:^1.0.0": + version: 1.0.0 + resolution: "async-function@npm:1.0.0" + checksum: 9102e246d1ed9b37ac36f57f0a6ca55226876553251a31fc80677e71471f463a54c872dc78d5d7f80740c8ba624395cccbe8b60f7b690c4418f487d8e9fd1106 + languageName: node + linkType: hard + "async@npm:^3.2.0": - version: 3.2.5 - resolution: "async@npm:3.2.5" - checksum: 5ec77f1312301dee02d62140a6b1f7ee0edd2a0f983b6fd2b0849b969f245225b990b47b8243e7b9ad16451a53e7f68e753700385b706198ced888beedba3af4 + version: 3.2.6 + resolution: "async@npm:3.2.6" + checksum: ee6eb8cd8a0ab1b58bd2a3ed6c415e93e773573a91d31df9d5ef559baafa9dab37d3b096fa7993e84585cac3697b2af6ddb9086f45d3ac8cae821bb2aab65682 languageName: node linkType: hard @@ -3314,35 +3198,28 @@ __metadata: languageName: node linkType: hard -"attr-accept@npm:^2.2.2": - version: 2.2.2 - resolution: "attr-accept@npm:2.2.2" - checksum: 496f7249354ab53e522510c1dc8f67a1887382187adde4dc205507d2f014836a247073b05e9d9ea51e2e9c7f71b0d2aa21730af80efa9af2d68303e5f0565c4d +"attr-accept@npm:^2.2.4": + version: 2.2.5 + resolution: "attr-accept@npm:2.2.5" + checksum: e6a23183c112f5d313ebfc7e63e454de0600caffe9ab88f86e9df420d2399a48e27e6c46ee8de2fc6f34fee3541ecdb557f2b86e6d8bd7d24fd3a66cc75e6349 languageName: node linkType: hard "autoprefixer@npm:^10.4.20": - version: 10.4.20 - resolution: "autoprefixer@npm:10.4.20" + version: 10.4.21 + resolution: "autoprefixer@npm:10.4.21" dependencies: - browserslist: ^4.23.3 - caniuse-lite: ^1.0.30001646 + browserslist: ^4.24.4 + caniuse-lite: ^1.0.30001702 fraction.js: ^4.3.7 normalize-range: ^0.1.2 - picocolors: ^1.0.1 + picocolors: ^1.1.1 postcss-value-parser: ^4.2.0 peerDependencies: postcss: ^8.1.0 bin: autoprefixer: bin/autoprefixer - checksum: 187cec2ec356631932b212f76dc64f4419c117fdb2fb9eeeb40867d38ba5ca5ba734e6ceefc9e3af4eec8258e60accdf5cbf2b7708798598fde35cdc3de562d6 - languageName: node - linkType: hard - -"available-typed-arrays@npm:^1.0.5, available-typed-arrays@npm:^1.0.6": - version: 1.0.6 - resolution: "available-typed-arrays@npm:1.0.6" - checksum: 8295571eb86447138adf64a0df0c08ae61250b17190bba30e1fae8c80a816077a6d028e5506f602c382c0197d3080bae131e92e331139d55460989580eeae659 + checksum: 11770ce635a0520e457eaf2ff89056cd57094796a9f5d6d9375513388a5a016cd947333dcfd213b822fdd8a0b43ce68ae4958e79c6f077c41d87444c8cca0235 languageName: node linkType: hard @@ -3363,9 +3240,9 @@ __metadata: linkType: hard "aws4@npm:^1.8.0": - version: 1.12.0 - resolution: "aws4@npm:1.12.0" - checksum: 68f79708ac7c335992730bf638286a3ee0a645cf12575d557860100767c500c08b30e24726b9f03265d74116417f628af78509e1333575e9f8d52a80edfe8cbc + version: 1.13.2 + resolution: "aws4@npm:1.13.2" + checksum: 9ac924e4a91c088b4928ea86b68d8c4558b0e6289ccabaae0e3e96a611bd75277c2eab6e3965821028768700516f612b929a5ce822f33a8771f74ba2a8cedb9c languageName: node linkType: hard @@ -3411,16 +3288,16 @@ __metadata: linkType: hard "big.js@npm:^6.2.1": - version: 6.2.1 - resolution: "big.js@npm:6.2.1" - checksum: 0b234a2fd56c52bed2798ed2020bcab6fef5e9523b99a05406ad071d1aed6ee97ada9fb8de9576092da74c68825c276e19015743b8d1baea269b60a5c666b0cd + version: 6.2.2 + resolution: "big.js@npm:6.2.2" + checksum: 3659092d155d01338f21a01a46a93aa343d25e83bce55700005a46eec27d90fe56abd3b3edde742f16fbc5fee31b4c572b6821a595c1c180392b60b469fcda54 languageName: node linkType: hard "binary-extensions@npm:^2.0.0": - version: 2.2.0 - resolution: "binary-extensions@npm:2.2.0" - checksum: ccd267956c58d2315f5d3ea6757cf09863c5fc703e50fbeb13a7dc849b812ef76e3cf9ca8f35a0c48498776a7478d7b4a0418e1e2b8cb9cb9731f2922aaad7f8 + version: 2.3.0 + resolution: "binary-extensions@npm:2.3.0" + checksum: bcad01494e8a9283abf18c1b967af65ee79b0c6a9e6fcfafebfe91dbe6e0fc7272bafb73389e198b310516ae04f7ad17d79aacf6cb4c0d5d5202a7e2e52c7d98 languageName: node linkType: hard @@ -3471,16 +3348,7 @@ __metadata: languageName: node linkType: hard -"braces@npm:^3.0.2, braces@npm:~3.0.2": - version: 3.0.2 - resolution: "braces@npm:3.0.2" - dependencies: - fill-range: ^7.0.1 - checksum: e2a8e769a863f3d4ee887b5fe21f63193a891c68b612ddb4b68d82d1b5f3ff9073af066c343e9867a393fe4c2555dcb33e89b937195feb9c1613d259edfcd459 - languageName: node - linkType: hard - -"braces@npm:^3.0.3": +"braces@npm:^3.0.3, braces@npm:~3.0.2": version: 3.0.3 resolution: "braces@npm:3.0.3" dependencies: @@ -3489,31 +3357,17 @@ __metadata: languageName: node linkType: hard -"browserslist@npm:^4.22.2": - version: 4.22.3 - resolution: "browserslist@npm:4.22.3" - dependencies: - caniuse-lite: ^1.0.30001580 - electron-to-chromium: ^1.4.648 - node-releases: ^2.0.14 - update-browserslist-db: ^1.0.13 - bin: - browserslist: cli.js - checksum: e62b17348e92143fe58181b02a6a97c4a98bd812d1dc9274673a54f73eec53dbed1c855ebf73e318ee00ee039f23c9a6d0e7629d24f3baef08c7a5b469742d57 - languageName: node - linkType: hard - -"browserslist@npm:^4.23.1, browserslist@npm:^4.23.3": - version: 4.23.3 - resolution: "browserslist@npm:4.23.3" +"browserslist@npm:^4.24.0, browserslist@npm:^4.24.4": + version: 4.24.4 + resolution: "browserslist@npm:4.24.4" dependencies: - caniuse-lite: ^1.0.30001646 - electron-to-chromium: ^1.5.4 - node-releases: ^2.0.18 - update-browserslist-db: ^1.1.0 + caniuse-lite: ^1.0.30001688 + electron-to-chromium: ^1.5.73 + node-releases: ^2.0.19 + update-browserslist-db: ^1.1.1 bin: browserslist: cli.js - checksum: 7906064f9970aeb941310b2fcb8b4ace4a1b50aa657c986677c6f1553a8cabcc94ee9c5922f715baffbedaa0e6cf0831b6fed7b059dde6873a4bfadcbe069c7e + checksum: 64074bf6cf0a9ae3094d753270e3eae9cf925149db45d646f0bc67bacc2e46d7ded64a4e835b95f5fdcf0350f63a83c3755b32f80831f643a47f0886deb8a065 languageName: node linkType: hard @@ -3558,11 +3412,11 @@ __metadata: languageName: node linkType: hard -"cacache@npm:^18.0.0": - version: 18.0.2 - resolution: "cacache@npm:18.0.2" +"cacache@npm:^19.0.1": + version: 19.0.1 + resolution: "cacache@npm:19.0.1" dependencies: - "@npmcli/fs": ^3.1.0 + "@npmcli/fs": ^4.0.0 fs-minipass: ^3.0.0 glob: ^10.2.2 lru-cache: ^10.0.1 @@ -3570,11 +3424,11 @@ __metadata: minipass-collect: ^2.0.1 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 - p-map: ^4.0.0 - ssri: ^10.0.0 - tar: ^6.1.11 - unique-filename: ^3.0.0 - checksum: 0250df80e1ad0c828c956744850c5f742c24244e9deb5b7dc81bca90f8c10e011e132ecc58b64497cc1cad9a98968676147fb6575f4f94722f7619757b17a11b + p-map: ^7.0.2 + ssri: ^12.0.0 + tar: ^7.4.3 + unique-filename: ^4.0.0 + checksum: e95684717de6881b4cdaa949fa7574e3171946421cd8291769dd3d2417dbf7abf4aa557d1f968cca83dcbc95bed2a281072b09abfc977c942413146ef7ed4525 languageName: node linkType: hard @@ -3597,28 +3451,35 @@ __metadata: languageName: node linkType: hard -"call-bind@npm:^1.0.0, call-bind@npm:^1.0.2, call-bind@npm:^1.0.5": - version: 1.0.6 - resolution: "call-bind@npm:1.0.6" +"call-bind-apply-helpers@npm:^1.0.0, call-bind-apply-helpers@npm:^1.0.1, call-bind-apply-helpers@npm:^1.0.2": + version: 1.0.2 + resolution: "call-bind-apply-helpers@npm:1.0.2" dependencies: es-errors: ^1.3.0 function-bind: ^1.1.2 - get-intrinsic: ^1.2.3 - set-function-length: ^1.2.0 - checksum: 9e75989b60124df0fee40c129b2f8f401efb54e40451e18f112b64654c7d6d0dd7b6195e990edaeb3fdb447911926a19ffe1635858de00d68826ced6eeab24a9 + checksum: b2863d74fcf2a6948221f65d95b91b4b2d90cfe8927650b506141e669f7d5de65cea191bf788838bc40d13846b7886c5bc5c84ab96c3adbcf88ad69a72fcdc6b languageName: node linkType: hard -"call-bind@npm:^1.0.6, call-bind@npm:^1.0.7": - version: 1.0.7 - resolution: "call-bind@npm:1.0.7" +"call-bind@npm:^1.0.7, call-bind@npm:^1.0.8": + version: 1.0.8 + resolution: "call-bind@npm:1.0.8" dependencies: + call-bind-apply-helpers: ^1.0.0 es-define-property: ^1.0.0 - es-errors: ^1.3.0 - function-bind: ^1.1.2 get-intrinsic: ^1.2.4 - set-function-length: ^1.2.1 - checksum: 295c0c62b90dd6522e6db3b0ab1ce26bdf9e7404215bda13cfee25b626b5ff1a7761324d58d38b1ef1607fc65aca2d06e44d2e18d0dfc6c14b465b00d8660029 + set-function-length: ^1.2.2 + checksum: aa2899bce917a5392fd73bd32e71799c37c0b7ab454e0ed13af7f6727549091182aade8bbb7b55f304a5bc436d543241c14090fb8a3137e9875e23f444f4f5a9 + languageName: node + linkType: hard + +"call-bound@npm:^1.0.2, call-bound@npm:^1.0.3, call-bound@npm:^1.0.4": + version: 1.0.4 + resolution: "call-bound@npm:1.0.4" + dependencies: + call-bind-apply-helpers: ^1.0.2 + get-intrinsic: ^1.3.0 + checksum: 2f6399488d1c272f56306ca60ff696575e2b7f31daf23bc11574798c84d9f2759dceb0cb1f471a85b77f28962a7ac6411f51d283ea2e45319009a19b6ccab3b2 languageName: node linkType: hard @@ -3643,17 +3504,10 @@ __metadata: languageName: node linkType: hard -"caniuse-lite@npm:^1.0.30001580": - version: 1.0.30001584 - resolution: "caniuse-lite@npm:1.0.30001584" - checksum: de7018759561795ef31864b0d1584735eef267033d4e9b5f046b976756e06c43e85afd46705c5d63c63e3c36484c26794c259b9748eefffa582750b4ad0822ce - languageName: node - linkType: hard - -"caniuse-lite@npm:^1.0.30001646": - version: 1.0.30001653 - resolution: "caniuse-lite@npm:1.0.30001653" - checksum: 289cf06c26a46f3e6460ccd5feffa788ab0ab35d306898c48120c65cfb11959bfa560e9f739393769b4fd01150c69b0747ad3ad5ec3abf3dfafd66df3c59254e +"caniuse-lite@npm:^1.0.30001688, caniuse-lite@npm:^1.0.30001702": + version: 1.0.30001714 + resolution: "caniuse-lite@npm:1.0.30001714" + checksum: e68fbee9a115f842f0d907e033f14e8d476f965473556fb993c8870854a2608573eebf4dbc2aa5b03caa9c6224ff4afe63ea8c702566fbbcb78c369fba72395b languageName: node linkType: hard @@ -3671,16 +3525,16 @@ __metadata: languageName: node linkType: hard -"chai@npm:^5.1.1": - version: 5.1.1 - resolution: "chai@npm:5.1.1" +"chai@npm:^5.1.2": + version: 5.2.0 + resolution: "chai@npm:5.2.0" dependencies: assertion-error: ^2.0.1 check-error: ^2.1.1 deep-eql: ^5.0.1 loupe: ^3.1.0 pathval: ^2.0.0 - checksum: 1e0a5e1b5febdfa8ceb97b9aff608286861ecb86533863119b2f39f07c08fb59f3c1791ab554947f009b9d71d509b9e4e734fb12133cb81f231c2c2ee7c1e738 + checksum: 15e4ba12d02df3620fd59b4a6e8efe43b47872ce61f1c0ca77ac1205a2a5898f3b6f1f52408fd1a708b8d07fdfb5e65b97af40bad9fd94a69ed8d4264c7a69f1 languageName: node linkType: hard @@ -3707,21 +3561,10 @@ __metadata: languageName: node linkType: hard -"chalk@npm:^2.4.2": - version: 2.4.2 - resolution: "chalk@npm:2.4.2" - dependencies: - ansi-styles: ^3.2.1 - escape-string-regexp: ^1.0.5 - supports-color: ^5.3.0 - checksum: ec3661d38fe77f681200f878edbd9448821924e0f93a9cefc0e26a33b145f1027a2084bf19967160d11e1f03bfe4eaffcabf5493b89098b2782c3fe0b03d80c2 - languageName: node - linkType: hard - -"chalk@npm:~5.3.0": - version: 5.3.0 - resolution: "chalk@npm:5.3.0" - checksum: 623922e077b7d1e9dedaea6f8b9e9352921f8ae3afe739132e0e00c275971bdd331268183b2628cf4ab1727c45ea1f28d7e24ac23ce1db1eb653c414ca8a5a80 +"chalk@npm:^5.4.1": + version: 5.4.1 + resolution: "chalk@npm:5.4.1" + checksum: 0c656f30b782fed4d99198825c0860158901f449a6b12b818b0aabad27ec970389e7e8767d0e00762175b23620c812e70c4fd92c0210e55fc2d993638b74e86e languageName: node linkType: hard @@ -3767,9 +3610,9 @@ __metadata: languageName: node linkType: hard -"chokidar@npm:^3.5.3": - version: 3.5.3 - resolution: "chokidar@npm:3.5.3" +"chokidar@npm:^3.6.0": + version: 3.6.0 + resolution: "chokidar@npm:3.6.0" dependencies: anymatch: ~3.1.2 braces: ~3.0.2 @@ -3782,14 +3625,14 @@ __metadata: dependenciesMeta: fsevents: optional: true - checksum: b49fcde40176ba007ff361b198a2d35df60d9bb2a5aab228279eb810feae9294a6b4649ab15981304447afe1e6ffbf4788ad5db77235dc770ab777c6e771980c + checksum: d2f29f499705dcd4f6f3bbed79a9ce2388cf530460122eed3b9c48efeab7a4e28739c6551fd15bec9245c6b9eeca7a32baa64694d64d9b6faeb74ddb8c4a413d languageName: node linkType: hard -"chownr@npm:^2.0.0": - version: 2.0.0 - resolution: "chownr@npm:2.0.0" - checksum: c57cf9dd0791e2f18a5ee9c1a299ae6e801ff58fee96dc8bfd0dcb4738a6ce58dd252a3605b1c93c6418fe4f9d5093b28ffbf4d66648cb2a9c67eaef9679be2f +"chownr@npm:^3.0.0": + version: 3.0.0 + resolution: "chownr@npm:3.0.0" + checksum: fd73a4bab48b79e66903fe1cafbdc208956f41ea4f856df883d0c7277b7ab29fd33ee65f93b2ec9192fc0169238f2f8307b7735d27c155821d886b84aa97aa8d languageName: node linkType: hard @@ -3833,15 +3676,15 @@ __metadata: linkType: hard "cli-table3@npm:~0.6.1": - version: 0.6.3 - resolution: "cli-table3@npm:0.6.3" + version: 0.6.5 + resolution: "cli-table3@npm:0.6.5" dependencies: "@colors/colors": 1.5.0 string-width: ^4.2.0 dependenciesMeta: "@colors/colors": optional: true - checksum: 09897f68467973f827c04e7eaadf13b55f8aec49ecd6647cc276386ea660059322e2dd8020a8b6b84d422dbdd619597046fa89cbbbdc95b2cea149a2df7c096c + checksum: ab7afbf4f8597f1c631f3ee6bb3481d0bfeac8a3b81cffb5a578f145df5c88003b6cfff46046a7acae86596fdd03db382bfa67f20973b6b57425505abc47e42c languageName: node linkType: hard @@ -3883,28 +3726,12 @@ __metadata: languageName: node linkType: hard -"color-convert@npm:^1.9.0": - version: 1.9.3 - resolution: "color-convert@npm:1.9.3" - dependencies: - color-name: 1.1.3 - checksum: fd7a64a17cde98fb923b1dd05c5f2e6f7aefda1b60d67e8d449f9328b4e53b228a428fd38bfeaeb2db2ff6b6503a776a996150b80cdf224062af08a5c8a3a203 - languageName: node - linkType: hard - "color-convert@npm:^2.0.1": version: 2.0.1 resolution: "color-convert@npm:2.0.1" dependencies: - color-name: ~1.1.4 - checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 - languageName: node - linkType: hard - -"color-name@npm:1.1.3": - version: 1.1.3 - resolution: "color-name@npm:1.1.3" - checksum: 09c5d3e33d2105850153b14466501f2bfb30324a2f76568a408763a3b7433b0e50e5b4ab1947868e65cb101bb7cb75029553f2c333b6d4b8138a73fcc133d69d + color-name: ~1.1.4 + checksum: 79e6bdb9fd479a205c71d89574fccfb22bd9053bd98c6c4d870d65c132e5e904e6034978e55b43d69fcaa7433af2016ee203ce76eeba9cfa554b373e7f7db336 languageName: node linkType: hard @@ -3929,7 +3756,7 @@ __metadata: languageName: node linkType: hard -"combined-stream@npm:^1.0.6, combined-stream@npm:~1.0.6": +"combined-stream@npm:^1.0.8, combined-stream@npm:~1.0.6": version: 1.0.8 resolution: "combined-stream@npm:1.0.8" dependencies: @@ -3945,6 +3772,13 @@ __metadata: languageName: node linkType: hard +"commander@npm:^13.1.0": + version: 13.1.0 + resolution: "commander@npm:13.1.0" + checksum: 8ca2fcb33caf2aa06fba3722d7a9440921331d54019dabf906f3603313e7bf334b009b862257b44083ff65d5a3ab19e83ad73af282bd5319f01dc228bdf87ef0 + languageName: node + linkType: hard + "commander@npm:^2.19.0": version: 2.20.3 resolution: "commander@npm:2.20.3" @@ -3966,13 +3800,6 @@ __metadata: languageName: node linkType: hard -"commander@npm:~12.1.0": - version: 12.1.0 - resolution: "commander@npm:12.1.0" - checksum: 68e9818b00fc1ed9cdab9eb16905551c2b768a317ae69a5e3c43924c2b20ac9bb65b27e1cab36aeda7b6496376d4da908996ba2c0b5d79463e0fb1e77935d514 - languageName: node - linkType: hard - "common-tags@npm:^1.8.0": version: 1.8.2 resolution: "common-tags@npm:1.8.2" @@ -4015,15 +3842,17 @@ __metadata: "@heroicons/react": ^1.0.6 "@istanbuljs/nyc-config-typescript": ^1.0.2 "@polkadot/api": 15.8.1 - "@polkadot/api-contract": 15.8.1 + "@polkadot/api-contract": "file:./.api-contract/build" "@polkadot/extension-dapp": ^0.58.6 + "@polkadot/types": 15.8.1 "@polkadot/ui-keyring": ^3.12.2 "@polkadot/ui-shared": ^3.12.2 "@tailwindcss/forms": ^0.5.7 "@types/bcryptjs": ^2.4.6 "@types/big.js": ^6.2.2 "@types/node": ^22.5.0 - "@types/react-dom": ^18.3.0 + "@types/react": ^19.1.2 + "@types/react-dom": ^19.1.2 "@typescript-eslint/eslint-plugin": ^8.2.0 "@typescript-eslint/parser": ^8.2.0 "@vitejs/plugin-react": ^4.3.1 @@ -4045,6 +3874,7 @@ __metadata: eslint-plugin-import: ^2.29.1 eslint-plugin-react: ^7.35.0 eslint-plugin-react-hooks: ^4.6.2 + ethers: ^6.13.5 husky: ^9.1.5 istanbul-lib-coverage: ^3.2.2 json5: ^2.2.3 @@ -4138,14 +3968,14 @@ __metadata: languageName: node linkType: hard -"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.2, cross-spawn@npm:^7.0.3": - version: 7.0.3 - resolution: "cross-spawn@npm:7.0.3" +"cross-spawn@npm:^7.0.0, cross-spawn@npm:^7.0.1, cross-spawn@npm:^7.0.3, cross-spawn@npm:^7.0.6": + version: 7.0.6 + resolution: "cross-spawn@npm:7.0.6" dependencies: path-key: ^3.1.0 shebang-command: ^2.0.0 which: ^2.0.1 - checksum: 671cc7c7288c3a8406f3c69a3ae2fc85555c04169e9d611def9a675635472614f1c0ed0ef80955d5b6d4e724f6ced67f0ad1bb006c2ea643488fcfef994d7f52 + checksum: 8d306efacaf6f3f60e0224c287664093fa9185680b2d195852ba9a863f85d02dcc737094c6e512175f8ee0161f9b87c73c6826034c2422e39de7d6569cf4503b languageName: node linkType: hard @@ -4242,36 +4072,36 @@ __metadata: languageName: node linkType: hard -"data-view-buffer@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-buffer@npm:1.0.1" +"data-view-buffer@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-buffer@npm:1.0.2" dependencies: - call-bind: ^1.0.6 + call-bound: ^1.0.3 es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: ce24348f3c6231223b216da92e7e6a57a12b4af81a23f27eff8feabdf06acfb16c00639c8b705ca4d167f761cfc756e27e5f065d0a1f840c10b907fdaf8b988c + is-data-view: ^1.0.2 + checksum: 1e1cd509c3037ac0f8ba320da3d1f8bf1a9f09b0be09394b5e40781b8cc15ff9834967ba7c9f843a425b34f9fe14ce44cf055af6662c44263424c1eb8d65659b languageName: node linkType: hard -"data-view-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "data-view-byte-length@npm:1.0.1" +"data-view-byte-length@npm:^1.0.2": + version: 1.0.2 + resolution: "data-view-byte-length@npm:1.0.2" dependencies: - call-bind: ^1.0.7 + call-bound: ^1.0.3 es-errors: ^1.3.0 - is-data-view: ^1.0.1 - checksum: dbb3200edcb7c1ef0d68979834f81d64fd8cab2f7691b3a4c6b97e67f22182f3ec2c8602efd7b76997b55af6ff8bce485829c1feda4fa2165a6b71fb7baa4269 + is-data-view: ^1.0.2 + checksum: 3600c91ced1cfa935f19ef2abae11029e01738de8d229354d3b2a172bf0d7e4ed08ff8f53294b715569fdf72dfeaa96aa7652f479c0f60570878d88e7e8bddf6 languageName: node linkType: hard -"data-view-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "data-view-byte-offset@npm:1.0.0" +"data-view-byte-offset@npm:^1.0.1": + version: 1.0.1 + resolution: "data-view-byte-offset@npm:1.0.1" dependencies: - call-bind: ^1.0.6 + call-bound: ^1.0.2 es-errors: ^1.3.0 is-data-view: ^1.0.1 - checksum: 7f0bf8720b7414ca719eedf1846aeec392f2054d7af707c5dc9a753cc77eb8625f067fa901e0b5127e831f9da9056138d894b9c2be79c27a21f6db5824f009c2 + checksum: 8dd492cd51d19970876626b5b5169fbb67ca31ec1d1d3238ee6a71820ca8b80cafb141c485999db1ee1ef02f2cc3b99424c5eda8d59e852d9ebb79ab290eb5ee languageName: node linkType: hard @@ -4284,10 +4114,10 @@ __metadata: languageName: node linkType: hard -"dayjs@npm:1.11.10, dayjs@npm:^1.10.4": - version: 1.11.10 - resolution: "dayjs@npm:1.11.10" - checksum: a6b5a3813b8884f5cd557e2e6b7fa569f4c5d0c97aca9558e38534af4f2d60daafd3ff8c2000fed3435cfcec9e805bcebd99f90130c6d1c5ef524084ced588c4 +"dayjs@npm:1.11.13, dayjs@npm:^1.10.4": + version: 1.11.13 + resolution: "dayjs@npm:1.11.13" + checksum: f388db88a6aa93956c1f6121644e783391c7b738b73dbc54485578736565c8931bdfba4bb94e9b1535c6e509c97d5deb918bbe1ae6b34358d994de735055cca9 languageName: node linkType: hard @@ -4300,15 +4130,15 @@ __metadata: languageName: node linkType: hard -"debug@npm:4, debug@npm:4.3.4, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4": - version: 4.3.4 - resolution: "debug@npm:4.3.4" +"debug@npm:4, debug@npm:4.4.0, debug@npm:^4.0.0, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2, debug@npm:^4.3.4, debug@npm:^4.3.7, debug@npm:^4.4.0": + version: 4.4.0 + resolution: "debug@npm:4.4.0" dependencies: - ms: 2.1.2 + ms: ^2.1.3 peerDependenciesMeta: supports-color: optional: true - checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708 + checksum: fb42df878dd0e22816fc56e1fdca9da73caa85212fbe40c868b1295a6878f9101ae684f4eeef516c13acfc700f5ea07f1136954f43d4cd2d477a811144136479 languageName: node linkType: hard @@ -4330,18 +4160,6 @@ __metadata: languageName: node linkType: hard -"debug@npm:^4.3.5, debug@npm:~4.3.6": - version: 4.3.6 - resolution: "debug@npm:4.3.6" - dependencies: - ms: 2.1.2 - peerDependenciesMeta: - supports-color: - optional: true - checksum: 1630b748dea3c581295e02137a9f5cbe2c1d85fea35c1e6597a65ca2b16a6fce68cec61b299d480787ef310ba927dc8c92d3061faba0ad06c6a724672f66be7f - languageName: node - linkType: hard - "decamelize@npm:^1.2.0": version: 1.2.0 resolution: "decamelize@npm:1.2.0" @@ -4350,11 +4168,11 @@ __metadata: linkType: hard "decode-named-character-reference@npm:^1.0.0": - version: 1.0.2 - resolution: "decode-named-character-reference@npm:1.0.2" + version: 1.1.0 + resolution: "decode-named-character-reference@npm:1.1.0" dependencies: character-entities: ^2.0.0 - checksum: f4c71d3b93105f20076052f9cb1523a22a9c796b8296cd35eef1ca54239c78d182c136a848b83ff8da2071e3ae2b1d300bf29d00650a6d6e675438cc31b11d78 + checksum: 102970fde2d011f307d3789776e68defd75ba4ade1a34951affd1fabb86cd32026fd809f2658c2b600d839a57b6b6a84e2b3a45166d38c8625d66ca11cd702b8 languageName: node linkType: hard @@ -4381,19 +4199,7 @@ __metadata: languageName: node linkType: hard -"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.1": - version: 1.1.2 - resolution: "define-data-property@npm:1.1.2" - dependencies: - es-errors: ^1.3.0 - get-intrinsic: ^1.2.2 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.1 - checksum: a903d932c83ede85d47d7764fff23435e038e8d7c2ed09a5461d59a0279bf590ed7459ac9ab468e550e24d81aa91e4de1714df155ecce4c925e94bc5ea94f9f3 - languageName: node - linkType: hard - -"define-data-property@npm:^1.1.4": +"define-data-property@npm:^1.0.1, define-data-property@npm:^1.1.4": version: 1.1.4 resolution: "define-data-property@npm:1.1.4" dependencies: @@ -4404,7 +4210,7 @@ __metadata: languageName: node linkType: hard -"define-properties@npm:^1.1.3, define-properties@npm:^1.2.0, define-properties@npm:^1.2.1": +"define-properties@npm:^1.1.3, define-properties@npm:^1.2.1": version: 1.2.1 resolution: "define-properties@npm:1.2.1" dependencies: @@ -4524,6 +4330,17 @@ __metadata: languageName: node linkType: hard +"dunder-proto@npm:^1.0.0, dunder-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "dunder-proto@npm:1.0.1" + dependencies: + call-bind-apply-helpers: ^1.0.1 + es-errors: ^1.3.0 + gopd: ^1.2.0 + checksum: 149207e36f07bd4941921b0ca929e3a28f1da7bd6b6ff8ff7f4e2f2e460675af4576eeba359c635723dc189b64cdd4787e0255897d5b135ccc5d15cb8685fc90 + languageName: node + linkType: hard + "eastasianwidth@npm:^0.2.0": version: 0.2.0 resolution: "eastasianwidth@npm:0.2.0" @@ -4555,24 +4372,17 @@ __metadata: languageName: node linkType: hard -"electron-to-chromium@npm:^1.4.648": - version: 1.4.657 - resolution: "electron-to-chromium@npm:1.4.657" - checksum: 6168b51c1bfa1388d16dde6e501bcaaa3509d44e833f35b410543c421c5136b438b4476ef0fab66bc29d4980152495cf1fe813c9e36748afc5a2a8d107c446cf - languageName: node - linkType: hard - -"electron-to-chromium@npm:^1.5.4": - version: 1.5.13 - resolution: "electron-to-chromium@npm:1.5.13" - checksum: f18ac84dd3bf9a200654a6a9292b9ec4bced0cf9bd26cec9941b775f4470c581c9d043e70b37a124d9752dcc0f47fc96613d52b2defd8e59632852730cb418b9 +"electron-to-chromium@npm:^1.5.73": + version: 1.5.137 + resolution: "electron-to-chromium@npm:1.5.137" + checksum: 000803b46f87a52fda756ffcb92b7e8baa1ccd5c2545fde46f35b8f10f9d7e1d0d8681532f8ef2e9ee2e0367c63772554f04966abd8576b3403204fdf684a2b5 languageName: node linkType: hard "emoji-regex@npm:^10.3.0": - version: 10.3.0 - resolution: "emoji-regex@npm:10.3.0" - checksum: 5da48edfeb9462fb1ae5495cff2d79129974c696853fb0ce952cbf560f29a2756825433bf51cfd5157ec7b9f93f46f31d712e896d63e3d8ac9c3832bdb45ab73 + version: 10.4.0 + resolution: "emoji-regex@npm:10.4.0" + checksum: a6d9a0e454829a52e664e049847776ee1fff5646617b06cd87de7c03ce1dfcce4102a3b154d5e9c8e90f8125bc120fc1fe114d523dddf60a8a161f26c72658d2 languageName: node linkType: hard @@ -4608,16 +4418,6 @@ __metadata: languageName: node linkType: hard -"enhanced-resolve@npm:^5.12.0": - version: 5.15.0 - resolution: "enhanced-resolve@npm:5.15.0" - dependencies: - graceful-fs: ^4.2.4 - tapable: ^2.2.0 - checksum: fbd8cdc9263be71cc737aa8a7d6c57b43d6aa38f6cc75dde6fcd3598a130cc465f979d2f4d01bb3bf475acb43817749c79f8eef9be048683602ca91ab52e4f11 - languageName: node - linkType: hard - "enquirer@npm:^2.3.6": version: 2.4.1 resolution: "enquirer@npm:2.4.1" @@ -4658,200 +4458,148 @@ __metadata: languageName: node linkType: hard -"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.0, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3": - version: 1.23.3 - resolution: "es-abstract@npm:1.23.3" +"es-abstract@npm:^1.17.5, es-abstract@npm:^1.23.2, es-abstract@npm:^1.23.3, es-abstract@npm:^1.23.5, es-abstract@npm:^1.23.6, es-abstract@npm:^1.23.9": + version: 1.23.9 + resolution: "es-abstract@npm:1.23.9" dependencies: - array-buffer-byte-length: ^1.0.1 - arraybuffer.prototype.slice: ^1.0.3 + array-buffer-byte-length: ^1.0.2 + arraybuffer.prototype.slice: ^1.0.4 available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 - data-view-buffer: ^1.0.1 - data-view-byte-length: ^1.0.1 - data-view-byte-offset: ^1.0.0 - es-define-property: ^1.0.0 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + data-view-buffer: ^1.0.2 + data-view-byte-length: ^1.0.2 + data-view-byte-offset: ^1.0.1 + es-define-property: ^1.0.1 es-errors: ^1.3.0 es-object-atoms: ^1.0.0 - es-set-tostringtag: ^2.0.3 - es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.6 - get-intrinsic: ^1.2.4 - get-symbol-description: ^1.0.2 - globalthis: ^1.0.3 - gopd: ^1.0.1 + es-set-tostringtag: ^2.1.0 + es-to-primitive: ^1.3.0 + function.prototype.name: ^1.1.8 + get-intrinsic: ^1.2.7 + get-proto: ^1.0.0 + get-symbol-description: ^1.1.0 + globalthis: ^1.0.4 + gopd: ^1.2.0 has-property-descriptors: ^1.0.2 - has-proto: ^1.0.3 - has-symbols: ^1.0.3 + has-proto: ^1.2.0 + has-symbols: ^1.1.0 hasown: ^2.0.2 - internal-slot: ^1.0.7 - is-array-buffer: ^3.0.4 + internal-slot: ^1.1.0 + is-array-buffer: ^3.0.5 is-callable: ^1.2.7 - is-data-view: ^1.0.1 - is-negative-zero: ^2.0.3 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.3 - is-string: ^1.0.7 - is-typed-array: ^1.1.13 - is-weakref: ^1.0.2 - object-inspect: ^1.13.1 + is-data-view: ^1.0.2 + is-regex: ^1.2.1 + is-shared-array-buffer: ^1.0.4 + is-string: ^1.1.1 + is-typed-array: ^1.1.15 + is-weakref: ^1.1.0 + math-intrinsics: ^1.1.0 + object-inspect: ^1.13.3 object-keys: ^1.1.1 - object.assign: ^4.1.5 - regexp.prototype.flags: ^1.5.2 - safe-array-concat: ^1.1.2 - safe-regex-test: ^1.0.3 - string.prototype.trim: ^1.2.9 - string.prototype.trimend: ^1.0.8 + object.assign: ^4.1.7 + own-keys: ^1.0.1 + regexp.prototype.flags: ^1.5.3 + safe-array-concat: ^1.1.3 + safe-push-apply: ^1.0.0 + safe-regex-test: ^1.1.0 + set-proto: ^1.0.0 + string.prototype.trim: ^1.2.10 + string.prototype.trimend: ^1.0.9 string.prototype.trimstart: ^1.0.8 - typed-array-buffer: ^1.0.2 - typed-array-byte-length: ^1.0.1 - typed-array-byte-offset: ^1.0.2 - typed-array-length: ^1.0.6 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.15 - checksum: f840cf161224252512f9527306b57117192696571e07920f777cb893454e32999206198b4f075516112af6459daca282826d1735c450528470356d09eff3a9ae - languageName: node - linkType: hard - -"es-abstract@npm:^1.22.1, es-abstract@npm:^1.22.3": - version: 1.22.3 - resolution: "es-abstract@npm:1.22.3" - dependencies: - array-buffer-byte-length: ^1.0.0 - arraybuffer.prototype.slice: ^1.0.2 - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.5 - es-set-tostringtag: ^2.0.1 - es-to-primitive: ^1.2.1 - function.prototype.name: ^1.1.6 - get-intrinsic: ^1.2.2 - get-symbol-description: ^1.0.0 - globalthis: ^1.0.3 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.0 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - hasown: ^2.0.0 - internal-slot: ^1.0.5 - is-array-buffer: ^3.0.2 - is-callable: ^1.2.7 - is-negative-zero: ^2.0.2 - is-regex: ^1.1.4 - is-shared-array-buffer: ^1.0.2 - is-string: ^1.0.7 - is-typed-array: ^1.1.12 - is-weakref: ^1.0.2 - object-inspect: ^1.13.1 - object-keys: ^1.1.1 - object.assign: ^4.1.4 - regexp.prototype.flags: ^1.5.1 - safe-array-concat: ^1.0.1 - safe-regex-test: ^1.0.0 - string.prototype.trim: ^1.2.8 - string.prototype.trimend: ^1.0.7 - string.prototype.trimstart: ^1.0.7 - typed-array-buffer: ^1.0.0 - typed-array-byte-length: ^1.0.0 - typed-array-byte-offset: ^1.0.0 - typed-array-length: ^1.0.4 - unbox-primitive: ^1.0.2 - which-typed-array: ^1.1.13 - checksum: b1bdc962856836f6e72be10b58dc128282bdf33771c7a38ae90419d920fc3b36cc5d2b70a222ad8016e3fc322c367bf4e9e89fc2bc79b7e933c05b218e83d79a - languageName: node - linkType: hard - -"es-array-method-boxes-properly@npm:^1.0.0": - version: 1.0.0 - resolution: "es-array-method-boxes-properly@npm:1.0.0" - checksum: 2537fcd1cecf187083890bc6f5236d3a26bf39237433587e5bf63392e88faae929dbba78ff0120681a3f6f81c23fe3816122982c160d63b38c95c830b633b826 + typed-array-buffer: ^1.0.3 + typed-array-byte-length: ^1.0.3 + typed-array-byte-offset: ^1.0.4 + typed-array-length: ^1.0.7 + unbox-primitive: ^1.1.0 + which-typed-array: ^1.1.18 + checksum: f3ee2614159ca197f97414ab36e3f406ee748ce2f97ffbf09e420726db5a442ce13f1e574601468bff6e6eb81588e6c9ce1ac6c03868a37c7cd48ac679f8485a languageName: node linkType: hard -"es-define-property@npm:^1.0.0": - version: 1.0.0 - resolution: "es-define-property@npm:1.0.0" - dependencies: - get-intrinsic: ^1.2.4 - checksum: f66ece0a887b6dca71848fa71f70461357c0e4e7249696f81bad0a1f347eed7b31262af4a29f5d726dc026426f085483b6b90301855e647aa8e21936f07293c6 +"es-define-property@npm:^1.0.0, es-define-property@npm:^1.0.1": + version: 1.0.1 + resolution: "es-define-property@npm:1.0.1" + checksum: 0512f4e5d564021c9e3a644437b0155af2679d10d80f21adaf868e64d30efdfbd321631956f20f42d655fedb2e3a027da479fad3fa6048f768eb453a80a5f80a languageName: node linkType: hard -"es-errors@npm:^1.0.0, es-errors@npm:^1.2.1, es-errors@npm:^1.3.0": +"es-errors@npm:^1.3.0": version: 1.3.0 resolution: "es-errors@npm:1.3.0" checksum: ec1414527a0ccacd7f15f4a3bc66e215f04f595ba23ca75cdae0927af099b5ec865f9f4d33e9d7e86f512f252876ac77d4281a7871531a50678132429b1271b5 languageName: node linkType: hard -"es-iterator-helpers@npm:^1.0.19": - version: 1.0.19 - resolution: "es-iterator-helpers@npm:1.0.19" +"es-iterator-helpers@npm:^1.2.1": + version: 1.2.1 + resolution: "es-iterator-helpers@npm:1.2.1" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 - es-abstract: ^1.23.3 + es-abstract: ^1.23.6 es-errors: ^1.3.0 es-set-tostringtag: ^2.0.3 function-bind: ^1.1.2 - get-intrinsic: ^1.2.4 - globalthis: ^1.0.3 + get-intrinsic: ^1.2.6 + globalthis: ^1.0.4 + gopd: ^1.2.0 has-property-descriptors: ^1.0.2 - has-proto: ^1.0.3 - has-symbols: ^1.0.3 - internal-slot: ^1.0.7 - iterator.prototype: ^1.1.2 - safe-array-concat: ^1.1.2 - checksum: 7ae112b88359fbaf4b9d7d1d1358ae57c5138768c57ba3a8fb930393662653b0512bfd7917c15890d1471577fb012fee8b73b4465e59b331739e6ee94f961683 + has-proto: ^1.2.0 + has-symbols: ^1.1.0 + internal-slot: ^1.1.0 + iterator.prototype: ^1.1.4 + safe-array-concat: ^1.1.3 + checksum: 952808dd1df3643d67ec7adf20c30b36e5eecadfbf36354e6f39ed3266c8e0acf3446ce9bc465e38723d613cb1d915c1c07c140df65bdce85da012a6e7bda62b languageName: node linkType: hard -"es-object-atoms@npm:^1.0.0": - version: 1.0.0 - resolution: "es-object-atoms@npm:1.0.0" - dependencies: - es-errors: ^1.3.0 - checksum: 26f0ff78ab93b63394e8403c353842b2272836968de4eafe97656adfb8a7c84b9099bf0fe96ed58f4a4cddc860f6e34c77f91649a58a5daa4a9c40b902744e3c +"es-module-lexer@npm:^1.5.4": + version: 1.6.0 + resolution: "es-module-lexer@npm:1.6.0" + checksum: 4413a9aed9bf581de62b98174f3eea3f23ce2994fb6832df64bdd6504f6977da1a3b5ebd3c10f75e3c2f214dcf1a1d8b54be5e62c71b7110e6ccedbf975d2b7d languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.1": - version: 2.0.2 - resolution: "es-set-tostringtag@npm:2.0.2" +"es-object-atoms@npm:^1.0.0, es-object-atoms@npm:^1.1.1": + version: 1.1.1 + resolution: "es-object-atoms@npm:1.1.1" dependencies: - get-intrinsic: ^1.2.2 - has-tostringtag: ^1.0.0 - hasown: ^2.0.0 - checksum: afcec3a4c9890ae14d7ec606204858441c801ff84f312538e1d1ccf1e5493c8b17bd672235df785f803756472cb4f2d49b87bde5237aef33411e74c22f194e07 + es-errors: ^1.3.0 + checksum: 214d3767287b12f36d3d7267ef342bbbe1e89f899cfd67040309fc65032372a8e60201410a99a1645f2f90c1912c8c49c8668066f6bdd954bcd614dda2e3da97 languageName: node linkType: hard -"es-set-tostringtag@npm:^2.0.3": - version: 2.0.3 - resolution: "es-set-tostringtag@npm:2.0.3" +"es-set-tostringtag@npm:^2.0.3, es-set-tostringtag@npm:^2.1.0": + version: 2.1.0 + resolution: "es-set-tostringtag@npm:2.1.0" dependencies: - get-intrinsic: ^1.2.4 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.6 has-tostringtag: ^1.0.2 - hasown: ^2.0.1 - checksum: 7227fa48a41c0ce83e0377b11130d324ac797390688135b8da5c28994c0165be8b252e15cd1de41e1325e5a5412511586960213e88f9ab4a5e7d028895db5129 + hasown: ^2.0.2 + checksum: 789f35de4be3dc8d11fdcb91bc26af4ae3e6d602caa93299a8c45cf05d36cc5081454ae2a6d3afa09cceca214b76c046e4f8151e092e6fc7feeb5efb9e794fc6 languageName: node linkType: hard -"es-shim-unscopables@npm:^1.0.0, es-shim-unscopables@npm:^1.0.2": - version: 1.0.2 - resolution: "es-shim-unscopables@npm:1.0.2" +"es-shim-unscopables@npm:^1.0.2, es-shim-unscopables@npm:^1.1.0": + version: 1.1.0 + resolution: "es-shim-unscopables@npm:1.1.0" dependencies: - hasown: ^2.0.0 - checksum: 432bd527c62065da09ed1d37a3f8e623c423683285e6188108286f4a1e8e164a5bcbfbc0051557c7d14633cd2a41ce24c7048e6bbb66a985413fd32f1be72626 + hasown: ^2.0.2 + checksum: 33cfb1ebcb2f869f0bf528be1a8660b4fe8b6cec8fc641f330e508db2284b58ee2980fad6d0828882d22858c759c0806076427a3673b6daa60f753e3b558ee15 languageName: node linkType: hard -"es-to-primitive@npm:^1.2.1": - version: 1.2.1 - resolution: "es-to-primitive@npm:1.2.1" +"es-to-primitive@npm:^1.3.0": + version: 1.3.0 + resolution: "es-to-primitive@npm:1.3.0" dependencies: - is-callable: ^1.1.4 - is-date-object: ^1.0.1 - is-symbol: ^1.0.2 - checksum: 4ead6671a2c1402619bdd77f3503991232ca15e17e46222b0a41a5d81aebc8740a77822f5b3c965008e631153e9ef0580540007744521e72de8e33599fca2eed + is-callable: ^1.2.7 + is-date-object: ^1.0.5 + is-symbol: ^1.0.4 + checksum: 966965880356486cd4d1fe9a523deda2084c81b3702d951212c098f5f2ee93605d1b7c1840062efb48a07d892641c7ed1bc194db563645c0dd2b919cb6d65b93 languageName: node linkType: hard @@ -4862,86 +4610,6 @@ __metadata: languageName: node linkType: hard -"esbuild@npm:^0.19.3": - version: 0.19.12 - resolution: "esbuild@npm:0.19.12" - dependencies: - "@esbuild/aix-ppc64": 0.19.12 - "@esbuild/android-arm": 0.19.12 - "@esbuild/android-arm64": 0.19.12 - "@esbuild/android-x64": 0.19.12 - "@esbuild/darwin-arm64": 0.19.12 - "@esbuild/darwin-x64": 0.19.12 - "@esbuild/freebsd-arm64": 0.19.12 - "@esbuild/freebsd-x64": 0.19.12 - "@esbuild/linux-arm": 0.19.12 - "@esbuild/linux-arm64": 0.19.12 - "@esbuild/linux-ia32": 0.19.12 - "@esbuild/linux-loong64": 0.19.12 - "@esbuild/linux-mips64el": 0.19.12 - "@esbuild/linux-ppc64": 0.19.12 - "@esbuild/linux-riscv64": 0.19.12 - "@esbuild/linux-s390x": 0.19.12 - "@esbuild/linux-x64": 0.19.12 - "@esbuild/netbsd-x64": 0.19.12 - "@esbuild/openbsd-x64": 0.19.12 - "@esbuild/sunos-x64": 0.19.12 - "@esbuild/win32-arm64": 0.19.12 - "@esbuild/win32-ia32": 0.19.12 - "@esbuild/win32-x64": 0.19.12 - dependenciesMeta: - "@esbuild/aix-ppc64": - optional: true - "@esbuild/android-arm": - optional: true - "@esbuild/android-arm64": - optional: true - "@esbuild/android-x64": - optional: true - "@esbuild/darwin-arm64": - optional: true - "@esbuild/darwin-x64": - optional: true - "@esbuild/freebsd-arm64": - optional: true - "@esbuild/freebsd-x64": - optional: true - "@esbuild/linux-arm": - optional: true - "@esbuild/linux-arm64": - optional: true - "@esbuild/linux-ia32": - optional: true - "@esbuild/linux-loong64": - optional: true - "@esbuild/linux-mips64el": - optional: true - "@esbuild/linux-ppc64": - optional: true - "@esbuild/linux-riscv64": - optional: true - "@esbuild/linux-s390x": - optional: true - "@esbuild/linux-x64": - optional: true - "@esbuild/netbsd-x64": - optional: true - "@esbuild/openbsd-x64": - optional: true - "@esbuild/sunos-x64": - optional: true - "@esbuild/win32-arm64": - optional: true - "@esbuild/win32-ia32": - optional: true - "@esbuild/win32-x64": - optional: true - bin: - esbuild: bin/esbuild - checksum: 2936e29107b43e65a775b78b7bc66ddd7d76febd73840ac7e825fb22b65029422ff51038a08d19b05154f543584bd3afe7d1ef1c63900429475b17fbe61cb61f - languageName: node - linkType: hard - "esbuild@npm:^0.21.3": version: 0.21.5 resolution: "esbuild@npm:0.21.5" @@ -5022,10 +4690,10 @@ __metadata: languageName: node linkType: hard -"escalade@npm:^3.1.1, escalade@npm:^3.1.2": - version: 3.1.2 - resolution: "escalade@npm:3.1.2" - checksum: 1ec0977aa2772075493002bdbd549d595ff6e9393b1cb0d7d6fcaf78c750da0c158f180938365486f75cb69fba20294351caddfce1b46552a7b6c3cde52eaa02 +"escalade@npm:^3.2.0": + version: 3.2.0 + resolution: "escalade@npm:3.2.0" + checksum: 47b029c83de01b0d17ad99ed766347b974b0d628e848de404018f3abee728e987da0d2d370ad4574aa3d5b5bfc368754fd085d69a30f8e75903486ec4b5b709e languageName: node linkType: hard @@ -5073,32 +4741,38 @@ __metadata: linkType: hard "eslint-import-resolver-typescript@npm:^3.6.1": - version: 3.6.1 - resolution: "eslint-import-resolver-typescript@npm:3.6.1" - dependencies: - debug: ^4.3.4 - enhanced-resolve: ^5.12.0 - eslint-module-utils: ^2.7.4 - fast-glob: ^3.3.1 - get-tsconfig: ^4.5.0 - is-core-module: ^2.11.0 - is-glob: ^4.0.3 + version: 3.10.0 + resolution: "eslint-import-resolver-typescript@npm:3.10.0" + dependencies: + "@nolyfill/is-core-module": 1.0.39 + debug: ^4.4.0 + get-tsconfig: ^4.10.0 + is-bun-module: ^2.0.0 + stable-hash: ^0.0.5 + tinyglobby: ^0.2.12 + unrs-resolver: ^1.3.2 peerDependencies: eslint: "*" eslint-plugin-import: "*" - checksum: 454fa0646533050fb57f13d27daf8c71f51b0bb9156d6a461290ccb8576d892209fcc6702a89553f3f5ea8e5b407395ca2e5de169a952c953685f1f7c46b4496 + eslint-plugin-import-x: "*" + peerDependenciesMeta: + eslint-plugin-import: + optional: true + eslint-plugin-import-x: + optional: true + checksum: 6d7b865346b79fb8174fc024a1f4de1815dc9e9e50ed9eec324ac91518df7f15ce0e690fc61dcaf5a0f28a951a4728c615c29e7c872a49669f3c5e79aeb1e90e languageName: node linkType: hard -"eslint-module-utils@npm:^2.7.4, eslint-module-utils@npm:^2.8.0": - version: 2.8.0 - resolution: "eslint-module-utils@npm:2.8.0" +"eslint-module-utils@npm:^2.12.0": + version: 2.12.0 + resolution: "eslint-module-utils@npm:2.12.0" dependencies: debug: ^3.2.7 peerDependenciesMeta: eslint: optional: true - checksum: 74c6dfea7641ebcfe174be61168541a11a14aa8d72e515f5f09af55cd0d0862686104b0524aa4b8e0ce66418a44aa38a94d2588743db5fd07a6b49ffd16921d2 + checksum: be3ac52e0971c6f46daeb1a7e760e45c7c45f820c8cc211799f85f10f04ccbf7afc17039165d56cb2da7f7ca9cec2b3a777013cddf0b976784b37eb9efa24180 languageName: node linkType: hard @@ -5112,29 +4786,31 @@ __metadata: linkType: hard "eslint-plugin-import@npm:^2.29.1": - version: 2.29.1 - resolution: "eslint-plugin-import@npm:2.29.1" + version: 2.31.0 + resolution: "eslint-plugin-import@npm:2.31.0" dependencies: - array-includes: ^3.1.7 - array.prototype.findlastindex: ^1.2.3 + "@rtsao/scc": ^1.1.0 + array-includes: ^3.1.8 + array.prototype.findlastindex: ^1.2.5 array.prototype.flat: ^1.3.2 array.prototype.flatmap: ^1.3.2 debug: ^3.2.7 doctrine: ^2.1.0 eslint-import-resolver-node: ^0.3.9 - eslint-module-utils: ^2.8.0 - hasown: ^2.0.0 - is-core-module: ^2.13.1 + eslint-module-utils: ^2.12.0 + hasown: ^2.0.2 + is-core-module: ^2.15.1 is-glob: ^4.0.3 minimatch: ^3.1.2 - object.fromentries: ^2.0.7 - object.groupby: ^1.0.1 - object.values: ^1.1.7 + object.fromentries: ^2.0.8 + object.groupby: ^1.0.3 + object.values: ^1.2.0 semver: ^6.3.1 + string.prototype.trimend: ^1.0.8 tsconfig-paths: ^3.15.0 peerDependencies: - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - checksum: e65159aef808136d26d029b71c8c6e4cb5c628e65e5de77f1eb4c13a379315ae55c9c3afa847f43f4ff9df7e54515c77ffc6489c6a6f81f7dd7359267577468c + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + checksum: b1d2ac268b3582ff1af2a72a2c476eae4d250c100f2e335b6e102036e4a35efa530b80ec578dfc36761fabb34a635b9bf5ab071abe9d4404a4bb054fdf22d415 languageName: node linkType: hard @@ -5148,77 +4824,82 @@ __metadata: linkType: hard "eslint-plugin-react@npm:^7.35.0": - version: 7.35.0 - resolution: "eslint-plugin-react@npm:7.35.0" + version: 7.37.5 + resolution: "eslint-plugin-react@npm:7.37.5" dependencies: array-includes: ^3.1.8 array.prototype.findlast: ^1.2.5 - array.prototype.flatmap: ^1.3.2 + array.prototype.flatmap: ^1.3.3 array.prototype.tosorted: ^1.1.4 doctrine: ^2.1.0 - es-iterator-helpers: ^1.0.19 + es-iterator-helpers: ^1.2.1 estraverse: ^5.3.0 hasown: ^2.0.2 jsx-ast-utils: ^2.4.1 || ^3.0.0 minimatch: ^3.1.2 - object.entries: ^1.1.8 + object.entries: ^1.1.9 object.fromentries: ^2.0.8 - object.values: ^1.2.0 + object.values: ^1.2.1 prop-types: ^15.8.1 resolve: ^2.0.0-next.5 semver: ^6.3.1 - string.prototype.matchall: ^4.0.11 + string.prototype.matchall: ^4.0.12 string.prototype.repeat: ^1.0.0 peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - checksum: cd4d3c0567e947964643dda5fc80147e058d75f06bac47c3f086ff0cd6156286c669d98e685e3834997c4043f3922b90e6374b6c3658f22abd025dbd41acc23f + checksum: 8675e7558e646e3c2fcb04bb60cfe416000b831ef0b363f0117838f5bfc799156113cb06058ad4d4b39fc730903b7360b05038da11093064ca37caf76b7cf2ca languageName: node linkType: hard -"eslint-scope@npm:^8.0.2": - version: 8.0.2 - resolution: "eslint-scope@npm:8.0.2" +"eslint-scope@npm:^8.3.0": + version: 8.3.0 + resolution: "eslint-scope@npm:8.3.0" dependencies: esrecurse: ^4.3.0 estraverse: ^5.2.0 - checksum: bd1e7a0597ec605cf3bc9b35c9e13d7ea6c11fee031b0cada9e8993b0ecf16d81d6f40f1dcd463424af439abf53cd62302ea25707c1599689eb2750d6aa29688 + checksum: 57a58b6716533e25d527089826c4add89a047aecf75e4a88fee05f113ef5a72b85392b304a69bf670646cc3e068354aec70361b9718c2453949a05fc4d9bfe73 languageName: node linkType: hard -"eslint-visitor-keys@npm:^3.3.0, eslint-visitor-keys@npm:^3.4.3": +"eslint-visitor-keys@npm:^3.4.3": version: 3.4.3 resolution: "eslint-visitor-keys@npm:3.4.3" checksum: 36e9ef87fca698b6fd7ca5ca35d7b2b6eeaaf106572e2f7fd31c12d3bfdaccdb587bba6d3621067e5aece31c8c3a348b93922ab8f7b2cbc6aaab5e1d89040c60 languageName: node linkType: hard -"eslint-visitor-keys@npm:^4.0.0": - version: 4.0.0 - resolution: "eslint-visitor-keys@npm:4.0.0" - checksum: 5c09f89cf29d87cdbfbac38802a880d3c2e65f8cb61c689888346758f1e24a4c7f6caefeac9474dfa52058a99920623599bdb00516976a30134abeba91275aa2 +"eslint-visitor-keys@npm:^4.2.0": + version: 4.2.0 + resolution: "eslint-visitor-keys@npm:4.2.0" + checksum: 779c604672b570bb4da84cef32f6abb085ac78379779c1122d7879eade8bb38ae715645324597cf23232d03cef06032c9844d25c73625bc282a5bfd30247e5b5 languageName: node linkType: hard "eslint@npm:^9.9.1": - version: 9.9.1 - resolution: "eslint@npm:9.9.1" + version: 9.24.0 + resolution: "eslint@npm:9.24.0" dependencies: "@eslint-community/eslint-utils": ^4.2.0 - "@eslint-community/regexpp": ^4.11.0 - "@eslint/config-array": ^0.18.0 - "@eslint/eslintrc": ^3.1.0 - "@eslint/js": 9.9.1 + "@eslint-community/regexpp": ^4.12.1 + "@eslint/config-array": ^0.20.0 + "@eslint/config-helpers": ^0.2.0 + "@eslint/core": ^0.12.0 + "@eslint/eslintrc": ^3.3.1 + "@eslint/js": 9.24.0 + "@eslint/plugin-kit": ^0.2.7 + "@humanfs/node": ^0.16.6 "@humanwhocodes/module-importer": ^1.0.1 - "@humanwhocodes/retry": ^0.3.0 - "@nodelib/fs.walk": ^1.2.8 + "@humanwhocodes/retry": ^0.4.2 + "@types/estree": ^1.0.6 + "@types/json-schema": ^7.0.15 ajv: ^6.12.4 chalk: ^4.0.0 - cross-spawn: ^7.0.2 + cross-spawn: ^7.0.6 debug: ^4.3.2 escape-string-regexp: ^4.0.0 - eslint-scope: ^8.0.2 - eslint-visitor-keys: ^4.0.0 - espree: ^10.1.0 + eslint-scope: ^8.3.0 + eslint-visitor-keys: ^4.2.0 + espree: ^10.3.0 esquery: ^1.5.0 esutils: ^2.0.2 fast-deep-equal: ^3.1.3 @@ -5228,15 +4909,11 @@ __metadata: ignore: ^5.2.0 imurmurhash: ^0.1.4 is-glob: ^4.0.0 - is-path-inside: ^3.0.3 json-stable-stringify-without-jsonify: ^1.0.1 - levn: ^0.4.1 lodash.merge: ^4.6.2 minimatch: ^3.1.2 natural-compare: ^1.4.0 optionator: ^0.9.3 - strip-ansi: ^6.0.1 - text-table: ^0.2.0 peerDependencies: jiti: "*" peerDependenciesMeta: @@ -5244,18 +4921,18 @@ __metadata: optional: true bin: eslint: bin/eslint.js - checksum: a1ff85cd26a6f138e0f52e17668b7794371c81fd0ac66634c4d554dc2d878dcfbe6047a025e63e85168c897c83dfa453501a10395cbefda7debd79fe6ea00eab + checksum: fb4cdca007fe8b66d6c1ae8e682ce504afc116ab9a0ba264a69ff7cd40833ad02d9b86394685563175d202c31dbb57b31de46687cfa10ed890c7ae560f560871 languageName: node linkType: hard -"espree@npm:^10.0.1, espree@npm:^10.1.0": - version: 10.1.0 - resolution: "espree@npm:10.1.0" +"espree@npm:^10.0.1, espree@npm:^10.3.0": + version: 10.3.0 + resolution: "espree@npm:10.3.0" dependencies: - acorn: ^8.12.0 + acorn: ^8.14.0 acorn-jsx: ^5.3.2 - eslint-visitor-keys: ^4.0.0 - checksum: a4708ab987f6c03734b8738b1588e9f31b2e305e869ca4677c60d82294eb05f7099b6687eb39eeb0913bb2d49bdf0bd0f31c511599ea7ee171281f871a9c897e + eslint-visitor-keys: ^4.2.0 + checksum: 63e8030ff5a98cea7f8b3e3a1487c998665e28d674af08b9b3100ed991670eb3cbb0e308c4548c79e03762753838fbe530c783f17309450d6b47a889fee72bef languageName: node linkType: hard @@ -5317,6 +4994,21 @@ __metadata: languageName: node linkType: hard +"ethers@npm:^6.13.5": + version: 6.13.6 + resolution: "ethers@npm:6.13.6" + dependencies: + "@adraffy/ens-normalize": 1.10.1 + "@noble/curves": 1.2.0 + "@noble/hashes": 1.3.2 + "@types/node": 22.7.5 + aes-js: 4.0.0-beta.5 + tslib: 2.7.0 + ws: 8.17.1 + checksum: 9d0eb6d031c11a325dcab34378c70f335d2985c33063e07e82c85d1448135b730d2bfb47fb28c8d618c57f37462793b0fad9e16588ba3b2dffc77c898b580ee5 + languageName: node + linkType: hard + "eventemitter2@npm:6.4.7": version: 6.4.7 resolution: "eventemitter2@npm:6.4.7" @@ -5348,7 +5040,7 @@ __metadata: languageName: node linkType: hard -"execa@npm:^8.0.1, execa@npm:~8.0.1": +"execa@npm:^8.0.1": version: 8.0.1 resolution: "execa@npm:8.0.1" dependencies: @@ -5374,10 +5066,17 @@ __metadata: languageName: node linkType: hard +"expect-type@npm:^1.1.0": + version: 1.2.1 + resolution: "expect-type@npm:1.2.1" + checksum: 4fc41ff0c784cb8984ab7801326251d3178083661f0ad08bbd3e5ca789293e6b66d5082f0cef83ebf9849c85d0280a19df5e4e2c57999a2464db9a01c7e3344f + languageName: node + linkType: hard + "exponential-backoff@npm:^3.1.1": - version: 3.1.1 - resolution: "exponential-backoff@npm:3.1.1" - checksum: 3d21519a4f8207c99f7457287291316306255a328770d320b401114ec8481986e4e467e854cb9914dd965e0a1ca810a23ccb559c642c88f4c7f55c55778a9b48 + version: 3.1.2 + resolution: "exponential-backoff@npm:3.1.2" + checksum: 7e191e3dd6edd8c56c88f2c8037c98fbb8034fe48778be53ed8cb30ccef371a061a4e999a469aab939b92f8f12698f3b426d52f4f76b7a20da5f9f98c3cbc862 languageName: node linkType: hard @@ -5426,16 +5125,16 @@ __metadata: languageName: node linkType: hard -"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.0, fast-glob@npm:^3.3.1": - version: 3.3.2 - resolution: "fast-glob@npm:3.3.2" +"fast-glob@npm:^3.2.9, fast-glob@npm:^3.3.2": + version: 3.3.3 + resolution: "fast-glob@npm:3.3.3" dependencies: "@nodelib/fs.stat": ^2.0.2 "@nodelib/fs.walk": ^1.2.3 glob-parent: ^5.1.2 merge2: ^1.3.0 - micromatch: ^4.0.4 - checksum: 900e4979f4dbc3313840078419245621259f349950411ca2fa445a2f9a1a6d98c3b5e7e0660c5ccd563aa61abe133a21765c6c0dec8e57da1ba71d8000b05ec1 + micromatch: ^4.0.8 + checksum: 0704d7b85c0305fd2cef37777337dfa26230fdd072dce9fb5c82a4b03156f3ffb8ed3e636033e65d45d2a5805a4e475825369a27404c0307f2db0c8eb3366fbd languageName: node linkType: hard @@ -5454,11 +5153,11 @@ __metadata: linkType: hard "fastq@npm:^1.6.0": - version: 1.17.1 - resolution: "fastq@npm:1.17.1" + version: 1.19.1 + resolution: "fastq@npm:1.19.1" dependencies: reusify: ^1.0.4 - checksum: a8c5b26788d5a1763f88bae56a8ddeee579f935a831c5fe7a8268cea5b0a91fbfe705f612209e02d639b881d7b48e461a50da4a10cfaa40da5ca7cc9da098d88 + checksum: 7691d1794fb84ad0ec2a185f10e00f0e1713b894e2c9c4d42f0bc0ba5f8c00e6e655a202074ca0b91b9c3d977aab7c30c41a8dc069fb5368576ac0054870a0e6 languageName: node linkType: hard @@ -5471,6 +5170,18 @@ __metadata: languageName: node linkType: hard +"fdir@npm:^6.4.3": + version: 6.4.3 + resolution: "fdir@npm:6.4.3" + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + checksum: fa53e13c63e8c14add5b70fd47e28267dd5481ebbba4b47720ec25aae7d10a800ef0f2e33de350faaf63c10b3d7b64138925718832220d593f75e724846c736d + languageName: node + linkType: hard + "fetch-blob@npm:^3.1.2, fetch-blob@npm:^3.1.4": version: 3.2.0 resolution: "fetch-blob@npm:3.2.0" @@ -5499,21 +5210,12 @@ __metadata: languageName: node linkType: hard -"file-selector@npm:^0.6.0": - version: 0.6.0 - resolution: "file-selector@npm:0.6.0" - dependencies: - tslib: ^2.4.0 - checksum: 7d051b6e5d793f3c6e2ab287ba5e7c2c6a0971bccc9d56e044c8047ba483e18f60fc0b5771c951dc707c0d15f4f36ccb4f1f1aaf385d21ec8f7700dadf8325ba - languageName: node - linkType: hard - -"fill-range@npm:^7.0.1": - version: 7.0.1 - resolution: "fill-range@npm:7.0.1" +"file-selector@npm:^2.1.0": + version: 2.1.2 + resolution: "file-selector@npm:2.1.2" dependencies: - to-regex-range: ^5.0.1 - checksum: cc283f4e65b504259e64fd969bcf4def4eb08d85565e906b7d36516e87819db52029a76b6363d0f02d0d532f0033c9603b9e2d943d56ee3b0d4f7ad3328ff917 + tslib: ^2.7.0 + checksum: 0e7c5233ca7d33a05eb99236e8cfc843ea304335589d954393aeb7c5b7595f30be23c79173d28180e728b6eb441cd1dd355d6ad7fbb03b8e4f37d20e3d5c3184 languageName: node linkType: hard @@ -5575,9 +5277,9 @@ __metadata: linkType: hard "flatted@npm:^3.2.9": - version: 3.2.9 - resolution: "flatted@npm:3.2.9" - checksum: f14167fbe26a9d20f6fca8d998e8f1f41df72c8e81f9f2c9d61ed2bea058248f5e1cbd05e7f88c0e5087a6a0b822a1e5e2b446e879f3cfbe0b07ba2d7f80b026 + version: 3.3.3 + resolution: "flatted@npm:3.3.3" + checksum: 8c96c02fbeadcf4e8ffd0fa24983241e27698b0781295622591fc13585e2f226609d95e422bcf2ef044146ffacb6b68b1f20871454eddf75ab3caa6ee5f4a1fe languageName: node linkType: hard @@ -5595,12 +5297,12 @@ __metadata: languageName: node linkType: hard -"for-each@npm:^0.3.3": - version: 0.3.3 - resolution: "for-each@npm:0.3.3" +"for-each@npm:^0.3.3, for-each@npm:^0.3.5": + version: 0.3.5 + resolution: "for-each@npm:0.3.5" dependencies: - is-callable: ^1.1.3 - checksum: 6c48ff2bc63362319c65e2edca4a8e1e3483a2fabc72fbe7feaf8c73db94fc7861bd53bc02c8a66a0c1dd709da6b04eec42e0abdd6b40ce47305ae92a25e5d28 + is-callable: ^1.2.7 + checksum: 3c986d7e11f4381237cc98baa0a2f87eabe74719eee65ed7bed275163082b940ede19268c61d04c6260e0215983b12f8d885e3c8f9aa8c2113bf07c37051745c languageName: node linkType: hard @@ -5614,13 +5316,13 @@ __metadata: languageName: node linkType: hard -"foreground-child@npm:^3.1.0": - version: 3.1.1 - resolution: "foreground-child@npm:3.1.1" +"foreground-child@npm:^3.1.0, foreground-child@npm:^3.3.0": + version: 3.3.1 + resolution: "foreground-child@npm:3.3.1" dependencies: - cross-spawn: ^7.0.0 + cross-spawn: ^7.0.6 signal-exit: ^4.0.1 - checksum: 139d270bc82dc9e6f8bc045fe2aae4001dc2472157044fdfad376d0a3457f77857fa883c1c8b21b491c6caade9a926a4bed3d3d2e8d3c9202b151a4cbbd0bcd5 + checksum: b2c1a6fc0bf0233d645d9fefdfa999abf37db1b33e5dab172b3cbfb0662b88bfbd2c9e7ab853533d199050ec6b65c03fcf078fc212d26e4990220e98c6930eef languageName: node linkType: hard @@ -5631,14 +5333,15 @@ __metadata: languageName: node linkType: hard -"form-data@npm:~2.3.2": - version: 2.3.3 - resolution: "form-data@npm:2.3.3" +"form-data@npm:~4.0.0": + version: 4.0.2 + resolution: "form-data@npm:4.0.2" dependencies: asynckit: ^0.4.0 - combined-stream: ^1.0.6 + combined-stream: ^1.0.8 + es-set-tostringtag: ^2.1.0 mime-types: ^2.1.12 - checksum: 10c1780fa13dbe1ff3100114c2ce1f9307f8be10b14bf16e103815356ff567b6be39d70fc4a40f8990b9660012dc24b0f5e1dde1b6426166eb23a445ba068ca3 + checksum: e887298b22c13c7c9c5a8ba3716f295a479a13ca78bfd855ef11cbce1bcf22bc0ae2062e94808e21d46e5c667664a1a1a8a7f57d7040193c1fefbfb11af58aab languageName: node linkType: hard @@ -5677,15 +5380,6 @@ __metadata: languageName: node linkType: hard -"fs-minipass@npm:^2.0.0": - version: 2.1.0 - resolution: "fs-minipass@npm:2.1.0" - dependencies: - minipass: ^3.0.0 - checksum: 1b8d128dae2ac6cc94230cc5ead341ba3e0efaef82dab46a33d171c044caaa6ca001364178d42069b2809c35a1c3c35079a32107c770e9ffab3901b59af8c8b1 - languageName: node - linkType: hard - "fs-minipass@npm:^3.0.0": version: 3.0.3 resolution: "fs-minipass@npm:3.0.3" @@ -5728,15 +5422,17 @@ __metadata: languageName: node linkType: hard -"function.prototype.name@npm:^1.1.5, function.prototype.name@npm:^1.1.6": - version: 1.1.6 - resolution: "function.prototype.name@npm:1.1.6" +"function.prototype.name@npm:^1.1.6, function.prototype.name@npm:^1.1.8": + version: 1.1.8 + resolution: "function.prototype.name@npm:1.1.8" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + define-properties: ^1.2.1 functions-have-names: ^1.2.3 - checksum: 7a3f9bd98adab09a07f6e1f03da03d3f7c26abbdeaeee15223f6c04a9fb5674792bdf5e689dac19b97ac71de6aad2027ba3048a9b883aa1b3173eed6ab07f479 + hasown: ^2.0.2 + is-callable: ^1.2.7 + checksum: 3a366535dc08b25f40a322efefa83b2da3cd0f6da41db7775f2339679120ef63b6c7e967266182609e655b8f0a8f65596ed21c7fd72ad8bd5621c2340edd4010 languageName: node linkType: hard @@ -5762,29 +5458,27 @@ __metadata: linkType: hard "get-east-asian-width@npm:^1.0.0": - version: 1.2.0 - resolution: "get-east-asian-width@npm:1.2.0" - checksum: ea55f4d4a42c4b00d3d9be3111bc17eb0161f60ed23fc257c1390323bb780a592d7a8bdd550260fd4627dabee9a118cdfa3475ae54edca35ebcd3bdae04179e3 - languageName: node - linkType: hard - -"get-func-name@npm:^2.0.1": - version: 2.0.2 - resolution: "get-func-name@npm:2.0.2" - checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + version: 1.3.0 + resolution: "get-east-asian-width@npm:1.3.0" + checksum: 757a34c7a46ff385e2775f96f9d3e553f6b6666a8898fb89040d36a1010fba692332772945606a7d4b0f0c6afb84cd394e75d5477c56e1f00f1eb79603b0aecc languageName: node linkType: hard -"get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2, get-intrinsic@npm:^1.2.3, get-intrinsic@npm:^1.2.4": - version: 1.2.4 - resolution: "get-intrinsic@npm:1.2.4" +"get-intrinsic@npm:^1.2.4, get-intrinsic@npm:^1.2.5, get-intrinsic@npm:^1.2.6, get-intrinsic@npm:^1.2.7, get-intrinsic@npm:^1.3.0": + version: 1.3.0 + resolution: "get-intrinsic@npm:1.3.0" dependencies: + call-bind-apply-helpers: ^1.0.2 + es-define-property: ^1.0.1 es-errors: ^1.3.0 + es-object-atoms: ^1.1.1 function-bind: ^1.1.2 - has-proto: ^1.0.1 - has-symbols: ^1.0.3 - hasown: ^2.0.0 - checksum: 414e3cdf2c203d1b9d7d33111df746a4512a1aa622770b361dadddf8ed0b5aeb26c560f49ca077e24bfafb0acb55ca908d1f709216ccba33ffc548ec8a79a951 + get-proto: ^1.0.1 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + hasown: ^2.0.2 + math-intrinsics: ^1.1.0 + checksum: 301008e4482bb9a9cb49e132b88fee093bff373b4e6def8ba219b1e96b60158a6084f273ef5cafe832e42cd93462f4accb46a618d35fe59a2b507f2388c5b79d languageName: node linkType: hard @@ -5795,6 +5489,16 @@ __metadata: languageName: node linkType: hard +"get-proto@npm:^1.0.0, get-proto@npm:^1.0.1": + version: 1.0.1 + resolution: "get-proto@npm:1.0.1" + dependencies: + dunder-proto: ^1.0.1 + es-object-atoms: ^1.0.0 + checksum: 4fc96afdb58ced9a67558698b91433e6b037aaa6f1493af77498d7c85b141382cf223c0e5946f334fb328ee85dfe6edd06d218eaf09556f4bc4ec6005d7f5f7b + languageName: node + linkType: hard + "get-stream@npm:^5.0.0, get-stream@npm:^5.1.0": version: 5.2.0 resolution: "get-stream@npm:5.2.0" @@ -5811,33 +5515,23 @@ __metadata: languageName: node linkType: hard -"get-symbol-description@npm:^1.0.0": - version: 1.0.1 - resolution: "get-symbol-description@npm:1.0.1" - dependencies: - call-bind: ^1.0.5 - es-errors: ^1.3.0 - checksum: 3feb5130efcade947cbad0304eb2163bab7b80e2c5ce24adcdc242cbdbbbaebbbe0f536807822f333b5d1088288ee19534cb75cd92f18aa76e050ea16e766915 - languageName: node - linkType: hard - -"get-symbol-description@npm:^1.0.2": - version: 1.0.2 - resolution: "get-symbol-description@npm:1.0.2" +"get-symbol-description@npm:^1.1.0": + version: 1.1.0 + resolution: "get-symbol-description@npm:1.1.0" dependencies: - call-bind: ^1.0.5 + call-bound: ^1.0.3 es-errors: ^1.3.0 - get-intrinsic: ^1.2.4 - checksum: e1cb53bc211f9dbe9691a4f97a46837a553c4e7caadd0488dc24ac694db8a390b93edd412b48dcdd0b4bbb4c595de1709effc75fc87c0839deedc6968f5bd973 + get-intrinsic: ^1.2.6 + checksum: 655ed04db48ee65ef2ddbe096540d4405e79ba0a7f54225775fef43a7e2afcb93a77d141c5f05fdef0afce2eb93bcbfb3597142189d562ac167ff183582683cd languageName: node linkType: hard -"get-tsconfig@npm:^4.5.0": - version: 4.7.2 - resolution: "get-tsconfig@npm:4.7.2" +"get-tsconfig@npm:^4.10.0": + version: 4.10.0 + resolution: "get-tsconfig@npm:4.10.0" dependencies: resolve-pkg-maps: ^1.0.0 - checksum: 172358903250eff0103943f816e8a4e51d29b8e5449058bdf7266714a908a48239f6884308bd3a6ff28b09f692b9533dbebfd183ab63e4e14f073cda91f1bca9 + checksum: cebf14d38ecaa9a1af25fc3f56317402a4457e7e20f30f52a0ab98b4c85962a259f75065e483824f73a1ce4a8e4926c149ead60f0619842b8cd13b94e15fbdec languageName: node linkType: hard @@ -5878,17 +5572,18 @@ __metadata: linkType: hard "glob@npm:^10.2.2, glob@npm:^10.3.10": - version: 10.3.10 - resolution: "glob@npm:10.3.10" + version: 10.4.5 + resolution: "glob@npm:10.4.5" dependencies: foreground-child: ^3.1.0 - jackspeak: ^2.3.5 - minimatch: ^9.0.1 - minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - path-scurry: ^1.10.1 + jackspeak: ^3.1.2 + minimatch: ^9.0.4 + minipass: ^7.1.2 + package-json-from-dist: ^1.0.0 + path-scurry: ^1.11.1 bin: glob: dist/esm/bin.mjs - checksum: 4f2fe2511e157b5a3f525a54092169a5f92405f24d2aed3142f4411df328baca13059f4182f1db1bf933e2c69c0bd89e57ae87edd8950cba8c7ccbe84f721cf3 + checksum: 0bc725de5e4862f9f387fd0f2b274baf16850dcd2714502ccf471ee401803997983e2c05590cb65f9675a3c6f2a58e7a53f9e365704108c6ad3cbf1d60934c4a languageName: node linkType: hard @@ -5929,16 +5624,17 @@ __metadata: languageName: node linkType: hard -"globalthis@npm:^1.0.3": - version: 1.0.3 - resolution: "globalthis@npm:1.0.3" +"globalthis@npm:^1.0.4": + version: 1.0.4 + resolution: "globalthis@npm:1.0.4" dependencies: - define-properties: ^1.1.3 - checksum: fbd7d760dc464c886d0196166d92e5ffb4c84d0730846d6621a39fbbc068aeeb9c8d1421ad330e94b7bca4bb4ea092f5f21f3d36077812af5d098b4dc006c998 + define-properties: ^1.2.1 + gopd: ^1.0.1 + checksum: 39ad667ad9f01476474633a1834a70842041f70a55571e8dcef5fb957980a92da5022db5430fca8aecc5d47704ae30618c0bc877a579c70710c904e9ef06108a languageName: node linkType: hard -"globby@npm:11.1.0, globby@npm:^11.1.0": +"globby@npm:11.1.0": version: 11.1.0 resolution: "globby@npm:11.1.0" dependencies: @@ -5959,16 +5655,14 @@ __metadata: languageName: node linkType: hard -"gopd@npm:^1.0.1": - version: 1.0.1 - resolution: "gopd@npm:1.0.1" - dependencies: - get-intrinsic: ^1.1.3 - checksum: a5ccfb8806e0917a94e0b3de2af2ea4979c1da920bc381667c260e00e7cafdbe844e2cb9c5bcfef4e5412e8bf73bab837285bc35c7ba73aaaf0134d4583393a6 +"gopd@npm:^1.0.1, gopd@npm:^1.2.0": + version: 1.2.0 + resolution: "gopd@npm:1.2.0" + checksum: cc6d8e655e360955bdccaca51a12a474268f95bb793fc3e1f2bdadb075f28bfd1fd988dab872daf77a61d78cbaf13744bc8727a17cfb1d150d76047d805375f3 languageName: node linkType: hard -"graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.4, graceful-fs@npm:^4.2.6": +"graceful-fs@npm:^4.1.15, graceful-fs@npm:^4.1.6, graceful-fs@npm:^4.2.0, graceful-fs@npm:^4.2.6": version: 4.2.11 resolution: "graceful-fs@npm:4.2.11" checksum: ac85f94da92d8eb6b7f5a8b20ce65e43d66761c55ce85ac96df6865308390da45a8d3f0296dd3a663de65d30ba497bd46c696cc1e248c72b13d6d567138a4fc7 @@ -5991,17 +5685,10 @@ __metadata: languageName: node linkType: hard -"has-bigints@npm:^1.0.1, has-bigints@npm:^1.0.2": - version: 1.0.2 - resolution: "has-bigints@npm:1.0.2" - checksum: 390e31e7be7e5c6fe68b81babb73dfc35d413604d7ee5f56da101417027a4b4ce6a27e46eff97ad040c835b5d228676eae99a9b5c3bc0e23c8e81a49241ff45b - languageName: node - linkType: hard - -"has-flag@npm:^3.0.0": - version: 3.0.0 - resolution: "has-flag@npm:3.0.0" - checksum: 4a15638b454bf086c8148979aae044dd6e39d63904cd452d970374fa6a87623423da485dfb814e7be882e05c096a7ccf1ebd48e7e7501d0208d8384ff4dea73b +"has-bigints@npm:^1.0.2": + version: 1.1.0 + resolution: "has-bigints@npm:1.1.0" + checksum: 79730518ae02c77e4af6a1d1a0b6a2c3e1509785532771f9baf0241e83e36329542c3d7a0e723df8cbc85f74eff4f177828a2265a01ba576adbdc2d40d86538b languageName: node linkType: hard @@ -6012,16 +5699,7 @@ __metadata: languageName: node linkType: hard -"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.1": - version: 1.0.1 - resolution: "has-property-descriptors@npm:1.0.1" - dependencies: - get-intrinsic: ^1.2.2 - checksum: 2bcc6bf6ec6af375add4e4b4ef586e43674850a91ad4d46666d0b28ba8e1fd69e424c7677d24d60f69470ad0afaa2f3197f508b20b0bb7dd99a8ab77ffc4b7c4 - languageName: node - linkType: hard - -"has-property-descriptors@npm:^1.0.2": +"has-property-descriptors@npm:^1.0.0, has-property-descriptors@npm:^1.0.2": version: 1.0.2 resolution: "has-property-descriptors@npm:1.0.2" dependencies: @@ -6030,28 +5708,23 @@ __metadata: languageName: node linkType: hard -"has-proto@npm:^1.0.1": - version: 1.0.1 - resolution: "has-proto@npm:1.0.1" - checksum: febc5b5b531de8022806ad7407935e2135f1cc9e64636c3916c6842bd7995994ca3b29871ecd7954bd35f9e2986c17b3b227880484d22259e2f8e6ce63fd383e - languageName: node - linkType: hard - -"has-proto@npm:^1.0.3": - version: 1.0.3 - resolution: "has-proto@npm:1.0.3" - checksum: fe7c3d50b33f50f3933a04413ed1f69441d21d2d2944f81036276d30635cad9279f6b43bc8f32036c31ebdfcf6e731150f46c1907ad90c669ffe9b066c3ba5c4 +"has-proto@npm:^1.2.0": + version: 1.2.0 + resolution: "has-proto@npm:1.2.0" + dependencies: + dunder-proto: ^1.0.0 + checksum: f55010cb94caa56308041d77967c72a02ffd71386b23f9afa8447e58bc92d49d15c19bf75173713468e92fe3fb1680b03b115da39c21c32c74886d1d50d3e7ff languageName: node linkType: hard -"has-symbols@npm:^1.0.2, has-symbols@npm:^1.0.3": - version: 1.0.3 - resolution: "has-symbols@npm:1.0.3" - checksum: a054c40c631c0d5741a8285010a0777ea0c068f99ed43e5d6eb12972da223f8af553a455132fdb0801bdcfa0e0f443c0c03a68d8555aa529b3144b446c3f2410 +"has-symbols@npm:^1.0.3, has-symbols@npm:^1.1.0": + version: 1.1.0 + resolution: "has-symbols@npm:1.1.0" + checksum: b2316c7302a0e8ba3aaba215f834e96c22c86f192e7310bdf689dd0e6999510c89b00fbc5742571507cebf25764d68c988b3a0da217369a73596191ac0ce694b languageName: node linkType: hard -"has-tostringtag@npm:^1.0.0, has-tostringtag@npm:^1.0.1, has-tostringtag@npm:^1.0.2": +"has-tostringtag@npm:^1.0.2": version: 1.0.2 resolution: "has-tostringtag@npm:1.0.2" dependencies: @@ -6070,16 +5743,7 @@ __metadata: languageName: node linkType: hard -"hasown@npm:^2.0.0": - version: 2.0.0 - resolution: "hasown@npm:2.0.0" - dependencies: - function-bind: ^1.1.2 - checksum: 6151c75ca12554565098641c98a40f4cc86b85b0fd5b6fe92360967e4605a4f9610f7757260b4e8098dd1c2ce7f4b095f2006fe72a570e3b6d2d28de0298c176 - languageName: node - linkType: hard - -"hasown@npm:^2.0.1, hasown@npm:^2.0.2": +"hasown@npm:^2.0.2": version: 2.0.2 resolution: "hasown@npm:2.0.2" dependencies: @@ -6089,8 +5753,8 @@ __metadata: linkType: hard "hast-util-to-jsx-runtime@npm:^2.0.0": - version: 2.3.0 - resolution: "hast-util-to-jsx-runtime@npm:2.3.0" + version: 2.3.6 + resolution: "hast-util-to-jsx-runtime@npm:2.3.6" dependencies: "@types/estree": ^1.0.0 "@types/hast": ^3.0.0 @@ -6102,12 +5766,12 @@ __metadata: mdast-util-mdx-expression: ^2.0.0 mdast-util-mdx-jsx: ^3.0.0 mdast-util-mdxjs-esm: ^2.0.0 - property-information: ^6.0.0 + property-information: ^7.0.0 space-separated-tokens: ^2.0.0 - style-to-object: ^1.0.0 + style-to-js: ^1.0.0 unist-util-position: ^5.0.0 vfile-message: ^4.0.0 - checksum: 599a97c6ec61c1430776813d7fb42e6f96032bf4a04dfcbb8eceef3bc8d1845ecf242387a4426b9d3f52320dbbfa26450643b81124b3d6a0b9bbb0fff4d0ba83 + checksum: 78c25465cf010f1004b22f0bbb3bd47793f458ead3561c779ea2b9204ceb1adc9c048592b0a15025df0c683a12ebe16a8bef008c06d9c0369f51116f64b35a2d languageName: node linkType: hard @@ -6137,9 +5801,9 @@ __metadata: linkType: hard "html-url-attributes@npm:^3.0.0": - version: 3.0.0 - resolution: "html-url-attributes@npm:3.0.0" - checksum: 9f499d33e6ddff6c2d2766fd73d2f22f3c370b4e485a92b0b2938303665b306dc7f36b2724c9466764e8f702351c01f342f5ec933be41a31c1fa40b72087b91d + version: 3.0.1 + resolution: "html-url-attributes@npm:3.0.1" + checksum: 1ecbf9cae0c438d2802386710177b7bbf7e30cc61327e9f125eb32fca7302cd1e3ab45c441859cb1e7646109be322fc1163592ad4dfde9b14d09416d101a6573 languageName: node linkType: hard @@ -6151,33 +5815,33 @@ __metadata: linkType: hard "http-proxy-agent@npm:^7.0.0": - version: 7.0.0 - resolution: "http-proxy-agent@npm:7.0.0" + version: 7.0.2 + resolution: "http-proxy-agent@npm:7.0.2" dependencies: agent-base: ^7.1.0 debug: ^4.3.4 - checksum: 48d4fac997917e15f45094852b63b62a46d0c8a4f0b9c6c23ca26d27b8df8d178bed88389e604745e748bd9a01f5023e25093722777f0593c3f052009ff438b6 + checksum: 670858c8f8f3146db5889e1fa117630910101db601fff7d5a8aa637da0abedf68c899f03d3451cac2f83bcc4c3d2dabf339b3aa00ff8080571cceb02c3ce02f3 languageName: node linkType: hard -"http-signature@npm:~1.3.6": - version: 1.3.6 - resolution: "http-signature@npm:1.3.6" +"http-signature@npm:~1.4.0": + version: 1.4.0 + resolution: "http-signature@npm:1.4.0" dependencies: assert-plus: ^1.0.0 jsprim: ^2.0.2 - sshpk: ^1.14.1 - checksum: 10be2af4764e71fee0281392937050201ee576ac755c543f570d6d87134ce5e858663fe999a7adb3e4e368e1e356d0d7fec6b9542295b875726ff615188e7a0c + sshpk: ^1.18.0 + checksum: f07f4cc0481e4461c68b9b7d1a25bf2ec4cef8e0061812b989c1e64f504b4b11f75f88022102aea05d25d47a87789599f1a310b1f8a56945a50c93e54c7ee076 languageName: node linkType: hard "https-proxy-agent@npm:^7.0.1": - version: 7.0.2 - resolution: "https-proxy-agent@npm:7.0.2" + version: 7.0.6 + resolution: "https-proxy-agent@npm:7.0.6" dependencies: - agent-base: ^7.0.2 + agent-base: ^7.1.2 debug: 4 - checksum: 088969a0dd476ea7a0ed0a2cf1283013682b08f874c3bc6696c83fa061d2c157d29ef0ad3eb70a2046010bb7665573b2388d10fdcb3e410a66995e5248444292 + checksum: b882377a120aa0544846172e5db021fa8afbf83fea2a897d397bd2ddd8095ab268c24bc462f40a15f2a8c600bf4aa05ce52927f70038d4014e68aefecfa94e8d languageName: node linkType: hard @@ -6196,11 +5860,11 @@ __metadata: linkType: hard "husky@npm:^9.1.5": - version: 9.1.5 - resolution: "husky@npm:9.1.5" + version: 9.1.7 + resolution: "husky@npm:9.1.7" bin: husky: bin.js - checksum: c240018e852666dc12a93ca84751f1440bdf436468ba872c7b7b3cee54f5f1d7b4222a117988b27ca437093efdeb128778897ab0e409361336676a2c3012c8a7 + checksum: c2412753f15695db369634ba70f50f5c0b7e5cb13b673d0826c411ec1bd9ddef08c1dad89ea154f57da2521d2605bd64308af748749b27d08c5f563bcd89975f languageName: node linkType: hard @@ -6220,14 +5884,7 @@ __metadata: languageName: node linkType: hard -"ignore@npm:^5.2.0": - version: 5.3.1 - resolution: "ignore@npm:5.3.1" - checksum: 71d7bb4c1dbe020f915fd881108cbe85a0db3d636a0ea3ba911393c53946711d13a9b1143c7e70db06d571a5822c0a324a6bcde5c9904e7ca5047f01f1bf8cd3 - languageName: node - linkType: hard - -"ignore@npm:^5.3.1": +"ignore@npm:^5.2.0, ignore@npm:^5.3.1": version: 5.3.2 resolution: "ignore@npm:5.3.2" checksum: 2acfd32a573260ea522ea0bfeff880af426d68f6831f973129e2ba7363f422923cf53aab62f8369cbf4667c7b25b6f8a3761b34ecdb284ea18e87a5262a865be @@ -6235,12 +5892,12 @@ __metadata: linkType: hard "import-fresh@npm:^3.2.1": - version: 3.3.0 - resolution: "import-fresh@npm:3.3.0" + version: 3.3.1 + resolution: "import-fresh@npm:3.3.1" dependencies: parent-module: ^1.0.0 resolve-from: ^4.0.0 - checksum: 2cacfad06e652b1edc50be650f7ec3be08c5e5a6f6d12d035c440a42a8cc028e60a5b99ca08a77ab4d6b1346da7d971915828f33cdab730d3d42f08242d09baa + checksum: a06b19461b4879cc654d46f8a6244eb55eb053437afd4cbb6613cad6be203811849ed3e4ea038783092879487299fda24af932b86bdfff67c9055ba3612b8c87 languageName: node linkType: hard @@ -6289,28 +5946,31 @@ __metadata: languageName: node linkType: hard -"inline-style-parser@npm:0.2.3": - version: 0.2.3 - resolution: "inline-style-parser@npm:0.2.3" - checksum: ed6454de80759e7faef511f51b5716b33c40a6b05b8a8f5383dc01e8a087c6fd5df877446d05e8e3961ae0751e028e25e180f5cffc192a5ce7822edef6810ade +"inline-style-parser@npm:0.2.4": + version: 0.2.4 + resolution: "inline-style-parser@npm:0.2.4" + checksum: 5df20a21dd8d67104faaae29774bb50dc9690c75bc5c45dac107559670a5530104ead72c4cf54f390026e617e7014c65b3d68fb0bb573a37c4d1f94e9c36e1ca languageName: node linkType: hard -"internal-slot@npm:^1.0.5, internal-slot@npm:^1.0.7": - version: 1.0.7 - resolution: "internal-slot@npm:1.0.7" +"internal-slot@npm:^1.1.0": + version: 1.1.0 + resolution: "internal-slot@npm:1.1.0" dependencies: es-errors: ^1.3.0 - hasown: ^2.0.0 - side-channel: ^1.0.4 - checksum: cadc5eea5d7d9bc2342e93aae9f31f04c196afebb11bde97448327049f492cd7081e18623ae71388aac9cd237b692ca3a105be9c68ac39c1dec679d7409e33eb + hasown: ^2.0.2 + side-channel: ^1.1.0 + checksum: 8e0991c2d048cc08dab0a91f573c99f6a4215075887517ea4fa32203ce8aea60fa03f95b177977fa27eb502e5168366d0f3e02c762b799691411d49900611861 languageName: node linkType: hard -"ip@npm:^2.0.0": - version: 2.0.1 - resolution: "ip@npm:2.0.1" - checksum: d765c9fd212b8a99023a4cde6a558a054c298d640fec1020567494d257afd78ca77e37126b1a3ef0e053646ced79a816bf50621d38d5e768cdde0431fa3b0d35 +"ip-address@npm:^9.0.5": + version: 9.0.5 + resolution: "ip-address@npm:9.0.5" + dependencies: + jsbn: 1.1.0 + sprintf-js: ^1.1.3 + checksum: aa15f12cfd0ef5e38349744e3654bae649a34c3b10c77a674a167e99925d1549486c5b14730eebce9fea26f6db9d5e42097b00aa4f9f612e68c79121c71652dc languageName: node linkType: hard @@ -6331,13 +5991,14 @@ __metadata: languageName: node linkType: hard -"is-array-buffer@npm:^3.0.2, is-array-buffer@npm:^3.0.4": - version: 3.0.4 - resolution: "is-array-buffer@npm:3.0.4" +"is-array-buffer@npm:^3.0.4, is-array-buffer@npm:^3.0.5": + version: 3.0.5 + resolution: "is-array-buffer@npm:3.0.5" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.2.1 - checksum: e4e3e6ef0ff2239e75371d221f74bc3c26a03564a22efb39f6bb02609b598917ddeecef4e8c877df2a25888f247a98198959842a5e73236bc7f22cabdf6351a7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: f137a2a6e77af682cdbffef1e633c140cf596f72321baf8bba0f4ef22685eb4339dde23dfe9e9ca430b5f961dee4d46577dcf12b792b68518c8449b134fb9156 languageName: node linkType: hard @@ -6349,20 +6010,24 @@ __metadata: linkType: hard "is-async-function@npm:^2.0.0": - version: 2.0.0 - resolution: "is-async-function@npm:2.0.0" + version: 2.1.1 + resolution: "is-async-function@npm:2.1.1" dependencies: - has-tostringtag: ^1.0.0 - checksum: e3471d95e6c014bf37cad8a93f2f4b6aac962178e0a5041e8903147166964fdc1c5c1d2ef87e86d77322c370ca18f2ea004fa7420581fa747bcaf7c223069dbd + async-function: ^1.0.0 + call-bound: ^1.0.3 + get-proto: ^1.0.1 + has-tostringtag: ^1.0.2 + safe-regex-test: ^1.1.0 + checksum: 9bece45133da26636488ca127d7686b85ad3ca18927e2850cff1937a650059e90be1c71a48623f8791646bb7a241b0cabf602a0b9252dcfa5ab273f2399000e6 languageName: node linkType: hard -"is-bigint@npm:^1.0.1": - version: 1.0.4 - resolution: "is-bigint@npm:1.0.4" +"is-bigint@npm:^1.1.0": + version: 1.1.0 + resolution: "is-bigint@npm:1.1.0" dependencies: - has-bigints: ^1.0.1 - checksum: c56edfe09b1154f8668e53ebe8252b6f185ee852a50f9b41e8d921cb2bed425652049fbe438723f6cb48a63ca1aa051e948e7e401e093477c99c84eba244f666 + has-bigints: ^1.0.2 + checksum: ee1544f0e664f253306786ed1dce494b8cf242ef415d6375d8545b4d8816b0f054bd9f948a8988ae2c6325d1c28260dd02978236b2f7b8fb70dfc4838a6c9fa7 languageName: node linkType: hard @@ -6375,17 +6040,26 @@ __metadata: languageName: node linkType: hard -"is-boolean-object@npm:^1.1.0": - version: 1.1.2 - resolution: "is-boolean-object@npm:1.1.2" +"is-boolean-object@npm:^1.2.1": + version: 1.2.2 + resolution: "is-boolean-object@npm:1.2.2" + dependencies: + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 0415b181e8f1bfd5d3f8a20f8108e64d372a72131674eea9c2923f39d065b6ad08d654765553bdbffbd92c3746f1007986c34087db1bd89a31f71be8359ccdaa + languageName: node + linkType: hard + +"is-bun-module@npm:^2.0.0": + version: 2.0.0 + resolution: "is-bun-module@npm:2.0.0" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: c03b23dbaacadc18940defb12c1c0e3aaece7553ef58b162a0f6bba0c2a7e1551b59f365b91e00d2dbac0522392d576ef322628cb1d036a0fe51eb466db67222 + semver: ^7.7.1 + checksum: e75bd87cb1aaff7c97cf085509669559a713f741a43b4fd5979cb44c5c0c16c05670ce5f23fc22337d1379211fac118c525c5ed73544076ddaf181c1c21ace35 languageName: node linkType: hard -"is-callable@npm:^1.1.3, is-callable@npm:^1.1.4, is-callable@npm:^1.2.7": +"is-callable@npm:^1.2.7": version: 1.2.7 resolution: "is-callable@npm:1.2.7" checksum: 61fd57d03b0d984e2ed3720fb1c7a897827ea174bd44402878e059542ea8c4aeedee0ea0985998aa5cc2736b2fa6e271c08587addb5b3959ac52cf665173d1ac @@ -6403,30 +6077,33 @@ __metadata: languageName: node linkType: hard -"is-core-module@npm:^2.11.0, is-core-module@npm:^2.13.0, is-core-module@npm:^2.13.1": - version: 2.13.1 - resolution: "is-core-module@npm:2.13.1" +"is-core-module@npm:^2.13.0, is-core-module@npm:^2.15.1, is-core-module@npm:^2.16.0": + version: 2.16.1 + resolution: "is-core-module@npm:2.16.1" dependencies: - hasown: ^2.0.0 - checksum: 256559ee8a9488af90e4bad16f5583c6d59e92f0742e9e8bb4331e758521ee86b810b93bae44f390766ffbc518a0488b18d9dab7da9a5ff997d499efc9403f7c + hasown: ^2.0.2 + checksum: 6ec5b3c42d9cbf1ac23f164b16b8a140c3cec338bf8f884c076ca89950c7cc04c33e78f02b8cae7ff4751f3247e3174b2330f1fe4de194c7210deb8b1ea316a7 languageName: node linkType: hard -"is-data-view@npm:^1.0.1": - version: 1.0.1 - resolution: "is-data-view@npm:1.0.1" +"is-data-view@npm:^1.0.1, is-data-view@npm:^1.0.2": + version: 1.0.2 + resolution: "is-data-view@npm:1.0.2" dependencies: + call-bound: ^1.0.2 + get-intrinsic: ^1.2.6 is-typed-array: ^1.1.13 - checksum: 4ba4562ac2b2ec005fefe48269d6bd0152785458cd253c746154ffb8a8ab506a29d0cfb3b74af87513843776a88e4981ae25c89457bf640a33748eab1a7216b5 + checksum: 31600dd19932eae7fd304567e465709ffbfa17fa236427c9c864148e1b54eb2146357fcf3aed9b686dee13c217e1bb5a649cb3b9c479e1004c0648e9febde1b2 languageName: node linkType: hard -"is-date-object@npm:^1.0.1, is-date-object@npm:^1.0.5": - version: 1.0.5 - resolution: "is-date-object@npm:1.0.5" +"is-date-object@npm:^1.0.5, is-date-object@npm:^1.1.0": + version: 1.1.0 + resolution: "is-date-object@npm:1.1.0" dependencies: - has-tostringtag: ^1.0.0 - checksum: baa9077cdf15eb7b58c79398604ca57379b2fc4cf9aa7a9b9e295278648f628c9b201400c01c5e0f7afae56507d741185730307cbe7cad3b9f90a77e5ee342fc + call-bound: ^1.0.2 + has-tostringtag: ^1.0.2 + checksum: d6c36ab9d20971d65f3fc64cef940d57a4900a2ac85fb488a46d164c2072a33da1cb51eefcc039e3e5c208acbce343d3480b84ab5ff0983f617512da2742562a languageName: node linkType: hard @@ -6444,12 +6121,12 @@ __metadata: languageName: node linkType: hard -"is-finalizationregistry@npm:^1.0.2": - version: 1.0.2 - resolution: "is-finalizationregistry@npm:1.0.2" +"is-finalizationregistry@npm:^1.1.0": + version: 1.1.1 + resolution: "is-finalizationregistry@npm:1.1.1" dependencies: - call-bind: ^1.0.2 - checksum: 4f243a8e06228cd45bdab8608d2cb7abfc20f6f0189c8ac21ea8d603f1f196eabd531ce0bb8e08cbab047e9845ef2c191a3761c9a17ad5cabf8b35499c4ad35d + call-bound: ^1.0.3 + checksum: 38c646c506e64ead41a36c182d91639833311970b6b6c6268634f109eef0a1a9d2f1f2e499ef4cb43c744a13443c4cdd2f0812d5afdcee5e9b65b72b28c48557 languageName: node linkType: hard @@ -6477,11 +6154,14 @@ __metadata: linkType: hard "is-generator-function@npm:^1.0.10": - version: 1.0.10 - resolution: "is-generator-function@npm:1.0.10" + version: 1.1.0 + resolution: "is-generator-function@npm:1.1.0" dependencies: - has-tostringtag: ^1.0.0 - checksum: d54644e7dbaccef15ceb1e5d91d680eb5068c9ee9f9eb0a9e04173eb5542c9b51b5ab52c5537f5703e48d5fddfd376817c1ca07a84a407b7115b769d4bdde72b + call-bound: ^1.0.3 + get-proto: ^1.0.0 + has-tostringtag: ^1.0.2 + safe-regex-test: ^1.1.0 + checksum: f7f7276131bdf7e28169b86ac55a5b080012a597f9d85a0cbef6fe202a7133fa450a3b453e394870e3cb3685c5a764c64a9f12f614684b46969b1e6f297bed6b languageName: node linkType: hard @@ -6511,40 +6191,20 @@ __metadata: languageName: node linkType: hard -"is-lambda@npm:^1.0.1": - version: 1.0.1 - resolution: "is-lambda@npm:1.0.1" - checksum: 93a32f01940220532e5948538699ad610d5924ac86093fcee83022252b363eb0cc99ba53ab084a04e4fb62bf7b5731f55496257a4c38adf87af9c4d352c71c35 - languageName: node - linkType: hard - -"is-map@npm:^2.0.1": - version: 2.0.2 - resolution: "is-map@npm:2.0.2" - checksum: ace3d0ecd667bbdefdb1852de601268f67f2db725624b1958f279316e13fecb8fa7df91fd60f690d7417b4ec180712f5a7ee967008e27c65cfd475cc84337728 - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.2": - version: 2.0.2 - resolution: "is-negative-zero@npm:2.0.2" - checksum: f3232194c47a549da60c3d509c9a09be442507616b69454716692e37ae9f37c4dea264fb208ad0c9f3efd15a796a46b79df07c7e53c6227c32170608b809149a - languageName: node - linkType: hard - -"is-negative-zero@npm:^2.0.3": +"is-map@npm:^2.0.3": version: 2.0.3 - resolution: "is-negative-zero@npm:2.0.3" - checksum: c1e6b23d2070c0539d7b36022d5a94407132411d01aba39ec549af824231f3804b1aea90b5e4e58e807a65d23ceb538ed6e355ce76b267bdd86edb757ffcbdcd + resolution: "is-map@npm:2.0.3" + checksum: e6ce5f6380f32b141b3153e6ba9074892bbbbd655e92e7ba5ff195239777e767a976dcd4e22f864accaf30e53ebf961ab1995424aef91af68788f0591b7396cc languageName: node linkType: hard -"is-number-object@npm:^1.0.4": - version: 1.0.7 - resolution: "is-number-object@npm:1.0.7" +"is-number-object@npm:^1.1.1": + version: 1.1.1 + resolution: "is-number-object@npm:1.1.1" dependencies: - has-tostringtag: ^1.0.0 - checksum: d1e8d01bb0a7134c74649c4e62da0c6118a0bfc6771ea3c560914d52a627873e6920dd0fd0ebc0e12ad2ff4687eac4c308f7e80320b973b2c8a2c8f97a7524f7 + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 6517f0a0e8c4b197a21afb45cd3053dc711e79d45d8878aa3565de38d0102b130ca8732485122c7b336e98c27dacd5236854e3e6526e0eb30cae64956535662f languageName: node linkType: hard @@ -6555,7 +6215,7 @@ __metadata: languageName: node linkType: hard -"is-path-inside@npm:^3.0.2, is-path-inside@npm:^3.0.3": +"is-path-inside@npm:^3.0.2": version: 3.0.3 resolution: "is-path-inside@npm:3.0.3" checksum: abd50f06186a052b349c15e55b182326f1936c89a78bf6c8f2b707412517c097ce04bc49a0ca221787bc44e1049f51f09a2ffb63d22899051988d3a618ba13e9 @@ -6569,38 +6229,31 @@ __metadata: languageName: node linkType: hard -"is-regex@npm:^1.1.4": - version: 1.1.4 - resolution: "is-regex@npm:1.1.4" +"is-regex@npm:^1.2.1": + version: 1.2.1 + resolution: "is-regex@npm:1.2.1" dependencies: - call-bind: ^1.0.2 - has-tostringtag: ^1.0.0 - checksum: 362399b33535bc8f386d96c45c9feb04cf7f8b41c182f54174c1a45c9abbbe5e31290bbad09a458583ff6bf3b2048672cdb1881b13289569a7c548370856a652 - languageName: node - linkType: hard - -"is-set@npm:^2.0.1": - version: 2.0.2 - resolution: "is-set@npm:2.0.2" - checksum: b64343faf45e9387b97a6fd32be632ee7b269bd8183701f3b3f5b71a7cf00d04450ed8669d0bd08753e08b968beda96fca73a10fd0ff56a32603f64deba55a57 + call-bound: ^1.0.2 + gopd: ^1.2.0 + has-tostringtag: ^1.0.2 + hasown: ^2.0.2 + checksum: 99ee0b6d30ef1bb61fa4b22fae7056c6c9b3c693803c0c284ff7a8570f83075a7d38cda53b06b7996d441215c27895ea5d1af62124562e13d91b3dbec41a5e13 languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "is-shared-array-buffer@npm:1.0.2" - dependencies: - call-bind: ^1.0.2 - checksum: 9508929cf14fdc1afc9d61d723c6e8d34f5e117f0bffda4d97e7a5d88c3a8681f633a74f8e3ad1fe92d5113f9b921dc5ca44356492079612f9a247efbce7032a +"is-set@npm:^2.0.3": + version: 2.0.3 + resolution: "is-set@npm:2.0.3" + checksum: 36e3f8c44bdbe9496c9689762cc4110f6a6a12b767c5d74c0398176aa2678d4467e3bf07595556f2dba897751bde1422480212b97d973c7b08a343100b0c0dfe languageName: node linkType: hard -"is-shared-array-buffer@npm:^1.0.3": - version: 1.0.3 - resolution: "is-shared-array-buffer@npm:1.0.3" +"is-shared-array-buffer@npm:^1.0.4": + version: 1.0.4 + resolution: "is-shared-array-buffer@npm:1.0.4" dependencies: - call-bind: ^1.0.7 - checksum: a4fff602c309e64ccaa83b859255a43bb011145a42d3f56f67d9268b55bc7e6d98a5981a1d834186ad3105d6739d21547083fe7259c76c0468483fc538e716d8 + call-bound: ^1.0.3 + checksum: 1611fedc175796eebb88f4dfc393dd969a4a8e6c69cadaff424ee9d4464f9f026399a5f84a90f7c62d6d7ee04e3626a912149726de102b0bd6c1ee6a9868fa5a languageName: node linkType: hard @@ -6618,30 +6271,33 @@ __metadata: languageName: node linkType: hard -"is-string@npm:^1.0.5, is-string@npm:^1.0.7": - version: 1.0.7 - resolution: "is-string@npm:1.0.7" +"is-string@npm:^1.0.7, is-string@npm:^1.1.1": + version: 1.1.1 + resolution: "is-string@npm:1.1.1" dependencies: - has-tostringtag: ^1.0.0 - checksum: 323b3d04622f78d45077cf89aab783b2f49d24dc641aa89b5ad1a72114cfeff2585efc8c12ef42466dff32bde93d839ad321b26884cf75e5a7892a938b089989 + call-bound: ^1.0.3 + has-tostringtag: ^1.0.2 + checksum: 2eeaaff605250f5e836ea3500d33d1a5d3aa98d008641d9d42fb941e929ffd25972326c2ef912987e54c95b6f10416281aaf1b35cdf81992cfb7524c5de8e193 languageName: node linkType: hard -"is-symbol@npm:^1.0.2, is-symbol@npm:^1.0.3": - version: 1.0.4 - resolution: "is-symbol@npm:1.0.4" +"is-symbol@npm:^1.0.4, is-symbol@npm:^1.1.1": + version: 1.1.1 + resolution: "is-symbol@npm:1.1.1" dependencies: - has-symbols: ^1.0.2 - checksum: 92805812ef590738d9de49d677cd17dfd486794773fb6fa0032d16452af46e9b91bb43ffe82c983570f015b37136f4b53b28b8523bfb10b0ece7a66c31a54510 + call-bound: ^1.0.2 + has-symbols: ^1.1.0 + safe-regex-test: ^1.1.0 + checksum: bfafacf037af6f3c9d68820b74be4ae8a736a658a3344072df9642a090016e281797ba8edbeb1c83425879aae55d1cb1f30b38bf132d703692b2570367358032 languageName: node linkType: hard -"is-typed-array@npm:^1.1.10, is-typed-array@npm:^1.1.12, is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.9": - version: 1.1.13 - resolution: "is-typed-array@npm:1.1.13" +"is-typed-array@npm:^1.1.13, is-typed-array@npm:^1.1.14, is-typed-array@npm:^1.1.15": + version: 1.1.15 + resolution: "is-typed-array@npm:1.1.15" dependencies: - which-typed-array: ^1.1.14 - checksum: 150f9ada183a61554c91e1c4290086d2c100b0dff45f60b028519be72a8db964da403c48760723bf5253979b8dffe7b544246e0e5351dcd05c5fdb1dcc1dc0f0 + which-typed-array: ^1.1.16 + checksum: ea7cfc46c282f805d19a9ab2084fd4542fed99219ee9dbfbc26284728bd713a51eac66daa74eca00ae0a43b61322920ba334793607dc39907465913e921e0892 languageName: node linkType: hard @@ -6659,29 +6315,29 @@ __metadata: languageName: node linkType: hard -"is-weakmap@npm:^2.0.1": - version: 2.0.1 - resolution: "is-weakmap@npm:2.0.1" - checksum: 1222bb7e90c32bdb949226e66d26cb7bce12e1e28e3e1b40bfa6b390ba3e08192a8664a703dff2a00a84825f4e022f9cd58c4599ff9981ab72b1d69479f4f7f6 +"is-weakmap@npm:^2.0.2": + version: 2.0.2 + resolution: "is-weakmap@npm:2.0.2" + checksum: f36aef758b46990e0d3c37269619c0a08c5b29428c0bb11ecba7f75203442d6c7801239c2f31314bc79199217ef08263787f3837d9e22610ad1da62970d6616d languageName: node linkType: hard -"is-weakref@npm:^1.0.2": - version: 1.0.2 - resolution: "is-weakref@npm:1.0.2" +"is-weakref@npm:^1.0.2, is-weakref@npm:^1.1.0": + version: 1.1.1 + resolution: "is-weakref@npm:1.1.1" dependencies: - call-bind: ^1.0.2 - checksum: 95bd9a57cdcb58c63b1c401c60a474b0f45b94719c30f548c891860f051bc2231575c290a6b420c6bc6e7ed99459d424c652bd5bf9a1d5259505dc35b4bf83de + call-bound: ^1.0.3 + checksum: 1769b9aed5d435a3a989ffc18fc4ad1947d2acdaf530eb2bd6af844861b545047ea51102f75901f89043bed0267ed61d914ee21e6e8b9aa734ec201cdfc0726f languageName: node linkType: hard -"is-weakset@npm:^2.0.1": - version: 2.0.2 - resolution: "is-weakset@npm:2.0.2" +"is-weakset@npm:^2.0.3": + version: 2.0.4 + resolution: "is-weakset@npm:2.0.4" dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.1.1 - checksum: 5d8698d1fa599a0635d7ca85be9c26d547b317ed8fd83fc75f03efbe75d50001b5eececb1e9971de85fcde84f69ae6f8346bc92d20d55d46201d328e4c74a367 + call-bound: ^1.0.3 + get-intrinsic: ^1.2.6 + checksum: 5c6c8415a06065d78bdd5e3a771483aa1cd928df19138aa73c4c51333226f203f22117b4325df55cc8b3085a6716870a320c2d757efee92d7a7091a039082041 languageName: node linkType: hard @@ -6798,25 +6454,26 @@ __metadata: linkType: hard "istanbul-reports@npm:^3.0.2": - version: 3.1.6 - resolution: "istanbul-reports@npm:3.1.6" + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" dependencies: html-escaper: ^2.0.0 istanbul-lib-report: ^3.0.0 - checksum: 44c4c0582f287f02341e9720997f9e82c071627e1e862895745d5f52ec72c9b9f38e1d12370015d2a71dcead794f34c7732aaef3fab80a24bc617a21c3d911d6 + checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 languageName: node linkType: hard -"iterator.prototype@npm:^1.1.2": - version: 1.1.2 - resolution: "iterator.prototype@npm:1.1.2" +"iterator.prototype@npm:^1.1.4": + version: 1.1.5 + resolution: "iterator.prototype@npm:1.1.5" dependencies: - define-properties: ^1.2.1 - get-intrinsic: ^1.2.1 - has-symbols: ^1.0.3 - reflect.getprototypeof: ^1.0.4 - set-function-name: ^2.0.1 - checksum: d8a507e2ccdc2ce762e8a1d3f4438c5669160ac72b88b648e59a688eec6bc4e64b22338e74000518418d9e693faf2a092d2af21b9ec7dbf7763b037a54701168 + define-data-property: ^1.1.4 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.6 + get-proto: ^1.0.0 + has-symbols: ^1.1.0 + set-function-name: ^2.0.2 + checksum: 7db23c42629ba4790e6e15f78b555f41dbd08818c85af306988364bd19d86716a1187cb333444f3a0036bfc078a0e9cb7ec67fef3a61662736d16410d7f77869 languageName: node linkType: hard @@ -6827,25 +6484,25 @@ __metadata: languageName: node linkType: hard -"jackspeak@npm:^2.3.5": - version: 2.3.6 - resolution: "jackspeak@npm:2.3.6" +"jackspeak@npm:^3.1.2": + version: 3.4.3 + resolution: "jackspeak@npm:3.4.3" dependencies: "@isaacs/cliui": ^8.0.2 "@pkgjs/parseargs": ^0.11.0 dependenciesMeta: "@pkgjs/parseargs": optional: true - checksum: 57d43ad11eadc98cdfe7496612f6bbb5255ea69fe51ea431162db302c2a11011642f50cfad57288bd0aea78384a0612b16e131944ad8ecd09d619041c8531b54 + checksum: be31027fc72e7cc726206b9f560395604b82e0fddb46c4cbf9f97d049bcef607491a5afc0699612eaa4213ca5be8fd3e1e7cd187b3040988b65c9489838a7c00 languageName: node linkType: hard -"jiti@npm:^1.21.0": - version: 1.21.6 - resolution: "jiti@npm:1.21.6" +"jiti@npm:^1.21.6": + version: 1.21.7 + resolution: "jiti@npm:1.21.7" bin: jiti: bin/jiti.js - checksum: 9ea4a70a7bb950794824683ed1c632e2ede26949fbd348e2ba5ec8dc5efa54dc42022d85ae229cadaa60d4b95012e80ea07d625797199b688cc22ab0e8891d32 + checksum: 9cd20dabf82e3a4cceecb746a69381da7acda93d34eed0cdb9c9bdff3bce07e4f2f4a016ca89924392c935297d9aedc58ff9f7d3281bc5293319ad244926e0b7 languageName: node linkType: hard @@ -6896,6 +6553,13 @@ __metadata: languageName: node linkType: hard +"jsbn@npm:1.1.0": + version: 1.1.0 + resolution: "jsbn@npm:1.1.0" + checksum: 944f924f2bd67ad533b3850eee47603eed0f6ae425fd1ee8c760f477e8c34a05f144c1bd4f5a5dd1963141dc79a2c55f89ccc5ab77d039e7077f3ad196b64965 + languageName: node + linkType: hard + "jsbn@npm:~0.1.0": version: 0.1.1 resolution: "jsbn@npm:0.1.1" @@ -6903,12 +6567,12 @@ __metadata: languageName: node linkType: hard -"jsesc@npm:^2.5.1": - version: 2.5.2 - resolution: "jsesc@npm:2.5.2" +"jsesc@npm:^3.0.2": + version: 3.1.0 + resolution: "jsesc@npm:3.1.0" bin: jsesc: bin/jsesc - checksum: 4dc190771129e12023f729ce20e1e0bfceac84d73a85bc3119f7f938843fe25a4aeccb54b6494dce26fcf263d815f5f31acdefac7cc9329efb8422a4f4d9fa9d + checksum: 19c94095ea026725540c0d29da33ab03144f6bcf2d4159e4833d534976e99e0c09c38cefa9a575279a51fc36b31166f8d6d05c9fe2645d5f15851d690b41f17f languageName: node linkType: hard @@ -7037,24 +6701,10 @@ __metadata: languageName: node linkType: hard -"lilconfig@npm:^2.1.0": - version: 2.1.0 - resolution: "lilconfig@npm:2.1.0" - checksum: 8549bb352b8192375fed4a74694cd61ad293904eee33f9d4866c2192865c44c4eb35d10782966242634e0cbc1e91fe62b1247f148dc5514918e3a966da7ea117 - languageName: node - linkType: hard - -"lilconfig@npm:^3.0.0": - version: 3.0.0 - resolution: "lilconfig@npm:3.0.0" - checksum: a155f1cd24d324ab20dd6974db9ebcf3fb6f2b60175f7c052d917ff8a746b590bc1ee550f6fc3cb1e8716c8b58304e22fe2193febebc0cf16fa86d85e6f896c5 - languageName: node - linkType: hard - -"lilconfig@npm:~3.1.2": - version: 3.1.2 - resolution: "lilconfig@npm:3.1.2" - checksum: 4e8b83ddd1d0ad722600994e6ba5d858ddca14f0587aa6b9c8185e17548149b5e13d4d583d811e9e9323157fa8c6a527e827739794c7502b59243c58e210b8c3 +"lilconfig@npm:^3.0.0, lilconfig@npm:^3.1.3": + version: 3.1.3 + resolution: "lilconfig@npm:3.1.3" + checksum: 644eb10830350f9cdc88610f71a921f510574ed02424b57b0b3abb66ea725d7a082559552524a842f4e0272c196b88dfe1ff7d35ffcc6f45736777185cd67c9a languageName: node linkType: hard @@ -7066,22 +6716,22 @@ __metadata: linkType: hard "lint-staged@npm:^15.2.9": - version: 15.2.9 - resolution: "lint-staged@npm:15.2.9" - dependencies: - chalk: ~5.3.0 - commander: ~12.1.0 - debug: ~4.3.6 - execa: ~8.0.1 - lilconfig: ~3.1.2 - listr2: ~8.2.4 - micromatch: ~4.0.7 - pidtree: ~0.6.0 - string-argv: ~0.3.2 - yaml: ~2.5.0 + version: 15.5.1 + resolution: "lint-staged@npm:15.5.1" + dependencies: + chalk: ^5.4.1 + commander: ^13.1.0 + debug: ^4.4.0 + execa: ^8.0.1 + lilconfig: ^3.1.3 + listr2: ^8.2.5 + micromatch: ^4.0.8 + pidtree: ^0.6.0 + string-argv: ^0.3.2 + yaml: ^2.7.0 bin: lint-staged: bin/lint-staged.js - checksum: 7f804c24d0374b48d26f11a051342141b84c9954f77225bab5ae221b1e4d47a72f722f39b13169267592c28b2614ad39f9722fd86bc4cdfdf93e8601ff66b0e1 + checksum: aa285bf6c55459030254536661e2cf4a69d8084ff945a088b1a60a94b96e3593c866b2804e7a5b6168f65ea675b785657e70ade9248e9c6f3023d3bd35b497b5 languageName: node linkType: hard @@ -7106,9 +6756,9 @@ __metadata: languageName: node linkType: hard -"listr2@npm:~8.2.4": - version: 8.2.4 - resolution: "listr2@npm:8.2.4" +"listr2@npm:^8.2.5": + version: 8.3.2 + resolution: "listr2@npm:8.3.2" dependencies: cli-truncate: ^4.0.0 colorette: ^2.0.20 @@ -7116,7 +6766,7 @@ __metadata: log-update: ^6.1.0 rfdc: ^1.4.1 wrap-ansi: ^9.0.0 - checksum: b1cdcae653ff967a9b28637e346df2d6614165b4ad1e9e36b1403bc972550c51f57ec0e6d307dc3921ceea0601e244e848ab79457c6d570ab1f088b577a63d90 + checksum: f820250d081efd8ccc9f7751623650d184b82bea16c12e254815681f19c75836ee6494d0ea27088e250f49fd328fbc33120dadb8d55ee45fe5abca1de8e6da09 languageName: node linkType: hard @@ -7219,19 +6869,17 @@ __metadata: languageName: node linkType: hard -"loupe@npm:^3.1.0, loupe@npm:^3.1.1": - version: 3.1.1 - resolution: "loupe@npm:3.1.1" - dependencies: - get-func-name: ^2.0.1 - checksum: c7efa6bc6d71f25ca03eb13c9a069e35ed86799e308ca27a7a3eff8cdf9500e7c22d1f2411468d154a8e960e91e5e685e0c6c83e96db748f177c1adf30811153 +"loupe@npm:^3.1.0, loupe@npm:^3.1.2": + version: 3.1.3 + resolution: "loupe@npm:3.1.3" + checksum: 9b2530b1d5a44d2c9fc5241f97ea00296dca257173c535b4832bc31f9516e10387991feb5b3fff23df116c8fcf907ce3980f82b215dcc5d19cde17ce9b9ec3e1 languageName: node linkType: hard -"lru-cache@npm:^10.0.1, lru-cache@npm:^9.1.1 || ^10.0.0": - version: 10.2.0 - resolution: "lru-cache@npm:10.2.0" - checksum: eee7ddda4a7475deac51ac81d7dd78709095c6fa46e8350dc2d22462559a1faa3b81ed931d5464b13d48cbd7e08b46100b6f768c76833912bc444b99c37e25db +"lru-cache@npm:^10.0.1, lru-cache@npm:^10.2.0": + version: 10.4.3 + resolution: "lru-cache@npm:10.4.3" + checksum: 6476138d2125387a6d20f100608c2583d415a4f64a0fecf30c9e2dda976614f09cad4baa0842447bd37dd459a7bd27f57d9d8f8ce558805abd487c583f3d774a languageName: node linkType: hard @@ -7254,21 +6902,12 @@ __metadata: languageName: node linkType: hard -"lru-cache@npm:^6.0.0": - version: 6.0.0 - resolution: "lru-cache@npm:6.0.0" - dependencies: - yallist: ^4.0.0 - checksum: f97f499f898f23e4585742138a22f22526254fdba6d75d41a1c2526b3b6cc5747ef59c5612ba7375f42aca4f8461950e925ba08c991ead0651b4918b7c978297 - languageName: node - linkType: hard - -"magic-string@npm:^0.30.10": - version: 0.30.11 - resolution: "magic-string@npm:0.30.11" +"magic-string@npm:^0.30.12": + version: 0.30.17 + resolution: "magic-string@npm:0.30.17" dependencies: "@jridgewell/sourcemap-codec": ^1.5.0 - checksum: e041649453c9a3f31d2e731fc10e38604d50e20d3585cd48bc7713a6e2e1a3ad3012105929ca15750d59d0a3f1904405e4b95a23b7e69dc256db3c277a73a3ca + checksum: f4b4ed17c5ada64f77fc98491847302ebad64894a905c417c943840c0384662118c9b37f9f68bb86add159fa4749ff6f118c4627d69a470121b46731f8debc6d languageName: node linkType: hard @@ -7297,47 +6936,54 @@ __metadata: languageName: node linkType: hard -"make-fetch-happen@npm:^13.0.0": - version: 13.0.0 - resolution: "make-fetch-happen@npm:13.0.0" +"make-fetch-happen@npm:^14.0.3": + version: 14.0.3 + resolution: "make-fetch-happen@npm:14.0.3" dependencies: - "@npmcli/agent": ^2.0.0 - cacache: ^18.0.0 + "@npmcli/agent": ^3.0.0 + cacache: ^19.0.1 http-cache-semantics: ^4.1.1 - is-lambda: ^1.0.1 minipass: ^7.0.2 - minipass-fetch: ^3.0.0 + minipass-fetch: ^4.0.0 minipass-flush: ^1.0.5 minipass-pipeline: ^1.2.4 - negotiator: ^0.6.3 + negotiator: ^1.0.0 + proc-log: ^5.0.0 promise-retry: ^2.0.1 - ssri: ^10.0.0 - checksum: 7c7a6d381ce919dd83af398b66459a10e2fe8f4504f340d1d090d3fa3d1b0c93750220e1d898114c64467223504bd258612ba83efbc16f31b075cd56de24b4af + ssri: ^12.0.0 + checksum: 6fb2fee6da3d98f1953b03d315826b5c5a4ea1f908481afc113782d8027e19f080c85ae998454de4e5f27a681d3ec58d57278f0868d4e0b736f51d396b661691 languageName: node linkType: hard "markdown-table@npm:^3.0.0": - version: 3.0.3 - resolution: "markdown-table@npm:3.0.3" - checksum: 8fcd3d9018311120fbb97115987f8b1665a603f3134c93fbecc5d1463380c8036f789e2a62c19432058829e594fff8db9ff81c88f83690b2f8ed6c074f8d9e10 + version: 3.0.4 + resolution: "markdown-table@npm:3.0.4" + checksum: bc24b177cbb3ef170cb38c9f191476aa63f7236ebc8980317c5e91b5bf98c8fb471cf46d8920478c5e770d7f4337326f6b5b3efbf0687c2044fd332d7a64dfcb + languageName: node + linkType: hard + +"math-intrinsics@npm:^1.1.0": + version: 1.1.0 + resolution: "math-intrinsics@npm:1.1.0" + checksum: 0e513b29d120f478c85a70f49da0b8b19bc638975eca466f2eeae0071f3ad00454c621bf66e16dd435896c208e719fc91ad79bbfba4e400fe0b372e7c1c9c9a2 languageName: node linkType: hard "mdast-util-find-and-replace@npm:^3.0.0": - version: 3.0.1 - resolution: "mdast-util-find-and-replace@npm:3.0.1" + version: 3.0.2 + resolution: "mdast-util-find-and-replace@npm:3.0.2" dependencies: "@types/mdast": ^4.0.0 escape-string-regexp: ^5.0.0 unist-util-is: ^6.0.0 unist-util-visit-parents: ^6.0.0 - checksum: 05d5c4ff02e31db2f8a685a13bcb6c3f44e040bd9dfa54c19a232af8de5268334c8755d79cb456ed4cced1300c4fb83e88444c7ae8ee9ff16869a580f29d08cd + checksum: 00dde8aaf87d065034b911bdae20d17c107f5103c6ba5a3d117598c847ce005c6b03114b5603e0d07cc61fefcbb05bdb9f66100efeaa0278dbd80eda1087595f languageName: node linkType: hard "mdast-util-from-markdown@npm:^2.0.0": - version: 2.0.1 - resolution: "mdast-util-from-markdown@npm:2.0.1" + version: 2.0.2 + resolution: "mdast-util-from-markdown@npm:2.0.2" dependencies: "@types/mdast": ^4.0.0 "@types/unist": ^3.0.0 @@ -7351,7 +6997,7 @@ __metadata: micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 unist-util-stringify-position: ^4.0.0 - checksum: 2e50be71272a1503558c599cd5766cf2743935a021f82e32bc2ae5da44f6c7dcabb9da3a6eee76ede0ec8ad2b122d1192f4fe89890aac90c76463f049f8a835d + checksum: 1ad19f48b30ac6e0cb756070c210c78ad93c26876edfb3f75127783bc6df8b9402016d8f3e9964f3d1d5430503138ec65c145e869438727e1aa7f3cebf228fba languageName: node linkType: hard @@ -7369,15 +7015,15 @@ __metadata: linkType: hard "mdast-util-gfm-footnote@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-gfm-footnote@npm:2.0.0" + version: 2.1.0 + resolution: "mdast-util-gfm-footnote@npm:2.1.0" dependencies: "@types/mdast": ^4.0.0 devlop: ^1.1.0 mdast-util-from-markdown: ^2.0.0 mdast-util-to-markdown: ^2.0.0 micromark-util-normalize-identifier: ^2.0.0 - checksum: 45d26b40e7a093712e023105791129d76e164e2168d5268e113298a22de30c018162683fb7893cdc04ab246dac0087eed708b2a136d1d18ed2b32b3e0cae4a79 + checksum: a23c5531d63b254b46cbcb063b5731f56ccc9d1f038a17fa66d3994255868604a2b963f24e0f5b16dd3374743622afafcfe0c98cf90548d485bdc426ba77c618 languageName: node linkType: hard @@ -7418,8 +7064,8 @@ __metadata: linkType: hard "mdast-util-gfm@npm:^3.0.0": - version: 3.0.0 - resolution: "mdast-util-gfm@npm:3.0.0" + version: 3.1.0 + resolution: "mdast-util-gfm@npm:3.1.0" dependencies: mdast-util-from-markdown: ^2.0.0 mdast-util-gfm-autolink-literal: ^2.0.0 @@ -7428,13 +7074,13 @@ __metadata: mdast-util-gfm-table: ^2.0.0 mdast-util-gfm-task-list-item: ^2.0.0 mdast-util-to-markdown: ^2.0.0 - checksum: 62039d2f682ae3821ea1c999454863d31faf94d67eb9b746589c7e136076d7fb35fabc67e02f025c7c26fd7919331a0ee1aabfae24f565d9a6a9ebab3371c626 + checksum: ecdadc0b46608d03eea53366cfee8c9441ddacc49fe4e12934eff8fea06f9377d2679d9d9e43177295c09c8d7def5f48d739f99b0f6144a0e228a77f5a1c76bc languageName: node linkType: hard "mdast-util-mdx-expression@npm:^2.0.0": - version: 2.0.0 - resolution: "mdast-util-mdx-expression@npm:2.0.0" + version: 2.0.1 + resolution: "mdast-util-mdx-expression@npm:2.0.1" dependencies: "@types/estree-jsx": ^1.0.0 "@types/hast": ^3.0.0 @@ -7442,13 +7088,13 @@ __metadata: devlop: ^1.0.0 mdast-util-from-markdown: ^2.0.0 mdast-util-to-markdown: ^2.0.0 - checksum: 4e1183000e183e07a7264e192889b4fd57372806103031c71b9318967f85fd50a5dd0f92ef14f42c331e77410808f5de3341d7bc8ad4ee91b7fa8f0a30043a8a + checksum: 6af56b06bde3ab971129db9855dcf0d31806c70b3b052d7a90a5499a366b57ffd0c2efca67d281c448c557298ba7e3e61bd07133733b735440840dd339b28e19 languageName: node linkType: hard "mdast-util-mdx-jsx@npm:^3.0.0": - version: 3.1.2 - resolution: "mdast-util-mdx-jsx@npm:3.1.2" + version: 3.2.0 + resolution: "mdast-util-mdx-jsx@npm:3.2.0" dependencies: "@types/estree-jsx": ^1.0.0 "@types/hast": ^3.0.0 @@ -7460,10 +7106,9 @@ __metadata: mdast-util-to-markdown: ^2.0.0 parse-entities: ^4.0.0 stringify-entities: ^4.0.0 - unist-util-remove-position: ^5.0.0 unist-util-stringify-position: ^4.0.0 vfile-message: ^4.0.0 - checksum: 33cb8a657702d5bb8d3f658d158f448c45147664cdb2475501a1c467e3a167d75842546296a06f758f07cce4d2a6ba1add405dbdb6caa145a6980c9782e411e2 + checksum: 224f5f6ad247f0f2622ee36c82ac7a4c6a60c31850de4056bf95f531bd2f7ec8943ef34dfe8a8375851f65c07e4913c4f33045d703df4ff4d11b2de5a088f7f9 languageName: node linkType: hard @@ -7509,18 +7154,19 @@ __metadata: linkType: hard "mdast-util-to-markdown@npm:^2.0.0": - version: 2.1.0 - resolution: "mdast-util-to-markdown@npm:2.1.0" + version: 2.1.2 + resolution: "mdast-util-to-markdown@npm:2.1.2" dependencies: "@types/mdast": ^4.0.0 "@types/unist": ^3.0.0 longest-streak: ^3.0.0 mdast-util-phrasing: ^4.0.0 mdast-util-to-string: ^4.0.0 + micromark-util-classify-character: ^2.0.0 micromark-util-decode-string: ^2.0.0 unist-util-visit: ^5.0.0 zwitch: ^2.0.0 - checksum: 3a2cf3957e23b34e2e092e6e76ae72ee0b8745955bd811baba6814cf3a3d916c3fd52264b4b58f3bb3d512a428f84a1e998b6fc7e28434e388a9ae8fb6a9c173 + checksum: 288d152bd50c00632e6e01c610bb904a220d1e226c8086c40627877959746f83ab0b872f4150cb7d910198953b1bf756e384ac3fee3e7b0ddb4517f9084c5803 languageName: node linkType: hard @@ -7555,8 +7201,8 @@ __metadata: linkType: hard "micromark-core-commonmark@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-core-commonmark@npm:2.0.1" + version: 2.0.3 + resolution: "micromark-core-commonmark@npm:2.0.3" dependencies: decode-named-character-reference: ^1.0.0 devlop: ^1.0.0 @@ -7574,7 +7220,7 @@ __metadata: micromark-util-subtokenize: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 6a9891cc883a531e090dc8dab6669945f3df9448e84216a8f2a91f9258281e6abea5ae3940fde2bd77a57dc3e0d67f2add6762aed63a378f37b09eaf7e7426c4 + checksum: cfb0fd9c895f86a4e9344f7f0344fe6bd1018945798222835248146a42430b8c7bc0b2857af574cf4e1b4ce4e5c1a35a1479942421492e37baddde8de85814dc languageName: node linkType: hard @@ -7621,15 +7267,15 @@ __metadata: linkType: hard "micromark-extension-gfm-table@npm:^2.0.0": - version: 2.1.0 - resolution: "micromark-extension-gfm-table@npm:2.1.0" + version: 2.1.1 + resolution: "micromark-extension-gfm-table@npm:2.1.1" dependencies: devlop: ^1.0.0 micromark-factory-space: ^2.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 249d695f5f8bd222a0d8a774ec78ea2a2d624cb50a4d008092a54aa87dad1f9d540e151d29696cf849eb1cee380113c4df722aebb3b425a214832a2de5dea1d7 + checksum: 16a59c8c2381c8418d9cf36c605abb0b66cfebaad07e09c4c9b113298d13e0c517b652885529fcb74d149afec3f6e8ab065fd27a900073d5ec0a1d8f0c51b593 languageName: node linkType: hard @@ -7672,195 +7318,195 @@ __metadata: linkType: hard "micromark-factory-destination@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-destination@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-destination@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: d36e65ed1c072ff4148b016783148ba7c68a078991154625723e24bda3945160268fb91079fb28618e1613c2b6e70390a8ddc544c45410288aa27b413593071a + checksum: 9c4baa9ca2ed43c061bbf40ddd3d85154c2a0f1f485de9dea41d7dd2ad994ebb02034a003b2c1dbe228ba83a0576d591f0e90e0bf978713f84ee7d7f3aa98320 languageName: node linkType: hard "micromark-factory-label@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-label@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-label@npm:2.0.1" dependencies: devlop: ^1.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: c021dbd0ed367610d35f2bae21209bc804d1a6d1286ffce458fd6a717f4d7fe581a7cba7d5c2d7a63757c44eb927c80d6a571d6ea7969fae1b48ab6461d109c4 + checksum: bd03f5a75f27cdbf03b894ddc5c4480fc0763061fecf9eb927d6429233c930394f223969a99472df142d570c831236134de3dc23245d23d9f046f9d0b623b5c2 languageName: node linkType: hard "micromark-factory-space@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-space@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-space@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 4ffdcdc2f759887bbb356500cb460b3915ecddcb5d85c3618d7df68ad05d13ed02b1153ee1845677b7d8126df8f388288b84fcf0d943bd9c92bcc71cd7222e37 + checksum: 1bd68a017c1a66f4787506660c1e1c5019169aac3b1cb075d49ac5e360e0b2065e984d4e1d6e9e52a9d44000f2fa1c98e66a743d7aae78b4b05616bf3242ed71 languageName: node linkType: hard "micromark-factory-title@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-title@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-title@npm:2.0.1" dependencies: micromark-factory-space: ^2.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 39e1ac23af3554e6e652e56065579bc7faf21ade7b8704b29c175871b4152b7109b790bb3cae0f7e088381139c6bac9553b8400772c3d322e4fa635f813a3578 + checksum: b4d2e4850a8ba0dff25ce54e55a3eb0d43dda88a16293f53953153288f9d84bcdfa8ca4606b2cfbb4f132ea79587bbb478a73092a349f893f5264fbcdbce2ee1 languageName: node linkType: hard "micromark-factory-whitespace@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-factory-whitespace@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-factory-whitespace@npm:2.0.1" dependencies: micromark-factory-space: ^2.0.0 micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 9587c2546d1a58b4d5472b42adf05463f6212d0449455285662d63cd8eaed89c6b159ac82713fcee5f9dd88628c24307d9533cccd8971a2f3f4d48702f8f850a + checksum: 67b3944d012a42fee9e10e99178254a04d48af762b54c10a50fcab988688799993efb038daf9f5dbc04001a97b9c1b673fc6f00e6a56997877ab25449f0c8650 languageName: node linkType: hard "micromark-util-character@npm:^2.0.0": - version: 2.1.0 - resolution: "micromark-util-character@npm:2.1.0" + version: 2.1.1 + resolution: "micromark-util-character@npm:2.1.1" dependencies: micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 36ee910f84077cf16626fa618cfe46ac25956b3242e3166b8e8e98c5a8c524af7e5bf3d70822264b1fd2d297a36104a7eb7e3462c19c28353eaca7b0d8717594 + checksum: e9e409efe4f2596acd44587e8591b722bfc041c1577e8fe0d9c007a4776fb800f9b3637a22862ad2ba9489f4bdf72bb547fce5767dbbfe0a5e6760e2a21c6495 languageName: node linkType: hard "micromark-util-chunked@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-chunked@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-chunked@npm:2.0.1" dependencies: micromark-util-symbol: ^2.0.0 - checksum: 324f95cccdae061332a8241936eaba6ef0782a1e355bac5c607ad2564fd3744929be7dc81651315a2921535747a33243e6a5606bcb64b7a56d49b6d74ea1a3d4 + checksum: f8cb2a67bcefe4bd2846d838c97b777101f0043b9f1de4f69baf3e26bb1f9885948444e3c3aec66db7595cad8173bd4567a000eb933576c233d54631f6323fe4 languageName: node linkType: hard "micromark-util-classify-character@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-classify-character@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-classify-character@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 086e52904deffebb793fb1c08c94aabb8901f76958142dfc3a6282890ebaa983b285e69bd602b9d507f1b758ed38e75a994d2ad9fbbefa7de2584f67a16af405 + checksum: 4d8bbe3a6dbf69ac0fc43516866b5bab019fe3f4568edc525d4feaaaf78423fa54e6b6732b5bccbeed924455279a3758ffc9556954aafb903982598a95a02704 languageName: node linkType: hard "micromark-util-combine-extensions@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-combine-extensions@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-combine-extensions@npm:2.0.1" dependencies: micromark-util-chunked: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 107c47700343f365b4ed81551e18bc3458b573c500e56ac052b2490bd548adc475216e41d2271633a8867fac66fc22ba3e0a2d74a31ed79b9870ca947eb4e3ba + checksum: 5d22fb9ee37e8143adfe128a72b50fa09568c2cc553b3c76160486c96dbbb298c5802a177a10a215144a604b381796071b5d35be1f2c2b2ee17995eda92f0c8e languageName: node linkType: hard "micromark-util-decode-numeric-character-reference@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.1" + version: 2.0.2 + resolution: "micromark-util-decode-numeric-character-reference@npm:2.0.2" dependencies: micromark-util-symbol: ^2.0.0 - checksum: 9512507722efd2033a9f08715eeef787fbfe27e23edf55db21423d46d82ab46f76c89b4f960be3f5e50a2d388d89658afc0647989cf256d051e9ea01277a1adb + checksum: ee11c8bde51e250e302050474c4a2adca094bca05c69f6cdd241af12df285c48c88d19ee6e022b9728281c280be16328904adca994605680c43af56019f4b0b6 languageName: node linkType: hard "micromark-util-decode-string@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-decode-string@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-decode-string@npm:2.0.1" dependencies: decode-named-character-reference: ^1.0.0 micromark-util-character: ^2.0.0 micromark-util-decode-numeric-character-reference: ^2.0.0 micromark-util-symbol: ^2.0.0 - checksum: a75daf32a4a6b549e9f19b4d833ebfeb09a32a9a1f9ce50f35dec6b6a3e4f9f121f49024ba7f9c91c55ebe792f7c7a332fc9604795181b6a612637df0df5b959 + checksum: e9546ae53f9b5a4f9aa6aaf3e750087100d3429485ca80dbacec99ff2bb15a406fa7d93784a0fc2fe05ad7296b9295e75160ef71faec9e90110b7be2ae66241a languageName: node linkType: hard "micromark-util-encode@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-encode@npm:2.0.0" - checksum: 853a3f33fce72aaf4ffa60b7f2b6fcfca40b270b3466e1b96561b02185d2bd8c01dd7948bc31a24ac014f4cc854e545ca9a8e9cf7ea46262f9d24c9e88551c66 + version: 2.0.1 + resolution: "micromark-util-encode@npm:2.0.1" + checksum: be890b98e78dd0cdd953a313f4148c4692cc2fb05533e56fef5f421287d3c08feee38ca679f318e740530791fc251bfe8c80efa926fcceb4419b269c9343d226 languageName: node linkType: hard "micromark-util-html-tag-name@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-html-tag-name@npm:2.0.0" - checksum: d786d4486f93eb0ac5b628779809ca97c5dc60f3c9fc03eb565809831db181cf8cb7f05f9ac76852f3eb35461af0f89fa407b46f3a03f4f97a96754d8dc540d8 + version: 2.0.1 + resolution: "micromark-util-html-tag-name@npm:2.0.1" + checksum: dea365f5ad28ad74ff29fcb581f7b74fc1f80271c5141b3b2bc91c454cbb6dfca753f28ae03730d657874fcbd89d0494d0e3965dfdca06d9855f467c576afa9d languageName: node linkType: hard "micromark-util-normalize-identifier@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-normalize-identifier@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-normalize-identifier@npm:2.0.1" dependencies: micromark-util-symbol: ^2.0.0 - checksum: b36da2d3fd102053dadd953ce5c558328df12a63a8ac0e5aad13d4dda8e43b6a5d4a661baafe0a1cd8a260bead4b4a8e6e0e74193dd651e8484225bd4f4e68aa + checksum: 1eb9a289d7da067323df9fdc78bfa90ca3207ad8fd893ca02f3133e973adcb3743b233393d23d95c84ccaf5d220ae7f5a28402a644f135dcd4b8cfa60a7b5f84 languageName: node linkType: hard "micromark-util-resolve-all@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-resolve-all@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-resolve-all@npm:2.0.1" dependencies: micromark-util-types: ^2.0.0 - checksum: 31fe703b85572cb3f598ebe32750e59516925c7ff1f66cfe6afaebe0771a395a9eaa770787f2523d3c46082ea80e6c14f83643303740b3d650af7c96ebd30ccc + checksum: 9275f3ddb6c26f254dd2158e66215d050454b279707a7d9ce5a3cd0eba23201021cedcb78ae1a746c1b23227dcc418ee40dd074ade195359506797a5493550cc languageName: node linkType: hard "micromark-util-sanitize-uri@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-sanitize-uri@npm:2.0.0" + version: 2.0.1 + resolution: "micromark-util-sanitize-uri@npm:2.0.1" dependencies: micromark-util-character: ^2.0.0 micromark-util-encode: ^2.0.0 micromark-util-symbol: ^2.0.0 - checksum: ea4c28bbffcf2430e9aff2d18554296789a8b0a1f54ac24020d1dde76624a7f93e8f2a83e88cd5a846b6d2c4287b71b1142d1b89fa7f1b0363a9b33711a141fe + checksum: d01517840c17de67aaa0b0f03bfe05fac8a41d99723cd8ce16c62f6810e99cd3695364a34c335485018e5e2c00e69031744630a1b85c6868aa2f2ca1b36daa2f languageName: node linkType: hard "micromark-util-subtokenize@npm:^2.0.0": - version: 2.0.1 - resolution: "micromark-util-subtokenize@npm:2.0.1" + version: 2.1.0 + resolution: "micromark-util-subtokenize@npm:2.1.0" dependencies: devlop: ^1.0.0 micromark-util-chunked: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: 5d338883ad8889c63f9b262b9cae0c02a42088201981d820ae7af7aa6d38fab6585b89fd4cf2206a46a7c4002e41ee6c70e1a3e0ceb3ad8b7adcffaf166b1511 + checksum: 2e194bc8a5279d256582020500e5072a95c1094571be49043704343032e1fffbe09c862ef9c131cf5c762e296ddb54ff8bc767b3786a798524a68d1db6942934 languageName: node linkType: hard "micromark-util-symbol@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-symbol@npm:2.0.0" - checksum: fa4a05bff575d9fbf0ad96a1013003e3bb6087ed6b34b609a141b6c0d2137b57df594aca409a95f4c5fda199f227b56a7d8b1f82cea0768df161d8a3a3660764 + version: 2.0.1 + resolution: "micromark-util-symbol@npm:2.0.1" + checksum: fb7346950550bc85a55793dda94a8b3cb3abc068dbd7570d1162db7aee803411d06c0a5de4ae59cd945f46143bdeadd4bba02a02248fa0d18cc577babaa00044 languageName: node linkType: hard "micromark-util-types@npm:^2.0.0": - version: 2.0.0 - resolution: "micromark-util-types@npm:2.0.0" - checksum: 819fef3ab5770c37893d2a60381fb2694396c8d22803b6e103c830c3a1bc1490363c2b0470bb2acaaddad776dfbc2fc1fcfde39cb63c4f54d95121611672e3d0 + version: 2.0.2 + resolution: "micromark-util-types@npm:2.0.2" + checksum: 884f7974839e4bc6d2bd662e57c973a9164fd5c0d8fe16cddf07472b86a7e6726747c00674952c0321d17685d700cd3295e9f58a842a53acdf6c6d55ab051aab languageName: node linkType: hard "micromark@npm:^4.0.0": - version: 4.0.0 - resolution: "micromark@npm:4.0.0" + version: 4.0.2 + resolution: "micromark@npm:4.0.2" dependencies: "@types/debug": ^4.0.0 debug: ^4.0.0 @@ -7879,21 +7525,11 @@ __metadata: micromark-util-subtokenize: ^2.0.0 micromark-util-symbol: ^2.0.0 micromark-util-types: ^2.0.0 - checksum: b84ab5ab1a0b28c063c52e9c2c9d7d44b954507235c10c9492d66e0b38f7de24bf298f914a1fbdf109f2a57a88cf0412de217c84cfac5fd60e3e42a74dbac085 - languageName: node - linkType: hard - -"micromatch@npm:^4.0.4, micromatch@npm:^4.0.5": - version: 4.0.5 - resolution: "micromatch@npm:4.0.5" - dependencies: - braces: ^3.0.2 - picomatch: ^2.3.1 - checksum: 02a17b671c06e8fefeeb6ef996119c1e597c942e632a21ef589154f23898c9c6a9858526246abb14f8bca6e77734aa9dcf65476fca47cedfb80d9577d52843fc + checksum: 5306c15dd12f543755bc627fc361d4255dfc430e7af6069a07ac0eacc338fbd761fe8e93f02a8bfab6097bab12ee903192fe31389222459d5029242a5aaba3b8 languageName: node linkType: hard -"micromatch@npm:~4.0.7": +"micromatch@npm:^4.0.8": version: 4.0.8 resolution: "micromatch@npm:4.0.8" dependencies: @@ -7958,15 +7594,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^9.0.1": - version: 9.0.3 - resolution: "minimatch@npm:9.0.3" - dependencies: - brace-expansion: ^2.0.1 - checksum: 253487976bf485b612f16bf57463520a14f512662e592e95c571afdab1442a6a6864b6c88f248ce6fc4ff0b6de04ac7aa6c8bb51e868e99d1d65eb0658a708b5 - languageName: node - linkType: hard - "minimatch@npm:^9.0.4": version: 9.0.5 resolution: "minimatch@npm:9.0.5" @@ -7992,18 +7619,18 @@ __metadata: languageName: node linkType: hard -"minipass-fetch@npm:^3.0.0": - version: 3.0.4 - resolution: "minipass-fetch@npm:3.0.4" +"minipass-fetch@npm:^4.0.0": + version: 4.0.1 + resolution: "minipass-fetch@npm:4.0.1" dependencies: encoding: ^0.1.13 minipass: ^7.0.3 minipass-sized: ^1.0.3 - minizlib: ^2.1.2 + minizlib: ^3.0.1 dependenciesMeta: encoding: optional: true - checksum: af7aad15d5c128ab1ebe52e043bdf7d62c3c6f0cecb9285b40d7b395e1375b45dcdfd40e63e93d26a0e8249c9efd5c325c65575aceee192883970ff8cb11364a + checksum: 3dfca705ce887ca9ff14d73e8d8593996dea1a1ecd8101fdbb9c10549d1f9670bc8fb66ad0192769ead4c2dc01b4f9ca1cf567ded365adff17827a303b948140 languageName: node linkType: hard @@ -8043,36 +7670,19 @@ __metadata: languageName: node linkType: hard -"minipass@npm:^5.0.0": - version: 5.0.0 - resolution: "minipass@npm:5.0.0" - checksum: 425dab288738853fded43da3314a0b5c035844d6f3097a8e3b5b29b328da8f3c1af6fc70618b32c29ff906284cf6406b6841376f21caaadd0793c1d5a6a620ea - languageName: node - linkType: hard - -"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3": - version: 7.0.4 - resolution: "minipass@npm:7.0.4" - checksum: 87585e258b9488caf2e7acea242fd7856bbe9a2c84a7807643513a338d66f368c7d518200ad7b70a508664d408aa000517647b2930c259a8b1f9f0984f344a21 +"minipass@npm:^5.0.0 || ^6.0.2 || ^7.0.0, minipass@npm:^7.0.2, minipass@npm:^7.0.3, minipass@npm:^7.0.4, minipass@npm:^7.1.2": + version: 7.1.2 + resolution: "minipass@npm:7.1.2" + checksum: 2bfd325b95c555f2b4d2814d49325691c7bee937d753814861b0b49d5edcda55cbbf22b6b6a60bb91eddac8668771f03c5ff647dcd9d0f798e9548b9cdc46ee3 languageName: node linkType: hard -"minizlib@npm:^2.1.1, minizlib@npm:^2.1.2": - version: 2.1.2 - resolution: "minizlib@npm:2.1.2" +"minizlib@npm:^3.0.1": + version: 3.0.2 + resolution: "minizlib@npm:3.0.2" dependencies: - minipass: ^3.0.0 - yallist: ^4.0.0 - checksum: f1fdeac0b07cf8f30fcf12f4b586795b97be856edea22b5e9072707be51fc95d41487faec3f265b42973a304fe3a64acd91a44a3826a963e37b37bafde0212c3 - languageName: node - linkType: hard - -"mkdirp@npm:^1.0.3": - version: 1.0.4 - resolution: "mkdirp@npm:1.0.4" - bin: - mkdirp: bin/cmd.js - checksum: a96865108c6c3b1b8e1d5e9f11843de1e077e57737602de1b82030815f311be11f96f09cce59bd5b903d0b29834733e5313f9301e3ed6d6f6fba2eae0df4298f + minipass: ^7.1.2 + checksum: 493bed14dcb6118da7f8af356a8947cf1473289c09658e5aabd69a737800a8c3b1736fb7d7931b722268a9c9bc038a6d53c049b6a6af24b34a121823bb709996 languageName: node linkType: hard @@ -8110,14 +7720,7 @@ __metadata: languageName: node linkType: hard -"ms@npm:2.1.2": - version: 2.1.2 - resolution: "ms@npm:2.1.2" - checksum: 673cdb2c3133eb050c745908d8ce632ed2c02d85640e2edb3ace856a2266a813b30c613569bf3354fdf4ea7d1a1494add3bfa95e2713baa27d0c2c71fc44f58f - languageName: node - linkType: hard - -"ms@npm:^2.1.1": +"ms@npm:^2.1.1, ms@npm:^2.1.3": version: 2.1.3 resolution: "ms@npm:2.1.3" checksum: aa92de608021b242401676e35cfa5aa42dd70cbdc082b916da7fb925c542173e36bce97ea3e804923fe92c0ad991434e4a38327e15a1b5b5f945d66df615ae6d @@ -8135,12 +7738,12 @@ __metadata: languageName: node linkType: hard -"nanoid@npm:^3.3.7": - version: 3.3.7 - resolution: "nanoid@npm:3.3.7" +"nanoid@npm:^3.3.8": + version: 3.3.11 + resolution: "nanoid@npm:3.3.11" bin: nanoid: bin/nanoid.cjs - checksum: d36c427e530713e4ac6567d488b489a36582ef89da1d6d4e3b87eded11eb10d7042a877958c6f104929809b2ab0bafa17652b076cdf84324aa75b30b722204f2 + checksum: 3be20d8866a57a6b6d218e82549711c8352ed969f9ab3c45379da28f405363ad4c9aeb0b39e9abc101a529ca65a72ff9502b00bf74a912c4b64a9d62dfd26c29 languageName: node linkType: hard @@ -8151,10 +7754,10 @@ __metadata: languageName: node linkType: hard -"negotiator@npm:^0.6.3": - version: 0.6.3 - resolution: "negotiator@npm:0.6.3" - checksum: b8ffeb1e262eff7968fc90a2b6767b04cfd9842582a9d0ece0af7049537266e7b2506dfb1d107a32f06dd849ab2aea834d5830f7f4d0e5cb7d36e1ae55d021d9 +"negotiator@npm:^1.0.0": + version: 1.0.0 + resolution: "negotiator@npm:1.0.0" + checksum: 20ebfe79b2d2e7cf9cbc8239a72662b584f71164096e6e8896c8325055497c96f6b80cd22c258e8a2f2aa382a787795ec3ee8b37b422a302c7d4381b0d5ecfbb languageName: node linkType: hard @@ -8188,22 +7791,22 @@ __metadata: linkType: hard "node-gyp@npm:latest": - version: 10.0.1 - resolution: "node-gyp@npm:10.0.1" + version: 11.2.0 + resolution: "node-gyp@npm:11.2.0" dependencies: env-paths: ^2.2.0 exponential-backoff: ^3.1.1 - glob: ^10.3.10 graceful-fs: ^4.2.6 - make-fetch-happen: ^13.0.0 - nopt: ^7.0.0 - proc-log: ^3.0.0 + make-fetch-happen: ^14.0.3 + nopt: ^8.0.0 + proc-log: ^5.0.0 semver: ^7.3.5 - tar: ^6.1.2 - which: ^4.0.0 + tar: ^7.4.3 + tinyglobby: ^0.2.12 + which: ^5.0.0 bin: node-gyp: bin/node-gyp.js - checksum: 60a74e66d364903ce02049966303a57f898521d139860ac82744a5fdd9f7b7b3b61f75f284f3bfe6e6add3b8f1871ce305a1d41f775c7482de837b50c792223f + checksum: 2536282ba81f8a94b29482d3622b6ab298611440619e46de4512a6f32396a68b5530357c474b859787069d84a4c537d99e0c71078cce5b9f808bf84eeb78e8fb languageName: node linkType: hard @@ -8216,28 +7819,21 @@ __metadata: languageName: node linkType: hard -"node-releases@npm:^2.0.14": - version: 2.0.14 - resolution: "node-releases@npm:2.0.14" - checksum: 59443a2f77acac854c42d321bf1b43dea0aef55cd544c6a686e9816a697300458d4e82239e2d794ea05f7bbbc8a94500332e2d3ac3f11f52e4b16cbe638b3c41 - languageName: node - linkType: hard - -"node-releases@npm:^2.0.18": - version: 2.0.18 - resolution: "node-releases@npm:2.0.18" - checksum: ef55a3d853e1269a6d6279b7692cd6ff3e40bc74947945101138745bfdc9a5edabfe72cb19a31a8e45752e1910c4c65c77d931866af6357f242b172b7283f5b3 +"node-releases@npm:^2.0.19": + version: 2.0.19 + resolution: "node-releases@npm:2.0.19" + checksum: 917dbced519f48c6289a44830a0ca6dc944c3ee9243c468ebd8515a41c97c8b2c256edb7f3f750416bc37952cc9608684e6483c7b6c6f39f6bd8d86c52cfe658 languageName: node linkType: hard -"nopt@npm:^7.0.0": - version: 7.2.0 - resolution: "nopt@npm:7.2.0" +"nopt@npm:^8.0.0": + version: 8.1.0 + resolution: "nopt@npm:8.1.0" dependencies: - abbrev: ^2.0.0 + abbrev: ^3.0.0 bin: nopt: bin/nopt.js - checksum: a9c0f57fb8cb9cc82ae47192ca2b7ef00e199b9480eed202482c962d61b59a7fbe7541920b2a5839a97b42ee39e288c0aed770e38057a608d7f579389dfde410 + checksum: 49cfd3eb6f565e292bf61f2ff1373a457238804d5a5a63a8d786c923007498cba89f3648e3b952bc10203e3e7285752abf5b14eaf012edb821e84f24e881a92a languageName: node linkType: hard @@ -8277,11 +7873,11 @@ __metadata: linkType: hard "npm-run-path@npm:^5.1.0": - version: 5.2.0 - resolution: "npm-run-path@npm:5.2.0" + version: 5.3.0 + resolution: "npm-run-path@npm:5.3.0" dependencies: path-key: ^4.0.0 - checksum: c5325e016014e715689c4014f7e0be16cc4cbf529f32a1723e511bc4689b5f823b704d2bca61ac152ce2bda65e0205dc8b3ba0ec0f5e4c3e162d302f6f5b9efb + checksum: ae8e7a89da9594fb9c308f6555c73f618152340dcaae423e5fb3620026fefbec463618a8b761920382d666fa7a2d8d240b6fe320e8a6cdd54dc3687e2b659d25 languageName: node linkType: hard @@ -8323,8 +7919,8 @@ __metadata: linkType: hard "nyc@npm:^17.0.0": - version: 17.0.0 - resolution: "nyc@npm:17.0.0" + version: 17.1.0 + resolution: "nyc@npm:17.1.0" dependencies: "@istanbuljs/load-nyc-config": ^1.0.0 "@istanbuljs/schema": ^0.1.2 @@ -8333,7 +7929,7 @@ __metadata: decamelize: ^1.2.0 find-cache-dir: ^3.2.0 find-up: ^4.1.0 - foreground-child: ^2.0.0 + foreground-child: ^3.3.0 get-package-type: ^0.1.0 glob: ^7.1.6 istanbul-lib-coverage: ^3.0.0 @@ -8355,7 +7951,7 @@ __metadata: yargs: ^15.0.2 bin: nyc: bin/nyc.js - checksum: e10fe59393ef569745ed4e9026bc5f5e84fe81cac43c82b348c9faad8a1b71fd3a880fb5f379b4be55269d3a541b7c6c14e7b90adb925973ebc9c9593f60a1af + checksum: 725b396a1e2e35fc7c347090c80b48473e4da038c18bef9890c5c1bc42549de6b8400437c286caf8a0fc439f5e2b25327af7a878f121677084be30bc25bcbbbb languageName: node linkType: hard @@ -8373,10 +7969,10 @@ __metadata: languageName: node linkType: hard -"object-inspect@npm:^1.13.1, object-inspect@npm:^1.9.0": - version: 1.13.1 - resolution: "object-inspect@npm:1.13.1" - checksum: 7d9fa9221de3311dcb5c7c307ee5dc011cdd31dc43624b7c184b3840514e118e05ef0002be5388304c416c0eb592feb46e983db12577fc47e47d5752fbbfb61f +"object-inspect@npm:^1.13.3": + version: 1.13.4 + resolution: "object-inspect@npm:1.13.4" + checksum: 582810c6a8d2ef988ea0a39e69e115a138dad8f42dd445383b394877e5816eb4268489f316a6f74ee9c4e0a984b3eab1028e3e79d62b1ed67c726661d55c7a8b languageName: node linkType: hard @@ -8387,37 +7983,29 @@ __metadata: languageName: node linkType: hard -"object.assign@npm:^4.1.4, object.assign@npm:^4.1.5": - version: 4.1.5 - resolution: "object.assign@npm:4.1.5" +"object.assign@npm:^4.1.4, object.assign@npm:^4.1.7": + version: 4.1.7 + resolution: "object.assign@npm:4.1.7" dependencies: - call-bind: ^1.0.5 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 - has-symbols: ^1.0.3 + es-object-atoms: ^1.0.0 + has-symbols: ^1.1.0 object-keys: ^1.1.1 - checksum: f9aeac0541661370a1fc86e6a8065eb1668d3e771f7dbb33ee54578201336c057b21ee61207a186dd42db0c62201d91aac703d20d12a79fc79c353eed44d4e25 + checksum: 60e07d2651cf4f5528c485f1aa4dbded9b384c47d80e8187cefd11320abb1aebebf78df5483451dfa549059f8281c21f7b4bf7d19e9e5e97d8d617df0df298de languageName: node linkType: hard -"object.entries@npm:^1.1.8": - version: 1.1.8 - resolution: "object.entries@npm:1.1.8" +"object.entries@npm:^1.1.9": + version: 1.1.9 + resolution: "object.entries@npm:1.1.9" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.4 define-properties: ^1.2.1 - es-object-atoms: ^1.0.0 - checksum: 5314877cb637ef3437a30bba61d9bacdb3ce74bf73ac101518be0633c37840c8cc67407edb341f766e8093b3d7516d5c3358f25adfee4a2c697c0ec4c8491907 - languageName: node - linkType: hard - -"object.fromentries@npm:^2.0.7": - version: 2.0.7 - resolution: "object.fromentries@npm:2.0.7" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: 7341ce246e248b39a431b87a9ddd331ff52a454deb79afebc95609f94b1f8238966cf21f52188f2a353f0fdf83294f32f1ebf1f7826aae915ebad21fd0678065 + es-object-atoms: ^1.1.1 + checksum: 0ab2ef331c4d6a53ff600a5d69182948d453107c3a1f7fd91bc29d387538c2aba21d04949a74f57c21907208b1f6fb175567fd1f39f1a7a4046ba1bca762fb41 languageName: node linkType: hard @@ -8433,38 +8021,26 @@ __metadata: languageName: node linkType: hard -"object.groupby@npm:^1.0.1": - version: 1.0.2 - resolution: "object.groupby@npm:1.0.2" +"object.groupby@npm:^1.0.3": + version: 1.0.3 + resolution: "object.groupby@npm:1.0.3" dependencies: - array.prototype.filter: ^1.0.3 - call-bind: ^1.0.5 + call-bind: ^1.0.7 define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.0.0 - checksum: 5f95c2a3a5f60a1a8c05fdd71455110bd3d5e6af0350a20b133d8cd70f9c3385d5c7fceb6a17b940c3c61752d9c202d10d5e2eb5ce73b89002656a87e7bf767a - languageName: node - linkType: hard - -"object.values@npm:^1.1.6, object.values@npm:^1.1.7": - version: 1.1.7 - resolution: "object.values@npm:1.1.7" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: f3e4ae4f21eb1cc7cebb6ce036d4c67b36e1c750428d7b7623c56a0db90edced63d08af8a316d81dfb7c41a3a5fa81b05b7cc9426e98d7da986b1682460f0777 + es-abstract: ^1.23.2 + checksum: 0d30693ca3ace29720bffd20b3130451dca7a56c612e1926c0a1a15e4306061d84410bdb1456be2656c5aca53c81b7a3661eceaa362db1bba6669c2c9b6d1982 languageName: node linkType: hard -"object.values@npm:^1.2.0": - version: 1.2.0 - resolution: "object.values@npm:1.2.0" +"object.values@npm:^1.1.6, object.values@npm:^1.2.0, object.values@npm:^1.2.1": + version: 1.2.1 + resolution: "object.values@npm:1.2.1" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 es-object-atoms: ^1.0.0 - checksum: 51fef456c2a544275cb1766897f34ded968b22adfc13ba13b5e4815fdaf4304a90d42a3aee114b1f1ede048a4890381d47a5594d84296f2767c6a0364b9da8fa + checksum: f9b9a2a125ccf8ded29414d7c056ae0d187b833ee74919821fc60d7e216626db220d9cb3cf33f965c84aaaa96133626ca13b80f3c158b673976dc8cfcfcd26bb languageName: node linkType: hard @@ -8505,16 +8081,16 @@ __metadata: linkType: hard "optionator@npm:^0.9.3": - version: 0.9.3 - resolution: "optionator@npm:0.9.3" + version: 0.9.4 + resolution: "optionator@npm:0.9.4" dependencies: - "@aashutoshrathi/word-wrap": ^1.2.3 deep-is: ^0.1.3 fast-levenshtein: ^2.0.6 levn: ^0.4.1 prelude-ls: ^1.2.1 type-check: ^0.4.0 - checksum: 09281999441f2fe9c33a5eeab76700795365a061563d66b098923eb719251a42bdbe432790d35064d0816ead9296dbeb1ad51a733edf4167c96bd5d0882e428a + word-wrap: ^1.2.5 + checksum: ecbd010e3dc73e05d239976422d9ef54a82a13f37c11ca5911dff41c98a6c7f0f163b27f922c37e7f8340af9d36febd3b6e9cef508f3339d4c393d7276d716bb languageName: node linkType: hard @@ -8549,6 +8125,17 @@ __metadata: languageName: node linkType: hard +"own-keys@npm:^1.0.1": + version: 1.0.1 + resolution: "own-keys@npm:1.0.1" + dependencies: + get-intrinsic: ^1.2.6 + object-keys: ^1.1.1 + safe-push-apply: ^1.0.0 + checksum: cc9dd7d85c4ccfbe8109fce307d581ac7ede7b26de892b537873fbce2dc6a206d89aea0630dbb98e47ce0873517cefeaa7be15fcf94aaf4764a3b34b474a5b61 + languageName: node + linkType: hard + "p-limit@npm:^2.2.0": version: 2.3.0 resolution: "p-limit@npm:2.3.0" @@ -8603,6 +8190,13 @@ __metadata: languageName: node linkType: hard +"p-map@npm:^7.0.2": + version: 7.0.3 + resolution: "p-map@npm:7.0.3" + checksum: 8c92d533acf82f0d12f7e196edccff773f384098bbb048acdd55a08778ce4fc8889d8f1bde72969487bd96f9c63212698d79744c20bedfce36c5b00b46d369f8 + languageName: node + linkType: hard + "p-try@npm:^2.0.0": version: 2.2.0 resolution: "p-try@npm:2.2.0" @@ -8622,6 +8216,13 @@ __metadata: languageName: node linkType: hard +"package-json-from-dist@npm:^1.0.0": + version: 1.0.1 + resolution: "package-json-from-dist@npm:1.0.1" + checksum: 58ee9538f2f762988433da00e26acc788036914d57c71c246bf0be1b60cdbd77dd60b6a3e1a30465f0b248aeb80079e0b34cb6050b1dfa18c06953bb1cbc7602 + languageName: node + linkType: hard + "parent-module@npm:^1.0.0": version: 1.0.1 resolution: "parent-module@npm:1.0.1" @@ -8632,18 +8233,17 @@ __metadata: linkType: hard "parse-entities@npm:^4.0.0": - version: 4.0.1 - resolution: "parse-entities@npm:4.0.1" + version: 4.0.2 + resolution: "parse-entities@npm:4.0.2" dependencies: "@types/unist": ^2.0.0 - character-entities: ^2.0.0 character-entities-legacy: ^3.0.0 character-reference-invalid: ^2.0.0 decode-named-character-reference: ^1.0.0 is-alphanumerical: ^2.0.0 is-decimal: ^2.0.0 is-hexadecimal: ^2.0.0 - checksum: 32a6ff5b9acb9d2c4d71537308521fd265e685b9215691df73feedd9edfe041bb6da9f89bd0c35c4a2bc7d58e3e76e399bb6078c2fd7d2a343ff1dd46edbf1bd + checksum: db22b46da1a62af00409c929ac49fbd306b5ebf0dbacf4646d2ae2b58616ef90a40eedc282568a3cf740fac2a7928bc97146973a628f6977ca274dedc2ad6edc languageName: node linkType: hard @@ -8694,13 +8294,13 @@ __metadata: languageName: node linkType: hard -"path-scurry@npm:^1.10.1": - version: 1.10.1 - resolution: "path-scurry@npm:1.10.1" +"path-scurry@npm:^1.11.1": + version: 1.11.1 + resolution: "path-scurry@npm:1.11.1" dependencies: - lru-cache: ^9.1.1 || ^10.0.0 + lru-cache: ^10.2.0 minipass: ^5.0.0 || ^6.0.2 || ^7.0.0 - checksum: e2557cff3a8fb8bc07afdd6ab163a92587884f9969b05bbbaf6fe7379348bfb09af9ed292af12ed32398b15fb443e81692047b786d1eeb6d898a51eb17ed7d90 + checksum: 890d5abcd593a7912dcce7cf7c6bf7a0b5648e3dee6caf0712c126ca0a65c7f3d7b9d769072a4d1baf370f61ce493ab5b038d59988688e0c5f3f646ee3c69023 languageName: node linkType: hard @@ -8739,17 +8339,10 @@ __metadata: languageName: node linkType: hard -"picocolors@npm:^1.0.0": - version: 1.0.0 - resolution: "picocolors@npm:1.0.0" - checksum: a2e8092dd86c8396bdba9f2b5481032848525b3dc295ce9b57896f931e63fc16f79805144321f72976383fc249584672a75cc18d6777c6b757603f372f745981 - languageName: node - linkType: hard - -"picocolors@npm:^1.0.1": - version: 1.0.1 - resolution: "picocolors@npm:1.0.1" - checksum: fa68166d1f56009fc02a34cdfd112b0dd3cf1ef57667ac57281f714065558c01828cdf4f18600ad6851cbe0093952ed0660b1e0156bddf2184b6aaf5817553a5 +"picocolors@npm:^1.0.0, picocolors@npm:^1.1.1": + version: 1.1.1 + resolution: "picocolors@npm:1.1.1" + checksum: e1cf46bf84886c79055fdfa9dcb3e4711ad259949e3565154b004b260cd356c5d54b31a1437ce9782624bf766272fe6b0154f5f0c744fb7af5d454d2b60db045 languageName: node linkType: hard @@ -8760,7 +8353,14 @@ __metadata: languageName: node linkType: hard -"pidtree@npm:~0.6.0": +"picomatch@npm:^4.0.2": + version: 4.0.2 + resolution: "picomatch@npm:4.0.2" + checksum: a7a5188c954f82c6585720e9143297ccd0e35ad8072231608086ca950bee672d51b0ef676254af0788205e59bd4e4deb4e7708769226bed725bf13370a7d1464 + languageName: node + linkType: hard + +"pidtree@npm:^0.6.0": version: 0.6.0 resolution: "pidtree@npm:0.6.0" bin: @@ -8777,9 +8377,9 @@ __metadata: linkType: hard "pirates@npm:^4.0.1": - version: 4.0.6 - resolution: "pirates@npm:4.0.6" - checksum: 46a65fefaf19c6f57460388a5af9ab81e3d7fd0e7bc44ca59d753cb5c4d0df97c6c6e583674869762101836d68675f027d60f841c105d72734df9dfca97cbcc6 + version: 4.0.7 + resolution: "pirates@npm:4.0.7" + checksum: 3dcbaff13c8b5bc158416feb6dc9e49e3c6be5fddc1ea078a05a73ef6b85d79324bbb1ef59b954cdeff000dbf000c1d39f32dc69310c7b78fbada5171b583e40 languageName: node linkType: hard @@ -8793,9 +8393,9 @@ __metadata: linkType: hard "possible-typed-array-names@npm:^1.0.0": - version: 1.0.0 - resolution: "possible-typed-array-names@npm:1.0.0" - checksum: b32d403ece71e042385cc7856385cecf1cd8e144fa74d2f1de40d1e16035dba097bc189715925e79b67bdd1472796ff168d3a90d296356c9c94d272d5b95f3ae + version: 1.1.0 + resolution: "possible-typed-array-names@npm:1.1.0" + checksum: cfcd4f05264eee8fd184cd4897a17890561d1d473434b43ab66ad3673d9c9128981ec01e0cb1d65a52cd6b1eebfb2eae1e53e39b2e0eca86afc823ede7a4f41b languageName: node linkType: hard @@ -8836,7 +8436,7 @@ __metadata: languageName: node linkType: hard -"postcss-load-config@npm:^4.0.1": +"postcss-load-config@npm:^4.0.2": version: 4.0.2 resolution: "postcss-load-config@npm:4.0.2" dependencies: @@ -8854,24 +8454,24 @@ __metadata: languageName: node linkType: hard -"postcss-nested@npm:^6.0.1": - version: 6.0.1 - resolution: "postcss-nested@npm:6.0.1" +"postcss-nested@npm:^6.2.0": + version: 6.2.0 + resolution: "postcss-nested@npm:6.2.0" dependencies: - postcss-selector-parser: ^6.0.11 + postcss-selector-parser: ^6.1.1 peerDependencies: postcss: ^8.2.14 - checksum: 7ddb0364cd797de01e38f644879189e0caeb7ea3f78628c933d91cc24f327c56d31269384454fc02ecaf503b44bfa8e08870a7c4cc56b23bc15640e1894523fa + checksum: 2c86ecf2d0ce68f27c87c7e24ae22dc6dd5515a89fcaf372b2627906e11f5c1f36e4a09e4c15c20fd4a23d628b3d945c35839f44496fbee9a25866258006671b languageName: node linkType: hard -"postcss-selector-parser@npm:^6.0.11": - version: 6.0.15 - resolution: "postcss-selector-parser@npm:6.0.15" +"postcss-selector-parser@npm:^6.1.1, postcss-selector-parser@npm:^6.1.2": + version: 6.1.2 + resolution: "postcss-selector-parser@npm:6.1.2" dependencies: cssesc: ^3.0.0 util-deprecate: ^1.0.2 - checksum: 57decb94152111004f15e27b9c61131eb50ee10a3288e7fcf424cebbb4aba82c2817517ae718f8b5d704ee9e02a638d4a2acff8f47685c295a33ecee4fd31055 + checksum: ce9440fc42a5419d103f4c7c1847cb75488f3ac9cbe81093b408ee9701193a509f664b4d10a2b4d82c694ee7495e022f8f482d254f92b7ffd9ed9dea696c6f84 languageName: node linkType: hard @@ -8882,25 +8482,14 @@ __metadata: languageName: node linkType: hard -"postcss@npm:^8.4.23, postcss@npm:^8.4.32": - version: 8.4.34 - resolution: "postcss@npm:8.4.34" - dependencies: - nanoid: ^3.3.7 - picocolors: ^1.0.0 - source-map-js: ^1.0.2 - checksum: 46c32b51810a23060288c86fdb5195237c497f952c674167fd1cbb3f0c628389a3fd48ae0b289447e5368b4abbc95f81e2d318bfdc5554063b2a7e8192e1a540 - languageName: node - linkType: hard - -"postcss@npm:^8.4.41": - version: 8.4.41 - resolution: "postcss@npm:8.4.41" +"postcss@npm:^8.4.41, postcss@npm:^8.4.43, postcss@npm:^8.4.47": + version: 8.5.3 + resolution: "postcss@npm:8.5.3" dependencies: - nanoid: ^3.3.7 - picocolors: ^1.0.1 - source-map-js: ^1.2.0 - checksum: f865894929eb0f7fc2263811cc853c13b1c75103028b3f4f26df777e27b201f1abe21cb4aa4c2e901c80a04f6fb325ee22979688fe55a70e2ea82b0a517d3b6f + nanoid: ^3.3.8 + picocolors: ^1.1.1 + source-map-js: ^1.2.1 + checksum: da574620eb84ff60e65e1d8fc6bd5ad87a19101a23d0aba113c653434161543918229a0f673d89efb3b6d4906287eb04b957310dbcf4cbebacad9d1312711461 languageName: node linkType: hard @@ -8912,14 +8501,14 @@ __metadata: linkType: hard "prettier-plugin-tailwindcss@npm:^0.6.6": - version: 0.6.6 - resolution: "prettier-plugin-tailwindcss@npm:0.6.6" + version: 0.6.11 + resolution: "prettier-plugin-tailwindcss@npm:0.6.11" peerDependencies: "@ianvs/prettier-plugin-sort-imports": "*" "@prettier/plugin-pug": "*" "@shopify/prettier-plugin-liquid": "*" "@trivago/prettier-plugin-sort-imports": "*" - "@zackad/prettier-plugin-twig-melody": "*" + "@zackad/prettier-plugin-twig": "*" prettier: ^3.0 prettier-plugin-astro: "*" prettier-plugin-css-order: "*" @@ -8941,7 +8530,7 @@ __metadata: optional: true "@trivago/prettier-plugin-sort-imports": optional: true - "@zackad/prettier-plugin-twig-melody": + "@zackad/prettier-plugin-twig": optional: true prettier-plugin-astro: optional: true @@ -8965,16 +8554,16 @@ __metadata: optional: true prettier-plugin-svelte: optional: true - checksum: b78a1a9c47e23f8ff1fb61456f8b0710eabce573f0d644cde6480e103a5d4c2b266ad09e890604a3bb8703669b304efdd2ac3cd1db47beae95792c212b513585 + checksum: b626a09248e94d39b0ac26fe26323503faaf11aeae9a741b8a93ed65ee27ac12eadc00fa8f7113a0c54f88df59aa0136e4efb830d47ab204808a21b16e7d9b84 languageName: node linkType: hard "prettier@npm:^3.3.3": - version: 3.3.3 - resolution: "prettier@npm:3.3.3" + version: 3.5.3 + resolution: "prettier@npm:3.5.3" bin: prettier: bin/prettier.cjs - checksum: bc8604354805acfdde6106852d14b045bb20827ad76a5ffc2455b71a8257f94de93f17f14e463fe844808d2ccc87248364a5691488a3304f1031326e62d9276e + checksum: 61e97bb8e71a95d8f9c71f1fd5229c9aaa9d1e184dedb12399f76aa802fb6fdc8954ecac9df25a7f82ee7311cf8ddbd06baf5507388fc98e5b44036cc6a88a1b languageName: node linkType: hard @@ -8985,19 +8574,19 @@ __metadata: languageName: node linkType: hard -"proc-log@npm:^3.0.0": - version: 3.0.0 - resolution: "proc-log@npm:3.0.0" - checksum: 02b64e1b3919e63df06f836b98d3af002b5cd92655cab18b5746e37374bfb73e03b84fe305454614b34c25b485cc687a9eebdccf0242cda8fda2475dd2c97e02 +"proc-log@npm:^5.0.0": + version: 5.0.0 + resolution: "proc-log@npm:5.0.0" + checksum: c78b26ecef6d5cce4a7489a1e9923d7b4b1679028c8654aef0463b27f4a90b0946cd598f55799da602895c52feb085ec76381d007ab8dcceebd40b89c2f9dfe0 languageName: node linkType: hard "process-on-spawn@npm:^1.0.0": - version: 1.0.0 - resolution: "process-on-spawn@npm:1.0.0" + version: 1.1.0 + resolution: "process-on-spawn@npm:1.1.0" dependencies: fromentries: ^1.2.0 - checksum: 597769e3db6a8e2cb1cd64a952bbc150220588debac31c7cf1a9f620ce981e25583d8d70848d8a14953577608512984a8808c3be77e09af8ebdcdc14ec23a295 + checksum: 3621c774784f561879ff0ae52b1ad06465278e8fcaa7144fe4daab7f481edfa81c51894356d497c29c4026c5efe04540932400209fe53180f32c4743cd572069 languageName: node linkType: hard @@ -9043,10 +8632,10 @@ __metadata: languageName: node linkType: hard -"property-information@npm:^6.0.0": - version: 6.4.1 - resolution: "property-information@npm:6.4.1" - checksum: d9eece5f14b6fea9e6a1fa65fba88554956a58825eb9a5c8327bffee06bcc265117eaeae901871e8e8a5caec8d5e05ce39ab6872d5cef3b49a6f07815b6ef285 +"property-information@npm:^7.0.0": + version: 7.0.0 + resolution: "property-information@npm:7.0.0" + checksum: c12fbaf841d9e7ea2215139ec53a7fe848b1a214d486623b64b7b56de3e4e601ec8211b0fb10dabda86de67ae06aaa328d9bdafe9c6b64e7f23d78f0dbf4bbfc languageName: node linkType: hard @@ -9071,43 +8660,29 @@ __metadata: languageName: node linkType: hard -"psl@npm:^1.1.33": - version: 1.9.0 - resolution: "psl@npm:1.9.0" - checksum: 20c4277f640c93d393130673f392618e9a8044c6c7bf61c53917a0fddb4952790f5f362c6c730a9c32b124813e173733f9895add8d26f566ed0ea0654b2e711d - languageName: node - linkType: hard - "pump@npm:^3.0.0": - version: 3.0.0 - resolution: "pump@npm:3.0.0" + version: 3.0.2 + resolution: "pump@npm:3.0.2" dependencies: end-of-stream: ^1.1.0 once: ^1.3.1 - checksum: e42e9229fba14732593a718b04cb5e1cfef8254544870997e0ecd9732b189a48e1256e4e5478148ecb47c8511dca2b09eae56b4d0aad8009e6fac8072923cfc9 + checksum: e0c4216874b96bd25ddf31a0b61a5613e26cc7afa32379217cf39d3915b0509def3565f5f6968fafdad2894c8bbdbd67d340e84f3634b2a29b950cffb6442d9f languageName: node linkType: hard -"punycode@npm:^2.1.0, punycode@npm:^2.1.1": +"punycode@npm:^2.1.0": version: 2.3.1 resolution: "punycode@npm:2.3.1" checksum: bb0a0ceedca4c3c57a9b981b90601579058903c62be23c5e8e843d2c2d4148a3ecf029d5133486fb0e1822b098ba8bba09e89d6b21742d02fa26bda6441a6fb2 languageName: node linkType: hard -"qs@npm:6.10.4": - version: 6.10.4 - resolution: "qs@npm:6.10.4" +"qs@npm:6.14.0": + version: 6.14.0 + resolution: "qs@npm:6.14.0" dependencies: - side-channel: ^1.0.4 - checksum: 31e4fedd759d01eae52dde6692abab175f9af3e639993c5caaa513a2a3607b34d8058d3ae52ceeccf37c3025f22ed5e90e9ddd6c2537e19c0562ddd10dc5b1eb - languageName: node - linkType: hard - -"querystringify@npm:^2.1.1": - version: 2.2.0 - resolution: "querystringify@npm:2.2.0" - checksum: 5641ea231bad7ef6d64d9998faca95611ed4b11c2591a8cae741e178a974f6a8e0ebde008475259abe1621cb15e692404e6b6626e927f7b849d5c09392604b15 + side-channel: ^1.1.0 + checksum: 189b52ad4e9a0da1a16aff4c58b2a554a8dad9bd7e287c7da7446059b49ca2e33a49e570480e8be406b87fccebf134f51c373cbce36c8c83859efa0c9b71d635 languageName: node linkType: hard @@ -9138,15 +8713,15 @@ __metadata: linkType: hard "react-dropzone@npm:^14.2.3": - version: 14.2.3 - resolution: "react-dropzone@npm:14.2.3" + version: 14.3.8 + resolution: "react-dropzone@npm:14.3.8" dependencies: - attr-accept: ^2.2.2 - file-selector: ^0.6.0 + attr-accept: ^2.2.4 + file-selector: ^2.1.0 prop-types: ^15.8.1 peerDependencies: react: ">= 16.8 || 18.0.0" - checksum: 174b744d5ca898cf3d84ec1aeb6cef5211c446697e45dc8ece8287a03d291f8d07253206d5a1247ef156fd385d65e7de666d4d5c2986020b8543b8f2434e8b40 + checksum: c80ef459fe478f79aa48878f41404f43718602b2ade8416ff824914259cdd6ce1eb9ae8f02fa9769215c49ce98b8ab2c89cf6b0a00c0a7937aa3888471d67d98 languageName: node linkType: hard @@ -9158,10 +8733,11 @@ __metadata: linkType: hard "react-markdown@npm:^9.0.1": - version: 9.0.1 - resolution: "react-markdown@npm:9.0.1" + version: 9.1.0 + resolution: "react-markdown@npm:9.1.0" dependencies: "@types/hast": ^3.0.0 + "@types/mdast": ^4.0.0 devlop: ^1.0.0 hast-util-to-jsx-runtime: ^2.0.0 html-url-attributes: ^3.0.0 @@ -9174,44 +8750,44 @@ __metadata: peerDependencies: "@types/react": ">=18" react: ">=18" - checksum: ca1daa650d48b84a5a9771683cdb3f3d2d418247ce0faf73ede3207c65f2a21cdebb9df37afda67f6fc8f0f0a7b9ce00eb239781954a4d6c7ad88ea4df068add + checksum: d78ca3b6bea23a3383d067ad8eb0aec3a22a4500663f32773be45ad38572b5f1b823184fafc85c1a35ff6290bddea42b003dc7bdfc02cf20a9e0163ecd3ea605 languageName: node linkType: hard -"react-refresh@npm:^0.14.2": - version: 0.14.2 - resolution: "react-refresh@npm:0.14.2" - checksum: d80db4bd40a36dab79010dc8aa317a5b931f960c0d83c4f3b81f0552cbcf7f29e115b84bb7908ec6a1eb67720fff7023084eff73ece8a7ddc694882478464382 +"react-refresh@npm:^0.17.0": + version: 0.17.0 + resolution: "react-refresh@npm:0.17.0" + checksum: e9d23a70543edde879263976d7909cd30c6f698fa372a1240142cf7c8bf99e0396378b9c07c2d39c3a10261d7ba07dc49f990cd8f1ac7b88952e99040a0be5e9 languageName: node linkType: hard "react-router-dom@npm:^6.26.1": - version: 6.26.1 - resolution: "react-router-dom@npm:6.26.1" + version: 6.30.0 + resolution: "react-router-dom@npm:6.30.0" dependencies: - "@remix-run/router": 1.19.1 - react-router: 6.26.1 + "@remix-run/router": 1.23.0 + react-router: 6.30.0 peerDependencies: react: ">=16.8" react-dom: ">=16.8" - checksum: e393ab62e3239585d44d598e6bc8cc138ac8353f3dc46262680c6ad83dea35773662ada2f1c353921a05c37d1f369c0a2cb097848a6210689e9b6076550c7de0 + checksum: e1172127e52c4585397e7312e59e15f6547004f4d6f73631f1a991417a9ad7e272eb11ba248fcc7a9aeb93e7c425ebb2f959f54c7b01c7b119d13f94192c5e74 languageName: node linkType: hard -"react-router@npm:6.26.1, react-router@npm:^6.26.1": - version: 6.26.1 - resolution: "react-router@npm:6.26.1" +"react-router@npm:6.30.0, react-router@npm:^6.26.1": + version: 6.30.0 + resolution: "react-router@npm:6.30.0" dependencies: - "@remix-run/router": 1.19.1 + "@remix-run/router": 1.23.0 peerDependencies: react: ">=16.8" - checksum: 810949febc1bf2a6f8dd65f4c0532a2413d0532df462b3e78891aec81dca5a088d387b32c9922cde52bd9770f32263590993cab2383c94ddc1cdb50a20fd7adc + checksum: 35fe773f62b1943cf5ae65056e5d1acbfba50a572a908699881889f073639d42e0d839df107af48a7a058254d59505699b5d68831a714fe6d9aafce982403458 languageName: node linkType: hard "react-select@npm:^5.8.0": - version: 5.8.0 - resolution: "react-select@npm:5.8.0" + version: 5.10.1 + resolution: "react-select@npm:5.10.1" dependencies: "@babel/runtime": ^7.12.0 "@emotion/cache": ^11.4.0 @@ -9221,24 +8797,24 @@ __metadata: memoize-one: ^6.0.0 prop-types: ^15.6.0 react-transition-group: ^4.3.0 - use-isomorphic-layout-effect: ^1.1.2 + use-isomorphic-layout-effect: ^1.2.0 peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 - checksum: c8398cc0aefb5ee5438b6176c86676e2d3fed7457c16b0769f423a0da0ae431a7df25c2cadf13b709700882b8ebd80a58b1e557fec3e22ad3cbf60164ca9e745 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + checksum: b3050e46936416b024a8e76821beeb8b4275c1835db689aaaf1c8c3cae8afdade17a1711b53b63c72109b1c12711d64234285ea1468e95aaf33d5e6b0bb356e3 languageName: node linkType: hard "react-tooltip@npm:^5.28.0": - version: 5.28.0 - resolution: "react-tooltip@npm:5.28.0" + version: 5.28.1 + resolution: "react-tooltip@npm:5.28.1" dependencies: "@floating-ui/dom": ^1.6.1 classnames: ^2.3.0 peerDependencies: react: ">=16.14.0" react-dom: ">=16.14.0" - checksum: 4d1efae0fbd39ec7f1414bb325582cca2f7541a8d464b61bf3a7c5e119821868aa2d47c28509e7ea3cca844a9655feb56fc466def0edaa8db07ce427146ef3b0 + checksum: dce1fb5c144f97b8bcecf81ba65c0737d5ba1d09cdca552b93426784ae5421da09e94e970da6452a1f9fe0487c3d3216d0b66e6371d70e72384be785dbabb210 languageName: node linkType: hard @@ -9284,18 +8860,19 @@ __metadata: languageName: node linkType: hard -"reflect.getprototypeof@npm:^1.0.4": - version: 1.0.5 - resolution: "reflect.getprototypeof@npm:1.0.5" +"reflect.getprototypeof@npm:^1.0.6, reflect.getprototypeof@npm:^1.0.9": + version: 1.0.10 + resolution: "reflect.getprototypeof@npm:1.0.10" dependencies: - call-bind: ^1.0.5 + call-bind: ^1.0.8 define-properties: ^1.2.1 - es-abstract: ^1.22.3 - es-errors: ^1.0.0 - get-intrinsic: ^1.2.3 - globalthis: ^1.0.3 - which-builtin-type: ^1.1.3 - checksum: c7176be030b89b9e55882f4da3288de5ffd187c528d79870e27d2c8a713a82b3fa058ca2d0c9da25f6d61240e2685c42d7daa32cdf3d431d8207ee1b9ed30993 + es-abstract: ^1.23.9 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + get-intrinsic: ^1.2.7 + get-proto: ^1.0.1 + which-builtin-type: ^1.2.1 + checksum: ccc5debeb66125e276ae73909cecb27e47c35d9bb79d9cc8d8d055f008c58010ab8cb401299786e505e4aab733a64cba9daf5f312a58e96a43df66adad221870 languageName: node linkType: hard @@ -9306,26 +8883,17 @@ __metadata: languageName: node linkType: hard -"regexp.prototype.flags@npm:^1.5.1": - version: 1.5.1 - resolution: "regexp.prototype.flags@npm:1.5.1" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - set-function-name: ^2.0.0 - checksum: 869edff00288442f8d7fa4c9327f91d85f3b3acf8cbbef9ea7a220345cf23e9241b6def9263d2c1ebcf3a316b0aa52ad26a43a84aa02baca3381717b3e307f47 - languageName: node - linkType: hard - -"regexp.prototype.flags@npm:^1.5.2": - version: 1.5.2 - resolution: "regexp.prototype.flags@npm:1.5.2" +"regexp.prototype.flags@npm:^1.5.3": + version: 1.5.4 + resolution: "regexp.prototype.flags@npm:1.5.4" dependencies: - call-bind: ^1.0.6 + call-bind: ^1.0.8 define-properties: ^1.2.1 es-errors: ^1.3.0 - set-function-name: ^2.0.1 - checksum: d7f333667d5c564e2d7a97c56c3075d64c722c9bb51b2b4df6822b2e8096d623a5e63088fb4c83df919b6951ef8113841de8b47de7224872fa6838bc5d8a7d64 + get-proto: ^1.0.1 + gopd: ^1.2.0 + set-function-name: ^2.0.2 + checksum: 18cb667e56cb328d2dda569d7f04e3ea78f2683135b866d606538cf7b1d4271f7f749f09608c877527799e6cf350e531368f3c7a20ccd1bb41048a48926bdeeb languageName: node linkType: hard @@ -9339,8 +8907,8 @@ __metadata: linkType: hard "remark-gfm@npm:^4.0.0": - version: 4.0.0 - resolution: "remark-gfm@npm:4.0.0" + version: 4.0.1 + resolution: "remark-gfm@npm:4.0.1" dependencies: "@types/mdast": ^4.0.0 mdast-util-gfm: ^3.0.0 @@ -9348,7 +8916,7 @@ __metadata: remark-parse: ^11.0.0 remark-stringify: ^11.0.0 unified: ^11.0.0 - checksum: 84bea84e388061fbbb697b4b666089f5c328aa04d19dc544c229b607446bc10902e46b67b9594415a1017bbbd7c811c1f0c30d36682c6d1a6718b66a1558261b + checksum: b278f51c4496f15ad868b72bf2eb2066c23a0892b5885544d3a4c233c964d44e51a0efe22d3fb33db4fbac92aefd51bb33453b8e73077b041a12b8269a02c17d languageName: node linkType: hard @@ -9365,15 +8933,15 @@ __metadata: linkType: hard "remark-rehype@npm:^11.0.0": - version: 11.1.0 - resolution: "remark-rehype@npm:11.1.0" + version: 11.1.2 + resolution: "remark-rehype@npm:11.1.2" dependencies: "@types/hast": ^3.0.0 "@types/mdast": ^4.0.0 mdast-util-to-hast: ^13.0.0 unified: ^11.0.0 vfile: ^6.0.0 - checksum: f0c731f0ab92a122e7f9c9bcbd10d6a31fdb99f0ea3595d232ddd9f9d11a308c4ec0aff4d56e1d0d256042dfad7df23b9941e50b5038da29786959a5926814e1 + checksum: 6eab55cb3464ec01d8e002cc9fe02ae57f48162899693fd53b5ba553ac8699dae7b55fce9df7131a5981313b19b495d6fbfa98a9d6bd243e7485591364d9b5b3 languageName: node linkType: hard @@ -9411,13 +8979,6 @@ __metadata: languageName: node linkType: hard -"requires-port@npm:^1.0.0": - version: 1.0.0 - resolution: "requires-port@npm:1.0.0" - checksum: eee0e303adffb69be55d1a214e415cf42b7441ae858c76dfc5353148644f6fd6e698926fc4643f510d5c126d12a705e7c8ed7e38061113bdf37547ab356797ff - languageName: node - linkType: hard - "resolve-from@npm:^4.0.0": version: 4.0.0 resolution: "resolve-from@npm:4.0.0" @@ -9439,16 +9000,16 @@ __metadata: languageName: node linkType: hard -"resolve@npm:^1.1.7, resolve@npm:^1.19.0, resolve@npm:^1.22.2, resolve@npm:^1.22.4": - version: 1.22.8 - resolution: "resolve@npm:1.22.8" +"resolve@npm:^1.1.7, resolve@npm:^1.19.0, resolve@npm:^1.22.4, resolve@npm:^1.22.8": + version: 1.22.10 + resolution: "resolve@npm:1.22.10" dependencies: - is-core-module: ^2.13.0 + is-core-module: ^2.16.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: f8a26958aa572c9b064562750b52131a37c29d072478ea32e129063e2da7f83e31f7f11e7087a18225a8561cfe8d2f0df9dbea7c9d331a897571c0a2527dbb4c + checksum: ab7a32ff4046fcd7c6fdd525b24a7527847d03c3650c733b909b01b757f92eb23510afa9cc3e9bf3f26a3e073b48c88c706dfd4c1d2fb4a16a96b73b6328ddcf languageName: node linkType: hard @@ -9465,16 +9026,16 @@ __metadata: languageName: node linkType: hard -"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.2#~builtin, resolve@patch:resolve@^1.22.4#~builtin": - version: 1.22.8 - resolution: "resolve@patch:resolve@npm%3A1.22.8#~builtin::version=1.22.8&hash=07638b" +"resolve@patch:resolve@^1.1.7#~builtin, resolve@patch:resolve@^1.19.0#~builtin, resolve@patch:resolve@^1.22.4#~builtin, resolve@patch:resolve@^1.22.8#~builtin": + version: 1.22.10 + resolution: "resolve@patch:resolve@npm%3A1.22.10#~builtin::version=1.22.10&hash=07638b" dependencies: - is-core-module: ^2.13.0 + is-core-module: ^2.16.0 path-parse: ^1.0.7 supports-preserve-symlinks-flag: ^1.0.0 bin: resolve: bin/resolve - checksum: 5479b7d431cacd5185f8db64bfcb7286ae5e31eb299f4c4f404ad8aa6098b77599563ac4257cb2c37a42f59dfc06a1bec2bcf283bb448f319e37f0feb9a09847 + checksum: 8aac1e4e4628bd00bf4b94b23de137dd3fe44097a8d528fd66db74484be929936e20c696e1a3edf4488f37e14180b73df6f600992baea3e089e8674291f16c9d languageName: node linkType: hard @@ -9519,20 +9080,13 @@ __metadata: linkType: hard "reusify@npm:^1.0.4": - version: 1.0.4 - resolution: "reusify@npm:1.0.4" - checksum: c3076ebcc22a6bc252cb0b9c77561795256c22b757f40c0d8110b1300723f15ec0fc8685e8d4ea6d7666f36c79ccc793b1939c748bf36f18f542744a4e379fcc - languageName: node - linkType: hard - -"rfdc@npm:^1.3.0": - version: 1.3.1 - resolution: "rfdc@npm:1.3.1" - checksum: d5d1e930aeac7e0e0a485f97db1356e388bdbeff34906d206fe524dd5ada76e95f186944d2e68307183fdc39a54928d4426bbb6734851692cfe9195efba58b79 + version: 1.1.0 + resolution: "reusify@npm:1.1.0" + checksum: 64cb3142ac5e9ad689aca289585cb41d22521f4571f73e9488af39f6b1bd62f0cbb3d65e2ecc768ec6494052523f473f1eb4b55c3e9014b3590c17fc6a03e22a languageName: node linkType: hard -"rfdc@npm:^1.4.1": +"rfdc@npm:^1.3.0, rfdc@npm:^1.4.1": version: 1.4.1 resolution: "rfdc@npm:1.4.1" checksum: 3b05bd55062c1d78aaabfcea43840cdf7e12099968f368e9a4c3936beb744adb41cbdb315eac6d4d8c6623005d6f87fdf16d8a10e1ff3722e84afea7281c8d13 @@ -9550,24 +9104,31 @@ __metadata: languageName: node linkType: hard -"rollup@npm:^4.2.0": - version: 4.9.6 - resolution: "rollup@npm:4.9.6" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.9.6 - "@rollup/rollup-android-arm64": 4.9.6 - "@rollup/rollup-darwin-arm64": 4.9.6 - "@rollup/rollup-darwin-x64": 4.9.6 - "@rollup/rollup-linux-arm-gnueabihf": 4.9.6 - "@rollup/rollup-linux-arm64-gnu": 4.9.6 - "@rollup/rollup-linux-arm64-musl": 4.9.6 - "@rollup/rollup-linux-riscv64-gnu": 4.9.6 - "@rollup/rollup-linux-x64-gnu": 4.9.6 - "@rollup/rollup-linux-x64-musl": 4.9.6 - "@rollup/rollup-win32-arm64-msvc": 4.9.6 - "@rollup/rollup-win32-ia32-msvc": 4.9.6 - "@rollup/rollup-win32-x64-msvc": 4.9.6 - "@types/estree": 1.0.5 +"rollup@npm:^4.20.0": + version: 4.40.0 + resolution: "rollup@npm:4.40.0" + dependencies: + "@rollup/rollup-android-arm-eabi": 4.40.0 + "@rollup/rollup-android-arm64": 4.40.0 + "@rollup/rollup-darwin-arm64": 4.40.0 + "@rollup/rollup-darwin-x64": 4.40.0 + "@rollup/rollup-freebsd-arm64": 4.40.0 + "@rollup/rollup-freebsd-x64": 4.40.0 + "@rollup/rollup-linux-arm-gnueabihf": 4.40.0 + "@rollup/rollup-linux-arm-musleabihf": 4.40.0 + "@rollup/rollup-linux-arm64-gnu": 4.40.0 + "@rollup/rollup-linux-arm64-musl": 4.40.0 + "@rollup/rollup-linux-loongarch64-gnu": 4.40.0 + "@rollup/rollup-linux-powerpc64le-gnu": 4.40.0 + "@rollup/rollup-linux-riscv64-gnu": 4.40.0 + "@rollup/rollup-linux-riscv64-musl": 4.40.0 + "@rollup/rollup-linux-s390x-gnu": 4.40.0 + "@rollup/rollup-linux-x64-gnu": 4.40.0 + "@rollup/rollup-linux-x64-musl": 4.40.0 + "@rollup/rollup-win32-arm64-msvc": 4.40.0 + "@rollup/rollup-win32-ia32-msvc": 4.40.0 + "@rollup/rollup-win32-x64-msvc": 4.40.0 + "@types/estree": 1.0.7 fsevents: ~2.3.2 dependenciesMeta: "@rollup/rollup-android-arm-eabi": @@ -9578,62 +9139,9 @@ __metadata: optional: true "@rollup/rollup-darwin-x64": optional: true - "@rollup/rollup-linux-arm-gnueabihf": - optional: true - "@rollup/rollup-linux-arm64-gnu": - optional: true - "@rollup/rollup-linux-arm64-musl": - optional: true - "@rollup/rollup-linux-riscv64-gnu": - optional: true - "@rollup/rollup-linux-x64-gnu": - optional: true - "@rollup/rollup-linux-x64-musl": - optional: true - "@rollup/rollup-win32-arm64-msvc": - optional: true - "@rollup/rollup-win32-ia32-msvc": - optional: true - "@rollup/rollup-win32-x64-msvc": - optional: true - fsevents: - optional: true - bin: - rollup: dist/bin/rollup - checksum: cdc0bdd41ee2d3fe7f01df26f5a85921caf46ffe0ae118b2f3deebdf569e8b1c1800b8eee04960425e67aecbd9ccdd37bcdb92595866adb3968d223a07e9b7e6 - languageName: node - linkType: hard - -"rollup@npm:^4.20.0": - version: 4.21.0 - resolution: "rollup@npm:4.21.0" - dependencies: - "@rollup/rollup-android-arm-eabi": 4.21.0 - "@rollup/rollup-android-arm64": 4.21.0 - "@rollup/rollup-darwin-arm64": 4.21.0 - "@rollup/rollup-darwin-x64": 4.21.0 - "@rollup/rollup-linux-arm-gnueabihf": 4.21.0 - "@rollup/rollup-linux-arm-musleabihf": 4.21.0 - "@rollup/rollup-linux-arm64-gnu": 4.21.0 - "@rollup/rollup-linux-arm64-musl": 4.21.0 - "@rollup/rollup-linux-powerpc64le-gnu": 4.21.0 - "@rollup/rollup-linux-riscv64-gnu": 4.21.0 - "@rollup/rollup-linux-s390x-gnu": 4.21.0 - "@rollup/rollup-linux-x64-gnu": 4.21.0 - "@rollup/rollup-linux-x64-musl": 4.21.0 - "@rollup/rollup-win32-arm64-msvc": 4.21.0 - "@rollup/rollup-win32-ia32-msvc": 4.21.0 - "@rollup/rollup-win32-x64-msvc": 4.21.0 - "@types/estree": 1.0.5 - fsevents: ~2.3.2 - dependenciesMeta: - "@rollup/rollup-android-arm-eabi": - optional: true - "@rollup/rollup-android-arm64": - optional: true - "@rollup/rollup-darwin-arm64": + "@rollup/rollup-freebsd-arm64": optional: true - "@rollup/rollup-darwin-x64": + "@rollup/rollup-freebsd-x64": optional: true "@rollup/rollup-linux-arm-gnueabihf": optional: true @@ -9643,10 +9151,14 @@ __metadata: optional: true "@rollup/rollup-linux-arm64-musl": optional: true + "@rollup/rollup-linux-loongarch64-gnu": + optional: true "@rollup/rollup-linux-powerpc64le-gnu": optional: true "@rollup/rollup-linux-riscv64-gnu": optional: true + "@rollup/rollup-linux-riscv64-musl": + optional: true "@rollup/rollup-linux-s390x-gnu": optional: true "@rollup/rollup-linux-x64-gnu": @@ -9663,7 +9175,7 @@ __metadata: optional: true bin: rollup: dist/bin/rollup - checksum: 6c3d49345518eb44259c5e4d82357ec6da04e80e7cbd5ec908e006a1d82f220d00b849a19f45cf589a57dbd76a5b4a3f7c1a1215473eb0fdc31bfcaa826e1a06 + checksum: 4826d7bbb48147403023133b6d8a67f792efe3463def637713bed392b5d7fc9903b4b86de44c58420304beca9e8d108268036e9081fff675af6c01822ef6b2b9 languageName: node linkType: hard @@ -9677,35 +9189,24 @@ __metadata: linkType: hard "rxjs@npm:^7.5.1, rxjs@npm:^7.8.1": - version: 7.8.1 - resolution: "rxjs@npm:7.8.1" + version: 7.8.2 + resolution: "rxjs@npm:7.8.2" dependencies: tslib: ^2.1.0 - checksum: de4b53db1063e618ec2eca0f7965d9137cabe98cf6be9272efe6c86b47c17b987383df8574861bcced18ebd590764125a901d5506082be84a8b8e364bf05f119 - languageName: node - linkType: hard - -"safe-array-concat@npm:^1.0.1": - version: 1.1.0 - resolution: "safe-array-concat@npm:1.1.0" - dependencies: - call-bind: ^1.0.5 - get-intrinsic: ^1.2.2 - has-symbols: ^1.0.3 - isarray: ^2.0.5 - checksum: 5c71eaa999168ee7474929f1cd3aae80f486353a651a094d9968936692cf90aa065224929a6486dcda66334a27dce4250a83612f9e0fef6dced1a925d3ac7296 + checksum: 2f233d7c832a6c255dabe0759014d7d9b1c9f1cb2f2f0d59690fd11c883c9826ea35a51740c06ab45b6ade0d9087bde9192f165cba20b6730d344b831ef80744 languageName: node linkType: hard -"safe-array-concat@npm:^1.1.2": - version: 1.1.2 - resolution: "safe-array-concat@npm:1.1.2" +"safe-array-concat@npm:^1.1.3": + version: 1.1.3 + resolution: "safe-array-concat@npm:1.1.3" dependencies: - call-bind: ^1.0.7 - get-intrinsic: ^1.2.4 - has-symbols: ^1.0.3 + call-bind: ^1.0.8 + call-bound: ^1.0.2 + get-intrinsic: ^1.2.6 + has-symbols: ^1.1.0 isarray: ^2.0.5 - checksum: a3b259694754ddfb73ae0663829e396977b99ff21cbe8607f35a469655656da8e271753497e59da8a7575baa94d2e684bea3e10ddd74ba046c0c9b4418ffa0c4 + checksum: 00f6a68140e67e813f3ad5e73e6dedcf3e42a9fa01f04d44b0d3f7b1f4b257af876832a9bfc82ac76f307e8a6cc652e3cf95876048a26cbec451847cf6ae3707 languageName: node linkType: hard @@ -9716,25 +9217,24 @@ __metadata: languageName: node linkType: hard -"safe-regex-test@npm:^1.0.0": - version: 1.0.2 - resolution: "safe-regex-test@npm:1.0.2" +"safe-push-apply@npm:^1.0.0": + version: 1.0.0 + resolution: "safe-push-apply@npm:1.0.0" dependencies: - call-bind: ^1.0.5 - get-intrinsic: ^1.2.2 - is-regex: ^1.1.4 - checksum: 4af5ce05a2daa4f6d4bfd5a3c64fc33d6b886f6592122e93c0efad52f7147b9b605e5ffc03c269a1e3d1f8db2a23bc636628a961c9fd65bafdc09503330673fd + es-errors: ^1.3.0 + isarray: ^2.0.5 + checksum: 8c11cbee6dc8ff5cc0f3d95eef7052e43494591384015902e4292aef4ae9e539908288520ed97179cee17d6ffb450fe5f05a46ce7a1749685f7524fd568ab5db languageName: node linkType: hard -"safe-regex-test@npm:^1.0.3": - version: 1.0.3 - resolution: "safe-regex-test@npm:1.0.3" +"safe-regex-test@npm:^1.1.0": + version: 1.1.0 + resolution: "safe-regex-test@npm:1.1.0" dependencies: - call-bind: ^1.0.6 + call-bound: ^1.0.2 es-errors: ^1.3.0 - is-regex: ^1.1.4 - checksum: 6c7d392ff1ae7a3ae85273450ed02d1d131f1d2c76e177d6b03eb88e6df8fa062639070e7d311802c1615f351f18dc58f9454501c58e28d5ffd9b8f502ba6489 + is-regex: ^1.2.1 + checksum: 3c809abeb81977c9ed6c869c83aca6873ea0f3ab0f806b8edbba5582d51713f8a6e9757d24d2b4b088f563801475ea946c8e77e7713e8c65cdd02305b6caedab languageName: node linkType: hard @@ -9746,9 +9246,9 @@ __metadata: linkType: hard "scale-ts@npm:^1.6.0": - version: 1.6.0 - resolution: "scale-ts@npm:1.6.0" - checksum: 2cd6d3e31ea78621fe2e068eedc3beb6a3cfc338c9033f04ec3e355b4b08e134febad655c54a80272a50737136a27436f9d14d6525b126e621a3b77524111056 + version: 1.6.1 + resolution: "scale-ts@npm:1.6.1" + checksum: 0e045e45184194eab4770d823a2d455646eae7fc827f0f6162ca409f4f3387415a152e885f1594ba327da5b62ebc355c16049c5573c9a298038bd5d741a92175 languageName: node linkType: hard @@ -9779,23 +9279,12 @@ __metadata: languageName: node linkType: hard -"semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4": - version: 7.6.0 - resolution: "semver@npm:7.6.0" - dependencies: - lru-cache: ^6.0.0 - bin: - semver: bin/semver.js - checksum: 7427f05b70786c696640edc29fdd4bc33b2acf3bbe1740b955029044f80575fc664e1a512e4113c3af21e767154a94b4aa214bf6cd6e42a1f6dba5914e0b208c - languageName: node - linkType: hard - -"semver@npm:^7.6.0": - version: 7.6.3 - resolution: "semver@npm:7.6.3" +"semver@npm:^7.3.2, semver@npm:^7.3.5, semver@npm:^7.5.3, semver@npm:^7.5.4, semver@npm:^7.6.0, semver@npm:^7.7.1": + version: 7.7.1 + resolution: "semver@npm:7.7.1" bin: semver: bin/semver.js - checksum: 4110ec5d015c9438f322257b1c51fe30276e5f766a3f64c09edd1d7ea7118ecbc3f379f3b69032bacf13116dc7abc4ad8ce0d7e2bd642e26b0d271b56b61a7d8 + checksum: 586b825d36874007c9382d9e1ad8f93888d8670040add24a28e06a910aeebd673a2eb9e3bf169c6679d9245e66efb9057e0852e70d9daa6c27372aab1dda7104 languageName: node linkType: hard @@ -9806,20 +9295,7 @@ __metadata: languageName: node linkType: hard -"set-function-length@npm:^1.2.0": - version: 1.2.0 - resolution: "set-function-length@npm:1.2.0" - dependencies: - define-data-property: ^1.1.1 - function-bind: ^1.1.2 - get-intrinsic: ^1.2.2 - gopd: ^1.0.1 - has-property-descriptors: ^1.0.1 - checksum: 63e34b45a2ff9abb419f52583481bf8ba597d33c0c85e56999085eb6078a0f7fbb4222051981c287feceeb358aa7789e7803cea2c82ac94c0ab37059596aff79 - languageName: node - linkType: hard - -"set-function-length@npm:^1.2.1": +"set-function-length@npm:^1.2.2": version: 1.2.2 resolution: "set-function-length@npm:1.2.2" dependencies: @@ -9833,17 +9309,6 @@ __metadata: languageName: node linkType: hard -"set-function-name@npm:^2.0.0, set-function-name@npm:^2.0.1": - version: 2.0.1 - resolution: "set-function-name@npm:2.0.1" - dependencies: - define-data-property: ^1.0.1 - functions-have-names: ^1.2.3 - has-property-descriptors: ^1.0.0 - checksum: 4975d17d90c40168eee2c7c9c59d023429f0a1690a89d75656306481ece0c3c1fb1ebcc0150ea546d1913e35fbd037bace91372c69e543e51fc5d1f31a9fa126 - languageName: node - linkType: hard - "set-function-name@npm:^2.0.2": version: 2.0.2 resolution: "set-function-name@npm:2.0.2" @@ -9856,6 +9321,17 @@ __metadata: languageName: node linkType: hard +"set-proto@npm:^1.0.0": + version: 1.0.0 + resolution: "set-proto@npm:1.0.0" + dependencies: + dunder-proto: ^1.0.1 + es-errors: ^1.3.0 + es-object-atoms: ^1.0.0 + checksum: ec27cbbe334598547e99024403e96da32aca3e530583e4dba7f5db1c43cbc4affa9adfbd77c7b2c210b9b8b2e7b2e600bad2a6c44fd62e804d8233f96bbb62f4 + languageName: node + linkType: hard + "shebang-command@npm:^2.0.0": version: 2.0.0 resolution: "shebang-command@npm:2.0.0" @@ -9872,26 +9348,51 @@ __metadata: languageName: node linkType: hard -"side-channel@npm:^1.0.4": - version: 1.0.4 - resolution: "side-channel@npm:1.0.4" +"side-channel-list@npm:^1.0.0": + version: 1.0.0 + resolution: "side-channel-list@npm:1.0.0" dependencies: - call-bind: ^1.0.0 - get-intrinsic: ^1.0.2 - object-inspect: ^1.9.0 - checksum: 351e41b947079c10bd0858364f32bb3a7379514c399edb64ab3dce683933483fc63fb5e4efe0a15a2e8a7e3c436b6a91736ddb8d8c6591b0460a24bb4a1ee245 + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + checksum: 603b928997abd21c5a5f02ae6b9cc36b72e3176ad6827fab0417ead74580cc4fb4d5c7d0a8a2ff4ead34d0f9e35701ed7a41853dac8a6d1a664fcce1a044f86f languageName: node linkType: hard -"side-channel@npm:^1.0.6": - version: 1.0.6 - resolution: "side-channel@npm:1.0.6" +"side-channel-map@npm:^1.0.1": + version: 1.0.1 + resolution: "side-channel-map@npm:1.0.1" dependencies: - call-bind: ^1.0.7 + call-bound: ^1.0.2 es-errors: ^1.3.0 - get-intrinsic: ^1.2.4 - object-inspect: ^1.13.1 - checksum: bfc1afc1827d712271453e91b7cd3878ac0efd767495fd4e594c4c2afaa7963b7b510e249572bfd54b0527e66e4a12b61b80c061389e129755f34c493aad9b97 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + checksum: 42501371cdf71f4ccbbc9c9e2eb00aaaab80a4c1c429d5e8da713fd4d39ef3b8d4a4b37ed4f275798a65260a551a7131fd87fe67e922dba4ac18586d6aab8b06 + languageName: node + linkType: hard + +"side-channel-weakmap@npm:^1.0.2": + version: 1.0.2 + resolution: "side-channel-weakmap@npm:1.0.2" + dependencies: + call-bound: ^1.0.2 + es-errors: ^1.3.0 + get-intrinsic: ^1.2.5 + object-inspect: ^1.13.3 + side-channel-map: ^1.0.1 + checksum: a815c89bc78c5723c714ea1a77c938377ea710af20d4fb886d362b0d1f8ac73a17816a5f6640f354017d7e292a43da9c5e876c22145bac00b76cfb3468001736 + languageName: node + linkType: hard + +"side-channel@npm:^1.1.0": + version: 1.1.0 + resolution: "side-channel@npm:1.1.0" + dependencies: + es-errors: ^1.3.0 + object-inspect: ^1.13.3 + side-channel-list: ^1.0.0 + side-channel-map: ^1.0.1 + side-channel-weakmap: ^1.0.2 + checksum: bf73d6d6682034603eb8e99c63b50155017ed78a522d27c2acec0388a792c3ede3238b878b953a08157093b85d05797217d270b7666ba1f111345fbe933380ff languageName: node linkType: hard @@ -10016,38 +9517,31 @@ __metadata: languageName: node linkType: hard -"socks-proxy-agent@npm:^8.0.1": - version: 8.0.2 - resolution: "socks-proxy-agent@npm:8.0.2" +"socks-proxy-agent@npm:^8.0.3": + version: 8.0.5 + resolution: "socks-proxy-agent@npm:8.0.5" dependencies: - agent-base: ^7.0.2 + agent-base: ^7.1.2 debug: ^4.3.4 - socks: ^2.7.1 - checksum: 4fb165df08f1f380881dcd887b3cdfdc1aba3797c76c1e9f51d29048be6e494c5b06d68e7aea2e23df4572428f27a3ec22b3d7c75c570c5346507433899a4b6d + socks: ^2.8.3 + checksum: b4fbcdb7ad2d6eec445926e255a1fb95c975db0020543fbac8dfa6c47aecc6b3b619b7fb9c60a3f82c9b2969912a5e7e174a056ae4d98cb5322f3524d6036e1d languageName: node linkType: hard -"socks@npm:^2.7.1": - version: 2.7.1 - resolution: "socks@npm:2.7.1" +"socks@npm:^2.8.3": + version: 2.8.4 + resolution: "socks@npm:2.8.4" dependencies: - ip: ^2.0.0 + ip-address: ^9.0.5 smart-buffer: ^4.2.0 - checksum: 259d9e3e8e1c9809a7f5c32238c3d4d2a36b39b83851d0f573bfde5f21c4b1288417ce1af06af1452569cd1eb0841169afd4998f0e04ba04656f6b7f0e46d748 - languageName: node - linkType: hard - -"source-map-js@npm:^1.0.2": - version: 1.0.2 - resolution: "source-map-js@npm:1.0.2" - checksum: c049a7fc4deb9a7e9b481ae3d424cc793cb4845daa690bc5a05d428bf41bf231ced49b4cf0c9e77f9d42fdb3d20d6187619fc586605f5eabe995a316da8d377c + checksum: cd1edc924475d5dfde534adf66038df7e62c7343e6b8c0113e52dc9bb6a0a10e25b2f136197f379d695f18e8f0f2b7f6e42977bf720ddbee912a851201c396ad languageName: node linkType: hard -"source-map-js@npm:^1.2.0": - version: 1.2.0 - resolution: "source-map-js@npm:1.2.0" - checksum: 791a43306d9223792e84293b00458bf102a8946e7188f3db0e4e22d8d530b5f80a4ce468eb5ec0bf585443ad55ebbd630bf379c98db0b1f317fd902500217f97 +"source-map-js@npm:^1.2.1": + version: 1.2.1 + resolution: "source-map-js@npm:1.2.1" + checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b languageName: node linkType: hard @@ -10103,6 +9597,13 @@ __metadata: languageName: node linkType: hard +"sprintf-js@npm:^1.1.3": + version: 1.1.3 + resolution: "sprintf-js@npm:1.1.3" + checksum: a3fdac7b49643875b70864a9d9b469d87a40dfeaf5d34d9d0c5b1cda5fd7d065531fcb43c76357d62254c57184a7b151954156563a4d6a747015cfb41021cad0 + languageName: node + linkType: hard + "sprintf-js@npm:~1.0.2": version: 1.0.3 resolution: "sprintf-js@npm:1.0.3" @@ -10110,7 +9611,7 @@ __metadata: languageName: node linkType: hard -"sshpk@npm:^1.14.1": +"sshpk@npm:^1.18.0": version: 1.18.0 resolution: "sshpk@npm:1.18.0" dependencies: @@ -10131,12 +9632,19 @@ __metadata: languageName: node linkType: hard -"ssri@npm:^10.0.0": - version: 10.0.5 - resolution: "ssri@npm:10.0.5" +"ssri@npm:^12.0.0": + version: 12.0.0 + resolution: "ssri@npm:12.0.0" dependencies: minipass: ^7.0.3 - checksum: 0a31b65f21872dea1ed3f7c200d7bc1c1b91c15e419deca14f282508ba917cbb342c08a6814c7f68ca4ca4116dd1a85da2bbf39227480e50125a1ceffeecb750 + checksum: ef4b6b0ae47b4a69896f5f1c4375f953b9435388c053c36d27998bc3d73e046969ccde61ab659e679142971a0b08e50478a1228f62edb994105b280f17900c98 + languageName: node + linkType: hard + +"stable-hash@npm:^0.0.5": + version: 0.0.5 + resolution: "stable-hash@npm:0.0.5" + checksum: 9222ea2c558e37c4a576cb4e406966b9e6aa05b93f5c4f09ef4aaabe3577439b9b8fbff407b16840b63e2ae83de74290c7b1c2da7360d571e480e46a4aec0a56 languageName: node linkType: hard @@ -10147,10 +9655,10 @@ __metadata: languageName: node linkType: hard -"std-env@npm:^3.7.0": - version: 3.7.0 - resolution: "std-env@npm:3.7.0" - checksum: 4f489d13ff2ab838c9acd4ed6b786b51aa52ecacdfeaefe9275fcb220ff2ac80c6e95674723508fd29850a694569563a8caaaea738eb82ca16429b3a0b50e510 +"std-env@npm:^3.8.0": + version: 3.9.0 + resolution: "std-env@npm:3.9.0" + checksum: d40126e4a650f6e5456711e6c297420352a376ef99a9599e8224d2d8f2ff2b91a954f3264fcef888d94fce5c9ae14992c5569761c95556fc87248ce4602ed212 languageName: node linkType: hard @@ -10161,7 +9669,7 @@ __metadata: languageName: node linkType: hard -"string-argv@npm:~0.3.2": +"string-argv@npm:^0.3.2": version: 0.3.2 resolution: "string-argv@npm:0.3.2" checksum: 8703ad3f3db0b2641ed2adbb15cf24d3945070d9a751f9e74a924966db9f325ac755169007233e8985a39a6a292f14d4fee20482989b89b96e473c4221508a0f @@ -10191,99 +9699,71 @@ __metadata: linkType: hard "string-width@npm:^7.0.0": - version: 7.1.0 - resolution: "string-width@npm:7.1.0" + version: 7.2.0 + resolution: "string-width@npm:7.2.0" dependencies: emoji-regex: ^10.3.0 get-east-asian-width: ^1.0.0 strip-ansi: ^7.1.0 - checksum: a183573fe7209e0d294f661846d33f8caf72aa86d983e5b48a0ed45ab15bcccb02c6f0344b58b571988871105457137b8207855ea536827dbc4a376a0f31bf8f - languageName: node - linkType: hard - -"string.prototype.matchall@npm:^4.0.11": - version: 4.0.11 - resolution: "string.prototype.matchall@npm:4.0.11" - dependencies: - call-bind: ^1.0.7 - define-properties: ^1.2.1 - es-abstract: ^1.23.2 - es-errors: ^1.3.0 - es-object-atoms: ^1.0.0 - get-intrinsic: ^1.2.4 - gopd: ^1.0.1 - has-symbols: ^1.0.3 - internal-slot: ^1.0.7 - regexp.prototype.flags: ^1.5.2 - set-function-name: ^2.0.2 - side-channel: ^1.0.6 - checksum: 6ac6566ed065c0c8489c91156078ca077db8ff64d683fda97ae652d00c52dfa5f39aaab0a710d8243031a857fd2c7c511e38b45524796764d25472d10d7075ae + checksum: 42f9e82f61314904a81393f6ef75b832c39f39761797250de68c041d8ba4df2ef80db49ab6cd3a292923a6f0f409b8c9980d120f7d32c820b4a8a84a2598a295 languageName: node linkType: hard -"string.prototype.repeat@npm:^1.0.0": - version: 1.0.0 - resolution: "string.prototype.repeat@npm:1.0.0" - dependencies: - define-properties: ^1.1.3 - es-abstract: ^1.17.5 - checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.8": - version: 1.2.8 - resolution: "string.prototype.trim@npm:1.2.8" - dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: 49eb1a862a53aba73c3fb6c2a53f5463173cb1f4512374b623bcd6b43ad49dd559a06fb5789bdec771a40fc4d2a564411c0a75d35fb27e76bbe738c211ecff07 - languageName: node - linkType: hard - -"string.prototype.trim@npm:^1.2.9": - version: 1.2.9 - resolution: "string.prototype.trim@npm:1.2.9" +"string.prototype.matchall@npm:^4.0.12": + version: 4.0.12 + resolution: "string.prototype.matchall@npm:4.0.12" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.3 define-properties: ^1.2.1 - es-abstract: ^1.23.0 + es-abstract: ^1.23.6 + es-errors: ^1.3.0 es-object-atoms: ^1.0.0 - checksum: ea2df6ec1e914c9d4e2dc856fa08228e8b1be59b59e50b17578c94a66a176888f417264bb763d4aac638ad3b3dad56e7a03d9317086a178078d131aa293ba193 + get-intrinsic: ^1.2.6 + gopd: ^1.2.0 + has-symbols: ^1.1.0 + internal-slot: ^1.1.0 + regexp.prototype.flags: ^1.5.3 + set-function-name: ^2.0.2 + side-channel: ^1.1.0 + checksum: 98a09d6af91bfc6ee25556f3d7cd6646d02f5f08bda55d45528ed273d266d55a71af7291fe3fc76854deffb9168cc1a917d0b07a7d5a178c7e9537c99e6d2b57 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimend@npm:1.0.7" +"string.prototype.repeat@npm:^1.0.0": + version: 1.0.0 + resolution: "string.prototype.repeat@npm:1.0.0" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: 2375516272fd1ba75992f4c4aa88a7b5f3c7a9ca308d963bcd5645adf689eba6f8a04ebab80c33e30ec0aefc6554181a3a8416015c38da0aa118e60ec896310c + define-properties: ^1.1.3 + es-abstract: ^1.17.5 + checksum: 95dfc514ed7f328d80a066dabbfbbb1615c3e51490351085409db2eb7cbfed7ea29fdadaf277647fbf9f4a1e10e6dd9e95e78c0fd2c4e6bb6723ea6e59401004 languageName: node linkType: hard -"string.prototype.trimend@npm:^1.0.8": - version: 1.0.8 - resolution: "string.prototype.trimend@npm:1.0.8" +"string.prototype.trim@npm:^1.2.10": + version: 1.2.10 + resolution: "string.prototype.trim@npm:1.2.10" dependencies: - call-bind: ^1.0.7 + call-bind: ^1.0.8 + call-bound: ^1.0.2 + define-data-property: ^1.1.4 define-properties: ^1.2.1 + es-abstract: ^1.23.5 es-object-atoms: ^1.0.0 - checksum: cc3bd2de08d8968a28787deba9a3cb3f17ca5f9f770c91e7e8fa3e7d47f079bad70fadce16f05dda9f261788be2c6e84a942f618c3bed31e42abc5c1084f8dfd + has-property-descriptors: ^1.0.2 + checksum: 87659cd8561237b6c69f5376328fda934693aedde17bb7a2c57008e9d9ff992d0c253a391c7d8d50114e0e49ff7daf86a362f7961cf92f7564cd01342ca2e385 languageName: node linkType: hard -"string.prototype.trimstart@npm:^1.0.7": - version: 1.0.7 - resolution: "string.prototype.trimstart@npm:1.0.7" +"string.prototype.trimend@npm:^1.0.8, string.prototype.trimend@npm:^1.0.9": + version: 1.0.9 + resolution: "string.prototype.trimend@npm:1.0.9" dependencies: - call-bind: ^1.0.2 - define-properties: ^1.2.0 - es-abstract: ^1.22.1 - checksum: 13d0c2cb0d5ff9e926fa0bec559158b062eed2b68cd5be777ffba782c96b2b492944e47057274e064549b94dd27cf81f48b27a31fee8af5b574cff253e7eb613 + call-bind: ^1.0.8 + call-bound: ^1.0.2 + define-properties: ^1.2.1 + es-object-atoms: ^1.0.0 + checksum: cb86f639f41d791a43627784be2175daa9ca3259c7cb83e7a207a729909b74f2ea0ec5d85de5761e6835e5f443e9420c6ff3f63a845378e4a61dd793177bc287 languageName: node linkType: hard @@ -10379,12 +9859,21 @@ __metadata: languageName: node linkType: hard -"style-to-object@npm:^1.0.0": - version: 1.0.6 - resolution: "style-to-object@npm:1.0.6" +"style-to-js@npm:^1.0.0": + version: 1.1.16 + resolution: "style-to-js@npm:1.1.16" + dependencies: + style-to-object: 1.0.8 + checksum: 1f424ca17d923090821197f27e077e88bcf92b15274157f20330a18405f52a66395232546dc694c776d1a8f1868dabe15738532e18ce59a0683b046610bb4964 + languageName: node + linkType: hard + +"style-to-object@npm:1.0.8": + version: 1.0.8 + resolution: "style-to-object@npm:1.0.8" dependencies: - inline-style-parser: 0.2.3 - checksum: 5b58295dcc2c21f1da1b9308de1e81b4a987b876a177e677453a76b2e3151a0e21afc630e99c1ea6c82dd8dbec0d01a8b1a51a829422aca055162b03e52572a9 + inline-style-parser: 0.2.4 + checksum: 80ca4773fc728d7919edc552eb46bab11aa8cdd0b426528ee8b817ba6872ea7b9d38fbb97b6443fd2d4895a4c4b02ec32765387466a302d0b4d1b91deab1e1a0 languageName: node linkType: hard @@ -10395,7 +9884,7 @@ __metadata: languageName: node linkType: hard -"sucrase@npm:^3.32.0": +"sucrase@npm:^3.35.0": version: 3.35.0 resolution: "sucrase@npm:3.35.0" dependencies: @@ -10420,15 +9909,6 @@ __metadata: languageName: node linkType: hard -"supports-color@npm:^5.3.0": - version: 5.5.0 - resolution: "supports-color@npm:5.5.0" - dependencies: - has-flag: ^3.0.0 - checksum: 95f6f4ba5afdf92f495b5a912d4abee8dcba766ae719b975c56c084f5004845f6f5a5f7769f52d53f40e21952a6d87411bafe34af4a01e65f9926002e38e1dac - languageName: node - linkType: hard - "supports-color@npm:^7.1.0": version: 7.2.0 resolution: "supports-color@npm:7.2.0" @@ -10455,63 +9935,56 @@ __metadata: linkType: hard "tailwind-merge@npm:^2.5.2": - version: 2.5.2 - resolution: "tailwind-merge@npm:2.5.2" - checksum: af745fc16245ac14eb5d3f0b9d076c024321877ad45f43b324465f6aa7f8b5de3816640594fbf6ac8b3500f70ff2687345787888744196ff6f82dfe9a1f99b97 + version: 2.6.0 + resolution: "tailwind-merge@npm:2.6.0" + checksum: 18976c4096920bc6125f1dc837479805de996d86bcc636f98436f65c297003bde89ffe51dfd325b7c97fc71b1dbba8505459dd96010e7b181badd29aea996440 languageName: node linkType: hard "tailwindcss@npm:^3.4.10": - version: 3.4.10 - resolution: "tailwindcss@npm:3.4.10" + version: 3.4.17 + resolution: "tailwindcss@npm:3.4.17" dependencies: "@alloc/quick-lru": ^5.2.0 arg: ^5.0.2 - chokidar: ^3.5.3 + chokidar: ^3.6.0 didyoumean: ^1.2.2 dlv: ^1.1.3 - fast-glob: ^3.3.0 + fast-glob: ^3.3.2 glob-parent: ^6.0.2 is-glob: ^4.0.3 - jiti: ^1.21.0 - lilconfig: ^2.1.0 - micromatch: ^4.0.5 + jiti: ^1.21.6 + lilconfig: ^3.1.3 + micromatch: ^4.0.8 normalize-path: ^3.0.0 object-hash: ^3.0.0 - picocolors: ^1.0.0 - postcss: ^8.4.23 + picocolors: ^1.1.1 + postcss: ^8.4.47 postcss-import: ^15.1.0 postcss-js: ^4.0.1 - postcss-load-config: ^4.0.1 - postcss-nested: ^6.0.1 - postcss-selector-parser: ^6.0.11 - resolve: ^1.22.2 - sucrase: ^3.32.0 + postcss-load-config: ^4.0.2 + postcss-nested: ^6.2.0 + postcss-selector-parser: ^6.1.2 + resolve: ^1.22.8 + sucrase: ^3.35.0 bin: tailwind: lib/cli.js tailwindcss: lib/cli.js - checksum: aa8db3514ec5110b2dee0bf5b35b84ebedf0c23a0dcafc870a5176bc2bad7d581956e0692ed6d888d602c114d2c54d7aa8fdb7028456880bd28b326078c8ba6e - languageName: node - linkType: hard - -"tapable@npm:^2.2.0": - version: 2.2.1 - resolution: "tapable@npm:2.2.1" - checksum: 3b7a1b4d86fa940aad46d9e73d1e8739335efd4c48322cb37d073eb6f80f5281889bf0320c6d8ffcfa1a0dd5bfdbd0f9d037e252ef972aca595330538aac4d51 + checksum: bda962f30e9a2f0567e2ee936ec863d5178958078e577ced13da60b3af779062a53a7e95f2f32b5c558f12a7477dea3ce071441a7362c6d7bf50bc9e166728a4 languageName: node linkType: hard -"tar@npm:^6.1.11, tar@npm:^6.1.2": - version: 6.2.1 - resolution: "tar@npm:6.2.1" +"tar@npm:^7.4.3": + version: 7.4.3 + resolution: "tar@npm:7.4.3" dependencies: - chownr: ^2.0.0 - fs-minipass: ^2.0.0 - minipass: ^5.0.0 - minizlib: ^2.1.1 - mkdirp: ^1.0.3 - yallist: ^4.0.0 - checksum: f1322768c9741a25356c11373bce918483f40fa9a25c69c59410c8a1247632487edef5fe76c5f12ac51a6356d2f1829e96d2bc34098668a2fc34d76050ac2b6c + "@isaacs/fs-minipass": ^4.0.0 + chownr: ^3.0.0 + minipass: ^7.1.2 + minizlib: ^3.0.1 + mkdirp: ^3.0.1 + yallist: ^5.0.0 + checksum: 8485350c0688331c94493031f417df069b778aadb25598abdad51862e007c39d1dd5310702c7be4a6784731a174799d8885d2fde0484269aea205b724d7b2ffa languageName: node linkType: hard @@ -10526,13 +9999,6 @@ __metadata: languageName: node linkType: hard -"text-table@npm:^0.2.0": - version: 0.2.0 - resolution: "text-table@npm:0.2.0" - checksum: b6937a38c80c7f84d9c11dd75e49d5c44f71d95e810a3250bd1f1797fc7117c57698204adf676b71497acc205d769d65c16ae8fa10afad832ae1322630aef10a - languageName: node - linkType: hard - "thenify-all@npm:^1.0.0": version: 1.6.0 resolution: "thenify-all@npm:1.6.0" @@ -10572,17 +10038,34 @@ __metadata: languageName: node linkType: hard -"tinybench@npm:^2.8.0": +"tinybench@npm:^2.9.0": version: 2.9.0 resolution: "tinybench@npm:2.9.0" checksum: 1ab00d7dfe0d1f127cbf00822bacd9024f7a50a3ecd1f354a8168e0b7d2b53a639a24414e707c27879d1adc0f5153141d51d76ebd7b4d37fe245e742e5d91fe8 languageName: node linkType: hard -"tinypool@npm:^1.0.0": - version: 1.0.1 - resolution: "tinypool@npm:1.0.1" - checksum: 5cd6b8cbccd9b88d461f400c9599e69f66563ddf75a2b8ab6b48250481f1b254d180a68ee735f379fa6eb88f11c3b1814735bb1f3306b1a860bf6d8f08074d6b +"tinyexec@npm:^0.3.1": + version: 0.3.2 + resolution: "tinyexec@npm:0.3.2" + checksum: bd491923020610bdeadb0d8cf5d70e7cbad5a3201620fd01048c9bf3b31ffaa75c33254e1540e13b993ce4e8187852b0b5a93057bb598e7a57afa2ca2048a35c + languageName: node + linkType: hard + +"tinyglobby@npm:^0.2.12": + version: 0.2.12 + resolution: "tinyglobby@npm:0.2.12" + dependencies: + fdir: ^6.4.3 + picomatch: ^4.0.2 + checksum: ef9357fa1b2b661afdccd315cb4995f5f36bce948faaace68aae85fe57bdd8f837883045c88efc50d3186bac6586e4ae2f31026b9a3aac061b884217e6092e23 + languageName: node + linkType: hard + +"tinypool@npm:^1.0.1": + version: 1.0.2 + resolution: "tinypool@npm:1.0.2" + checksum: 752f23114d8fc95a9497fc812231d6d0a63728376aa11e6e8499c10423a91112e760e388887ea7854f1b16977c321f07c0eab061ec2f60f6761e58b184aac880 languageName: node linkType: hard @@ -10593,10 +10076,28 @@ __metadata: languageName: node linkType: hard -"tinyspy@npm:^3.0.0": - version: 3.0.0 - resolution: "tinyspy@npm:3.0.0" - checksum: b5b686acff2b88de60ff8ecf89a2042320406aaeee2fba1828a7ea8a925fad3ed9f5e4d7a068154a9134473c472aa03da8ca92ee994bc57a741c5ede5fa7de4d +"tinyspy@npm:^3.0.2": + version: 3.0.2 + resolution: "tinyspy@npm:3.0.2" + checksum: 5db671b2ff5cd309de650c8c4761ca945459d7204afb1776db9a04fb4efa28a75f08517a8620c01ee32a577748802231ad92f7d5b194dc003ee7f987a2a06337 + languageName: node + linkType: hard + +"tldts-core@npm:^6.1.86": + version: 6.1.86 + resolution: "tldts-core@npm:6.1.86" + checksum: 0a715457e03101deff9b34cf45dcd91b81985ef32d35b8e9c4764dcf76369bf75394304997584080bb7b8897e94e20f35f3e8240a1ec87d6faba3cc34dc5a954 + languageName: node + linkType: hard + +"tldts@npm:^6.1.32": + version: 6.1.86 + resolution: "tldts@npm:6.1.86" + dependencies: + tldts-core: ^6.1.86 + bin: + tldts: bin/cli.js + checksum: e5c57664f73663c6c8f7770db02c0c03d6f877fe837854c72037be8092826f95b8e568962358441ef18431b80b7e40ed88391c70873ee7ec0d4344999a12e3de languageName: node linkType: hard @@ -10607,13 +10108,6 @@ __metadata: languageName: node linkType: hard -"to-fast-properties@npm:^2.0.0": - version: 2.0.0 - resolution: "to-fast-properties@npm:2.0.0" - checksum: be2de62fe58ead94e3e592680052683b1ec986c72d589e7b21e5697f8744cdbf48c266fa72f6c15932894c10187b5f54573a3bcf7da0bfd964d5caf23d436168 - languageName: node - linkType: hard - "to-regex-range@npm:^5.0.1": version: 5.0.1 resolution: "to-regex-range@npm:5.0.1" @@ -10637,15 +10131,12 @@ __metadata: languageName: node linkType: hard -"tough-cookie@npm:^4.1.3": - version: 4.1.3 - resolution: "tough-cookie@npm:4.1.3" +"tough-cookie@npm:^5.0.0": + version: 5.1.2 + resolution: "tough-cookie@npm:5.1.2" dependencies: - psl: ^1.1.33 - punycode: ^2.1.1 - universalify: ^0.2.0 - url-parse: ^1.5.3 - checksum: c9226afff36492a52118432611af083d1d8493a53ff41ec4ea48e5b583aec744b989e4280bcf476c910ec1525a89a4a0f1cae81c08b18fb2ec3a9b3a72b91dcc + tldts: ^6.1.32 + checksum: 31c626a77ac247b881665851035773afe7eeac283b91ed8da3c297ed55480ea1dd1ba3f5bb1f94b653ac2d5b184f17ce4bf1cf6ca7c58ee7c321b4323c4f8024 languageName: node linkType: hard @@ -10663,12 +10154,12 @@ __metadata: languageName: node linkType: hard -"ts-api-utils@npm:^1.3.0": - version: 1.3.0 - resolution: "ts-api-utils@npm:1.3.0" +"ts-api-utils@npm:^2.0.1": + version: 2.1.0 + resolution: "ts-api-utils@npm:2.1.0" peerDependencies: - typescript: ">=4.2.0" - checksum: c746ddabfdffbf16cb0b0db32bb287236a19e583057f8649ee7c49995bb776e1d3ef384685181c11a1a480369e022ca97512cb08c517b2d2bd82c83754c97012 + typescript: ">=4.8.4" + checksum: 5b1ef89105654d93d67582308bd8dfe4bbf6874fccbcaa729b08fbb00a940fd4c691ca6d0d2b18c3c70878d9a7e503421b7cc473dbc3d0d54258b86401d4b15d languageName: node linkType: hard @@ -10718,8 +10209,8 @@ __metadata: linkType: hard "tsconfck@npm:^3.0.3": - version: 3.1.1 - resolution: "tsconfck@npm:3.1.1" + version: 3.1.5 + resolution: "tsconfck@npm:3.1.5" peerDependencies: typescript: ^5.0.0 peerDependenciesMeta: @@ -10727,7 +10218,7 @@ __metadata: optional: true bin: tsconfck: bin/tsconfck.js - checksum: 92941c76f5a996a96b5d92c88d20f67c644bb04cfeb9e5d4d2fed5a8ecce207fc70334a6257e3c146a117aa88b75adabc0989ee8d80a4935745f2774bf3f50fe + checksum: 9a85b707cf9a99caec4ec312783a903bf9d4bea52036786df40f8c50beb903a49a5895a0a8144f5862175ee202af80d28406dd2d5c4664cbc17260a193c84dba languageName: node linkType: hard @@ -10743,14 +10234,14 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.1.0, tslib@npm:^2.4.0": - version: 2.6.2 - resolution: "tslib@npm:2.6.2" - checksum: 329ea56123005922f39642318e3d1f0f8265d1e7fcb92c633e0809521da75eeaca28d2cf96d7248229deb40e5c19adf408259f4b9640afd20d13aecc1430f3ad +"tslib@npm:2.7.0": + version: 2.7.0 + resolution: "tslib@npm:2.7.0" + checksum: 1606d5c89f88d466889def78653f3aab0f88692e80bb2066d090ca6112ae250ec1cfa9dbfaab0d17b60da15a4186e8ec4d893801c67896b277c17374e36e1d28 languageName: node linkType: hard -"tslib@npm:^2.7.0, tslib@npm:^2.8.0, tslib@npm:^2.8.1": +"tslib@npm:^2.1.0, tslib@npm:^2.4.0, tslib@npm:^2.7.0, tslib@npm:^2.8.0, tslib@npm:^2.8.1": version: 2.8.1 resolution: "tslib@npm:2.8.1" checksum: e4aba30e632b8c8902b47587fd13345e2827fa639e7c3121074d5ee0880723282411a8838f830b55100cbe4517672f84a2472667d355b81e8af165a55dc6203a @@ -10803,102 +10294,56 @@ __metadata: languageName: node linkType: hard -"typed-array-buffer@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-buffer@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - get-intrinsic: ^1.2.1 - is-typed-array: ^1.1.10 - checksum: 3e0281c79b2a40cd97fe715db803884301993f4e8c18e8d79d75fd18f796e8cd203310fec8c7fdb5e6c09bedf0af4f6ab8b75eb3d3a85da69328f28a80456bd3 - languageName: node - linkType: hard - -"typed-array-buffer@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-buffer@npm:1.0.2" +"typed-array-buffer@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-buffer@npm:1.0.3" dependencies: - call-bind: ^1.0.7 + call-bound: ^1.0.3 es-errors: ^1.3.0 - is-typed-array: ^1.1.13 - checksum: 02ffc185d29c6df07968272b15d5319a1610817916ec8d4cd670ded5d1efe72901541ff2202fcc622730d8a549c76e198a2f74e312eabbfb712ed907d45cbb0b - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-length@npm:1.0.0" - dependencies: - call-bind: ^1.0.2 - for-each: ^0.3.3 - has-proto: ^1.0.1 - is-typed-array: ^1.1.10 - checksum: b03db16458322b263d87a702ff25388293f1356326c8a678d7515767ef563ef80e1e67ce648b821ec13178dd628eb2afdc19f97001ceae7a31acf674c849af94 - languageName: node - linkType: hard - -"typed-array-byte-length@npm:^1.0.1": - version: 1.0.1 - resolution: "typed-array-byte-length@npm:1.0.1" - dependencies: - call-bind: ^1.0.7 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-proto: ^1.0.3 - is-typed-array: ^1.1.13 - checksum: f65e5ecd1cf76b1a2d0d6f631f3ea3cdb5e08da106c6703ffe687d583e49954d570cc80434816d3746e18be889ffe53c58bf3e538081ea4077c26a41055b216d - languageName: node - linkType: hard - -"typed-array-byte-offset@npm:^1.0.0": - version: 1.0.0 - resolution: "typed-array-byte-offset@npm:1.0.0" - dependencies: - available-typed-arrays: ^1.0.5 - call-bind: ^1.0.2 - for-each: ^0.3.3 - has-proto: ^1.0.1 - is-typed-array: ^1.1.10 - checksum: 04f6f02d0e9a948a95fbfe0d5a70b002191fae0b8fe0fe3130a9b2336f043daf7a3dda56a31333c35a067a97e13f539949ab261ca0f3692c41603a46a94e960b + is-typed-array: ^1.1.14 + checksum: 3fb91f0735fb413b2bbaaca9fabe7b8fc14a3fa5a5a7546bab8a57e755be0e3788d893195ad9c2b842620592de0e68d4c077d4c2c41f04ec25b8b5bb82fa9a80 languageName: node linkType: hard -"typed-array-byte-offset@npm:^1.0.2": - version: 1.0.2 - resolution: "typed-array-byte-offset@npm:1.0.2" +"typed-array-byte-length@npm:^1.0.3": + version: 1.0.3 + resolution: "typed-array-byte-length@npm:1.0.3" dependencies: - available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 + call-bind: ^1.0.8 for-each: ^0.3.3 - gopd: ^1.0.1 - has-proto: ^1.0.3 - is-typed-array: ^1.1.13 - checksum: c8645c8794a621a0adcc142e0e2c57b1823bbfa4d590ad2c76b266aa3823895cf7afb9a893bf6685e18454ab1b0241e1a8d885a2d1340948efa4b56add4b5f67 + gopd: ^1.2.0 + has-proto: ^1.2.0 + is-typed-array: ^1.1.14 + checksum: cda9352178ebeab073ad6499b03e938ebc30c4efaea63a26839d89c4b1da9d2640b0d937fc2bd1f049eb0a38def6fbe8a061b601292ae62fe079a410ce56e3a6 languageName: node linkType: hard -"typed-array-length@npm:^1.0.4": +"typed-array-byte-offset@npm:^1.0.4": version: 1.0.4 - resolution: "typed-array-length@npm:1.0.4" + resolution: "typed-array-byte-offset@npm:1.0.4" dependencies: - call-bind: ^1.0.2 + available-typed-arrays: ^1.0.7 + call-bind: ^1.0.8 for-each: ^0.3.3 - is-typed-array: ^1.1.9 - checksum: 2228febc93c7feff142b8c96a58d4a0d7623ecde6c7a24b2b98eb3170e99f7c7eff8c114f9b283085cd59dcd2bd43aadf20e25bba4b034a53c5bb292f71f8956 + gopd: ^1.2.0 + has-proto: ^1.2.0 + is-typed-array: ^1.1.15 + reflect.getprototypeof: ^1.0.9 + checksum: 670b7e6bb1d3c2cf6160f27f9f529e60c3f6f9611c67e47ca70ca5cfa24ad95415694c49d1dbfeda016d3372cab7dfc9e38c7b3e1bb8d692cae13a63d3c144d7 languageName: node linkType: hard -"typed-array-length@npm:^1.0.6": - version: 1.0.6 - resolution: "typed-array-length@npm:1.0.6" +"typed-array-length@npm:^1.0.7": + version: 1.0.7 + resolution: "typed-array-length@npm:1.0.7" dependencies: call-bind: ^1.0.7 for-each: ^0.3.3 gopd: ^1.0.1 - has-proto: ^1.0.3 is-typed-array: ^1.1.13 possible-typed-array-names: ^1.0.0 - checksum: f0315e5b8f0168c29d390ff410ad13e4d511c78e6006df4a104576844812ee447fcc32daab1f3a76c9ef4f64eff808e134528b5b2439de335586b392e9750e5c + reflect.getprototypeof: ^1.0.6 + checksum: deb1a4ffdb27cd930b02c7030cb3e8e0993084c643208e52696e18ea6dd3953dfc37b939df06ff78170423d353dc8b10d5bae5796f3711c1b3abe52872b3774c languageName: node linkType: hard @@ -10912,41 +10357,34 @@ __metadata: linkType: hard "typescript@npm:^5.5.4": - version: 5.5.4 - resolution: "typescript@npm:5.5.4" + version: 5.8.3 + resolution: "typescript@npm:5.8.3" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: b309040f3a1cd91c68a5a58af6b9fdd4e849b8c42d837b2c2e73f9a4f96a98c4f1ed398a9aab576ee0a4748f5690cf594e6b99dbe61de7839da748c41e6d6ca8 + checksum: cb1d081c889a288b962d3c8ae18d337ad6ee88a8e81ae0103fa1fecbe923737f3ba1dbdb3e6d8b776c72bc73bfa6d8d850c0306eed1a51377d2fccdfd75d92c4 languageName: node linkType: hard "typescript@patch:typescript@^5.5.4#~builtin": - version: 5.5.4 - resolution: "typescript@patch:typescript@npm%3A5.5.4#~builtin::version=5.5.4&hash=493e53" + version: 5.8.3 + resolution: "typescript@patch:typescript@npm%3A5.8.3#~builtin::version=5.8.3&hash=493e53" bin: tsc: bin/tsc tsserver: bin/tsserver - checksum: fc52962f31a5bcb716d4213bef516885e4f01f30cea797a831205fc9ef12b405a40561c40eae3127ab85ba1548e7df49df2bcdee6b84a94bfbe3a0d7eff16b14 + checksum: 1b503525a88ff0ff5952e95870971c4fb2118c17364d60302c21935dedcd6c37e6a0a692f350892bafcef6f4a16d09073fe461158547978d2f16fbe4cb18581c languageName: node linkType: hard -"unbox-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "unbox-primitive@npm:1.0.2" +"unbox-primitive@npm:^1.1.0": + version: 1.1.0 + resolution: "unbox-primitive@npm:1.1.0" dependencies: - call-bind: ^1.0.2 + call-bound: ^1.0.3 has-bigints: ^1.0.2 - has-symbols: ^1.0.3 - which-boxed-primitive: ^1.0.2 - checksum: b7a1cf5862b5e4b5deb091672ffa579aa274f648410009c81cca63fed3b62b610c4f3b773f912ce545bb4e31edc3138975b5bc777fc6e4817dca51affb6380e9 - languageName: node - linkType: hard - -"undici-types@npm:~5.26.4": - version: 5.26.5 - resolution: "undici-types@npm:5.26.5" - checksum: 3192ef6f3fd5df652f2dc1cd782b49d6ff14dc98e5dced492aa8a8c65425227da5da6aafe22523c67f035a272c599bb89cfe803c1db6311e44bed3042fc25487 + has-symbols: ^1.1.0 + which-boxed-primitive: ^1.1.1 + checksum: 729f13b84a5bfa3fead1d8139cee5c38514e63a8d6a437819a473e241ba87eeb593646568621c7fc7f133db300ef18d65d1a5a60dc9c7beb9000364d93c581df languageName: node linkType: hard @@ -10957,6 +10395,13 @@ __metadata: languageName: node linkType: hard +"undici-types@npm:~6.21.0": + version: 6.21.0 + resolution: "undici-types@npm:6.21.0" + checksum: 46331c7d6016bf85b3e8f20c159d62f5ae471aba1eb3dc52fff35a0259d58dcc7d592d4cc4f00c5f9243fa738a11cfa48bd20203040d4a9e6bc25e807fab7ab3 + languageName: node + linkType: hard + "unified@npm:^11.0.0": version: 11.0.5 resolution: "unified@npm:11.0.5" @@ -10972,21 +10417,21 @@ __metadata: languageName: node linkType: hard -"unique-filename@npm:^3.0.0": - version: 3.0.0 - resolution: "unique-filename@npm:3.0.0" +"unique-filename@npm:^4.0.0": + version: 4.0.0 + resolution: "unique-filename@npm:4.0.0" dependencies: - unique-slug: ^4.0.0 - checksum: 8e2f59b356cb2e54aab14ff98a51ac6c45781d15ceaab6d4f1c2228b780193dc70fae4463ce9e1df4479cb9d3304d7c2043a3fb905bdeca71cc7e8ce27e063df + unique-slug: ^5.0.0 + checksum: 6a62094fcac286b9ec39edbd1f8f64ff92383baa430af303dfed1ffda5e47a08a6b316408554abfddd9730c78b6106bef4ca4d02c1231a735ddd56ced77573df languageName: node linkType: hard -"unique-slug@npm:^4.0.0": - version: 4.0.0 - resolution: "unique-slug@npm:4.0.0" +"unique-slug@npm:^5.0.0": + version: 5.0.0 + resolution: "unique-slug@npm:5.0.0" dependencies: imurmurhash: ^0.1.4 - checksum: 0884b58365af59f89739e6f71e3feacb5b1b41f2df2d842d0757933620e6de08eff347d27e9d499b43c40476cbaf7988638d3acb2ffbcb9d35fd035591adfd15 + checksum: 222d0322bc7bbf6e45c08967863212398313ef73423f4125e075f893a02405a5ffdbaaf150f7dd1e99f8861348a486dd079186d27c5f2c60e465b7dcbb1d3e5b languageName: node linkType: hard @@ -11008,16 +10453,6 @@ __metadata: languageName: node linkType: hard -"unist-util-remove-position@npm:^5.0.0": - version: 5.0.0 - resolution: "unist-util-remove-position@npm:5.0.0" - dependencies: - "@types/unist": ^3.0.0 - unist-util-visit: ^5.0.0 - checksum: 8aabdb9d0e3e744141bc123d8f87b90835d521209ad3c6c4619d403b324537152f0b8f20dda839b40c3aa0abfbf1828b3635a7a8bb159c3ed469e743023510ee - languageName: node - linkType: hard - "unist-util-stringify-position@npm:^4.0.0": version: 4.0.0 resolution: "unist-util-stringify-position@npm:4.0.0" @@ -11048,13 +10483,6 @@ __metadata: languageName: node linkType: hard -"universalify@npm:^0.2.0": - version: 0.2.0 - resolution: "universalify@npm:0.2.0" - checksum: e86134cb12919d177c2353196a4cc09981524ee87abf621f7bc8d249dbbbebaec5e7d1314b96061497981350df786e4c5128dbf442eba104d6e765bc260678b5 - languageName: node - linkType: hard - "universalify@npm:^2.0.0": version: 2.0.1 resolution: "universalify@npm:2.0.1" @@ -11062,6 +10490,63 @@ __metadata: languageName: node linkType: hard +"unrs-resolver@npm:^1.3.2": + version: 1.5.0 + resolution: "unrs-resolver@npm:1.5.0" + dependencies: + "@unrs/resolver-binding-darwin-arm64": 1.5.0 + "@unrs/resolver-binding-darwin-x64": 1.5.0 + "@unrs/resolver-binding-freebsd-x64": 1.5.0 + "@unrs/resolver-binding-linux-arm-gnueabihf": 1.5.0 + "@unrs/resolver-binding-linux-arm-musleabihf": 1.5.0 + "@unrs/resolver-binding-linux-arm64-gnu": 1.5.0 + "@unrs/resolver-binding-linux-arm64-musl": 1.5.0 + "@unrs/resolver-binding-linux-ppc64-gnu": 1.5.0 + "@unrs/resolver-binding-linux-riscv64-gnu": 1.5.0 + "@unrs/resolver-binding-linux-s390x-gnu": 1.5.0 + "@unrs/resolver-binding-linux-x64-gnu": 1.5.0 + "@unrs/resolver-binding-linux-x64-musl": 1.5.0 + "@unrs/resolver-binding-wasm32-wasi": 1.5.0 + "@unrs/resolver-binding-win32-arm64-msvc": 1.5.0 + "@unrs/resolver-binding-win32-ia32-msvc": 1.5.0 + "@unrs/resolver-binding-win32-x64-msvc": 1.5.0 + dependenciesMeta: + "@unrs/resolver-binding-darwin-arm64": + optional: true + "@unrs/resolver-binding-darwin-x64": + optional: true + "@unrs/resolver-binding-freebsd-x64": + optional: true + "@unrs/resolver-binding-linux-arm-gnueabihf": + optional: true + "@unrs/resolver-binding-linux-arm-musleabihf": + optional: true + "@unrs/resolver-binding-linux-arm64-gnu": + optional: true + "@unrs/resolver-binding-linux-arm64-musl": + optional: true + "@unrs/resolver-binding-linux-ppc64-gnu": + optional: true + "@unrs/resolver-binding-linux-riscv64-gnu": + optional: true + "@unrs/resolver-binding-linux-s390x-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-gnu": + optional: true + "@unrs/resolver-binding-linux-x64-musl": + optional: true + "@unrs/resolver-binding-wasm32-wasi": + optional: true + "@unrs/resolver-binding-win32-arm64-msvc": + optional: true + "@unrs/resolver-binding-win32-ia32-msvc": + optional: true + "@unrs/resolver-binding-win32-x64-msvc": + optional: true + checksum: 76e0c0626f36fb5204efe099c5dad81a0a70b39c235cf7a5c808e3d7fefe21c205d2d94a99027ae6e2ed9d6b8a9f0b1296ab28222cd018a2690f2cf5f3b0e3c0 + languageName: node + linkType: hard + "untildify@npm:^4.0.0": version: 4.0.0 resolution: "untildify@npm:4.0.0" @@ -11069,31 +10554,17 @@ __metadata: languageName: node linkType: hard -"update-browserslist-db@npm:^1.0.13": - version: 1.0.13 - resolution: "update-browserslist-db@npm:1.0.13" - dependencies: - escalade: ^3.1.1 - picocolors: ^1.0.0 - peerDependencies: - browserslist: ">= 4.21.0" - bin: - update-browserslist-db: cli.js - checksum: 1e47d80182ab6e4ad35396ad8b61008ae2a1330221175d0abd37689658bdb61af9b705bfc41057fd16682474d79944fb2d86767c5ed5ae34b6276b9bed353322 - languageName: node - linkType: hard - -"update-browserslist-db@npm:^1.1.0": - version: 1.1.0 - resolution: "update-browserslist-db@npm:1.1.0" +"update-browserslist-db@npm:^1.1.1": + version: 1.1.3 + resolution: "update-browserslist-db@npm:1.1.3" dependencies: - escalade: ^3.1.2 - picocolors: ^1.0.1 + escalade: ^3.2.0 + picocolors: ^1.1.1 peerDependencies: browserslist: ">= 4.21.0" bin: update-browserslist-db: cli.js - checksum: 7b74694d96f0c360f01b702e72353dc5a49df4fe6663d3ee4e5c628f061576cddf56af35a3a886238c01dd3d8f231b7a86a8ceaa31e7a9220ae31c1c1238e562 + checksum: 7b6d8d08c34af25ee435bccac542bedcb9e57c710f3c42421615631a80aa6dd28b0a81c9d2afbef53799d482fb41453f714b8a7a0a8003e3b4ec8fb1abb819af languageName: node linkType: hard @@ -11106,25 +10577,15 @@ __metadata: languageName: node linkType: hard -"url-parse@npm:^1.5.3": - version: 1.5.10 - resolution: "url-parse@npm:1.5.10" - dependencies: - querystringify: ^2.1.1 - requires-port: ^1.0.0 - checksum: fbdba6b1d83336aca2216bbdc38ba658d9cfb8fc7f665eb8b17852de638ff7d1a162c198a8e4ed66001ddbf6c9888d41e4798912c62b4fd777a31657989f7bdf - languageName: node - linkType: hard - -"use-isomorphic-layout-effect@npm:^1.1.2": - version: 1.1.2 - resolution: "use-isomorphic-layout-effect@npm:1.1.2" +"use-isomorphic-layout-effect@npm:^1.2.0": + version: 1.2.0 + resolution: "use-isomorphic-layout-effect@npm:1.2.0" peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 peerDependenciesMeta: "@types/react": optional: true - checksum: a6532f7fc9ae222c3725ff0308aaf1f1ddbd3c00d685ef9eee6714fd0684de5cb9741b432fbf51e61a784e2955424864f7ea9f99734a02f237b17ad3e18ea5cb + checksum: 84fc1074b4e3ee2886fde944baef4ec210453fc78861429fe50ae97be8209e492f18c059c6b2ff1a21df231d72d1638707dabca889bd9d7bee36f21c196a0d19 languageName: node linkType: hard @@ -11183,28 +10644,27 @@ __metadata: linkType: hard "vfile@npm:^6.0.0": - version: 6.0.2 - resolution: "vfile@npm:6.0.2" + version: 6.0.3 + resolution: "vfile@npm:6.0.3" dependencies: "@types/unist": ^3.0.0 - unist-util-stringify-position: ^4.0.0 vfile-message: ^4.0.0 - checksum: 2f3f405654aa549f1902dfe0cefa5f0d785f9f65cb90989b9ab543166afabf30f9c5c4bda734d78cf08e169dd7cba08af4cdcae5563f89782caf1d4719c57646 + checksum: 152b6729be1af70df723efb65c1a1170fd483d41086557da3651eea69a1dd1f0c22ea4344834d56d30734b9185bcab63e22edc81d3f0e9bed8aa4660d61080af languageName: node linkType: hard -"vite-node@npm:2.0.5": - version: 2.0.5 - resolution: "vite-node@npm:2.0.5" +"vite-node@npm:2.1.9": + version: 2.1.9 + resolution: "vite-node@npm:2.1.9" dependencies: cac: ^6.7.14 - debug: ^4.3.5 + debug: ^4.3.7 + es-module-lexer: ^1.5.4 pathe: ^1.1.2 - tinyrainbow: ^1.2.0 vite: ^5.0.0 bin: vite-node: vite-node.mjs - checksum: 30071f1cd3d3b78fd52726d66d18d81b63b321dee70d03c259db959a72f46dce2d71f12a85eaf503497f562ce11fea51197a74888d5892d3c7f3ad0ef093ec25 + checksum: 716d37649834ecea547b43121ee89b2e4f9ca65ff6ce26214770ecfefe070b8c7245c9fdd0f92fb232d266e153629d04af9a4dc4fc350abfa521e5e46434b7b2 languageName: node linkType: hard @@ -11225,8 +10685,8 @@ __metadata: linkType: hard "vite-tsconfig-paths@npm:^5.0.1": - version: 5.0.1 - resolution: "vite-tsconfig-paths@npm:5.0.1" + version: 5.1.4 + resolution: "vite-tsconfig-paths@npm:5.1.4" dependencies: debug: ^4.1.1 globrex: ^0.1.2 @@ -11236,57 +10696,17 @@ __metadata: peerDependenciesMeta: vite: optional: true - checksum: b89192ba6926bbc009cdce4640f42797b43ee92e8b1439d98e297748f20db700f38d8ad99b6cbcf9ec671393314ffa23ac765d7e82b0901e84506ffbc1b07a0a - languageName: node - linkType: hard - -"vite@npm:^5.0.0": - version: 5.0.12 - resolution: "vite@npm:5.0.12" - dependencies: - esbuild: ^0.19.3 - fsevents: ~2.3.3 - postcss: ^8.4.32 - rollup: ^4.2.0 - peerDependencies: - "@types/node": ^18.0.0 || >=20.0.0 - less: "*" - lightningcss: ^1.21.0 - sass: "*" - stylus: "*" - sugarss: "*" - terser: ^5.4.0 - dependenciesMeta: - fsevents: - optional: true - peerDependenciesMeta: - "@types/node": - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true - bin: - vite: bin/vite.js - checksum: b97b6f1c204d9091d0973626827a6e9d8e8b1959ebd0877b6f76e7068e1e7adf9ecd3b1cc382cbab9d421e3eeca5e1a95f27f9c1734439b229f5a58ef2052fa4 + checksum: 9d868fcad7ac59049c08ce60f65a0e1b1caebb3d849c60ebe6ed47645255007fd8275c22a42155666fd76ee947bc36481d83c0527b2d9fa45ccafac4dbf99722 languageName: node linkType: hard -"vite@npm:^5.4.2": - version: 5.4.2 - resolution: "vite@npm:5.4.2" +"vite@npm:^5.0.0, vite@npm:^5.4.2": + version: 5.4.18 + resolution: "vite@npm:5.4.18" dependencies: esbuild: ^0.21.3 fsevents: ~2.3.3 - postcss: ^8.4.41 + postcss: ^8.4.43 rollup: ^4.20.0 peerDependencies: "@types/node": ^18.0.0 || >=20.0.0 @@ -11319,38 +10739,39 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 7d25c1b2366ae4d9eb515ba9efc2619c544ec6d806d636977fac93f59cdf63e22ea9b4592c69c496a313cf95c88e374c81870d4bb4b11f401ec003793dfd2830 + checksum: b61bab8c74b7a1a626e26ae2802734d666818b2a1856217b330ea7522e24a619f3d7f690f0466ea844d96549da44409075289cbc0fa8cb0245d40017c8455f74 languageName: node linkType: hard "vitest@npm:^2.0.5": - version: 2.0.5 - resolution: "vitest@npm:2.0.5" - dependencies: - "@ampproject/remapping": ^2.3.0 - "@vitest/expect": 2.0.5 - "@vitest/pretty-format": ^2.0.5 - "@vitest/runner": 2.0.5 - "@vitest/snapshot": 2.0.5 - "@vitest/spy": 2.0.5 - "@vitest/utils": 2.0.5 - chai: ^5.1.1 - debug: ^4.3.5 - execa: ^8.0.1 - magic-string: ^0.30.10 + version: 2.1.9 + resolution: "vitest@npm:2.1.9" + dependencies: + "@vitest/expect": 2.1.9 + "@vitest/mocker": 2.1.9 + "@vitest/pretty-format": ^2.1.9 + "@vitest/runner": 2.1.9 + "@vitest/snapshot": 2.1.9 + "@vitest/spy": 2.1.9 + "@vitest/utils": 2.1.9 + chai: ^5.1.2 + debug: ^4.3.7 + expect-type: ^1.1.0 + magic-string: ^0.30.12 pathe: ^1.1.2 - std-env: ^3.7.0 - tinybench: ^2.8.0 - tinypool: ^1.0.0 + std-env: ^3.8.0 + tinybench: ^2.9.0 + tinyexec: ^0.3.1 + tinypool: ^1.0.1 tinyrainbow: ^1.2.0 vite: ^5.0.0 - vite-node: 2.0.5 + vite-node: 2.1.9 why-is-node-running: ^2.3.0 peerDependencies: "@edge-runtime/vm": "*" "@types/node": ^18.0.0 || >=20.0.0 - "@vitest/browser": 2.0.5 - "@vitest/ui": 2.0.5 + "@vitest/browser": 2.1.9 + "@vitest/ui": 2.1.9 happy-dom: "*" jsdom: "*" peerDependenciesMeta: @@ -11368,59 +10789,60 @@ __metadata: optional: true bin: vitest: vitest.mjs - checksum: 4709e7678d89f957d9bd8e4dd2f99734857df03e22d38d9c3986a75f608205572b73c2faaf059ed41a2dccbc5c65f6717bf66594d6459cf2e57ab175be9aebc1 + checksum: 20db77529f843930ef1626103c898b27528d6d68d6c44753ec823e318f26bbdeb3bc56e6fb80e3f1ecc34382107d32e1f4e709e23198f414fecc9298ab225fa8 languageName: node linkType: hard "web-streams-polyfill@npm:^3.0.3": - version: 3.3.2 - resolution: "web-streams-polyfill@npm:3.3.2" - checksum: 0292f4113c1bda40d8e8ecebee39eb14cc2e2e560a65a6867980e394537a2645130e2c73f5ef6e641fd3697d2f71720ccf659aebaf69a9d5a773f653a0fdf39d + version: 3.3.3 + resolution: "web-streams-polyfill@npm:3.3.3" + checksum: 21ab5ea08a730a2ef8023736afe16713b4f2023ec1c7085c16c8e293ee17ed085dff63a0ad8722da30c99c4ccbd4ccd1b2e79c861829f7ef2963d7de7004c2cb languageName: node linkType: hard -"which-boxed-primitive@npm:^1.0.2": - version: 1.0.2 - resolution: "which-boxed-primitive@npm:1.0.2" +"which-boxed-primitive@npm:^1.1.0, which-boxed-primitive@npm:^1.1.1": + version: 1.1.1 + resolution: "which-boxed-primitive@npm:1.1.1" dependencies: - is-bigint: ^1.0.1 - is-boolean-object: ^1.1.0 - is-number-object: ^1.0.4 - is-string: ^1.0.5 - is-symbol: ^1.0.3 - checksum: 53ce774c7379071729533922adcca47220228405e1895f26673bbd71bdf7fb09bee38c1d6399395927c6289476b5ae0629863427fd151491b71c4b6cb04f3a5e + is-bigint: ^1.1.0 + is-boolean-object: ^1.2.1 + is-number-object: ^1.1.1 + is-string: ^1.1.1 + is-symbol: ^1.1.1 + checksum: ee41d0260e4fd39551ad77700c7047d3d281ec03d356f5e5c8393fe160ba0db53ef446ff547d05f76ffabfd8ad9df7c9a827e12d4cccdbc8fccf9239ff8ac21e languageName: node linkType: hard -"which-builtin-type@npm:^1.1.3": - version: 1.1.3 - resolution: "which-builtin-type@npm:1.1.3" +"which-builtin-type@npm:^1.2.1": + version: 1.2.1 + resolution: "which-builtin-type@npm:1.2.1" dependencies: - function.prototype.name: ^1.1.5 - has-tostringtag: ^1.0.0 + call-bound: ^1.0.2 + function.prototype.name: ^1.1.6 + has-tostringtag: ^1.0.2 is-async-function: ^2.0.0 - is-date-object: ^1.0.5 - is-finalizationregistry: ^1.0.2 + is-date-object: ^1.1.0 + is-finalizationregistry: ^1.1.0 is-generator-function: ^1.0.10 - is-regex: ^1.1.4 + is-regex: ^1.2.1 is-weakref: ^1.0.2 isarray: ^2.0.5 - which-boxed-primitive: ^1.0.2 - which-collection: ^1.0.1 - which-typed-array: ^1.1.9 - checksum: 43730f7d8660ff9e33d1d3f9f9451c4784265ee7bf222babc35e61674a11a08e1c2925019d6c03154fcaaca4541df43abe35d2720843b9b4cbcebdcc31408f36 + which-boxed-primitive: ^1.1.0 + which-collection: ^1.0.2 + which-typed-array: ^1.1.16 + checksum: 7a3617ba0e7cafb795f74db418df889867d12bce39a477f3ee29c6092aa64d396955bf2a64eae3726d8578440e26777695544057b373c45a8bcf5fbe920bf633 languageName: node linkType: hard -"which-collection@npm:^1.0.1": - version: 1.0.1 - resolution: "which-collection@npm:1.0.1" +"which-collection@npm:^1.0.2": + version: 1.0.2 + resolution: "which-collection@npm:1.0.2" dependencies: - is-map: ^2.0.1 - is-set: ^2.0.1 - is-weakmap: ^2.0.1 - is-weakset: ^2.0.1 - checksum: c815bbd163107ef9cb84f135e6f34453eaf4cca994e7ba85ddb0d27cea724c623fae2a473ceccfd5549c53cc65a5d82692de418166df3f858e1e5dc60818581c + is-map: ^2.0.3 + is-set: ^2.0.3 + is-weakmap: ^2.0.2 + is-weakset: ^2.0.3 + checksum: c51821a331624c8197916598a738fc5aeb9a857f1e00d89f5e4c03dc7c60b4032822b8ec5696d28268bb83326456a8b8216344fb84270d18ff1d7628051879d9 languageName: node linkType: hard @@ -11431,29 +10853,18 @@ __metadata: languageName: node linkType: hard -"which-typed-array@npm:^1.1.13, which-typed-array@npm:^1.1.14, which-typed-array@npm:^1.1.9": - version: 1.1.14 - resolution: "which-typed-array@npm:1.1.14" - dependencies: - available-typed-arrays: ^1.0.6 - call-bind: ^1.0.5 - for-each: ^0.3.3 - gopd: ^1.0.1 - has-tostringtag: ^1.0.1 - checksum: efe30c143c58630dde8ab96f9330e20165bacd77ca843c602b510120a415415573bcdef3ccbc30a0e5aaf20f257360cfe24712aea0008f149ce5bb99834c0c0b - languageName: node - linkType: hard - -"which-typed-array@npm:^1.1.15": - version: 1.1.15 - resolution: "which-typed-array@npm:1.1.15" +"which-typed-array@npm:^1.1.16, which-typed-array@npm:^1.1.18": + version: 1.1.19 + resolution: "which-typed-array@npm:1.1.19" dependencies: available-typed-arrays: ^1.0.7 - call-bind: ^1.0.7 - for-each: ^0.3.3 - gopd: ^1.0.1 + call-bind: ^1.0.8 + call-bound: ^1.0.4 + for-each: ^0.3.5 + get-proto: ^1.0.1 + gopd: ^1.2.0 has-tostringtag: ^1.0.2 - checksum: 65227dcbfadf5677aacc43ec84356d17b5500cb8b8753059bb4397de5cd0c2de681d24e1a7bd575633f976a95f88233abfd6549c2105ef4ebd58af8aa1807c75 + checksum: 162d2a07f68ea323f88ed9419861487ce5d02cb876f2cf9dd1e428d04a63133f93a54f89308f337b27cabd312ee3d027cae4a79002b2f0a85b79b9ef4c190670 languageName: node linkType: hard @@ -11468,14 +10879,14 @@ __metadata: languageName: node linkType: hard -"which@npm:^4.0.0": - version: 4.0.0 - resolution: "which@npm:4.0.0" +"which@npm:^5.0.0": + version: 5.0.0 + resolution: "which@npm:5.0.0" dependencies: isexe: ^3.1.1 bin: node-which: bin/which.js - checksum: f17e84c042592c21e23c8195108cff18c64050b9efb8459589116999ea9da6dd1509e6a1bac3aeebefd137be00fabbb61b5c2bc0aa0f8526f32b58ee2f545651 + checksum: 6ec99e89ba32c7e748b8a3144e64bfc74aa63e2b2eacbb61a0060ad0b961eb1a632b08fb1de067ed59b002cec3e21de18299216ebf2325ef0f78e0f121e14e90 languageName: node linkType: hard @@ -11491,6 +10902,13 @@ __metadata: languageName: node linkType: hard +"word-wrap@npm:^1.2.5": + version: 1.2.5 + resolution: "word-wrap@npm:1.2.5" + checksum: f93ba3586fc181f94afdaff3a6fef27920b4b6d9eaefed0f428f8e07adea2a7f54a5f2830ce59406c8416f033f86902b91eb824072354645eea687dff3691ccb + languageName: node + linkType: hard + "wrap-ansi-cjs@npm:wrap-ansi@^7.0.0, wrap-ansi@npm:^7.0.0": version: 7.0.0 resolution: "wrap-ansi@npm:7.0.0" @@ -11554,9 +10972,9 @@ __metadata: languageName: node linkType: hard -"ws@npm:^8.18.0": - version: 8.18.1 - resolution: "ws@npm:8.18.1" +"ws@npm:8.17.1": + version: 8.17.1 + resolution: "ws@npm:8.17.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -11565,13 +10983,13 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: 4658357185d891bc45cc2d42a84f9e192d047e8476fb5cba25b604f7d75ca87ca0dd54cd0b2cc49aeee57c79045a741cb7d0b14501953ac60c790cd105c42f23 + checksum: 442badcce1f1178ec87a0b5372ae2e9771e07c4929a3180321901f226127f252441e8689d765aa5cfba5f50ac60dd830954afc5aeae81609aefa11d3ddf5cecf languageName: node linkType: hard -"ws@npm:^8.8.1": - version: 8.16.0 - resolution: "ws@npm:8.16.0" +"ws@npm:^8.18.0, ws@npm:^8.8.1": + version: 8.18.1 + resolution: "ws@npm:8.18.1" peerDependencies: bufferutil: ^4.0.1 utf-8-validate: ">=5.0.2" @@ -11580,7 +10998,7 @@ __metadata: optional: true utf-8-validate: optional: true - checksum: feb3eecd2bae82fa8a8beef800290ce437d8b8063bdc69712725f21aef77c49cb2ff45c6e5e7fce622248f9c7abaee506bae0a9064067ffd6935460c7357321b + checksum: 4658357185d891bc45cc2d42a84f9e192d047e8476fb5cba25b604f7d75ca87ca0dd54cd0b2cc49aeee57c79045a741cb7d0b14501953ac60c790cd105c42f23 languageName: node linkType: hard @@ -11612,6 +11030,13 @@ __metadata: languageName: node linkType: hard +"yallist@npm:^5.0.0": + version: 5.0.0 + resolution: "yallist@npm:5.0.0" + checksum: eba51182400b9f35b017daa7f419f434424410691bbc5de4f4240cc830fdef906b504424992700dc047f16b4d99100a6f8b8b11175c193f38008e9c96322b6a5 + languageName: node + linkType: hard + "yaml@npm:^1.10.0": version: 1.10.2 resolution: "yaml@npm:1.10.2" @@ -11619,19 +11044,12 @@ __metadata: languageName: node linkType: hard -"yaml@npm:^2.3.4": - version: 2.3.4 - resolution: "yaml@npm:2.3.4" - checksum: e6d1dae1c6383bcc8ba11796eef3b8c02d5082911c6723efeeb5ba50fc8e881df18d645e64de68e421b577296000bea9c75d6d9097c2f6699da3ae0406c030d8 - languageName: node - linkType: hard - -"yaml@npm:~2.5.0": - version: 2.5.0 - resolution: "yaml@npm:2.5.0" +"yaml@npm:^2.3.4, yaml@npm:^2.7.0": + version: 2.7.1 + resolution: "yaml@npm:2.7.1" bin: yaml: bin.mjs - checksum: a116dca5c61641d9bf1f1016c6e71daeb1ed4915f5930ed237d45ab7a605aa5d92c332ff64879a6cd088cabede008c778774e3060ffeb4cd617d28088e4b2d83 + checksum: 385f8115ddfafdf8e599813cca8b2bf4e3f6a01b919fff5ae7da277e164df684d7dfe558b4085172094792b5a04786d3c55fa8b74abb0ee029873f031150bb80 languageName: node linkType: hard @@ -11689,14 +11107,14 @@ __metadata: linkType: hard "yup@npm:^1.4.0": - version: 1.4.0 - resolution: "yup@npm:1.4.0" + version: 1.6.1 + resolution: "yup@npm:1.6.1" dependencies: property-expr: ^2.0.5 tiny-case: ^1.0.3 toposort: ^2.0.2 type-fest: ^2.19.0 - checksum: 20a2ee0c1e891979ca16b34805b3a3be9ab4bea6ea3d2f9005b998b4dc992d0e4d7b53e5f4d8d9423420046630fb44fdf0ecf7e83bc34dd83392bca046c5229d + checksum: 4ef0b15eb01d89a4f15c78c112b588468d553420be6f2f519d0e58a270c96a5bbbf1bff7bc8909851ba8b3df5e1fdb8b34d4a3bd4e9269006c592b3e8580568f languageName: node linkType: hard