From 07787856e873889d13a7857df85ad4a783cff505 Mon Sep 17 00:00:00 2001 From: Adam Welc Date: Wed, 8 Jan 2025 13:22:16 -0800 Subject: [PATCH] [trace-debug] Added support for global locations --- .../trace-adapter/src/adapter.ts | 64 +-- .../trace-adapter/src/runtime.ts | 122 ++++-- .../trace-adapter/src/trace_utils.ts | 129 +++--- .../tests/global_write_ref/Move.toml | 10 + .../global_write_ref/bytecode_modules/m.mv | Bin 0 -> 641 bytes .../dependencies/MoveStdlib/macros.json | 1 + .../dependencies/MoveStdlib/option.json | 1 + .../dependencies/MoveStdlib/u64.json | 1 + .../dependencies/MoveStdlib/vector.json | 1 + .../dependencies/Sui/dynamic_field.json | 1 + .../dependencies/Sui/linked_table.json | 1 + .../source_maps/dependencies/Sui/object.json | 1 + .../dependencies/Sui/tx_context.json | 1 + .../build/global_write_ref/source_maps/m.json | 1 + .../dependencies/MoveStdlib/macros.move | 245 ++++++++++++ .../dependencies/MoveStdlib/option.move | 251 ++++++++++++ .../sources/dependencies/MoveStdlib/u64.move | 111 ++++++ .../dependencies/MoveStdlib/vector.move | 372 ++++++++++++++++++ .../dependencies/Sui/dynamic_field.move | 170 ++++++++ .../dependencies/Sui/linked_table.move | 199 ++++++++++ .../sources/dependencies/Sui/object.move | 233 +++++++++++ .../sources/dependencies/Sui/tx_context.move | 141 +++++++ .../build/global_write_ref/sources/m.move | 25 ++ .../tests/global_write_ref/sources/m.move | 25 ++ .../tests/global_write_ref/test.exp | 0 .../tests/global_write_ref/trace.spec.js | 4 + .../traces/global_write_ref__m__test.json | 1 + .../move-analyzer/trace-debug/package.json | 4 +- 28 files changed, 2009 insertions(+), 106 deletions(-) create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/Move.toml create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/bytecode_modules/m.mv create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/MoveStdlib/macros.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/MoveStdlib/option.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/MoveStdlib/u64.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/MoveStdlib/vector.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/Sui/dynamic_field.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/Sui/linked_table.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/Sui/object.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/dependencies/Sui/tx_context.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/source_maps/m.json create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/macros.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/option.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/u64.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/vector.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/dynamic_field.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/linked_table.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/object.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/tx_context.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/m.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/sources/m.move create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/test.exp create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/trace.spec.js create mode 100644 external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/traces/global_write_ref__m__test.json diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/src/adapter.ts b/external-crates/move/crates/move-analyzer/trace-adapter/src/adapter.ts index 1d1a9a5c3cbd6..7976f9e0c0eb5 100644 --- a/external-crates/move/crates/move-analyzer/trace-adapter/src/adapter.ts +++ b/external-crates/move/crates/move-analyzer/trace-adapter/src/adapter.ts @@ -18,6 +18,8 @@ import { Runtime, RuntimeEvents, RuntimeValueType, + IRuntimeVariableLoc, + IRuntimeGlobalLoc, IRuntimeVariableScope, CompoundType, IRuntimeRefValue, @@ -296,32 +298,48 @@ export class MoveDebugSession extends LoggingDebugSession { name: string, type?: string ): DebugProtocol.Variable { - const frameID = value.loc.frameID; - const localIndex = value.loc.localIndex; + const indexedLoc = value.indexedLoc; const runtimeStack = this.runtime.stack(); - const frame = runtimeStack.frames.find(frame => frame.id === frameID); - if (!frame) { - throw new Error('No frame found for id ' - + frameID - + ' when converting ref value for local index ' - + localIndex); - } - // a local will be in one of the scopes at a position corresponding to its local index - let local = undefined; - for (const scope of frame.locals) { - local = scope[localIndex]; - if (local) { - break; + if ('globalIndex' in indexedLoc.loc) { + // global location + const globalValue = runtimeStack.globals.get(indexedLoc.loc.globalIndex); + if (!globalValue) { + throw new Error('No global found for index ' + + indexedLoc.loc.globalIndex + + ' when converting ref value '); } + const indexPath = [...indexedLoc.indexPath]; + return this.convertRuntimeValue(globalValue, name, indexPath, type); + } else if ('frameID' in indexedLoc.loc && 'localIndex' in indexedLoc.loc) { + // local variable + const frameID = indexedLoc.loc.frameID; + const localIndex = indexedLoc.loc.localIndex; + const frame = runtimeStack.frames.find(frame => frame.id === frameID); + if (!frame) { + throw new Error('No frame found for id ' + + frameID + + ' when converting ref value for local index ' + + localIndex); + } + // a local will be in one of the scopes at a position corresponding to its local index + let local = undefined; + for (const scope of frame.locals) { + local = scope[localIndex]; + if (local) { + break; + } + } + if (!local) { + throw new Error('No local found for index ' + + localIndex + + ' when converting ref value for frame id ' + + frameID); + } + const indexPath = [...indexedLoc.indexPath]; + return this.convertRuntimeValue(local.value, name, indexPath, type); + } else { + throw new Error('Invalid runtime location'); } - if (!local) { - throw new Error('No local found for index ' - + localIndex - + ' when converting ref value for frame id ' - + frameID); - } - const indexPath = [...value.loc.indexPath]; - return this.convertRuntimeValue(local.value, name, indexPath, type); } /** diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/src/runtime.ts b/external-crates/move/crates/move-analyzer/trace-adapter/src/runtime.ts index a1b3e69ce63df..f536c63bcf54c 100644 --- a/external-crates/move/crates/move-analyzer/trace-adapter/src/runtime.ts +++ b/external-crates/move/crates/move-analyzer/trace-adapter/src/runtime.ts @@ -43,6 +43,21 @@ export type RuntimeValueType = string | CompoundType | IRuntimeRefValue; export interface IRuntimeVariableLoc { frameID: number; localIndex: number; +} + +/** + * Global location (typically used for values + * computed in native functions) + */ +export interface IRuntimeGlobalLoc { + globalIndex: number; +} + +/** + * Location where a runtime value is stored. + */ +export interface IRuntimeLoc { + loc: IRuntimeVariableLoc | IRuntimeGlobalLoc; indexPath: number[]; } @@ -51,7 +66,7 @@ export interface IRuntimeVariableLoc { */ export interface IRuntimeRefValue { mutable: boolean; - loc: IRuntimeVariableLoc + indexedLoc: IRuntimeLoc; } /** @@ -128,6 +143,7 @@ interface IRuntimeStackFrame { */ export interface IRuntimeStack { frames: IRuntimeStackFrame[]; + globals: Map; } /** @@ -185,7 +201,10 @@ export class Runtime extends EventEmitter { /** * Current frame stack. */ - private frameStack = { frames: [] as IRuntimeStackFrame[] }; + private frameStack = { + frames: [] as IRuntimeStackFrame[], + globals: new Map() + }; /** * Map of file hashes to file info. @@ -257,7 +276,8 @@ export class Runtime extends EventEmitter { currentEvent.optimizedLines ); this.frameStack = { - frames: [newFrame] + frames: [newFrame], + globals: new Map() }; this.step(/* next */ false, /* stopAtCloseFrame */ false); } @@ -409,11 +429,19 @@ export class Runtime extends EventEmitter { return ExecutionResult.Exception; } } - // if native function executed successfully, then the next event - // should be CloseFrame - if (this.trace.events.length <= this.eventIndex + 1 || - this.trace.events[this.eventIndex + 1].type !== TraceEventKind.CloseFrame) { - throw new Error('Expected an CloseFrame event after native OpenFrame event'); + // process optional effects until reaching CloseFrame for the native function + while (true) { + const executionResult = this.step(/* next */ false, /* stopAtCloseFrame */ true); + if (executionResult === ExecutionResult.Exception) { + return executionResult; + } + if (executionResult === ExecutionResult.TraceEnd) { + throw new Error('Cannot find CloseFrame event for native function'); + } + const currentEvent = this.trace.events[this.eventIndex]; + if (currentEvent.type === TraceEventKind.CloseFrame) { + break; + } } // skip over CloseFrame as there is no frame to pop this.eventIndex++; @@ -449,10 +477,19 @@ export class Runtime extends EventEmitter { return ExecutionResult.Ok; } else { // pop the top frame from the stack - if (this.frameStack.frames.length <= 0) { + const framesLength = this.frameStack.frames.length; + if (framesLength <= 0) { throw new Error('No frame to pop at CloseFrame event with ID: ' + currentEvent.id); } + const currentFrameID = this.frameStack.frames[framesLength - 1].id; + if (currentFrameID !== currentEvent.id) { + throw new Error('Frame ID mismatch at CloseFrame event with ID: ' + + currentEvent.id + + ' (current frame ID: ' + + currentFrameID + + ')'); + } this.frameStack.frames.pop(); return this.step(next, stopAtCloseFrame); } @@ -463,18 +500,23 @@ export class Runtime extends EventEmitter { return ExecutionResult.Exception; } if (effect.type === TraceEffectKind.Write) { - const traceLocation = effect.loc; - const traceValue = effect.value; - const frame = this.frameStack.frames.find( - frame => frame.id === traceLocation.frameID - ); - if (!frame) { - throw new Error('Cannot find frame with ID: ' - + traceLocation.frameID - + ' when processing Write effect for local variable at index: ' - + traceLocation.localIndex); + const traceLocation = effect.indexedLoc.loc; + if ('globalIndex' in traceLocation) { + const globalValue = effect.value; + this.frameStack.globals.set(traceLocation.globalIndex, globalValue); + } else if ('frameID' in traceLocation && 'localIndex' in traceLocation) { + const traceValue = effect.value; + const frame = this.frameStack.frames.find( + frame => frame.id === traceLocation.frameID + ); + if (!frame) { + throw new Error('Cannot find frame with ID: ' + + traceLocation.frameID + + ' when processing Write effect for local variable at index: ' + + traceLocation.localIndex); + } + localWrite(frame, traceLocation.localIndex, traceValue); } - localWrite(frame, traceLocation.localIndex, traceValue); } return this.step(next, stopAtCloseFrame); } else { @@ -825,23 +867,35 @@ export class Runtime extends EventEmitter { name: string, type?: string ): string { + const indexedLoc = refValue.indexedLoc; let res = ''; - const frame = this.frameStack.frames.find(frame => frame.id === refValue.loc.frameID); - let local = undefined; - if (!frame) { - return res; - } - for (const scope of frame.locals) { - local = scope[refValue.loc.localIndex]; - if (local) { - break; + if ('globalIndex' in indexedLoc.loc) { + // global location + const globalValue = this.frameStack.globals.get(indexedLoc.loc.globalIndex); + if (globalValue) { + const indexPath = [...indexedLoc.indexPath]; + return this.valueToString(tabs, globalValue, name, indexPath, type); } + } else if ('frameID' in indexedLoc.loc && 'localIndex' in indexedLoc.loc) { + const frameID = indexedLoc.loc.frameID; + const frame = this.frameStack.frames.find(frame => frame.id === frameID); + let local = undefined; + if (!frame) { + return res; + } + for (const scope of frame.locals) { + local = scope[indexedLoc.loc.localIndex]; + if (local) { + break; + } + } + if (!local) { + return res; + } + const indexPath = [...indexedLoc.indexPath]; + return this.valueToString(tabs, local.value, name, indexPath, type); } - if (!local) { - return res; - } - const indexPath = [...refValue.loc.indexPath]; - return this.valueToString(tabs, local.value, name, indexPath, type); + return res; } /** diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/src/trace_utils.ts b/external-crates/move/crates/move-analyzer/trace-adapter/src/trace_utils.ts index dcc25f775c3a9..3f9ec83aa4c31 100644 --- a/external-crates/move/crates/move-analyzer/trace-adapter/src/trace_utils.ts +++ b/external-crates/move/crates/move-analyzer/trace-adapter/src/trace_utils.ts @@ -7,9 +7,12 @@ import { IRuntimeCompoundValue, RuntimeValueType, IRuntimeVariableLoc, + IRuntimeGlobalLoc, + IRuntimeLoc, IRuntimeRefValue } from './runtime'; import { ISourceMap, IFileLoc, IFileInfo, ILoc, ISourceMapFunction } from './source_map_utils'; +import { logger } from '@vscode/debugadapter'; // Data types corresponding to trace file JSON schema. @@ -116,7 +119,12 @@ interface JSONTraceIndexedLocation { Indexed: [JSONTraceLocalLocation, number]; } -type JSONTraceLocation = JSONTraceLocalLocation | JSONTraceIndexedLocation; +interface JSONTraceGlobalLocation { + Global: number; +} + + +type JSONTraceLocation = JSONTraceLocalLocation | JSONTraceIndexedLocation | JSONTraceGlobalLocation; interface JSONTraceWriteEffect { location: JSONTraceLocation; @@ -145,11 +153,18 @@ interface JSONTracePopEffect { }; } +interface JSONDataLoadEffect { + ref_type: JSONTraceRefType; + location: JSONTraceLocation; + snapshot: JSONTraceRuntimeValueType; +} + interface JSONTraceEffect { Push?: JSONTracePushEffect; Pop?: JSONTracePopEffect; Write?: JSONTraceWriteEffect; Read?: JSONTraceReadEffect; + DataLoad?: JSONDataLoadEffect; ExecutionError?: string; } @@ -238,6 +253,7 @@ export type TraceEvent = */ export enum TraceEffectKind { Write = 'Write', + DataLoad = 'DataLoad', ExecutionError = 'ExecutionError' // TODO: other effect types } @@ -246,7 +262,7 @@ export enum TraceEffectKind { * Effect of an instruction. */ export type EventEffect = - | { type: TraceEffectKind.Write, loc: IRuntimeVariableLoc, value: RuntimeValueType } + | { type: TraceEffectKind.Write, indexedLoc: IRuntimeLoc, value: RuntimeValueType } | { type: TraceEffectKind.ExecutionError, msg: string }; /** @@ -513,31 +529,37 @@ export function readTrace( localLifetimeEndsMax.set(nonInlinedFrameID, lifetimeEndsMax); } else if (event.Effect) { const effect = event.Effect; - if (effect.Write || effect.Read) { - // if a local is read or written, set its end of lifetime - // to infinite (end of frame) - const location = effect.Write ? effect.Write.location : effect.Read!.location; - const loc = processJSONLocalLocation(location, [], localLifetimeEnds); + if (effect.Write || effect.Read || effect.DataLoad) { + const location = effect.Write + ? effect.Write.location + : (effect.Read + ? effect.Read.location + : effect.DataLoad!.location); + const loc = processJSONLocation(location, [], localLifetimeEnds); if (effect.Write) { - if (loc !== undefined) { - // Process a write only if the location is supported. - // We can see global location here in some cases when source-level - // assignment does not involve an explicit local variable, along - // the lines of: - // - // field::borrow_mut(...).next = ... - const value = 'RuntimeValue' in effect.Write.root_value_after_write - ? traceRuntimeValueFromJSON(effect.Write.root_value_after_write.RuntimeValue.value) - : traceRefValueFromJSON(effect.Write.root_value_after_write); - events.push({ - type: TraceEventKind.Effect, - effect: { - type: TraceEffectKind.Write, - loc, - value - } - }); - } + // DataLoad is essentially a form of a write + const value = 'RuntimeValue' in effect.Write.root_value_after_write + ? traceRuntimeValueFromJSON(effect.Write.root_value_after_write.RuntimeValue.value) + : traceRefValueFromJSON(effect.Write.root_value_after_write); + events.push({ + type: TraceEventKind.Effect, + effect: { + type: TraceEffectKind.Write, + indexedLoc: loc, + value + } + }); + } + else if (effect.DataLoad) { + const value = traceRuntimeValueFromJSON(effect.DataLoad.snapshot); + events.push({ + type: TraceEventKind.Effect, + effect: { + type: TraceEffectKind.Write, + indexedLoc: loc, + value + } + }); } } if (effect.ExecutionError) { @@ -785,20 +807,20 @@ function JSONTraceAddressToHexString(address: string): string { } /** - * Processes a location of a local variable in a JSON trace: sets the end of its lifetime - * when requested and returns its location + * Processes a location of a value in a JSON trace: returns the location + * and, if dealing with a local variable, sets the end of its lifetime. * @param traceLocation location in the trace. * @param indexPath a path to actual value for compound types (e.g, [1, 7] means * first field/vector element and then seventh field/vector element) * @param localLifetimeEnds map of local variable lifetimes (defined if local variable * lifetime should happen). - * @returns variable location. + * @returns location. */ -function processJSONLocalLocation( +function processJSONLocation( traceLocation: JSONTraceLocation, indexPath: number[], localLifetimeEnds?: Map, -): IRuntimeVariableLoc | undefined { +): IRuntimeLoc { if ('Local' in traceLocation) { const frameID = traceLocation.Local[0]; const localIndex = traceLocation.Local[1]; @@ -807,20 +829,17 @@ function processJSONLocalLocation( lifetimeEnds[localIndex] = FRAME_LIFETIME; localLifetimeEnds.set(frameID, lifetimeEnds); } - return { frameID, localIndex, indexPath }; + const loc: IRuntimeVariableLoc = { frameID, localIndex }; + return { loc, indexPath }; + } else if ('Global' in traceLocation) { + const globalIndex = traceLocation.Global; + const loc: IRuntimeGlobalLoc = { globalIndex }; + return { loc, indexPath }; } else if ('Indexed' in traceLocation) { indexPath.push(traceLocation.Indexed[1]); - return processJSONLocalLocation(traceLocation.Indexed[0], indexPath, localLifetimeEnds); + return processJSONLocation(traceLocation.Indexed[0], indexPath, localLifetimeEnds); } else { - // Currently, there is nothing that needs to be done for 'Global' locations, - // neither with respect to lifetime nor with respect to location itself. - // This is because `Global` locations currently only represent read-only - // reference values returned from native functions. If there ever was - // a native function that would return a mutable reference, we should - // consider how to handle value changes via such reference, but it's unlikely - // that such a function would ever be added to either Move stdlib or - // the Sui framework. - return undefined; + throw new Error('Unsupported location type'); } } @@ -833,18 +852,18 @@ function processJSONLocalLocation( */ function traceRefValueFromJSON(value: JSONTraceRefValue): RuntimeValueType { if ('MutRef' in value) { - const loc = processJSONLocalLocation(value.MutRef.location, []); + const loc = processJSONLocation(value.MutRef.location, []); if (!loc) { throw new Error('Unsupported location type in MutRef'); } - const ret: IRuntimeRefValue = { mutable: true, loc }; + const ret: IRuntimeRefValue = { mutable: true, indexedLoc: loc }; return ret; } else { - const loc = processJSONLocalLocation(value.ImmRef.location, []); + const loc = processJSONLocation(value.ImmRef.location, []); if (!loc) { throw new Error('Unsupported location type in ImmRef'); } - const ret: IRuntimeRefValue = { mutable: false, loc }; + const ret: IRuntimeRefValue = { mutable: false, indexedLoc: loc }; return ret; } } @@ -933,6 +952,22 @@ function instructionKindToString(kind: TraceInstructionKind): string { } } +/** + * Converts a location to string representation. + * + * @param indexedLoc indexed location. + * @returns string representing the location. + */ +function locToString(indexedLoc: IRuntimeLoc): string { + if ('globalIndex' in indexedLoc.loc) { + return `global at ${indexedLoc.loc.globalIndex}`; + } else if ('frameID' in indexedLoc.loc && 'localIndex' in indexedLoc.loc) { + return `local at ${indexedLoc.loc.localIndex} in frame ${indexedLoc.loc.frameID}`; + } else { + return 'unsupported location'; + } +} + /** * Converts an effect of an instruction to a string representation. * @@ -942,7 +977,7 @@ function instructionKindToString(kind: TraceInstructionKind): string { function effectToString(effect: EventEffect): string { switch (effect.type) { case TraceEffectKind.Write: - return `Write at idx ${effect.loc.localIndex} in frame ${effect.loc.frameID}`; + return 'Write ' + locToString(effect.indexedLoc); case TraceEffectKind.ExecutionError: return `ExecutionError ${effect.msg}`; } diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/Move.toml b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/Move.toml new file mode 100644 index 0000000000000..6a18a9f948dc4 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/Move.toml @@ -0,0 +1,10 @@ +[package] +name = "global_write_ref" +edition = "2024.beta" + +[dependencies] +Sui = { git = "https://github.com/MystenLabs/sui.git", subdir = "crates/sui-framework/packages/sui-framework", rev = "framework/mainnet" } + +[addresses] +global_write_ref = "0x0" +Sui = "0x2" diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/bytecode_modules/m.mv b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/bytecode_modules/m.mv new file mode 100644 index 0000000000000000000000000000000000000000..9248cba558c4df040672295ef1b0eb6fdb1a249d GIT binary patch literal 641 zcmbtSNsiM%6#YXDuE9yCLA^jZ0Xufyvtfb6rnktQq0(60aYeSH4icB)2Hb=rZ~zVg z-%jXdZ}?JGz52s@QoZ`V{2dGc6bPRDH7`G??M!!{?N9uH#UHwhzxW#joZ&TjS|C~k zV2ETvp&|mXAepNXy^;;t2o*XbeWY*>tV<$mxX^~I;uy>EDBX0M&!nc5p#X9qqf>?Q z$|y7ei3u5)O%PTdZ)4JdLjfWID8K>z%L**$JXR1|S(kRU7ckBG7(O=bL)zZ1){n`2 zIt)#2-R+4LK+*)84CXmk)Y--0#2gE@!># zWYRW$-RFIZj}v!2jO4iIHa)3!q|IlY!?FKTuUDG~HM05PRBz6@?$|cNByshO>O*e& z+=@N_6JpPcA)qQ*&u}4~SQ#Qz@+qE$78(iu0s y) x + else y +} + +public macro fun num_min($x: _, $y: _): _ { + let x = $x; + let y = $y; + if (x < y) x + else y +} + +public macro fun num_diff($x: _, $y: _): _ { + let x = $x; + let y = $y; + if (x > y) x - y + else y - x +} + +public macro fun num_divide_and_round_up($x: _, $y: _): _ { + let x = $x; + let y = $y; + if (x % y == 0) x / y + else x / y + 1 +} + +public macro fun num_pow($base: _, $exponent: u8): _ { + let mut base = $base; + let mut exponent = $exponent; + let mut res = 1; + while (exponent >= 1) { + if (exponent % 2 == 0) { + base = base * base; + exponent = exponent / 2; + } else { + res = res * base; + exponent = exponent - 1; + } + }; + + res +} + +public macro fun num_sqrt<$T, $U>($x: $T, $bitsize: u8): $T { + let x = $x; + let mut bit = (1: $U) << $bitsize; + let mut res = (0: $U); + let mut x = x as $U; + + while (bit != 0) { + if (x >= res + bit) { + x = x - (res + bit); + res = (res >> 1) + bit; + } else { + res = res >> 1; + }; + bit = bit >> 2; + }; + + res as $T +} + +public macro fun num_to_string($x: _): String { + let mut x = $x; + if (x == 0) { + return b"0".to_string() + }; + let mut buffer = vector[]; + while (x != 0) { + buffer.push_back(((48 + x % 10) as u8)); + x = x / 10; + }; + buffer.reverse(); + buffer.to_string() +} + +public macro fun range_do($start: _, $stop: _, $f: |_|) { + let mut i = $start; + let stop = $stop; + while (i < stop) { + $f(i); + i = i + 1; + } +} + +public macro fun range_do_eq($start: _, $stop: _, $f: |_|) { + let mut i = $start; + let stop = $stop; + // we check `i >= stop` inside the loop instead of `i <= stop` as `while` condition to avoid + // incrementing `i` past the MAX integer value. + // Because of this, we need to check if `i > stop` and return early--instead of letting the + // loop bound handle it, like in the `range_do` macro. + if (i > stop) return; + loop { + $f(i); + if (i >= stop) break; + i = i + 1; + } +} + +public macro fun do($stop: _, $f: |_|) { + range_do!(0, $stop, $f) +} + +public macro fun do_eq($stop: _, $f: |_|) { + range_do_eq!(0, $stop, $f) +} + +public macro fun try_as_u8($x: _): Option { + let x = $x; + if (x > 0xFF) option::none() + else option::some(x as u8) +} + +public macro fun try_as_u16($x: _): Option { + let x = $x; + if (x > 0xFFFF) option::none() + else option::some(x as u16) +} + +public macro fun try_as_u32($x: _): Option { + let x = $x; + if (x > 0xFFFF_FFFF) option::none() + else option::some(x as u32) +} + +public macro fun try_as_u64($x: _): Option { + let x = $x; + if (x > 0xFFFF_FFFF_FFFF_FFFF) option::none() + else option::some(x as u64) +} + +public macro fun try_as_u128($x: _): Option { + let x = $x; + if (x > 0xFFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF_FFFF) option::none() + else option::some(x as u128) +} + +/// Creates a fixed-point value from a quotient specified by its numerator and denominator. +/// `$T` is the underlying integer type for the fixed-point value, where `$T` has `$t_bits` bits. +/// `$U` is the type used for intermediate calculations, where `$U` is the next larger integer type. +/// `$max_t` is the maximum value that can be represented by `$T`. +/// `$t_bits` (as mentioned above) is the total number of bits in the fixed-point value (integer +/// plus fractional). +/// `$fractional_bits` is the number of fractional bits in the fixed-point value. +public macro fun uq_from_quotient<$T, $U>( + $numerator: $T, + $denominator: $T, + $max_t: $T, + $t_bits: u8, + $fractional_bits: u8, + $abort_denominator: _, + $abort_quotient_too_small: _, + $abort_quotient_too_large: _, +): $T { + let numerator = $numerator; + let denominator = $denominator; + if (denominator == 0) $abort_denominator; + + // Scale the numerator to have `$t_bits` fractional bits and the denominator to have + // `$t_bits - $fractional_bits` fractional bits, so that the quotient will have + // `$fractional_bits` fractional bits. + let scaled_numerator = numerator as $U << $t_bits; + let scaled_denominator = denominator as $U << ($t_bits - $fractional_bits); + let quotient = scaled_numerator / scaled_denominator; + + // The quotient can only be zero if the numerator is also zero. + if (quotient == 0 && numerator != 0) $abort_quotient_too_small; + + // Return the quotient as a fixed-point number. We first need to check whether the cast + // can succeed. + if (quotient > $max_t as $U) $abort_quotient_too_large; + quotient as $T +} + +public macro fun uq_from_int<$T, $U>($integer: $T, $fractional_bits: u8): $U { + ($integer as $U) << $fractional_bits +} + +public macro fun uq_add<$T, $U>($a: $T, $b: $T, $max_t: $T, $abort_overflow: _): $T { + let sum = $a as $U + ($b as $U); + if (sum > $max_t as $U) $abort_overflow; + sum as $T +} + +public macro fun uq_sub<$T>($a: $T, $b: $T, $abort_overflow: _): $T { + let a = $a; + let b = $b; + if (a < b) $abort_overflow; + a - b +} + +public macro fun uq_to_int<$T, $U>($a: $U, $fractional_bits: u8): $T { + ($a >> $fractional_bits) as $T +} + +public macro fun uq_int_mul<$T, $U>( + $val: $T, + $multiplier: $T, + $max_t: $T, + $fractional_bits: u8, + $abort_overflow: _, +): $T { + // The product of two `$T` bit values has the same number of bits as `$U`, so perform the + // multiplication with `$U` types and keep the full `$U` bit product + // to avoid losing accuracy. + let unscaled_product = $val as $U * ($multiplier as $U); + // The unscaled product has `$fractional_bits` fractional bits (from the multiplier) + // so rescale it by shifting away the low bits. + let product = unscaled_product >> $fractional_bits; + // Check whether the value is too large. + if (product > $max_t as $U) $abort_overflow; + product as $T +} + +public macro fun uq_int_div<$T, $U>( + $val: $T, + $divisor: $T, + $max_t: $T, + $fractional_bits: u8, + $abort_division_by_zero: _, + $abort_overflow: _, +): $T { + let val = $val; + let divisor = $divisor; + // Check for division by zero. + if (divisor == 0) $abort_division_by_zero; + // First convert to $U to increase the number of bits to the next integer size + // and then shift left to add `$fractional_bits` fractional zero bits to the dividend. + let scaled_value = val as $U << $fractional_bits; + let quotient = scaled_value / (divisor as $U); + // Check whether the value is too large. + if (quotient > $max_t as $U) $abort_overflow; + quotient as $T +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/option.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/option.move new file mode 100644 index 0000000000000..857e76ae0d2bb --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/option.move @@ -0,0 +1,251 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// This module defines the Option type and its methods to represent and handle an optional value. +module std::option; + +/// Abstraction of a value that may or may not be present. Implemented with a vector of size +/// zero or one because Move bytecode does not have ADTs. +public struct Option has copy, drop, store { + vec: vector, +} + +/// The `Option` is in an invalid state for the operation attempted. +/// The `Option` is `Some` while it should be `None`. +const EOPTION_IS_SET: u64 = 0x40000; +/// The `Option` is in an invalid state for the operation attempted. +/// The `Option` is `None` while it should be `Some`. +const EOPTION_NOT_SET: u64 = 0x40001; + +/// Return an empty `Option` +public fun none(): Option { + Option { vec: vector::empty() } +} + +/// Return an `Option` containing `e` +public fun some(e: Element): Option { + Option { vec: vector::singleton(e) } +} + +/// Return true if `t` does not hold a value +public fun is_none(t: &Option): bool { + t.vec.is_empty() +} + +/// Return true if `t` holds a value +public fun is_some(t: &Option): bool { + !t.vec.is_empty() +} + +/// Return true if the value in `t` is equal to `e_ref` +/// Always returns `false` if `t` does not hold a value +public fun contains(t: &Option, e_ref: &Element): bool { + t.vec.contains(e_ref) +} + +/// Return an immutable reference to the value inside `t` +/// Aborts if `t` does not hold a value +public fun borrow(t: &Option): &Element { + assert!(t.is_some(), EOPTION_NOT_SET); + &t.vec[0] +} + +/// Return a reference to the value inside `t` if it holds one +/// Return `default_ref` if `t` does not hold a value +public fun borrow_with_default(t: &Option, default_ref: &Element): &Element { + let vec_ref = &t.vec; + if (vec_ref.is_empty()) default_ref + else &vec_ref[0] +} + +/// Return the value inside `t` if it holds one +/// Return `default` if `t` does not hold a value +public fun get_with_default(t: &Option, default: Element): Element { + let vec_ref = &t.vec; + if (vec_ref.is_empty()) default + else vec_ref[0] +} + +/// Convert the none option `t` to a some option by adding `e`. +/// Aborts if `t` already holds a value +public fun fill(t: &mut Option, e: Element) { + let vec_ref = &mut t.vec; + if (vec_ref.is_empty()) vec_ref.push_back(e) + else abort EOPTION_IS_SET +} + +/// Convert a `some` option to a `none` by removing and returning the value stored inside `t` +/// Aborts if `t` does not hold a value +public fun extract(t: &mut Option): Element { + assert!(t.is_some(), EOPTION_NOT_SET); + t.vec.pop_back() +} + +/// Return a mutable reference to the value inside `t` +/// Aborts if `t` does not hold a value +public fun borrow_mut(t: &mut Option): &mut Element { + assert!(t.is_some(), EOPTION_NOT_SET); + &mut t.vec[0] +} + +/// Swap the old value inside `t` with `e` and return the old value +/// Aborts if `t` does not hold a value +public fun swap(t: &mut Option, e: Element): Element { + assert!(t.is_some(), EOPTION_NOT_SET); + let vec_ref = &mut t.vec; + let old_value = vec_ref.pop_back(); + vec_ref.push_back(e); + old_value +} + +/// Swap the old value inside `t` with `e` and return the old value; +/// or if there is no old value, fill it with `e`. +/// Different from swap(), swap_or_fill() allows for `t` not holding a value. +public fun swap_or_fill(t: &mut Option, e: Element): Option { + let vec_ref = &mut t.vec; + let old_value = if (vec_ref.is_empty()) none() + else some(vec_ref.pop_back()); + vec_ref.push_back(e); + old_value +} + +/// Destroys `t.` If `t` holds a value, return it. Returns `default` otherwise +public fun destroy_with_default(t: Option, default: Element): Element { + let Option { mut vec } = t; + if (vec.is_empty()) default + else vec.pop_back() +} + +/// Unpack `t` and return its contents +/// Aborts if `t` does not hold a value +public fun destroy_some(t: Option): Element { + assert!(t.is_some(), EOPTION_NOT_SET); + let Option { mut vec } = t; + let elem = vec.pop_back(); + vec.destroy_empty(); + elem +} + +/// Unpack `t` +/// Aborts if `t` holds a value +public fun destroy_none(t: Option) { + assert!(t.is_none(), EOPTION_IS_SET); + let Option { vec } = t; + vec.destroy_empty() +} + +/// Convert `t` into a vector of length 1 if it is `Some`, +/// and an empty vector otherwise +public fun to_vec(t: Option): vector { + let Option { vec } = t; + vec +} + +// === Macro Functions === + +/// Destroy `Option` and call the closure `f` on the value inside if it holds one. +public macro fun destroy<$T>($o: Option<$T>, $f: |$T|) { + let o = $o; + o.do!($f); +} + +/// Destroy `Option` and call the closure `f` on the value inside if it holds one. +public macro fun do<$T>($o: Option<$T>, $f: |$T|) { + let o = $o; + if (o.is_some()) $f(o.destroy_some()) + else o.destroy_none() +} + +/// Execute a closure on the value inside `t` if it holds one. +public macro fun do_ref<$T>($o: &Option<$T>, $f: |&$T|) { + let o = $o; + if (o.is_some()) $f(o.borrow()); +} + +/// Execute a closure on the mutable reference to the value inside `t` if it holds one. +public macro fun do_mut<$T>($o: &mut Option<$T>, $f: |&mut $T|) { + let o = $o; + if (o.is_some()) $f(o.borrow_mut()); +} + +/// Select the first `Some` value from the two options, or `None` if both are `None`. +/// Equivalent to Rust's `a.or(b)`. +public macro fun or<$T>($o: Option<$T>, $default: Option<$T>): Option<$T> { + let o = $o; + if (o.is_some()) { + o + } else { + o.destroy_none(); + $default + } +} + +/// If the value is `Some`, call the closure `f` on it. Otherwise, return `None`. +/// Equivalent to Rust's `t.and_then(f)`. +public macro fun and<$T, $U>($o: Option<$T>, $f: |$T| -> Option<$U>): Option<$U> { + let o = $o; + if (o.is_some()) { + $f(o.destroy_some()) + } else { + o.destroy_none(); + none() + } +} + +/// If the value is `Some`, call the closure `f` on it. Otherwise, return `None`. +/// Equivalent to Rust's `t.and_then(f)`. +public macro fun and_ref<$T, $U>($o: &Option<$T>, $f: |&$T| -> Option<$U>): Option<$U> { + let o = $o; + if (o.is_some()) $f(o.borrow()) + else none() +} + +/// Map an `Option` to `Option` by applying a function to a contained value. +/// Equivalent to Rust's `t.map(f)`. +public macro fun map<$T, $U>($o: Option<$T>, $f: |$T| -> $U): Option<$U> { + let o = $o; + if (o.is_some()) { + some($f(o.destroy_some())) + } else { + o.destroy_none(); + none() + } +} + +/// Map an `Option` value to `Option` by applying a function to a contained value by reference. +/// Original `Option` is preserved. +/// Equivalent to Rust's `t.map(f)`. +public macro fun map_ref<$T, $U>($o: &Option<$T>, $f: |&$T| -> $U): Option<$U> { + let o = $o; + if (o.is_some()) some($f(o.borrow())) + else none() +} + +/// Return `None` if the value is `None`, otherwise return `Option` if the predicate `f` returns true. +public macro fun filter<$T: drop>($o: Option<$T>, $f: |&$T| -> bool): Option<$T> { + let o = $o; + if (o.is_some() && $f(o.borrow())) o + else none() +} + +/// Return `false` if the value is `None`, otherwise return the result of the predicate `f`. +public macro fun is_some_and<$T>($o: &Option<$T>, $f: |&$T| -> bool): bool { + let o = $o; + o.is_some() && $f(o.borrow()) +} + +/// Destroy `Option` and return the value inside if it holds one, or `default` otherwise. +/// Equivalent to Rust's `t.unwrap_or(default)`. +/// +/// Note: this function is a more efficient version of `destroy_with_default`, as it does not +/// evaluate the default value unless necessary. The `destroy_with_default` function should be +/// deprecated in favor of this function. +public macro fun destroy_or<$T>($o: Option<$T>, $default: $T): $T { + let o = $o; + if (o.is_some()) { + o.destroy_some() + } else { + o.destroy_none(); + $default + } +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/u64.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/u64.move new file mode 100644 index 0000000000000..e3bc76cc45f92 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/u64.move @@ -0,0 +1,111 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[defines_primitive(u64)] +module std::u64; + +use std::string::String; + +/// Returns the bitwise not of the value. +/// Each bit that is 1 becomes 0. Each bit that is 0 becomes 1. +public fun bitwise_not(x: u64): u64 { + x ^ max_value!() +} + +/// Return the larger of `x` and `y` +public fun max(x: u64, y: u64): u64 { + std::macros::num_max!(x, y) +} + +/// Return the smaller of `x` and `y` +public fun min(x: u64, y: u64): u64 { + std::macros::num_min!(x, y) +} + +/// Return the absolute value of x - y +public fun diff(x: u64, y: u64): u64 { + std::macros::num_diff!(x, y) +} + +/// Calculate x / y, but round up the result. +public fun divide_and_round_up(x: u64, y: u64): u64 { + std::macros::num_divide_and_round_up!(x, y) +} + +/// Return the value of a base raised to a power +public fun pow(base: u64, exponent: u8): u64 { + std::macros::num_pow!(base, exponent) +} + +/// Get a nearest lower integer Square Root for `x`. Given that this +/// function can only operate with integers, it is impossible +/// to get perfect (or precise) integer square root for some numbers. +/// +/// Example: +/// ``` +/// math::sqrt(9) => 3 +/// math::sqrt(8) => 2 // the nearest lower square root is 4; +/// ``` +/// +/// In integer math, one of the possible ways to get results with more +/// precision is to use higher values or temporarily multiply the +/// value by some bigger number. Ideally if this is a square of 10 or 100. +/// +/// Example: +/// ``` +/// math::sqrt(8) => 2; +/// math::sqrt(8 * 10000) => 282; +/// // now we can use this value as if it was 2.82; +/// // but to get the actual result, this value needs +/// // to be divided by 100 (because sqrt(10000)). +/// +/// +/// math::sqrt(8 * 1000000) => 2828; // same as above, 2828 / 1000 (2.828) +/// ``` +public fun sqrt(x: u64): u64 { + std::macros::num_sqrt!(x, 64) +} + +/// Try to convert a `u64` to a `u8`. Returns `None` if the value is too large. +public fun try_as_u8(x: u64): Option { + std::macros::try_as_u8!(x) +} + +/// Try to convert a `u64` to a `u16`. Returns `None` if the value is too large. +public fun try_as_u16(x: u64): Option { + std::macros::try_as_u16!(x) +} + +/// Try to convert a `u64` to a `u32`. Returns `None` if the value is too large. +public fun try_as_u32(x: u64): Option { + std::macros::try_as_u32!(x) +} + +public fun to_string(x: u64): String { + std::macros::num_to_string!(x) +} + +/// Maximum value for a `u64` +public macro fun max_value(): u64 { + 0xFFFF_FFFF_FFFF_FFFF +} + +/// Loops applying `$f` to each number from `$start` to `$stop` (exclusive) +public macro fun range_do($start: u64, $stop: u64, $f: |u64|) { + std::macros::range_do!($start, $stop, $f) +} + +/// Loops applying `$f` to each number from `$start` to `$stop` (inclusive) +public macro fun range_do_eq($start: u64, $stop: u64, $f: |u64|) { + std::macros::range_do_eq!($start, $stop, $f) +} + +/// Loops applying `$f` to each number from `0` to `$stop` (exclusive) +public macro fun do($stop: u64, $f: |u64|) { + std::macros::do!($stop, $f) +} + +/// Loops applying `$f` to each number from `0` to `$stop` (inclusive) +public macro fun do_eq($stop: u64, $f: |u64|) { + std::macros::do_eq!($stop, $f) +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/vector.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/vector.move new file mode 100644 index 0000000000000..a24d0cd3db9e3 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/MoveStdlib/vector.move @@ -0,0 +1,372 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[defines_primitive(vector)] +/// A variable-sized container that can hold any type. Indexing is 0-based, and +/// vectors are growable. This module has many native functions. +module std::vector; + +/// Allows calling `.to_string()` on a vector of `u8` to get a utf8 `String`. +public use fun std::string::utf8 as vector.to_string; + +/// Allows calling `.try_to_string()` on a vector of `u8` to get a utf8 `String`. +/// This will return `None` if the vector is not valid utf8. +public use fun std::string::try_utf8 as vector.try_to_string; + +/// Allows calling `.to_ascii_string()` on a vector of `u8` to get an `ascii::String`. +public use fun std::ascii::string as vector.to_ascii_string; + +/// Allows calling `.try_to_ascii_string()` on a vector of `u8` to get an +/// `ascii::String`. This will return `None` if the vector is not valid ascii. +public use fun std::ascii::try_string as vector.try_to_ascii_string; + +/// The index into the vector is out of bounds +const EINDEX_OUT_OF_BOUNDS: u64 = 0x20000; + +#[bytecode_instruction] +/// Create an empty vector. +public native fun empty(): vector; + +#[bytecode_instruction] +/// Return the length of the vector. +public native fun length(v: &vector): u64; + +#[syntax(index)] +#[bytecode_instruction] +/// Acquire an immutable reference to the `i`th element of the vector `v`. +/// Aborts if `i` is out of bounds. +public native fun borrow(v: &vector, i: u64): ∈ + +#[bytecode_instruction] +/// Add element `e` to the end of the vector `v`. +public native fun push_back(v: &mut vector, e: Element); + +#[syntax(index)] +#[bytecode_instruction] +/// Return a mutable reference to the `i`th element in the vector `v`. +/// Aborts if `i` is out of bounds. +public native fun borrow_mut(v: &mut vector, i: u64): &mut Element; + +#[bytecode_instruction] +/// Pop an element from the end of vector `v`. +/// Aborts if `v` is empty. +public native fun pop_back(v: &mut vector): Element; + +#[bytecode_instruction] +/// Destroy the vector `v`. +/// Aborts if `v` is not empty. +public native fun destroy_empty(v: vector); + +#[bytecode_instruction] +/// Swaps the elements at the `i`th and `j`th indices in the vector `v`. +/// Aborts if `i` or `j` is out of bounds. +public native fun swap(v: &mut vector, i: u64, j: u64); + +/// Return an vector of size one containing element `e`. +public fun singleton(e: Element): vector { + let mut v = empty(); + v.push_back(e); + v +} + +/// Reverses the order of the elements in the vector `v` in place. +public fun reverse(v: &mut vector) { + let len = v.length(); + if (len == 0) return (); + + let mut front_index = 0; + let mut back_index = len - 1; + while (front_index < back_index) { + v.swap(front_index, back_index); + front_index = front_index + 1; + back_index = back_index - 1; + } +} + +/// Pushes all of the elements of the `other` vector into the `lhs` vector. +public fun append(lhs: &mut vector, other: vector) { + other.do!(|e| lhs.push_back(e)); +} + +/// Return `true` if the vector `v` has no elements and `false` otherwise. +public fun is_empty(v: &vector): bool { + v.length() == 0 +} + +/// Return true if `e` is in the vector `v`. +/// Otherwise, returns false. +public fun contains(v: &vector, e: &Element): bool { + let mut i = 0; + let len = v.length(); + while (i < len) { + if (&v[i] == e) return true; + i = i + 1; + }; + false +} + +/// Return `(true, i)` if `e` is in the vector `v` at index `i`. +/// Otherwise, returns `(false, 0)`. +public fun index_of(v: &vector, e: &Element): (bool, u64) { + let mut i = 0; + let len = v.length(); + while (i < len) { + if (&v[i] == e) return (true, i); + i = i + 1; + }; + (false, 0) +} + +/// Remove the `i`th element of the vector `v`, shifting all subsequent elements. +/// This is O(n) and preserves ordering of elements in the vector. +/// Aborts if `i` is out of bounds. +public fun remove(v: &mut vector, mut i: u64): Element { + let mut len = v.length(); + // i out of bounds; abort + if (i >= len) abort EINDEX_OUT_OF_BOUNDS; + + len = len - 1; + while (i < len) v.swap(i, { + i = i + 1; + i + }); + v.pop_back() +} + +/// Insert `e` at position `i` in the vector `v`. +/// If `i` is in bounds, this shifts the old `v[i]` and all subsequent elements to the right. +/// If `i == v.length()`, this adds `e` to the end of the vector. +/// This is O(n) and preserves ordering of elements in the vector. +/// Aborts if `i > v.length()` +public fun insert(v: &mut vector, e: Element, mut i: u64) { + let len = v.length(); + // i too big abort + if (i > len) abort EINDEX_OUT_OF_BOUNDS; + + v.push_back(e); + while (i < len) { + v.swap(i, len); + i = i + 1 + } +} + +/// Swap the `i`th element of the vector `v` with the last element and then pop the vector. +/// This is O(1), but does not preserve ordering of elements in the vector. +/// Aborts if `i` is out of bounds. +public fun swap_remove(v: &mut vector, i: u64): Element { + assert!(v.length() != 0, EINDEX_OUT_OF_BOUNDS); + let last_idx = v.length() - 1; + v.swap(i, last_idx); + v.pop_back() +} + +// === Macros === + +/// Create a vector of length `n` by calling the function `f` on each index. +public macro fun tabulate<$T>($n: u64, $f: |u64| -> $T): vector<$T> { + let mut v = vector[]; + let n = $n; + n.do!(|i| v.push_back($f(i))); + v +} + +/// Destroy the vector `v` by calling `f` on each element and then destroying the vector. +/// Does not preserve the order of elements in the vector (starts from the end of the vector). +public macro fun destroy<$T>($v: vector<$T>, $f: |$T|) { + let mut v = $v; + while (v.length() != 0) $f(v.pop_back()); + v.destroy_empty(); +} + +/// Destroy the vector `v` by calling `f` on each element and then destroying the vector. +/// Preserves the order of elements in the vector. +public macro fun do<$T>($v: vector<$T>, $f: |$T|) { + let mut v = $v; + v.reverse(); + v.length().do!(|_| $f(v.pop_back())); + v.destroy_empty(); +} + +/// Perform an action `f` on each element of the vector `v`. The vector is not modified. +public macro fun do_ref<$T>($v: &vector<$T>, $f: |&$T|) { + let v = $v; + v.length().do!(|i| $f(&v[i])) +} + +/// Perform an action `f` on each element of the vector `v`. +/// The function `f` takes a mutable reference to the element. +public macro fun do_mut<$T>($v: &mut vector<$T>, $f: |&mut $T|) { + let v = $v; + v.length().do!(|i| $f(&mut v[i])) +} + +/// Map the vector `v` to a new vector by applying the function `f` to each element. +/// Preserves the order of elements in the vector, first is called first. +public macro fun map<$T, $U>($v: vector<$T>, $f: |$T| -> $U): vector<$U> { + let v = $v; + let mut r = vector[]; + v.do!(|e| r.push_back($f(e))); + r +} + +/// Map the vector `v` to a new vector by applying the function `f` to each element. +/// Preserves the order of elements in the vector, first is called first. +public macro fun map_ref<$T, $U>($v: &vector<$T>, $f: |&$T| -> $U): vector<$U> { + let v = $v; + let mut r = vector[]; + v.do_ref!(|e| r.push_back($f(e))); + r +} + +/// Filter the vector `v` by applying the function `f` to each element. +/// Return a new vector containing only the elements for which `f` returns `true`. +public macro fun filter<$T: drop>($v: vector<$T>, $f: |&$T| -> bool): vector<$T> { + let v = $v; + let mut r = vector[]; + v.do!(|e| if ($f(&e)) r.push_back(e)); + r +} + +/// Split the vector `v` into two vectors by applying the function `f` to each element. +/// Return a tuple containing two vectors: the first containing the elements for which `f` returns `true`, +/// and the second containing the elements for which `f` returns `false`. +public macro fun partition<$T>($v: vector<$T>, $f: |&$T| -> bool): (vector<$T>, vector<$T>) { + let v = $v; + let mut r1 = vector[]; + let mut r2 = vector[]; + v.do!(|e| if ($f(&e)) r1.push_back(e) else r2.push_back(e)); + (r1, r2) +} + +/// Finds the index of first element in the vector `v` that satisfies the predicate `f`. +/// Returns `some(index)` if such an element is found, otherwise `none()`. +public macro fun find_index<$T>($v: &vector<$T>, $f: |&$T| -> bool): Option { + let v = $v; + 'find_index: { + v.length().do!(|i| if ($f(&v[i])) return 'find_index option::some(i)); + option::none() + } +} + +/// Count how many elements in the vector `v` satisfy the predicate `f`. +public macro fun count<$T>($v: &vector<$T>, $f: |&$T| -> bool): u64 { + let v = $v; + let mut count = 0; + v.do_ref!(|e| if ($f(e)) count = count + 1); + count +} + +/// Reduce the vector `v` to a single value by applying the function `f` to each element. +/// Similar to `fold_left` in Rust and `reduce` in Python and JavaScript. +public macro fun fold<$T, $Acc>($v: vector<$T>, $init: $Acc, $f: |$Acc, $T| -> $Acc): $Acc { + let v = $v; + let mut acc = $init; + v.do!(|e| acc = $f(acc, e)); + acc +} + +/// Concatenate the vectors of `v` into a single vector, keeping the order of the elements. +public fun flatten(v: vector>): vector { + let mut r = vector[]; + v.do!(|u| r.append(u)); + r +} + +/// Whether any element in the vector `v` satisfies the predicate `f`. +/// If the vector is empty, returns `false`. +public macro fun any<$T>($v: &vector<$T>, $f: |&$T| -> bool): bool { + let v = $v; + 'any: { + v.do_ref!(|e| if ($f(e)) return 'any true); + false + } +} + +/// Whether all elements in the vector `v` satisfy the predicate `f`. +/// If the vector is empty, returns `true`. +public macro fun all<$T>($v: &vector<$T>, $f: |&$T| -> bool): bool { + let v = $v; + 'all: { + v.do_ref!(|e| if (!$f(e)) return 'all false); + true + } +} + +/// Destroys two vectors `v1` and `v2` by calling `f` to each pair of elements. +/// Aborts if the vectors are not of the same length. +/// The order of elements in the vectors is preserved. +public macro fun zip_do<$T1, $T2>($v1: vector<$T1>, $v2: vector<$T2>, $f: |$T1, $T2|) { + let v1 = $v1; + let mut v2 = $v2; + v2.reverse(); + let len = v1.length(); + assert!(len == v2.length()); + v1.do!(|el1| $f(el1, v2.pop_back())); +} + +/// Destroys two vectors `v1` and `v2` by calling `f` to each pair of elements. +/// Aborts if the vectors are not of the same length. +/// Starts from the end of the vectors. +public macro fun zip_do_reverse<$T1, $T2>($v1: vector<$T1>, $v2: vector<$T2>, $f: |$T1, $T2|) { + let v1 = $v1; + let mut v2 = $v2; + let len = v1.length(); + assert!(len == v2.length()); + v1.destroy!(|el1| $f(el1, v2.pop_back())); +} + +/// Iterate through `v1` and `v2` and apply the function `f` to references of each pair of +/// elements. The vectors are not modified. +/// Aborts if the vectors are not of the same length. +/// The order of elements in the vectors is preserved. +public macro fun zip_do_ref<$T1, $T2>($v1: &vector<$T1>, $v2: &vector<$T2>, $f: |&$T1, &$T2|) { + let v1 = $v1; + let v2 = $v2; + let len = v1.length(); + assert!(len == v2.length()); + len.do!(|i| $f(&v1[i], &v2[i])); +} + +/// Iterate through `v1` and `v2` and apply the function `f` to mutable references of each pair +/// of elements. The vectors may be modified. +/// Aborts if the vectors are not of the same length. +/// The order of elements in the vectors is preserved. +public macro fun zip_do_mut<$T1, $T2>( + $v1: &mut vector<$T1>, + $v2: &mut vector<$T2>, + $f: |&mut $T1, &mut $T2|, +) { + let v1 = $v1; + let v2 = $v2; + let len = v1.length(); + assert!(len == v2.length()); + len.do!(|i| $f(&mut v1[i], &mut v2[i])); +} + +/// Destroys two vectors `v1` and `v2` by applying the function `f` to each pair of elements. +/// The returned values are collected into a new vector. +/// Aborts if the vectors are not of the same length. +/// The order of elements in the vectors is preserved. +public macro fun zip_map<$T1, $T2, $U>( + $v1: vector<$T1>, + $v2: vector<$T2>, + $f: |$T1, $T2| -> $U, +): vector<$U> { + let mut r = vector[]; + zip_do!($v1, $v2, |el1, el2| r.push_back($f(el1, el2))); + r +} + +/// Iterate through `v1` and `v2` and apply the function `f` to references of each pair of +/// elements. The returned values are collected into a new vector. +/// Aborts if the vectors are not of the same length. +/// The order of elements in the vectors is preserved. +public macro fun zip_map_ref<$T1, $T2, $U>( + $v1: &vector<$T1>, + $v2: &vector<$T2>, + $f: |&$T1, &$T2| -> $U, +): vector<$U> { + let mut r = vector[]; + zip_do_ref!($v1, $v2, |el1, el2| r.push_back($f(el1, el2))); + r +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/dynamic_field.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/dynamic_field.move new file mode 100644 index 0000000000000..8b83d9b192aee --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/dynamic_field.move @@ -0,0 +1,170 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +#[allow(unused_const)] +/// In addition to the fields declared in its type definition, a Sui object can have dynamic fields +/// that can be added after the object has been constructed. Unlike ordinary field names +/// (which are always statically declared identifiers) a dynamic field name can be any value with +/// the `copy`, `drop`, and `store` abilities, e.g. an integer, a boolean, or a string. +/// This gives Sui programmers the flexibility to extend objects on-the-fly, and it also serves as a +/// building block for core collection types +module sui::dynamic_field; + +/// The object already has a dynamic field with this name (with the value and type specified) +const EFieldAlreadyExists: u64 = 0; +/// Cannot load dynamic field. +/// The object does not have a dynamic field with this name (with the value and type specified) +const EFieldDoesNotExist: u64 = 1; +/// The object has a field with that name, but the value type does not match +const EFieldTypeMismatch: u64 = 2; +/// Failed to serialize the field's name +const EBCSSerializationFailure: u64 = 3; +/// The object added as a dynamic field was previously a shared object +const ESharedObjectOperationNotSupported: u64 = 4; + +/// Internal object used for storing the field and value +public struct Field has key { + /// Determined by the hash of the object ID, the field name value and it's type, + /// i.e. hash(parent.id || name || Name) + id: UID, + /// The value for the name of this field + name: Name, + /// The value bound to this field + value: Value, +} + +/// Adds a dynamic field to the object `object: &mut UID` at field specified by `name: Name`. +/// Aborts with `EFieldAlreadyExists` if the object already has that field with that name. +public fun add( + // we use &mut UID in several spots for access control + object: &mut UID, + name: Name, + value: Value, +) { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + assert!(!has_child_object(object_addr, hash), EFieldAlreadyExists); + let field = Field { + id: object::new_uid_from_hash(hash), + name, + value, + }; + add_child_object(object_addr, field) +} + +/// Immutably borrows the `object`s dynamic field with the name specified by `name: Name`. +/// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. +/// Aborts with `EFieldTypeMismatch` if the field exists, but the value does not have the specified +/// type. +public fun borrow(object: &UID, name: Name): &Value { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + let field = borrow_child_object>(object, hash); + &field.value +} + +/// Mutably borrows the `object`s dynamic field with the name specified by `name: Name`. +/// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. +/// Aborts with `EFieldTypeMismatch` if the field exists, but the value does not have the specified +/// type. +public fun borrow_mut( + object: &mut UID, + name: Name, +): &mut Value { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + let field = borrow_child_object_mut>(object, hash); + &mut field.value +} + +/// Removes the `object`s dynamic field with the name specified by `name: Name` and returns the +/// bound value. +/// Aborts with `EFieldDoesNotExist` if the object does not have a field with that name. +/// Aborts with `EFieldTypeMismatch` if the field exists, but the value does not have the specified +/// type. +public fun remove(object: &mut UID, name: Name): Value { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + let Field { id, name: _, value } = remove_child_object>(object_addr, hash); + id.delete(); + value +} + +/// Returns true if and only if the `object` has a dynamic field with the name specified by +/// `name: Name` but without specifying the `Value` type +public fun exists_(object: &UID, name: Name): bool { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + has_child_object(object_addr, hash) +} + +/// Removes the dynamic field if it exists. Returns the `some(Value)` if it exists or none otherwise. +public fun remove_if_exists( + object: &mut UID, + name: Name, +): Option { + if (exists_(object, name)) { + option::some(remove(object, name)) + } else { + option::none() + } +} + +/// Returns true if and only if the `object` has a dynamic field with the name specified by +/// `name: Name` with an assigned value of type `Value`. +public fun exists_with_type( + object: &UID, + name: Name, +): bool { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + has_child_object_with_ty>(object_addr, hash) +} + +public(package) fun field_info( + object: &UID, + name: Name, +): (&UID, address) { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + let Field { id, name: _, value } = borrow_child_object>(object, hash); + (id, value.to_address()) +} + +public(package) fun field_info_mut( + object: &mut UID, + name: Name, +): (&mut UID, address) { + let object_addr = object.to_address(); + let hash = hash_type_and_key(object_addr, name); + let Field { id, name: _, value } = borrow_child_object_mut>(object, hash); + (id, value.to_address()) +} + +/// May abort with `EBCSSerializationFailure`. +public(package) native fun hash_type_and_key( + parent: address, + k: K, +): address; + +public(package) native fun add_child_object(parent: address, child: Child); + +/// throws `EFieldDoesNotExist` if a child does not exist with that ID +/// or throws `EFieldTypeMismatch` if the type does not match, +/// and may also abort with `EBCSSerializationFailure` +/// we need two versions to return a reference or a mutable reference +public(package) native fun borrow_child_object(object: &UID, id: address): &Child; + +public(package) native fun borrow_child_object_mut( + object: &mut UID, + id: address, +): &mut Child; + +/// throws `EFieldDoesNotExist` if a child does not exist with that ID +/// or throws `EFieldTypeMismatch` if the type does not match, +/// and may also abort with `EBCSSerializationFailure`. +public(package) native fun remove_child_object(parent: address, id: address): Child; + +public(package) native fun has_child_object(parent: address, id: address): bool; + +public(package) native fun has_child_object_with_ty(parent: address, id: address): bool; diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/linked_table.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/linked_table.move new file mode 100644 index 0000000000000..31bb50f0e4e69 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/linked_table.move @@ -0,0 +1,199 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Similar to `sui::table` but the values are linked together, allowing for ordered insertion and +/// removal +module sui::linked_table; + +use sui::dynamic_field as field; + +// Attempted to destroy a non-empty table +const ETableNotEmpty: u64 = 0; +// Attempted to remove the front or back of an empty table +const ETableIsEmpty: u64 = 1; + +public struct LinkedTable has key, store { + /// the ID of this table + id: UID, + /// the number of key-value pairs in the table + size: u64, + /// the front of the table, i.e. the key of the first entry + head: Option, + /// the back of the table, i.e. the key of the last entry + tail: Option, +} + +public struct Node has store { + /// the previous key + prev: Option, + /// the next key + next: Option, + /// the value being stored + value: V, +} + +/// Creates a new, empty table +public fun new(ctx: &mut TxContext): LinkedTable { + LinkedTable { + id: object::new(ctx), + size: 0, + head: option::none(), + tail: option::none(), + } +} + +/// Returns the key for the first element in the table, or None if the table is empty +public fun front(table: &LinkedTable): &Option { + &table.head +} + +/// Returns the key for the last element in the table, or None if the table is empty +public fun back(table: &LinkedTable): &Option { + &table.tail +} + +/// Inserts a key-value pair at the front of the table, i.e. the newly inserted pair will be +/// the first element in the table +/// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the table already has an entry with +/// that key `k: K`. +public fun push_front( + table: &mut LinkedTable, + k: K, + value: V, +) { + let old_head = table.head.swap_or_fill(k); + if (table.tail.is_none()) table.tail.fill(k); + let prev = option::none(); + let next = if (old_head.is_some()) { + let old_head_k = old_head.destroy_some(); + field::borrow_mut>(&mut table.id, old_head_k).prev = option::some(k); + option::some(old_head_k) + } else { + option::none() + }; + field::add(&mut table.id, k, Node { prev, next, value }); + table.size = table.size + 1; +} + +/// Inserts a key-value pair at the back of the table, i.e. the newly inserted pair will be +/// the last element in the table +/// Aborts with `sui::dynamic_field::EFieldAlreadyExists` if the table already has an entry with +/// that key `k: K`. +public fun push_back( + table: &mut LinkedTable, + k: K, + value: V, +) { + if (table.head.is_none()) table.head.fill(k); + let old_tail = table.tail.swap_or_fill(k); + let prev = if (old_tail.is_some()) { + let old_tail_k = old_tail.destroy_some(); + field::borrow_mut>(&mut table.id, old_tail_k).next = option::some(k); + option::some(old_tail_k) + } else { + option::none() + }; + let next = option::none(); + field::add(&mut table.id, k, Node { prev, next, value }); + table.size = table.size + 1; +} + +#[syntax(index)] +/// Immutable borrows the value associated with the key in the table `table: &LinkedTable`. +/// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with +/// that key `k: K`. +public fun borrow(table: &LinkedTable, k: K): &V { + &field::borrow>(&table.id, k).value +} + +#[syntax(index)] +/// Mutably borrows the value associated with the key in the table `table: &mut LinkedTable`. +/// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with +/// that key `k: K`. +public fun borrow_mut( + table: &mut LinkedTable, + k: K, +): &mut V { + &mut field::borrow_mut>(&mut table.id, k).value +} + +/// Borrows the key for the previous entry of the specified key `k: K` in the table +/// `table: &LinkedTable`. Returns None if the entry does not have a predecessor. +/// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with +/// that key `k: K` +public fun prev(table: &LinkedTable, k: K): &Option { + &field::borrow>(&table.id, k).prev +} + +/// Borrows the key for the next entry of the specified key `k: K` in the table +/// `table: &LinkedTable`. Returns None if the entry does not have a predecessor. +/// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with +/// that key `k: K` +public fun next(table: &LinkedTable, k: K): &Option { + &field::borrow>(&table.id, k).next +} + +/// Removes the key-value pair in the table `table: &mut LinkedTable` and returns the value. +/// This splices the element out of the ordering. +/// Aborts with `sui::dynamic_field::EFieldDoesNotExist` if the table does not have an entry with +/// that key `k: K`. Note: this is also what happens when the table is empty. +public fun remove(table: &mut LinkedTable, k: K): V { + let Node { prev, next, value } = field::remove(&mut table.id, k); + table.size = table.size - 1; + if (prev.is_some()) { + field::borrow_mut>(&mut table.id, *prev.borrow()).next = next + }; + if (next.is_some()) { + field::borrow_mut>(&mut table.id, *next.borrow()).prev = prev + }; + if (table.head.borrow() == &k) table.head = next; + if (table.tail.borrow() == &k) table.tail = prev; + value +} + +/// Removes the front of the table `table: &mut LinkedTable` and returns the value. +/// Aborts with `ETableIsEmpty` if the table is empty +public fun pop_front(table: &mut LinkedTable): (K, V) { + assert!(table.head.is_some(), ETableIsEmpty); + let head = *table.head.borrow(); + (head, table.remove(head)) +} + +/// Removes the back of the table `table: &mut LinkedTable` and returns the value. +/// Aborts with `ETableIsEmpty` if the table is empty +public fun pop_back(table: &mut LinkedTable): (K, V) { + assert!(table.tail.is_some(), ETableIsEmpty); + let tail = *table.tail.borrow(); + (tail, table.remove(tail)) +} + +/// Returns true iff there is a value associated with the key `k: K` in table +/// `table: &LinkedTable` +public fun contains(table: &LinkedTable, k: K): bool { + field::exists_with_type>(&table.id, k) +} + +/// Returns the size of the table, the number of key-value pairs +public fun length(table: &LinkedTable): u64 { + table.size +} + +/// Returns true iff the table is empty (if `length` returns `0`) +public fun is_empty(table: &LinkedTable): bool { + table.size == 0 +} + +/// Destroys an empty table +/// Aborts with `ETableNotEmpty` if the table still contains values +public fun destroy_empty(table: LinkedTable) { + let LinkedTable { id, size, head: _, tail: _ } = table; + assert!(size == 0, ETableNotEmpty); + id.delete() +} + +/// Drop a possibly non-empty table. +/// Usable only if the value type `V` has the `drop` ability +public fun drop(table: LinkedTable) { + let LinkedTable { id, size: _, head: _, tail: _ } = table; + id.delete() +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/object.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/object.move new file mode 100644 index 0000000000000..8bc0c67c38fc8 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/object.move @@ -0,0 +1,233 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +/// Sui object identifiers +module sui::object; + +use std::bcs; +use sui::address; + +/// Allows calling `.to_address` on an `ID` to get an `address`. +public use fun id_to_address as ID.to_address; + +/// Allows calling `.to_bytes` on an `ID` to get a `vector`. +public use fun id_to_bytes as ID.to_bytes; + +/// Allows calling `.as_inner` on a `UID` to get an `&ID`. +public use fun uid_as_inner as UID.as_inner; + +/// Allows calling `.to_inner` on a `UID` to get an `ID`. +public use fun uid_to_inner as UID.to_inner; + +/// Allows calling `.to_address` on a `UID` to get an `address`. +public use fun uid_to_address as UID.to_address; + +/// Allows calling `.to_bytes` on a `UID` to get a `vector`. +public use fun uid_to_bytes as UID.to_bytes; + +/// The hardcoded ID for the singleton Sui System State Object. +const SUI_SYSTEM_STATE_OBJECT_ID: address = @0x5; + +/// The hardcoded ID for the singleton Clock Object. +const SUI_CLOCK_OBJECT_ID: address = @0x6; + +/// The hardcoded ID for the singleton AuthenticatorState Object. +const SUI_AUTHENTICATOR_STATE_ID: address = @0x7; + +/// The hardcoded ID for the singleton Random Object. +const SUI_RANDOM_ID: address = @0x8; + +/// The hardcoded ID for the singleton DenyList. +const SUI_DENY_LIST_OBJECT_ID: address = @0x403; + +/// The hardcoded ID for the Bridge Object. +const SUI_BRIDGE_ID: address = @0x9; + +/// Sender is not @0x0 the system address. +const ENotSystemAddress: u64 = 0; + +/// An object ID. This is used to reference Sui Objects. +/// This is *not* guaranteed to be globally unique--anyone can create an `ID` from a `UID` or +/// from an object, and ID's can be freely copied and dropped. +/// Here, the values are not globally unique because there can be multiple values of type `ID` +/// with the same underlying bytes. For example, `object::id(&obj)` can be called as many times +/// as you want for a given `obj`, and each `ID` value will be identical. +public struct ID has copy, drop, store { + // We use `address` instead of `vector` here because `address` has a more + // compact serialization. `address` is serialized as a BCS fixed-length sequence, + // which saves us the length prefix we would pay for if this were `vector`. + // See https://github.com/diem/bcs#fixed-and-variable-length-sequences. + bytes: address, +} + +/// Globally unique IDs that define an object's ID in storage. Any Sui Object, that is a struct +/// with the `key` ability, must have `id: UID` as its first field. +/// These are globally unique in the sense that no two values of type `UID` are ever equal, in +/// other words for any two values `id1: UID` and `id2: UID`, `id1` != `id2`. +/// This is a privileged type that can only be derived from a `TxContext`. +/// `UID` doesn't have the `drop` ability, so deleting a `UID` requires a call to `delete`. +public struct UID has store { + id: ID, +} + +// === id === + +/// Get the raw bytes of a `ID` +public fun id_to_bytes(id: &ID): vector { + bcs::to_bytes(&id.bytes) +} + +/// Get the inner bytes of `id` as an address. +public fun id_to_address(id: &ID): address { + id.bytes +} + +/// Make an `ID` from raw bytes. +public fun id_from_bytes(bytes: vector): ID { + address::from_bytes(bytes).to_id() +} + +/// Make an `ID` from an address. +public fun id_from_address(bytes: address): ID { + ID { bytes } +} + +// === uid === + +#[allow(unused_function)] +/// Create the `UID` for the singleton `SuiSystemState` object. +/// This should only be called once from `sui_system`. +fun sui_system_state(ctx: &TxContext): UID { + assert!(ctx.sender() == @0x0, ENotSystemAddress); + UID { + id: ID { bytes: SUI_SYSTEM_STATE_OBJECT_ID }, + } +} + +/// Create the `UID` for the singleton `Clock` object. +/// This should only be called once from `clock`. +public(package) fun clock(): UID { + UID { + id: ID { bytes: SUI_CLOCK_OBJECT_ID }, + } +} + +/// Create the `UID` for the singleton `AuthenticatorState` object. +/// This should only be called once from `authenticator_state`. +public(package) fun authenticator_state(): UID { + UID { + id: ID { bytes: SUI_AUTHENTICATOR_STATE_ID }, + } +} + +/// Create the `UID` for the singleton `Random` object. +/// This should only be called once from `random`. +public(package) fun randomness_state(): UID { + UID { + id: ID { bytes: SUI_RANDOM_ID }, + } +} + +/// Create the `UID` for the singleton `DenyList` object. +/// This should only be called once from `deny_list`. +public(package) fun sui_deny_list_object_id(): UID { + UID { + id: ID { bytes: SUI_DENY_LIST_OBJECT_ID }, + } +} + +#[allow(unused_function)] +/// Create the `UID` for the singleton `Bridge` object. +/// This should only be called once from `bridge`. +fun bridge(): UID { + UID { + id: ID { bytes: SUI_BRIDGE_ID }, + } +} + +/// Get the inner `ID` of `uid` +public fun uid_as_inner(uid: &UID): &ID { + &uid.id +} + +/// Get the raw bytes of a `uid`'s inner `ID` +public fun uid_to_inner(uid: &UID): ID { + uid.id +} + +/// Get the raw bytes of a `UID` +public fun uid_to_bytes(uid: &UID): vector { + bcs::to_bytes(&uid.id.bytes) +} + +/// Get the inner bytes of `id` as an address. +public fun uid_to_address(uid: &UID): address { + uid.id.bytes +} + +// === any object === + +/// Create a new object. Returns the `UID` that must be stored in a Sui object. +/// This is the only way to create `UID`s. +public fun new(ctx: &mut TxContext): UID { + UID { + id: ID { bytes: ctx.fresh_object_address() }, + } +} + +/// Delete the object and it's `UID`. This is the only way to eliminate a `UID`. +// This exists to inform Sui of object deletions. When an object +// gets unpacked, the programmer will have to do something with its +// `UID`. The implementation of this function emits a deleted +// system event so Sui knows to process the object deletion +public fun delete(id: UID) { + let UID { id: ID { bytes } } = id; + delete_impl(bytes) +} + +/// Get the underlying `ID` of `obj` +public fun id(obj: &T): ID { + borrow_uid(obj).id +} + +/// Borrow the underlying `ID` of `obj` +public fun borrow_id(obj: &T): &ID { + &borrow_uid(obj).id +} + +/// Get the raw bytes for the underlying `ID` of `obj` +public fun id_bytes(obj: &T): vector { + bcs::to_bytes(&borrow_uid(obj).id) +} + +/// Get the inner bytes for the underlying `ID` of `obj` +public fun id_address(obj: &T): address { + borrow_uid(obj).id.bytes +} + +/// Get the `UID` for `obj`. +/// Safe because Sui has an extra bytecode verifier pass that forces every struct with +/// the `key` ability to have a distinguished `UID` field. +/// Cannot be made public as the access to `UID` for a given object must be privileged, and +/// restrictable in the object's module. +native fun borrow_uid(obj: &T): &UID; + +/// Generate a new UID specifically used for creating a UID from a hash +public(package) fun new_uid_from_hash(bytes: address): UID { + record_new_uid(bytes); + UID { id: ID { bytes } } +} + +// === internal functions === + +// helper for delete +native fun delete_impl(id: address); + +// marks newly created UIDs from hash +native fun record_new_uid(id: address); + +#[test_only] +/// Return the most recent created object ID. +public fun last_created(ctx: &TxContext): ID { + ID { bytes: ctx.last_created_object_id() } +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/tx_context.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/tx_context.move new file mode 100644 index 0000000000000..1fdef9ff83a81 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/dependencies/Sui/tx_context.move @@ -0,0 +1,141 @@ +// Copyright (c) Mysten Labs, Inc. +// SPDX-License-Identifier: Apache-2.0 + +module sui::tx_context; + +#[test_only] +/// Number of bytes in an tx hash (which will be the transaction digest) +const TX_HASH_LENGTH: u64 = 32; + +#[test_only] +/// Expected an tx hash of length 32, but found a different length +const EBadTxHashLength: u64 = 0; + +#[test_only] +/// Attempt to get the most recent created object ID when none has been created. +const ENoIDsCreated: u64 = 1; + +/// Information about the transaction currently being executed. +/// This cannot be constructed by a transaction--it is a privileged object created by +/// the VM and passed in to the entrypoint of the transaction as `&mut TxContext`. +public struct TxContext has drop { + /// The address of the user that signed the current transaction + sender: address, + /// Hash of the current transaction + tx_hash: vector, + /// The current epoch number + epoch: u64, + /// Timestamp that the epoch started at + epoch_timestamp_ms: u64, + /// Counter recording the number of fresh id's created while executing + /// this transaction. Always 0 at the start of a transaction + ids_created: u64, +} + +/// Return the address of the user that signed the current +/// transaction +public fun sender(self: &TxContext): address { + self.sender +} + +/// Return the transaction digest (hash of transaction inputs). +/// Please do not use as a source of randomness. +public fun digest(self: &TxContext): &vector { + &self.tx_hash +} + +/// Return the current epoch +public fun epoch(self: &TxContext): u64 { + self.epoch +} + +/// Return the epoch start time as a unix timestamp in milliseconds. +public fun epoch_timestamp_ms(self: &TxContext): u64 { + self.epoch_timestamp_ms +} + +/// Create an `address` that has not been used. As it is an object address, it will never +/// occur as the address for a user. +/// In other words, the generated address is a globally unique object ID. +public fun fresh_object_address(ctx: &mut TxContext): address { + let ids_created = ctx.ids_created; + let id = derive_id(*&ctx.tx_hash, ids_created); + ctx.ids_created = ids_created + 1; + id +} + +#[allow(unused_function)] +/// Return the number of id's created by the current transaction. +/// Hidden for now, but may expose later +fun ids_created(self: &TxContext): u64 { + self.ids_created +} + +/// Native function for deriving an ID via hash(tx_hash || ids_created) +native fun derive_id(tx_hash: vector, ids_created: u64): address; + +// ==== test-only functions ==== + +#[test_only] +/// Create a `TxContext` for testing +public fun new( + sender: address, + tx_hash: vector, + epoch: u64, + epoch_timestamp_ms: u64, + ids_created: u64, +): TxContext { + assert!(tx_hash.length() == TX_HASH_LENGTH, EBadTxHashLength); + TxContext { sender, tx_hash, epoch, epoch_timestamp_ms, ids_created } +} + +#[test_only] +/// Create a `TxContext` for testing, with a potentially non-zero epoch number. +public fun new_from_hint( + addr: address, + hint: u64, + epoch: u64, + epoch_timestamp_ms: u64, + ids_created: u64, +): TxContext { + new(addr, dummy_tx_hash_with_hint(hint), epoch, epoch_timestamp_ms, ids_created) +} + +#[test_only] +/// Create a dummy `TxContext` for testing +public fun dummy(): TxContext { + let tx_hash = x"3a985da74fe225b2045c172d6bd390bd855f086e3e9d525b46bfe24511431532"; + new(@0x0, tx_hash, 0, 0, 0) +} + +#[test_only] +/// Utility for creating 256 unique input hashes. +/// These hashes are guaranteed to be unique given a unique `hint: u64` +fun dummy_tx_hash_with_hint(hint: u64): vector { + let mut tx_hash = std::bcs::to_bytes(&hint); + while (tx_hash.length() < TX_HASH_LENGTH) tx_hash.push_back(0); + tx_hash +} + +#[test_only] +public fun get_ids_created(self: &TxContext): u64 { + ids_created(self) +} + +#[test_only] +/// Return the most recent created object ID. +public fun last_created_object_id(self: &TxContext): address { + let ids_created = self.ids_created; + assert!(ids_created > 0, ENoIDsCreated); + derive_id(*&self.tx_hash, ids_created - 1) +} + +#[test_only] +public fun increment_epoch_number(self: &mut TxContext) { + self.epoch = self.epoch + 1 +} + +#[test_only] +public fun increment_epoch_timestamp(self: &mut TxContext, delta_ms: u64) { + self.epoch_timestamp_ms = self.epoch_timestamp_ms + delta_ms +} diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/m.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/m.move new file mode 100644 index 0000000000000..b3f53bd51f868 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/build/global_write_ref/sources/m.move @@ -0,0 +1,25 @@ +// Test that write to a local variable `option_key` with a value +// coming from a global reference is handled correctly +module global_write_ref::m; + +use sui::linked_table; + +fun foo(table: &linked_table::LinkedTable): u64 { + let mut res = 0; + let mut option_key = table.front(); + while (option_key.is_some()) { + let key = *option_key.borrow(); + res = res + key; + option_key = table.next(key); + }; + res +} + +#[test] +fun test() { + let ctx = &mut tx_context::dummy(); + let mut table = linked_table::new(ctx); + table.push_back(7, 42); + foo(&table); + table.drop(); +} \ No newline at end of file diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/sources/m.move b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/sources/m.move new file mode 100644 index 0000000000000..b3f53bd51f868 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/sources/m.move @@ -0,0 +1,25 @@ +// Test that write to a local variable `option_key` with a value +// coming from a global reference is handled correctly +module global_write_ref::m; + +use sui::linked_table; + +fun foo(table: &linked_table::LinkedTable): u64 { + let mut res = 0; + let mut option_key = table.front(); + while (option_key.is_some()) { + let key = *option_key.borrow(); + res = res + key; + option_key = table.next(key); + }; + res +} + +#[test] +fun test() { + let ctx = &mut tx_context::dummy(); + let mut table = linked_table::new(ctx); + table.push_back(7, 42); + foo(&table); + table.drop(); +} \ No newline at end of file diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/test.exp b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/test.exp new file mode 100644 index 0000000000000..e69de29bb2d1d diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/trace.spec.js b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/trace.spec.js new file mode 100644 index 0000000000000..5f351cee9ddb1 --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/trace.spec.js @@ -0,0 +1,4 @@ +let action = (runtime) => { + return ''; +}; +run_spec(__dirname, action); diff --git a/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/traces/global_write_ref__m__test.json b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/traces/global_write_ref__m__test.json new file mode 100644 index 0000000000000..149eda0861c1c --- /dev/null +++ b/external-crates/move/crates/move-analyzer/trace-adapter/tests/global_write_ref/traces/global_write_ref__m__test.json @@ -0,0 +1 @@ +{"version":1,"events":[{"OpenFrame":{"frame":{"frame_id":0,"function_name":"test","module":{"address":"0000000000000000000000000000000000000000000000000000000000000000","name":"m"},"binary_member_index":1,"type_instantiation":[],"parameters":[],"return_types":[],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"tx_context","name":"TxContext","type_args":[]}},"ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":null}],"is_native":false},"gas_left":1000000000}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":1000000000,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":2,"function_name":"dummy","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"tx_context"},"binary_member_index":9,"type_instantiation":[],"parameters":[],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"tx_context","name":"TxContext","type_args":[]}},"ref_type":null}],"locals_types":[],"is_native":false},"gas_left":1000000000}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999965,"instruction":"LD_CONST"}},{"Effect":{"Push":{"RuntimeValue":{"value":"0000000000000000000000000000000000000000000000000000000000000000"}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999930,"instruction":"LD_CONST"}},{"Effect":{"Push":{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999927,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999924,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999921,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999999921,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":14,"function_name":"new","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"tx_context"},"binary_member_index":7,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":"0000000000000000000000000000000000000000000000000000000000000000"}},{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}},{"RuntimeValue":{"value":0}},{"RuntimeValue":{"value":0}},{"RuntimeValue":{"value":0}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"tx_context","name":"TxContext","type_args":[]}},"ref_type":null}],"locals_types":[{"type_":"address","ref_type":null},{"type_":{"vector":"u8"},"ref_type":null},{"type_":"u64","ref_type":null},{"type_":"u64","ref_type":null},{"type_":"u64","ref_type":null}],"is_native":false},"gas_left":999999921}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999910,"instruction":"IMM_BORROW_LOC"}},{"Effect":{"Read":{"location":{"Local":[14,1]},"root_value_read":{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[14,1]},"snapshot":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999907,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Local":[14,1]},"snapshot":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}}}},{"Effect":{"Push":{"RuntimeValue":{"value":32}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999897,"instruction":"LD_CONST"}},{"Effect":{"Push":{"RuntimeValue":{"value":32}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999862,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":32}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":32}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999861,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999999860,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999999826,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[14,0]},"root_value_read":{"RuntimeValue":{"value":"0000000000000000000000000000000000000000000000000000000000000000"}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":"0000000000000000000000000000000000000000000000000000000000000000"}}}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999999792,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[14,1]},"root_value_read":{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999999774,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[14,2]},"root_value_read":{"RuntimeValue":{"value":0}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999999756,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[14,3]},"root_value_read":{"RuntimeValue":{"value":0}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999999738,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[14,4]},"root_value_read":{"RuntimeValue":{"value":0}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999999734,"instruction":"PACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":"0000000000000000000000000000000000000000000000000000000000000000"}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999999733,"instruction":"RET"}},{"CloseFrame":{"frame_id":14,"return_":[{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}],"gas_left":999999733}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999999732,"instruction":"RET"}},{"CloseFrame":{"frame_id":2,"return_":[{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}],"gas_left":999999732}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999731,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Write":{"location":{"Local":[0,0]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999721,"instruction":"MUT_BORROW_LOC"}},{"Effect":{"Read":{"location":{"Local":[0,0]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999721,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":63,"function_name":"new","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"linked_table"},"binary_member_index":0,"type_instantiation":["u64","u8"],"parameters":[{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"tx_context","name":"TxContext","type_args":[]}},"ref_type":"Mut"}],"is_native":false},"gas_left":999999721}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999710,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[63,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999710,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":68,"function_name":"new","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":14,"type_instantiation":[],"parameters":[{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"tx_context","name":"TxContext","type_args":[]}},"ref_type":"Mut"}],"is_native":false},"gas_left":999999710}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999699,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[68,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999699,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":73,"function_name":"fresh_object_address","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"tx_context"},"binary_member_index":4,"type_instantiation":[],"parameters":[{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}],"return_types":[{"type_":"address","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"tx_context","name":"TxContext","type_args":[]}},"ref_type":"Mut"},{"type_":"address","ref_type":null},{"type_":"u64","ref_type":null}],"is_native":false},"gas_left":999999699}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999688,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[73,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999678,"instruction":"IMM_BORROW_FIELD"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,0]},4]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999660,"instruction":"READ_REF"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,0]},4]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Read":{"location":{"Indexed":[{"Local":[0,0]},4]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999659,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Write":{"location":{"Local":[73,2]},"root_value_after_write":{"RuntimeValue":{"value":0}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999649,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[73,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999999639,"instruction":"IMM_BORROW_FIELD"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,0]},1]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999999605,"instruction":"READ_REF"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,0]},1]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Read":{"location":{"Indexed":[{"Local":[0,0]},1]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}}}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999999587,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[73,2]},"root_value_read":{"RuntimeValue":{"value":0}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999999587,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":101,"function_name":"derive_id","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"tx_context"},"binary_member_index":6,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50]}},{"RuntimeValue":{"value":0}}],"return_types":[{"type_":"address","ref_type":null}],"locals_types":[{"type_":{"vector":"u8"},"ref_type":null},{"type_":"u64","ref_type":null}],"is_native":true},"gas_left":999999587}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"CloseFrame":{"frame_id":101,"return_":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}],"gas_left":999999500}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999999499,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Effect":{"Write":{"location":{"Local":[73,1]},"root_value_after_write":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999999481,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[73,2]},"root_value_read":{"RuntimeValue":{"value":0}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999999478,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999999475,"instruction":"ADD"}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999999465,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[73,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999999455,"instruction":"MUT_BORROW_FIELD"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,0]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,0]},4]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Instruction":{"type_parameters":[],"pc":15,"gas_left":999999437,"instruction":"WRITE_REF"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Local":[0,0]},4]},"snapshot":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":0}}}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Effect":{"Write":{"location":{"Indexed":[{"Local":[0,0]},4]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::tx_context::TxContext","fields":{"sender":"0000000000000000000000000000000000000000000000000000000000000000","tx_hash":[58,152,93,167,79,226,37,178,4,92,23,45,107,211,144,189,133,95,8,110,62,157,82,91,70,191,226,69,17,67,21,50],"epoch":0,"epoch_timestamp_ms":0,"ids_created":1}}}}}}},{"Instruction":{"type_parameters":[],"pc":16,"gas_left":999999403,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[73,1]},"root_value_read":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":17,"gas_left":999999402,"instruction":"RET"}},{"CloseFrame":{"frame_id":73,"return_":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}],"gas_left":999999402}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999398,"instruction":"PACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999394,"instruction":"PACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999393,"instruction":"RET"}},{"CloseFrame":{"frame_id":68,"return_":[{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}],"gas_left":999999393}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999390,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999390,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":142,"function_name":"none","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":0,"type_instantiation":["u64"],"parameters":[],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"locals_types":[],"is_native":false},"gas_left":999999390}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999379,"instruction":"VEC_PACK"}},{"Effect":{"Push":{"RuntimeValue":{"value":[]}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999999375,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":[]}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999374,"instruction":"RET"}},{"CloseFrame":{"frame_id":142,"return_":[{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"gas_left":999999374}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999374,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":151,"function_name":"none","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":0,"type_instantiation":["u64"],"parameters":[],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"locals_types":[],"is_native":false},"gas_left":999999374}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999363,"instruction":"VEC_PACK"}},{"Effect":{"Push":{"RuntimeValue":{"value":[]}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999999359,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":[]}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999358,"instruction":"RET"}},{"CloseFrame":{"frame_id":151,"return_":[{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"gas_left":999999358}},{"Instruction":{"type_parameters":["u64","u8"],"pc":5,"gas_left":999999354,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999999353,"instruction":"RET"}},{"CloseFrame":{"frame_id":63,"return_":[{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}],"gas_left":999999353}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999352,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Write":{"location":{"Local":[0,1]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999999342,"instruction":"MUT_BORROW_LOC"}},{"Effect":{"Read":{"location":{"Local":[0,1]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999999339,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999999336,"instruction":"LD_U8"}},{"Effect":{"Push":{"RuntimeValue":{"value":42}}}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999999336,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":178,"function_name":"push_back","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"linked_table"},"binary_member_index":4,"type_instantiation":["u64","u8"],"parameters":[{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"RuntimeValue":{"value":7}},{"RuntimeValue":{"value":42}}],"return_types":[],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":"Mut"},{"type_":"u64","ref_type":null},{"type_":"u8","ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null},{"type_":"u64","ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"is_native":false},"gas_left":999999336}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999325,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":1,"gas_left":999999315,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999315,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":186,"function_name":"is_none","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":2,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999999315}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999304,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[186,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999999294,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999294,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":194,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999999294}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999283,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[194,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999280,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999277,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999242,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999241,"instruction":"RET"}},{"CloseFrame":{"frame_id":194,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999999241}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999240,"instruction":"RET"}},{"CloseFrame":{"frame_id":186,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999999240}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999239,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999229,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":5,"gas_left":999999219,"instruction":"MUT_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999999201,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999999201,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":223,"function_name":"fill","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":8,"type_instantiation":["u64"],"parameters":[{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"RuntimeValue":{"value":7}}],"return_types":[],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Mut"},{"type_":"u64","ref_type":null},{"type_":{"vector":"u64"},"ref_type":"Mut"}],"is_native":false},"gas_left":999999201}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999190,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[223,0]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999999180,"instruction":"MUT_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999179,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Write":{"location":{"Local":[223,2]},"root_value_after_write":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999169,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[223,2]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999159,"instruction":"FREEZE_REF"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999999159,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":240,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999999159}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999148,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[240,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999999145,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999142,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999107,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999999106,"instruction":"RET"}},{"CloseFrame":{"frame_id":240,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999999106}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999999105,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999999104,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999999094,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[223,2]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999999076,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[223,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999999075,"instruction":"VEC_PUSH_BACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Write":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":15,"gas_left":999999074,"instruction":"RET"}},{"CloseFrame":{"frame_id":223,"return_":[],"gas_left":999999074}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999999064,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":9,"gas_left":999999054,"instruction":"MUT_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},3]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999999036,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999999036,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":280,"function_name":"swap_or_fill","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":12,"type_instantiation":["u64"],"parameters":[{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},3]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"RuntimeValue":{"value":7}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Mut"},{"type_":"u64","ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null},{"type_":{"vector":"u64"},"ref_type":"Mut"}],"is_native":false},"gas_left":999999036}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999999025,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[280,0]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},3]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},3]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999999015,"instruction":"MUT_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},3]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999999014,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Write":{"location":{"Local":[280,4]},"root_value_after_write":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999999004,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[280,4]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999998994,"instruction":"FREEZE_REF"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999998994,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":297,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999998994}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998983,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[297,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999998980,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998977,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999998942,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999998941,"instruction":"RET"}},{"CloseFrame":{"frame_id":297,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999998941}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999998940,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999998940,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":315,"function_name":"none","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":0,"type_instantiation":["u64"],"parameters":[],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"locals_types":[],"is_native":false},"gas_left":999998940}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998929,"instruction":"VEC_PACK"}},{"Effect":{"Push":{"RuntimeValue":{"value":[]}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999998925,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":[]}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998924,"instruction":"RET"}},{"CloseFrame":{"frame_id":315,"return_":[{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"gas_left":999998924}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999998923,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Write":{"location":{"Local":[280,2]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999998922,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999998918,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[280,2]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":15,"gas_left":999998917,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Write":{"location":{"Local":[280,3]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}},{"Instruction":{"type_parameters":[],"pc":16,"gas_left":999998907,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[280,4]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":17,"gas_left":999998889,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[280,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":18,"gas_left":999998888,"instruction":"VEC_PUSH_BACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}}},{"Effect":{"Write":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},3]},0]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":19,"gas_left":999998884,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[280,3]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":20,"gas_left":999998883,"instruction":"RET"}},{"CloseFrame":{"frame_id":280,"return_":[{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"gas_left":999998883}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999998882,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Write":{"location":{"Local":[178,5]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999998872,"instruction":"IMM_BORROW_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,5]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[178,5]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999998872,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":355,"function_name":"is_some","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":3,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Local":[178,5]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999998872}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998861,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[355,0]},"root_value_read":{"ImmRef":{"location":{"Local":[178,5]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[178,5]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999998851,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Local":[178,5]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[178,5]},0]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998851,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":363,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[178,5]},0]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999998851}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998840,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[363,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[178,5]},0]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[178,5]},0]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999998837,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[178,5]},0]},"snapshot":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998834,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999998799,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999998798,"instruction":"RET"}},{"CloseFrame":{"frame_id":363,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999998798}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999998795,"instruction":"NOT"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Effect":{"Push":{"RuntimeValue":{"value":false}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999998794,"instruction":"RET"}},{"CloseFrame":{"frame_id":355,"return_":[{"RuntimeValue":{"value":false}}],"gas_left":999998794}},{"Instruction":{"type_parameters":[],"pc":15,"gas_left":999998793,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":false}}}},{"Instruction":{"type_parameters":[],"pc":31,"gas_left":999998793,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":386,"function_name":"none","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":0,"type_instantiation":["u64"],"parameters":[],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"locals_types":[],"is_native":false},"gas_left":999998793}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998782,"instruction":"VEC_PACK"}},{"Effect":{"Push":{"RuntimeValue":{"value":[]}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999998778,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":[]}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998777,"instruction":"RET"}},{"CloseFrame":{"frame_id":386,"return_":[{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"gas_left":999998777}},{"Instruction":{"type_parameters":[],"pc":32,"gas_left":999998776,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Write":{"location":{"Local":[178,3]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}},{"Instruction":{"type_parameters":[],"pc":33,"gas_left":999998772,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,3]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":34,"gas_left":999998771,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Write":{"location":{"Local":[178,7]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}},{"Instruction":{"type_parameters":[],"pc":35,"gas_left":999998771,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":404,"function_name":"none","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":0,"type_instantiation":["u64"],"parameters":[],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":null}],"locals_types":[],"is_native":false},"gas_left":999998771}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998760,"instruction":"VEC_PACK"}},{"Effect":{"Push":{"RuntimeValue":{"value":[]}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999998756,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":[]}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998755,"instruction":"RET"}},{"CloseFrame":{"frame_id":404,"return_":[{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}],"gas_left":999998755}},{"Instruction":{"type_parameters":[],"pc":36,"gas_left":999998754,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Write":{"location":{"Local":[178,4]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}}},{"Instruction":{"type_parameters":[],"pc":37,"gas_left":999998744,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":38,"gas_left":999998734,"instruction":"MUT_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":39,"gas_left":999998716,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":40,"gas_left":999998712,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,7]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":41,"gas_left":999998708,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,4]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Instruction":{"type_parameters":[],"pc":42,"gas_left":999998690,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,2]},"root_value_read":{"RuntimeValue":{"value":42}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":42}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":43,"gas_left":999998686,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":42}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[]}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},{"Instruction":{"type_parameters":[],"pc":44,"gas_left":999998686,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":439,"function_name":"add","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":0,"type_instantiation":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}],"parameters":[{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"RuntimeValue":{"value":7}},{"RuntimeValue":{"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}],"return_types":[],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":"Mut"},{"type_":"u64","ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}},"ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"dynamic_field","name":"Field","type_args":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}]}},"ref_type":null},{"type_":"address","ref_type":null},{"type_":"address","ref_type":null}],"is_native":false},"gas_left":999998686}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998675,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,0]},"root_value_read":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999998665,"instruction":"FREEZE_REF"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998665,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":447,"function_name":"uid_to_address","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":13,"type_instantiation":[],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"address","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999998665}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998654,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[447,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999998644,"instruction":"IMM_BORROW_FIELD"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999998634,"instruction":"IMM_BORROW_FIELD"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999998600,"instruction":"READ_REF"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Read":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},0]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999998599,"instruction":"RET"}},{"CloseFrame":{"frame_id":447,"return_":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}],"gas_left":999998599}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999998598,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Effect":{"Write":{"location":{"Local":[439,5]},"root_value_after_write":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999998564,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,5]},"root_value_read":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999998546,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999998546,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":473,"function_name":"hash_type_and_key","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":9,"type_instantiation":["u64"],"parameters":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},{"RuntimeValue":{"value":7}}],"return_types":[{"type_":"address","ref_type":null}],"locals_types":[{"type_":"address","ref_type":null},{"type_":"u64","ref_type":null}],"is_native":true},"gas_left":999998546}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"CloseFrame":{"frame_id":473,"return_":[{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}],"gas_left":999998329}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999998328,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Effect":{"Write":{"location":{"Local":[439,4]},"root_value_after_write":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999998294,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,5]},"root_value_read":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999998260,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,4]},"root_value_read":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999998260,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":486,"function_name":"has_child_object","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":14,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":"address","ref_type":null},{"type_":"address","ref_type":null}],"is_native":true},"gas_left":999998260}},{"Effect":{"Push":{"RuntimeValue":{"value":false}}}},{"CloseFrame":{"frame_id":486,"return_":[{"RuntimeValue":{"value":false}}],"gas_left":999998141}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999998138,"instruction":"NOT"}},{"Effect":{"Pop":{"RuntimeValue":{"value":false}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999998137,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999998136,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":16,"gas_left":999998102,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,4]},"root_value_read":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Instruction":{"type_parameters":[],"pc":17,"gas_left":999998102,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":499,"function_name":"new_uid_from_hash","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":21,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":null}],"locals_types":[{"type_":"address","ref_type":null}],"is_native":false},"gas_left":999998102}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999998067,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[499,0]},"root_value_read":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999998067,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":504,"function_name":"record_new_uid","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":23,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}],"return_types":[],"locals_types":[{"type_":"address","ref_type":null}],"is_native":true},"gas_left":999998067}},{"CloseFrame":{"frame_id":504,"return_":[],"gas_left":999998013}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999997979,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[499,0]},"root_value_read":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999997975,"instruction":"PACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999997971,"instruction":"PACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999997970,"instruction":"RET"}},{"CloseFrame":{"frame_id":499,"return_":[{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}}}],"gas_left":999997970}},{"Instruction":{"type_parameters":[],"pc":18,"gas_left":999997952,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":19,"gas_left":999997928,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,2]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},{"Instruction":{"type_parameters":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}],"pc":20,"gas_left":999997924,"instruction":"PACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":21,"gas_left":999997923,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Effect":{"Write":{"location":{"Local":[439,3]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":22,"gas_left":999997889,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,5]},"root_value_read":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":23,"gas_left":999997811,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[439,3]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":24,"gas_left":999997811,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":538,"function_name":"add_child_object","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":10,"type_instantiation":[{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"dynamic_field","name":"Field","type_args":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}]}}],"parameters":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},{"RuntimeValue":{"value":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}],"return_types":[],"locals_types":[{"type_":"address","ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"dynamic_field","name":"Field","type_args":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}]}},"ref_type":null}],"is_native":true},"gas_left":999997811}},{"CloseFrame":{"frame_id":538,"return_":[],"gas_left":999994959}},{"Instruction":{"type_parameters":[],"pc":25,"gas_left":999994958,"instruction":"RET"}},{"CloseFrame":{"frame_id":439,"return_":[],"gas_left":999994958}},{"Instruction":{"type_parameters":[],"pc":45,"gas_left":999994948,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":46,"gas_left":999994938,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":47,"gas_left":999994920,"instruction":"READ_REF"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Read":{"location":{"Indexed":[{"Local":[0,1]},1]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":48,"gas_left":999994917,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":49,"gas_left":999994914,"instruction":"ADD"}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":50,"gas_left":999994904,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[178,0]},"root_value_read":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":51,"gas_left":999994894,"instruction":"MUT_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"MutRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":52,"gas_left":999994876,"instruction":"WRITE_REF"}},{"Effect":{"Pop":{"MutRef":{"location":{"Indexed":[{"Local":[0,1]},1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":0,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Effect":{"Write":{"location":{"Indexed":[{"Local":[0,1]},1]},"root_value_after_write":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":53,"gas_left":999994875,"instruction":"RET"}},{"CloseFrame":{"frame_id":178,"return_":[],"gas_left":999994875}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999994865,"instruction":"IMM_BORROW_LOC"}},{"Effect":{"Read":{"location":{"Local":[0,1]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999994865,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":574,"function_name":"foo","module":{"address":"0000000000000000000000000000000000000000000000000000000000000000","name":"m"},"binary_member_index":0,"type_instantiation":[],"parameters":[{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"u64","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":"Imm"},{"type_":"u64","ref_type":null},{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"},{"type_":"u64","ref_type":null}],"is_native":false},"gas_left":999994865}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994861,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999994860,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Write":{"location":{"Local":[574,3]},"root_value_after_write":{"RuntimeValue":{"value":0}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994850,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,0]},"root_value_read":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994850,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":584,"function_name":"front","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"linked_table"},"binary_member_index":1,"type_instantiation":["u64","u8"],"parameters":[{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999994850}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994839,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[584,0]},"root_value_read":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":1,"gas_left":999994829,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994828,"instruction":"RET"}},{"CloseFrame":{"frame_id":584,"return_":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"gas_left":999994828}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994827,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Write":{"location":{"Local":[574,2]},"root_value_after_write":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999994817,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,2]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999994817,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":600,"function_name":"is_some","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":3,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999994817}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994806,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[600,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999994796,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994796,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":608,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999994796}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994785,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[608,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999994782,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994779,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994744,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Effect":{"Push":{"RuntimeValue":{"value":false}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994743,"instruction":"RET"}},{"CloseFrame":{"frame_id":608,"return_":[{"RuntimeValue":{"value":false}}],"gas_left":999994743}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994740,"instruction":"NOT"}},{"Effect":{"Pop":{"RuntimeValue":{"value":false}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994739,"instruction":"RET"}},{"CloseFrame":{"frame_id":600,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999994739}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999994738,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999994737,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999994727,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,2]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999994727,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":635,"function_name":"borrow","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":5,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"u64","ref_type":"Imm"}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999994727}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994716,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[635,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999994716,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":640,"function_name":"is_some","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":3,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999994716}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994705,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[640,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999994695,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994695,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":648,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999994695}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994684,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[648,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999994681,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994678,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994643,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Effect":{"Push":{"RuntimeValue":{"value":false}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994642,"instruction":"RET"}},{"CloseFrame":{"frame_id":648,"return_":[{"RuntimeValue":{"value":false}}],"gas_left":999994642}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994639,"instruction":"NOT"}},{"Effect":{"Pop":{"RuntimeValue":{"value":false}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994638,"instruction":"RET"}},{"CloseFrame":{"frame_id":640,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999994638}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994637,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994636,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":8,"gas_left":999994626,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[635,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":9,"gas_left":999994616,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},2]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":10,"gas_left":999994613,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999994603,"instruction":"VEC_IMM_BORROW"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999994602,"instruction":"RET"}},{"CloseFrame":{"frame_id":635,"return_":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"gas_left":999994602}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999994584,"instruction":"READ_REF"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Read":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},2]},0]},0]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999994583,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Effect":{"Write":{"location":{"Local":[574,1]},"root_value_after_write":{"RuntimeValue":{"value":7}}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999994565,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,3]},"root_value_read":{"RuntimeValue":{"value":0}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999994547,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":15,"gas_left":999994544,"instruction":"ADD"}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":16,"gas_left":999994543,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Effect":{"Write":{"location":{"Local":[574,3]},"root_value_after_write":{"RuntimeValue":{"value":7}}}}},{"Instruction":{"type_parameters":[],"pc":17,"gas_left":999994533,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,0]},"root_value_read":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":18,"gas_left":999994515,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":19,"gas_left":999994515,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":712,"function_name":"next","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"linked_table"},"binary_member_index":8,"type_instantiation":["u64","u8"],"parameters":[{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"RuntimeValue":{"value":7}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":"Imm"},{"type_":"u64","ref_type":null}],"is_native":false},"gas_left":999994515}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994504,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[712,0]},"root_value_read":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":["u64","u8"],"pc":1,"gas_left":999994494,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994476,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[712,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994476,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":723,"function_name":"borrow","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":1,"type_instantiation":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"RuntimeValue":{"value":7}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}},"ref_type":"Imm"}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":"Imm"},{"type_":"u64","ref_type":null},{"type_":"address","ref_type":null}],"is_native":false},"gas_left":999994476}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994465,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[723,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999994465,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":728,"function_name":"uid_to_address","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":13,"type_instantiation":[],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[{"type_":"address","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999994465}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999994454,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[728,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999994444,"instruction":"IMM_BORROW_FIELD"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994434,"instruction":"IMM_BORROW_FIELD"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994400,"instruction":"READ_REF"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Read":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Local":[0,1]},0]},0]},0]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":false}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994399,"instruction":"RET"}},{"CloseFrame":{"frame_id":728,"return_":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}],"gas_left":999994399}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999994381,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[723,1]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999994381,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":748,"function_name":"hash_type_and_key","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":9,"type_instantiation":["u64"],"parameters":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}},{"RuntimeValue":{"value":7}}],"return_types":[{"type_":"address","ref_type":null}],"locals_types":[{"type_":"address","ref_type":null},{"type_":"u64","ref_type":null}],"is_native":true},"gas_left":999994381}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"CloseFrame":{"frame_id":748,"return_":[{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}],"gas_left":999994164}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999994163,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Effect":{"Write":{"location":{"Local":[723,2]},"root_value_after_write":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999994153,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[723,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999994119,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[723,2]},"root_value_read":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999994119,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":761,"function_name":"borrow_child_object","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"dynamic_field"},"binary_member_index":11,"type_instantiation":[{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"dynamic_field","name":"Field","type_args":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}]}}],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Local":[0,1]},0]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"RuntimeValue":{"value":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}],"return_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"dynamic_field","name":"Field","type_args":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}]}},"ref_type":"Imm"}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":"Imm"},{"type_":"address","ref_type":null}],"is_native":true},"gas_left":999994119}},{"Effect":{"DataLoad":{"ref_type":"Imm","location":{"Global":762},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Global":762},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"CloseFrame":{"frame_id":761,"return_":[{"ImmRef":{"location":{"Global":762},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}],"gas_left":999993878}},{"Instruction":{"type_parameters":["u64",{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"Node","type_args":["u64","u8"]}}],"pc":8,"gas_left":999993868,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Global":762},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Global":762},2]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":9,"gas_left":999993867,"instruction":"RET"}},{"CloseFrame":{"frame_id":723,"return_":[{"ImmRef":{"location":{"Indexed":[{"Global":762},2]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}],"gas_left":999993867}},{"Instruction":{"type_parameters":["u64","u8"],"pc":4,"gas_left":999993857,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Global":762},2]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999993856,"instruction":"RET"}},{"CloseFrame":{"frame_id":712,"return_":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}],"gas_left":999993856}},{"Instruction":{"type_parameters":[],"pc":20,"gas_left":999993855,"instruction":"ST_LOC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Effect":{"Write":{"location":{"Local":[574,2]},"root_value_after_write":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}}},{"Instruction":{"type_parameters":[],"pc":21,"gas_left":999993854,"instruction":"BRANCH"}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999993844,"instruction":"COPY_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,2]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},"moved":false}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999993844,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":783,"function_name":"is_some","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"option"},"binary_member_index":3,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000001","module":"option","name":"Option","type_args":["u64"]}},"ref_type":"Imm"}],"is_native":false},"gas_left":999993844}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999993833,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[783,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":["u64"],"pc":1,"gas_left":999993823,"instruction":"IMM_BORROW_FIELD_GENERIC"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Global":762},2]},1]},0]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999993823,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":791,"function_name":"is_empty","module":{"address":"0000000000000000000000000000000000000000000000000000000000000001","name":"vector"},"binary_member_index":11,"type_instantiation":["u64"],"parameters":[{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Global":762},2]},1]},0]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}],"return_types":[{"type_":"bool","ref_type":null}],"locals_types":[{"type_":{"vector":"u64"},"ref_type":"Imm"}],"is_native":false},"gas_left":999993823}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999993812,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[791,0]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Global":762},2]},1]},0]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Global":762},2]},1]},0]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999993809,"instruction":"VEC_LEN"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Indexed":[{"Global":762},2]},1]},0]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999993806,"instruction":"LD_U64"}},{"Effect":{"Push":{"RuntimeValue":{"value":0}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999993771,"instruction":"EQ"}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Pop":{"RuntimeValue":{"value":0}}}},{"Effect":{"Push":{"RuntimeValue":{"value":true}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999993770,"instruction":"RET"}},{"CloseFrame":{"frame_id":791,"return_":[{"RuntimeValue":{"value":true}}],"gas_left":999993770}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999993767,"instruction":"NOT"}},{"Effect":{"Pop":{"RuntimeValue":{"value":true}}}},{"Effect":{"Push":{"RuntimeValue":{"value":false}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999993766,"instruction":"RET"}},{"CloseFrame":{"frame_id":783,"return_":[{"RuntimeValue":{"value":false}}],"gas_left":999993766}},{"Instruction":{"type_parameters":[],"pc":7,"gas_left":999993765,"instruction":"BR_FALSE"}},{"Effect":{"Pop":{"RuntimeValue":{"value":false}}}},{"Instruction":{"type_parameters":[],"pc":22,"gas_left":999993755,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,0]},"root_value_read":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":23,"gas_left":999993754,"instruction":"POP"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Local":[0,1]},"snapshot":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":24,"gas_left":999993744,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,2]},"root_value_read":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}},"moved":true}}},{"Effect":{"Push":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":25,"gas_left":999993743,"instruction":"POP"}},{"Effect":{"Pop":{"ImmRef":{"location":{"Indexed":[{"Indexed":[{"Global":762},2]},1]},"snapshot":{"type":"0x2::dynamic_field::Field>","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"7a7c970a2d2d96f16bd55c21ad8386296c539e7901bb6cd685faaf41250c094e"}}}},"name":7,"value":{"type":"0x2::linked_table::Node","fields":{"prev":{"type":"0x1::option::Option","fields":{"vec":[]}},"next":{"type":"0x1::option::Option","fields":{"vec":[]}},"value":42}}}}}}}},{"Instruction":{"type_parameters":[],"pc":26,"gas_left":999993725,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[574,3]},"root_value_read":{"RuntimeValue":{"value":7}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":27,"gas_left":999993724,"instruction":"RET"}},{"CloseFrame":{"frame_id":574,"return_":[{"RuntimeValue":{"value":7}}],"gas_left":999993724}},{"Instruction":{"type_parameters":[],"pc":11,"gas_left":999993723,"instruction":"POP"}},{"Effect":{"Pop":{"RuntimeValue":{"value":7}}}},{"Instruction":{"type_parameters":[],"pc":12,"gas_left":999993647,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[0,1]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":13,"gas_left":999993647,"instruction":"CALL_GENERIC"}},{"OpenFrame":{"frame":{"frame_id":834,"function_name":"drop","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"linked_table"},"binary_member_index":16,"type_instantiation":["u64","u8"],"parameters":[{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}],"return_types":[],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"linked_table","name":"LinkedTable","type_args":["u64","u8"]}},"ref_type":null}],"is_native":false},"gas_left":999993647}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999993570,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[834,0]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999993565,"instruction":"UNPACK_GENERIC"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::linked_table::LinkedTable","fields":{"id":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},"size":1,"head":{"type":"0x1::option::Option","fields":{"vec":[7]}},"tail":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":1}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999993564,"instruction":"POP"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999993563,"instruction":"POP"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x1::option::Option","fields":{"vec":[7]}}}}}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999993562,"instruction":"POP"}},{"Effect":{"Pop":{"RuntimeValue":{"value":1}}}},{"Instruction":{"type_parameters":[],"pc":5,"gas_left":999993562,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":851,"function_name":"delete","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":15,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}],"return_types":[],"locals_types":[{"type_":{"struct":{"address":"0000000000000000000000000000000000000000000000000000000000000002","module":"object","name":"UID","type_args":[]}},"ref_type":null}],"is_native":false},"gas_left":999993562}},{"Instruction":{"type_parameters":[],"pc":0,"gas_left":999993523,"instruction":"MOVE_LOC"}},{"Effect":{"Read":{"location":{"Local":[851,0]},"root_value_read":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}},"moved":true}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}}},{"Instruction":{"type_parameters":[],"pc":1,"gas_left":999993521,"instruction":"UNPACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::object::UID","fields":{"id":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}},{"Instruction":{"type_parameters":[],"pc":2,"gas_left":999993519,"instruction":"UNPACK"}},{"Effect":{"Pop":{"RuntimeValue":{"value":{"type":"0x2::object::ID","fields":{"bytes":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}}}},{"Effect":{"Push":{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}}},{"Instruction":{"type_parameters":[],"pc":3,"gas_left":999993519,"instruction":"CALL"}},{"OpenFrame":{"frame":{"frame_id":862,"function_name":"delete_impl","module":{"address":"0000000000000000000000000000000000000000000000000000000000000002","name":"object"},"binary_member_index":22,"type_instantiation":[],"parameters":[{"RuntimeValue":{"value":"381dd9078c322a4663c392761a0211b527c127b29583851217f948d62131f409"}}],"return_types":[],"locals_types":[{"type_":"address","ref_type":null}],"is_native":true},"gas_left":999993519}},{"CloseFrame":{"frame_id":862,"return_":[],"gas_left":999993465}},{"Instruction":{"type_parameters":[],"pc":4,"gas_left":999993464,"instruction":"RET"}},{"CloseFrame":{"frame_id":851,"return_":[],"gas_left":999993464}},{"Instruction":{"type_parameters":[],"pc":6,"gas_left":999993463,"instruction":"RET"}},{"CloseFrame":{"frame_id":834,"return_":[],"gas_left":999993463}},{"Instruction":{"type_parameters":[],"pc":14,"gas_left":999993462,"instruction":"RET"}},{"CloseFrame":{"frame_id":0,"return_":[],"gas_left":999993462}}]} \ No newline at end of file diff --git a/external-crates/move/crates/move-analyzer/trace-debug/package.json b/external-crates/move/crates/move-analyzer/trace-debug/package.json index 3c2f72c4d5a2a..8fa1c562b18d9 100644 --- a/external-crates/move/crates/move-analyzer/trace-debug/package.json +++ b/external-crates/move/crates/move-analyzer/trace-debug/package.json @@ -5,7 +5,7 @@ "publisher": "mysten", "icon": "images/move.png", "license": "Apache-2.0", - "version": "0.0.2", + "version": "0.0.3", "preview": true, "repository": { "url": "https://github.com/MystenLabs/sui.git", @@ -97,4 +97,4 @@ "eslint": "^8.57.0", "typescript": "^5.4.5" } -} \ No newline at end of file +}