From cf1472d2682620e1429eaba5111355524fb47d52 Mon Sep 17 00:00:00 2001 From: SheetJS Date: Tue, 16 May 2023 21:56:27 -0400 Subject: [PATCH] release --- .eslintrc.cjs | 14 + .gitignore | 24 + Makefile | 16 + README.md | 25 + index.html | 14 + misc/dump_registry.ts | 57 + misc/otorp.ts | 625 ++ package.json | 39 + public/protos | 14533 ++++++++++++++++++++++++++++++++++++++ public/test.numbers | Bin 0 -> 159350 bytes src/App.css | 52 + src/App.tsx | 359 + src/index.css | 69 + src/iwa.ts | 411 ++ src/main.tsx | 10 + src/messages/index.ts | 95 + src/messages/keynote.ts | 631 ++ src/messages/numbers.ts | 581 ++ src/messages/pages.ts | 582 ++ src/vite-env.d.ts | 1 + tsconfig.json | 23 + tsconfig.node.json | 10 + types.ts | 65 + vite.config.ts | 24 + 24 files changed, 18260 insertions(+) create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 Makefile create mode 100644 README.md create mode 100644 index.html create mode 100644 misc/dump_registry.ts create mode 100644 misc/otorp.ts create mode 100644 package.json create mode 100644 public/protos create mode 100755 public/test.numbers create mode 100644 src/App.css create mode 100644 src/App.tsx create mode 100644 src/index.css create mode 100644 src/iwa.ts create mode 100644 src/main.tsx create mode 100644 src/messages/index.ts create mode 100644 src/messages/keynote.ts create mode 100644 src/messages/numbers.ts create mode 100644 src/messages/pages.ts create mode 100644 src/vite-env.d.ts create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 types.ts create mode 100644 vite.config.ts diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..4020bcb --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,14 @@ +module.exports = { + env: { browser: true, es2020: true }, + extends: [ + 'eslint:recommended', + 'plugin:@typescript-eslint/recommended', + 'plugin:react-hooks/recommended', + ], + parser: '@typescript-eslint/parser', + parserOptions: { ecmaVersion: 'latest', sourceType: 'module' }, + plugins: ['react-refresh'], + rules: { + 'react-refresh/only-export-components': 'warn', + }, +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..43d1fd0 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +.PHONY: build +build: + npm run build + +.PHONY: dev +dev: + npm run dev + +.PHONY: deps +deps: + # protos + deno run -rA misc/otorp.ts > public/protos + # src/messages + deno run -rA misc/dump_registry.ts /Applications/Numbers.app/Contents/MacOS/Numbers > src/messages/numbers.ts + deno run -rA misc/dump_registry.ts /Applications/Keynote.app/Contents/MacOS/Keynote > src/messages/keynote.ts + deno run -rA misc/dump_registry.ts /Applications/Pages.app/Contents/MacOS/Pages > src/messages/pages.ts diff --git a/README.md b/README.md new file mode 100644 index 0000000..685389c --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +# iwa-inspector + +source for + +`iwa-inspector` is a tool for inspecting iWork archives. + +When a file is loaded, a table will display the messages in the file. + +When a message is selected, the page will display the Protocol Buffers +definition for the message as well as an inspector for the message and metadata. + +Clicking on a `.TSP.Reference` ID will jump to the referenced message. + +Right-clicking a custom message type will show a context menu with options to +copy the raw byte representation (array of numbers) or parsed object (JSON). + +## Development + +`make dev` starts the dev server. + +`make build` generates the static site. + +## Refreshing data + +`make deps` requires a SIP-disabled Intel Mac. The last run used v13.0 apps. diff --git a/index.html b/index.html new file mode 100644 index 0000000..8e44caa --- /dev/null +++ b/index.html @@ -0,0 +1,14 @@ + + + + + + + SheetJS IWA Inspector + + + +
+ + + diff --git a/misc/dump_registry.ts b/misc/dump_registry.ts new file mode 100644 index 0000000..4b6e4ea --- /dev/null +++ b/misc/dump_registry.ts @@ -0,0 +1,57 @@ +#!/usr/bin/env -S deno run -A +/*! dump_registry.ts (C) 2022-present SheetJS LLC -- https://sheetjs.com */ + +/* +NOTE: this script requires an Intel Mac, Numbers, LLDB, and Deno + +USAGE: deno run -A https://oss.sheetjs.com/notes/iwa/dump_registry.ts +*/ + +if(Deno.build.os != "darwin") throw `Must run in macOS!`; +if(Deno.build.arch != "x86_64") throw `Must run on Intel Mac (Apple Silicon currently unsupported)`; + +{ + const p = Deno.run({cmd:["csrutil","status"],stdin:"piped",stdout:"piped" }); + const [status, stdout] = await Promise.all([ p.status(), p.output() ]); + await p.close(); + const data = new TextDecoder().decode(stdout); + //if(data.includes("enabled")) throw `SIP must be disabled!`; +} + +const p = Deno.run({ cmd: `lldb ${Deno?.args?.[0] || "/Applications/Numbers.app/Contents/MacOS/Numbers"} -a x86_64`.split(" "), + stdin: "piped", stdout: "piped" +}); + +const doit = (x: string) => p?.stdin?.write(new TextEncoder().encode(x)) + +const cmds = [ + "b -[NSApplication _sendFinishLaunchingNotification]", + "settings set auto-confirm 1", + "breakpoint command add 1.1", + "po [TSPRegistry sharedRegistry]", + "process kill", + "exit", + "DONE", + "run", +]; +for(const cmd of cmds) await doit(cmd + "\n"); + +/* LLDB does not exit normally, setTimeout workaround */ +setTimeout(() => p.kill("SIGKILL"), 15000) + +const [status, stdout] = await Promise.all([ p.status(), p.output() ]); +await p.close(); + +const data = new TextDecoder().decode(stdout); +const res = data.match(/_messageTypeToPrototypeMap = {([^]*?)}/m)?.[1]; +if(!res) throw `Could not find map!` +const rows = res.split(/[\r\n]+/).map(r => r.trim().split(/\s+/)).filter(x => x.length > 1); +rows.sort((l, r) => +l[0] - +r[0]); +console.log(`export default {`); +rows.forEach(r => { + if(r[3] == "null") return; + console.log(` ${r[0]}: ".${r[3]}",`); +}); +console.log(`} as {[key: number]: string};`); + +//console.log(Object.fromEntries(rows.map(r => [r[0], r[3]]).filter(r => r[1] != "null"))); diff --git a/misc/otorp.ts b/misc/otorp.ts new file mode 100644 index 0000000..4d07cb3 --- /dev/null +++ b/misc/otorp.ts @@ -0,0 +1,625 @@ +#!/usr/bin/env -S deno run -A +/*! otorp (C) 2021-present SheetJS -- http://sheetjs.com */ +import { resolve } from "https://deno.land/std@0.171.0/path/mod.ts"; +import { TerminalSpinner } from "https://deno.land/x/spinners/mod.ts"; + +// #region util.ts + +var u8_to_dataview = (array: Uint8Array): DataView => new DataView(array.buffer, array.byteOffset, array.byteLength); + +var u8str = (u8: Uint8Array): string => new TextDecoder().decode(u8); + +var u8concat = (u8a: Uint8Array[]): Uint8Array => { + var len = u8a.reduce((acc: number, x: Uint8Array) => acc + x.length, 0); + var out = new Uint8Array(len); + var off = 0; + u8a.forEach(u8 => { out.set(u8, off); off += u8.length; }); + return out; +}; + +var indent = (str: string, depth: number /* = 1 */): string => str.split(/\n/g).map(x => x && " ".repeat(depth) + x).join("\n"); + +function u8indexOf(u8: Uint8Array, data: string | number | Uint8Array, byteOffset?: number): number { + //if(Buffer.isBuffer(u8)) return u8.indexOf(data, byteOffset); + if(typeof data == "number") return u8.indexOf(data, byteOffset); + var l = byteOffset; + if(typeof data == "string") { + outs: while((l = u8.indexOf(data.charCodeAt(0), l)) > -1) { + ++l; + for(var j = 1; j < data.length; ++j) if(u8[l+j-1] != data.charCodeAt(j)) continue outs; + return l - 1; + } + } else { + outb: while((l = u8.indexOf(data[0], l)) > -1) { + ++l; + for(var j = 1; j < data.length; ++j) if(u8[l+j-1] != data[j]) continue outb; + return l - 1; + } + } + return -1; +} + +// #endregion + +// #region proto.ts + +type Ptr = [number]; + +/** Parse an integer from the varint that can be exactly stored in a double */ +function parse_varint49(buf: Uint8Array, ptr?: Ptr): number { + var l = ptr ? ptr[0] : 0; + var usz = buf[l] & 0x7F; + varint: if(buf[l++] >= 0x80) { + usz |= (buf[l] & 0x7F) << 7; if(buf[l++] < 0x80) break varint; + usz |= (buf[l] & 0x7F) << 14; if(buf[l++] < 0x80) break varint; + usz |= (buf[l] & 0x7F) << 21; if(buf[l++] < 0x80) break varint; + usz += (buf[l] & 0x7F) * Math.pow(2, 28); ++l; if(buf[l++] < 0x80) break varint; + usz += (buf[l] & 0x7F) * Math.pow(2, 35); ++l; if(buf[l++] < 0x80) break varint; + usz += (buf[l] & 0x7F) * Math.pow(2, 42); ++l; if(buf[l++] < 0x80) break varint; + } + if(ptr) ptr[0] = l; + return usz; +} + +function write_varint49(v: number): Uint8Array { + var usz = new Uint8Array(7); + usz[0] = (v & 0x7F); + var L = 1; + sz: if(v > 0x7F) { + usz[L-1] |= 0x80; usz[L] = (v >> 7) & 0x7F; ++L; + if(v <= 0x3FFF) break sz; + usz[L-1] |= 0x80; usz[L] = (v >> 14) & 0x7F; ++L; + if(v <= 0x1FFFFF) break sz; + usz[L-1] |= 0x80; usz[L] = (v >> 21) & 0x7F; ++L; + if(v <= 0xFFFFFFF) break sz; + usz[L-1] |= 0x80; usz[L] = ((v/0x100) >>> 21) & 0x7F; ++L; + if(v <= 0x7FFFFFFFF) break sz; + usz[L-1] |= 0x80; usz[L] = ((v/0x10000) >>> 21) & 0x7F; ++L; + if(v <= 0x3FFFFFFFFFF) break sz; + usz[L-1] |= 0x80; usz[L] = ((v/0x1000000) >>> 21) & 0x7F; ++L; + } + return usz.slice(0, L); +} + +/** Parse a 32-bit signed integer from the raw varint */ +function varint_to_i32(buf: Uint8Array): number { + var l = 0, i32 = buf[l] & 0x7F; + varint: if(buf[l++] >= 0x80) { + i32 |= (buf[l] & 0x7F) << 7; if(buf[l++] < 0x80) break varint; + i32 |= (buf[l] & 0x7F) << 14; if(buf[l++] < 0x80) break varint; + i32 |= (buf[l] & 0x7F) << 21; if(buf[l++] < 0x80) break varint; + i32 |= (buf[l] & 0x7F) << 28; + } + return i32; +} + +interface ProtoItem { + offset?: number; + data: Uint8Array; + type: number; +} +type ProtoField = Array +type ProtoMessage = Array; + +/** Shallow parse of a message */ +function parse_shallow(buf: Uint8Array): ProtoMessage { + var out: ProtoMessage = [], ptr: Ptr = [0]; + while(ptr[0] < buf.length) { + var off = ptr[0]; + var num = parse_varint49(buf, ptr); + var type = num & 0x07; num = Math.floor(num / 8); + var len = 0; + var res: Uint8Array; + if(num == 0) break; + switch(type) { + case 0: { + var l = ptr[0]; + while(buf[ptr[0]++] >= 0x80); + res = buf.slice(l, ptr[0]); + } break; + case 5: len = 4; res = buf.slice(ptr[0], ptr[0] + len); ptr[0] += len; break; + case 1: len = 8; res = buf.slice(ptr[0], ptr[0] + len); ptr[0] += len; break; + case 2: len = parse_varint49(buf, ptr); res = buf.slice(ptr[0], ptr[0] + len); ptr[0] += len; break; + case 3: // Start group + case 4: // End group + default: throw new Error(`PB Type ${type} for Field ${num} at offset ${off}`); + } + var v: ProtoItem = { offset: off, data: res, type }; + if(out[num] == null) out[num] = [v]; + else out[num].push(v); + } + return out; +} + +/** Serialize a shallow parse */ +function write_shallow(proto: ProtoMessage): Uint8Array { + var out: Uint8Array[] = []; + proto.forEach((field, idx) => { + field.forEach(item => { + out.push(write_varint49(idx * 8 + item.type)); + out.push(item.data); + }); + }); + return u8concat(out); +} + +function mappa(data: ProtoField, cb:(_:Uint8Array) => U): U[] { + if(!data) return []; + return data.map((d) => { try { + return cb(d.data); + } catch(e) { + var m = e.message?.match(/at offset (\d+)/); + if(m) e.message = e.message.replace(/at offset (\d+)/, "at offset " + (+m[1] + (d.offset||0))); + throw e; + }}); +} + +// #endregion + +// #region descriptor.ts + +var TYPES = [ + "error", + "double", + "float", + "int64", + "uint64", + "int32", + "fixed64", + "fixed32", + "bool", + "string", + "group", + "message", + "bytes", + "uint32", + "enum", + "sfixed32", + "sfixed64", + "sint32", + "sint64" +]; + + +interface FileOptions { + javaPackage?: string; + javaOuterClassname?: string; + javaMultipleFiles?: string; + goPackage?: string; +} +function parse_FileOptions(buf: Uint8Array): FileOptions { + var data = parse_shallow(buf); + var out: FileOptions = {}; + if(data[1]?.[0]) out.javaPackage = u8str(data[1][0].data); + if(data[8]?.[0]) out.javaOuterClassname = u8str(data[8][0].data); + if(data[11]?.[0]) out.goPackage = u8str(data[11][0].data); + return out; +} + + +interface EnumValue { + name?: string; + number?: number; +} +function parse_EnumValue(buf: Uint8Array): EnumValue { + var data = parse_shallow(buf); + var out: EnumValue = {}; + if(data[1]?.[0]) out.name = u8str(data[1][0].data); + if(data[2]?.[0]) out.number = varint_to_i32(data[2][0].data); + return out; +} + + +interface Enum { + name?: string; + value?: EnumValue[]; +} +function parse_Enum(buf: Uint8Array): Enum { + var data = parse_shallow(buf); + var out: Enum = {}; + if(data[1]?.[0]) out.name = u8str(data[1][0].data); + out.value = mappa(data[2], parse_EnumValue); + return out; +} +var write_Enum = (en: Enum, pkg?: string): string => { + var out = [`enum ${pkg ? `.${pkg}.` : ""}${en.name} {`]; + en.value?.forEach(({name, number}) => out.push(` ${name} = ${number};`)); + return out.concat(`}`).join("\n"); +}; + + +interface FieldOptions { + packed?: boolean; + deprecated?: boolean; +} +function parse_FieldOptions(buf: Uint8Array): FieldOptions { + var data = parse_shallow(buf); + var out: FieldOptions = {}; + if(data[2]?.[0]) out.packed = !!data[2][0].data; + if(data[3]?.[0]) out.deprecated = !!data[3][0].data; + return out; +} + + +interface Field { + name?: string; + extendee?: string; + number?: number; + label?: number; + type?: number; + typeName?: string; + defaultValue?: string; + options?: FieldOptions; +} +function parse_Field(buf: Uint8Array): Field { + var data = parse_shallow(buf); + var out: Field = {}; + if(data[1]?.[0]) out.name = u8str(data[1][0].data); + if(data[2]?.[0]) out.extendee = u8str(data[2][0].data); + if(data[3]?.[0]) out.number = varint_to_i32(data[3][0].data); + if(data[4]?.[0]) out.label = varint_to_i32(data[4][0].data); + if(data[5]?.[0]) out.type = varint_to_i32(data[5][0].data); + if(data[6]?.[0]) out.typeName = u8str(data[6][0].data); + if(data[7]?.[0]) out.defaultValue = u8str(data[7][0].data); + if(data[8]?.[0]) out.options = parse_FieldOptions(data[8][0].data); + return out; +} +function write_Field(field: Field): string { + var out = []; + var label = ["", "optional ", "required ", "repeated "][field.label||0] || ""; + var type = field.typeName || TYPES[field.type||69] || "s5s"; + var opts = []; + if(field.defaultValue) opts.push(`default = ${field.defaultValue}`); + if(field.options?.packed) opts.push(`packed = true`); + if(field.options?.deprecated) opts.push(`deprecated = true`); + var os = opts.length ? ` [${opts.join(", ")}]`: ""; + out.push(`${label}${type} ${field.name} = ${field.number}${os};`); + return out.length ? indent(out.join("\n"), 1) : ""; +} + + +function write_extensions(ext: Field[], xtra = false, coalesce = true): string { + var res: string[] = []; + var xt: Array<[string, Array]> = []; + ext.forEach(ext => { + if(!ext.extendee) return; + var row = coalesce ? + xt.find(x => x[0] == ext.extendee) : + (xt[xt.length - 1]?.[0] == ext.extendee ? xt[xt.length - 1]: null); + if(row) row[1].push(ext); + else xt.push([ext.extendee, [ext]]); + }); + xt.forEach(extrow => { + var out = [`extend ${extrow[0]} {`]; + extrow[1].forEach(ext => out.push(write_Field(ext))); + res.push(out.concat(`}`).join("\n") + (xtra ? "\n" : "")); + }); + return res.join("\n"); +} + + +interface ExtensionRange { start?: number; end?: number; } +interface MessageType { + name?: string; + nestedType?: MessageType[]; + enumType?: Enum[]; + field?: Field[]; + extension?: Field[]; + extensionRange?: ExtensionRange[]; +} +function parse_mtype(buf: Uint8Array): MessageType { + var data = parse_shallow(buf); + var out: MessageType = {}; + if(data[1]?.[0]) out.name = u8str(data[1][0].data); + if(data[2]?.length >= 1) out.field = mappa(data[2], parse_Field); + if(data[3]?.length >= 1) out.nestedType = mappa(data[3], parse_mtype); + if(data[4]?.length >= 1) out.enumType = mappa(data[4], parse_Enum); + if(data[6]?.length >= 1) out.extension = mappa(data[6], parse_Field); + if(data[5]?.length >= 1) out.extensionRange = data[5].map(d => { + var data = parse_shallow(d.data); + var out: ExtensionRange = {}; + if(data[1]?.[0]) out.start = varint_to_i32(data[1][0].data); + if(data[2]?.[0]) out.end = varint_to_i32(data[2][0].data); + return out; + }); + return out; +} +var write_mtype = (message: MessageType, pkg?: string): string => { + var out = [ `message ${pkg ? `.${pkg}.` : ""}${message.name} {` ]; + message.nestedType?.forEach(m => out.push(indent(write_mtype(m), 1))); + message.enumType?.forEach(en => out.push(indent(write_Enum(en), 1))); + message.field?.forEach(field => out.push(write_Field(field))); + if(message.extensionRange) message.extensionRange.forEach(er => out.push(` extensions ${er.start} to ${(er.end||0) - 1};`)); + if(message.extension?.length) out.push(indent(write_extensions(message.extension), 1)); + return out.concat(`}`).join("\n"); +}; + + +interface Descriptor { + name?: string; + package?: string; + dependency?: string[]; + messageType?: MessageType[]; + enumType?: Enum[]; + extension?: Field[]; + options?: FileOptions; +} +function parse_FileDescriptor(buf: Uint8Array): Descriptor { + var data = parse_shallow(buf); + var out: Descriptor = {}; + if(data[1]?.[0]) out.name = u8str(data[1][0].data); + if(data[2]?.[0]) out.package = u8str(data[2][0].data); + if(data[3]?.[0]) out.dependency = data[3].map(x => u8str(x.data)); + + if(data[4]?.length >= 1) out.messageType = mappa(data[4], parse_mtype); + if(data[5]?.length >= 1) out.enumType = mappa(data[5], parse_Enum); + if(data[7]?.length >= 1) out.extension = mappa(data[7], parse_Field); + + if(data[8]?.[0]) out.options = parse_FileOptions(data[8][0].data); + + return out; +} +var write_FileDescriptor = (pb: Descriptor): string => { + var out = [ +// 'syntax = "proto2";', +// '' + ]; +// if(pb.dependency) pb.dependency.forEach((n: string) => { if(n) out.push(`import "${n}";`); }); +// if(pb.package) out.push(`package ${pb.package};\n`); +/* if(pb.options) { + var o = out.length; + + if(pb.options.javaPackage) out.push(`option java_package = "${pb.options.javaPackage}";`); + if(pb.options.javaOuterClassname?.replace(/\W/g, "")) out.push(`option java_outer_classname = "${pb.options.javaOuterClassname}";`); + if(pb.options.javaMultipleFiles) out.push(`option java_multiple_files = true;`); + if(pb.options.goPackage) out.push(`option go_package = "${pb.options.goPackage}";`); + + if(out.length > o) out.push(''); + }*/ + + pb.enumType?.forEach(en => { if(en.name) out.push(write_Enum(en, pb.package) + "\n"); }); + pb.messageType?.forEach(m => { if(m.name) { var o = write_mtype(m, pb.package); if(o) out.push(o + "\n"); }}); + + if(pb.extension?.length) { + var e = write_extensions(pb.extension, true, false); + if(e) out.push(e); + } + return out.join("\n") + "\n"; +}; + +// #endregion + +// #region macho.ts + +interface MachOEntry { + type: number; + subtype: number; + offset: number; + size: number; + align?: number; + data: Uint8Array; +} +var parse_fat = (buf: Uint8Array): MachOEntry[] => { + var dv = u8_to_dataview(buf); + if(dv.getUint32(0, false) !== 0xCAFEBABE) throw new Error("Unsupported file"); + var nfat_arch = dv.getUint32(4, false); + var out: MachOEntry[] = []; + for(var i = 0; i < nfat_arch; ++i) { + var start = i * 20 + 8; + + var cputype = dv.getUint32(start, false); + var cpusubtype = dv.getUint32(start+4, false); + var offset = dv.getUint32(start+8, false); + var size = dv.getUint32(start+12, false); + var align = dv.getUint32(start+16, false); + + out.push({ + type: cputype, + subtype: cpusubtype, + offset, + size, + align, + data: buf.slice(offset, offset + size) + }); + } + return out; +}; +var parse_macho = (buf: Uint8Array): MachOEntry[] => { + var dv = u8_to_dataview(buf); + var magic = dv.getUint32(0, false); + switch(magic) { + // fat binary (x86_64 / aarch64) + case 0xCAFEBABE: return parse_fat(buf); + // x86_64 + case 0xCFFAEDFE: return [{ + type: dv.getUint32(4, false), + subtype: dv.getUint32(8, false), + offset: 0, + size: buf.length, + data: buf + }]; + } + throw new Error("Unsupported file"); +}; + +// #endregion + +// #region otorp.ts + +interface OtorpEntry { + name: string; + proto: string; +} + +/** Find and stringify all relevant protobuf defs */ +function otorp(buf: Uint8Array, builtins = false): OtorpEntry[] { + var res = proto_offsets(buf); + var registry: {[key: string]: Descriptor} = {}; + var names: Set = new Set(); + var out: OtorpEntry[] = []; + + res.forEach((r, i) => { + if(!builtins && r[1].startsWith("google/protobuf/")) return; + var b = buf.slice(r[0], i < res.length - 1 ? res[i+1][0] : buf.length); + var pb = parse_FileDescriptorProto(b/*, r[1]*/); + names.add(r[1]); + registry[r[1]] = pb; + }); + + names.forEach(name => { + /* ensure partial ordering by dependencies */ + names.delete(name); + var pb = registry[name]; + var doit = (pb.dependency||[]).every((d: string) => !names.has(d)); + if(!doit) { names.add(name); return; } + + var dups = res.filter(r => r[1] == name); + if(dups.length == 1) return out.push({ name, proto: write_FileDescriptor(pb) }); + + /* in a fat binary, compare the defs for x86_64/aarch64 */ + var pbs = dups.map(r => { + var i = res.indexOf(r); + var b = buf.slice(r[0], i < res.length - 1 ? res[i+1][0] : buf.length); + var pb = parse_FileDescriptorProto(b/*, r[1]*/); + return write_FileDescriptor(pb); + }); + for(var l = 1; l < pbs.length; ++l) if(pbs[l] != pbs[0]) throw new Error(`Conflicting definitions for ${name} at offsets 0x${dups[0][0].toString(16)} and 0x${dups[l][0].toString(16)}`); + return out.push({ name, proto: pbs[0] }); + }); + + return out; +} +export default otorp; + +/** Determine if an address is being referenced */ +var is_referenced = (buf: Uint8Array, pos: number): boolean => { + var dv = u8_to_dataview(buf); + + /* Search for LEA reference (x86) */ + for(var leaddr = 0; leaddr > -1 && leaddr < pos; leaddr = u8indexOf(buf, 0x8D, leaddr + 1)) + if(dv.getUint32(leaddr + 2, true) == pos - leaddr - 6) return true; + + /* Search for absolute reference to address */ + try { + var headers = parse_macho(buf); + for(var i = 0; i < headers.length; ++i) { + if(pos < headers[i].offset || pos > headers[i].offset + headers[i].size) continue; + var b = headers[i].data; + var p = pos - headers[i].offset; + var ref = new Uint8Array([0,0,0,0,0,0,0,0]); + var dv = u8_to_dataview(ref); + dv.setUint32(0, p, true); + if(u8indexOf(b, ref, 0) > 0) return true; + ref[4] = 0x01; + if(u8indexOf(b, ref, 0) > 0) return true; + ref[4] = 0x00; ref[6] = 0x10; + if(u8indexOf(b, ref, 0) > 0) return true; + } + } catch(e) {throw e} + return false; +}; + +type OffsetList = Array<[number, string, number, number]>; +/** Generate a list of potential starting points */ +var proto_offsets = (buf: Uint8Array): OffsetList => { + var meta = parse_macho(buf); + var out: OffsetList = []; + var off = 0; + /* note: this loop only works for names < 128 chars */ + search: while((off = u8indexOf(buf, ".proto", off + 1)) > -1) { + var pos = off; + off += 6; + while(off - pos < 256 && buf[pos] != off - pos - 1) { + if(buf[pos] > 0x7F || buf[pos] < 0x20) continue search; + --pos; + } + if(off - pos > 250) continue; + var name = u8str(buf.slice(pos + 1, off)); + if(buf[--pos] != 0x0A) continue; + if(!is_referenced(buf, pos)) { console.error(`Reference to ${name} at ${pos} not found`); continue; } + var bin = meta.find(m => m.offset <= pos && m.offset + m.size >= pos); + out.push([pos, name, bin?.type || -1, bin?.subtype || -1]); + } + return out; +}; + +/** Parse a descriptor that starts with the first byte of the supplied buffer */ +var parse_FileDescriptorProto = (buf: Uint8Array): Descriptor => { + var l = buf.length; + while(l > 0) try { + var b = buf.slice(0,l); + var o = parse_FileDescriptor(b); + return o; + } catch(e) { + var m = e.message.match(/at offset (\d+)/); + if(m && parseInt(m[1], 10) < buf.length) l = parseInt(m[1], 10) - 1; + else --l; + } + throw new RangeError("no protobuf message in range"); +}; + + +// #endregion + +let spin: TerminalSpinner; +const width = Deno.consoleSize().columns; +const seen: any = {}; +function process(inf: string, outf: string) { + if(!inf) ["Numbers", "Keynote", "Pages"].forEach(app => { + const inf = `/Applications/${app}.app`; + for(let info of Deno.readDirSync(inf)) { + if(spin) spin.set(inf.length > width - 4 ? "…" + inf.slice(-(width-4)) : inf); + process(inf + (inf.slice(-1) == "/" ? "" : "/") + info.name, outf); + } + }); + else { + const fi = Deno.statSync(inf); + if(fi.isDirectory) for(let info of Deno.readDirSync(inf)) { + if(spin) spin.set(inf.length > width - 4 ? "…" + inf.slice(-(width-4)) : inf); + process(inf + (inf.slice(-1) == "/" ? "" : "/") + info.name, outf); + } + } + try { + const buf: Uint8Array = Deno.readFileSync(inf); + var dv = u8_to_dataview(buf); + var magic = dv.getUint32(0, false); + if(![0xCAFEBABE, 0xCFFAEDFE].includes(magic)) return; + + otorp(buf).forEach(({name, proto}) => { + if(!outf) { + /* NOTE: this logic assumes the protos do not conflict */ + if(seen[name]) { if(seen[name] != proto) throw new Error(name); return; } + seen[name] = proto; + return console.log(proto); + } + var pth = resolve(outf || "./", name.replace(/[/]/g, "$")); + try { + const str = Deno.readTextFileSync(pth); + if(str == proto) return; + throw `${pth} definition diverges!`; + } catch(e) { if(typeof e == "string") throw e; } + console.error(`writing ${name} to ${pth}`); + Deno.writeTextFileSync(pth, proto); + }); + } catch(e) {} +} + +function doit() { + const [ inf, outf ] = Deno.args; + if(inf == "-h" || inf == "--help") { + console.log(`usage: otorp.ts [output/folder] + +if no output folder specified, log all discovered defs +if output folder specified, attempt to write defs in the folder + +$ otorp.ts /Applications/Numbers.app out/ # search all files +$ otorp.ts /Applications/Numbers.app/Contents/MacOS/Numbers # search one file +`); + Deno.exit(1); + } + if(!inf || Deno.statSync(inf).isDirectory) (spin = new TerminalSpinner({ text: "", writer: Deno.stderr})).start(); + if(outf) try { Deno.mkdirSync(outf, { recursive: true }); } catch(e) {} + process(inf, outf); + if(spin) spin.stop(); +} +doit(); diff --git a/package.json b/package.json new file mode 100644 index 0000000..f07cfcc --- /dev/null +++ b/package.json @@ -0,0 +1,39 @@ +{ + "name": "iwa-inspector", + "author": "sheetjs", + "private": true, + "homepage": "https://sheetjs.com/tools/iwa-inspector", + "license": "Apache-2.0", + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "tsc && vite build", + "lint": "eslint src --ext ts,tsx --report-unused-disable-directives --max-warnings 0", + "preview": "vite preview" + }, + "dependencies": { + "cfb": "1.2.2", + "printj": "1.3.1", + "react": "18.2.0", + "react-contexify": "6.0.0", + "react-dom": "18.2.0", + "react-inspector": "6.0.1", + "react-resizable-panels": "0.0.45", + "react-toastify": "9.1.3", + "xlsx": "https://cdn.sheetjs.com/xlsx-0.19.3/xlsx-0.19.3.tgz" + }, + "devDependencies": { + "@types/react": "18.2.6", + "@types/react-dom": "18.2.4", + "@typescript-eslint/eslint-plugin": "5.59.5", + "@typescript-eslint/parser": "5.59.5", + "@vitejs/plugin-react": "4.0.0", + "eslint": "8.40.0", + "eslint-plugin-react-hooks": "4.6.0", + "eslint-plugin-react-refresh": "0.3.5", + "typescript": "5.0.4", + "vite": "4.3.5", + "vite-plugin-pwa": "0.14.7" + } +} diff --git a/public/protos b/public/protos new file mode 100644 index 0000000..bb8404e --- /dev/null +++ b/public/protos @@ -0,0 +1,14533 @@ +enum .TN.PageOrder { + PageOrderTopToBottom = 0; + PageOrderLeftToRight = 1; +} + +enum .TN.PageLayoutDirection { + PageLayoutDirectionLeftToRight = 0; + PageLayoutDirectionRightToLeft = 1; +} + +message .TN.SheetUIStateArchive { + required float view_scale = 1; + required .TSP.Point scroll_position = 2; + optional float previous_view_scale = 3; + optional bool scroll_position_is_unscaled = 4; + optional .TSP.Point previous_scroll_position = 5; + optional bool scroll_position_valid = 6; + optional bool previous_scroll_position_valid = 7; + optional .TSP.Size visible_size = 8; + optional .TSP.Size previous_visible_size = 9; + optional uint32 device_idiom = 10; + optional .TSK.SelectionPathArchive selection_path = 11; + optional .TSP.Reference selection_path_transformer = 12; +} + +message .TN.SheetUIStateDictionaryEntryArchive { + required .TSP.Reference sheet = 1; + required .TN.SheetUIStateArchive sheet_uistate = 2; +} + +message .TN.UUIDSheetUIStateDictionaryArchive { + required .TSP.UUID sheet_uuid = 1; + required .TN.SheetUIStateArchive sheet_uistate = 2; +} + +message .TN.UIStateArchive { + enum InspectorPaneViewMode { + kInspectorPaneViewModeFormat = 0; + kInspectorPaneViewModeFilter = 1; + } + required uint32 active_sheet_index = 1 [deprecated = true]; + repeated .TSP.Reference selected_info = 2 [deprecated = true]; + repeated .TN.SheetUIStateDictionaryEntryArchive sheet_uistate_dictionary_entry = 3 [deprecated = true]; + optional .TST.SelectionArchive table_selection = 4 [deprecated = true]; + optional uint32 editing_sheet_index = 5 [deprecated = true]; + optional int32 document_mode = 6; + repeated .TN.SheetUIStateDictionaryEntryArchive edit_mode_sheet_uistate_dictionary_entry = 7 [deprecated = true]; + optional int32 table_editing_mode = 8 [deprecated = true]; + optional uint32 form_focused_record_index = 9 [deprecated = true]; + optional uint32 form_focused_field_index = 10 [deprecated = true]; + optional bool in_chart_mode = 11; + optional .TN.ChartSelectionArchive chart_selection = 12 [deprecated = true]; + optional .TSP.Reference sheet_selection = 13 [deprecated = true]; + optional bool inspector_pane_visible = 14 [default = true]; + optional .TN.UIStateArchive.InspectorPaneViewMode inspector_pane_view_mode = 15 [default = kInspectorPaneViewModeFormat]; + repeated uint32 selected_quick_calc_functions = 16; + optional bool removed_all_quick_calc_functions = 17; + optional bool show_canvas_guides = 18; + optional bool shows_comments = 19; + optional .TSP.Point desktop_window_origin = 20; + optional .TSP.Size desktop_window_size = 21; + optional .TSP.Size desktop_screen_size = 22; + repeated .TSCH.ChartUIState chart_ui_state = 23; + optional .TSK.SelectionPathArchive selection_path = 24; + optional bool inspector_pane_autohidden = 25; + optional bool shows_sidebar = 26 [deprecated = true]; + optional bool shows_rulers = 27; + repeated .TN.UUIDSheetUIStateDictionaryArchive uuid_sheet_uistate_dictionary = 28; + optional .TSP.Reference freehand_drawing_toolkit_state = 29; + optional .TSP.Reference selection_path_transformer = 30; + optional bool editing_disabled = 31; + optional bool sidebar_visible = 32; + optional float sidebar_width = 33; +} + +message .TN.SheetSelectionArchive { + optional .TSP.Reference sheet = 1; + optional bool paginated = 2; +} + +message .TN.FormSelectionArchive { + required uint32 record_index = 1; + required uint32 field_index = 2; +} + +message .TN.FormBuilderSelectionArchive { + optional uint32 viewing_record_index = 1; +} + +message .TN.FormTableChooserSelectionArchive { +} + +message .TN.UndoRedoStateArchive { + required .TN.UIStateArchive ui_state = 1; +} + +message .TN.DocumentArchive { + repeated .TSP.Reference sheets = 1; + required .TSA.DocumentArchive super = 8; + optional .TSP.Reference calculation_engine = 3 [deprecated = true]; + required .TSP.Reference stylesheet = 4; + required .TSP.Reference sidebar_order = 5; + required .TSP.Reference theme = 6; + optional .TN.UIStateArchive uistate = 7; + optional .TSP.Reference custom_format_list = 9; + optional string printer_id = 10 [deprecated = true]; + optional string paper_id = 11; + optional .TSP.Size page_size = 12; +} + +message .TN.PlaceholderArchive { + required .TSWP.ShapeInfoArchive super = 1; +} + +message .TN.SheetArchive { + required string name = 1; + repeated .TSP.Reference drawable_infos = 2; + optional bool in_portrait_page_orientation = 3; + optional bool show_repeating_headers = 4 [deprecated = true]; + optional bool show_page_numbers = 5; + optional bool is_autofit_on = 6; + optional float content_scale = 7; + optional .TN.PageOrder page_order = 8; + optional .TSD.EdgeInsetsArchive print_margins = 10; + optional bool using_start_page_number = 11; + optional int32 start_page_number = 12; + optional float page_header_inset = 13; + optional float page_footer_inset = 14; + optional .TSP.Reference header_storage = 15 [deprecated = true]; + optional .TSP.Reference footer_storage = 16 [deprecated = true]; + optional .TSP.Reference userDefinedGuideStorage = 17; + repeated .TSP.Reference headers = 18; + repeated .TSP.Reference footers = 19; + optional bool uses_single_header_footer = 20; + optional .TN.PageLayoutDirection layout_direction = 21 [default = PageLayoutDirectionLeftToRight]; + optional .TSP.Reference style = 22; + optional bool print_backgrounds = 23; + optional bool should_print_comments = 24; +} + +message .TN.SheetStylePropertiesArchive { + optional .TSD.FillArchive fill = 1; +} + +message .TN.SheetStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 2; + optional .TN.SheetStylePropertiesArchive sheet_properties = 3; +} + +message .TN.FormBasedSheetArchive { + required .TN.SheetArchive super = 1; + optional .TSP.CFUUIDArchive table_id = 2; +} + +message .TN.ThemeArchive { + required .TSS.ThemeArchive super = 1; + repeated .TSP.Reference prototypes = 2; +} + +message .TN.PasteboardNativeStorageArchive { + optional .TSP.Reference sheet = 1; + optional .TN.SheetUIStateArchive ui_state = 2; +} + +message .TN.ChartMediatorFormulaStorage { + repeated .TSCE.FormulaArchive data_formulae = 1; + repeated .TSCE.FormulaArchive row_label_formulae = 3; + repeated .TSCE.FormulaArchive col_label_formulae = 4; + optional int32 direction = 5; + repeated .TSCE.FormulaArchive error_custom_pos_formulae = 6; + repeated .TSCE.FormulaArchive error_custom_neg_formulae = 7; + repeated .TSCE.FormulaArchive error_custom_pos_scatterX_formulae = 8; + repeated .TSCE.FormulaArchive error_custom_neg_scatterX_formulae = 9; + optional int32 scheme = 10; +} + +message .TN.ChartMediatorArchive { + required .TSCH.ChartMediatorArchive super = 1; + required string entity_id = 2; + optional .TN.ChartMediatorFormulaStorage formulas = 3; + optional bool columns_are_series = 4; + optional bool is_registered_with_calc_engine = 5 [deprecated = true]; +} + +message .TN.ChartSelectionArchive { + optional .TSCE.RangeReferenceArchive reference = 1; + optional .TSCH.ChartSelectionArchive deprecated_super = 2 [deprecated = true]; + optional .TSP.Reference chart = 3; + optional .TSD.DrawableSelectionArchive super = 4; +} + +message .TN.FormCommandActivityBehaviorArchive { + required .TSK.CommandActivityBehaviorArchive super = 1; +} + + +message .TNSOS.InducedVerifyDocumentWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID sheet_id_list = 2; + optional bool sheet_id_list_undefined = 3; +} + +message .TNSOS.InducedVerifyDrawableZOrdersWithServerCommandArchive { + required .TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive super = 1; +} + + +message .TNSOS.SheetStylePropertyChangeSetArchive { + optional .TSDSOS.SpecFillArchive fill = 1; + optional bool fill_undefined = 2; +} + + +message .TN.CommandFormChooseTargetTableArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID table_id = 2; + optional .TSP.UUID previous_table_id = 3; + required string sheet_name = 4; + optional string previous_sheet_name = 5; + required .TSP.UUID sheet_id = 6; +} + +message .TN.CommandSheetInsertDrawablesArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID sheet_id = 2; + repeated .TSP.Reference drawables = 3; + repeated .TSK.AddIdOperationArgs args_list = 4; + optional bool forPaste = 5; + repeated .TSP.UUID custom_format_keys = 6; + optional .TSP.Reference drawable_undo_object = 7; + optional .TSP.Reference formula_rewrite_command_for_undo = 9; + optional uint32 saved_next_untitled_resolver_index = 10; + repeated .TSP.UUID chart_entity_uid_for_backing_tables = 11; + repeated .TSP.Reference backing_tables = 12; +} + +message .TN.CommandSheetRemoveDrawablesArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID sheet_id = 2; + repeated .TSK.RemoveIdOperationArgs args_list = 3; + repeated .TSP.Reference drawables = 4; + repeated .TSP.UUID chart_entity_uid_for_backing_tables = 6; + repeated .TSP.UUID backing_table_uids = 7; +} + +message .TN.CommandSheetMoveDrawableZOrderArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID sheet_id = 2; + repeated .TSK.RearrangeIdOperationArgs args_list = 3; +} + +message .TN.CommandDocumentInsertSheetArchive { + required .TSK.CommandArchive super = 1; + repeated .TSK.AddIdOperationArgs argsList = 2; + repeated .TSP.Reference sheets = 3; + optional bool allowSameSheetNameAsForms = 4; + repeated .TSP.UUID custom_format_keys = 5; + optional .TSP.Reference drawable_undo_object = 6; + repeated .TN.UUIDSheetUIStateDictionaryArchive sheet_uistates = 7; + optional bool for_paste = 8; +} + +message .TN.CommandDocumentRemoveSheetArchive { + required .TSK.CommandArchive super = 1; + repeated .TSK.RemoveIdOperationArgs argsList = 2; + repeated .TSP.Reference sheets = 3; + required string rescueId = 4; + repeated .TN.UUIDSheetUIStateDictionaryArchive sheet_uistates = 5; + optional bool is_undo_paste = 6; +} + +message .TN.CommandDocumentReorderSheetArchive { + repeated .TSK.RearrangeIdOperationArgs argsList = 1; + required .TSK.CommandArchive super = 2; +} + +message .TN.CommandSetSheetNameArchive { + required .TSK.CommandArchive super = 1; + required string newname = 2; + required .TSP.UUID sheet_uid = 3; + optional string oldname = 4; +} + +message .TN.CommandSetSheetShouldPrintCommentsArchive { + required .TSK.CommandArchive super = 1; + required bool new_should_print_comments = 2; + required .TSP.UUID sheet_uid = 3; + required bool old_should_print_comments = 4; +} + +message .TN.CommandSetSheetDirectionArchive { + required .TSK.CommandArchive super = 1; + required .TN.PageLayoutDirection newDirection = 2; + required .TSP.UUID sheet_uid = 3; + optional .TN.PageLayoutDirection oldDirection = 4; +} + +message .TN.CommandSetPageOrientationArchive { + required bool in_portrait_page_orientation = 1; + required .TSP.UUID sheet_uid = 2; + required .TSK.CommandArchive super = 3; + required bool prev_in_portrait_page_orientation = 4; +} + +message .TN.CommandSetShowPageNumbersValueArchive { + required bool show_page_numbers = 1; + required .TSP.Reference sheet = 2; + required .TSK.CommandArchive super = 3; +} + +message .TN.CommandSetRepeatingHeadersValueArchive { + required bool show_repeating_headers = 1; + required .TSP.Reference sheet = 2; + required .TSK.CommandArchive super = 3; +} + +message .TN.CommandSetContentScaleArchive { + optional float old_content_scale = 2; + required float content_scale = 3; + required .TSP.UUID sheet_uid = 4; + required .TSK.CommandArchive super = 5; + required bool toggled_auto_fit = 6; +} + +message .TN.CommandSetDocumentPaperSize { + required string paper_id = 1; + required .TSP.Size page_size = 2; + required .TSK.CommandArchive super = 3; + required string old_paper_id = 4; + required .TSP.Size old_page_size = 5; +} + +message .TN.CommandEnterPrintPreviewModeArchive { + required .TSK.CommandArchive super = 1; +} + +message .TN.CommandExitPrintPreviewModeArchive { + required .TSK.CommandArchive super = 1; +} + +message .TN.CommandSetPrinterMarginsArchive { + required .TSD.EdgeInsetsArchive new_print_margins = 1; + optional .TSD.EdgeInsetsArchive old_print_margins = 2; + required .TSP.UUID sheet_uid = 3; + required .TSK.CommandArchive super = 4; +} + +message .TN.CommandSetPrintBackgroundsArchive { + required .TSP.UUID sheet_uid = 1; + required bool print_backgrounds = 2; + required bool old_print_backgrounds = 3; + required .TSK.CommandArchive super = 4; +} + +message .TN.CommandSetHeaderFooterInsetsArchive { + optional float old_header_inset = 1; + optional float old_footer_inset = 2; + required float header_inset = 3; + required float footer_inset = 4; + required .TSP.UUID sheet_uid = 5; + required .TSK.CommandArchive super = 6; +} + +message .TN.CommandSetPageOrderArchive { + required uint32 old_page_order = 1; + required uint32 page_order = 2; + required .TSP.UUID sheet_uid = 3; + required .TSK.CommandArchive super = 4; +} + +message .TN.CommandSetUsingStartPageNumberArchive { + required bool using_start_page_number = 1; + required .TSP.UUID sheet_uid = 2; + required .TSK.CommandArchive super = 3; + required bool prev_using_start_page_number = 4; +} + +message .TN.CommandSetStartPageNumberArchive { + required int32 old_start_page_number = 1; + required int32 start_page_number = 2; + required .TSP.UUID sheet_uid = 3; + required .TSK.CommandArchive super = 4; +} + +message .TN.CommandReorderSidebarItemChildrenAchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference sheet = 2; + repeated .TSP.Reference old_children = 3; + repeated .TSP.Reference new_children = 4; +} + +message .TN.CommandChartMediatorSetEditingState { + required .TSCH.ChartCommandArchive super = 1; + optional .TN.ChartMediatorFormulaStorage old_formulas = 3; + optional .TN.ChartMediatorFormulaStorage new_formulas = 4; + optional int32 old_direction = 5; + optional int32 new_direction = 6; + optional int32 old_scatter_format = 7; + optional int32 new_scatter_format = 8; + optional bool for_formula_rewrite = 9; +} + +message .TN.CommandChartMediatorSetGridDirection { + required .TSCH.ChartCommandArchive super = 1; + required uint32 old_direction = 2; + required uint32 new_direction = 3; + optional .TN.ChartMediatorFormulaStorage old_formula_storage = 4; +} + +message .TN.CommandChartMediatorSetSeriesOrder { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.UUID series_id = 2; + optional .TSP.UUID preceding_series_id = 3; + optional .TSP.UUID inverse_series_id = 4; + optional .TSP.UUID inverse_preceding_series_id = 5; + required int32 undo_current_index = 6; + required int32 undo_new_index = 7; + optional .TN.ChartMediatorFormulaStorage old_formula_storage = 8; +} + +message .TN.CommandChartMediatorUpdateForEntityDelete { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference cmd = 3; +} + +message .TN.CommandChartMediatorSetFormula { + required .TSCH.ChartCommandArchive super = 1; + required int32 model_update_data_type = 2; + repeated .TSCE.FormulaArchive formulae = 3; + repeated .TSCE.FormulaArchive old_formulae = 4; + required uint32 series_index = 5; + required int32 axis_type = 6; +} + +message .TN.CommandSheetSetBackgroundFillArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID sheet_id = 2; + required .TSD.FillArchive new_fill = 3; + required .TSD.FillArchive old_fill = 4; +} + +message .TN.CommandSheetSetStyleArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID sheet_id = 2; + required .TSP.Reference sheet_style = 3; + optional .TSP.Reference old_sheet_style = 4; +} + +message .TN.DocumentSelectionTransformerArchive { + optional .TSP.Reference document_selection = 1; +} + +message .TN.SheetSelectionTransformerArchive { + optional .TSP.UUID sheet_uuid = 1; + required bool paginated = 2; +} + +message .TN.FormSheetSelectionTransformerArchive { + required .TN.SheetSelectionTransformerArchive super = 1; + optional .TSP.UUID table_uuid = 2; +} + +message .TN.CanvasSelectionTransformerArchive { + required .TSD.InfoCollectionSelectionTransformerHelperArchive transformer_helper = 1; + optional .TSP.UUIDPath header_storage_uuid_path = 2; +} + +message .TN.FormTableChooserSelectionTransformerArchive { +} + +message .TN.FormBuilderSelectionTransformerArchive { + required .TSP.UUID table_uuid = 1; + required .TSP.UUID viewing_record_uuid = 2; + required .TSP.UUID field_uuid = 3; +} + +message .TN.FormViewerSelectionTransformerArchive { + required .TSP.UUID table_uuid = 1; + required .TSP.UUID record_uuid = 2; + required .TSP.UUID field_uuid = 3; +} + +message .TN.SheetChangeBaseArchive { + required .TSP.UUID sheet_id = 1; +} + +message .TN.SheetChangeSheetNameArchive { + required .TN.SheetChangeBaseArchive super = 1; + required string sheet_name = 2; +} + +message .TN.CommandInducedSheetChangeArchive { + required .TSK.CommandArchive super = 1; + repeated .TN.SheetChangeSheetNameArchive sheet_changes = 2; +} + + +enum .TSWP.SelectionType { + SelectionType_Normal = 0; + SelectionType_ListLabel = 1; + SelectionType_ListTopic = 2; + SelectionType_Replace = 3; + SelectionType_CopyPasteStyle = 4; + SelectionType_Replace2 = 5; + SelectionType_SmartField = 6; + SelectionType_Visual = 7; + SelectionType_Logical = 8; +} + +enum .TSWP.StyleInsertionBehavior { + StyleInsertionBehavior_NoGrow = 0; + StyleInsertionBehavior_GrowLeft = 1; + StyleInsertionBehavior_GrowRight = 2; +} + +enum .TSWP.CaretAffinity { + CaretAffinity_Start = 0; + CaretAffinity_End = 1; +} + +enum .TSWP.WritingDirectionType { + kWritingDirectionNatural = -1; + kWritingDirectionLeftToRight = 0; + kWritingDirectionRightToLeft = 1; +} + +message .TSWP.SelectionArchive { + required .TSWP.SelectionType deprecated_type = 1 [deprecated = true]; + required .TSP.Range visual_definition_range = 2; + required .TSWP.StyleInsertionBehavior styleInsertionBehavior = 3; + required .TSWP.CaretAffinity caretAffinity = 4; + required .TSP.Range smart_field_range = 5; + optional bool leading_edge = 6; + optional uint32 leading_char_index = 7; + optional .TSWP.SelectionType type = 8; + repeated .TSP.Range ranges = 9; +} + +message .TSWP.ObjectAttributeTable { + message ObjectAttribute { + required uint32 character_index = 1; + optional .TSP.Reference object = 2; + } + repeated .TSWP.ObjectAttributeTable.ObjectAttribute entries = 1; +} + +message .TSWP.StringAttributeTable { + message StringAttribute { + required uint32 character_index = 1; + optional string object = 2; + } + repeated .TSWP.StringAttributeTable.StringAttribute entries = 1; +} + +message .TSWP.ParaDataAttributeTable { + message ParaDataAttribute { + required uint32 character_index = 1; + required uint32 first = 2; + required uint32 second = 3; + } + repeated .TSWP.ParaDataAttributeTable.ParaDataAttribute entries = 1; +} + +message .TSWP.OverlappingFieldAttributeTable { + message OverlappingFieldAttribute { + required .TSP.Range range = 1; + required .TSP.Reference field = 2; + } + repeated .TSWP.OverlappingFieldAttributeTable.OverlappingFieldAttribute entries = 1; +} + +message .TSWP.StorageArchive { + enum KindType { + BODY = 0; + HEADER = 1; + FOOTNOTE = 2; + TEXTBOX = 3; + NOTE = 4; + CELL = 5; + UNCLASSIFIED = 6; + TABLEOFCONTENTS = 7; + UNDEFINED = 8; + } + optional .TSWP.StorageArchive.KindType kind = 1 [default = TEXTBOX]; + optional .TSP.Reference style_sheet = 2; + repeated string text = 3; + optional bool has_itext = 4 [default = false]; + optional bool in_document = 10 [default = false]; + optional .TSWP.ObjectAttributeTable table_para_style = 5; + optional .TSWP.ParaDataAttributeTable table_para_data = 6; + optional .TSWP.ObjectAttributeTable table_list_style = 7; + optional .TSWP.ObjectAttributeTable table_char_style = 8; + optional .TSWP.ObjectAttributeTable table_attachment = 9; + optional .TSWP.ObjectAttributeTable table_smartfield = 11; + optional .TSWP.ObjectAttributeTable table_layout_style = 12; + optional .TSWP.ParaDataAttributeTable table_para_starts = 14; + optional .TSWP.ObjectAttributeTable table_bookmark = 15; + optional .TSWP.ObjectAttributeTable table_footnote = 16; + optional .TSWP.ObjectAttributeTable table_section = 17; + optional .TSWP.ObjectAttributeTable table_rubyfield = 18; + optional .TSWP.StringAttributeTable table_language = 19; + optional .TSWP.StringAttributeTable table_dictation = 20; + optional .TSWP.ObjectAttributeTable table_insertion = 21; + optional .TSWP.ObjectAttributeTable table_deletion = 22; + optional .TSWP.ObjectAttributeTable table_highlight = 23; + optional .TSWP.ParaDataAttributeTable table_para_bidi = 24; + optional .TSWP.OverlappingFieldAttributeTable table_overlapping_highlight = 25; + optional .TSWP.OverlappingFieldAttributeTable table_pencil_annotation = 26; + optional .TSWP.ObjectAttributeTable table_tatechuyoko = 27; + optional .TSWP.ObjectAttributeTable table_drop_cap_style = 28; +} + +message .TSWP.HighlightArchive { + optional .TSP.Reference commentStorage = 1; + optional string text_attribute_uuid_string = 2; +} + +message .TSWP.PencilAnnotationArchive { + optional .TSP.Reference pencil_annotation_storage = 1; + optional string text_attribute_uuid_string = 2; +} + +message .TSWP.FontFeatureArchive { + required uint32 feature_type = 1; + required uint32 feature_selector = 2; +} + +message .TSWP.CharacterStylePropertiesArchive { + enum CapitalizationType { + kNoCaps = 0; + kAllCaps = 1; + kSmallCaps = 2; + kTitled = 3; + } + enum UnderlineType { + kNoUnderline = 0; + kSingleUnderline = 1; + kDoubleUnderline = 2; + kWavyUnderline = 3; + } + enum LigaturesType { + kRequiredLigatures = 0; + kStandardLigatures = 1; + kAllLigatures = 2; + } + enum StrikethruType { + kNoStrikethru = 0; + kSingleStrikethru = 1; + kDoubleStrikethru = 2; + kTripleStrikethru = 3; + } + enum SuperscriptType { + kNoScript = 0; + kSuperscript = 1; + kSubscript = 2; + } + optional bool bold = 1; + optional bool italic = 2; + optional float font_size = 3; + optional bool font_name_null = 4; + optional string font_name = 5; + optional bool font_color_null = 6; + optional .TSP.Color font_color = 7; + optional bool language_null = 8; + optional string language = 9; + optional .TSWP.CharacterStylePropertiesArchive.SuperscriptType superscript = 10; + optional .TSWP.CharacterStylePropertiesArchive.UnderlineType underline = 11; + optional .TSWP.CharacterStylePropertiesArchive.StrikethruType strikethru = 12; + optional .TSWP.CharacterStylePropertiesArchive.CapitalizationType capitalization = 13; + optional float baseline_shift = 14; + optional float kerning = 15; + optional .TSWP.CharacterStylePropertiesArchive.LigaturesType ligatures = 16; + optional bool outline_color_null = 17; + optional .TSP.Color outline_color = 18; + optional float outline = 19; + optional bool shadow_null = 20; + optional .TSD.ShadowArchive shadow = 21; + optional bool strikethru_color_null = 22; + optional .TSP.Color strikethru_color = 23; + optional float strikethru_width = 24; + optional bool background_color_null = 25; + optional .TSP.Color background_color = 26; + optional float tracking = 27; + optional bool underline_color_null = 28; + optional .TSP.Color underline_color = 29; + optional float underline_width = 30; + optional bool word_strikethru = 31; + optional bool word_underline = 32; + optional bool font_features_null = 33; + repeated .TSWP.FontFeatureArchive font_features = 34; + optional .TSWP.WritingDirectionType writing_direction = 35 [default = kWritingDirectionNatural]; + optional bool emphasis_marks_null = 36; + optional string emphasis_marks = 37; + optional bool compatibility_font_name_null = 38; + optional string compatibility_font_name = 39; + optional bool is_named_point_size = 40; + optional bool capitalization_uses_linguistics = 41; + optional bool tate_chu_yoko = 42; + optional bool tsd_stroke_null = 43; + optional .TSD.StrokeArchive tsd_stroke = 44; + optional bool tsd_fill_null = 45; + optional .TSD.FillArchive tsd_fill = 46; + optional bool tsd_fill_should_fill_text_container = 47; +} + +message .TSWP.CharacterStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSWP.CharacterStylePropertiesArchive char_properties = 11; +} + +message .TSWP.TabArchive { + enum TabAlignmentType { + kTabAlignmentLeft = 0; + kTabAlignmentCenter = 1; + kTabAlignmentRight = 2; + kTabAlignmentDecimal = 3; + } + optional float position = 1; + optional .TSWP.TabArchive.TabAlignmentType alignment = 2; + optional string leader = 3; +} + +message .TSWP.TabsArchive { + repeated .TSWP.TabArchive tabs = 1; +} + +message .TSWP.LineSpacingArchive { + enum LineSpacingModeType { + kRelativeLineSpacing = 0; + kMinimumLineSpacing = 1; + kExactLineSpacing = 2; + kMaximumLineSpacing = 3; + kSpaceBetweenLineSpacing = 4; + } + optional .TSWP.LineSpacingArchive.LineSpacingModeType mode = 1; + optional float amount = 2; + optional float baselineRule = 3; +} + +message .TSWP.ParagraphStylePropertiesArchive { + enum TextAlignmentType { + TATvalue0 = 0; + TATvalue1 = 1; + TATvalue2 = 2; + TATvalue3 = 3; + TATvalue4 = 4; + } + enum ParagraphBorderType { + PBTvalue0 = 0; + PBTvalue1 = 1; + PBTvalue2 = 2; + PBTvalue3 = 3; + PBTvalue4 = 4; + } + enum OutlineStyleType { + OSTvalue0 = 0; + OSTvalue1 = 1; + OSTvalue2 = 2; + } + optional .TSWP.ParagraphStylePropertiesArchive.TextAlignmentType alignment = 1; + optional bool decimal_tab_null = 2; + optional string decimal_tab = 3; + optional float default_tab_stops = 4; + optional bool fill_null = 5; + optional .TSP.Color fill = 6; + optional float first_line_indent = 7; + optional bool hyphenate = 8; + optional bool keep_lines_together = 9; + optional bool keep_with_next = 10; + optional float left_indent = 11; + optional bool line_spacing_null = 12; + optional .TSWP.LineSpacingArchive line_spacing = 13; + optional bool page_break_before = 14; + optional .TSWP.ParagraphStylePropertiesArchive.ParagraphBorderType borders = 15; + optional bool rule_offset_null = 16; + optional .TSP.Point rule_offset = 17; + optional float rule_width = 18; + optional float right_indent = 19; + optional float space_after = 20; + optional float space_before = 21; + optional bool tabs_null = 24; + optional .TSWP.TabsArchive tabs = 25; + optional bool widow_control = 26; + optional uint32 outline_level = 27; + optional .TSWP.ParagraphStylePropertiesArchive.OutlineStyleType outline_style = 28; + optional bool following_style_id_null = 29; + optional string following_style_id = 30; + optional bool stroke_null = 31; + optional .TSD.StrokeArchive stroke = 32; + optional bool show_in_toc = 33; + optional bool toc_style_id_null = 34; + optional string toc_style_id = 35; + optional .TSWP.WritingDirectionType writing_direction = 38 [default = kWritingDirectionNatural]; + optional bool list_style_null = 39; + optional .TSP.Reference list_style = 40; + optional bool following_style_null = 41; + optional .TSP.Reference following_style = 42; + optional bool show_in_bookmarks_list = 43; + optional bool show_in_toc_navigator = 44; +} + +message .TSWP.ParagraphStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSWP.CharacterStylePropertiesArchive char_properties = 11; + optional .TSWP.ParagraphStylePropertiesArchive para_properties = 12; +} + +message .TSWP.ListStyleArchive { + message LabelGeometry { + optional float scale = 1 [default = 1]; + optional float baseline_offset = 2 [default = 0]; + optional bool scale_with_text = 3 [default = true]; + } + message LabelImage { + optional .TSP.DataReference image = 3; + optional bool image_null = 2; + optional .TSP.Reference database_image = 1; + } + enum LabelType { + kNone = 0; + kImage = 1; + kString = 2; + kNumber = 3; + } + enum NumberType { + kNumericDecimal = 0; + kNumericDoubleParen = 1; + kNumericRightParen = 2; + kRomanUpperDecimal = 3; + kRomanUpperDoubleParen = 4; + kRomanUpperRightParen = 5; + kRomanLowerDecimal = 6; + kRomanLowerDoubleParen = 7; + kRomanLowerRightParen = 8; + kAlphaUpperDecimal = 9; + kAlphaUpperDoubleParen = 10; + kAlphaUpperRightParen = 11; + kAlphaLowerDecimal = 12; + kAlphaLowerDoubleParen = 13; + kAlphaLowerRightParen = 14; + kIdeographicJapaneseDecimalKind = 15; + kIdeographicJapaneseDoubleParenKind = 16; + kIdeographicJapaneseRightParenKind = 17; + kHiraganaDecimalKind = 18; + kHiraganaDoubleParenKind = 19; + kHiraganaRightParenKind = 20; + kKatakanaDecimalKind = 21; + kKatakanaDoubleParenKind = 22; + kKatakanaRightParenKind = 23; + kHiraganaIrohaDecimalKind = 24; + kHiraganaIrohaDoubleParenKind = 25; + kHiraganaIrohaRightParenKind = 26; + kKatakanaIrohaDecimalKind = 27; + kKatakanaIrohaDoubleParenKind = 28; + kKatakanaIrohaRightParenKind = 29; + kIdeographicSimplifiedChineseDecimalKind = 30; + kIdeographicSimplifiedChineseDoubleParenKind = 31; + kIdeographicSimplifiedChineseRightParenKind = 32; + kIdeographicTraditionalChineseDecimalKind = 33; + kIdeographicTraditionalChineseDoubleParenKind = 34; + kIdeographicTraditionalChineseRightParenKind = 35; + kIdeographicFormalJapaneseDecimalKind = 36; + kIdeographicFormalJapaneseDoubleParenKind = 37; + kIdeographicFormalJapaneseRightParenKind = 38; + kIdeographicFormalSimplifiedChineseDecimalKind = 39; + kIdeographicFormalSimplifiedChineseDoubleParenKind = 40; + kIdeographicFormalSimplifiedChineseRightParenKind = 41; + kIdeographicFormalTraditionalChineseDecimalKind = 42; + kIdeographicFormalTraditionalChineseDoubleParenKind = 43; + kIdeographicFormalTraditionalChineseRightParenKind = 44; + kKoreanAlphabetDecimalKind = 45; + kKoreanAlphabetDoubleParenKind = 46; + kKoreanAlphabetRightParenKind = 47; + kCircledNumberKind = 48; + kArabianNumericDecimalKind = 49; + kArabianNumericDoubleParenKind = 50; + kArabianNumericRightParenKind = 51; + kArabianAlphaDecimalKind = 52; + kArabianAlphaDoubleParenKind = 53; + kArabianAlphaRightParenKind = 54; + kArabianAbjadDecimalKind = 55; + kArabianAbjadDoubleParenKind = 56; + kArabianAbjadRightParenKind = 57; + kHebrewAlphaDecimalKind = 58; + kHebrewAlphaDoubleParenKind = 59; + kHebrewAlphaRightParenKind = 60; + kHebrewBiblicalStandardKind = 61; + kHebrewBiblicalDecimalKind = 62; + kHebrewBiblicalDoubleParenKind = 63; + kHebrewBiblicalRightParenKind = 64; + } + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + repeated .TSWP.ListStyleArchive.LabelType label_types = 11; + repeated float text_indents = 12; + repeated float indents = 13; + repeated .TSWP.ListStyleArchive.LabelGeometry geometries = 14; + repeated .TSWP.ListStyleArchive.NumberType number_types = 15; + repeated string strings = 16; + repeated .TSWP.ListStyleArchive.LabelImage images = 17; + optional bool shadow_null = 18; + optional .TSD.ShadowArchive shadow = 19; + optional bool font_color_null = 20; + optional .TSP.Color font_color = 21; + optional bool font_name_null = 22; + optional string font_name = 23; + optional .TSWP.WritingDirectionType writing_direction = 24 [default = kWritingDirectionNatural]; + repeated bool tiered_numbers = 25; +} + +message .TSWP.TextStylePresetArchive { + optional string preset_identifier = 1; + optional .TSP.Reference paragraph_style = 2; + optional .TSP.Reference list_style = 3; +} + +message .TSWP.ColumnsArchive { + message EqualColumnsArchive { + optional uint32 count = 1; + optional float gap = 2; + } + message NonEqualColumnsArchive { + message GapWidthArchive { + required float gap = 1; + required float width = 2; + } + required float first = 1; + repeated .TSWP.ColumnsArchive.NonEqualColumnsArchive.GapWidthArchive following = 2; + } + optional .TSWP.ColumnsArchive.EqualColumnsArchive equal_columns = 1; + optional .TSWP.ColumnsArchive.NonEqualColumnsArchive non_equal_columns = 2; +} + +message .TSWP.PaddingArchive { + optional float left = 1; + optional float top = 2; + optional float right = 3; + optional float bottom = 4; +} + +message .TSWP.ColumnStylePropertiesArchive { + enum VerticalAlignmentType { + kFrameAlignTop = 0; + kFrameAlignMiddle = 1; + kFrameAlignBottom = 2; + kFrameAlignJustify = 3; + } + optional bool continuous = 1; + optional bool shrink_to_fit = 2; + optional bool vertical_text = 3; + optional float min_horizontal_inset = 4; + optional .TSWP.ColumnStylePropertiesArchive.VerticalAlignmentType vertical_alignment = 5; + optional bool columns_null = 6; + optional .TSWP.ColumnsArchive columns = 7; + optional bool margins_null = 8; + optional .TSWP.PaddingArchive margins = 9; + optional bool padding_null = 10; + optional .TSWP.PaddingArchive padding = 11; + optional .TSWP.WritingDirectionType writing_direction = 12 [default = kWritingDirectionNatural]; +} + +message .TSWP.ColumnStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSWP.ColumnStylePropertiesArchive column_properties = 11; +} + +message .TSWP.ShapeStylePropertiesArchive { + enum VerticalAlignmentType { + kFrameAlignTop = 0; + kFrameAlignMiddle = 1; + kFrameAlignBottom = 2; + kFrameAlignJustify = 3; + } + optional bool shrink_to_fit = 1; + optional .TSWP.ShapeStylePropertiesArchive.VerticalAlignmentType vertical_alignment = 2; + optional bool columns_null = 3; + optional .TSWP.ColumnsArchive columns = 4; + optional bool padding_null = 5; + optional .TSWP.PaddingArchive padding = 6; + optional uint32 default_text_preset_index = 7; + optional bool vertical_text = 8; + optional bool paragraph_style_null = 9; + optional .TSP.Reference paragraph_style = 10; + optional bool vertical_text_40 = 11; +} + +message .TSWP.ShapeStyleArchive { + required .TSD.ShapeStyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSWP.ShapeStylePropertiesArchive shape_properties = 11; +} + +message .TSWP.ThemePresetsArchive { + repeated .TSP.Reference list_style_presets = 1; + repeated .TSP.Reference text_style_presets = 2; + repeated .TSP.Reference imported_text_style_presets = 3; + repeated .TSP.Reference toc_entry_style_presets = 4; + repeated .TSP.Reference toc_settings_presets = 5; + repeated .TSP.Reference character_style_presets = 6; + repeated .TSP.Reference paragraph_style_presets = 7; + repeated .TSP.Reference dropcap_style_presets = 8; + extend .TSS.ThemeArchive { + optional .TSWP.ThemePresetsArchive extension = 110; + } +} + +message .TSWP.TextPresetDisplayItemArchive { + required .TSP.Reference preset = 1; + required string display_name = 2; +} + +message .TSWP.TOCEntryStylePropertiesArchive { + optional bool page_number_style_null = 1; + optional .TSP.Reference page_number_style = 2; + optional bool show_page_number = 3; +} + +message .TSWP.TOCEntryStyleArchive { + required .TSWP.ParagraphStyleArchive super = 1; + optional .TSWP.TOCEntryStylePropertiesArchive toc_properties = 2; +} + +message .TSWP.TOCSettingsArchive { + message TOCEntryData { + optional .TSP.Reference paragraph_style = 1; + optional .TSP.Reference toc_entry_style = 2; + optional bool show_in_toc = 3; + } + optional string toc_name = 1; + optional uint32 toc_scope = 2; + repeated .TSWP.TOCSettingsArchive.TOCEntryData entries = 3; +} + +message .TSWP.TOCEntryInstanceArchive { + required uint32 paragraph_index = 1; + required uint32 page_number = 2; + required uint32 number_format = 3; + required string heading = 4; + required .TSP.Reference indexed_style = 5; + optional .TSP.Reference indexed_list_style = 6; + optional uint32 indexed_list_start = 7; + optional uint32 indexed_paragraph_level = 8; + optional string number_format_name = 9; +} + +message .TSWP.UndoTransaction { + message GenericTransaction { + required uint32 value1 = 1; + required uint32 value2 = 2; + required uint32 value3 = 3; + } + message TextTransaction { + required uint32 insert_location = 1; + required uint32 insert_length = 2; + optional string string_to_delete = 3; + } + message CharIndexTransaction { + required uint32 char_index = 1; + required uint32 count = 2; + optional .TSP.Reference object = 3; + } + message ReplaceCharIndexTransaction { + required uint32 attribute_index = 1; + required uint32 char_index = 2; + } + message AttributeIndexTransaction { + required uint32 attribute_index = 1; + required uint32 char_index = 2; + optional .TSP.Reference object = 3; + optional string string = 4; + } + message InsertAttributeTransaction { + required uint32 attribute_index = 1; + required uint32 attribute_count = 2; + optional .TSP.Reference object = 3; + optional string string = 4; + } + message InsertNilTransaction { + required uint32 attribute_index = 1; + required uint32 attribute_count = 2; + } + message CharDeltaTransaction { + required uint32 char_index = 1; + required uint32 attribute_index = 2; + required sint32 char_delta = 3; + } + message ParagraphDataTransaction { + required uint32 attribute_index = 1; + required uint32 first = 2; + required uint32 second = 3; + required uint32 char_index = 4; + } + message ObjectDOLCTransaction { + required uint32 flags = 1; + optional .TSP.Reference object = 2; + } + message CTDateTransaction { + required uint32 attribute_index = 1; + optional .TSP.Date date = 2; + } + message UnionTransaction { + required .TSWP.UndoTransaction.UndoKind kind = 1; + optional uint32 table = 2; + optional .TSWP.UndoTransaction.GenericTransaction generic = 5; + optional .TSWP.UndoTransaction.TextTransaction text = 6; + optional .TSWP.UndoTransaction.CharIndexTransaction char_index = 7; + optional .TSWP.UndoTransaction.ReplaceCharIndexTransaction replace_char_index = 8; + optional .TSWP.UndoTransaction.AttributeIndexTransaction attribute_index = 9; + optional .TSWP.UndoTransaction.InsertNilTransaction insert_nil = 10; + optional .TSWP.UndoTransaction.InsertAttributeTransaction insert_attribute = 11; + optional .TSWP.UndoTransaction.CharDeltaTransaction char_delta = 12; + optional .TSWP.UndoTransaction.ParagraphDataTransaction paragraph_data = 13; + optional .TSWP.UndoTransaction.ObjectDOLCTransaction object_dolc = 14; + optional .TSWP.UndoTransaction.CTDateTransaction ct_date = 15; + } + message StorageAction { + required .TSWP.UndoTransaction.ActionKind kind = 1; + optional uint32 flags = 2; + optional uint32 table = 3; + optional .TSP.Range range = 4; + optional string string = 5; + optional .TSP.Reference object = 6; + optional .TSP.Date date = 7; + optional uint32 paragraph_level = 8; + optional uint32 paragraph_flags = 9; + optional uint32 paragraph_value = 10; + optional int32 placement_index = 11; + optional string placement_uuid_path = 12; + optional .TSP.Reference undo_object = 13; + } + message StorageActionGroup { + required .TSWP.UndoTransaction.ActionGroupKind kind = 1; + repeated .TSWP.UndoTransaction.StorageAction forward_actions = 3; + repeated .TSWP.UndoTransaction.StorageAction inverse_forward_actions = 4; + repeated .TSWP.UndoTransaction.StorageAction inverse_detail_actions = 6; + } + enum UndoKind { + REPLACE_TEXT = 1; + INSERT_ATTRIBUTE = 2; + DELETE_ATTRIBUTE = 3; + ADJUST_CHAR_INDEXES = 4; + COMPR_ADJUST_CHAR_INDEXES = 5; + REPLACE_CHAR_INDEX = 6; + REPLACE_OBJECT = 7; + REPLACE_PARAGRAPH_DATA = 8; + OBJECT_DOLC = 9; + CT_DATE = 10; + } + enum ActionKind { + ACTION_UNDEFINED = 0; + ACTION_TEXT = 1; + ACTION_ATTRIBUTE = 2; + } + enum ActionGroupKind { + ACTION_GROUP_UNDEFINED = 0; + ACTION_GROUP_TEXT = 1; + ACTION_GROUP_ATTRIBUTE = 2; + } + repeated .TSWP.UndoTransaction.UnionTransaction entries = 1; + repeated .TSWP.UndoTransaction.StorageActionGroup group_entries = 2; + optional uint32 flags = 3; + optional uint32 version = 4; +} + +message .TSWP.UndoTransactionWrapperArchive { + required .TSWP.UndoTransaction undo_transaction = 1; +} + +message .TSWP.ShapeInfoArchive { + required .TSD.ShapeArchive super = 1; + optional .TSP.Reference deprecated_storage = 2 [deprecated = true]; + optional .TSP.Reference text_flow = 3; + optional .TSP.Reference owned_storage = 4; + optional bool is_text_box = 6; +} + +message .TSWP.CommentInfoArchive { + required .TSWP.ShapeInfoArchive super = 1; + optional .TSP.Reference comment_storage = 2; +} + +message .TSWP.TOCInfoArchive { + required .TSWP.ShapeInfoArchive super = 1; + optional .TSP.Reference toc_settings = 2; + repeated .TSP.Reference toc_entry_data = 3; + repeated .TSP.Range page_number_ranges = 4; + optional bool sync_toc_settings_with_toc_navigator = 5; +} + +message .TSWP.TOCLayoutHintArchive { + required .TSP.Range charRange = 1; +} + +message .TSWP.EquationInfoArchive { + extend .TSD.ImageArchive { + optional string equation_source_old = 100; + optional .TSWP.CharacterStylePropertiesArchive equation_text_properties = 101; + optional float equation_depth = 102; + optional string equation_source_text = 103; + } +} + +message .TSWP.TextualAttachmentArchive { + enum Kind { + kKindPageNumber = 0; + kKindPageCount = 1; + kKindFootnoteMark = 2; + } + optional string string_equivalent = 1; + optional .TSWP.TextualAttachmentArchive.Kind kind = 2; +} + +message .TSWP.TSWPTOCPageNumberAttachmentArchive { + optional .TSWP.TextualAttachmentArchive super = 1; + optional string page_number = 2; + optional string bookmark_name = 3; +} + +message .TSWP.UIGraphicalAttachment { +} + +message .TSWP.DrawableAttachmentArchive { + optional .TSP.Reference drawable = 1; + optional uint32 h_offset_type = 2; + optional float h_offset = 3; + optional uint32 v_offset_type = 4; + optional float v_offset = 5; +} + +message .TSWP.TOCAttachmentArchive { + required .TSWP.DrawableAttachmentArchive super = 1; +} + +message .TSWP.FootnoteReferenceAttachmentArchive { + optional .TSWP.TextualAttachmentArchive super = 1; + optional .TSP.Reference contained_storage = 2; + optional string custom_mark_string = 3; +} + +message .TSWP.NumberAttachmentArchive { + optional .TSWP.TextualAttachmentArchive super = 1; + optional uint32 number_format = 2; + optional string string_value = 3; + optional string number_format_name = 4; +} + +message .TSWP.SmartFieldArchive { + optional string text_attribute_uuid_string = 1; +} + +message .TSWP.HyperlinkFieldArchive { + optional .TSWP.SmartFieldArchive super = 1; + optional string url_ref = 2; +} + +message .TSWP.PlaceholderSmartFieldArchive { + optional .TSWP.SmartFieldArchive super = 1; + optional bool localizable = 2; + optional string script_tag = 3; +} + +message .TSWP.UnsupportedHyperlinkFieldArchive { + optional .TSWP.PlaceholderSmartFieldArchive super = 1; + optional string url_ref = 2; + optional string url_original_ref = 3; +} + +message .TSWP.BibliographySmartFieldArchive { + optional .TSWP.SmartFieldArchive super = 3; + repeated .TSP.Reference citation_records = 2; + optional bool localizable = 4; + optional .TSWP.PlaceholderSmartFieldArchive old_super = 1; +} + +message .TSWP.CitationRecordArchive { + optional string endnote_xml = 1; + optional bool hide_author_names = 2; + optional bool hide_year = 3; + optional string page_range = 4; + optional string prefix = 5; + optional string suffix = 6; + optional string authors_string = 7; + optional string title = 8; + optional string year = 9; + optional string type = 10; +} + +message .TSWP.CitationSmartFieldArchive { + optional .TSWP.SmartFieldArchive super = 3; + repeated .TSP.Reference citation_records = 2; + optional bool localizable = 4; + optional .TSWP.PlaceholderSmartFieldArchive old_super = 1; +} + +message .TSWP.DateTimeSmartFieldArchive { + enum DateTimeUpdatePlan { + kDateTimeUpdatePlanNever = 0; + kDateTimeUpdatePlanAuto = 1; + kDateTimeUpdatePlanOnce = 2; + } + enum DateTimeFormatterStyle { + kDateTimeFormatterStyleNone = 0; + kDateTimeFormatterStyleShort = 1; + kDateTimeFormatterStyleMedium = 2; + kDateTimeFormatterStyleLong = 3; + kDateTimeFormatterStyleFull = 4; + } + optional .TSWP.SmartFieldArchive super = 1; + optional string format = 2; + optional string locale_identifier = 3; + optional .TSWP.DateTimeSmartFieldArchive.DateTimeFormatterStyle date_style = 4; + optional .TSWP.DateTimeSmartFieldArchive.DateTimeFormatterStyle time_style = 5; + optional .TSWP.DateTimeSmartFieldArchive.DateTimeUpdatePlan update_plan = 6; + optional bool needs_update = 7; + optional .TSP.Date date = 8; +} + +message .TSWP.BookmarkFieldArchive { + optional .TSWP.SmartFieldArchive super = 1; + optional string name = 2; + optional uint32 ranged = 3; + optional uint32 hidden = 4; +} + +message .TSWP.FilenameSmartFieldArchive { + optional .TSWP.PlaceholderSmartFieldArchive super = 1; + optional uint32 display_flags = 2; +} + +message .TSWP.MergeFieldTypeArchive { + optional string contacts_property = 2; + optional string contacts_key = 3; + optional string contacts_label = 4; + optional string table_key = 5; +} + +message .TSWP.MergeSmartFieldArchive { + enum MergeCategory { + kMergeCategoryTo = 0; + kMergeCategoryFrom = 1; + } + optional .TSWP.PlaceholderSmartFieldArchive super = 1; + optional string contacts_property = 2; + optional string contacts_key = 3; + optional string contacts_label = 4; + optional .TSWP.MergeSmartFieldArchive.MergeCategory category = 5; + optional bool requires_following_whitespace = 6; + optional string whitespace = 7; + optional string guid = 8; + optional string table_key = 9; + optional .TSWP.MergeFieldTypeArchive field_type = 10; + optional bool has_custom_text = 11; +} + +message .TSWP.TOCSmartFieldArchive { + message TOCEntry { + optional string bookmark_name = 1; + optional .TSP.Reference target_style = 2; + optional .TSP.Range range = 3; + } + optional .TSWP.PlaceholderSmartFieldArchive super = 1; + repeated .TSWP.TOCSmartFieldArchive.TOCEntry toc_entries = 2; +} + +message .TSWP.RubyFieldArchive { + optional .TSWP.SmartFieldArchive super = 1; + optional string ruby_text = 2; +} + +message .TSWP.TateChuYokoFieldArchive { + optional .TSWP.SmartFieldArchive super = 1; +} + +message .TSWP.ChangeArchive { + enum ChangeKind { + kChangeKindInsertion = 1; + kChangeKindDeletion = 2; + } + optional .TSWP.ChangeArchive.ChangeKind kind = 1; + optional .TSP.Reference session = 2; + optional .TSP.Date date = 3; + optional string text_attribute_uuid_string = 4; +} + +message .TSWP.ChangeSessionArchive { + optional uint32 session_uid = 1; + optional .TSP.Reference author = 2; + optional .TSP.Date date = 3; +} + +message .TSWP.SectionPlaceholderArchive { + optional .TSP.Reference parent_storage = 1; +} + +message .TSWP.HyperlinkSelectionArchive { +} + +message .TSWP.FlowInfoArchive { + optional .TSP.Reference text_storage = 1; + repeated .TSP.Reference textboxes = 2; + optional uint32 user_interface_identifier = 3; +} + +message .TSWP.FlowInfoContainerArchive { + repeated .TSP.Reference flow_infos = 1; + optional uint32 next_user_interface_identifier = 2; +} + +message .TSWP.DropCapArchive { + enum DropCapType { + TSWPDropCapTypeText = 0; + TSWPDropCapTypeShape = 1; + TSWPDropCapTypeImage = 2; + } + enum DropCapWrapType { + TSWPDropCapWrapTypeRectangular = 0; + TSWPDropCapWrapTypeContour = 1; + TSWPDropCapWrapTypeNone = 2; + } + optional .TSWP.DropCapArchive.DropCapType type = 1 [default = TSWPDropCapTypeText]; + optional uint32 number_of_lines = 2 [default = 3]; + optional uint32 number_of_raised_lines = 3 [default = 0]; + optional float deprecated_outdent = 4; + optional double outdent = 11 [default = 0]; + optional float deprecated_padding = 5; + optional double padding = 12 [default = 0]; + optional .TSWP.DropCapArchive.DropCapWrapType wrap_type = 6 [default = TSWPDropCapWrapTypeRectangular]; + optional bool shape_enabled = 7 [default = false]; + optional float deprecated_corner_radius = 8; + optional double corner_radius = 13 [default = 0]; + optional float deprecated_character_scale = 9; + optional double character_scale = 14 [default = 1]; + optional uint32 number_of_characters = 10 [default = 1]; +} + +message .TSWP.DropCapStylePropertiesArchive { + optional .TSWP.DropCapArchive drop_cap = 1; + optional .TSD.StrokeArchive drop_cap_shape_stroke = 3; + optional bool drop_cap_shape_fill_null = 4; + optional .TSD.FillArchive drop_cap_shape_fill = 5; +} + +message .TSWP.DropCapStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSWP.CharacterStylePropertiesArchive char_properties = 11; + optional .TSWP.DropCapStylePropertiesArchive drop_cap_properties = 12; +} + +message .TSWP.CollaboratorTextCursorSubselectionArchive { + optional .TSWP.SelectionArchive text_selection = 1; + extend .TSK.CollaboratorCursorArchive { + optional .TSWP.CollaboratorTextCursorSubselectionArchive text_cursor_subselection = 100; + } +} + +extend .TSS.CommandPropertyEntryArchive { + optional .TSWP.PaddingArchive padding = 100; +} + + +message .TSWPSOS.SpecSetCharacterStyleArchive { + optional .TSP.Reference character_style = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetColumnsArchive { + optional .TSWP.ColumnsArchive columns = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetDropCapArchive { + optional .TSWP.DropCapArchive drop_cap = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetFontFeaturesArchive { + repeated .TSWP.FontFeatureArchive font_features = 1; + optional bool font_features_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetLineSpacingArchive { + optional .TSWP.LineSpacingArchive line_spacing = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetListStyleArchive { + optional .TSP.Reference list_style = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetListStyleBoolArrayArchive { + repeated bool list_style_bool_array = 1; + optional bool list_style_bool_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetListStyleFloatArrayArchive { + repeated float list_style_float_array = 1; + optional bool list_style_float_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetListStyleImageDataArrayArchive { + repeated .TSWP.ListStyleArchive.LabelImage list_style_image_data_array = 1; + optional bool list_style_image_data_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetListStyleListLabelGeometryArrayArchive { + repeated .TSWP.ListStyleArchive.LabelGeometry list_style_list_label_geometry_array = 1; + optional bool list_style_list_label_geometry_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetListStyleListLabelTypeArrayArchive { + repeated .TSWP.ListStyleArchive.LabelType list_style_list_label_type_array = 1; + optional bool list_style_list_label_type_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetListStyleListNumberTypeArrayArchive { + repeated .TSWP.ListStyleArchive.NumberType list_style_list_number_type_array = 1; + optional bool list_style_list_number_type_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetListStyleStringArrayArchive { + repeated string list_style_string_array = 1; + optional bool list_style_string_array_undefined = 2; + required bool unset = 3; +} + +message .TSWPSOS.SpecSetPaddingArchive { + optional .TSWP.PaddingArchive padding = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetParagraphStyleArchive { + optional .TSP.Reference paragraph_style = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetRuleOffsetArchive { + optional .TSP.Point rule_offset = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecSetTabsArchive { + optional .TSWP.TabsArchive tabs = 1; + required bool unset = 2; +} + +message .TSWPSOS.SpecCharacterStyleArchive { + optional .TSWPSOS.SpecSetCharacterStyleArchive spec_set_character_style = 1; +} + +message .TSWPSOS.SpecColumnsArchive { + optional .TSWPSOS.SpecSetColumnsArchive spec_set_columns = 1; +} + +message .TSWPSOS.SpecDropCapArchive { + optional .TSWPSOS.SpecSetDropCapArchive spec_set_drop_cap = 1; +} + +message .TSWPSOS.SpecFontFeaturesArchive { + optional .TSWPSOS.SpecSetFontFeaturesArchive spec_set_font_features = 1; +} + +message .TSWPSOS.SpecLineSpacingArchive { + optional .TSWPSOS.SpecSetLineSpacingArchive spec_set_line_spacing = 1; +} + +message .TSWPSOS.SpecListStyleArchive { + optional .TSWPSOS.SpecSetListStyleArchive spec_set_list_style = 1; +} + +message .TSWPSOS.SpecListStyleBoolArrayArchive { + optional .TSWPSOS.SpecSetListStyleBoolArrayArchive spec_set_list_style_bool_array = 1; +} + +message .TSWPSOS.SpecListStyleFloatArrayArchive { + optional .TSWPSOS.SpecSetListStyleFloatArrayArchive spec_set_list_style_float_array = 1; +} + +message .TSWPSOS.SpecListStyleImageDataArrayArchive { + optional .TSWPSOS.SpecSetListStyleImageDataArrayArchive spec_set_list_style_image_data_array = 1; +} + +message .TSWPSOS.SpecListStyleListLabelGeometryArrayArchive { + optional .TSWPSOS.SpecSetListStyleListLabelGeometryArrayArchive spec_set_list_style_list_label_geometry_array = 1; +} + +message .TSWPSOS.SpecListStyleListLabelTypeArrayArchive { + optional .TSWPSOS.SpecSetListStyleListLabelTypeArrayArchive spec_set_list_style_list_label_type_array = 1; +} + +message .TSWPSOS.SpecListStyleListNumberTypeArrayArchive { + optional .TSWPSOS.SpecSetListStyleListNumberTypeArrayArchive spec_set_list_style_list_number_type_array = 1; +} + +message .TSWPSOS.SpecListStyleStringArrayArchive { + optional .TSWPSOS.SpecSetListStyleStringArrayArchive spec_set_list_style_string_array = 1; +} + +message .TSWPSOS.SpecPaddingArchive { + optional .TSWPSOS.SpecSetPaddingArchive spec_set_padding = 1; +} + +message .TSWPSOS.SpecParagraphStyleArchive { + optional .TSWPSOS.SpecSetParagraphStyleArchive spec_set_paragraph_style = 1; +} + +message .TSWPSOS.SpecRuleOffsetArchive { + optional .TSWPSOS.SpecSetRuleOffsetArchive spec_set_rule_offset = 1; +} + +message .TSWPSOS.SpecTabsArchive { + optional .TSWPSOS.SpecSetTabsArchive spec_set_tabs = 1; +} + +message .TSWPSOS.CharacterStylePropertyChangeSetArchive { + optional .TSSSOS.SpecDoubleArchive baseline_shift = 1; + optional bool baseline_shift_undefined = 2; + optional .TSSSOS.SpecIntegerArchive capitalization = 3; + optional bool capitalization_undefined = 4; + optional .TSSSOS.SpecStringArchive compatibility_font_name = 5; + optional bool compatibility_font_name_undefined = 6; + optional .TSSSOS.SpecStringArchive emphasis_marks = 7; + optional bool emphasis_marks_undefined = 8; + optional .TSSSOS.SpecBoolArchive bold = 9; + optional bool bold_undefined = 10; + optional .TSSSOS.SpecBoolArchive italic = 11; + optional bool italic_undefined = 12; + optional .TSWPSOS.SpecFontFeaturesArchive font_features = 13; + optional bool font_features_undefined = 14; + optional .TSSSOS.SpecStringArchive font_name = 15; + optional bool font_name_undefined = 16; + optional .TSSSOS.SpecDoubleArchive font_size = 17; + optional bool font_size_undefined = 18; + optional .TSSSOS.SpecDoubleArchive font_size_delta = 19; + optional bool font_size_delta_undefined = 20; + optional .TSSSOS.SpecDoubleArchive kerning = 21; + optional bool kerning_undefined = 22; + optional .TSSSOS.SpecStringArchive language = 23; + optional bool language_undefined = 24; + optional .TSSSOS.SpecIntegerArchive ligatures = 25; + optional bool ligatures_undefined = 26; + optional .TSDSOS.SpecShadowArchive text_shadow = 27; + optional bool text_shadow_undefined = 28; + optional .TSSSOS.SpecColorArchive strikethru_color = 29; + optional bool strikethru_color_undefined = 30; + optional .TSSSOS.SpecIntegerArchive strikethru = 31; + optional bool strikethru_undefined = 32; + optional .TSSSOS.SpecDoubleArchive strikethru_width = 33; + optional bool strikethru_width_undefined = 34; + optional .TSSSOS.SpecIntegerArchive superscript = 35; + optional bool superscript_undefined = 36; + optional .TSSSOS.SpecColorArchive text_background = 37; + optional bool text_background_undefined = 38; + optional .TSSSOS.SpecDoubleArchive tracking = 39; + optional bool tracking_undefined = 40; + optional .TSSSOS.SpecColorArchive underline_color = 41; + optional bool underline_color_undefined = 42; + optional .TSSSOS.SpecIntegerArchive underline = 43; + optional bool underline_undefined = 44; + optional .TSSSOS.SpecDoubleArchive underline_width = 45; + optional bool underline_width_undefined = 46; + optional .TSSSOS.SpecBoolArchive word_strikethru = 47; + optional bool word_strikethru_undefined = 48; + optional .TSSSOS.SpecBoolArchive word_underline = 49; + optional bool word_underline_undefined = 50; + optional .TSSSOS.SpecIntegerArchive writing_direction = 51; + optional bool writing_direction_undefined = 52; + optional .TSSSOS.SpecBoolArchive is_named_point_size = 53; + optional bool is_named_point_size_undefined = 54; + optional .TSSSOS.SpecBoolArchive capitalization_uses_linguistics = 55; + optional bool capitalization_uses_linguistics_undefined = 56; + optional .TSDSOS.SpecStrokeArchive character_stroke = 57; + optional bool character_stroke_undefined = 58; + optional .TSDSOS.SpecFillArchive character_fill = 59; + optional bool character_fill_undefined = 60; + optional .TSSSOS.SpecBoolArchive character_fill_should_fill_text_container = 61; + optional bool character_fill_should_fill_text_container_undefined = 62; +} + +message .TSWPSOS.ColumnStylePropertyChangeSetArchive { + optional .TSWPSOS.SpecColumnsArchive columns = 1; + optional bool columns_undefined = 2; + optional .TSSSOS.SpecBoolArchive continuous = 3; + optional bool continuous_undefined = 4; + optional .TSWPSOS.SpecPaddingArchive margins = 5; + optional bool margins_undefined = 6; + optional .TSSSOS.SpecDoubleArchive min_horizontal_inset = 7; + optional bool min_horizontal_inset_undefined = 8; + optional .TSWPSOS.SpecPaddingArchive padding = 9; + optional bool padding_undefined = 10; + optional .TSSSOS.SpecBoolArchive shrink_to_fit = 11; + optional bool shrink_to_fit_undefined = 12; + optional .TSSSOS.SpecIntegerArchive vertical_alignment = 13; + optional bool vertical_alignment_undefined = 14; + optional .TSSSOS.SpecBoolArchive vertical_text = 15; + optional bool vertical_text_undefined = 16; + optional .TSSSOS.SpecIntegerArchive writing_direction = 17; + optional bool writing_direction_undefined = 18; +} + +message .TSWPSOS.DropCapSpecificStylePropertyChangeSetArchive { + optional .TSWPSOS.SpecDropCapArchive drop_cap_model = 1; + optional bool drop_cap_model_undefined = 2; + optional .TSDSOS.SpecStrokeArchive drop_cap_shape_stroke = 3; + optional bool drop_cap_shape_stroke_undefined = 4; + optional .TSDSOS.SpecFillArchive drop_cap_shape_fill = 5; + optional bool drop_cap_shape_fill_undefined = 6; +} + +message .TSWPSOS.DropCapStylePropertyChangeSetArchive { + required .TSWPSOS.CharacterStylePropertyChangeSetArchive super = 1; + optional .TSWPSOS.SpecDropCapArchive drop_cap_model = 2; + optional bool drop_cap_model_undefined = 3; + optional .TSDSOS.SpecStrokeArchive drop_cap_shape_stroke = 4; + optional bool drop_cap_shape_stroke_undefined = 5; + optional .TSDSOS.SpecFillArchive drop_cap_shape_fill = 6; + optional bool drop_cap_shape_fill_undefined = 7; +} + +message .TSWPSOS.ListStylePropertyChangeSetArchive { + optional .TSSSOS.SpecColorArchive list_font_color = 1; + optional bool list_font_color_undefined = 2; + optional .TSSSOS.SpecStringArchive font_name = 3; + optional bool font_name_undefined = 4; + optional .TSWPSOS.SpecListStyleFloatArrayArchive list_classic_text_indent_array = 5; + optional bool list_classic_text_indent_array_undefined = 6; + optional .TSWPSOS.SpecListStyleListLabelGeometryArrayArchive list_label_geometry_array = 7; + optional bool list_label_geometry_array_undefined = 8; + optional .TSWPSOS.SpecListStyleImageDataArrayArchive list_label_image_data_array = 9; + optional bool list_label_image_data_array_undefined = 10; + optional .TSWPSOS.SpecListStyleFloatArrayArchive list_label_indent_array = 11; + optional bool list_label_indent_array_undefined = 12; + optional .TSWPSOS.SpecListStyleListNumberTypeArrayArchive list_label_number_array = 13; + optional bool list_label_number_array_undefined = 14; + optional .TSWPSOS.SpecListStyleBoolArrayArchive list_label_tiered_number_array = 15; + optional bool list_label_tiered_number_array_undefined = 16; + optional .TSDSOS.SpecShadowArchive text_shadow = 17; + optional bool text_shadow_undefined = 18; + optional .TSWPSOS.SpecListStyleStringArrayArchive list_label_string_array = 19; + optional bool list_label_string_array_undefined = 20; + optional .TSWPSOS.SpecListStyleFloatArrayArchive list_text_indent_array = 21; + optional bool list_text_indent_array_undefined = 22; + optional .TSWPSOS.SpecListStyleListLabelTypeArrayArchive list_label_type_array = 23; + optional bool list_label_type_array_undefined = 24; + optional .TSSSOS.SpecIntegerArchive writing_direction = 25; + optional bool writing_direction_undefined = 26; +} + +message .TSWPSOS.ParagraphSpecificStylePropertyChangeSetArchive { + optional .TSSSOS.SpecIntegerArchive alignment = 1; + optional bool alignment_undefined = 2; + optional .TSSSOS.SpecStringArchive decimal_tab = 3; + optional bool decimal_tab_undefined = 4; + optional .TSSSOS.SpecDoubleArchive default_tab_stops = 5; + optional bool default_tab_stops_undefined = 6; + optional .TSSSOS.SpecColorArchive paragraph_fill = 7; + optional bool paragraph_fill_undefined = 8; + optional .TSSSOS.SpecDoubleArchive first_line_indent = 9; + optional bool first_line_indent_undefined = 10; + optional .TSWPSOS.SpecParagraphStyleArchive following_paragraph_style = 11; + optional bool following_paragraph_style_undefined = 12; + optional .TSSSOS.SpecBoolArchive hyphenate = 13; + optional bool hyphenate_undefined = 14; + optional .TSWPSOS.SpecListStyleArchive initial_list_style = 15; + optional bool initial_list_style_undefined = 16; + optional .TSSSOS.SpecBoolArchive keep_lines_together = 17; + optional bool keep_lines_together_undefined = 18; + optional .TSSSOS.SpecBoolArchive keep_with_next = 19; + optional bool keep_with_next_undefined = 20; + optional .TSSSOS.SpecDoubleArchive left_indent = 21; + optional bool left_indent_undefined = 22; + optional .TSWPSOS.SpecLineSpacingArchive line_spacing = 23; + optional bool line_spacing_undefined = 24; + optional .TSSSOS.SpecIntegerArchive outline_level = 25; + optional bool outline_level_undefined = 26; + optional .TSSSOS.SpecIntegerArchive outline_style_type = 27; + optional bool outline_style_type_undefined = 28; + optional .TSSSOS.SpecBoolArchive page_break_before = 29; + optional bool page_break_before_undefined = 30; + optional .TSSSOS.SpecIntegerArchive paragraph_borders = 31; + optional bool paragraph_borders_undefined = 32; + optional .TSWPSOS.SpecRuleOffsetArchive paragraph_rule_offset = 33; + optional bool paragraph_rule_offset_undefined = 34; + optional .TSSSOS.SpecDoubleArchive paragraph_rule_width = 35; + optional bool paragraph_rule_width_undefined = 36; + optional .TSSSOS.SpecDoubleArchive right_indent = 37; + optional bool right_indent_undefined = 38; + optional .TSSSOS.SpecDoubleArchive space_after = 39; + optional bool space_after_undefined = 40; + optional .TSSSOS.SpecDoubleArchive space_before = 41; + optional bool space_before_undefined = 42; + optional .TSDSOS.SpecStrokeArchive paragraph_stroke = 43; + optional bool paragraph_stroke_undefined = 44; + optional .TSWPSOS.SpecTabsArchive tabs = 45; + optional bool tabs_undefined = 46; + optional .TSSSOS.SpecIntegerArchive widow_control = 47; + optional bool widow_control_undefined = 48; + optional .TSSSOS.SpecBoolArchive show_in_bookmarks_list = 49; + optional bool show_in_bookmarks_list_undefined = 50; + optional .TSSSOS.SpecBoolArchive show_in_t_o_c_navigator = 51; + optional bool show_in_t_o_c_navigator_undefined = 52; +} + +message .TSWPSOS.ParagraphStylePropertyChangeSetArchive { + required .TSWPSOS.CharacterStylePropertyChangeSetArchive super = 1; + optional .TSSSOS.SpecIntegerArchive alignment = 2; + optional bool alignment_undefined = 3; + optional .TSSSOS.SpecStringArchive decimal_tab = 4; + optional bool decimal_tab_undefined = 5; + optional .TSSSOS.SpecDoubleArchive default_tab_stops = 6; + optional bool default_tab_stops_undefined = 7; + optional .TSSSOS.SpecColorArchive paragraph_fill = 8; + optional bool paragraph_fill_undefined = 9; + optional .TSSSOS.SpecDoubleArchive first_line_indent = 10; + optional bool first_line_indent_undefined = 11; + optional .TSWPSOS.SpecParagraphStyleArchive following_paragraph_style = 12; + optional bool following_paragraph_style_undefined = 13; + optional .TSSSOS.SpecBoolArchive hyphenate = 14; + optional bool hyphenate_undefined = 15; + optional .TSWPSOS.SpecListStyleArchive initial_list_style = 16; + optional bool initial_list_style_undefined = 17; + optional .TSSSOS.SpecBoolArchive keep_lines_together = 18; + optional bool keep_lines_together_undefined = 19; + optional .TSSSOS.SpecBoolArchive keep_with_next = 20; + optional bool keep_with_next_undefined = 21; + optional .TSSSOS.SpecDoubleArchive left_indent = 22; + optional bool left_indent_undefined = 23; + optional .TSWPSOS.SpecLineSpacingArchive line_spacing = 24; + optional bool line_spacing_undefined = 25; + optional .TSSSOS.SpecIntegerArchive outline_level = 26; + optional bool outline_level_undefined = 27; + optional .TSSSOS.SpecIntegerArchive outline_style_type = 28; + optional bool outline_style_type_undefined = 29; + optional .TSSSOS.SpecBoolArchive page_break_before = 30; + optional bool page_break_before_undefined = 31; + optional .TSSSOS.SpecIntegerArchive paragraph_borders = 32; + optional bool paragraph_borders_undefined = 33; + optional .TSWPSOS.SpecRuleOffsetArchive paragraph_rule_offset = 34; + optional bool paragraph_rule_offset_undefined = 35; + optional .TSSSOS.SpecDoubleArchive paragraph_rule_width = 36; + optional bool paragraph_rule_width_undefined = 37; + optional .TSSSOS.SpecDoubleArchive right_indent = 38; + optional bool right_indent_undefined = 39; + optional .TSSSOS.SpecDoubleArchive space_after = 40; + optional bool space_after_undefined = 41; + optional .TSSSOS.SpecDoubleArchive space_before = 42; + optional bool space_before_undefined = 43; + optional .TSDSOS.SpecStrokeArchive paragraph_stroke = 44; + optional bool paragraph_stroke_undefined = 45; + optional .TSWPSOS.SpecTabsArchive tabs = 46; + optional bool tabs_undefined = 47; + optional .TSSSOS.SpecIntegerArchive widow_control = 48; + optional bool widow_control_undefined = 49; + optional .TSSSOS.SpecBoolArchive show_in_bookmarks_list = 50; + optional bool show_in_bookmarks_list_undefined = 51; + optional .TSSSOS.SpecBoolArchive show_in_t_o_c_navigator = 52; + optional bool show_in_t_o_c_navigator_undefined = 53; +} + +message .TSWPSOS.ShapeStylePropertyChangeSetArchive { + required .TSDSOS.BaseShapeStylePropertyChangeSetArchive super = 1; + optional .TSWPSOS.SpecColumnsArchive columns = 2; + optional bool columns_undefined = 3; + optional .TSWPSOS.SpecPaddingArchive padding = 4; + optional bool padding_undefined = 5; + optional .TSSSOS.SpecBoolArchive shrink_text_to_fit = 6; + optional bool shrink_text_to_fit_undefined = 7; + optional .TSSSOS.SpecIntegerArchive vertical_alignment = 8; + optional bool vertical_alignment_undefined = 9; + optional .TSSSOS.SpecBoolArchive vertical_text = 10; + optional bool vertical_text_undefined = 11; + optional .TSWPSOS.SpecParagraphStyleArchive default_paragraph_style = 12; + optional bool default_paragraph_style_undefined = 13; +} + +message .TSWPSOS.TOCEntryStylePropertyChangeSetArchive { + required .TSWPSOS.ParagraphStylePropertyChangeSetArchive super = 1; + optional .TSSSOS.SpecBoolArchive toc_show_page_number = 2; + optional bool toc_show_page_number_undefined = 3; + optional .TSWPSOS.SpecCharacterStyleArchive toc_page_number_style = 4; + optional bool toc_page_number_style_undefined = 5; +} + +message .TSWPSOS.StyleDiffArchive { + optional .TSP.Reference style = 1; + optional .TSWPSOS.CharacterStylePropertyChangeSetArchive character_change_set = 2; + optional .TSWPSOS.ParagraphStylePropertyChangeSetArchive paragraph_change_set = 3; + optional .TSWPSOS.ShapeStylePropertyChangeSetArchive shape_change_set = 4; +} + + +enum .TSWP.ObjectPropertyType { + kObjectPropertyTypeBool = 0; + kObjectPropertyTypeFloat = 1; + kObjectPropertyTypeInteger = 2; + kObjectPropertyTypeString = 3; + kObjectPropertyTypeIdPath = 4; + kObjectPropertyTypeFill = 5; + kObjectPropertyTypeColor = 6; + kObjectPropertyTypeShadow = 7; +} + +message .TSWP.DummyCommandArchive { + required uint32 foo = 1; +} + +message .TSWP.TextCommandArchive { + enum Kind { + kKindContained = 0; + kKindReplaceText = 1; + kKindPaste = 2; + kKindParagraphStyle = 3; + kKindListStyle = 4; + kKindIndentParagraphLevel = 5; + kKindDragText = 6; + kKindPasteStyle = 7; + kKindApplyChangesInRange = 8; + kKindInsertCitationField = 10; + kKindInsertBibliographyEntry = 11; + kKindFormatCitationFields = 12; + kKindInsertTOCSmartField = 13; + kKindInsertDateTimeField = 14; + kKindUpdateDateTimeField = 15; + kKindSetParagraphFirstTopicNumber = 16; + kKindCharacterStyle = 17; + kKindRevertStyles = 18; + kKindSetParagraphBidi = 19; + } + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional .TSWP.UndoTransaction undo_transaction = 3; + optional uint32 restore_range_location = 4; + optional uint32 restore_range_length = 5; + optional uint32 redo_restore_range_location = 6; + optional uint32 redo_restore_range_length = 7; + optional uint32 text_command_flags = 9; + optional .TSWP.TextCommandArchive.Kind kind = 10 [default = kKindContained]; +} + +message .TSWP.StorageActionCommandArchive { + enum Kind { + kKindContained = 0; + kKindReplaceText = 1; + kKindPaste = 2; + kKindParagraphStyle = 3; + kKindListStyle = 4; + kKindIndentParagraphLevel = 5; + kKindDragText = 6; + kKindPasteStyle = 7; + kKindApplyChangesInRange = 8; + kKindInsertCitationField = 10; + kKindInsertBibliographyEntry = 11; + kKindFormatCitationFields = 12; + kKindInsertTOCSmartField = 13; + kKindInsertDateTimeField = 14; + kKindUpdateDateTimeField = 15; + kKindSetParagraphFirstTopicNumber = 16; + kKindCharacterStyle = 17; + kKindRevertStyles = 18; + kKindSetParagraphBidi = 19; + kKindFormatText = 20; + kKindInsertAttachment = 21; + kKindCreateHyperlink = 22; + kKindModifyHyperlink = 23; + kKindRemoveHyperlink = 24; + kKindApplyHighlightText = 25; + kKindPropagateStyleChanges = 26; + kKindMovedAnchoredDrawableInline = 27; + kKindMoveDrawablesAttached = 28; + kKindMoveMoveDrawablesFloating = 29; + kKindMoveInlineDrawableAnchored = 30; + kKindAnchorAttachment = 31; + kKindBookmark = 32; + kKindReplaceSection = 33; + kKindApplyPencilAnnotation = 34; + kKindCreateRuby = 35; + kKindModifyRuby = 36; + kKindRemoveRuby = 37; + kKindTateChuYoko = 38; + kKindDropCapStyle = 39; + kKindMergeField = 40; + kKindModifyMergeField = 41; + kKindMergeFieldTypeReplace = 42; + } + optional .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath storage = 2; + optional .TSWP.UndoTransaction undo_transaction = 3; + optional uint32 text_command_flags = 4; + optional .TSWP.StorageActionCommandArchive.Kind kind = 5 [default = kKindContained]; + repeated .TSP.UUID custom_format_keys = 6; + optional bool is_forward_inverse_command = 7; + optional bool coalesceable = 8; + optional bool coalescing_text = 9; + optional bool should_migrate_styles = 10; + optional .TSK.DataReferenceRecord changed_data_reference_record = 11; + optional string coalescing_property = 12; + optional .TSWP.StorageArchive.KindType wp_kind = 13; +} + +message .TSWP.SetColumnStyleCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional .TSWP.UndoTransaction undo_transaction = 3; +} + +message .TSWP.ReplaceAllUsesOfStyleCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional .TSWP.UndoTransaction undo_transaction = 3; +} + +message .TSWP.InsertColumnsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 column_index = 3; + optional uint32 column_count = 4; + optional .TSWP.UndoTransaction undo_transaction = 5; +} + +message .TSWP.InsertRowsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 row_index = 3; + optional uint32 row_count = 4; + optional .TSWP.UndoTransaction undo_transaction = 5; +} + +message .TSWP.RemoveColumnsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 column_index = 3; + optional uint32 column_count = 4; + optional .TSWP.UndoTransaction undo_transaction = 5; +} + +message .TSWP.RemoveRowsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 row_index = 3; + optional uint32 row_count = 4; + optional .TSWP.UndoTransaction undo_transaction = 5; +} + +message .TSWP.MergeCellsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 row = 3; + optional uint32 column = 4; + optional uint32 row_count = 5; + optional uint32 column_count = 6; + optional .TSWP.UndoTransaction undo_transaction = 7; +} + +message .TSWP.ApplyPlaceholderTextCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 selection_range_location = 3; + optional uint32 selection_range_length = 4; + optional .TSWP.UndoTransaction undo_transaction = 5; + optional string script_tag = 6; +} + +message .TSWP.UpdateDateTimeFieldCommandArchive { + optional .TSWP.TextCommandArchive super = 1; + optional .TSP.Reference date_time_field = 2; + optional .TSP.Date date = 3; + optional .TSWP.DateTimeSmartFieldArchive.DateTimeFormatterStyle date_style = 4; + optional .TSWP.DateTimeSmartFieldArchive.DateTimeFormatterStyle time_style = 5; +} + +message .TSWP.ApplyRubyTextCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 selection_range_location = 3; + optional uint32 selection_range_length = 4; + optional string ruby_text = 5; + optional .TSWP.UndoTransaction undo_transaction = 6; +} + +message .TSWP.ModifyRubyTextCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference ruby_field = 2; + optional string ruby_text = 3; + optional string base_text = 4; + optional .TSWP.UndoTransaction undo_transaction = 5; +} + +message .TSWP.ModifyTOCSettingsBaseCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference old_toc_settings = 2; + optional .TSP.Reference new_toc_settings = 3; +} + +message .TSWP.ModifyTOCSettingsForTOCInfoCommandArchive { + optional .TSWP.ModifyTOCSettingsBaseCommandArchive super = 1; + optional .TSP.UUIDPath toc_info_uuid_path = 2; +} + +message .TSWP.ModifyTOCSettingsPresetForThemeCommandArchive { + optional .TSWP.ModifyTOCSettingsBaseCommandArchive super = 1; + optional .TSP.Reference theme = 2; + optional uint32 preset_index = 3; +} + +message .TSWP.AnchorAttachmentCommandArchive { + optional .TSWP.StorageActionCommandArchive super = 1; + optional .TSP.Reference attachment = 2; + optional uint32 h_offset_type = 3; + optional float h_offset = 4; + optional uint32 v_offset_type = 5; + optional float v_offset = 6; + optional bool is_html_wrap = 7; + optional uint32 undo_h_offset_type = 8; + optional float undo_h_offset = 9; + optional uint32 undo_v_offset_type = 10; + optional float undo_v_offset = 11; + optional bool undo_is_html_wrap = 12; +} + +message .TSWP.TextApplyThemeCommandArchive { + optional .TSS.ApplyThemeChildCommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional .TSWP.UndoTransaction undo_transaction = 6; +} + +message .TSWP.MoveColumnsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 src_index = 3; + optional uint32 dst_index = 4; + optional uint32 count = 5; + optional .TSWP.UndoTransaction undo_transaction = 6; +} + +message .TSWP.MoveRowsCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference storage = 2; + optional uint32 src_index = 3; + optional uint32 dst_index = 4; + optional uint32 count = 5; + optional .TSWP.UndoTransaction undo_transaction = 6; +} + +message .TSWP.ShapeApplyPresetCommandArchive { + required .TSD.BaseApplyPresetCommandArchive super = 1; + optional .TSP.Reference undo_style = 2; +} + +message .TSWP.StyleBaseCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference theme = 2; + optional .TSP.Reference style = 3; +} + +message .TSWP.StyleCreateCommandArchive { + optional .TSWP.StyleBaseCommandArchive super = 1; + optional uint32 preset_index = 2; +} + +message .TSWP.StyleRenameCommandArchive { + optional .TSWP.StyleBaseCommandArchive super = 1; + optional string updated_name = 2; + optional string old_name = 3; +} + +message .TSWP.StyleUpdateCommandArchive { + optional .TSWP.StyleBaseCommandArchive super = 1; + optional .TSP.Reference original_style = 2; + optional .TSP.Reference updated_style = 3; +} + +message .TSWP.StyleDeleteCommandArchive { + optional .TSWP.StyleBaseCommandArchive super = 1; + optional uint32 old_preset_index = 2; +} + +message .TSWP.StyleReorderCommandArchive { + optional .TSWP.StyleBaseCommandArchive super = 1; + optional uint32 old_preset_index = 2; + optional uint32 new_preset_index = 3; +} + +message .TSWP.StyleUpdatePropertyMapCommandArchive { + required .TSS.StyleUpdatePropertyMapCommandArchive super = 1; +} + +message .TSWP.ShapeStyleSetValueCommandArchive { + required .TSD.BaseStyleSetValueCommandArchive super = 1; + optional .TSWPSOS.ShapeStylePropertyChangeSetArchive change = 4; +} + +message .TSWP.SelectionTransformerArchive { + required .TSP.UUIDPath storage_uuid_path = 1; + required .TSP.Reference selection = 2; + optional bool transformed_to_noop = 3; +} + +message .TSWP.PencilAnnotationSelectionTransformerArchive { + required .TSP.UUIDPath storage_uuid_path = 1; + required string text_pencil_annotation_uuid = 2; +} + +message .TSWP.ShapeSelectionTransformerArchive { + required .TSD.ShapeSelectionTransformerArchive super = 1; + optional .TSP.UUIDPath storage_uuid_path = 2; +} + +message .TSWP.ShapeContentDescription { + required .TSD.DrawableContentDescription super = 1; + optional uint32 text_range_location = 2; + optional uint32 text_range_length = 3; +} + +message .TSWP.ObjectPropertyArchive { + required string name = 1; + required .TSWP.ObjectPropertyType type = 2; + optional bool bool_value = 3; + optional float float_value = 4; + optional int32 integer_value = 5; + optional string string_value = 6; + optional .TSP.UUIDPath id_path_value = 7; + optional .TSD.FillArchive fill_value = 8; + optional .TSP.Color color_value = 9; + optional .TSD.ShadowArchive shadow_value = 10; +} + +message .TSWP.SetObjectPropertiesCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath object_uuid_path = 2; + repeated .TSWP.ObjectPropertyArchive properties = 3; + optional string action_string = 4; + repeated .TSWP.ObjectPropertyArchive old_properties = 5; +} + +message .TSWP.UpdateFlowInfoCommandArchive { + enum Mode { + kModeRearrange = 0; + kModeAdd = 1; + kModeRemove = 2; + kModeCompensate = 3; + } + optional .TSK.CommandArchive super = 1; + optional .TSWP.UpdateFlowInfoCommandArchive.Mode command_mode = 2 [default = kModeRearrange]; + optional .TSP.UUIDPath flow_info_uuid_path = 3; + optional .TSP.UUIDPath text_box_id_path_to_add_or_remove = 4; + repeated .TSP.UUIDPath text_box_id_paths_at_start = 5; + repeated .TSP.UUIDPath suggested_text_box_id_paths_at_end = 6; + repeated .TSP.Reference undo_text_boxes_to_restore = 7; + optional .TSP.Reference undo_added_shape_info = 8; + optional .TSP.Reference undo_removed_shape_info = 9; +} + +message .TSWP.AddFlowInfoCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference flow_info_to_add = 2; + optional .TSP.Reference flow_info_archive = 3; + optional uint32 undo_user_interface_identifier_to_restore = 4; + optional uint32 undo_next_user_interface_identifier_to_restore = 5; + optional .TSP.Reference working_undo_object = 6; +} + +message .TSWP.RemoveFlowInfoCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath flow_info_uuid_path = 2; + optional .TSP.Reference undo_object = 3; + optional uint32 undo_user_interface_identifier_to_restore = 4; + optional uint32 undo_next_user_interface_identifier_to_restore = 5; +} + +message .TSWP.TextCommentReplyCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath storage_uuid_path = 2; + optional string annotation_uuid = 3; + optional .TSP.Reference forward_comment = 4; + optional .TSP.Reference inverse_comment = 5; + optional .TSD.CommentCommandVariant forward_variant = 6; + optional .TSD.CommentCommandVariant inverse_variant = 7; +} + +message .TSWP.ContainedObjectsCommandArchive { + message AddBehaviorArgs { + repeated .TSK.AddIdOperationArgs args_list = 1; + } + message RemoveBehaviorArgs { + repeated .TSK.RemoveIdOperationArgs args_list = 1; + } + message RearrangeBehaviorArgs { + repeated .TSK.RearrangeIdOperationArgs args_list = 1; + } + required .TSK.CommandArchive super = 1; + required .TSP.Reference target = 2; + repeated .TSP.Reference objects = 3; + optional .TSP.Reference undo_object_for_commit = 4; + optional .TSP.Reference undo_object_for_make_inverse = 5; + optional .TSWP.ContainedObjectsCommandArchive.AddBehaviorArgs add_behavior_args = 6; + optional .TSWP.ContainedObjectsCommandArchive.RemoveBehaviorArgs remove_behavior_args = 7; + optional .TSWP.ContainedObjectsCommandArchive.RearrangeBehaviorArgs rearrange_behavior_args = 8; + optional string container_name = 9; +} + +message .TSWP.EquationInfoGeometryCommandArchive { + optional .TSD.MediaInfoGeometryCommandArchive super = 1; +} + +message .TSWP.CharacterStyleChangePropertyCommand_GArchive { + required .TSWP.StorageActionCommandArchive super = 1; + repeated .TSP.Range range_list = 2; + optional bool range_list_undefined = 3; + repeated .TSWPSOS.CharacterStylePropertyChangeSetArchive change_list = 4; + optional bool change_list_undefined = 5; + required bool disable_character_style_promotion = 6; +} + +message .TSWP.ParagraphStyleChangePropertyCommand_GArchive { + required .TSWP.StorageActionCommandArchive super = 1; + repeated .TSP.Range range_list = 2; + optional bool range_list_undefined = 3; + repeated .TSWPSOS.ParagraphStylePropertyChangeSetArchive change_list = 4; + optional bool change_list_undefined = 5; +} + + +enum .TSCH.TextureTilingMode { + textureTilingModeNone = 0; + textureTilingModeTallest = 1; +} + +enum .TSCH.TextureTilingFace { + textureTilingFaceAll = 0; + textureTilingFaceTopAndBottom = 1; + textureTilingFaceSide = 2; +} + +enum .TSCH.TextureTilingWrap { + textureTilingWrapProjected = 0; + textureTilingWrapFaceWrap = 1; +} + +enum .TSCH.TextureTilingXPosition { + textureTilingXPositionLeft = 0; + textureTilingXPositionCenter = 1; + textureTilingXPositionRight = 2; +} + +enum .TSCH.TextureTilingYPosition { + textureTilingYPositionTop = 0; + textureTilingYPositionMiddle = 1; + textureTilingYPositionBottom = 2; +} + +enum .TSCH.TextureTilingContinuity { + textureTilingContinuityNone = 0; + textureTilingContinuityGlobal = 1; + textureTilingContinuitySeries = 2; + textureTilingContinuityJittered = 3; +} + +enum .TSCH.FillPropertyType { + fillPropertyTypeUndefined = 0; + fillPropertyTypeArea = 1; + fillPropertyTypeBar = 2; + fillPropertyTypeColumn = 3; + fillPropertyTypeLine = 4; + fillPropertyTypePie = 5; +} + +message .TSCH.Chart3DEnvironmentPackageArchive { + repeated .TSCH.Chart3DEnvironmentMaterialArchive materials = 1; +} + +message .TSCH.Chart3DFillArchive { + optional .TSCH.Chart3DLightingModelArchive lightingmodel = 1; + optional string textureset_id = 2; + optional .TSCH.FillPropertyType fill_type = 3; + optional uint32 series_index = 4; +} + +message .TSCH.Chart3DPointLightArchive { + required .TSCH.Chart3DVectorArchive position = 1; +} + +message .TSCH.Chart3DDirectionalLightArchive { + required .TSCH.Chart3DVectorArchive direction = 1; +} + +message .TSCH.Chart3DSpotLightArchive { + required .TSCH.Chart3DVectorArchive position = 1; + required .TSCH.Chart3DVectorArchive direction = 2; + required float cutoff = 3; + required float dropoff = 4; +} + +message .TSCH.Chart3DLightArchive { + required string name = 1; + required .TSCH.Chart3DVectorArchive ambient_color = 2; + required .TSCH.Chart3DVectorArchive diffuse_color = 3; + required .TSCH.Chart3DVectorArchive specular_color = 4; + required float intensity = 5; + required .TSCH.Chart3DVectorArchive attenuation = 6; + required uint32 coordinate_space = 7; + required bool enabled = 8; + optional .TSCH.Chart3DPointLightArchive point_light = 9; + optional .TSCH.Chart3DDirectionalLightArchive directional_light = 10; + optional .TSCH.Chart3DSpotLightArchive spot_light = 11; +} + +message .TSCH.Chart3DLightingModelArchive { + optional .TSCH.Chart3DPhongLightingModelArchive phong = 1; + optional .TSCH.Chart3DFixedFunctionLightingModelArchive fixed_function = 2; + optional .TSCH.Chart3DEnvironmentPackageArchive environment = 3; +} + +message .TSCH.Chart3DLightingPackageArchive { + required string name = 1; + repeated .TSCH.Chart3DLightArchive lights = 2; +} + +message .TSCH.Chart3DTexturesMaterialArchive { + required .TSCH.Chart3DVectorArchive color = 1; + repeated .TSCH.Chart3DTSPImageDataTextureArchive textures = 2; +} + +message .TSCH.Chart3DEmissiveMaterialArchive { + required .TSCH.Chart3DTexturesMaterialArchive super = 1; + repeated .TSCH.Chart3DImageTextureTilingArchive tilings = 2; +} + +message .TSCH.Chart3DDiffuseMaterialArchive { + required .TSCH.Chart3DTexturesMaterialArchive super = 1; + repeated .TSCH.Chart3DImageTextureTilingArchive tilings = 2; +} + +message .TSCH.Chart3DModulateMaterialArchive { + required .TSCH.Chart3DTexturesMaterialArchive super = 1; + repeated .TSCH.Chart3DImageTextureTilingArchive tilings = 2; +} + +message .TSCH.Chart3DSpecularMaterialArchive { + required .TSCH.Chart3DTexturesMaterialArchive super = 1; + repeated .TSCH.Chart3DImageTextureTilingArchive tilings = 2; +} + +message .TSCH.Chart3DShininessMaterialArchive { + required .TSCH.Chart3DTexturesMaterialArchive super = 1; + repeated .TSCH.Chart3DImageTextureTilingArchive tilings = 2; +} + +message .TSCH.Chart3DEnvironmentMaterialArchive { + required .TSCH.Chart3DTexturesMaterialArchive super = 1; + repeated .TSCH.Chart3DBaseImageTextureTilingArchive OBSOLETE_tilings = 2; + optional bool decalMode = 3; + repeated .TSCH.Chart3DImageTextureTilingArchive tilings = 4; +} + +message .TSCH.Chart3DFixedFunctionLightingModelArchive { + required .TSCH.Chart3DPhongMaterialPackageArchive materials = 1; +} + +message .TSCH.Chart3DPhongLightingModelArchive { + required .TSCH.Chart3DPhongMaterialPackageArchive materials = 1; +} + +message .TSCH.Chart3DPhongMaterialPackageArchive { + optional .TSCH.Chart3DEmissiveMaterialArchive emissive = 1; + optional .TSCH.Chart3DDiffuseMaterialArchive diffuse = 2; + optional .TSCH.Chart3DModulateMaterialArchive modulate = 3; + optional .TSCH.Chart3DSpecularMaterialArchive specular = 4; + optional .TSCH.Chart3DShininessMaterialArchive shininess = 5; +} + +message .TSCH.Chart3DTSPImageDataTextureArchive { + optional .TSP.DataReference data = 3; + optional .TSP.DataReference mipmapdata = 4; + optional .TSP.Reference database_data = 1; + optional .TSP.Reference database_mipmapdata = 2; +} + +message .TSCH.Chart3DBaseImageTextureTilingArchive { + optional .TSCH.Chart3DVectorArchive scale = 1; + optional float rotation = 2; +} + +message .TSCH.Chart3DImageTextureTilingArchive { + required .TSCH.Chart3DBaseImageTextureTilingArchive super = 1; + optional .TSCH.TextureTilingMode mode = 2; + optional .TSCH.TextureTilingWrap wrap = 3; + optional .TSCH.TextureTilingFace face = 4; + optional .TSCH.TextureTilingXPosition xposition = 5; + optional .TSCH.TextureTilingYPosition yposition = 6; + optional .TSCH.TextureTilingContinuity scontinuity = 7; + optional .TSCH.TextureTilingContinuity tcontinuity = 8; + optional bool reveal = 9; +} + +message .TSCH.Chart3DVectorArchive { + required float x = 1; + required float y = 2; + required float z = 3; + required float w = 4; +} + +extend .TSD.FillArchive { + optional .TSCH.Chart3DFillArchive fill3d = 100; +} + + +enum .TSCH.ChartType { + undefinedChartType = 0; + columnChartType2D = 1; + barChartType2D = 2; + lineChartType2D = 3; + areaChartType2D = 4; + pieChartType2D = 5; + stackedColumnChartType2D = 6; + stackedBarChartType2D = 7; + stackedAreaChartType2D = 8; + scatterChartType2D = 9; + mixedChartType2D = 10; + twoAxisChartType2D = 11; + columnChartType3D = 12; + barChartType3D = 13; + lineChartType3D = 14; + areaChartType3D = 15; + pieChartType3D = 16; + stackedColumnChartType3D = 17; + stackedBarChartType3D = 18; + stackedAreaChartType3D = 19; + multiDataColumnChartType2D = 20; + multiDataBarChartType2D = 21; + bubbleChartType2D = 22; + multiDataScatterChartType2D = 23; + multiDataBubbleChartType2D = 24; + donutChartType2D = 25; + donutChartType3D = 26; + radarChartType2D = 27; +} + +enum .TSCH.AxisType { + axis_type_unknown = 0; + axis_type_x = 1; + axis_type_y = 2; + axis_type_pie = 3; + axis_type_size = 4; + axis_type_polar_radius = 5; + axis_type_polar_angle = 6; +} + +enum .TSCH.ScatterFormat { + scatter_format_unknown = 0; + scatter_format_separate_x = 1; + scatter_format_shared_x = 2; +} + +enum .TSCH.SeriesDirection { + series_direction_unknown = 0; + series_direction_by_row = 1; + series_direction_by_column = 2; +} + +enum .TSCH.NumberValueType { + numberValueTypeDecimal = 0; + numberValueTypeCurrency = 1; + numberValueTypePercentage = 2; + numberValueTypeScientific = 3; + numberValueTypeFraction = 4; + numberValueTypeBase = 5; + numberValueTypeUnknown = -999; +} + +enum .TSCH.NegativeNumberStyle { + negativeNumberStyleMinus = 0; + negativeNumberStyleRed = 1; + negativeNumberStyleParentheses = 2; + negativeNumberStyleRedAndParentheses = 3; + negativeNumberStyleNone = 4; +} + +enum .TSCH.FractionAccuracy { + fractionAccuracyConflicting = 0; + fractionAccuracyUpToOneDigit = -1; + fractionAccuracyUpToTwoDigits = -2; + fractionAccuracyUpToThreeDigits = -3; + fractionAccuracyHalves = 2; + fractionAccuracyQuarters = 4; + fractionAccuracyEighths = 8; + fractionAccuracySixteenths = 16; + fractionAccuracyTenths = 10; + fractionAccuracyHundredths = 100; +} + +message .TSCH.RectArchive { + required .TSP.Point origin = 1; + required .TSP.Size size = 2; +} + +message .TSCH.ChartsNSNumberDoubleArchive { + optional double number_archive = 1; +} + +message .TSCH.ChartsNSArrayOfNSNumberDoubleArchive { + repeated double numbers = 1; +} + +message .TSCH.DEPRECATEDChart3DFillArchive { + optional .TSD.FillArchive fill = 1; + optional .TSCH.Chart3DLightingModelArchive lightingmodel = 2; + optional string textureset_id = 3; + optional .TSCH.FillPropertyType fill_type = 4; + optional uint32 series_index = 5; +} + +message .TSCH.ChartStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ChartNonStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.LegendStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.LegendNonStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ChartAxisStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ChartAxisNonStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ChartSeriesStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ChartSeriesNonStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.GridValue { + optional double numeric_value = 1; + optional double date_value_1_0 = 2; + optional double duration_value = 3; + optional double date_value = 4; +} + +message .TSCH.GridRow { + repeated .TSCH.GridValue value = 1; +} + +message .TSCH.ReferenceLineStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ReferenceLineNonStyleArchive { + optional .TSS.StyleArchive super = 1; + extensions 10000 to 536870911; +} + + +message .TSCH.Generated.ChartStyleArchive { + optional float tschchartinfodefault3dchartopacity = 1; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfoarea3dlightingpackage = 2; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfobar3dlightingpackage = 3; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfocolumn3dlightingpackage = 4; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfodefault3dlightingpackage = 5; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfoline3dlightingpackage = 6; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfopie3dlightingpackage = 7; + optional bool tschchartinfodefaultaxisanchorlabelatends = 124; + optional .TSD.FillArchive tschchartinfodefaultbackgroundfill = 8; + optional .TSD.StrokeArchive tschchartinfodefaultbackgroundstroke = 9; + optional float tschchartinfodefaultborderopacity = 10; + optional .TSD.ShadowArchive tschchartinfodefaultbordershadow = 11; + optional .TSD.StrokeArchive tschchartinfodefaultborderstroke = 12; + optional bool tschchartinfodefaultcombinelayers = 13; + optional int32 tschchartinfodefaultdatasetnameparagraphstyleindex = 21; + optional .TSD.FillArchive tschchartinfodefaultgridbackgroundfill = 14; + optional float tschchartinfodefaultgridbackgroundopacity = 15; + optional float tschchartinfodefaultinterbargap = 16; + optional float tschchartinfodefaultintersetgap = 17; + optional bool tschchartinfodefaultradarradiusgridlinecurve = 29; + optional bool tschchartinfodefaultroundedcornerouterendonly = 123; + optional float tschchartinfodefaultroundedcornerradius = 122; + optional bool tschchartinfodefaultshowborder = 18; + optional .TSP.Color tschchartinfodefaulttitlecolor = 19; + optional int32 tschchartinfodefaulttitleparagraphstyleindex = 20; + extend .TSCH.ChartStyleArchive { + optional .TSCH.Generated.ChartStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ChartNonStyleArchive { + optional int32 tschchartinfodefault3dbarshape = 1; + optional bool tschchartinfodefault3dbeveledges = 2; + optional float tschchartinfodefault3dintersetdepthgap = 3; + optional .TSCH.Chart3DVectorArchive tschchartinfodefault3drotation = 4; + optional .TSCH.Chart3DVectorArchive tschchartinfoarea3dscale = 5; + optional .TSCH.Chart3DVectorArchive tschchartinfobar3dscale = 6; + optional .TSCH.Chart3DVectorArchive tschchartinfocolumn3dscale = 7; + optional .TSCH.Chart3DVectorArchive tschchartinfodefault3dscale = 8; + optional .TSCH.Chart3DVectorArchive tschchartinfoline3dscale = 9; + optional .TSCH.Chart3DVectorArchive tschchartinfopie3dscale = 10; + optional .TSCH.Chart3DVectorArchive tschchartinfodefault3dviewport = 11; + optional int32 tschchartinfoareacalloutlinetype = 112; + optional int32 tschchartinfobarcalloutlinetype = 113; + optional int32 tschchartinfobubblecalloutlinetype = 114; + optional int32 tschchartinfodefaultcalloutlinetype = 119; + optional int32 tschchartinfolinecalloutlinetype = 115; + optional int32 tschchartinfopiecalloutlinetype = 111; + optional int32 tschchartinfoscattercalloutlinetype = 116; + optional int32 tschchartinfostackedareacalloutlinetype = 117; + optional int32 tschchartinfostackedbarcalloutlinetype = 118; + optional bool tschchartinfodefaultdeprecatedroundedcornerouterendonly = 121; + optional float tschchartinfodefaultdeprecatedroundedcornerradius = 120; + optional int32 tschchartinfodefaultdatasetnamelocation = 24; + optional bool tschchartinfodefaultdonutplacetitleatcenter = 28; + optional float tschchartinfodefaultinnerradius = 27; + optional int32 tschchartinfodefaultmultidatacontroltype = 25; + optional float tschchartinfodefaultpiestartangle = 19; + optional float tschchartinfodefaultradarstartangle = 29; + optional bool tschchartinfodefaultshowlegend = 20; + optional bool tschchartinfodefaultshowtitle = 21; + optional bool tschchartinfodefaultskiphiddendata = 22; + optional string tschchartinfodefaulttitle = 23; + extend .TSCH.ChartNonStyleArchive { + optional .TSCH.Generated.ChartNonStyleArchive current = 10000; + } +} + +message .TSCH.Generated.LegendStyleArchive { + optional .TSD.FillArchive tschlegendmodeldefaultfill = 1; + optional int32 tschlegendmodeldefaultlabelparagraphstyleindex = 2; + optional float tschlegendmodeldefaultopacity = 3; + optional .TSD.ShadowArchive tschlegendmodeldefaultshadow = 4; + optional .TSD.StrokeArchive tschlegendmodeldefaultstroke = 5; + extend .TSCH.LegendStyleArchive { + optional .TSCH.Generated.LegendStyleArchive current = 10000; + } +} + +message .TSCH.Generated.LegendNonStyleArchive { + extend .TSCH.LegendNonStyleArchive { + optional .TSCH.Generated.LegendNonStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ChartAxisStyleArchive { + optional float tschchartaxiscategory3dgridlineopacity = 1; + optional float tschchartaxisvalue3dgridlineopacity = 2; + optional .TSD.StrokeArchive tschchartaxiscategory3dgridlinestroke = 3; + optional .TSD.StrokeArchive tschchartaxisvalue3dgridlinestroke = 4; + optional int32 tschchartaxiscategoryhorizontalspacing = 5; + optional int32 tschchartaxisdefaultlabelanglebaselinedirection = 46; + optional int32 tschchartaxiscategorylabelparagraphstyleindex = 6; + optional int32 tschchartaxisdefaultlabelparagraphstyleindex = 7; + optional int32 tschchartaxisvaluelabelparagraphstyleindex = 8; + optional float tschchartaxiscategorylabelsorientation = 9; + optional float tschchartaxisdefaultlabelsorientation = 10; + optional float tschchartaxisvaluelabelsorientation = 11; + optional float tschchartaxiscategorymajorgridlineopacity = 12; + optional float tschchartaxisvaluemajorgridlineopacity = 13; + optional .TSD.ShadowArchive tschchartaxiscategorymajorgridlineshadow = 14; + optional .TSD.ShadowArchive tschchartaxisvaluemajorgridlineshadow = 15; + optional .TSD.StrokeArchive tschchartaxiscategorymajorgridlinestroke = 16; + optional .TSD.StrokeArchive tschchartaxisvaluemajorgridlinestroke = 17; + optional float tschchartaxiscategoryminorgridlineopacity = 18; + optional float tschchartaxisvalueminorgridlineopacity = 19; + optional .TSD.ShadowArchive tschchartaxiscategoryminorgridlineshadow = 20; + optional .TSD.ShadowArchive tschchartaxisvalueminorgridlineshadow = 21; + optional .TSD.StrokeArchive tschchartaxiscategoryminorgridlinestroke = 22; + optional .TSD.StrokeArchive tschchartaxisvalueminorgridlinestroke = 23; + optional bool tschchartaxiscategoryshowaxis = 24; + optional bool tschchartaxisvalueshowaxis = 25; + optional bool tschchartaxisdefaultshowextensionlines = 47; + optional bool tschchartaxiscategoryshowgridlinetickmarks = 42; + optional bool tschchartaxisvalueshowgridlinetickmarks = 43; + optional bool tschchartaxiscategoryshowlastlabel = 26; + optional bool tschchartaxiscategoryshowmajorgridlines = 27; + optional bool tschchartaxispolarcategoryshowmajorgridlines = 44; + optional bool tschchartaxisvalueshowmajorgridlines = 28; + optional bool tschchartaxiscategoryshowmajortickmarks = 29; + optional bool tschchartaxisvalueshowmajortickmarks = 30; + optional bool tschchartaxisvalueshowminimumlabel = 31; + optional bool tschchartaxiscategoryshowminorgridlines = 32; + optional bool tschchartaxisvalueshowminorgridlines = 33; + optional bool tschchartaxiscategoryshowminortickmarks = 34; + optional bool tschchartaxisvalueshowminortickmarks = 35; + optional int32 tschchartaxiscategorytickmarklocation = 36; + optional int32 tschchartaxisvaluetickmarklocation = 37; + optional int32 tschchartaxiscategorytitleparagraphstyleindex = 38; + optional int32 tschchartaxisdefaulttitleparagraphstyleindex = 39; + optional int32 tschchartaxisvaluetitleparagraphstyleindex = 40; + optional int32 tschchartaxiscategoryverticalspacing = 41; + extend .TSCH.ChartAxisStyleArchive { + optional .TSCH.Generated.ChartAxisStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ChartAxisNonStyleArchive { + optional .TSK.FormatStructArchive tschchartaxisdefault1_0dateformat = 20; + optional .TSK.FormatStructArchive tschchartaxisdefault1_0numberformat = 2; + optional int32 tschchartaxisdefault3dlabelposition = 1; + optional .TSK.FormatStructArchive tschchartaxisdefaultdateformat = 22; + optional .TSK.FormatStructArchive tschchartaxisdefaultdurationformat = 21; + optional float tschchartaxisdefaultlabelexplosion = 23; + optional .TSK.FormatStructArchive tschchartaxisdefaultnumberformat = 42; + optional int32 tschchartaxisdefaultnumberformattype = 3; + optional int32 tschchartaxisvaluenumberofdecades = 4; + optional int32 tschchartaxisvaluenumberofmajorgridlines = 5; + optional int32 tschchartaxisvaluenumberofminorgridlines = 6; + optional bool tschchartaxiscategoryplottoedges = 7; + optional int32 tschchartaxisvaluescale = 8; + optional bool tschchartaxiscategoryshowlabels = 9; + optional bool tschchartaxisdefaultshowlabels = 10; + optional bool tschchartaxisvalueshowlabels = 11; + optional bool tschchartaxiscategoryshowserieslabels = 12; + optional bool tschchartaxismultidatashowserieslabels = 19; + optional bool tschchartaxiscategoryshowtitle = 13; + optional bool tschchartaxisvalueshowtitle = 14; + optional string tschchartaxiscategorytitle = 15; + optional string tschchartaxisvaluetitle = 16; + optional .TSCH.ChartsNSNumberDoubleArchive tschchartaxisdefaultusermax = 17; + optional .TSCH.ChartsNSNumberDoubleArchive tschchartaxisdefaultusermin = 18; + extend .TSCH.ChartAxisNonStyleArchive { + optional .TSCH.Generated.ChartAxisNonStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ChartSeriesStyleArchive { + optional .TSD.LineEndArchive tschchartseriesdefaultcalloutlineendlineend = 130; + optional .TSD.LineEndArchive tschchartseriesdefaultcalloutlinestartlineend = 129; + optional .TSD.StrokeArchive tschchartseriesdefaultcalloutlinestrokestyle = 128; + optional .TSD.LineEndArchive tschchartseriesdefaulterrorbarlineend = 1; + optional .TSD.LineEndArchive tschchartseriesdefaulterrorbarlineendscatterx = 2; + optional .TSD.ShadowArchive tschchartseriesdefaulterrorbarshadow = 3; + optional int32 tschchartseriesdefaulterrorbarspacing = 98; + optional int32 tschchartseriesdefaulterrorbarspacingscatterx = 99; + optional .TSD.StrokeArchive tschchartseriesdefaulterrorbarstroke = 4; + optional .TSD.StrokeArchive tschchartseriesdefaulterrorbarstrokescatterx = 5; + optional .TSD.FillArchive tschchartseries3dareafill = 6; + optional .TSD.FillArchive tschchartseries3dbarfill = 7; + optional .TSD.FillArchive tschchartseries3dcolumnfill = 8; + optional .TSD.FillArchive tschchartseries3dlinefill = 9; + optional .TSD.FillArchive tschchartseries3dpiefill = 10; + optional .TSD.FillArchive tschchartseriesareafill = 11; + optional .TSD.FillArchive tschchartseriesbarfill = 12; + optional .TSD.FillArchive tschchartseriescolumnfill = 13; + optional .TSD.FillArchive tschchartseriesdefaultfill = 14; + optional .TSD.FillArchive tschchartseriesmixedareafill = 15; + optional .TSD.FillArchive tschchartseriesmixedcolumnfill = 16; + optional .TSD.FillArchive tschchartseriespiefill = 17; + optional .TSD.FillArchive tschchartseriesradarareafill = 165; + optional float tschchartseriesradarareafilluseseriesstrokealphamultiplier = 189; + optional bool tschchartseriesradarareafilluseseriesstroke = 188; + optional int32 tschchartseriesarealabelparagraphstyleindex = 18; + optional int32 tschchartseriesbarlabelparagraphstyleindex = 19; + optional int32 tschchartseriesdefaultlabelparagraphstyleindex = 20; + optional int32 tschchartseriesdonutlabelparagraphstyleindex = 152; + optional int32 tschchartserieslinelabelparagraphstyleindex = 21; + optional int32 tschchartseriesmixedlabelparagraphstyleindex = 22; + optional int32 tschchartseriespielabelparagraphstyleindex = 23; + optional int32 tschchartseriesradarlabelparagraphstyleindex = 167; + optional float tschchartseriesdefaultopacity = 24; + optional int32 tschchartseriesareaoutsidelabelparagraphstyleindex = 25; + optional int32 tschchartseriesbaroutsidelabelparagraphstyleindex = 26; + optional int32 tschchartseriesdefaultoutsidelabelparagraphstyleindex = 27; + optional int32 tschchartseriesdonutoutsidelabelparagraphstyleindex = 153; + optional int32 tschchartseriesmixedoutsidelabelparagraphstyleindex = 28; + optional int32 tschchartseriespieoutsidelabelparagraphstyleindex = 29; + optional int32 tschchartseriesradaroutsidelabelparagraphstyleindex = 168; + optional .TSD.ShadowArchive tschchartseries3dareashadow = 30; + optional .TSD.ShadowArchive tschchartseries3dbarshadow = 31; + optional .TSD.ShadowArchive tschchartseries3dcolumnshadow = 32; + optional .TSD.ShadowArchive tschchartseries3dlineshadow = 33; + optional .TSD.ShadowArchive tschchartseries3dpieshadow = 34; + optional .TSD.ShadowArchive tschchartseriesareashadow = 35; + optional .TSD.ShadowArchive tschchartseriesbarshadow = 36; + optional .TSD.ShadowArchive tschchartseriesbubbleshadow = 37; + optional .TSD.ShadowArchive tschchartseriesdefaultshadow = 38; + optional .TSD.ShadowArchive tschchartserieslineshadow = 39; + optional .TSD.ShadowArchive tschchartseriesmixedareashadow = 40; + optional .TSD.ShadowArchive tschchartseriesmixedcolumnshadow = 41; + optional .TSD.ShadowArchive tschchartseriesmixedlineshadow = 42; + optional .TSD.ShadowArchive tschchartseriespieshadow = 43; + optional .TSD.ShadowArchive tschchartseriesradarareashadow = 169; + optional .TSD.ShadowArchive tschchartseriesscattershadow = 44; + optional .TSD.StrokeArchive tschchartseriesareastroke = 45; + optional .TSD.StrokeArchive tschchartseriesbarstroke = 46; + optional .TSD.StrokeArchive tschchartseriesbubblestroke = 47; + optional .TSD.StrokeArchive tschchartserieslinestroke = 48; + optional .TSD.StrokeArchive tschchartseriesmixedareastroke = 49; + optional .TSD.StrokeArchive tschchartseriesmixedcolumnstroke = 50; + optional .TSD.StrokeArchive tschchartseriesmixedlinestroke = 51; + optional .TSD.StrokeArchive tschchartseriespiestroke = 52; + optional .TSD.StrokeArchive tschchartseriesradarareastroke = 172; + optional .TSD.StrokeArchive tschchartseriesscatterstroke = 53; + optional .TSD.FillArchive tschchartseriesareasymbolfill = 54; + optional .TSD.FillArchive tschchartseriesbubblesymbolfill = 55; + optional .TSD.FillArchive tschchartserieslinesymbolfill = 56; + optional .TSD.FillArchive tschchartseriesmixedareasymbolfill = 57; + optional .TSD.FillArchive tschchartseriesmixedlinesymbolfill = 58; + optional .TSD.FillArchive tschchartseriesradarareasymbolfill = 175; + optional .TSD.FillArchive tschchartseriesscattersymbolfill = 59; + optional bool tschchartseriesareasymbolfilluseseriesfill = 60; + optional bool tschchartserieslinesymbolfilluseseriesfill = 61; + optional bool tschchartseriesmixedareasymbolfilluseseriesfill = 62; + optional bool tschchartseriesmixedlinesymbolfilluseseriesfill = 63; + optional bool tschchartseriesradarareasymbolfilluseseriesfill = 177; + optional bool tschchartseriesareasymbolfilluseseriesstroke = 64; + optional bool tschchartseriesbubblesymbolfilluseseriesstroke = 65; + optional bool tschchartserieslinesymbolfilluseseriesstroke = 66; + optional bool tschchartseriesmixedareasymbolfilluseseriesstroke = 67; + optional bool tschchartseriesmixedlinesymbolfilluseseriesstroke = 68; + optional bool tschchartseriesradarareasymbolfilluseseriesstroke = 179; + optional bool tschchartseriesscattersymbolfilluseseriesstroke = 69; + optional float tschchartseriesareasymbolsize = 70; + optional float tschchartserieslinesymbolsize = 71; + optional float tschchartseriesmixedareasymbolsize = 72; + optional float tschchartseriesmixedlinesymbolsize = 73; + optional float tschchartseriesradarareasymbolsize = 181; + optional float tschchartseriesscattersymbolsize = 74; + optional .TSD.StrokeArchive tschchartseriesareasymbolstroke = 75; + optional .TSD.StrokeArchive tschchartseriesbubblesymbolstroke = 76; + optional .TSD.StrokeArchive tschchartserieslinesymbolstroke = 77; + optional .TSD.StrokeArchive tschchartseriesmixedareasymbolstroke = 78; + optional .TSD.StrokeArchive tschchartseriesmixedlinesymbolstroke = 79; + optional .TSD.StrokeArchive tschchartseriesradarareasymbolstroke = 183; + optional .TSD.StrokeArchive tschchartseriesscattersymbolstroke = 80; + optional .TSD.ShadowArchive tschchartseriesdefaulttrendlineshadow = 85; + optional .TSD.StrokeArchive tschchartseriesdefaulttrendlinestroke = 86; + optional float tschchartseriesdefaulttrendlineequationopacity = 81; + optional int32 tschchartseriesdefaulttrendlineequationparagraphstyleindex = 82; + optional float tschchartseriesdefaulttrendlinersquaredopacity = 83; + optional int32 tschchartseriesdefaulttrendlinersquaredparagraphstyleindex = 84; + optional int32 tschchartseriesareavaluelabelposition = 87; + optional int32 tschchartseriesbarvaluelabelposition = 88; + optional int32 tschchartseriesbubblevaluelabelposition = 89; + optional int32 tschchartseriesdefaultvaluelabelposition = 90; + optional int32 tschchartserieslinevaluelabelposition = 91; + optional int32 tschchartseriesmixedareavaluelabelposition = 92; + optional int32 tschchartseriesmixedcolumnvaluelabelposition = 93; + optional int32 tschchartseriesmixedlinevaluelabelposition = 94; + optional int32 tschchartseriesradarareavaluelabelposition = 185; + optional int32 tschchartseriesscattervaluelabelposition = 95; + optional int32 tschchartseriesstackedareavaluelabelposition = 96; + optional int32 tschchartseriesstackedbarvaluelabelposition = 97; + optional int32 tschchartseriesdefaultvaluelabelspacing = 100; + extend .TSCH.ChartSeriesStyleArchive { + optional .TSCH.Generated.ChartSeriesStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ChartSeriesNonStyleArchive { + optional .TSK.FormatStructArchive tschchartseriesdefault1_0dateformat = 69; + optional .TSK.FormatStructArchive tschchartseriesdefault1_0numberformat = 21; + optional .TSK.FormatStructArchive tschchartseriespie1_0numberformat = 22; + optional float tschchartseriespie2_3labelexplosion = 16; + optional float tschchartseriesbubbleadjustmentscale = 1; + optional .TSK.FormatStructArchive tschchartseriesdefaultdateformat = 71; + optional .TSK.FormatStructArchive tschchartseriesdefaultdurationformat = 70; + optional int32 tschchartseriesareaenablecalloutline = 103; + optional int32 tschchartseriesbarenablecalloutline = 104; + optional int32 tschchartseriesbubbleenablecalloutline = 105; + optional int32 tschchartseriesdefaultenablecalloutline = 110; + optional int32 tschchartserieslineenablecalloutline = 106; + optional int32 tschchartseriespieenablecalloutline = 102; + optional int32 tschchartseriesscatterenablecalloutline = 107; + optional int32 tschchartseriesstackedareaenablecalloutline = 108; + optional int32 tschchartseriesstackedbarenablecalloutline = 109; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustomnegativedata = 2; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustomnegativedatascatterx = 3; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustompositivedata = 4; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustompositivedatascatterx = 5; + optional float tschchartseriesdefaulterrorbarfixedvalue = 6; + optional float tschchartseriesdefaulterrorbarfixedvaluescatterx = 7; + optional float tschchartseriesdefaulterrorbarpercentvalue = 8; + optional float tschchartseriesdefaulterrorbarpercentvaluescatterx = 9; + optional int32 tschchartseriesdefaulterrorbarsetting = 10; + optional int32 tschchartseriesdefaulterrorbarsettingscatterx = 11; + optional float tschchartseriesdefaulterrorbarstddevvalue = 12; + optional float tschchartseriesdefaulterrorbarstddevvaluescatterx = 13; + optional int32 tschchartseriesdefaulterrorbartype = 14; + optional int32 tschchartseriesdefaulterrorbartypescatterx = 15; + optional float tschchartseriespielabelexplosion = 147; + optional int32 tschchartseriesbubblelinetype = 17; + optional int32 tschchartserieslinelinetype = 18; + optional int32 tschchartseriesmixedlinelinetype = 19; + optional int32 tschchartseriesradararealinetype = 189; + optional int32 tschchartseriesscatterlinetype = 20; + optional .TSK.FormatStructArchive tschchartseriesdefaultnumberformat = 98; + optional .TSK.FormatStructArchive tschchartseriespienumberformat = 99; + optional int32 tschchartseriesdefaultnumberformattype = 23; + optional int32 tschchartseriespienumberformattype = 24; + optional .TSK.FormatStructArchive tschchartseriesstackedpercentnumberformat = 25; + optional int32 tschchartseriesdefaultseriestype = 26; + optional bool tschchartseriesdefaultshowerrorbar = 27; + optional bool tschchartseriesdefaultshowerrorbarscatterx = 28; + optional bool tschchartseriesbubbleshowlabelsinfront = 101; + optional bool tschchartseriesdefaultshowlabelsinfront = 100; + optional bool tschchartseriesscattershowline = 29; + optional bool tschchartseriesbubbleshownegativedata = 30; + optional bool tschchartseriesbubbleshowserieslabels = 65; + optional bool tschchartseriespieshowserieslabels = 31; + optional bool tschchartseriesscattershowserieslabels = 67; + optional bool tschchartseriesareashowsymbol = 32; + optional bool tschchartserieslineshowsymbol = 33; + optional bool tschchartseriesmixedareashowsymbol = 34; + optional bool tschchartseriesmixedlineshowsymbol = 35; + optional bool tschchartseriesradarareashowsymbol = 160; + optional bool tschchartseriesscattershowsymbol = 36; + optional bool tschchartseriesdefaultshowtrendline = 37; + optional bool tschchartseriesareashowvaluelabels = 38; + optional bool tschchartseriesbarshowvaluelabels = 39; + optional bool tschchartseriesbubbleshowvaluelabels = 40; + optional bool tschchartseriesdefaultshowvaluelabels = 41; + optional bool tschchartserieslineshowvaluelabels = 42; + optional bool tschchartseriesmixedshowvaluelabels = 43; + optional bool tschchartseriespieshowvaluelabels = 44; + optional bool tschchartseriesradarshowvaluelabels = 162; + optional bool tschchartseriesscattershowvaluelabels = 45; + optional int32 tschchartseriesbubblesizedimension = 46; + optional bool tschchartseriesareastacklabels = 139; + optional bool tschchartseriesbarstacklabels = 140; + optional bool tschchartseriesbubblestacklabels = 141; + optional bool tschchartseriesdefaultstacklabels = 146; + optional bool tschchartserieslinestacklabels = 142; + optional bool tschchartseriespiestacklabels = 138; + optional bool tschchartseriesscatterstacklabels = 143; + optional bool tschchartseriesstackedareastacklabels = 144; + optional bool tschchartseriesstackedbarstacklabels = 145; + optional int32 tschchartseriesareasymboltype = 47; + optional int32 tschchartserieslinesymboltype = 48; + optional int32 tschchartseriesmixedareasymboltype = 49; + optional int32 tschchartseriesmixedlinesymboltype = 50; + optional int32 tschchartseriesradarareasymboltype = 163; + optional int32 tschchartseriesscattersymboltype = 51; + optional float tschchartseriesdefaulttrendlineequationoffsetx = 52; + optional float tschchartseriesdefaulttrendlineequationoffsety = 53; + optional string tschchartseriesdefaulttrendlinelabelstring = 54; + optional int32 tschchartseriesdefaulttrendlineorder = 55; + optional int32 tschchartseriesdefaulttrendlineperiod = 56; + optional float tschchartseriesdefaulttrendlinersquaredoffsetx = 57; + optional float tschchartseriesdefaulttrendlinersquaredoffsety = 58; + optional bool tschchartseriesdefaulttrendlineshowequation = 59; + optional bool tschchartseriesdefaulttrendlineshowlabel = 60; + optional bool tschchartseriesdefaulttrendlineshowr2value = 61; + optional int32 tschchartseriesdefaulttrendlinetype = 62; + optional int32 tschchartseriesbubblevaluelabelsaxis = 66; + optional int32 tschchartseriesscattervaluelabelsaxis = 68; + optional float tschchartseriespiewedgeexplosion = 63; + optional int32 tschchartseriesdefaultyaxisordinal = 64; + extend .TSCH.ChartSeriesNonStyleArchive { + optional .TSCH.Generated.ChartSeriesNonStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ReferenceLineStyleArchive { + optional int32 tschreferencelinedefaultlabelparagraphstyleindex = 3; + optional .TSD.ShadowArchive tschreferencelinedefaultshadow = 2; + optional .TSD.StrokeArchive tschreferencelinedefaultstroke = 1; + optional int32 tschreferencelinedefaultvaluelabelparagraphstyleindex = 4; + extend .TSCH.ReferenceLineStyleArchive { + optional .TSCH.Generated.ReferenceLineStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ReferenceLineNonStyleArchive { + optional .TSCH.ChartsNSNumberDoubleArchive tschreferencelinedefaultcustomvalue = 6; + optional string tschreferencelinedefaultlabel = 5; + optional bool tschreferencelinedefaultshowlabel = 3; + optional bool tschreferencelinedefaultshowline = 2; + optional bool tschreferencelinedefaultshowvaluelabel = 4; + optional int32 tschreferencelinedefaulttype = 1; + extend .TSCH.ReferenceLineNonStyleArchive { + optional .TSCH.Generated.ReferenceLineNonStyleArchive current = 10000; + } +} + +message .TSCH.Generated.ChartGenericPropertyMapArchive { + optional int32 tschchartinfo3dbarshape = 1; + optional bool tschchartinfo3dbeveledges = 2; + optional float tschchartinfo3dchartopacity = 3; + optional float tschchartinfo3dintersetdepthgap = 4; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfo3dlightingpackage = 5; + optional .TSCH.Chart3DVectorArchive tschchartinfo3drotation = 6; + optional .TSCH.Chart3DVectorArchive tschchartinfo3dscale = 7; + optional .TSCH.Chart3DVectorArchive tschchartinfo3dviewport = 8; + optional bool tschchartinfoaxisanchorlabelatends = 9; + optional .TSD.FillArchive tschchartinfobackgroundfill = 10; + optional .TSD.StrokeArchive tschchartinfobackgroundstroke = 11; + optional float tschchartinfoborderopacity = 12; + optional .TSD.ShadowArchive tschchartinfobordershadow = 13; + optional .TSD.StrokeArchive tschchartinfoborderstroke = 14; + optional int32 tschchartinfocalloutlinetype = 15; + optional bool tschchartinfocombinelayers = 16; + optional bool tschchartinfodeprecatedroundedcornerouterendonly = 17; + optional float tschchartinfodeprecatedroundedcornerradius = 18; + optional int32 tschchartinfodatasetnamelocation = 19; + optional int32 tschchartinfodatasetnameparagraphstyleindex = 20; + optional bool tschchartinfodonutplacetitleatcenter = 21; + optional .TSD.FillArchive tschchartinfogridbackgroundfill = 22; + optional float tschchartinfogridbackgroundopacity = 23; + optional float tschchartinfoinnerradius = 24; + optional float tschchartinfointerbargap = 25; + optional float tschchartinfointersetgap = 26; + optional int32 tschchartinfomultidatacontroltype = 27; + optional float tschchartinfopiestartangle = 28; + optional bool tschchartinforadarradiusgridlinecurve = 29; + optional float tschchartinforadarstartangle = 30; + optional bool tschchartinforoundedcornerouterendonly = 31; + optional float tschchartinforoundedcornerradius = 32; + optional bool tschchartinfoshowborder = 33; + optional bool tschchartinfoshowlegend = 34; + optional bool tschchartinfoshowtitle = 35; + optional bool tschchartinfoskiphiddendata = 36; + optional .TSP.Color tschchartinfotitlecolor = 37; + optional string tschchartinfotitle = 38; + optional int32 tschchartinfotitleparagraphstyleindex = 39; +} + +message .TSCH.Generated.LegendGenericPropertyMapArchive { + optional .TSD.FillArchive tschlegendmodelfill = 1; + optional int32 tschlegendmodellabelparagraphstyleindex = 2; + optional float tschlegendmodelopacity = 3; + optional .TSD.ShadowArchive tschlegendmodelshadow = 4; + optional .TSD.StrokeArchive tschlegendmodelstroke = 5; +} + +message .TSCH.Generated.ChartAxisGenericPropertyMapArchive { + optional .TSK.FormatStructArchive tschchartaxis1_0dateformat = 1; + optional .TSK.FormatStructArchive tschchartaxis1_0numberformat = 2; + optional float tschchartaxis3dgridlineopacity = 3; + optional .TSD.StrokeArchive tschchartaxis3dgridlinestroke = 4; + optional int32 tschchartaxis3dlabelposition = 5; + optional .TSK.FormatStructArchive tschchartaxisdateformat = 6; + optional .TSK.FormatStructArchive tschchartaxisdurationformat = 7; + optional int32 tschchartaxishorizontalspacing = 8; + optional int32 tschchartaxislabelanglebaselinedirection = 9; + optional float tschchartaxislabelexplosion = 10; + optional int32 tschchartaxislabelparagraphstyleindex = 11; + optional float tschchartaxislabelsorientation = 12; + optional float tschchartaxismajorgridlineopacity = 13; + optional .TSD.ShadowArchive tschchartaxismajorgridlineshadow = 14; + optional .TSD.StrokeArchive tschchartaxismajorgridlinestroke = 15; + optional float tschchartaxisminorgridlineopacity = 16; + optional .TSD.ShadowArchive tschchartaxisminorgridlineshadow = 17; + optional .TSD.StrokeArchive tschchartaxisminorgridlinestroke = 18; + optional .TSK.FormatStructArchive tschchartaxisnumberformat = 19; + optional int32 tschchartaxisnumberformattype = 20; + optional int32 tschchartaxisnumberofdecades = 21; + optional int32 tschchartaxisnumberofmajorgridlines = 22; + optional int32 tschchartaxisnumberofminorgridlines = 23; + optional bool tschchartaxisplottoedges = 24; + optional int32 tschchartaxisscale = 25; + optional bool tschchartaxisshowaxis = 26; + optional bool tschchartaxisshowextensionlines = 27; + optional bool tschchartaxisshowgridlinetickmarks = 28; + optional bool tschchartaxisshowlabels = 29; + optional bool tschchartaxisshowlastlabel = 30; + optional bool tschchartaxisshowmajorgridlines = 31; + optional bool tschchartaxisshowmajortickmarks = 32; + optional bool tschchartaxisshowminimumlabel = 33; + optional bool tschchartaxisshowminorgridlines = 34; + optional bool tschchartaxisshowminortickmarks = 35; + optional bool tschchartaxisshowserieslabels = 36; + optional bool tschchartaxisshowtitle = 37; + optional int32 tschchartaxistickmarklocation = 38; + optional string tschchartaxistitle = 39; + optional int32 tschchartaxistitleparagraphstyleindex = 40; + optional .TSCH.ChartsNSNumberDoubleArchive tschchartaxisusermax = 41; + optional .TSCH.ChartsNSNumberDoubleArchive tschchartaxisusermin = 42; + optional int32 tschchartaxisverticalspacing = 43; +} + +message .TSCH.Generated.ChartSeriesGenericPropertyMapArchive { + optional .TSK.FormatStructArchive tschchartseries1_0dateformat = 1; + optional .TSK.FormatStructArchive tschchartseries1_0numberformat = 2; + optional float tschchartseries2_3labelexplosion = 3; + optional float tschchartseriesadjustmentscale = 4; + optional .TSD.LineEndArchive tschchartseriescalloutlineendlineend = 5; + optional .TSD.LineEndArchive tschchartseriescalloutlinestartlineend = 6; + optional .TSD.StrokeArchive tschchartseriescalloutlinestrokestyle = 7; + optional .TSK.FormatStructArchive tschchartseriesdateformat = 8; + optional .TSK.FormatStructArchive tschchartseriesdurationformat = 9; + optional int32 tschchartseriesenablecalloutline = 10; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartserieserrorbarcustomnegativedata = 11; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartserieserrorbarcustomnegativedatascatterx = 12; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartserieserrorbarcustompositivedata = 13; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartserieserrorbarcustompositivedatascatterx = 14; + optional float tschchartserieserrorbarfixedvalue = 15; + optional float tschchartserieserrorbarfixedvaluescatterx = 16; + optional .TSD.LineEndArchive tschchartserieserrorbarlineend = 17; + optional .TSD.LineEndArchive tschchartserieserrorbarlineendscatterx = 18; + optional float tschchartserieserrorbarpercentvalue = 19; + optional float tschchartserieserrorbarpercentvaluescatterx = 20; + optional int32 tschchartserieserrorbarsetting = 21; + optional int32 tschchartserieserrorbarsettingscatterx = 22; + optional .TSD.ShadowArchive tschchartserieserrorbarshadow = 23; + optional int32 tschchartserieserrorbarspacing = 24; + optional int32 tschchartserieserrorbarspacingscatterx = 25; + optional float tschchartserieserrorbarstddevvalue = 26; + optional float tschchartserieserrorbarstddevvaluescatterx = 27; + optional .TSD.StrokeArchive tschchartserieserrorbarstroke = 28; + optional .TSD.StrokeArchive tschchartserieserrorbarstrokescatterx = 29; + optional int32 tschchartserieserrorbartype = 30; + optional int32 tschchartserieserrorbartypescatterx = 31; + optional .TSD.FillArchive tschchartseriesfill = 32; + optional float tschchartseriesfilluseseriesstrokealphamultiplier = 33; + optional bool tschchartseriesfilluseseriesstroke = 34; + optional float tschchartserieslabelexplosion = 35; + optional int32 tschchartserieslabelparagraphstyleindex = 36; + optional int32 tschchartserieslinetype = 37; + optional .TSK.FormatStructArchive tschchartseriesnumberformat = 38; + optional int32 tschchartseriesnumberformattype = 39; + optional float tschchartseriesopacity = 40; + optional int32 tschchartseriesoutsidelabelparagraphstyleindex = 41; + optional .TSK.FormatStructArchive tschchartseriespercentnumberformat = 42; + optional int32 tschchartseriesseriestype = 43; + optional .TSD.ShadowArchive tschchartseriesshadow = 44; + optional bool tschchartseriesshowerrorbar = 45; + optional bool tschchartseriesshowerrorbarscatterx = 46; + optional bool tschchartseriesshowlabelsinfront = 47; + optional bool tschchartseriesshowline = 48; + optional bool tschchartseriesshownegativedata = 49; + optional bool tschchartseriesshowserieslabels = 50; + optional bool tschchartseriesshowsymbol = 51; + optional bool tschchartseriesshowtrendline = 52; + optional bool tschchartseriesshowvaluelabels = 53; + optional int32 tschchartseriessizedimension = 54; + optional bool tschchartseriesstacklabels = 55; + optional .TSD.StrokeArchive tschchartseriesstroke = 56; + optional .TSD.FillArchive tschchartseriessymbolfill = 57; + optional bool tschchartseriessymbolfilluseseriesfill = 58; + optional bool tschchartseriessymbolfilluseseriesstroke = 59; + optional float tschchartseriessymbolsize = 60; + optional .TSD.StrokeArchive tschchartseriessymbolstroke = 61; + optional int32 tschchartseriessymboltype = 62; + optional float tschchartseriestrendlineequationoffsetx = 63; + optional float tschchartseriestrendlineequationoffsety = 64; + optional string tschchartseriestrendlinelabelstring = 65; + optional int32 tschchartseriestrendlineorder = 66; + optional int32 tschchartseriestrendlineperiod = 67; + optional float tschchartseriestrendlinersquaredoffsetx = 68; + optional float tschchartseriestrendlinersquaredoffsety = 69; + optional .TSD.ShadowArchive tschchartseriestrendlineshadow = 70; + optional bool tschchartseriestrendlineshowequation = 71; + optional bool tschchartseriestrendlineshowlabel = 72; + optional bool tschchartseriestrendlineshowr2value = 73; + optional .TSD.StrokeArchive tschchartseriestrendlinestroke = 74; + optional int32 tschchartseriestrendlinetype = 75; + optional float tschchartseriestrendlineequationopacity = 76; + optional int32 tschchartseriestrendlineequationparagraphstyleindex = 77; + optional float tschchartseriestrendlinersquaredopacity = 78; + optional int32 tschchartseriestrendlinersquaredparagraphstyleindex = 79; + optional int32 tschchartseriesvaluelabelposition = 80; + optional int32 tschchartseriesvaluelabelspacing = 81; + optional int32 tschchartseriesvaluelabelsaxis = 82; + optional float tschchartserieswedgeexplosion = 83; + optional int32 tschchartseriesyaxisordinal = 84; +} + +message .TSCH.Generated.ReferenceLineGenericPropertyMapArchive { + optional .TSCH.ChartsNSNumberDoubleArchive tschreferencelinecustomvalue = 1; + optional string tschreferencelinelabel = 2; + optional int32 tschreferencelinelabelparagraphstyleindex = 3; + optional .TSD.ShadowArchive tschreferencelineshadow = 4; + optional bool tschreferencelineshowlabel = 5; + optional bool tschreferencelineshowline = 6; + optional bool tschreferencelineshowvaluelabel = 7; + optional .TSD.StrokeArchive tschreferencelinestroke = 8; + optional int32 tschreferencelinetype = 9; + optional int32 tschreferencelinevaluelabelparagraphstyleindex = 10; +} + + +message .TSCHSOS.SpecSetChart3dLightingPackageArchive { + optional .TSCH.Chart3DLightingPackageArchive chart3d_lighting_package = 1; + required bool unset = 2; +} + +message .TSCHSOS.SpecSetChart3dVectorArchive { + optional .TSCH.Chart3DVectorArchive chart3d_vector = 1; + required bool unset = 2; +} + +message .TSCHSOS.SpecSetChartErrorBarCustomDataArchive { + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive chart_error_bar_custom_data = 1; + required bool unset = 2; +} + +message .TSCHSOS.SpecSetChartsOptionalDoubleArchiveArchive { + optional .TSCH.ChartsNSNumberDoubleArchive charts_optional_double_archive = 1; + required bool unset = 2; +} + +message .TSCHSOS.SpecSetFormatObjectArchive { + optional .TSK.FormatStructArchive format_object = 1; + required bool unset = 2; +} + +message .TSCHSOS.SpecSetNumberFormatArchive { + optional .TSK.FormatStructArchive number_format = 1; + required bool unset = 2; +} + +message .TSCHSOS.SpecChart3dLightingPackageArchive { + optional .TSCHSOS.SpecSetChart3dLightingPackageArchive spec_set_chart3d_lighting_package = 1; +} + +message .TSCHSOS.SpecChart3dVectorArchive { + optional .TSCHSOS.SpecSetChart3dVectorArchive spec_set_chart3d_vector = 1; +} + +message .TSCHSOS.SpecChartErrorBarCustomDataArchive { + optional .TSCHSOS.SpecSetChartErrorBarCustomDataArchive spec_set_chart_error_bar_custom_data = 1; +} + +message .TSCHSOS.SpecChartsOptionalDoubleArchiveArchive { + optional .TSCHSOS.SpecSetChartsOptionalDoubleArchiveArchive spec_set_charts_optional_double_archive = 1; +} + +message .TSCHSOS.SpecFormatObjectArchive { + optional .TSCHSOS.SpecSetFormatObjectArchive spec_set_format_object = 1; +} + +message .TSCHSOS.SpecNumberFormatArchive { + optional .TSCHSOS.SpecSetNumberFormatArchive spec_set_number_format = 1; +} + +message .TSCHSOS.ChartAxisNonStylePropertyChangeSetArchive { + optional .TSCHSOS.SpecFormatObjectArchive default10_date_format = 1; + optional bool default10_date_format_undefined = 2; + optional .TSCHSOS.SpecNumberFormatArchive default10_number_format = 3; + optional bool default10_number_format_undefined = 4; + optional .TSSSOS.SpecIntegerArchive default3d_label_position = 5; + optional bool default3d_label_position_undefined = 6; + optional .TSCHSOS.SpecFormatObjectArchive default_date_format = 7; + optional bool default_date_format_undefined = 8; + optional .TSCHSOS.SpecFormatObjectArchive default_duration_format = 9; + optional bool default_duration_format_undefined = 10; + optional .TSSSOS.SpecDoubleArchive default_label_explosion = 11; + optional bool default_label_explosion_undefined = 12; + optional .TSCHSOS.SpecNumberFormatArchive default_number_format = 13; + optional bool default_number_format_undefined = 14; + optional .TSSSOS.SpecIntegerArchive default_number_format_type = 15; + optional bool default_number_format_type_undefined = 16; + optional .TSSSOS.SpecIntegerArchive value_number_of_decades = 17; + optional bool value_number_of_decades_undefined = 18; + optional .TSSSOS.SpecIntegerArchive value_number_of_major_gridlines = 19; + optional bool value_number_of_major_gridlines_undefined = 20; + optional .TSSSOS.SpecIntegerArchive value_number_of_minor_gridlines = 21; + optional bool value_number_of_minor_gridlines_undefined = 22; + optional .TSSSOS.SpecBoolArchive category_plot_to_edges = 23; + optional bool category_plot_to_edges_undefined = 24; + optional .TSSSOS.SpecIntegerArchive value_scale = 25; + optional bool value_scale_undefined = 26; + optional .TSSSOS.SpecBoolArchive category_show_labels = 27; + optional bool category_show_labels_undefined = 28; + optional .TSSSOS.SpecBoolArchive default_show_labels = 29; + optional bool default_show_labels_undefined = 30; + optional .TSSSOS.SpecBoolArchive value_show_labels = 31; + optional bool value_show_labels_undefined = 32; + optional .TSSSOS.SpecBoolArchive category_show_series_labels = 33; + optional bool category_show_series_labels_undefined = 34; + optional .TSSSOS.SpecBoolArchive multi_data_show_series_labels = 35; + optional bool multi_data_show_series_labels_undefined = 36; + optional .TSSSOS.SpecBoolArchive category_show_title = 37; + optional bool category_show_title_undefined = 38; + optional .TSSSOS.SpecBoolArchive value_show_title = 39; + optional bool value_show_title_undefined = 40; + optional .TSSSOS.SpecStringArchive category_title = 41; + optional bool category_title_undefined = 42; + optional .TSSSOS.SpecStringArchive value_title = 43; + optional bool value_title_undefined = 44; + optional .TSCHSOS.SpecChartsOptionalDoubleArchiveArchive default_user_max = 45; + optional bool default_user_max_undefined = 46; + optional .TSCHSOS.SpecChartsOptionalDoubleArchiveArchive default_user_min = 47; + optional bool default_user_min_undefined = 48; +} + +message .TSCHSOS.ChartAxisStylePropertyChangeSetArchive { + optional .TSSSOS.SpecDoubleArchive category3d_gridline_opacity = 1; + optional bool category3d_gridline_opacity_undefined = 2; + optional .TSSSOS.SpecDoubleArchive value3d_gridline_opacity = 3; + optional bool value3d_gridline_opacity_undefined = 4; + optional .TSDSOS.SpecStrokeArchive category3d_gridline_stroke = 5; + optional bool category3d_gridline_stroke_undefined = 6; + optional .TSDSOS.SpecStrokeArchive value3d_gridline_stroke = 7; + optional bool value3d_gridline_stroke_undefined = 8; + optional .TSSSOS.SpecIntegerArchive category_horizontal_spacing = 9; + optional bool category_horizontal_spacing_undefined = 10; + optional .TSSSOS.SpecIntegerArchive default_label_angle_baseline_direction = 11; + optional bool default_label_angle_baseline_direction_undefined = 12; + optional .TSSSOS.SpecIntegerArchive category_label_paragraph_style_index = 13; + optional bool category_label_paragraph_style_index_undefined = 14; + optional .TSSSOS.SpecIntegerArchive default_label_paragraph_style_index = 15; + optional bool default_label_paragraph_style_index_undefined = 16; + optional .TSSSOS.SpecIntegerArchive value_label_paragraph_style_index = 17; + optional bool value_label_paragraph_style_index_undefined = 18; + optional .TSSSOS.SpecDoubleArchive category_labels_orientation = 19; + optional bool category_labels_orientation_undefined = 20; + optional .TSSSOS.SpecDoubleArchive default_labels_orientation = 21; + optional bool default_labels_orientation_undefined = 22; + optional .TSSSOS.SpecDoubleArchive value_labels_orientation = 23; + optional bool value_labels_orientation_undefined = 24; + optional .TSSSOS.SpecDoubleArchive category_major_gridline_opacity = 25; + optional bool category_major_gridline_opacity_undefined = 26; + optional .TSSSOS.SpecDoubleArchive value_major_gridline_opacity = 27; + optional bool value_major_gridline_opacity_undefined = 28; + optional .TSDSOS.SpecShadowArchive category_major_gridline_shadow = 29; + optional bool category_major_gridline_shadow_undefined = 30; + optional .TSDSOS.SpecShadowArchive value_major_gridline_shadow = 31; + optional bool value_major_gridline_shadow_undefined = 32; + optional .TSDSOS.SpecStrokeArchive category_major_gridline_stroke = 33; + optional bool category_major_gridline_stroke_undefined = 34; + optional .TSDSOS.SpecStrokeArchive value_major_gridline_stroke = 35; + optional bool value_major_gridline_stroke_undefined = 36; + optional .TSSSOS.SpecDoubleArchive category_minor_gridline_opacity = 37; + optional bool category_minor_gridline_opacity_undefined = 38; + optional .TSSSOS.SpecDoubleArchive value_minor_gridline_opacity = 39; + optional bool value_minor_gridline_opacity_undefined = 40; + optional .TSDSOS.SpecShadowArchive category_minor_gridline_shadow = 41; + optional bool category_minor_gridline_shadow_undefined = 42; + optional .TSDSOS.SpecShadowArchive value_minor_gridline_shadow = 43; + optional bool value_minor_gridline_shadow_undefined = 44; + optional .TSDSOS.SpecStrokeArchive category_minor_gridline_stroke = 45; + optional bool category_minor_gridline_stroke_undefined = 46; + optional .TSDSOS.SpecStrokeArchive value_minor_gridline_stroke = 47; + optional bool value_minor_gridline_stroke_undefined = 48; + optional .TSSSOS.SpecBoolArchive category_show_axis = 49; + optional bool category_show_axis_undefined = 50; + optional .TSSSOS.SpecBoolArchive value_show_axis = 51; + optional bool value_show_axis_undefined = 52; + optional .TSSSOS.SpecBoolArchive default_show_extension_lines = 53; + optional bool default_show_extension_lines_undefined = 54; + optional .TSSSOS.SpecBoolArchive category_show_gridline_tickmarks = 55; + optional bool category_show_gridline_tickmarks_undefined = 56; + optional .TSSSOS.SpecBoolArchive value_show_gridline_tickmarks = 57; + optional bool value_show_gridline_tickmarks_undefined = 58; + optional .TSSSOS.SpecBoolArchive category_show_last_label = 59; + optional bool category_show_last_label_undefined = 60; + optional .TSSSOS.SpecBoolArchive category_show_major_gridlines = 61; + optional bool category_show_major_gridlines_undefined = 62; + optional .TSSSOS.SpecBoolArchive polar_category_show_major_gridlines = 63; + optional bool polar_category_show_major_gridlines_undefined = 64; + optional .TSSSOS.SpecBoolArchive value_show_major_gridlines = 65; + optional bool value_show_major_gridlines_undefined = 66; + optional .TSSSOS.SpecBoolArchive category_show_major_tickmarks = 67; + optional bool category_show_major_tickmarks_undefined = 68; + optional .TSSSOS.SpecBoolArchive value_show_major_tickmarks = 69; + optional bool value_show_major_tickmarks_undefined = 70; + optional .TSSSOS.SpecBoolArchive value_show_minimum_label = 71; + optional bool value_show_minimum_label_undefined = 72; + optional .TSSSOS.SpecBoolArchive category_show_minor_gridlines = 73; + optional bool category_show_minor_gridlines_undefined = 74; + optional .TSSSOS.SpecBoolArchive value_show_minor_gridlines = 75; + optional bool value_show_minor_gridlines_undefined = 76; + optional .TSSSOS.SpecBoolArchive category_show_minor_tickmarks = 77; + optional bool category_show_minor_tickmarks_undefined = 78; + optional .TSSSOS.SpecBoolArchive value_show_minor_tickmarks = 79; + optional bool value_show_minor_tickmarks_undefined = 80; + optional .TSSSOS.SpecIntegerArchive category_tickmark_location = 81; + optional bool category_tickmark_location_undefined = 82; + optional .TSSSOS.SpecIntegerArchive value_tickmark_location = 83; + optional bool value_tickmark_location_undefined = 84; + optional .TSSSOS.SpecIntegerArchive category_title_paragraph_style_index = 85; + optional bool category_title_paragraph_style_index_undefined = 86; + optional .TSSSOS.SpecIntegerArchive default_title_paragraph_style_index = 87; + optional bool default_title_paragraph_style_index_undefined = 88; + optional .TSSSOS.SpecIntegerArchive value_title_paragraph_style_index = 89; + optional bool value_title_paragraph_style_index_undefined = 90; + optional .TSSSOS.SpecIntegerArchive category_vertical_spacing = 91; + optional bool category_vertical_spacing_undefined = 92; +} + +message .TSCHSOS.ChartLegendNonStylePropertyChangeSetArchive { +} + +message .TSCHSOS.ChartLegendStylePropertyChangeSetArchive { + optional .TSDSOS.SpecFillArchive default_fill = 1; + optional bool default_fill_undefined = 2; + optional .TSSSOS.SpecIntegerArchive default_label_paragraph_style_index = 3; + optional bool default_label_paragraph_style_index_undefined = 4; + optional .TSSSOS.SpecDoubleArchive default_opacity = 5; + optional bool default_opacity_undefined = 6; + optional .TSDSOS.SpecShadowArchive default_shadow = 7; + optional bool default_shadow_undefined = 8; + optional .TSDSOS.SpecStrokeArchive default_stroke = 9; + optional bool default_stroke_undefined = 10; +} + +message .TSCHSOS.ChartNonStylePropertyChangeSetArchive { + optional .TSSSOS.SpecIntegerArchive default3d_bar_shape = 1; + optional bool default3d_bar_shape_undefined = 2; + optional .TSSSOS.SpecBoolArchive default3d_bevel_edges = 3; + optional bool default3d_bevel_edges_undefined = 4; + optional .TSSSOS.SpecDoubleArchive default3d_inter_set_depth_gap = 5; + optional bool default3d_inter_set_depth_gap_undefined = 6; + optional .TSCHSOS.SpecChart3dVectorArchive default3d_rotation = 7; + optional bool default3d_rotation_undefined = 8; + optional .TSCHSOS.SpecChart3dVectorArchive area3d_scale = 9; + optional bool area3d_scale_undefined = 10; + optional .TSCHSOS.SpecChart3dVectorArchive bar3d_scale = 11; + optional bool bar3d_scale_undefined = 12; + optional .TSCHSOS.SpecChart3dVectorArchive column3d_scale = 13; + optional bool column3d_scale_undefined = 14; + optional .TSCHSOS.SpecChart3dVectorArchive default3d_scale = 15; + optional bool default3d_scale_undefined = 16; + optional .TSCHSOS.SpecChart3dVectorArchive line3d_scale = 17; + optional bool line3d_scale_undefined = 18; + optional .TSCHSOS.SpecChart3dVectorArchive pie3d_scale = 19; + optional bool pie3d_scale_undefined = 20; + optional .TSCHSOS.SpecChart3dVectorArchive default3d_viewport = 21; + optional bool default3d_viewport_undefined = 22; + optional .TSSSOS.SpecIntegerArchive area_callout_line_type = 23; + optional bool area_callout_line_type_undefined = 24; + optional .TSSSOS.SpecIntegerArchive bar_callout_line_type = 25; + optional bool bar_callout_line_type_undefined = 26; + optional .TSSSOS.SpecIntegerArchive bubble_callout_line_type = 27; + optional bool bubble_callout_line_type_undefined = 28; + optional .TSSSOS.SpecIntegerArchive default_callout_line_type = 29; + optional bool default_callout_line_type_undefined = 30; + optional .TSSSOS.SpecIntegerArchive line_callout_line_type = 31; + optional bool line_callout_line_type_undefined = 32; + optional .TSSSOS.SpecIntegerArchive pie_callout_line_type = 33; + optional bool pie_callout_line_type_undefined = 34; + optional .TSSSOS.SpecIntegerArchive scatter_callout_line_type = 35; + optional bool scatter_callout_line_type_undefined = 36; + optional .TSSSOS.SpecIntegerArchive stacked_area_callout_line_type = 37; + optional bool stacked_area_callout_line_type_undefined = 38; + optional .TSSSOS.SpecIntegerArchive stacked_bar_callout_line_type = 39; + optional bool stacked_bar_callout_line_type_undefined = 40; + optional .TSSSOS.SpecBoolArchive default_d_e_p_r_e_c_a_t_e_d_rounded_corner_outer_end_only = 41; + optional bool default_d_e_p_r_e_c_a_t_e_d_rounded_corner_outer_end_only_undefined = 42; + optional .TSSSOS.SpecDoubleArchive default_d_e_p_r_e_c_a_t_e_d_rounded_corner_radius = 43; + optional bool default_d_e_p_r_e_c_a_t_e_d_rounded_corner_radius_undefined = 44; + optional .TSSSOS.SpecIntegerArchive default_data_set_name_location = 45; + optional bool default_data_set_name_location_undefined = 46; + optional .TSSSOS.SpecBoolArchive default_donut_place_title_at_center = 47; + optional bool default_donut_place_title_at_center_undefined = 48; + optional .TSSSOS.SpecDoubleArchive default_inner_radius = 49; + optional bool default_inner_radius_undefined = 50; + optional .TSSSOS.SpecIntegerArchive default_multi_data_control_type = 51; + optional bool default_multi_data_control_type_undefined = 52; + optional .TSSSOS.SpecDoubleArchive default_pie_start_angle = 53; + optional bool default_pie_start_angle_undefined = 54; + optional .TSSSOS.SpecDoubleArchive default_radar_start_angle = 55; + optional bool default_radar_start_angle_undefined = 56; + optional .TSSSOS.SpecBoolArchive default_show_legend = 57; + optional bool default_show_legend_undefined = 58; + optional .TSSSOS.SpecBoolArchive default_show_title = 59; + optional bool default_show_title_undefined = 60; + optional .TSSSOS.SpecBoolArchive default_skip_hidden_data = 61; + optional bool default_skip_hidden_data_undefined = 62; + optional .TSSSOS.SpecStringArchive default_title = 63; + optional bool default_title_undefined = 64; +} + +message .TSCHSOS.ChartReferenceLineNonStylePropertyChangeSetArchive { + optional .TSCHSOS.SpecChartsOptionalDoubleArchiveArchive default_custom_value = 1; + optional bool default_custom_value_undefined = 2; + optional .TSSSOS.SpecStringArchive default_label = 3; + optional bool default_label_undefined = 4; + optional .TSSSOS.SpecBoolArchive default_show_label = 5; + optional bool default_show_label_undefined = 6; + optional .TSSSOS.SpecBoolArchive default_show_line = 7; + optional bool default_show_line_undefined = 8; + optional .TSSSOS.SpecBoolArchive default_show_value_label = 9; + optional bool default_show_value_label_undefined = 10; + optional .TSSSOS.SpecIntegerArchive default_type = 11; + optional bool default_type_undefined = 12; +} + +message .TSCHSOS.ChartReferenceLineStylePropertyChangeSetArchive { + optional .TSSSOS.SpecIntegerArchive default_label_paragraph_style_index = 1; + optional bool default_label_paragraph_style_index_undefined = 2; + optional .TSDSOS.SpecShadowArchive default_shadow = 3; + optional bool default_shadow_undefined = 4; + optional .TSDSOS.SpecStrokeArchive default_stroke = 5; + optional bool default_stroke_undefined = 6; + optional .TSSSOS.SpecIntegerArchive default_value_label_paragraph_style_index = 7; + optional bool default_value_label_paragraph_style_index_undefined = 8; +} + +message .TSCHSOS.ChartSeriesNonStylePropertyChangeSetArchive { + optional .TSCHSOS.SpecFormatObjectArchive default10_date_format = 1; + optional bool default10_date_format_undefined = 2; + optional .TSCHSOS.SpecNumberFormatArchive default10_number_format = 3; + optional bool default10_number_format_undefined = 4; + optional .TSCHSOS.SpecNumberFormatArchive pie10_number_format = 5; + optional bool pie10_number_format_undefined = 6; + optional .TSSSOS.SpecDoubleArchive pie23_label_explosion = 7; + optional bool pie23_label_explosion_undefined = 8; + optional .TSSSOS.SpecDoubleArchive bubble_adjustment_scale = 9; + optional bool bubble_adjustment_scale_undefined = 10; + optional .TSCHSOS.SpecFormatObjectArchive default_date_format = 11; + optional bool default_date_format_undefined = 12; + optional .TSCHSOS.SpecFormatObjectArchive default_duration_format = 13; + optional bool default_duration_format_undefined = 14; + optional .TSSSOS.SpecIntegerArchive area_enable_callout_line = 15; + optional bool area_enable_callout_line_undefined = 16; + optional .TSSSOS.SpecIntegerArchive bar_enable_callout_line = 17; + optional bool bar_enable_callout_line_undefined = 18; + optional .TSSSOS.SpecIntegerArchive bubble_enable_callout_line = 19; + optional bool bubble_enable_callout_line_undefined = 20; + optional .TSSSOS.SpecIntegerArchive default_enable_callout_line = 21; + optional bool default_enable_callout_line_undefined = 22; + optional .TSSSOS.SpecIntegerArchive line_enable_callout_line = 23; + optional bool line_enable_callout_line_undefined = 24; + optional .TSSSOS.SpecIntegerArchive pie_enable_callout_line = 25; + optional bool pie_enable_callout_line_undefined = 26; + optional .TSSSOS.SpecIntegerArchive scatter_enable_callout_line = 27; + optional bool scatter_enable_callout_line_undefined = 28; + optional .TSSSOS.SpecIntegerArchive stacked_area_enable_callout_line = 29; + optional bool stacked_area_enable_callout_line_undefined = 30; + optional .TSSSOS.SpecIntegerArchive stacked_bar_enable_callout_line = 31; + optional bool stacked_bar_enable_callout_line_undefined = 32; + optional .TSCHSOS.SpecChartErrorBarCustomDataArchive default_error_bar_custom_negative_data = 33; + optional bool default_error_bar_custom_negative_data_undefined = 34; + optional .TSCHSOS.SpecChartErrorBarCustomDataArchive default_error_bar_custom_negative_data_scatter_x = 35; + optional bool default_error_bar_custom_negative_data_scatter_x_undefined = 36; + optional .TSCHSOS.SpecChartErrorBarCustomDataArchive default_error_bar_custom_positive_data = 37; + optional bool default_error_bar_custom_positive_data_undefined = 38; + optional .TSCHSOS.SpecChartErrorBarCustomDataArchive default_error_bar_custom_positive_data_scatter_x = 39; + optional bool default_error_bar_custom_positive_data_scatter_x_undefined = 40; + optional .TSSSOS.SpecDoubleArchive default_error_bar_fixed_value = 41; + optional bool default_error_bar_fixed_value_undefined = 42; + optional .TSSSOS.SpecDoubleArchive default_error_bar_fixed_value_scatter_x = 43; + optional bool default_error_bar_fixed_value_scatter_x_undefined = 44; + optional .TSSSOS.SpecDoubleArchive default_error_bar_percent_value = 45; + optional bool default_error_bar_percent_value_undefined = 46; + optional .TSSSOS.SpecDoubleArchive default_error_bar_percent_value_scatter_x = 47; + optional bool default_error_bar_percent_value_scatter_x_undefined = 48; + optional .TSSSOS.SpecIntegerArchive default_error_bar_setting = 49; + optional bool default_error_bar_setting_undefined = 50; + optional .TSSSOS.SpecIntegerArchive default_error_bar_setting_scatter_x = 51; + optional bool default_error_bar_setting_scatter_x_undefined = 52; + optional .TSSSOS.SpecDoubleArchive default_error_bar_std_dev_value = 53; + optional bool default_error_bar_std_dev_value_undefined = 54; + optional .TSSSOS.SpecDoubleArchive default_error_bar_std_dev_value_scatter_x = 55; + optional bool default_error_bar_std_dev_value_scatter_x_undefined = 56; + optional .TSSSOS.SpecIntegerArchive default_error_bar_type = 57; + optional bool default_error_bar_type_undefined = 58; + optional .TSSSOS.SpecIntegerArchive default_error_bar_type_scatter_x = 59; + optional bool default_error_bar_type_scatter_x_undefined = 60; + optional .TSSSOS.SpecDoubleArchive pie_label_explosion = 61; + optional bool pie_label_explosion_undefined = 62; + optional .TSSSOS.SpecIntegerArchive bubble_line_type = 63; + optional bool bubble_line_type_undefined = 64; + optional .TSSSOS.SpecIntegerArchive line_line_type = 65; + optional bool line_line_type_undefined = 66; + optional .TSSSOS.SpecIntegerArchive mixed_line_line_type = 67; + optional bool mixed_line_line_type_undefined = 68; + optional .TSSSOS.SpecIntegerArchive radar_area_line_type = 69; + optional bool radar_area_line_type_undefined = 70; + optional .TSSSOS.SpecIntegerArchive scatter_line_type = 71; + optional bool scatter_line_type_undefined = 72; + optional .TSCHSOS.SpecNumberFormatArchive default_number_format = 73; + optional bool default_number_format_undefined = 74; + optional .TSCHSOS.SpecNumberFormatArchive pie_number_format = 75; + optional bool pie_number_format_undefined = 76; + optional .TSSSOS.SpecIntegerArchive default_number_format_type = 77; + optional bool default_number_format_type_undefined = 78; + optional .TSSSOS.SpecIntegerArchive pie_number_format_type = 79; + optional bool pie_number_format_type_undefined = 80; + optional .TSCHSOS.SpecNumberFormatArchive stacked_percent_number_format = 81; + optional bool stacked_percent_number_format_undefined = 82; + optional .TSSSOS.SpecIntegerArchive default_series_type = 83; + optional bool default_series_type_undefined = 84; + optional .TSSSOS.SpecBoolArchive default_show_error_bar = 85; + optional bool default_show_error_bar_undefined = 86; + optional .TSSSOS.SpecBoolArchive default_show_error_bar_scatter_x = 87; + optional bool default_show_error_bar_scatter_x_undefined = 88; + optional .TSSSOS.SpecBoolArchive bubble_show_labels_in_front = 89; + optional bool bubble_show_labels_in_front_undefined = 90; + optional .TSSSOS.SpecBoolArchive default_show_labels_in_front = 91; + optional bool default_show_labels_in_front_undefined = 92; + optional .TSSSOS.SpecBoolArchive scatter_show_line = 93; + optional bool scatter_show_line_undefined = 94; + optional .TSSSOS.SpecBoolArchive bubble_show_negative_data = 95; + optional bool bubble_show_negative_data_undefined = 96; + optional .TSSSOS.SpecBoolArchive bubble_show_series_labels = 97; + optional bool bubble_show_series_labels_undefined = 98; + optional .TSSSOS.SpecBoolArchive pie_show_series_labels = 99; + optional bool pie_show_series_labels_undefined = 100; + optional .TSSSOS.SpecBoolArchive scatter_show_series_labels = 101; + optional bool scatter_show_series_labels_undefined = 102; + optional .TSSSOS.SpecBoolArchive area_show_symbol = 103; + optional bool area_show_symbol_undefined = 104; + optional .TSSSOS.SpecBoolArchive line_show_symbol = 105; + optional bool line_show_symbol_undefined = 106; + optional .TSSSOS.SpecBoolArchive mixed_area_show_symbol = 107; + optional bool mixed_area_show_symbol_undefined = 108; + optional .TSSSOS.SpecBoolArchive mixed_line_show_symbol = 109; + optional bool mixed_line_show_symbol_undefined = 110; + optional .TSSSOS.SpecBoolArchive radar_area_show_symbol = 111; + optional bool radar_area_show_symbol_undefined = 112; + optional .TSSSOS.SpecBoolArchive scatter_show_symbol = 113; + optional bool scatter_show_symbol_undefined = 114; + optional .TSSSOS.SpecBoolArchive default_show_trend_line = 115; + optional bool default_show_trend_line_undefined = 116; + optional .TSSSOS.SpecBoolArchive area_show_value_labels = 117; + optional bool area_show_value_labels_undefined = 118; + optional .TSSSOS.SpecBoolArchive bar_show_value_labels = 119; + optional bool bar_show_value_labels_undefined = 120; + optional .TSSSOS.SpecBoolArchive bubble_show_value_labels = 121; + optional bool bubble_show_value_labels_undefined = 122; + optional .TSSSOS.SpecBoolArchive default_show_value_labels = 123; + optional bool default_show_value_labels_undefined = 124; + optional .TSSSOS.SpecBoolArchive line_show_value_labels = 125; + optional bool line_show_value_labels_undefined = 126; + optional .TSSSOS.SpecBoolArchive mixed_show_value_labels = 127; + optional bool mixed_show_value_labels_undefined = 128; + optional .TSSSOS.SpecBoolArchive pie_show_value_labels = 129; + optional bool pie_show_value_labels_undefined = 130; + optional .TSSSOS.SpecBoolArchive radar_show_value_labels = 131; + optional bool radar_show_value_labels_undefined = 132; + optional .TSSSOS.SpecBoolArchive scatter_show_value_labels = 133; + optional bool scatter_show_value_labels_undefined = 134; + optional .TSSSOS.SpecIntegerArchive bubble_size_dimension = 135; + optional bool bubble_size_dimension_undefined = 136; + optional .TSSSOS.SpecBoolArchive area_stack_labels = 137; + optional bool area_stack_labels_undefined = 138; + optional .TSSSOS.SpecBoolArchive bar_stack_labels = 139; + optional bool bar_stack_labels_undefined = 140; + optional .TSSSOS.SpecBoolArchive bubble_stack_labels = 141; + optional bool bubble_stack_labels_undefined = 142; + optional .TSSSOS.SpecBoolArchive default_stack_labels = 143; + optional bool default_stack_labels_undefined = 144; + optional .TSSSOS.SpecBoolArchive line_stack_labels = 145; + optional bool line_stack_labels_undefined = 146; + optional .TSSSOS.SpecBoolArchive pie_stack_labels = 147; + optional bool pie_stack_labels_undefined = 148; + optional .TSSSOS.SpecBoolArchive scatter_stack_labels = 149; + optional bool scatter_stack_labels_undefined = 150; + optional .TSSSOS.SpecBoolArchive stacked_area_stack_labels = 151; + optional bool stacked_area_stack_labels_undefined = 152; + optional .TSSSOS.SpecBoolArchive stacked_bar_stack_labels = 153; + optional bool stacked_bar_stack_labels_undefined = 154; + optional .TSSSOS.SpecIntegerArchive area_symbol_type = 155; + optional bool area_symbol_type_undefined = 156; + optional .TSSSOS.SpecIntegerArchive line_symbol_type = 157; + optional bool line_symbol_type_undefined = 158; + optional .TSSSOS.SpecIntegerArchive mixed_area_symbol_type = 159; + optional bool mixed_area_symbol_type_undefined = 160; + optional .TSSSOS.SpecIntegerArchive mixed_line_symbol_type = 161; + optional bool mixed_line_symbol_type_undefined = 162; + optional .TSSSOS.SpecIntegerArchive radar_area_symbol_type = 163; + optional bool radar_area_symbol_type_undefined = 164; + optional .TSSSOS.SpecIntegerArchive scatter_symbol_type = 165; + optional bool scatter_symbol_type_undefined = 166; + optional .TSSSOS.SpecDoubleArchive default_trend_line_equation_offset_x = 167; + optional bool default_trend_line_equation_offset_x_undefined = 168; + optional .TSSSOS.SpecDoubleArchive default_trend_line_equation_offset_y = 169; + optional bool default_trend_line_equation_offset_y_undefined = 170; + optional .TSSSOS.SpecStringArchive default_trend_line_label_string = 171; + optional bool default_trend_line_label_string_undefined = 172; + optional .TSSSOS.SpecIntegerArchive default_trend_line_order = 173; + optional bool default_trend_line_order_undefined = 174; + optional .TSSSOS.SpecIntegerArchive default_trend_line_period = 175; + optional bool default_trend_line_period_undefined = 176; + optional .TSSSOS.SpecDoubleArchive default_trend_line_r_squared_offset_x = 177; + optional bool default_trend_line_r_squared_offset_x_undefined = 178; + optional .TSSSOS.SpecDoubleArchive default_trend_line_r_squared_offset_y = 179; + optional bool default_trend_line_r_squared_offset_y_undefined = 180; + optional .TSSSOS.SpecBoolArchive default_trend_line_show_equation = 181; + optional bool default_trend_line_show_equation_undefined = 182; + optional .TSSSOS.SpecBoolArchive default_trend_line_show_label = 183; + optional bool default_trend_line_show_label_undefined = 184; + optional .TSSSOS.SpecBoolArchive default_trend_line_show_r2_value = 185; + optional bool default_trend_line_show_r2_value_undefined = 186; + optional .TSSSOS.SpecIntegerArchive default_trend_line_type = 187; + optional bool default_trend_line_type_undefined = 188; + optional .TSSSOS.SpecIntegerArchive bubble_value_labels_axis = 189; + optional bool bubble_value_labels_axis_undefined = 190; + optional .TSSSOS.SpecIntegerArchive scatter_value_labels_axis = 191; + optional bool scatter_value_labels_axis_undefined = 192; + optional .TSSSOS.SpecDoubleArchive pie_wedge_explosion = 193; + optional bool pie_wedge_explosion_undefined = 194; + optional .TSSSOS.SpecIntegerArchive default_y_axis_ordinal = 195; + optional bool default_y_axis_ordinal_undefined = 196; +} + +message .TSCHSOS.ChartSeriesStylePropertyChangeSetArchive { + optional .TSDSOS.SpecLineEndArchive default_callout_line_end_line_end = 1; + optional bool default_callout_line_end_line_end_undefined = 2; + optional .TSDSOS.SpecLineEndArchive default_callout_line_start_line_end = 3; + optional bool default_callout_line_start_line_end_undefined = 4; + optional .TSDSOS.SpecStrokeArchive default_callout_line_stroke_style = 5; + optional bool default_callout_line_stroke_style_undefined = 6; + optional .TSDSOS.SpecLineEndArchive default_error_bar_line_end = 7; + optional bool default_error_bar_line_end_undefined = 8; + optional .TSDSOS.SpecLineEndArchive default_error_bar_line_end_scatter_x = 9; + optional bool default_error_bar_line_end_scatter_x_undefined = 10; + optional .TSDSOS.SpecShadowArchive default_error_bar_shadow = 11; + optional bool default_error_bar_shadow_undefined = 12; + optional .TSSSOS.SpecIntegerArchive default_error_bar_spacing = 13; + optional bool default_error_bar_spacing_undefined = 14; + optional .TSSSOS.SpecIntegerArchive default_error_bar_spacing_scatter_x = 15; + optional bool default_error_bar_spacing_scatter_x_undefined = 16; + optional .TSDSOS.SpecStrokeArchive default_error_bar_stroke = 17; + optional bool default_error_bar_stroke_undefined = 18; + optional .TSDSOS.SpecStrokeArchive default_error_bar_stroke_scatter_x = 19; + optional bool default_error_bar_stroke_scatter_x_undefined = 20; + optional .TSDSOS.SpecFillArchive area3d_fill = 21; + optional bool area3d_fill_undefined = 22; + optional .TSDSOS.SpecFillArchive bar3d_fill = 23; + optional bool bar3d_fill_undefined = 24; + optional .TSDSOS.SpecFillArchive column3d_fill = 25; + optional bool column3d_fill_undefined = 26; + optional .TSDSOS.SpecFillArchive line3d_fill = 27; + optional bool line3d_fill_undefined = 28; + optional .TSDSOS.SpecFillArchive pie3d_fill = 29; + optional bool pie3d_fill_undefined = 30; + optional .TSDSOS.SpecFillArchive area_fill = 31; + optional bool area_fill_undefined = 32; + optional .TSDSOS.SpecFillArchive bar_fill = 33; + optional bool bar_fill_undefined = 34; + optional .TSDSOS.SpecFillArchive column_fill = 35; + optional bool column_fill_undefined = 36; + optional .TSDSOS.SpecFillArchive default_fill = 37; + optional bool default_fill_undefined = 38; + optional .TSDSOS.SpecFillArchive mixed_area_fill = 39; + optional bool mixed_area_fill_undefined = 40; + optional .TSDSOS.SpecFillArchive mixed_column_fill = 41; + optional bool mixed_column_fill_undefined = 42; + optional .TSDSOS.SpecFillArchive pie_fill = 43; + optional bool pie_fill_undefined = 44; + optional .TSDSOS.SpecFillArchive radar_area_fill = 45; + optional bool radar_area_fill_undefined = 46; + optional .TSSSOS.SpecDoubleArchive radar_area_fill_use_series_stroke_alpha_multiplier = 47; + optional bool radar_area_fill_use_series_stroke_alpha_multiplier_undefined = 48; + optional .TSSSOS.SpecBoolArchive radar_area_fill_use_series_stroke = 49; + optional bool radar_area_fill_use_series_stroke_undefined = 50; + optional .TSSSOS.SpecIntegerArchive area_label_paragraph_style_index = 51; + optional bool area_label_paragraph_style_index_undefined = 52; + optional .TSSSOS.SpecIntegerArchive bar_label_paragraph_style_index = 53; + optional bool bar_label_paragraph_style_index_undefined = 54; + optional .TSSSOS.SpecIntegerArchive default_label_paragraph_style_index = 55; + optional bool default_label_paragraph_style_index_undefined = 56; + optional .TSSSOS.SpecIntegerArchive donut_label_paragraph_style_index = 57; + optional bool donut_label_paragraph_style_index_undefined = 58; + optional .TSSSOS.SpecIntegerArchive line_label_paragraph_style_index = 59; + optional bool line_label_paragraph_style_index_undefined = 60; + optional .TSSSOS.SpecIntegerArchive mixed_label_paragraph_style_index = 61; + optional bool mixed_label_paragraph_style_index_undefined = 62; + optional .TSSSOS.SpecIntegerArchive pie_label_paragraph_style_index = 63; + optional bool pie_label_paragraph_style_index_undefined = 64; + optional .TSSSOS.SpecIntegerArchive radar_label_paragraph_style_index = 65; + optional bool radar_label_paragraph_style_index_undefined = 66; + optional .TSSSOS.SpecDoubleArchive default_opacity = 67; + optional bool default_opacity_undefined = 68; + optional .TSSSOS.SpecIntegerArchive area_outside_label_paragraph_style_index = 69; + optional bool area_outside_label_paragraph_style_index_undefined = 70; + optional .TSSSOS.SpecIntegerArchive bar_outside_label_paragraph_style_index = 71; + optional bool bar_outside_label_paragraph_style_index_undefined = 72; + optional .TSSSOS.SpecIntegerArchive default_outside_label_paragraph_style_index = 73; + optional bool default_outside_label_paragraph_style_index_undefined = 74; + optional .TSSSOS.SpecIntegerArchive donut_outside_label_paragraph_style_index = 75; + optional bool donut_outside_label_paragraph_style_index_undefined = 76; + optional .TSSSOS.SpecIntegerArchive mixed_outside_label_paragraph_style_index = 77; + optional bool mixed_outside_label_paragraph_style_index_undefined = 78; + optional .TSSSOS.SpecIntegerArchive pie_outside_label_paragraph_style_index = 79; + optional bool pie_outside_label_paragraph_style_index_undefined = 80; + optional .TSSSOS.SpecIntegerArchive radar_outside_label_paragraph_style_index = 81; + optional bool radar_outside_label_paragraph_style_index_undefined = 82; + optional .TSDSOS.SpecShadowArchive area3d_shadow = 83; + optional bool area3d_shadow_undefined = 84; + optional .TSDSOS.SpecShadowArchive bar3d_shadow = 85; + optional bool bar3d_shadow_undefined = 86; + optional .TSDSOS.SpecShadowArchive column3d_shadow = 87; + optional bool column3d_shadow_undefined = 88; + optional .TSDSOS.SpecShadowArchive line3d_shadow = 89; + optional bool line3d_shadow_undefined = 90; + optional .TSDSOS.SpecShadowArchive pie3d_shadow = 91; + optional bool pie3d_shadow_undefined = 92; + optional .TSDSOS.SpecShadowArchive area_shadow = 93; + optional bool area_shadow_undefined = 94; + optional .TSDSOS.SpecShadowArchive bar_shadow = 95; + optional bool bar_shadow_undefined = 96; + optional .TSDSOS.SpecShadowArchive bubble_shadow = 97; + optional bool bubble_shadow_undefined = 98; + optional .TSDSOS.SpecShadowArchive default_shadow = 99; + optional bool default_shadow_undefined = 100; + optional .TSDSOS.SpecShadowArchive line_shadow = 101; + optional bool line_shadow_undefined = 102; + optional .TSDSOS.SpecShadowArchive mixed_area_shadow = 103; + optional bool mixed_area_shadow_undefined = 104; + optional .TSDSOS.SpecShadowArchive mixed_column_shadow = 105; + optional bool mixed_column_shadow_undefined = 106; + optional .TSDSOS.SpecShadowArchive mixed_line_shadow = 107; + optional bool mixed_line_shadow_undefined = 108; + optional .TSDSOS.SpecShadowArchive pie_shadow = 109; + optional bool pie_shadow_undefined = 110; + optional .TSDSOS.SpecShadowArchive radar_area_shadow = 111; + optional bool radar_area_shadow_undefined = 112; + optional .TSDSOS.SpecShadowArchive scatter_shadow = 113; + optional bool scatter_shadow_undefined = 114; + optional .TSDSOS.SpecStrokeArchive area_stroke = 115; + optional bool area_stroke_undefined = 116; + optional .TSDSOS.SpecStrokeArchive bar_stroke = 117; + optional bool bar_stroke_undefined = 118; + optional .TSDSOS.SpecStrokeArchive bubble_stroke = 119; + optional bool bubble_stroke_undefined = 120; + optional .TSDSOS.SpecStrokeArchive line_stroke = 121; + optional bool line_stroke_undefined = 122; + optional .TSDSOS.SpecStrokeArchive mixed_area_stroke = 123; + optional bool mixed_area_stroke_undefined = 124; + optional .TSDSOS.SpecStrokeArchive mixed_column_stroke = 125; + optional bool mixed_column_stroke_undefined = 126; + optional .TSDSOS.SpecStrokeArchive mixed_line_stroke = 127; + optional bool mixed_line_stroke_undefined = 128; + optional .TSDSOS.SpecStrokeArchive pie_stroke = 129; + optional bool pie_stroke_undefined = 130; + optional .TSDSOS.SpecStrokeArchive radar_area_stroke = 131; + optional bool radar_area_stroke_undefined = 132; + optional .TSDSOS.SpecStrokeArchive scatter_stroke = 133; + optional bool scatter_stroke_undefined = 134; + optional .TSDSOS.SpecFillArchive area_symbol_fill = 135; + optional bool area_symbol_fill_undefined = 136; + optional .TSDSOS.SpecFillArchive bubble_symbol_fill = 137; + optional bool bubble_symbol_fill_undefined = 138; + optional .TSDSOS.SpecFillArchive line_symbol_fill = 139; + optional bool line_symbol_fill_undefined = 140; + optional .TSDSOS.SpecFillArchive mixed_area_symbol_fill = 141; + optional bool mixed_area_symbol_fill_undefined = 142; + optional .TSDSOS.SpecFillArchive mixed_line_symbol_fill = 143; + optional bool mixed_line_symbol_fill_undefined = 144; + optional .TSDSOS.SpecFillArchive radar_area_symbol_fill = 145; + optional bool radar_area_symbol_fill_undefined = 146; + optional .TSDSOS.SpecFillArchive scatter_symbol_fill = 147; + optional bool scatter_symbol_fill_undefined = 148; + optional .TSSSOS.SpecBoolArchive area_symbol_fill_use_series_fill = 149; + optional bool area_symbol_fill_use_series_fill_undefined = 150; + optional .TSSSOS.SpecBoolArchive line_symbol_fill_use_series_fill = 151; + optional bool line_symbol_fill_use_series_fill_undefined = 152; + optional .TSSSOS.SpecBoolArchive mixed_area_symbol_fill_use_series_fill = 153; + optional bool mixed_area_symbol_fill_use_series_fill_undefined = 154; + optional .TSSSOS.SpecBoolArchive mixed_line_symbol_fill_use_series_fill = 155; + optional bool mixed_line_symbol_fill_use_series_fill_undefined = 156; + optional .TSSSOS.SpecBoolArchive radar_area_symbol_fill_use_series_fill = 157; + optional bool radar_area_symbol_fill_use_series_fill_undefined = 158; + optional .TSSSOS.SpecBoolArchive area_symbol_fill_use_series_stroke = 159; + optional bool area_symbol_fill_use_series_stroke_undefined = 160; + optional .TSSSOS.SpecBoolArchive bubble_symbol_fill_use_series_stroke = 161; + optional bool bubble_symbol_fill_use_series_stroke_undefined = 162; + optional .TSSSOS.SpecBoolArchive line_symbol_fill_use_series_stroke = 163; + optional bool line_symbol_fill_use_series_stroke_undefined = 164; + optional .TSSSOS.SpecBoolArchive mixed_area_symbol_fill_use_series_stroke = 165; + optional bool mixed_area_symbol_fill_use_series_stroke_undefined = 166; + optional .TSSSOS.SpecBoolArchive mixed_line_symbol_fill_use_series_stroke = 167; + optional bool mixed_line_symbol_fill_use_series_stroke_undefined = 168; + optional .TSSSOS.SpecBoolArchive radar_area_symbol_fill_use_series_stroke = 169; + optional bool radar_area_symbol_fill_use_series_stroke_undefined = 170; + optional .TSSSOS.SpecBoolArchive scatter_symbol_fill_use_series_stroke = 171; + optional bool scatter_symbol_fill_use_series_stroke_undefined = 172; + optional .TSSSOS.SpecDoubleArchive area_symbol_size = 173; + optional bool area_symbol_size_undefined = 174; + optional .TSSSOS.SpecDoubleArchive line_symbol_size = 175; + optional bool line_symbol_size_undefined = 176; + optional .TSSSOS.SpecDoubleArchive mixed_area_symbol_size = 177; + optional bool mixed_area_symbol_size_undefined = 178; + optional .TSSSOS.SpecDoubleArchive mixed_line_symbol_size = 179; + optional bool mixed_line_symbol_size_undefined = 180; + optional .TSSSOS.SpecDoubleArchive radar_area_symbol_size = 181; + optional bool radar_area_symbol_size_undefined = 182; + optional .TSSSOS.SpecDoubleArchive scatter_symbol_size = 183; + optional bool scatter_symbol_size_undefined = 184; + optional .TSDSOS.SpecStrokeArchive area_symbol_stroke = 185; + optional bool area_symbol_stroke_undefined = 186; + optional .TSDSOS.SpecStrokeArchive bubble_symbol_stroke = 187; + optional bool bubble_symbol_stroke_undefined = 188; + optional .TSDSOS.SpecStrokeArchive line_symbol_stroke = 189; + optional bool line_symbol_stroke_undefined = 190; + optional .TSDSOS.SpecStrokeArchive mixed_area_symbol_stroke = 191; + optional bool mixed_area_symbol_stroke_undefined = 192; + optional .TSDSOS.SpecStrokeArchive mixed_line_symbol_stroke = 193; + optional bool mixed_line_symbol_stroke_undefined = 194; + optional .TSDSOS.SpecStrokeArchive radar_area_symbol_stroke = 195; + optional bool radar_area_symbol_stroke_undefined = 196; + optional .TSDSOS.SpecStrokeArchive scatter_symbol_stroke = 197; + optional bool scatter_symbol_stroke_undefined = 198; + optional .TSDSOS.SpecShadowArchive default_trend_line_shadow = 199; + optional bool default_trend_line_shadow_undefined = 200; + optional .TSDSOS.SpecStrokeArchive default_trend_line_stroke = 201; + optional bool default_trend_line_stroke_undefined = 202; + optional .TSSSOS.SpecDoubleArchive default_trendline_equation_opacity = 203; + optional bool default_trendline_equation_opacity_undefined = 204; + optional .TSSSOS.SpecIntegerArchive default_trendline_equation_paragraph_style_index = 205; + optional bool default_trendline_equation_paragraph_style_index_undefined = 206; + optional .TSSSOS.SpecDoubleArchive default_trendline_r_squared_opacity = 207; + optional bool default_trendline_r_squared_opacity_undefined = 208; + optional .TSSSOS.SpecIntegerArchive default_trendline_r_squared_paragraph_style_index = 209; + optional bool default_trendline_r_squared_paragraph_style_index_undefined = 210; + optional .TSSSOS.SpecIntegerArchive area_value_label_position = 211; + optional bool area_value_label_position_undefined = 212; + optional .TSSSOS.SpecIntegerArchive bar_value_label_position = 213; + optional bool bar_value_label_position_undefined = 214; + optional .TSSSOS.SpecIntegerArchive bubble_value_label_position = 215; + optional bool bubble_value_label_position_undefined = 216; + optional .TSSSOS.SpecIntegerArchive default_value_label_position = 217; + optional bool default_value_label_position_undefined = 218; + optional .TSSSOS.SpecIntegerArchive line_value_label_position = 219; + optional bool line_value_label_position_undefined = 220; + optional .TSSSOS.SpecIntegerArchive mixed_area_value_label_position = 221; + optional bool mixed_area_value_label_position_undefined = 222; + optional .TSSSOS.SpecIntegerArchive mixed_column_value_label_position = 223; + optional bool mixed_column_value_label_position_undefined = 224; + optional .TSSSOS.SpecIntegerArchive mixed_line_value_label_position = 225; + optional bool mixed_line_value_label_position_undefined = 226; + optional .TSSSOS.SpecIntegerArchive radar_area_value_label_position = 227; + optional bool radar_area_value_label_position_undefined = 228; + optional .TSSSOS.SpecIntegerArchive scatter_value_label_position = 229; + optional bool scatter_value_label_position_undefined = 230; + optional .TSSSOS.SpecIntegerArchive stacked_area_value_label_position = 231; + optional bool stacked_area_value_label_position_undefined = 232; + optional .TSSSOS.SpecIntegerArchive stacked_bar_value_label_position = 233; + optional bool stacked_bar_value_label_position_undefined = 234; + optional .TSSSOS.SpecIntegerArchive default_value_label_spacing = 235; + optional bool default_value_label_spacing_undefined = 236; +} + +message .TSCHSOS.ChartStylePropertyChangeSetArchive { + optional .TSSSOS.SpecDoubleArchive default3d_chart_opacity = 1; + optional bool default3d_chart_opacity_undefined = 2; + optional .TSCHSOS.SpecChart3dLightingPackageArchive area3d_lighting_package = 3; + optional bool area3d_lighting_package_undefined = 4; + optional .TSCHSOS.SpecChart3dLightingPackageArchive bar3d_lighting_package = 5; + optional bool bar3d_lighting_package_undefined = 6; + optional .TSCHSOS.SpecChart3dLightingPackageArchive column3d_lighting_package = 7; + optional bool column3d_lighting_package_undefined = 8; + optional .TSCHSOS.SpecChart3dLightingPackageArchive default3d_lighting_package = 9; + optional bool default3d_lighting_package_undefined = 10; + optional .TSCHSOS.SpecChart3dLightingPackageArchive line3d_lighting_package = 11; + optional bool line3d_lighting_package_undefined = 12; + optional .TSCHSOS.SpecChart3dLightingPackageArchive pie3d_lighting_package = 13; + optional bool pie3d_lighting_package_undefined = 14; + optional .TSSSOS.SpecBoolArchive default_axis_anchor_label_at_ends = 15; + optional bool default_axis_anchor_label_at_ends_undefined = 16; + optional .TSDSOS.SpecFillArchive default_background_fill = 17; + optional bool default_background_fill_undefined = 18; + optional .TSDSOS.SpecStrokeArchive default_background_stroke = 19; + optional bool default_background_stroke_undefined = 20; + optional .TSSSOS.SpecDoubleArchive default_border_opacity = 21; + optional bool default_border_opacity_undefined = 22; + optional .TSDSOS.SpecShadowArchive default_border_shadow = 23; + optional bool default_border_shadow_undefined = 24; + optional .TSDSOS.SpecStrokeArchive default_border_stroke = 25; + optional bool default_border_stroke_undefined = 26; + optional .TSSSOS.SpecBoolArchive default_combine_layers = 27; + optional bool default_combine_layers_undefined = 28; + optional .TSSSOS.SpecIntegerArchive default_data_set_name_paragraph_style_index = 29; + optional bool default_data_set_name_paragraph_style_index_undefined = 30; + optional .TSDSOS.SpecFillArchive default_grid_background_fill = 31; + optional bool default_grid_background_fill_undefined = 32; + optional .TSSSOS.SpecDoubleArchive default_grid_background_opacity = 33; + optional bool default_grid_background_opacity_undefined = 34; + optional .TSSSOS.SpecDoubleArchive default_inter_bar_gap = 35; + optional bool default_inter_bar_gap_undefined = 36; + optional .TSSSOS.SpecDoubleArchive default_inter_set_gap = 37; + optional bool default_inter_set_gap_undefined = 38; + optional .TSSSOS.SpecBoolArchive default_radar_radius_gridline_curve = 39; + optional bool default_radar_radius_gridline_curve_undefined = 40; + optional .TSSSOS.SpecBoolArchive default_rounded_corner_outer_end_only = 41; + optional bool default_rounded_corner_outer_end_only_undefined = 42; + optional .TSSSOS.SpecDoubleArchive default_rounded_corner_radius = 43; + optional bool default_rounded_corner_radius_undefined = 44; + optional .TSSSOS.SpecBoolArchive default_show_border = 45; + optional bool default_show_border_undefined = 46; + optional .TSSSOS.SpecColorArchive default_title_color = 47; + optional bool default_title_color_undefined = 48; + optional .TSSSOS.SpecIntegerArchive default_title_paragraph_style_index = 49; + optional bool default_title_paragraph_style_index_undefined = 50; +} + + +message .TSCH.PreUFF.ChartInfoArchive { + required .TSD.DrawableArchive super = 1; + required .TSCH.PreUFF.ChartModelArchive chart_model = 2; + optional .TSP.Reference style = 3; + required .TSCH.ChartType chart_type = 4; + optional .TSCH.PreUFF.LegendModelArchive legend_model = 5; + required .TSCH.RectArchive inner_chart_frame = 6; + repeated .TSP.Reference value_axis_styles = 7; + repeated .TSP.Reference category_axis_styles = 8; + repeated .TSP.Reference value_axis_nonstyles = 9; + repeated .TSP.Reference category_axis_nonstyles = 10; + repeated .TSP.Reference series_theme_styles = 11; + optional .TSP.SparseReferenceArray series_private_styles = 12; + optional .TSP.SparseReferenceArray series_non_styles = 13; + optional .TSP.Reference non_style = 14; + optional .TSP.Reference mediator = 15; + optional .TSP.Point cde_preview_origin = 16; + optional .TSP.Reference chart_style_preset = 17; + repeated .TSP.Reference paragraph_styles = 18; + optional int32 last_row_sected_in_the_cde = 19; + optional int32 last_column_sected_in_the_cde = 20; + optional int32 chart_style_preset_index = 21; + optional bool needs_calc_engine_deferred_import_action = 22; +} + +message .TSCH.PreUFF.LegendModelArchive { + optional .TSP.Reference info = 1; + required .TSCH.RectArchive frame = 2; + required .TSP.Reference style = 3; + required .TSP.Reference non_style = 4; +} + +message .TSCH.PreUFF.ChartModelArchive { + optional .TSP.Reference info = 1; + required .TSP.Reference grid = 2; + repeated uint32 series_types = 3; + optional uint32 scatter_format = 4; + optional .TSCH.PreUFF.ChartGridArchive inline_grid = 5; + optional uint32 multidataset_index = 6; +} + +message .TSCH.PreUFF.ChartGridArchive { + message ValueRow { + repeated double value = 1; + } + required int32 direction = 1; + repeated string row_name = 2; + repeated string column_name = 3; + repeated .TSCH.PreUFF.ChartGridArchive.ValueRow value_row = 4; + required bool dirty = 6; +} + +message .TSCH.PreUFF.ChartsNumberFormatArchive { + required .TSCH.NumberValueType value_type = 1; + optional string format_string = 2; + required uint32 decimal_places = 3; + optional string currency_code = 4; + required .TSCH.NegativeNumberStyle negative_style = 5; + required bool show_thousands_separator = 6; + required .TSCH.FractionAccuracy fraction_accuracy = 7; + optional string suffix_string = 8; + required uint32 base = 9; + required uint32 base_places = 10; + required bool base_use_minus_sign = 11; + required bool use_accounting_style = 12; + required bool is_custom = 13; + required double scale_factor = 14; + repeated string interstitial_strings = 15; + required .TSP.IndexSet interstitial_string_insertion_indexes = 16; + required uint32 index_from_right_of_last_digit_placeholder = 17; + required bool is_text_format = 18; + required uint32 minimum_integer_width = 19; + required uint32 decimal_width = 20; + required uint32 number_of_non_space_integer_placeholder_digits = 21; + required uint32 number_of_non_space_decimal_placeholder_digits = 22; + optional string format_name = 23; + optional string prefix_string = 24; +} + +message .TSCH.PreUFF.ChartStyleArchive { + required .TSS.StyleArchive super = 1; + optional .TSD.FillArchive tschchartinfodefaultbackgroundfill = 10; + optional .TSD.StrokeArchive tschchartinfodefaultbackgroundstroke = 11; + optional .TSD.FillArchive tschchartinfodefaultgridbackgroundfill = 12; + optional float tschchartinfodefaultintersetgap = 13; + optional float tschchartinfodefaultinterbargap = 14; + optional bool tschchartinfodefaultshowborder = 15; + optional .TSD.StrokeArchive tschchartinfodefaultborderstroke = 16; + optional .TSP.Color tschchartinfodefaulttitlecolor = 18; + optional float tschchartinfodefaultgridbackgroundopacity = 19; + optional bool tschchartinfodefaultcombinelayers = 20; + optional .TSD.ShadowArchive tschchartinfodefaultbordershadow = 21; + optional float tschchartinfodefaultborderopacity = 22; + optional int32 tschchartinfodefaulttitleparagraphstyleindex = 23; + optional string tschchartinfodefaultdeprecatedmainfontfamily = 24; + optional int32 tschchartinfodefaultdeprecatedmainfontnamedsize = 25; + optional int32 tschchartinfodefaultdeprecatedtrendlineequationparagraphstyleindex = 30; + optional int32 tschchartinfodefaultdeprecatedtrendlinersquaredparagraphstyleindex = 31; + optional .TSD.ShadowArchive tschchartinfodefaultdeprecatedtrendlineequationshadow = 32; + optional .TSD.ShadowArchive tschchartinfodefaultdeprecatedtrendlinersquaredshadow = 33; + optional float tschchartinfodefaultdeprecatedtrendlineequationopacity = 34; + optional float tschchartinfodefaultdeprecatedtrendlinersquaredopacity = 35; + optional .TSD.ShadowArchive tschchartinfobardeprecated3dshadow = 308; + optional .TSD.ShadowArchive tschchartinfocolumndeprecated3dshadow = 309; + optional .TSD.ShadowArchive tschchartinfolinedeprecated3dshadow = 310; + optional .TSD.ShadowArchive tschchartinfoareadeprecated3dshadow = 311; + optional .TSD.ShadowArchive tschchartinfopiedeprecated3dshadow = 312; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfodefault3dlightingpackage = 313; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfocolumn3dlightingpackage = 314; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfobar3dlightingpackage = 315; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfoline3dlightingpackage = 316; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfoarea3dlightingpackage = 317; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfopie3dlightingpackage = 318; + optional bool tschchartinfodefaultdeprecated3dbeveledges = 326; + optional bool tschchartinfopiedeprecated3dbeveledges = 327; + optional bool tschchartinfobardeprecated3dbeveledges = 328; + optional bool tschchartinfocolumndeprecated3dbeveledges = 329; + optional int32 tschchartinfodefaultdeprecated3dbarshape = 330; + optional float tschchartinfodefault3dchartopacity = 335; +} + +message .TSCH.PreUFF.ChartNonStyleArchive { + required .TSS.StyleArchive super = 1; + optional string tschchartinfodefaulttitle = 10; + optional bool tschchartinfodefaultshowlegend = 11; + optional float tschchartinfodefaultpiestartangle = 12; + optional bool tschchartinfodefaultshowtitle = 13; + optional int32 tschchartinfodefaultdeprecatedagainmainfontnamedsize = 25; + optional .TSCH.Chart3DVectorArchive tschchartinfodefault3drotation = 300; + optional .TSCH.Chart3DVectorArchive tschchartinfodefault3dscale = 301; + optional .TSCH.Chart3DVectorArchive tschchartinfocolumn3dscale = 302; + optional .TSCH.Chart3DVectorArchive tschchartinfobar3dscale = 303; + optional .TSCH.Chart3DVectorArchive tschchartinfoline3dscale = 304; + optional .TSCH.Chart3DVectorArchive tschchartinfoarea3dscale = 305; + optional .TSCH.Chart3DVectorArchive tschchartinfopie3dscale = 306; + optional .TSCH.Chart3DVectorArchive tschchartinfodefault3dviewport = 313; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfodefaultdeprecated3dlightingpackage = 320; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfocolumndeprecated3dlightingpackage = 321; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfobardeprecated3dlightingpackage = 322; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfolinedeprecated3dlightingpackage = 323; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfoareadeprecated3dlightingpackage = 324; + optional .TSCH.Chart3DLightingPackageArchive tschchartinfopiedeprecated3dlightingpackage = 325; + optional bool tschchartinfodefaultskiphiddendata = 326; + optional bool tschchartinfodefault3dbeveledges = 327; + optional int32 tschchartinfodefault3dbarshape = 336; + optional float tschchartinfodefault3dintersetdepthgap = 331; +} + +message .TSCH.PreUFF.LegendStyleArchive { + required .TSS.StyleArchive super = 1; + optional .TSD.FillArchive tschlegendmodeldefaultfill = 10; + optional .TSD.StrokeArchive tschlegendmodeldefaultstroke = 11; + optional .TSD.ShadowArchive tschlegendmodeldefaultshadow = 14; + optional float tschlegendmodeldefaultopacity = 15; + optional int32 tschlegendmodeldefaultlabelparagraphstyleindex = 16; +} + +message .TSCH.PreUFF.LegendNonStyleArchive { + required .TSS.StyleArchive super = 1; +} + +message .TSCH.PreUFF.ChartAxisStyleArchive { + required .TSS.StyleArchive super = 1; + optional bool tschchartaxisvalueshowmajorgridlines = 10; + optional bool tschchartaxisvalueshowminorgridlines = 11; + optional .TSD.StrokeArchive tschchartaxisvaluemajorgridlinestroke = 12; + optional .TSD.StrokeArchive tschchartaxisvalueminorgridlinestroke = 13; + optional int32 tschchartaxisvaluetickmarklocation = 14; + optional bool tschchartaxisvalueshowmajortickmarks = 15; + optional bool tschchartaxisvalueshowminortickmarks = 16; + optional float tschchartaxisvaluelabelsorientation = 17; + optional bool tschchartaxisvalueshowminimumlabel = 18; + optional .TSD.ShadowArchive tschchartaxisvaluemajorgridlineshadow = 21; + optional .TSD.ShadowArchive tschchartaxisvalueminorgridlineshadow = 22; + optional float tschchartaxisvaluemajorgridlineopacity = 23; + optional float tschchartaxisvalueminorgridlineopacity = 24; + optional bool tschchartaxisvalueshowaxis = 25; + optional bool tschchartaxiscategoryshowmajorgridlines = 50; + optional bool tschchartaxiscategoryshowminorgridlines = 51; + optional .TSD.StrokeArchive tschchartaxiscategorymajorgridlinestroke = 52; + optional .TSD.StrokeArchive tschchartaxiscategoryminorgridlinestroke = 53; + optional int32 tschchartaxiscategorytickmarklocation = 54; + optional bool tschchartaxiscategoryshowmajortickmarks = 55; + optional bool tschchartaxiscategoryshowminortickmarks = 56; + optional float tschchartaxiscategorylabelsorientation = 57; + optional int32 tschchartaxiscategoryhorizontalspacing = 58; + optional int32 tschchartaxiscategoryverticalspacing = 59; + optional bool tschchartaxiscategoryshowlastlabel = 60; + optional .TSD.ShadowArchive tschchartaxiscategorymajorgridlineshadow = 63; + optional .TSD.ShadowArchive tschchartaxiscategoryminorgridlineshadow = 64; + optional float tschchartaxiscategorymajorgridlineopacity = 65; + optional float tschchartaxiscategoryminorgridlineopacity = 66; + optional bool tschchartaxiscategoryshowaxis = 67; + optional float tschchartaxisdefaultlabelsorientation = 102; + optional int32 tschchartaxisdefaulttitleparagraphstyleindex = 110; + optional int32 tschchartaxisdefaultlabelparagraphstyleindex = 111; + optional int32 tschchartaxisvaluetitleparagraphstyleindex = 112; + optional int32 tschchartaxisvaluelabelparagraphstyleindex = 113; + optional int32 tschchartaxiscategorytitleparagraphstyleindex = 114; + optional int32 tschchartaxiscategorylabelparagraphstyleindex = 115; + optional .TSD.StrokeArchive tschchartaxisvalue3dgridlinestroke = 331; + optional .TSD.StrokeArchive tschchartaxiscategory3dgridlinestroke = 332; + optional float tschchartaxisvalue3dgridlineopacity = 333; + optional float tschchartaxiscategory3dgridlineopacity = 334; +} + +message .TSCH.PreUFF.ChartAxisNonStyleArchive { + required .TSS.StyleArchive super = 1; + optional .TSCH.ChartsNSNumberDoubleArchive tschchartaxisdefaultusermin = 11; + optional .TSCH.ChartsNSNumberDoubleArchive tschchartaxisdefaultusermax = 12; + optional .TSCH.PreUFF.ChartsNumberFormatArchive tschchartaxisdefaultnumberformat = 13; + optional bool tschchartaxisdefaultshowlabels = 14; + optional int32 tschchartaxisvaluenumberofminorgridlines = 50; + optional int32 tschchartaxisvaluescale = 51; + optional int32 tschchartaxisvaluenumberofdecades = 52; + optional bool tschchartaxisvalueshowlabels = 53; + optional bool tschchartaxisvalueshowtitle = 54; + optional int32 tschchartaxisvaluenumberofmajorgridlines = 55; + optional string tschchartaxisvaluetitle = 56; + optional bool tschchartaxiscategoryshowlabels = 100; + optional bool tschchartaxiscategoryshowserieslabels = 101; + optional bool tschchartaxiscategoryshowtitle = 102; + optional string tschchartaxiscategorytitle = 103; + optional int32 tschchartaxisdefaultnumberformattype = 120; + optional int32 tschchartaxisdefault3dlabelposition = 336; + optional bool tschchartaxiscategoryplottoedges = 116; +} + +message .TSCH.PreUFF.ChartSeriesStyleArchive { + required .TSS.StyleArchive super = 1; + optional int32 tschchartseriesdefaulttrendlineequationparagraphstyleindex = 201; + optional int32 tschchartseriesdefaulttrendlinersquaredparagraphstyleindex = 202; + optional float tschchartseriesdefaulttrendlineequationopacity = 205; + optional float tschchartseriesdefaulttrendlinersquaredopacity = 206; + optional .TSD.FillArchive tschchartseriesbarfill = 10; + optional .TSD.StrokeArchive tschchartseriesbarstroke = 11; + optional int32 tschchartseriesbarvaluelabelposition = 13; + optional .TSD.StrokeArchive tschchartserieslinestroke = 16; + optional .TSD.FillArchive tschchartserieslinesymbolfill = 17; + optional .TSD.StrokeArchive tschchartserieslinesymbolstroke = 18; + optional float tschchartserieslinesymbolsize = 20; + optional int32 tschchartserieslinevaluelabelposition = 22; + optional .TSD.FillArchive tschchartseriesareafill = 25; + optional .TSD.StrokeArchive tschchartseriesareastroke = 26; + optional int32 tschchartseriesareavaluelabelposition = 28; + optional .TSD.FillArchive tschchartseriesareasymbolfill = 29; + optional .TSD.StrokeArchive tschchartseriesareasymbolstroke = 30; + optional float tschchartseriesareasymbolsize = 32; + optional .TSD.FillArchive tschchartseriespiefill = 35; + optional .TSD.StrokeArchive tschchartseriespiestroke = 36; + optional .TSD.StrokeArchive tschchartseriesscatterstroke = 40; + optional .TSD.FillArchive tschchartseriesscattersymbolfill = 41; + optional .TSD.StrokeArchive tschchartseriesscattersymbolstroke = 42; + optional float tschchartseriesscattersymbolsize = 44; + optional int32 tschchartseriesscattervaluelabelposition = 46; + optional .TSD.FillArchive tschchartseriesdefaultfill = 50; + optional int32 tschchartseriesdefaultvaluelabelposition = 52; + optional bool tschchartseriespiedeprecatedserieslabelson = 60; + optional .TSD.FillArchive tschchartseriescolumnfill = 62; + optional .TSD.ShadowArchive tschchartseriespieshadow = 100; + optional .TSD.ShadowArchive tschchartseriesbarshadow = 101; + optional .TSD.ShadowArchive tschchartseriesareashadow = 102; + optional .TSD.ShadowArchive tschchartseriesscattershadow = 103; + optional .TSD.ShadowArchive tschchartseriesmixedlineshadow = 104; + optional .TSD.ShadowArchive tschchartseriesmixedareashadow = 105; + optional .TSD.ShadowArchive tschchartseriesmixedcolumnshadow = 106; + optional .TSD.ShadowArchive tschchartserieslineshadow = 107; + optional .TSD.ShadowArchive tschchartseriesdefaultshadow = 108; + optional .TSD.FillArchive tschchartseriesbubblesymbolfill = 207; + optional .TSD.StrokeArchive tschchartseriesbubblestroke = 211; + optional .TSD.StrokeArchive tschchartseriesbubblesymbolstroke = 212; + optional int32 tschchartseriesbubblevaluelabelposition = 213; + optional .TSD.ShadowArchive tschchartseriesbubbleshadow = 214; + optional bool tschchartseriesbubblesymbolfilluseseriesstroke = 215; + optional .TSD.ShadowArchive tschchartseries3dbarshadow = 306; + optional .TSD.ShadowArchive tschchartseries3dcolumnshadow = 307; + optional .TSD.ShadowArchive tschchartseries3dlineshadow = 308; + optional .TSD.ShadowArchive tschchartseries3dareashadow = 309; + optional .TSD.ShadowArchive tschchartseries3dpieshadow = 310; + optional int32 tschchartseriesdefaultlabelparagraphstyleindex = 110; + optional int32 tschchartseriesbarlabelparagraphstyleindex = 111; + optional int32 tschchartserieslinelabelparagraphstyleindex = 112; + optional int32 tschchartseriesarealabelparagraphstyleindex = 113; + optional int32 tschchartseriespielabelparagraphstyleindex = 114; + optional int32 tschchartseriesmixedlabelparagraphstyleindex = 115; + optional float tschchartseriesdefaultopacity = 116; + optional bool tschchartserieslinesymbolfilluseseriesstroke = 117; + optional bool tschchartseriesareasymbolfilluseseriesstroke = 118; + optional bool tschchartseriesscattersymbolfilluseseriesstroke = 119; + optional bool tschchartseriesmixedlinesymbolfilluseseriesstroke = 120; + optional bool tschchartseriesmixedareasymbolfilluseseriesstroke = 121; + optional bool tschchartserieslinesymbolfilluseseriesfill = 122; + optional bool tschchartseriesareasymbolfilluseseriesfill = 123; + optional bool tschchartseriesmixedlinesymbolfilluseseriesfill = 124; + optional bool tschchartseriesmixedareasymbolfilluseseriesfill = 125; + optional .TSD.FillArchive tschchartseriesmixedcolumnfill = 130; + optional .TSD.FillArchive tschchartseriesmixedareafill = 131; + optional .TSD.StrokeArchive tschchartseriesmixedcolumnstroke = 132; + optional .TSD.StrokeArchive tschchartseriesmixedlinestroke = 133; + optional .TSD.StrokeArchive tschchartseriesmixedareastroke = 134; + optional float tschchartseriesmixedlinesymbolsize = 135; + optional float tschchartseriesmixedareasymbolsize = 136; + optional .TSD.FillArchive tschchartseriesmixedlinesymbolfill = 137; + optional .TSD.FillArchive tschchartseriesmixedareasymbolfill = 138; + optional .TSD.StrokeArchive tschchartseriesmixedlinesymbolstroke = 139; + optional .TSD.StrokeArchive tschchartseriesmixedareasymbolstroke = 140; + optional int32 tschchartseriesmixedcolumnvaluelabelposition = 141; + optional int32 tschchartseriesmixedlinevaluelabelposition = 142; + optional int32 tschchartseriesmixedareavaluelabelposition = 143; + optional int32 tschchartseriesdefaultoutsidelabelparagraphstyleindex = 150; + optional int32 tschchartseriesbaroutsidelabelparagraphstyleindex = 151; + optional int32 tschchartseriesareaoutsidelabelparagraphstyleindex = 153; + optional int32 tschchartseriespieoutsidelabelparagraphstyleindex = 154; + optional int32 tschchartseriesmixedoutsidelabelparagraphstyleindex = 155; + optional int32 tschchartseriesstackedbarvaluelabelposition = 156; + optional int32 tschchartseriesstackedareavaluelabelposition = 157; + optional .TSD.StrokeArchive tschchartseriesdefaulttrendlinestroke = 167; + optional .TSD.ShadowArchive tschchartseriesdefaulttrendlineshadow = 168; + optional .TSD.ShadowArchive tschchartseriesdefaulterrorbarshadow = 180; + optional .TSD.StrokeArchive tschchartseriesdefaulterrorbarstroke = 181; + optional .TSD.StrokeArchive tschchartseriesdefaulterrorbarstrokescatterx = 182; + optional .TSD.LineEndArchive tschchartseriesdefaulterrorbarlineend = 183; + optional .TSD.LineEndArchive tschchartseriesdefaulterrorbarlineendscatterx = 184; + optional .TSCH.DEPRECATEDChart3DFillArchive tschchartseriesdefaultdeprecated3dfill = 300; + optional .TSCH.DEPRECATEDChart3DFillArchive tschchartseriesbardeprecated3dfill = 301; + optional .TSCH.DEPRECATEDChart3DFillArchive tschchartseriescolumndeprecated3dfill = 302; + optional .TSCH.DEPRECATEDChart3DFillArchive tschchartserieslinedeprecated3dfill = 303; + optional .TSCH.DEPRECATEDChart3DFillArchive tschchartseriesareadeprecated3dfill = 304; + optional .TSCH.DEPRECATEDChart3DFillArchive tschchartseriespiedeprecated3dfill = 305; + optional .TSD.FillArchive tschchartseries3dbarfill = 320; + optional .TSD.FillArchive tschchartseries3dcolumnfill = 321; + optional .TSD.FillArchive tschchartseries3dlinefill = 322; + optional .TSD.FillArchive tschchartseries3dareafill = 323; + optional .TSD.FillArchive tschchartseries3dpiefill = 324; +} + +message .TSCH.PreUFF.ChartSeriesNonStyleArchive { + required .TSS.StyleArchive super = 1; + optional .TSCH.PreUFF.ChartsNumberFormatArchive tschchartseriesdefaultnumberformat = 10; + optional int32 tschchartseriesdefaultnumberformattype = 11; + optional bool tschchartseriesbarshowvaluelabels = 12; + optional int32 tschchartserieslinesymboltype = 19; + optional bool tschchartserieslineshowsymbol = 20; + optional bool tschchartserieslineshowvaluelabels = 21; + optional bool tschchartseriesareashowvaluelabels = 27; + optional int32 tschchartserieslinelinetype = 30; + optional int32 tschchartseriesareasymboltype = 31; + optional bool tschchartseriesareashowsymbol = 32; + optional bool tschchartseriespieshowvaluelabels = 37; + optional bool tschchartseriesscattershowvaluelabels = 45; + optional float tschchartseriespiewedgeexplosion = 50; + optional bool tschchartseriesdefaultshowvaluelabels = 51; + optional .TSCH.PreUFF.ChartsNumberFormatArchive tschchartseriespienumberformat = 52; + optional int32 tschchartseriespienumberformattype = 53; + optional float tschchartseriespielabelexplosion = 54; + optional bool tschchartseriesmixedlineshowsymbol = 58; + optional bool tschchartseriesmixedareashowsymbol = 59; + optional int32 tschchartseriesmixedlinesymboltype = 60; + optional int32 tschchartseriesmixedareasymboltype = 61; + optional bool tschchartseriesmixedshowvaluelabels = 62; + optional int32 tschchartseriesmixedlinelinetype = 63; + optional int32 tschchartseriesdefaultyaxisordinal = 65; + optional bool tschchartseriespieshowserieslabels = 66; + optional bool tschchartseriesscattershowsymbol = 69; + optional int32 tschchartseriesscattersymboltype = 70; + optional int32 tschchartseriesscatterlinetype = 71; + optional bool tschchartseriesscattershowline = 72; + optional .TSCH.PreUFF.ChartsNumberFormatArchive tschchartseriesstackedpercentnumberformat = 90; + optional int32 tschchartseriesdefaultseriestype = 126; + optional int32 tschchartseriesdefaulttrendlinetype = 160; + optional int32 tschchartseriesdefaulttrendlineorder = 161; + optional int32 tschchartseriesdefaulttrendlineperiod = 162; + optional bool tschchartseriesdefaulttrendlineshowlabel = 163; + optional string tschchartseriesdefaulttrendlinelabelstring = 164; + optional bool tschchartseriesdefaulttrendlineshowequation = 165; + optional bool tschchartseriesdefaulttrendlineshowr2value = 166; + optional int32 tschchartseriesdefaulterrorbarsetting = 170; + optional int32 tschchartseriesdefaulterrorbarsettingscatterx = 171; + optional int32 tschchartseriesdefaulterrorbartype = 172; + optional int32 tschchartseriesdefaulterrorbartypescatterx = 173; + optional float tschchartseriesdefaulterrorbarfixedvalue = 174; + optional float tschchartseriesdefaulterrorbarfixedvaluescatterx = 175; + optional float tschchartseriesdefaulterrorbarpercentvalue = 176; + optional float tschchartseriesdefaulterrorbarpercentvaluescatterx = 177; + optional float tschchartseriesdefaulterrorbarstddevvalue = 178; + optional float tschchartseriesdefaulterrorbarstddevvaluescatterx = 179; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustompositivedata = 190; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustompositivedatascatterx = 191; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustomnegativedata = 192; + optional .TSCH.ChartsNSArrayOfNSNumberDoubleArchive tschchartseriesdefaulterrorbarcustomnegativedatascatterx = 193; + optional float tschchartseriesdefaulttrendlineequationoffsetx = 194; + optional float tschchartseriesdefaulttrendlineequationoffsety = 195; + optional float tschchartseriesdefaulttrendlinersquaredoffsetx = 196; + optional float tschchartseriesdefaulttrendlinersquaredoffsety = 197; + optional bool tschchartseriesdefaultshowtrendline = 198; + optional bool tschchartseriesdefaultshowerrorbar = 199; + optional bool tschchartseriesdefaultshowerrorbarscatterx = 200; + optional int32 tschchartseriesbubblesizedimension = 208; + optional bool tschchartseriesbubbleshowvaluelabels = 209; + optional int32 tschchartseriesbubblelinetype = 210; + optional bool tschchartseriesbubbleshownegativedata = 216; + optional float tschchartseriesbubbleadjustmentscale = 217; +} + + +message .TSCH.ChartDrawableArchive { + optional .TSD.DrawableArchive super = 1; + extensions 10000 to 536870911; +} + +message .TSCH.ChartArchive { + optional .TSCH.ChartType chart_type = 1; + optional .TSCH.ScatterFormat scatter_format = 2; + optional .TSCH.RectArchive legend_frame = 3; + optional .TSP.Reference preset = 4; + optional .TSCH.SeriesDirection series_direction = 5; + optional bool contains_default_data = 6; + optional .TSCH.ChartGridArchive grid = 7; + optional .TSP.Reference mediator = 8; + optional .TSP.Reference chart_style = 9; + optional .TSP.Reference chart_non_style = 10; + optional .TSP.Reference legend_style = 11; + optional .TSP.Reference legend_non_style = 12; + repeated .TSP.Reference value_axis_styles = 13; + repeated .TSP.Reference value_axis_nonstyles = 14; + repeated .TSP.Reference category_axis_styles = 15; + repeated .TSP.Reference category_axis_nonstyles = 16; + repeated .TSP.Reference series_theme_styles = 17; + optional .TSP.SparseReferenceArray series_private_styles = 18; + optional .TSP.SparseReferenceArray series_non_styles = 19; + repeated .TSP.Reference paragraph_styles = 20; + optional uint32 multidataset_index = 21; + optional bool needs_calc_engine_deferred_import_action = 22; + optional .TSP.Reference owned_preset = 23; + optional bool is_dirty = 24; + extensions 10000 to 536870911; + extend .TSCH.ChartDrawableArchive { + optional .TSCH.ChartArchive unity = 10000; + } +} + +message .TSCH.ChartMultiDataIndexUpgrade { + extend .TSCH.ChartArchive { + optional bool upgraded_to_ui_state = 10021; + } +} + +message .TSCH.ChartGarlicMinMaxUpgrade { + optional double horizontal_min = 1; + optional double horizontal_max = 2; + optional double value_min = 3; + optional double value_max = 4; + extend .TSCH.ChartArchive { + optional .TSCH.ChartGarlicMinMaxUpgrade garlic_min_max_upgrade = 10010; + } +} + +message .TSCH.ChartGarlicLabelFormatUpgrade { + optional string value_prefix = 1; + optional string value_suffix = 2; + optional bool value_use_separator = 3; + optional string horizontal_prefix = 4; + optional string horizontal_suffix = 5; + optional bool horizontal_use_separator = 6; + extend .TSCH.ChartArchive { + optional .TSCH.ChartGarlicLabelFormatUpgrade garlic_label_format_upgrade = 10011; + } +} + +message .TSCH.ChartPasteboardAdditionsArchive { + extend .TSCH.ChartArchive { + optional uint32 preset_index_for_pasteboard = 10000; + optional bytes preset_uuid_for_pasteboard = 10001; + optional .TSP.Reference custom_format_list_for_pasteboard = 10003; + } +} + +message .TSCH.ChartPreserveAppearanceForPresetArchive { + extend .TSCH.ChartArchive { + optional bool appearance_preserved_for_preset = 10023; + } +} + +message .TSCH.ChartSupportsProportionalBendedCalloutLinesArchive { + extend .TSCH.ChartArchive { + optional bool supports_proportional_bended_callout_lines = 10024; + } +} + +message .TSCH.ChartSupportsRoundedCornersArchive { + extend .TSCH.ChartArchive { + optional bool deprecated_supports_rounded_corners = 10025; + optional bool supports_rounded_corners = 10026; + } +} + +message .TSCH.ChartSupportsSeriesPropertySpacingArchive { + extend .TSCH.ChartArchive { + optional bool supports_series_value_label_spacing = 10027; + optional bool supports_series_error_bar_spacing = 10028; + } +} + +message .TSCH.ChartGridArchive { + message ChartGridRowColumnIdMap { + message Entry { + required string uniqueId = 1; + required uint32 index = 2; + } + repeated .TSCH.ChartGridArchive.ChartGridRowColumnIdMap.Entry row_id_map = 1; + repeated .TSCH.ChartGridArchive.ChartGridRowColumnIdMap.Entry column_id_map = 2; + } + repeated string row_name = 1; + repeated string column_name = 2; + repeated .TSCH.GridRow grid_row = 3; + optional .TSCH.ChartGridArchive.ChartGridRowColumnIdMap idMap = 4; +} + +message .TSCH.ChartMediatorArchive { + optional .TSP.Reference info = 1; + repeated uint32 local_series_indexes = 2; + repeated uint32 remote_series_indexes = 3; +} + +message .TSCH.ChartFillSetArchive { + required string identifier = 1; + required string lookup_string = 2; + optional uint32 number_of_theme_series_styles = 3; + repeated .TSP.Reference series_styles = 4; +} + +message .TSCH.ChartStylePreset { + optional .TSP.Reference chart_style = 1; + optional .TSP.Reference legend_style = 2; + repeated .TSP.Reference value_axis_styles = 3; + repeated .TSP.Reference category_axis_styles = 4; + repeated .TSP.Reference series_styles = 5; + repeated .TSP.Reference paragraph_styles = 6; + optional bytes uuid = 7; + extensions 10000 to 536870911; +} + +message .TSCH.ChartPresetsArchive { + repeated .TSP.Reference chart_presets = 1; + extend .TSS.ThemeArchive { + optional .TSCH.ChartPresetsArchive extension = 120; + } +} + +message .TSCH.PropertyValueStorageContainerArchive { + optional .TSP.Reference chart_style = 1; + optional .TSP.Reference chart_nonstyle = 2; + optional .TSP.Reference legend_style = 3; + optional .TSP.Reference legend_nonstyle = 4; + optional .TSP.SparseReferenceArray value_axis_styles = 5; + optional .TSP.SparseReferenceArray value_axis_nonstyles = 6; + optional .TSP.SparseReferenceArray category_axis_styles = 7; + optional .TSP.SparseReferenceArray category_axis_nonstyles = 8; + optional .TSP.SparseReferenceArray series_theme_styles = 9; + optional .TSP.SparseReferenceArray series_private_styles = 10; + optional .TSP.SparseReferenceArray series_nonstyles = 11; + optional .TSP.SparseReferenceArray paragraph_styles = 12; + extensions 10000 to 536870911; +} + +message .TSCH.StylePasteboardDataArchive { + optional .TSS.StyleArchive super = 1; + optional .TSCH.PropertyValueStorageContainerArchive style_network = 2; + optional bool copied_from_entire_chart = 3; +} + +message .TSCH.ChartSelectionPathTypeArchive { + optional string path_type = 1; + optional string path_name = 2; +} + +message .TSCH.ChartAxisIDArchive { + optional .TSCH.AxisType axis_type = 1; + optional uint32 ordinal = 2; +} + +message .TSCH.ChartSelectionPathArgumentArchive { + optional uint32 number = 1; + optional .TSCH.ChartAxisIDArchive axis_id = 2; +} + +message .TSCH.ChartSelectionPathArchive { + optional .TSCH.ChartSelectionPathTypeArchive path_type = 1; + optional .TSCH.ChartSelectionPathArchive sub_selection = 2; + repeated .TSCH.ChartSelectionPathArgumentArchive arguments = 3; +} + +message .TSCH.ChartSelectionArchive { + optional .TSD.DrawableSelectionArchive super = 3; + optional .TSP.Reference chart = 1; + repeated .TSCH.ChartSelectionPathArchive paths = 2; +} + +message .TSCH.ChartCDESelectionArchive { + optional .TSP.Reference chart = 1; + optional int32 selection_type = 2; + optional uint32 row_location = 3; + optional uint32 row_length = 4; + optional uint32 column_location = 5; + optional uint32 column_length = 6; +} + +message .TSCH.ChartUIState { + optional .TSP.Reference chart = 1; + optional int32 cde_last_row_selected = 2; + optional int32 cde_last_col_selected = 3; + optional int32 cde_last_row_count = 4; + optional int32 cde_last_col_count = 5; + optional bool cde_use_full_keyboard = 6; + optional int32 multi_data_set_index = 7; + optional bool is_valid_multi_data_set_index = 8; + extensions 10000 to 536870911; +} + +message .TSCH.ChartUIStateMultiDataIndexUpgrade { + extend .TSCH.ChartUIState { + optional bool upgraded_from_model = 10022; + } +} + +message .TSCH.ChartFormatStructExtensions { + extend .TSK.FormatStructArchive { + optional string prefix = 10000; + optional string suffix = 10001; + } +} + +message .TSCH.ChartReferenceLineNonStyleItem { + required .TSP.Reference non_style = 1; + required .TSP.UUID uuid = 2; +} + +message .TSCH.ChartAxisReferenceLineNonStylesArchive { + required .TSCH.ChartAxisIDArchive axis_id = 1; + repeated .TSCH.ChartReferenceLineNonStyleItem reference_line_non_style_items = 2; +} + +message .TSCH.ChartAxisReferenceLineStylesArchive { + required .TSCH.ChartAxisIDArchive axis_id = 1; + optional .TSP.SparseReferenceArray reference_line_styles = 2; +} + +message .TSCH.ChartReferenceLinesArchive { + repeated .TSCH.ChartAxisReferenceLineNonStylesArchive reference_line_non_styles_map = 1; + repeated .TSCH.ChartAxisReferenceLineStylesArchive reference_line_styles_map = 2; + optional .TSP.Reference theme_preset_reference_line_style = 3; +} + +message .TSCH.ChartPresetReferenceLineStylesArchive { + repeated .TSP.Reference reference_line_styles = 1; +} + +message .TSCH.ChartAxisReferenceLineSparseNonStylesArchive { + required .TSCH.ChartAxisIDArchive axis_id = 1; + repeated .TSCH.ChartReferenceLineNonStyleItem reference_line_non_style_items = 2; +} + +message .TSCH.PropertyValueStorageContainerReferenceLinesArchive { + repeated .TSCH.ChartAxisReferenceLineSparseNonStylesArchive reference_line_non_styles_map = 1; + repeated .TSCH.ChartAxisReferenceLineStylesArchive reference_line_styles_map = 2; + optional .TSP.Reference theme_preset_reference_line_style = 3; +} + +message .TSCH.CollaboratorCDECursorSubselectionArchive { + optional int32 row_location = 1; + optional int32 row_length = 2; + optional int32 column_location = 3; + optional int32 column_length = 4; + extend .TSK.CollaboratorCursorArchive { + optional .TSCH.CollaboratorCDECursorSubselectionArchive cde_cursor_subselection = 300; + } +} + +message .TSCH.CollaboratorChartTitleCursorSubselectionArchive { + optional bool chart_title_selected = 1; + extend .TSK.CollaboratorCursorArchive { + optional .TSCH.CollaboratorChartTitleCursorSubselectionArchive chart_title_cursor_subselection = 301; + } +} + +extend .TSCH.ChartArchive { + optional bool scene3d_settings_constant_depth = 10002; + optional string last_applied_fill_set_lookup_string = 10004; +} + +extend .TSCH.ChartSeriesStyleArchive { + optional bool series_supports_donut = 10001; + optional bool series_supports_radar = 10002; +} + +extend .TSCH.ChartSeriesNonStyleArchive { + optional bool series_supports_custom_number_format = 10001; + optional bool series_supports_custom_date_format = 10002; + optional bool series_supports_callout_lines = 10003; +} + +extend .TSCH.ChartAxisStyleArchive { + optional bool axis_supports_radar = 10001; +} + +extend .TSCH.ChartAxisNonStyleArchive { + optional bool axis_supports_custom_number_format = 10001; + optional bool axis_supports_custom_date_format = 10002; +} + +extend .TSCH.ChartArchive { + optional .TSCH.ChartReferenceLinesArchive reference_lines = 10005; +} + +extend .TSCH.ChartStylePreset { + optional .TSCH.ChartPresetReferenceLineStylesArchive preset_reference_line_styles = 10000; +} + +extend .TSCH.PropertyValueStorageContainerArchive { + optional .TSCH.PropertyValueStorageContainerReferenceLinesArchive property_value_storage_container_reference_lines = 10000; +} + + +enum .TSCH.StyleOwnerType { + chart_info = 1; + legend_model = 2; + chart_axis = 3; + chart_series = 4; + reference_line = 5; +} + +enum .TSCH.StyleSwapType { + chart_style = 1; + chart_non_style = 2; + legend_style = 3; + legend_non_style = 4; + value_axis_style = 5; + value_axis_non_style = 6; + category_axis_style = 7; + category_axis_non_style = 8; + series_theme_style = 9; + series_private_style = 10; + series_non_style = 11; + paragraph_style = 12; + reference_line_style = 13; + reference_line_non_style = 14; + reference_line_theme_style = 15; +} + +enum .TSCH.ApplyPresetBehavior { + remove_overrides = 1; + preserve_overrides = 2; + preserve_appearance = 3; +} + +message .TSCH.StyleOwnerPath { + repeated .TSP.UUID uuids = 1; +} + +message .TSCH.CommandSetChartTypeArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSCH.ChartType new_chart_type = 2; + optional .TSCH.ChartType old_chart_type = 3; + optional .TSCH.ChartType rollback_chart_type = 4; + repeated .TSP.UUID row_ids = 5; + repeated .TSP.UUID column_ids = 6; + repeated .TSP.UUID old_row_ids = 7; + repeated .TSP.UUID old_column_ids = 8; + repeated .TSP.UUID rollback_row_ids = 9; + repeated .TSP.UUID rollback_column_ids = 10; + optional bool uses_captured_data = 11; + optional bool use_default_data = 12; +} + +message .TSCH.StyleSwapUndoTupleArchive { + optional .TSP.Reference chart_info = 1; + optional .TSCH.StyleSwapType swap_type = 2; + optional uint32 index = 3; + optional .TSP.Reference old_value = 4; + optional .TSP.Reference new_value = 5; + optional .TSP.UUID ref_line_uuid = 6; +} + +message .TSCH.StyleSwapUndoTuplesArchive { + repeated .TSCH.StyleSwapUndoTupleArchive swap_tuples = 1; +} + +message .TSCH.CommandStyleSwapArchive { + required .TSCH.ChartCommandArchive super = 1; + repeated .TSCH.StyleSwapUndoTupleArchive undo_tuples = 2; +} + +message .TSCH.CommandMutatePropertiesArchive { + message GenericPropertyDeltaMap { + message GenericMapUnion { + optional .TSCH.Generated.ChartGenericPropertyMapArchive chart_map = 2; + optional .TSCH.Generated.LegendGenericPropertyMapArchive legend_map = 3; + optional .TSCH.Generated.ChartAxisGenericPropertyMapArchive axis_map = 4; + optional .TSCH.Generated.ChartSeriesGenericPropertyMapArchive series_map = 5; + optional .TSCH.Generated.ReferenceLineGenericPropertyMapArchive reference_line_map = 6; + } + optional .TSCH.StyleOwnerPath style_owner_path = 1; + optional .TSCH.CommandMutatePropertiesArchive.GenericPropertyDeltaMap.GenericMapUnion forward_map = 2; + optional .TSCH.CommandMutatePropertiesArchive.GenericPropertyDeltaMap.GenericMapUnion reverse_map = 3; + } + message ParagraphStyleDeltaMap { + message ParagraphStylePropertyMapArchive { + optional .TSWP.CharacterStylePropertiesArchive char_properties = 1; + optional .TSWP.ParagraphStylePropertiesArchive para_properties = 2; + } + optional .TSCH.StyleOwnerPath style_owner_path = 1; + optional uint32 paragraph_style_index_property = 2; + optional .TSCH.CommandMutatePropertiesArchive.ParagraphStyleDeltaMap.ParagraphStylePropertyMapArchive forward_map = 3; + optional .TSCH.CommandMutatePropertiesArchive.ParagraphStyleDeltaMap.ParagraphStylePropertyMapArchive reverse_map = 4; + } + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference rollback_cmd = 2; + repeated .TSCH.CommandMutatePropertiesArchive.GenericPropertyDeltaMap generic_property_delta_maps = 3; + repeated .TSCH.CommandMutatePropertiesArchive.ParagraphStyleDeltaMap paragraph_style_delta_maps = 4; + optional bool initiatedOnWeb = 5; +} + +message .TSCH.CommandScaleAllTextArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference rollback_cmd = 2; + optional double scale_factor = 3; +} + +message .TSCH.CommandSetFontFamilyArchive { + message StyleSemanticTag { + optional .TSCH.StyleSwapType swap_type = 1; + optional uint32 index = 2; + } + message SemanticParagraphStyleMutationMap { + message ParagraphStylePropertyMapArchive { + optional .TSWP.CharacterStylePropertiesArchive char_properties = 1; + optional .TSWP.ParagraphStylePropertiesArchive para_properties = 2; + } + optional .TSCH.CommandSetFontFamilyArchive.StyleSemanticTag style_semantic_tag = 1; + optional uint32 paragraph_style_index_property = 2; + optional .TSCH.CommandSetFontFamilyArchive.SemanticParagraphStyleMutationMap.ParagraphStylePropertyMapArchive forward_map = 3; + optional .TSCH.CommandSetFontFamilyArchive.SemanticParagraphStyleMutationMap.ParagraphStylePropertyMapArchive reverse_map = 4; + } + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference rollback_cmd = 2; + optional string new_font_family = 3; + optional string old_font_family = 4; + repeated .TSCH.CommandSetFontFamilyArchive.SemanticParagraphStyleMutationMap paragraph_style_delta_maps = 5; + required bool is_bold = 6; + required bool is_italic = 7; +} + +message .TSCH.CommandApplyFillSetArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSCH.ChartType chart_type = 2; + required .TSCH.ChartFillSetArchive fill_set = 3; + optional .TSCH.ChartFillSetArchive old_fill_set = 4; + optional string prior_last_applied_fill_set_lookup_string = 5; + optional .TSP.Reference rollback_cmd = 6; +} + +message .TSCH.CommandSetSeriesNameArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 seriesIndex = 2; + optional string oldName = 3; + required string newName = 4; +} + +message .TSCH.CommandSetCategoryNameArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 categoryIndex = 2; + optional string oldName = 3; + required string newName = 4; + optional bool isMultiDataIndex = 5; +} + +message .TSCH.CommandAddGridRowsArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.UUID row_id = 2; + repeated .TSP.UUID row_id_list = 3; + repeated string row_name_list = 4; + optional .TSP.UUID undo_deletion_start_id = 5; + optional .TSP.UUID undo_deletion_end_id = 6; +} + +message .TSCH.CommandAddGridColumnsArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.UUID column_id = 2; + repeated .TSP.UUID column_id_list = 3; + repeated string column_name_list = 4; + optional .TSP.UUID undo_deletion_start_id = 5; + optional .TSP.UUID undo_deletion_end_id = 6; +} + +message .TSCH.CommandMoveGridRowsArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSP.UUID start_row_id = 2; + required .TSP.UUID end_row_id = 3; + optional .TSP.UUID after_row_id = 4; + optional .TSP.UUID undo_after_row_id = 5; +} + +message .TSCH.CommandMoveGridColumnsArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSP.UUID start_column_id = 2; + required .TSP.UUID end_column_id = 3; + optional .TSP.UUID after_column_id = 4; + optional .TSP.UUID undo_after_column_id = 5; +} + +message .TSCH.CommandDeleteGridRowsArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSP.UUID start_row_id = 2; + required .TSP.UUID end_row_id = 3; + repeated string cut_row_names = 4; + repeated .TSCH.GridRow cut_values = 5; + optional bool undo_discards_values = 6; + optional .TSP.UUID undo_column_insertion_id = 7; + optional .TSP.UUID undo_row_insertion_id = 8; + repeated .TSP.UUID undo_row_id_list = 9; + repeated string cut_column_names = 11; + repeated .TSP.UUID undo_column_id_list = 12; +} + +message .TSCH.CommandDeleteGridColumnsArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSP.UUID start_column_id = 2; + required .TSP.UUID end_column_id = 3; + repeated string cut_names = 4; + repeated .TSCH.GridRow cut_values = 5; + optional bool undo_discards_values = 6; + optional .TSP.UUID undo_column_insertion_id = 7; + optional .TSP.UUID undo_row_insertion_id = 8; + repeated .TSP.UUID undo_column_id_list = 9; + repeated string cut_row_names = 11; + repeated .TSP.UUID undo_row_id_list = 12; +} + +message .TSCH.CommandSetGridValueArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 rowindex = 2; + required uint32 columnindex = 3; + required double oldvalue = 4; + required double newvalue = 5; +} + +message .TSCH.CommandSetGridDirectionArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 old_direction = 2; + required uint32 new_direction = 3; +} + +message .TSCH.CommandSetSeriesTypeArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 seriesindex = 2; + required uint32 oldtype = 3; + required uint32 newtype = 4; +} + +message .TSCH.CommandSetScatterFormatArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 oldformat = 3; + required uint32 newformat = 4; +} + +message .TSCH.CommandSetMultiDataSetIndexArchive { + required .TSCH.ChartCommandArchive super = 1; + required uint32 oldindex = 2; + required uint32 newindex = 3; +} + +message .TSCH.CommandSetLegendFrameArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSCH.RectArchive old_legend_frame = 2; + required .TSCH.RectArchive new_legend_frame = 3; +} + +message .TSCH.CommandSetPieWedgeExplosion { + required .TSCH.ChartCommandArchive super = 1; + repeated uint32 series_indices = 2; + repeated double wedge_explosions = 3; + repeated uint32 old_series_indices = 5; + repeated double old_wedge_explosions = 6; + optional .TSP.Reference rollback_cmd = 7; +} + +message .TSCH.CommandChartApplyTheme { + required .TSS.ApplyThemeChildCommandArchive super = 1; + required .TSP.Reference info = 2; + optional .TSP.Reference swap_command = 3; + optional .TSP.Reference preset = 4; +} + +message .TSCH.CommandChartApplyPreset { + required .TSCH.ChartCommandArchive super = 1; + optional .TSCH.ApplyPresetBehavior behavior = 2 [default = remove_overrides]; + optional .TSP.Reference preset = 3; + optional .TSP.Reference old_preset = 4; + optional bool should_apply_swap_tuples = 5; + optional bool are_swap_tuples_valid = 6; + repeated .TSCH.StyleSwapUndoTupleArchive swap_tuples = 7; + repeated .TSCH.StyleSwapUndoTupleArchive inverse_swap_tuples = 8; + optional .TSP.Reference rollback_preset = 9; + repeated .TSCH.StyleSwapUndoTupleArchive rollback_swap_tuples = 10; +} + +message .TSCH.CommandCleanupGeometryArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference info_geometry_command = 2; + optional .TSP.Reference anchor_attachment_command = 3; + optional .TSCH.RectArchive original_legend_rect = 4; +} + +message .TSCH.ChartCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference chart_info = 2; + optional bool original_dirty_state = 3; + optional .TSP.UUIDPath chart_info_id_path = 4; + optional bool is_for_forward_undo_redo = 5; +} + +message .TSCH.CommandReplaceGridValuesArchive { + required .TSCH.ChartCommandArchive super = 1; + repeated .TSCH.GridRow old_data_rows = 4; + repeated .TSCH.GridRow new_data_rows = 5; + repeated string old_row_names = 6; + repeated string new_row_names = 7; + repeated string old_col_names = 8; + repeated string new_col_names = 9; + repeated .TSP.UUID update_row_uuids = 10; + repeated .TSP.UUID update_column_uuids = 11; + repeated .TSP.UUID add_row_uuids = 12; + repeated .TSP.UUID add_column_uuids = 13; + repeated .TSP.UUID delete_row_uuids = 14; + repeated .TSP.UUID delete_column_uuids = 15; + optional bool set_series_direction = 16; + optional uint32 new_series_direction = 17; +} + +message .TSCH.CommandReplaceThemePresetArchive { + message StyleAndIdentifierPair { + required .TSP.Reference style = 1; + required string identifier = 2; + } + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + optional .TSP.Reference old_preset = 3; + optional .TSP.Reference new_preset = 4; + repeated .TSCH.CommandReplaceThemePresetArchive.StyleAndIdentifierPair identifiers = 5; + optional uint64 old_preset_index = 6; +} + +message .TSCH.CommandInvalidateWPCaches { + required .TSK.CommandArchive super = 1; +} + +message .TSCH.CommandReplaceCustomFormatArchive { + message FormatObjectMutation { + optional .TSCH.StyleOwnerType style_owner_type = 1; + optional uint32 style_owner_index = 2; + optional uint32 format_object_property = 3; + optional .TSK.FormatStructArchive format_object = 4; + } + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference rollback_cmd = 2; + optional .TSK.FormatStructArchive old_format_object = 3; + optional .TSK.FormatStructArchive new_format_object = 4; + repeated .TSCH.CommandReplaceCustomFormatArchive.FormatObjectMutation forward_mutations = 5; + repeated .TSCH.CommandReplaceCustomFormatArchive.FormatObjectMutation reverse_mutations = 6; +} + +message .TSCH.CommandAddReferenceLineArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSCH.ChartAxisIDArchive axis_id = 2; + optional .TSP.UUID uuid = 3; + required .TSP.Reference non_style = 4; + optional .TSP.Reference style = 5; + repeated .TSP.Reference paragraph_styles = 6; + repeated .TSP.Reference rollback_commands = 7; +} + +message .TSCH.CommandDeleteReferenceLineArchive { + required .TSCH.ChartCommandArchive super = 1; + required .TSCH.ChartAxisIDArchive axis_id = 2; + required .TSP.UUID uuid = 3; + optional .TSP.Reference non_style = 4; + optional .TSP.Reference style = 5; + repeated .TSP.Reference paragraph_styles = 6; + optional .TSP.Reference style_swap_command = 7; +} + +message .TSCH.CommandPasteStyleArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference style_swap_command = 2; + optional .TSCH.PropertyValueStorageContainerArchive inverse_chart_style_state = 3; + optional .TSCH.PropertyValueStorageContainerArchive chart_style_state = 4; + optional .TSP.Reference shape_style = 5; + repeated .TSCH.ChartSelectionPathArchive subselection = 6; +} + +message .TSCH.CommandReplaceImageDataArchive { + required .TSCH.ChartCommandArchive super = 1; + optional .TSP.Reference style_swap_command = 2; + optional .TSCH.PropertyValueStorageContainerArchive inverse_chart_style_state = 3; + optional .TSCH.PropertyValueStorageContainerArchive chart_style_state = 4; +} + +message .TSCH.CommandInducedReplaceChartGrid { + required .TSK.CommandArchive super = 1; +} + +message .TSCH.CommandInduced3DChartGeometry { + required .TSK.CommandArchive super = 1; +} + +message .TSCH.ChartTextSelectionTransformerArchive { + optional .TSP.Reference selection = 1; +} + +message .TSCH.ChartDrawableSelectionTransformerArchive { + required .TSD.DrawableSelectionTransformerArchive super = 1; +} + +message .TSCH.ChartSubselectionTransformerHelperArchive { + optional .TSP.Reference selection = 1; +} + +message .TSCH.ChartRefLineSubselectionTransformerHelperArchive { + required .TSCH.ChartSubselectionTransformerHelperArchive super = 1; + repeated .TSP.UUID selected_reference_line_uuids = 2; +} + +message .TSCH.ChartSubselectionIdentityTransformerHelperArchive { + required .TSCH.ChartSubselectionTransformerHelperArchive super = 1; +} + +message .TSCH.ChartSubselectionTransformerArchive { + optional .TSP.Reference selection = 1; + optional .TSP.Reference helper = 2; +} + +message .TSCH.CDESelectionTransformerArchive { + optional .TSP.Reference cde_selection = 1; +} + + +enum .TSS.ValueType { + ObjectType = 0; + IntType = 1; + FloatType = 2; + DoubleType = 3; +} + +enum .TSS.PropertyType { + InvalidPropertyType = 1; + NullPropertyType = 2; + IntegerPropertyType = 3; + FloatPropertyType = 4; + DoublePropertyType = 5; + NSStringPropertyType = 6; + TSPObjectPropertyType = 7; +} + +message .TSS.StyleArchive { + optional string name = 1; + optional string style_identifier = 2; + optional .TSP.Reference parent = 3; + optional bool is_variation = 4 [default = false]; + optional .TSP.Reference stylesheet = 5; +} + +message .TSS.StylesheetArchive { + message IdentifiedStyleEntry { + required string identifier = 1; + required .TSP.Reference style = 2; + } + message StyleChildrenEntry { + required .TSP.Reference parent = 1; + repeated .TSP.Reference children = 2; + } + message VersionedStyles { + repeated .TSP.Reference styles = 1; + repeated .TSS.StylesheetArchive.IdentifiedStyleEntry identifier_to_style_map = 2; + repeated .TSS.StylesheetArchive.StyleChildrenEntry parent_to_children_style_map = 3; + } + repeated .TSP.Reference styles = 1; + repeated .TSS.StylesheetArchive.IdentifiedStyleEntry identifier_to_style_map = 2; + optional .TSP.Reference parent = 3; + optional bool is_locked = 4 [default = true]; + repeated .TSS.StylesheetArchive.StyleChildrenEntry parent_to_children_style_map = 5; + optional bool can_cull_styles = 6 [default = false]; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_10_0 = 7; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_10_1 = 8; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_10_2 = 9; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_11_0 = 10; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_11_1 = 11; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_11_2 = 12; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_12_0 = 13; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_12_1 = 14; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_12_2 = 15; + optional .TSS.StylesheetArchive.VersionedStyles styles_for_13_0 = 16; +} + +message .TSS.ThemeArchive { + optional .TSP.Reference legacy_stylesheet = 1; + optional string theme_identifier = 3; + optional .TSP.Reference document_stylesheet = 4; + repeated .TSP.UUID old_uuids_for_preset_replacements = 5; + repeated .TSP.UUID new_uuids_for_preset_replacements = 6; + repeated .TSP.Color color_presets = 10; + extensions 100 to 536870911; +} + +message .TSS.ApplyThemeCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference commands = 2; + optional .TSP.Reference old_theme = 3; + optional .TSP.Reference new_theme = 4; +} + +message .TSS.ApplyThemeChildCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference parent = 2; +} + +message .TSS.StyleUpdatePropertyMapCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference current_style = 2; + optional .TSP.Reference style_with_old_property_map = 3; + optional .TSP.Reference style_with_new_property_map = 4; + optional .TSP.Reference style_diff = 7; + optional bool notify_for_style_clients = 6 [default = true]; +} + +message .TSS.ThemeReplacePresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference preset = 3; + optional .TSP.Reference oldPreset = 4; + required uint32 index = 5; +} + +message .TSS.ThemeReplaceColorPresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSP.Color color = 3; + required .TSP.Color old_color = 4; + required uint32 index = 5; +} + +message .TSS.ThemeAddStylePresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSP.Reference preset = 3; + required string preset_kind = 4; + optional string identifier = 5; + optional bool add_preset_to_stylesheet = 6; +} + +message .TSS.ThemeRemoveStylePresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSP.Reference preset = 3; + required uint32 preset_index = 4; + required string preset_kind = 5; + optional string identifier = 6; + optional .TSP.Reference replacement_preset = 7; +} + +message .TSS.ThemeMovePresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSP.UUID preset_id = 3; + required uint32 new_index = 4; + required uint32 old_index = 5; +} + +message .TSS.ThemeReplaceStylePresetAndDisconnectStylesCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference preset = 2; + required .TSP.Reference replacement_preset = 3; +} + +message .TSS.CommandPropertyEntryArchive { + required uint32 property = 1; + required int32 type = 2; + optional int32 integer_value = 3; + optional float float_value = 4; + optional double double_value = 5; + optional string string_value = 6; + optional .TSP.Reference tsp_reference = 7; + extensions 8 to 2000; +} + +message .TSS.CommandPropertyMapArchive { + repeated .TSS.CommandPropertyEntryArchive property_entries = 1; +} + +extend .TSS.CommandPropertyEntryArchive { + optional .TSP.Color color = 8; +} + + +message .TSSSOS.SpecSetBoolArchive { + required bool value = 1; + required bool unset = 2; +} + +message .TSSSOS.SpecSetColorArchive { + optional .TSP.Color color = 1; + required bool unset = 2; +} + +message .TSSSOS.SpecSetDoubleArchive { + required double value = 1; + required bool unset = 2; +} + +message .TSSSOS.SpecSetIntegerArchive { + required int32 value = 1; + required bool unset = 2; +} + +message .TSSSOS.SpecSetStringArchive { + optional string value = 1; + required bool unset = 2; +} + +message .TSSSOS.SpecBoolArchive { + optional .TSSSOS.SpecSetBoolArchive spec_set_bool = 1; +} + +message .TSSSOS.SpecColorArchive { + optional .TSSSOS.SpecSetColorArchive spec_set_color = 1; +} + +message .TSSSOS.SpecDoubleArchive { + optional .TSSSOS.SpecSetDoubleArchive spec_set_double = 1; +} + +message .TSSSOS.SpecIntegerArchive { + optional .TSSSOS.SpecSetIntegerArchive spec_set_integer = 1; +} + +message .TSSSOS.SpecStringArchive { + optional .TSSSOS.SpecSetStringArchive spec_set_string = 1; +} + + +enum .TSD.LineJoin { + MiterJoin = 0; + RoundJoin = 1; + BevelJoin = 2; +} + +message .TSD.EdgeInsetsArchive { + required float top = 1; + required float left = 2; + required float bottom = 3; + required float right = 4; +} + +message .TSD.GeometryArchive { + optional .TSP.Point position = 1; + optional .TSP.Size size = 2; + optional uint32 flags = 3; + optional float angle = 4; +} + +message .TSD.PointPathSourceArchive { + enum PointPathSourceType { + kTSDLeftSingleArrow = 0; + kTSDRightSingleArrow = 1; + kTSDDoubleArrow = 10; + kTSDStar = 100; + kTSDPlus = 200; + } + optional .TSD.PointPathSourceArchive.PointPathSourceType type = 1; + optional .TSP.Point point = 2; + optional .TSP.Size naturalSize = 3; +} + +message .TSD.ScalarPathSourceArchive { + enum ScalarPathSourceType { + kTSDRoundedRectangle = 0; + kTSDRegularPolygon = 1; + kTSDChevron = 2; + } + optional .TSD.ScalarPathSourceArchive.ScalarPathSourceType type = 1; + optional float scalar = 2; + optional .TSP.Size naturalSize = 3; + optional bool is_curve_continuous = 4; +} + +message .TSD.BezierPathSourceArchive { + optional string path_string = 1 [deprecated = true]; + optional .TSP.Size naturalSize = 2; + optional .TSP.Path path = 3; +} + +message .TSD.CalloutPathSourceArchive { + optional .TSP.Size natural_size = 1; + optional .TSP.Point tail_position = 2; + optional float tail_size = 3; + optional float corner_radius = 4; + optional bool center_tail = 5; +} + +message .TSD.ConnectionLinePathSourceArchive { + enum ConnectionLinePathSourceType { + kTSDConnectionLineTypeQuadratic = 0; + kTSDConnectionLineTypeOrthogonal = 1; + } + required .TSD.BezierPathSourceArchive super = 1; + optional .TSD.ConnectionLinePathSourceArchive.ConnectionLinePathSourceType type = 2; + optional float outset_from = 3; + optional float outset_to = 4; +} + +message .TSD.EditableBezierPathSourceArchive { + message Node { + required .TSP.Point inControlPoint = 1; + required .TSP.Point nodePoint = 2; + required .TSP.Point outControlPoint = 3; + required .TSD.EditableBezierPathSourceArchive.NodeType type = 4; + } + message Subpath { + repeated .TSD.EditableBezierPathSourceArchive.Node nodes = 1; + required bool closed = 2; + } + enum NodeType { + sharp = 1; + bezier = 2; + smooth = 3; + } + repeated .TSD.EditableBezierPathSourceArchive.Subpath subpaths = 1; + optional .TSP.Size naturalSize = 2; +} + +message .TSD.PathSourceArchive { + optional bool horizontalFlip = 1; + optional bool verticalFlip = 2; + optional .TSD.PointPathSourceArchive point_path_source = 3; + optional .TSD.ScalarPathSourceArchive scalar_path_source = 4; + optional .TSD.BezierPathSourceArchive bezier_path_source = 5; + optional .TSD.CalloutPathSourceArchive callout_path_source = 6; + optional .TSD.ConnectionLinePathSourceArchive connection_line_path_source = 7; + optional .TSD.EditableBezierPathSourceArchive editable_bezier_path_source = 8; + optional string localizationKey = 9; + optional string userDefinedName = 10; +} + +message .TSD.AngleGradientArchive { + optional float gradientangle = 2; +} + +message .TSD.TransformGradientArchive { + optional .TSP.Point start = 1; + optional .TSP.Point end = 2; + optional .TSP.Size baseNaturalSize = 3; +} + +message .TSD.GradientArchive { + message GradientStop { + optional .TSP.Color color = 1; + optional float fraction = 2; + optional float inflection = 3; + } + enum GradientType { + Linear = 0; + Radial = 1; + } + optional .TSD.GradientArchive.GradientType type = 1; + repeated .TSD.GradientArchive.GradientStop stops = 2; + optional float opacity = 3; + optional bool advancedGradient = 4; + optional .TSD.AngleGradientArchive anglegradient = 5; + optional .TSD.TransformGradientArchive transformgradient = 6; +} + +message .TSD.ImageFillArchive { + enum ImageFillTechnique { + NaturalSize = 0; + Stretch = 1; + Tile = 2; + ScaleToFill = 3; + ScaleToFit = 4; + } + optional .TSP.DataReference imagedata = 6; + optional .TSD.ImageFillArchive.ImageFillTechnique technique = 2 [default = NaturalSize]; + optional .TSP.Color tint = 3; + optional .TSP.Size fillsize = 4; + optional .TSP.DataReference originalimagedata = 7 [deprecated = true]; + optional bool interpretsUntaggedImageDataAsGeneric = 8; + optional .TSP.Color referencecolor = 9; + optional .TSP.Reference database_imagedata = 1; + optional .TSP.Reference database_originalimagedata = 5; +} + +message .TSD.FillArchive { + optional .TSP.Color color = 1; + optional .TSD.GradientArchive gradient = 2; + optional .TSD.ImageFillArchive image = 3; + extensions 100 to 536870911; +} + +message .TSD.StrokePatternArchive { + enum StrokePatternType { + TSDPattern = 0; + TSDSolidPattern = 1; + TSDEmptyPattern = 2; + } + optional .TSD.StrokePatternArchive.StrokePatternType type = 1; + optional float phase = 2; + optional uint32 count = 3; + repeated float pattern = 4; +} + +message .TSD.StrokeArchive { + enum LineCap { + ButtCap = 0; + RoundCap = 1; + SquareCap = 2; + } + optional .TSP.Color color = 1; + optional float width = 2; + optional .TSD.StrokeArchive.LineCap cap = 3; + optional .TSD.LineJoin join = 4; + optional float miter_limit = 5; + optional .TSD.StrokePatternArchive pattern = 6; + optional .TSD.SmartStrokeArchive smart_stroke = 7; + optional .TSD.FrameArchive frame = 8; + optional .TSD.PatternedStrokeArchive patterned_stroke = 9; +} + +message .TSD.SmartStrokeArchive { + optional string stroke_name = 2; + optional uint32 random_seed = 3; + optional .TSP.ReferenceDictionary parameterValues = 4; + optional double pattern_offset_distance = 5; +} + +message .TSD.FrameArchive { + optional string frameName = 2; + optional float assetScale = 3; +} + +message .TSD.PatternedStrokeArchive { + optional string pattern_name = 2; +} + +message .TSD.LineEndArchive { + optional .TSP.Path path = 1; + optional .TSD.LineJoin line_join = 2 [default = MiterJoin]; + optional .TSP.Point end_point = 3; + optional bool is_filled = 4; + optional string identifier = 5; +} + +message .TSD.ShadowArchive { + enum ShadowType { + TSDDropShadow = 0; + TSDContactShadow = 1; + TSDCurvedShadow = 2; + } + optional .TSP.Color color = 1; + optional float angle = 2 [default = 315]; + optional float offset = 3 [default = 5]; + optional int32 radius = 4 [default = 1]; + optional float opacity = 5 [default = 1]; + optional bool is_enabled = 6 [default = true]; + optional .TSD.ShadowArchive.ShadowType type = 7 [default = TSDDropShadow]; + optional .TSD.DropShadowArchive dropShadow = 8; + optional .TSD.ContactShadowArchive contactShadow = 9; + optional .TSD.CurvedShadowArchive curvedShadow = 10; +} + +message .TSD.DropShadowArchive { +} + +message .TSD.ContactShadowArchive { + optional float height = 2 [default = 0.2]; + optional float offset = 4 [default = 0]; +} + +message .TSD.CurvedShadowArchive { + optional float curve = 1 [default = 0.6]; +} + +message .TSD.ReflectionArchive { + optional float opacity = 1 [default = 0.5]; +} + +message .TSD.ImageAdjustmentsArchive { + optional float exposure = 1; + optional float saturation = 2; + optional float contrast = 3; + optional float highlights = 4; + optional float shadows = 5; + optional float sharpness = 6; + optional float denoise = 7; + optional float temperature = 8; + optional float tint = 9; + optional float bottom_level = 10; + optional float top_level = 11 [default = 1]; + optional float gamma = 12; + optional bool enhance = 13 [default = false]; + optional bool represents_sage_adjustments = 14 [default = false]; +} + +message .TSD.ShapeStylePropertiesArchive { + optional .TSD.FillArchive fill = 1; + optional .TSD.StrokeArchive stroke = 2; + optional float opacity = 3; + optional .TSD.ShadowArchive shadow = 4; + optional .TSD.ReflectionArchive reflection = 5; + optional .TSD.LineEndArchive head_line_end = 6; + optional .TSD.LineEndArchive tail_line_end = 7; +} + +message .TSD.ShapeStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSD.ShapeStylePropertiesArchive shape_properties = 11; +} + +message .TSD.MediaStylePropertiesArchive { + optional .TSD.StrokeArchive stroke = 1; + optional float opacity = 2; + optional .TSD.ShadowArchive shadow = 3; + optional .TSD.ReflectionArchive reflection = 4; +} + +message .TSD.MediaStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TSD.MediaStylePropertiesArchive media_properties = 11; +} + +message .TSD.ThemePresetsArchive { + repeated .TSD.FillArchive gradient_fill_presets = 1; + repeated .TSD.FillArchive image_fill_presets = 2; + repeated .TSD.ShadowArchive shadow_presets = 3; + repeated .TSP.Reference line_style_presets = 4; + repeated .TSP.Reference shape_style_presets = 5; + repeated .TSP.Reference textbox_style_presets = 6; + repeated .TSP.Reference image_style_presets = 7; + repeated .TSP.Reference movie_style_presets = 8; + repeated .TSP.Reference drawing_line_style_presets = 9; + extend .TSS.ThemeArchive { + optional .TSD.ThemePresetsArchive extension = 100; + } +} + +message .TSD.ThemeReplaceFillPresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSD.FillArchive fill = 3; + required .TSD.FillArchive old_fill = 4; + required uint32 index = 5; +} + +message .TSD.DrawableArchive { + optional .TSD.GeometryArchive geometry = 1; + optional .TSP.Reference parent = 2; + optional .TSD.ExteriorTextWrapArchive exterior_text_wrap = 3; + optional string hyperlink_url = 4; + optional bool locked = 5; + optional .TSP.Reference comment = 6; + optional bool aspect_ratio_locked = 7; + optional string accessibility_description = 8; + repeated .TSP.Reference pencil_annotations = 9; + optional .TSP.Reference title = 10; + optional .TSP.Reference caption = 11; + optional bool title_hidden = 12; + optional bool caption_hidden = 13; +} + +message .TSD.ContainerArchive { + optional .TSD.GeometryArchive geometry = 1; + optional .TSP.Reference parent = 2; + repeated .TSP.Reference children = 3; +} + +message .TSD.GroupArchive { + required .TSD.DrawableArchive super = 1; + repeated .TSP.Reference children = 2; + optional .TSP.Reference fake_shape_for_empty_group = 3; + extensions 100 to 536870911; +} + +message .TSD.FreehandDrawingAnimationArchive { + optional double duration = 1; + optional bool should_loop = 2; +} + +message .TSD.FreehandDrawingArchive { + optional .TSP.Reference spacer_shape = 1; + optional double opacity = 2; + optional .TSD.FreehandDrawingAnimationArchive animation = 3; + optional double last_clamped_scale = 4; + extend .TSD.GroupArchive { + optional .TSD.FreehandDrawingArchive freehand_drawing_archive = 100; + } +} + +message .TSD.ShapeArchive { + required .TSD.DrawableArchive super = 1; + optional .TSP.Reference style = 2; + optional .TSD.PathSourceArchive pathsource = 3; + optional .TSD.LineEndArchive head_line_end = 4 [deprecated = true]; + optional .TSD.LineEndArchive tail_line_end = 5 [deprecated = true]; + optional float strokePatternOffsetDistance = 6; +} + +message .TSD.ConnectionLineArchive { + required .TSD.ShapeArchive super = 1; + optional .TSP.Reference connected_from = 2; + optional .TSP.Reference connected_to = 3; + optional .TSP.UUID connected_to_uuid = 4; + optional .TSP.UUID connected_from_uuid = 5; +} + +message .TSD.ImageArchive { + required .TSD.DrawableArchive super = 1; + optional .TSP.DataReference data = 11; + optional .TSP.Reference style = 3; + optional .TSP.Size originalSize = 4; + optional .TSP.Reference mask = 5; + optional .TSP.DataReference thumbnailData = 12; + optional uint32 flags = 7; + optional .TSP.DataReference originalData = 13; + optional .TSP.Size naturalSize = 9; + optional .TSP.Path instantAlphaPath = 10; + optional .TSD.ImageAdjustmentsArchive imageAdjustments = 14; + optional .TSP.DataReference enhancedImageData = 17; + optional .TSP.DataReference adjustedImageData = 15; + optional .TSP.DataReference thumbnailAdjustedImageData = 16; + optional bool interpretsUntaggedImageDataAsGeneric = 18; + optional .TSP.Reference database_data = 2; + optional .TSP.Reference database_thumbnailData = 6; + optional .TSP.Reference database_originalData = 8; + optional .TSP.Path traced_path = 19; + optional .TSD.Attribution attribution = 20; + optional bool should_trace_pdf_content = 21; + optional bool background_removed = 22; + extensions 100 to 999; +} + +message .TSD.MaskArchive { + required .TSD.DrawableArchive super = 1; + optional .TSD.PathSourceArchive pathsource = 2; +} + +message .TSD.ImageDataAttributes { + optional .TSP.Size pixel_size = 1; + optional bool image_is_srgb = 2; + optional bool should_be_interpreted_as_generic_if_untagged = 3; + extend .TSP.DataAttributes { + optional .TSD.ImageDataAttributes image_data_attributes = 100; + } +} + +message .TSD.MovieArchive { + enum MovieLoopOption { + None = 0; + Repeat = 1; + BackAndForth = 2; + } + required .TSD.DrawableArchive super = 1; + optional .TSP.DataReference movieData = 14; + optional .TSP.DataReference importedAuxiliaryMovieData = 22; + optional string imported_auxiliary_movie_data_original_filename = 25; + optional string movieRemoteURL = 17; + optional float startTime = 3; + optional float endTime = 4; + optional float posterTime = 5; + optional uint32 loopOptionAsInteger = 6 [deprecated = true]; + optional .TSD.MovieArchive.MovieLoopOption loop_option = 24 [default = None]; + optional float volume = 7; + optional bool autoPlay = 8 [deprecated = true]; + optional bool audioOnly = 9; + optional bool streaming = 18; + optional bool nativeAudioRecording = 27; + optional bool playsAcrossSlides = 28; + optional .TSP.DataReference posterImageData = 15; + optional .TSP.DataReference audioOnlyImageData = 16; + optional bool poster_image_generated_with_alpha_support = 23; + optional uint32 playableState = 12; + optional uint32 flags = 13; + optional .TSP.Reference database_movieData = 2; + optional .TSP.Reference database_posterImageData = 10; + optional .TSP.Reference database_audioOnlyImageData = 11; + optional .TSP.Reference style = 19; + optional .TSP.Size originalSize = 20; + optional .TSP.Size naturalSize = 21; + optional .TSD.Attribution attribution = 26; + optional .TSD.MovieFingerprint fingerprint = 29; + optional bool is_live_video = 30 [default = false]; + extensions 100 to 999; +} + +message .TSD.ExteriorTextWrapArchive { + optional uint32 type = 1; + optional uint32 direction = 2; + optional uint32 fit_type = 3; + optional float margin = 4; + optional float alpha_threshold = 5; + optional bool is_html_wrap = 6; +} + +message .TSD.DrawableContentDescription { + optional uint32 element_kind = 1; + optional bool is_anchored_to_text = 2; + optional bool is_floating_above_text = 3; + optional bool is_inline_with_text = 4; +} + +message .TSD.FreehandDrawingContentDescription { + required .TSD.DrawableContentDescription super = 1; + optional bool source_doc_wanted_spacer_shape = 2; +} + +message .TSD.FreehandDrawingToolkitUIState { + enum FreehandDrawingToolType { + Pen = 0; + Pencil = 1; + Crayon = 2; + Fill = 3; + Eraser = 4; + MarqueeSelect = 5; + } + optional .TSP.Color current_color = 1 [deprecated = true]; + optional .TSD.FreehandDrawingToolkitUIState.FreehandDrawingToolType most_recent_restorable_tool_type = 2 [default = Pen]; + optional float pen_tool_opacity = 3; + optional float pen_tool_unscaled_width = 4; + optional float pencil_tool_opacity = 5; + optional float pencil_tool_unscaled_width = 6; + optional float crayon_tool_opacity = 7; + optional float crayon_tool_unscaled_width = 8; + optional float fill_tool_opacity = 9; + optional float eraser_tool_scaled_width = 10; + optional bool eraser_tool_erases_whole_objects = 11; + optional .TSP.Color pen_tool_color = 12; + optional .TSP.Color pencil_tool_color = 13; + optional .TSP.Color crayon_tool_color = 14; + optional .TSP.Color fill_tool_color = 15; +} + +message .TSD.StandinCaptionArchive { +} + +message .TSD.GuideArchive { + enum GuideType { + Horizontal = 0; + Vertical = 1; + } + optional .TSD.GuideArchive.GuideType type = 1; + optional float offset = 2; + optional float start = 3; + optional float end = 4; + optional bool dynamic = 5; + optional bool infinite = 6; +} + +message .TSD.UserDefinedGuideArchive { + enum GuideType { + Horizontal = 0; + Vertical = 1; + } + optional .TSD.UserDefinedGuideArchive.GuideType type = 1; + optional float position = 2; +} + +message .TSD.GuideStorageArchive { + repeated .TSD.UserDefinedGuideArchive userDefinedGuides = 1; +} + +message .TSD.CanvasSelectionArchive { + repeated .TSP.Reference infos = 1; + repeated .TSP.Reference non_interactive_infos = 3; + optional .TSP.Reference container = 2 [deprecated = true]; +} + +message .TSD.DrawableSelectionArchive { + repeated .TSP.Reference infos = 2; + repeated .TSP.Reference non_interactive_infos = 3; +} + +message .TSD.GroupSelectionArchive { + required .TSD.DrawableSelectionArchive super = 1; + optional bool has_selected_infos_in_non_group_container = 2; +} + +message .TSD.PathSelectionArchive { +} + +message .TSD.InfoHyperlinkSelectionArchive { +} + +message .TSD.CommentStorageArchive { + optional string text = 1; + optional .TSP.Date creation_date = 2; + optional .TSP.Reference author = 3; + repeated .TSP.Reference replies = 4; + optional .TSP.UUID storage_uuid = 5; +} + +message .TSD.ReplaceAnnotationAuthorCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference old_annotation_author = 2; + optional .TSP.Reference new_annotation_author = 3; +} + +message .TSD.PencilAnnotationArchive { + optional .TSP.Reference pencil_annotation_storage = 1; +} + +message .TSD.PencilAnnotationSelectionArchive { + optional .TSP.Reference pencil_annotation = 1; +} + +message .TSD.PencilAnnotationStorageArchive { + optional int32 attached_location = 1; + optional .TSP.Point markup_offset = 2; + optional .TSP.DataReference rasterized_image = 3; + optional .TSP.DataReference legacy_encoded_drawing = 4; + optional .TSP.Path drawing_path = 5; + optional .TSP.Point strokes_bounding_box_origin = 6; + optional .TSP.Size strokes_bounding_box_size = 7; + optional int32 attached_type = 8; + optional .TSP.Size original_attached_size = 9; + optional double percent_of_pa_contained_in_parent_rep = 10; + optional uint64 text_baselines_touched_count = 11; + optional uint64 visible_strokes_count = 12; + optional .TSP.Color pen_color = 13; + optional int32 tool_type = 14; + repeated .TSP.Reference callout_sub_storages = 15; + optional .TSP.Date creation_date = 16; + optional double pencil_annotation_drawing_scale = 17; + optional int32 compound_annotation_type = 18; + repeated .TSP.Reference sub_storages = 19; + optional .TSP.DataReference encoded_drawing = 20; + optional .TSP.Point stroke_points_frame_origin = 21; + optional .TSP.Size stroke_points_frame_size = 22; + optional .TSP.Point rendered_frame_origin = 23; + optional .TSP.Size rendered_frame_size = 24; +} + +message .TSD.SpecColorFillSetColorArchive { + required .TSP.Color color = 1; +} + +message .TSD.SpecFrameSetAssetScaleArchive { + required double asset_scale = 1; +} + +message .TSD.SpecGradientFillSetAngleArchive { + required double angle = 1; +} + +message .TSD.SpecImageFillSetTechniqueArchive { + required int32 technique = 1; +} + +message .TSD.SpecReflectionSetOpacityArchive { + required double opacity = 1; +} + +message .TSD.SpecShadowSetAngleArchive { + required double angle = 1; +} + +message .TSD.SpecShadowSetColorArchive { + required .TSP.Color color = 1; +} + +message .TSD.SpecShadowSetOffsetArchive { + required double offset = 1; +} + +message .TSD.SpecShadowSetOpacityArchive { + required double opacity = 1; +} + +message .TSD.SpecShadowSetRadiusArchive { + required int32 radius = 1; +} + +message .TSD.SpecStrokeSetColorArchive { + required .TSP.Color color = 1; +} + +message .TSD.SpecStrokeSetPatternArchive { + optional int32 line_cap = 1; + optional int32 line_join = 2; + optional double miter_limit = 3; + optional double width = 4; + optional .TSP.Color color = 5; + required .TSD.StrokePatternArchive pattern = 6; +} + +message .TSD.SpecStrokeSetWidthArchive { + required double width = 1; +} + +message .TSD.Attribution { + optional string title = 1; + optional string description_text = 2; + optional string external_url = 3; + optional string author_name = 4; + optional string author_url = 5; +} + +message .TSD.MovieFingerprint { + repeated .TSD.MovieFingerprintTrack tracks = 1; + repeated uint32 version = 2 [packed = true]; +} + +message .TSD.MovieFingerprintTrack { + optional string media_type = 1; + optional bool enabled = 2; + optional int64 total_sample_data_length = 3; + optional string sample_data_digest_string = 4; + optional int64 time_range_start_value = 5; + optional int32 time_range_start_timescale = 6; + optional bool time_range_start_is_valid = 7; + optional int64 time_range_duration_value = 8; + optional int32 time_range_duration_timescale = 9; + optional bool time_range_duration_is_valid = 10; + optional .TSP.Size natural_size = 11; + optional double preferred_transform_a = 12; + optional double preferred_transform_b = 13; + optional double preferred_transform_c = 14; + optional double preferred_transform_d = 15; + optional double preferred_transform_tx = 16; + optional double preferred_transform_ty = 17; + optional double preferred_volume = 18; + optional string language_code = 19; + optional string extended_language_tag = 20; +} + +extend .TSS.CommandPropertyEntryArchive { + optional .TSD.FillArchive fill = 200; + optional .TSD.StrokeArchive stroke = 201; +} + + +message .TSDSOS.SpecSetFillArchive { + optional .TSD.FillArchive fill = 1; + required bool unset = 2; +} + +message .TSDSOS.SpecSetLineEndArchive { + optional .TSD.LineEndArchive line_end = 1; + required bool unset = 2; +} + +message .TSDSOS.SpecSetReflectionArchive { + optional .TSD.ReflectionArchive reflection = 1; + required bool unset = 2; +} + +message .TSDSOS.SpecSetShadowArchive { + optional .TSD.ShadowArchive shadow = 1; + required bool unset = 2; +} + +message .TSDSOS.SpecSetStrokeArchive { + optional .TSD.StrokeArchive stroke = 1; + required bool unset = 2; +} + +message .TSDSOS.SpecFillArchive { + optional .TSD.SpecColorFillSetColorArchive spec_color_fill_set_color = 1; + optional .TSD.SpecGradientFillSetAngleArchive spec_gradient_fill_set_angle = 2; + optional .TSD.SpecImageFillSetTechniqueArchive spec_image_fill_set_technique = 3; + optional .TSDSOS.SpecSetFillArchive spec_set_fill = 4; +} + +message .TSDSOS.SpecLineEndArchive { + optional .TSDSOS.SpecSetLineEndArchive spec_set_line_end = 1; +} + +message .TSDSOS.SpecReflectionArchive { + optional .TSD.SpecReflectionSetOpacityArchive spec_reflection_set_opacity = 1; + optional .TSDSOS.SpecSetReflectionArchive spec_set_reflection = 2; +} + +message .TSDSOS.SpecShadowArchive { + optional .TSDSOS.SpecSetShadowArchive spec_set_shadow = 1; + optional .TSD.SpecShadowSetAngleArchive spec_shadow_set_angle = 2; + optional .TSD.SpecShadowSetColorArchive spec_shadow_set_color = 3; + optional .TSD.SpecShadowSetOffsetArchive spec_shadow_set_offset = 4; + optional .TSD.SpecShadowSetOpacityArchive spec_shadow_set_opacity = 5; + optional .TSD.SpecShadowSetRadiusArchive spec_shadow_set_radius = 6; +} + +message .TSDSOS.SpecStrokeArchive { + optional .TSD.SpecFrameSetAssetScaleArchive spec_frame_set_asset_scale = 1; + optional .TSDSOS.SpecSetStrokeArchive spec_set_stroke = 2; + optional .TSD.SpecStrokeSetColorArchive spec_stroke_set_color = 3; + optional .TSD.SpecStrokeSetPatternArchive spec_stroke_set_pattern = 4; + optional .TSD.SpecStrokeSetWidthArchive spec_stroke_set_width = 5; +} + +message .TSDSOS.BaseShapeStylePropertyChangeSetArchive { + optional .TSDSOS.SpecFillArchive fill = 1; + optional bool fill_undefined = 2; + optional .TSDSOS.SpecStrokeArchive stroke = 3; + optional bool stroke_undefined = 4; + optional .TSSSOS.SpecDoubleArchive opacity = 5; + optional bool opacity_undefined = 6; + optional .TSDSOS.SpecShadowArchive shadow = 7; + optional bool shadow_undefined = 8; + optional .TSDSOS.SpecReflectionArchive reflection = 9; + optional bool reflection_undefined = 10; + optional .TSDSOS.SpecLineEndArchive head_line_end = 11; + optional bool head_line_end_undefined = 12; + optional .TSDSOS.SpecLineEndArchive tail_line_end = 13; + optional bool tail_line_end_undefined = 14; +} + +message .TSDSOS.MediaStylePropertyChangeSetArchive { + optional .TSDSOS.SpecStrokeArchive stroke = 1; + optional bool stroke_undefined = 2; + optional .TSSSOS.SpecDoubleArchive opacity = 3; + optional bool opacity_undefined = 4; + optional .TSDSOS.SpecShadowArchive shadow = 5; + optional bool shadow_undefined = 6; + optional .TSDSOS.SpecReflectionArchive reflection = 7; + optional bool reflection_undefined = 8; +} + + +enum .TSD.CommentCommandVariant { + BaseComment = 0; + AddReply = 1; + EditReply = 2; + DeleteReply = 3; +} + +enum .TSD.CaptionOrTitleKind { + Caption = 1; + Title = 2; +} + +message .TSD.UndoObjectArchive { + optional .TSP.Reference stylesheet = 2; + repeated .TSP.Reference objects = 1; + repeated string keys = 3; + repeated uint32 counts = 4; +} + +message .TSD.GroupDrawablesCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference drawables = 2; + optional .TSP.Reference group = 3; +} + +message .TSD.UngroupGroupCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference drawables = 2; + optional .TSP.Reference group = 3; +} + +message .TSD.ContainerRemoveChildrenCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath container_id_path = 2; + repeated .TSK.RemoveIdOperationArgs args_list = 3; + repeated .TSP.Reference children = 4; +} + +message .TSD.ContainerRemoveDrawablesCommandArchive { + required .TSD.ContainerRemoveChildrenCommandArchive super = 1; +} + +message .TSD.ContainerInsertChildrenCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath container_id_path = 2; + repeated .TSP.Reference children = 3; + repeated .TSK.AddIdOperationArgs args_list = 4; + repeated .TSP.UUID custom_format_keys = 5; + optional .TSP.Reference undo_object = 6; +} + +message .TSD.ContainerInsertDrawablesCommandArchive { + required .TSD.ContainerInsertChildrenCommandArchive super = 1; + repeated .TSP.Reference drawables = 2; +} + +message .TSD.ContainerReorderChildrenCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath container_id_path = 2; + repeated .TSK.RearrangeIdOperationArgs args_list = 3; +} + +message .TSD.GroupUngroupInformativeCommandArchive { + enum CommandType { + Group = 0; + Ungroup = 1; + } + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference removed_infos = 2; + repeated .TSP.Reference inserted_infos = 3; + optional .TSD.GroupUngroupInformativeCommandArchive.CommandType command_type = 4; +} + +message .TSD.InfoCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath info_id_path = 2; +} + +message .TSD.ConnectionLineConnectCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.UUID connected_from_id = 4; + optional .TSP.UUID connected_to_id = 5; + optional .TSP.UUID old_connected_to_id = 6; + optional .TSP.UUID old_connected_from_id = 7; +} + +message .TSD.InfoGeometryCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.GeometryArchive newGeometry = 2; + optional .TSD.GeometryArchive oldGeometry = 3; + optional bool matchObjectPlaceholderGeometry = 4; + optional bool oldMatchObjectPlaceholderGeometry = 5; + optional bool shouldTriggerRtuAnimation = 6; + optional bool initiatedOnWeb = 7; +} + +message .TSD.DrawablePathSourceCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.PathSourceArchive old_path_source = 2; + optional .TSD.PathSourceArchive new_path_source = 3; +} + +message .TSD.InstantAlphaCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.Path oldpath = 2; + optional .TSP.Path newpath = 3; +} + +message .TSD.DrawableApplyThemeCommandArchive { + required .TSS.ApplyThemeChildCommandArchive super = 1; + optional .TSP.Reference info = 2; + optional .TSP.Reference style = 3; +} + +message .TSD.AbstractStyleCommandArchive { + required .TSD.InfoCommandArchive super = 1; +} + +message .TSD.StyledInfoSetStyleCommandArchive { + required .TSD.AbstractStyleCommandArchive super = 1; + optional .TSP.Reference new_style = 2; + optional .TSP.Reference rollback_style = 4; +} + +message .TSD.BaseApplyPresetCommandArchive { + required .TSD.AbstractStyleCommandArchive super = 1; + optional .TSP.Reference preset_style = 2; + optional .TSP.Reference rollback_style = 4; +} + +message .TSD.ShapeApplyPresetCommandArchive { + required .TSD.BaseApplyPresetCommandArchive super = 1; +} + +message .TSD.MediaApplyPresetCommandArchive { + required .TSD.BaseApplyPresetCommandArchive super = 1; +} + +message .TSD.ShapeStyleSetValueCommandArchive { + required .TSD.BaseStyleSetValueCommandArchive super = 1; + optional .TSDSOS.BaseShapeStylePropertyChangeSetArchive change = 4; +} + +message .TSD.BaseStyleSetValueCommandArchive { + required .TSD.AbstractStyleCommandArchive super = 1; + optional .TSP.Reference old_style = 4; + required bool is_border_change = 5; +} + +message .TSD.MovieSetValueCommandArchive { + message PropertyValue { + optional double starttime = 1; + optional double endtime = 2; + optional double postertime = 3; + optional .TSP.DataReference posterimagedata = 4; + optional bool autoplay = 5; + optional .TSD.MovieSetValueCommandArchive.LoopOption loopOption = 6; + optional float volume = 7; + optional .TSP.DataReference media = 8; + optional bool playsAcrossSlides = 9; + } + enum LoopOption { + None = 0; + Repeat = 1; + BackAndForth = 2; + } + required .TSD.InfoCommandArchive super = 1; + optional int32 property = 2; + optional .TSD.MovieSetValueCommandArchive.PropertyValue value = 3; + optional .TSD.MovieSetValueCommandArchive.PropertyValue oldValue = 4; + optional .TSP.DataReference importedauxiliarymedia = 5; + optional .TSP.DataReference oldimportedauxiliarymedia = 6; +} + +message .TSD.MediaStyleSetValueCommandArchive { + required .TSD.BaseStyleSetValueCommandArchive super = 1; + optional .TSDSOS.MediaStylePropertyChangeSetArchive change = 4; +} + +message .TSD.ImageMediaCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.DataReference newImageData = 8; + optional .TSP.DataReference oldImageData = 9; + optional .TSP.DataReference oldOriginalImageData = 10; + optional .TSP.Size oldNaturalSize = 6; + optional .TSP.DataReference newOriginalImageData = 11; + optional .TSD.ImageAdjustmentsArchive oldImageAdjustments = 12; + optional .TSP.DataReference oldAdjustedImageData = 13; + optional .TSP.DataReference oldEnhancedImageData = 14; + optional .TSD.ImageAdjustmentsArchive imageAdjustments = 15; + optional .TSP.DataReference adjustedImageData = 16; + optional .TSP.DataReference enhancedImageData = 17; + optional .TSP.DataReference newThumbnailImageData = 18; + optional .TSP.DataReference oldThumbnailImageData = 19; + optional .TSP.DataReference thumbnailAdjustedImageData = 20; + optional .TSP.DataReference oldThumbnailAdjustedImageData = 21; + optional .TSP.Reference database_newImageData = 3; + optional .TSP.Reference database_oldImageData = 4; + optional .TSP.Reference database_oldOriginalImageData = 5; + optional .TSP.Reference database_newOriginalImageData = 7; +} + +message .TSD.MediaOriginalSizeCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.Size newOriginalSize = 2; + optional .TSP.Size oldOriginalSize = 3; + required string propertyName = 4; +} + +message .TSD.MediaInfoGeometryCommandArchive { + required .TSD.InfoGeometryCommandArchive super = 1; + required .TSP.Size newOriginalSize = 2; + required .TSP.Size oldOriginalSize = 3; +} + +message .TSD.ImageNaturalSizeCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.Size new_natural_size = 2; + optional .TSP.Size old_natural_size = 3; +} + +message .TSD.ImageMaskCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.Reference newMaskInfo = 2; + optional .TSP.Reference oldMaskInfo = 3; + optional bool background_removed = 4; + optional bool old_background_removed = 5; +} + +message .TSD.ImageAdjustmentsCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.ImageAdjustmentsArchive old_image_adjustments = 2; + optional .TSD.ImageAdjustmentsArchive new_image_adjustments = 3; + optional .TSP.DataReference adjustedImageData = 4; + optional .TSP.DataReference replacedAdjustedImageData = 5; + optional .TSP.DataReference enhancedImageData = 6; + optional .TSP.DataReference replacedEnhancedImageData = 7; + optional .TSP.DataReference thumbnailAdjustedImageData = 8; + optional .TSP.DataReference replacedThumbnailAdjustedImageData = 9; +} + +message .TSD.MediaFlagsCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional bool was_media_replaced = 5; + optional bool is_placeholder = 6; + optional bool old_was_media_replaced = 7; + optional bool old_is_placeholder = 8; + required string property_name = 4; +} + +message .TSD.DrawablesCommandGroupArchive { + enum DrawablesCommandGroupType { + Constructive = 1; + Destructive = 2; + InPlace = 3; + } + required .TSK.CommandGroupArchive super = 1; + optional .TSD.CanvasSelectionArchive obsolete_selection = 2; + optional .TSP.Reference modelforselection = 3; + optional .TSD.DrawablesCommandGroupArchive.DrawablesCommandGroupType type = 4; + optional bool forDrag = 5; + optional .TSP.Reference archivedselection = 6; +} + +message .TSD.ExteriorTextWrapCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.ExteriorTextWrapArchive old_exterior_text_wrap = 3; + optional uint32 type = 4; + optional uint32 direction = 5; + optional uint32 fit_type = 6; + optional float margin = 7; + optional float alpha_threshold = 8; + optional bool is_html_wrap = 9; +} + +message .TSD.DrawableHyperlinkCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional string oldhyperlink_url = 2; + optional string newhyperlink_url = 3; +} + +message .TSD.CommentInvalidatingCommandSelectionBehaviorArchive { + required .TSK.CommandSelectionBehaviorArchive super = 1; + optional .TSP.Reference annotation_displaying_command = 2; + optional bool begin_editing_on_undo = 3; + optional bool begin_editing_on_redo = 4; + optional bool should_invalidate_on_undo = 5; + optional bool should_invalidate_on_redo = 6; +} + +message .TSD.ImageReplaceCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.DataReference new_image_data = 2; + optional .TSP.DataReference new_original_image_data = 3; + optional .TSP.DataReference old_image_data = 4; + optional .TSP.DataReference old_original_image_data = 5; + optional .TSP.Path instant_alpha_path = 6; + optional .TSP.Path old_instant_alpha_path = 7; + optional .TSP.Size natural_size_for_IAPath = 8; + optional .TSP.Size old_natural_size_for_IAPath = 9; + optional .TSD.GeometryArchive target_image_geometry = 10; + optional .TSD.GeometryArchive old_target_image_geometry = 12; + optional .TSD.GeometryArchive target_mask_geometry = 13; + optional .TSD.GeometryArchive old_target_mask_geometry = 14; + optional .TSD.ImageAdjustmentsArchive image_adjustments = 15; + optional .TSP.DataReference adjusted_image_data = 16; + optional .TSP.DataReference enhanced_image_data = 17; + optional .TSD.ImageAdjustmentsArchive old_image_adjustments = 18; + optional .TSP.DataReference old_adjusted_image_data = 19; + optional .TSP.DataReference old_enhanced_image_data = 20; + optional .TSP.DataReference thumbnail_image_data = 21; + optional .TSP.DataReference old_thumbnail_image_data = 22; + optional .TSP.DataReference thumbnail_adjusted_image_data = 23; + optional .TSP.DataReference old_thumbnail_adjusted_image_data = 24; + optional .TSP.Size natural_size = 25; + optional .TSP.Size old_natural_size = 26; +} + +message .TSD.DrawableLockCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional bool locked = 2; + optional bool was_locked = 3; +} + +message .TSD.DrawableInfoCommentCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.Reference old_comment = 2; + optional .TSP.Reference new_comment = 3; + optional .TSD.CommentCommandVariant forward_variant = 4; + optional .TSD.CommentCommandVariant inverse_variant = 5; +} + +message .TSD.DrawablePencilAnnotationCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSP.Reference pencil_annotation_to_add = 2; + optional .TSP.Reference pencil_annotation_to_remove = 3; +} + +message .TSD.AbstractGuideCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSD.UserDefinedGuideArchive old_guides = 7; + repeated .TSD.UserDefinedGuideArchive new_guides = 8; +} + +message .TSD.GuideCommandArchive { + required .TSD.AbstractGuideCommandArchive super = 1; + required .TSP.UUIDPath storage_id_path = 2; +} + +message .TSD.DrawableAspectRatioLockedCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional bool aspect_ratio_locked = 2; + optional bool was_aspect_ratio_locked = 3; +} + +message .TSD.DrawableAccessibilityDescriptionCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional string accessibility_description = 2; + optional string old_accessibility_description = 3; +} + +message .TSD.PasteStyleCommandArchive { + required .TSD.AbstractStyleCommandArchive super = 1; + optional .TSP.Reference new_style = 2; + optional .TSP.Reference rollback_style = 5; + optional bool tail_end_on_left = 4; +} + +message .TSD.ImageInfoAbstractGeometryCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.GeometryArchive new_image_geometry = 2; + optional .TSD.GeometryArchive old_image_geometry = 3; + optional .TSD.GeometryArchive new_mask_geometry = 4; + optional .TSD.GeometryArchive old_mask_geometry = 5; + optional .TSD.PathSourceArchive new_mask_path_source = 6; + optional .TSD.PathSourceArchive old_mask_path_source = 7; + optional .TSP.Size new_image_original_size = 8; + optional .TSP.Size old_image_original_size = 9; + optional bool background_removed = 10; + optional bool old_background_removed = 11; +} + +message .TSD.ImageInfoGeometryCommandArchive { + required .TSD.ImageInfoAbstractGeometryCommandArchive super = 1; +} + +message .TSD.ImageInfoMaskGeometryCommandArchive { + required .TSD.ImageInfoAbstractGeometryCommandArchive super = 1; +} + +message .TSD.InfoCollectionSelectionTransformerHelperArchive { + repeated .TSP.UUIDPath info_uuid_path_list = 1; +} + +message .TSD.DrawableSelectionTransformerArchive { + required .TSD.InfoCollectionSelectionTransformerHelperArchive transformer_helper = 1; + required .TSP.Reference untransformed_drawable_selection = 2; +} + +message .TSD.InfoHyperlinkSelectionTransformerArchive { +} + +message .TSD.CanvasSelectionTransformerArchive { + required .TSD.InfoCollectionSelectionTransformerHelperArchive transformer_helper = 1; +} + +message .TSD.PathSelectionTransformerArchive { +} + +message .TSD.ShapeSelectionTransformerArchive { + required .TSD.DrawableSelectionTransformerArchive super = 1; +} + +message .TSD.GroupSelectionTransformerArchive { + required .TSD.DrawableSelectionTransformerArchive super = 1; +} + +message .TSD.PencilAnnotationSelectionTransformerArchive { + required .TSP.UUID pencil_annotation_uuid = 1; +} + +message .TSD.FreehandDrawingOpacityCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional double opacity = 2; + optional double old_opacity = 3; +} + +message .TSD.FreehandDrawingAnimationCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.FreehandDrawingAnimationArchive animation = 2; + optional .TSD.FreehandDrawingAnimationArchive old_animation = 3; +} + +message .TSD.InsertCaptionOrTitleCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath drawable_info_id_path = 2; + optional .TSP.Reference caption_or_title_info = 3; + optional .TSP.UUID added_caption_or_title_uuid = 4; + optional .TSD.CaptionOrTitleKind caption_or_title_kind = 5; + optional .TSP.Reference undo_object = 6; +} + +message .TSD.RemoveCaptionOrTitleCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath drawable_info_id_path = 2; + optional .TSP.Reference removed_caption_or_title_info = 3; + optional .TSP.UUID removed_caption_or_title_uuid = 4; + optional .TSD.CaptionOrTitleKind caption_or_title_kind = 5; +} + +message .TSD.SetCaptionOrTitleVisibilityCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.CaptionOrTitleKind caption_or_title_kind = 2; + optional bool hidden = 3; + optional bool was_hidden = 4; +} + + +enum .TSK.StructuredTextImportType { + ImportType_UNKNOWN = 0; + ImportType_DELIMITED = 1; + ImportType_FIXEDWIDTH = 2; +} + +message .TSK.TreeNode { + optional string name = 1; + repeated .TSP.Reference children = 2; + optional .TSP.Reference object = 3; +} + +message .TSK.LocalCommandHistoryItem { + optional .TSP.Reference command = 1; + optional .TSP.Reference behavior = 2; +} + +message .TSK.LocalCommandHistoryArray { + required .TSP.LargeArray large_array = 1; +} + +message .TSK.LocalCommandHistoryArraySegment { + required .TSP.LargeObjectArraySegment large_object_array_segment = 1; +} + +message .TSK.LocalCommandHistory { + required uint32 undo_count = 1; + optional .TSP.Reference items_array = 2; + optional bool fixed_radar_13365177 = 10; +} + +message .TSK.CollaborationCommandHistoryArray { + required .TSP.LargeArray large_array = 1; +} + +message .TSK.CollaborationCommandHistoryArraySegment { + required .TSP.LargeObjectArraySegment large_object_array_segment = 1; +} + +message .TSK.CollaborationCommandHistory { + message ItemList { + optional .TSP.Reference items_array = 1; + repeated .TSP.Reference transformer_entries = 2; + } + optional .TSP.UUID local_identifier = 1; + optional .TSK.CollaborationCommandHistory.ItemList undo_items = 2; + optional .TSK.CollaborationCommandHistory.ItemList redo_items = 3; +} + +message .TSK.CollaborationCommandHistoryItem { + optional .TSP.Reference command = 1; + optional string action_string = 2; + optional .TSP.Reference behavior = 3; + optional .TSP.Reference coalescing_group = 4; + optional uint64 revision_sequence = 5; +} + +message .TSK.CollaborationCommandHistoryCoalescingGroup { + repeated .TSP.Reference nodes = 1; + optional bool did_coalesce_all_commands = 2 [default = false]; +} + +message .TSK.CollaborationCommandHistoryCoalescingGroupNode { + optional .TSP.Reference command = 1; +} + +message .TSK.CollaborationCommandHistoryOriginatingCommandAcknowledgementObserver { + optional .TSP.Reference coalescing_group = 1; + optional .TSP.Reference node = 2; +} + +message .TSK.DocumentArchive { + optional string locale_identifier = 4; + optional .TSP.Reference annotation_author_storage = 7; + repeated .TSP.Reference activity_log_entries = 8; + optional string creation_locale_identifier = 9; + optional bool prevent_image_conversion_on_open = 10; + optional bool has_floating_locale = 11; + optional bool has_user_defined_locale = 12; + optional .TSP.Reference collaboration_operation_history = 14; + optional bool should_measure_negatively_tracked_text_correctly = 15; + optional bool use_optimized_text_vertical_alignment = 16; + optional .TSK.FormattingSymbolsArchive formatting_symbols = 17; + optional .TSP.Reference activity_stream = 199; +} + +message .TSK.FormattingSymbolsArchive { + message CurrencySymbol { + required string code = 1; + required string symbol = 2; + } + optional string version = 1; + optional string calendar = 2; + optional string numbering_system = 3; + repeated string months = 4; + repeated string standalone_months = 5; + repeated string short_months = 6; + repeated string standalone_short_months = 7; + repeated string weekdays = 8; + repeated string standalone_weekdays = 9; + repeated string short_weekdays = 10; + repeated string standalone_short_weekdays = 11; + optional string am_symbol = 12; + optional string pm_symbol = 13; + repeated string tiny_months = 14; + repeated string standalone_tiny_months = 15; + repeated string tiny_weekdays = 16; + repeated string standalone_tiny_weekdays = 17; + repeated string quarters = 18; + repeated string standalone_quarters = 19; + repeated string short_quarters = 20; + repeated string standalone_short_quarters = 21; + repeated string eras = 22; + repeated string long_eras = 23; + optional string short_date_pattern = 24; + optional string medium_date_pattern = 25; + optional string long_date_pattern = 26; + optional string full_date_pattern = 27; + optional string short_time_pattern = 28; + optional string medium_time_pattern = 29; + optional string long_time_pattern = 30; + optional string full_time_pattern = 31; + optional string decimal_separator = 32; + optional string grouping_separator = 33; + optional string currency_decimal_separator = 34; + optional string currency_grouping_separator = 35; + optional string plus_sign = 36; + optional string minus_sign = 37; + optional string exponential_symbol = 38; + optional string percent_symbol = 39; + optional string per_mille_symbol = 40; + optional string infinity_symbol = 41; + optional string nan_symbol = 42; + optional string decimal_pattern = 43; + optional string scientific_pattern = 44; + optional string percent_pattern = 45; + optional string currency_pattern = 46; + optional string currency_code = 47; + repeated .TSK.FormattingSymbolsArchive.CurrencySymbol currency_symbols = 48; +} + +message .TSK.DocumentSupportCollaborationState { + optional .TSP.Reference collaboration_command_history = 1; + optional .TSP.Reference collaboration_session_state = 2; +} + +message .TSK.DocumentSupportArchive { + optional .TSP.Reference command_history = 1; + optional uint32 undo_count = 4; + optional uint32 redo_count = 5; + optional string undo_action_string = 6; + optional string redo_action_string = 7; + optional .TSP.Reference web_state = 8; + optional bool is_in_collaboration_mode = 9 [default = false]; + optional string action_string_localization = 12; + optional .TSP.Reference collaboration_state = 13; + optional .TSP.Reference activity_notification_map = 14; + optional .TSP.Reference removed_author_auditor_pending_state = 15; + optional .TSP.Reference command_selection_behavior_history = 2 [deprecated = true]; + optional .TSP.Reference view_state = 3 [deprecated = true]; + optional .TSP.Reference collaboration_command_history = 10 [deprecated = true]; + optional .TSP.Reference collaboration_session_state = 11 [deprecated = true]; +} + +message .TSK.ViewStateArchive { + required .TSP.Reference view_state_root = 1; + optional int32 document_revision_sequence = 2; + optional string document_revision_identifier = 3; +} + +message .TSK.CommandArchive { + optional .TSP.Reference undoRedoState = 1 [deprecated = true]; + optional .TSP.Reference undoCollection = 2; + optional bool shadowed_by_transform = 3; + optional bool shadowed_by_commit = 4; + optional bool remote = 5; + optional bool should_hold_until_group_commit = 6; + optional bool server_originated = 7; +} + +message .TSK.CommandGroupArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference commands = 2; + optional .TSP.IndexSet process_results = 3; + optional string action_string = 4; + optional bool can_coalesce_group = 5; +} + +message .TSK.InducedCommandCollectionArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference inducing_command = 2; + repeated .TSP.Reference induced_commands = 3; + optional .TSP.IndexSet indexes_of_processed_induced_commands = 4; +} + +message .TSK.PropagatedCommandCollectionArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference propagatable_command = 2; + optional bool propagatable_command_process_result = 3 [default = false]; + required .TSP.Reference propagating_command = 4; + optional bool propagating_command_process_result = 5 [default = false]; +} + +message .TSK.FinalCommandPairArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference command = 2; + optional bool command_process_result = 3 [default = false]; + required .TSP.Reference final_command = 4; + optional bool final_command_process_result = 5 [default = false]; +} + +message .TSK.CommandContainerArchive { + repeated .TSP.Reference commands = 1; +} + +message .TSK.ProgressiveCommandGroupArchive { + required .TSK.CommandGroupArchive super = 1; +} + +message .TSK.FormatStructArchive { + optional uint32 format_type = 1; + optional uint32 decimal_places = 2; + optional string currency_code = 3; + optional uint32 negative_style = 4; + optional bool show_thousands_separator = 5; + optional bool use_accounting_style = 6; + optional uint32 duration_style = 7; + optional uint32 base = 8; + optional uint32 base_places = 9; + optional bool base_use_minus_sign = 10; + optional uint32 fraction_accuracy = 11; + optional bool suppress_date_format = 12; + optional bool suppress_time_format = 13; + optional string date_time_format = 14; + optional uint32 duration_unit_largest = 15; + optional uint32 duration_unit_smallest = 16; + optional uint32 custom_id = 17; + optional string custom_format_string = 18; + optional double scale_factor = 19; + optional bool requires_fraction_replacement = 20; + optional double control_minimum = 21; + optional double control_maximum = 22; + optional double control_increment = 23; + optional uint32 control_format_type = 24; + optional uint32 slider_orientation = 25; + optional uint32 slider_position = 26; + optional uint32 decimal_width = 27; + optional uint32 min_integer_width = 28; + optional uint32 num_nonspace_integer_digits = 29; + optional uint32 num_nonspace_decimal_digits = 30; + optional uint32 index_from_right_last_integer = 31; + repeated string interstitial_strings = 32; + optional .TSP.IndexSet inters_str_insertion_indexes = 33; + optional uint32 num_hash_decimal_digits = 34; + optional uint32 total_num_decimal_digits = 35; + optional bool is_complex = 36; + optional bool contains_integer_token = 37; + optional uint32 multiple_choice_list_initial_value = 38; + optional uint32 multiple_choice_list_id = 39; + optional bool use_automatic_duration_units = 40; + optional .TSP.UUID custom_uid = 41; + optional .TSK.CustomFormatArchive custom_format = 42; + optional bool uses_plus_sign = 43; + optional string bool_true_string = 44; + optional string bool_false_string = 45; + extensions 10000 to 19999; +} + +message .TSK.CustomFormatArchive { + message Condition { + required uint32 condition_type = 1; + optional float condition_value = 2; + required .TSK.FormatStructArchive condition_format = 3; + optional double condition_value_dbl = 4; + } + required string name = 1; + required uint32 format_type_pre_bnc = 2; + required .TSK.FormatStructArchive default_format = 3; + repeated .TSK.CustomFormatArchive.Condition conditions = 4; + optional uint32 format_type = 5; +} + +message .TSK.CustomFormatListArchive { + repeated .TSP.UUID uuids = 1; + repeated .TSK.CustomFormatArchive custom_formats = 2; +} + +message .TSK.AnnotationAuthorArchive { + optional string name = 1; + optional .TSP.Color color = 2; + optional string public_id = 3; + optional bool is_public_author = 4; + repeated string public_ids = 5; +} + +message .TSK.DeprecatedChangeAuthorArchive { + optional string name = 1; + optional .TSP.Color change_color = 2; +} + +message .TSK.AnnotationAuthorStorageArchive { + repeated .TSP.Reference annotation_author = 1; +} + +message .TSK.SetAnnotationAuthorColorCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference annotation_author = 2; + optional .TSP.Color color = 3; + optional .TSP.Color old_color = 4; +} + +message .TSK.SetActivityAuthorShareParticipantIDCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference activity_author = 2; + optional string share_participant_id = 3; + optional string old_share_participant_id = 4; +} + +message .TSK.CommandBehaviorSelectionPathStorageArchive { + optional .TSK.SelectionPathArchive archived_selection = 1; + optional .TSK.SelectionPathArchive archived_old_selection = 2; + optional .TSK.SelectionPathArchive archived_new_selection = 3; + optional .TSP.Reference forward_selection_path_transformer = 4; + optional .TSP.Reference reverse_selection_path_transformer = 5; +} + +message .TSK.CommandBehaviorArchive { + optional .TSP.Reference selection_behavior = 1; + optional .TSP.Reference activity_behavior = 2; +} + +message .TSK.CommandSelectionBehaviorArchive { + optional .TSP.Reference selection_path_storage = 1; + optional uint64 selection_flags = 2; + optional uint64 additional_forward_selection_flags = 3; + optional uint64 additional_reverse_selection_flags = 4; + repeated .TSP.Reference additional_selection_behaviors = 5; +} + +message .TSK.SelectionPathTransformerArchive { + repeated .TSP.Reference selection_transformers = 1; +} + +message .TSK.SelectionPathArchive { + repeated .TSP.Reference ordered_selections = 1; +} + +message .TSK.DocumentSelectionArchive { + optional .TSP.Reference document_root = 1; +} + +message .TSK.IdOperationArgs { + required .TSP.UUIDPath id_path = 1; +} + +message .TSK.AddIdOperationArgs { + required .TSK.IdOperationArgs super = 1; + required int32 index = 2; +} + +message .TSK.RemoveIdOperationArgs { + required .TSK.IdOperationArgs super = 1; + required int32 index = 2; +} + +message .TSK.RearrangeIdOperationArgs { + required .TSK.IdOperationArgs super = 1; + required int32 from_index = 2; + required int32 to_index = 3; +} + +message .TSK.IdPlacementOperationArgs { + required .TSK.IdOperationArgs super = 1; + required int32 from_index = 2; + required int32 to_index = 3; +} + +message .TSK.NullCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSK.GroupCommitCommandArchive { + required .TSK.CommandArchive super = 1; + optional bool can_coalesce_group = 2; +} + +message .TSK.UpgradeDocPostProcessingCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSK.InducedCommandCollectionCommitCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSK.ActivityCommitCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference activity = 2; + optional .TSP.Reference author = 3; + optional bool was_activity_committed = 4 [default = true]; +} + +message .TSK.ExecuteTestBetweenRollbackAndReapplyCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSK.ChangeDocumentPackageTypeCommandArchive { + enum PackageType { + Default = 0; + Directory = 1; + SingleFile = 2; + } + required .TSK.CommandArchive super = 1; + required .TSK.ChangeDocumentPackageTypeCommandArchive.PackageType new_package_type = 2; + required .TSK.ChangeDocumentPackageTypeCommandArchive.PackageType old_package_type = 3; +} + +message .TSK.CreateLocalStorageSnapshotCommandArchive { + required .TSK.CommandArchive super = 1; + optional string snapshot_id = 2; +} + +message .TSK.BlockDiffsAtCurrentRevisionCommand { + required .TSK.CommandArchive super = 1; +} + +message .TSK.RangeAddress { + repeated uint64 address_identifier = 1; + repeated uint32 range_list = 2; +} + +message .TSK.Operation { + enum OperationType { + Add = 0; + Remove = 1; + Placement = 2; + Rearrange = 3; + UpdateId = 4; + UpdateRange = 5; + ReplaceRange = 6; + } + optional .TSK.Operation.OperationType type = 1 [default = ReplaceRange]; + optional bool noop = 2 [default = false]; + repeated fixed64 address_identifier = 3 [packed = true]; + optional uint64 insert_length = 4 [default = 1]; + optional bool preserve_lower_priority_location = 5 [default = false]; + repeated uint32 range_list = 6 [packed = true]; + optional uint32 transform_behavior = 7 [default = 7]; + optional uint32 property_id = 8; + optional int32 from_index = 9 [default = -1]; + optional int32 to_index = 10 [default = -1]; + optional bool dominating = 11 [default = false]; + optional int32 object_count = 12 [default = -1]; + optional int32 object_counter_space = 13 [default = 0]; +} + +message .TSK.OperationTransformer { + required bool higher_priority = 1; + repeated .TSK.Operation operations = 2; +} + +message .TSK.TransformerEntry { + required uint64 sequence = 1; + required double creation_time = 2; + required .TSK.OperationTransformer transformer = 3; +} + +message .TSK.OutgoingCommandQueueItem { + optional .TSP.Reference command = 1; + optional string serialized_json_without_data_base64_encoded_string = 2; + optional .TSP.DataReference serialized_json_without_data_base64_encoded_data = 4; + repeated .TSK.OutgoingCommandQueueItemUUIDToDataMapEntry uuid_to_data_map_entries = 3; + repeated .TSP.DataReference large_data_list = 5; +} + +message .TSK.OutgoingCommandQueueItemUUIDToDataMapEntry { + required .TSP.UUID uuid = 1; + required .TSP.DataReference data = 2; +} + +message .TSK.CollaborationAppliedCommandDocumentRevisionMapping { + optional .TSP.Reference command = 1; + optional .TSP.UUID document_revision_identifier = 2; + optional int32 document_revision_sequence = 3; + repeated .TSK.Operation remaining_command_operations = 4; + optional .TSP.Date timestamp = 5; +} + +message .TSK.CollaborationDocumentSessionState { + message AcknowledgementObserverEntry { + required .TSP.UUID command_identifier = 1; + repeated .TSP.Reference acknowledgement_observers = 2; + } + repeated string collaborator_ids = 1; + repeated .TSP.Reference rsvp_command_queue_items = 3; + repeated .TSP.Reference collaborator_cursor_transformer_entries = 4; + repeated .TSP.Reference acknowledged_commands_pending_resume_process_diffs = 5; + repeated .TSP.Reference unprocessed_commands_pending_resume_process_diffs = 6; + repeated .TSK.CollaborationDocumentSessionState.AcknowledgementObserverEntry command_acknowledgement_observer_entries = 7; + repeated .TSP.Reference transformer_from_unprocessed_command_operations_entries = 8; + optional int32 mailbox_request_document_revision_sequence = 10; + optional .TSP.UUID mailbox_request_document_revision_identifier = 11; + optional bool last_send_pending_command_queue_item_was_moved_from_rsvp_command_queue = 12 [default = false]; + optional int32 last_command_send_marker_sequence = 13; + optional .TSP.UUID last_command_send_marker_identifier = 14; + repeated .TSP.Reference skipped_acknowledged_commands_pending_resume_process_diffs = 15; + optional .TSP.UUID last_too_old_command_identifier = 16; + optional .TSP.Reference unprocessed_operation_entries_pending_resume_process_diffs = 17; + optional .TSP.Reference send_pending_command_queue = 18; + optional uint64 count_of_send_pending_command_queue_items_moved_from_rsvp_queue = 19 [default = 0]; + optional .TSP.UUID last_enqueued_document_load_command_identifier = 20; + repeated .TSK.CollaborationAppliedCommandDocumentRevisionMapping applied_command_document_revision_mappings_to_notify_pending_resume_process_diffs = 21; + optional uint64 count_of_command_queue_items_in_last_outgoing_command_group = 22 [default = 0]; +} + +message .TSK.NativeContentDescription { + optional string app_name = 1; + optional string app_version = 2; + optional string document_id = 3; + repeated .TSP.Reference drawable_descriptions = 4; +} + +message .TSK.StructuredTextImportSettings { + required .TSK.StructuredTextImportType type = 1; + required int32 starting_row = 2; + repeated string decimal_separators = 3; + repeated string thousands_separators = 4; + optional bool transpose_rows_and_columns = 5; + repeated string delimiters = 6; + repeated string text_qualifiers = 7; + optional bool collapse_consecutive = 8; + optional .TSP.IndexSet column_offsets = 9; + optional bool automatic_delimiters = 10; + optional bool automatic_offsets = 11; + optional uint64 source_encoding = 12; +} + +message .TSK.OperationStorageCommandOperationsEntry { + optional bool command_identifier_same_as_revision_identifier = 1; + repeated fixed64 command_identifier = 2 [packed = true]; + repeated .TSK.Operation operations = 3; + optional bool server_originated = 4; + optional uint64 coalesced_command_entry_count = 5; +} + +message .TSK.OperationStorageEntry { + repeated fixed64 document_revision_identifier = 1 [packed = true]; + optional int32 document_revision_sequence_delta = 2; + repeated .TSK.OperationStorageCommandOperationsEntry command_operation_entries = 3; + optional double first_entry_creation_time = 4; + optional int32 creation_time_diff_bucket = 5; + repeated uint32 file_format_version = 6 [packed = true]; +} + +message .TSK.OperationStorageEntryArray { + optional .TSP.LargeArray large_array = 1; +} + +message .TSK.OperationStorageEntryArraySegment { + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated .TSK.OperationStorageEntry elements = 2; + optional int32 last_document_revision_sequence_before_segment = 3; + optional int32 last_document_revision_sequence = 4; + optional double segment_first_entry_creation_time = 5; +} + +message .TSK.OperationStorage { + required .TSP.Reference entries = 1; + required uint64 operation_count = 2; + optional int32 last_document_revision_sequence = 3; + repeated fixed64 last_document_revision_identifier = 4 [packed = true]; + optional int32 last_unskippable_document_revision_before_entries_sequence = 5; + repeated fixed64 last_unskippable_document_revision_before_entries_identifier = 6 [packed = true]; + optional int32 last_unskippable_document_revision_in_entries_sequence = 7; + repeated fixed64 last_unskippable_document_revision_in_entries_identifier = 8 [packed = true]; + optional .TSP.IndexSet days_with_an_entry = 9; +} + +message .TSK.OutgoingCommandQueue { + optional .TSP.LargeObjectArray large_object_array = 1; +} + +message .TSK.OutgoingCommandQueueSegment { + optional .TSP.LargeObjectArraySegment large_object_array_segment = 1; +} + +message .TSK.DataReferenceRecord { + message ContainerUUIDToReferencedDataPair { + required .TSP.UUID container_uuid = 1; + required .TSP.DataReference referenced_data = 2; + required uint32 reference_count = 3; + } + repeated .TSK.DataReferenceRecord.ContainerUUIDToReferencedDataPair added_container_uuid_to_referenced_data_pairs = 1; + repeated .TSK.DataReferenceRecord.ContainerUUIDToReferencedDataPair removed_container_uuid_to_referenced_data_pairs = 2; + repeated .TSP.DataReference unbounded_referenced_datas = 3; +} + +message .TSK.CommandAssetChunkArchive { + required .TSK.CommandArchive super = 1; + optional string digest = 2; + optional string asset_chunk = 3; + required int64 asset_chunk_length = 4; + required int64 resume_position = 5; + required int64 materialized_length = 6; +} + +message .TSK.AssetUploadStatusCommandArchive { + message AssetUploadStatusInfo { + optional string digest = 1; + optional .TSP.DataUploadStatus upload_status = 2; + } + required .TSK.CommandArchive super = 1; + repeated .TSK.AssetUploadStatusCommandArchive.AssetUploadStatusInfo info_list = 2; +} + +message .TSK.AssetUnmaterializedOnServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated string digest_list = 2; +} + +message .TSK.PencilAnnotationUIState { + enum PencilAnnotationToolType { + Pen = 0; + Highlighter = 1; + } + optional .TSK.PencilAnnotationUIState.PencilAnnotationToolType current_tool_type = 1 [default = Pen]; + optional .TSP.Color pen_tool_color = 2; + optional float pen_tool_opacity = 3; + optional float pen_tool_width = 4; + optional .TSP.Color highlighter_tool_color = 5; + optional float highlighter_tool_opacity = 6; + optional float highlighter_tool_width = 7; +} + +message .TSK.CollaboratorCursorArchive { + optional .TSP.UUIDPath id_path = 1; + extensions 100 to 999; +} + +message .TSK.ActivityStreamArchive { + optional .TSP.Reference acknowledged_activity_array = 1; + optional .TSP.Reference unacknowledged_local_activity_array = 2; + optional .TSP.Reference author_cache = 3; + optional .TSP.Reference unacknowledged_remote_activity_array = 5; + optional bool did_upgrade_comments_to_activities = 6; + optional .TSK.ActivityStreamTransformationStateArchive activity_stream_transformation_state = 15; + optional .TSK.ActivityStreamActivityCounterArchive activity_counter = 16; +} + +message .TSK.ActivityStreamActivityArray { + optional .TSP.LargeObjectArray large_array = 1; +} + +message .TSK.ActivityStreamActivityArraySegment { + optional .TSP.LargeObjectArraySegment large_array_segment = 1; +} + +message .TSK.ActivityArchive { + repeated .TSP.Reference cursor_collection_persistence_wrappers = 1; + optional .TSP.UUID author_identifier = 2; + optional int32 nondirectional_action_type = 3; + optional int32 direction = 4; + optional bool should_send_notification = 5; + optional .TSP.Date timestamp = 6; + optional int32 revision_sequence = 7; + optional .TSK.ActivityNavigationInfoArchive additional_navigation_info = 8; + optional bool did_prepare_serialized_string_on_server = 9; + optional int32 oldest_revision_sequence_of_next_activities = 10; + optional int32 action_sub_type = 11 [default = 0]; + repeated uint32 min_updatable_version = 12 [packed = true]; +} + +message .TSK.ActivityAuthorArchive { + optional string name = 1; + optional .TSP.Color color = 2; + repeated string public_ids = 3; + optional bool is_public_author = 4; + optional string share_participant_id = 5; +} + +message .TSK.CommandActivityBehaviorArchive { + enum ActionType { + Unknown = 0; + FirstJoin = 1; + Add = 2; + Modify = 3; + Comment = 4; + Reply = 5; + Paste = 6; + Password = 7; + Restore = 8; + Remove = 9; + EditText = 10; + Group = 11; + Ungroup = 12; + Replace = 13; + } + enum ActionSubType { + None = 0; + FilterTable = 1; + SortTable = 2; + CategorizeTable = 3; + ChangeTemplateSlide = 4; + ChangeChartType = 5; + MoveDrawable = 6; + ResizeDrawable = 7; + AddOrRemovePage = 8; + Hyperlink = 9; + SkipSlide = 10; + UnskipSlide = 11; + ChangeBackground = 12; + ChangePageTemplate = 13; + InsertPageNumber = 14; + RefreshPivotTable = 15; + AddPassword = 16; + ChangePassword = 17; + RemovePassword = 18; + Bookmark = 19; + Equation = 20; + SectionBreak = 21; + MoveColumn = 22; + LinkTextbox = 23; + NewTextboxThread = 24; + ChangeTextboxThread = 25; + ConditionalHighlightTableCell = 26; + DataFormatTableCell = 27; + } + repeated .TSP.Reference selection_path_storages = 1; + optional .TSK.CommandActivityBehaviorArchive.ActionType action_type = 2; + optional bool should_send_notification = 3; + optional .TSK.ActivityNavigationInfoArchive additional_navigation_info = 4; + optional .TSK.CommandActivityBehaviorArchive.ActionSubType action_sub_type = 5 [default = None]; +} + +message .TSK.ActivityCursorCollectionArchive { + repeated .TSK.CollaboratorCursorArchive id_cursors = 1; + optional .TSK.CollaboratorCursorArchive text_cursor = 2; + optional .TSK.CollaboratorCursorArchive table_cursor = 3; + optional .TSK.CollaboratorCursorArchive cde_cursor = 4; + optional .TSK.CollaboratorCursorArchive chart_title_cursor = 5; + optional .TSK.CollaboratorCursorArchive gallery_item_cursor = 6; +} + +message .TSK.ActivityCursorCollectionPersistenceWrapperArchive { + optional .TSK.ActivityCursorCollectionArchive activity_cursor_collection = 1; +} + +message .TSK.ActivityNavigationInfoArchive { + extensions 100 to 999; +} + +message .TSK.CommentActivityNavigationInfoArchive { + required string comment_id = 1; + required .TSP.UUID parent_uuid = 2; + required .TSP.UUID storage_uuid = 3; + extend .TSK.ActivityNavigationInfoArchive { + optional .TSK.CommentActivityNavigationInfoArchive comment_activity_navigation_info = 100; + } +} + +message .TSK.ActivityAuthorCacheArchive { + message ShareParticipantIDCache { + required .TSP.UUID identifier = 1; + required string share_participant_id = 2; + } + message PublicIDCache { + required .TSP.UUID identifier = 1; + required string public_identifier = 2; + } + message IndexCache { + required .TSP.UUID identifier = 1; + required uint64 author_index = 2; + } + message FirstJoinCache { + required .TSP.UUID identifier = 1; + optional .TSP.Date first_join_date = 2; + } + repeated .TSK.ActivityAuthorCacheArchive.ShareParticipantIDCache share_participant_id_cache = 1; + repeated .TSK.ActivityAuthorCacheArchive.PublicIDCache fallback_public_id_cache = 3; + repeated .TSK.ActivityAuthorCacheArchive.IndexCache index_cache = 4; + repeated .TSK.ActivityAuthorCacheArchive.FirstJoinCache first_join_cache = 5; + repeated .TSP.Reference authors = 6; + optional .TSP.Date last_audit_date = 7; + repeated .TSP.UUID author_identifiers_to_remove = 8; +} + +message .TSK.ActivityOnlyCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSK.ActivityNotificationItemArchive { + required int32 type = 1; + required .TSP.UUID unique_identifier = 2; + repeated .TSP.Reference activities = 3; + optional .TSP.Date first_timestamp = 4; +} + +message .TSK.ActivityNotificationParticipantCacheArchive { + message UniqueIdentifierAndAttempts { + required .TSP.UUID unique_identifier = 1; + required uint32 attempts = 2; + } + repeated .TSP.Reference notification_items = 1; + optional .TSP.Date last_edit_notification_item_sent_date = 2; + repeated .TSK.ActivityNotificationParticipantCacheArchive.UniqueIdentifierAndAttempts sender_failed_to_enqueue_attempts = 3; + required string private_id = 4; + optional .TSP.Date last_comment_notification_item_sent_date = 5; +} + +message .TSK.ActivityNotificationQueueArchive { + repeated .TSP.Reference unprocessed_notification_items = 1; + repeated .TSP.Reference pending_participant_caches = 3; + repeated .TSP.Reference sent_participant_caches = 5; +} + +message .TSK.ActivityStreamTransformationStateArchive { + enum ActionType { + Trasnform = 0; + Coalesce = 1; + } + required int32 next_activity_to_transform_index = 1; + optional int32 oldest_revision_sequence_after_transformed = 2; + optional .TSP.Date last_activity_coalesced_date = 3; + optional .TSK.ActivityStreamTransformationStateArchive.ActionType action_type = 4; + optional int32 transform_to_document_revision_sequence = 5; + repeated fixed64 transform_to_document_revision_identifier = 6 [packed = true]; + optional double timestamp_of_last_activity_when_last_activity_coalescing = 7; + optional bool preserving_revision_sequence_order = 8; +} + +message .TSK.ActivityStreamActivityCounterArchive { + message ActionTypeCounter { + optional int32 action_type = 1; + optional uint32 count = 2; + } + message CursorTypeCounter { + optional int32 cursor_type = 1; + optional uint32 count = 2; + } + repeated .TSK.ActivityStreamActivityCounterArchive.ActionTypeCounter action_type_counter = 1; + repeated .TSK.ActivityStreamActivityCounterArchive.CursorTypeCounter cursor_type_counter = 2; +} + +message .TSK.ActivityStreamRemovedAuthorAuditorPendingStateArchive { + message DateToAuditAndType { + required .TSP.Date date_to_audit = 1; + required int32 type = 2; + } + repeated .TSP.UUID current_author_identifiers = 1; + repeated .TSK.ActivityStreamRemovedAuthorAuditorPendingStateArchive.DateToAuditAndType dates_to_audit = 3; +} + + +message .TSKSOS.FixCorruptedDataCommandArchive { + required .TSK.CommandArchive super = 1; + repeated string corrupted_digest_list = 2; + optional bool corrupted_digest_list_undefined = 3; +} + +message .TSKSOS.RemoveAuthorIdentifiersCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID author_identifiers = 2; + optional bool author_identifiers_undefined = 3; +} + +message .TSKSOS.ResetActivityStreamCommandArchive { + required .TSK.CommandArchive super = 1; +} + + +enum .TSA.GalleryInfoCaptionMode { + GalleryInfoCaptionModeNone = 0; + GalleryInfoCaptionModePerImage = 1; + GalleryInfoCaptionModeAllImages = 2; +} + +enum .TSA.GalleryInfoProperty { + GalleryInfoCaptionProperty = 0; +} + +enum .TSA.GalleryCaptionMode { + GalleryCaptionModeNone = 0; + GalleryCaptionModePerImage = 1; + GalleryCaptionModeAllImages = 2; +} + +enum .TSA.GalleryItemProperty { + GalleryItemPropertyImageData = 0; + GalleryItemPropertyThumbnailImageData = 1; + GalleryItemPropertyAccessibilityDescription = 2; +} + +message .TSA.DocumentArchive { + required .TSK.DocumentArchive super = 1; + repeated .TSWP.TextPresetDisplayItemArchive text_preset_display_items = 2; + optional string document_language = 3; + optional .TSP.Reference calculation_engine = 4; + optional .TSP.Reference view_state = 5; + optional .TSP.Reference function_browser_state = 6; + optional .TSP.Reference tables_custom_format_list = 7; + optional bool needs_media_compatibility_upgrade = 8; + optional string template_identifier = 9; + optional .TSP.Reference shortcut_controller = 10; + optional .TSP.Reference annotation_cache_deprecated = 11; + optional .TSP.Reference custom_format_list = 12; + optional .TSP.Reference annotation_cache_deprecated_2 = 13; + optional bool collaborative_media_compatibility_upgrade_did_fail = 14; + optional bool can_use_hevc = 15; + optional bool is_content_source = 16; +} + +message .TSA.FunctionBrowserStateArchive { + repeated uint32 recent_functions = 1; + repeated uint32 back_functions = 2; + repeated uint32 forward_functions = 3; + optional uint32 current_function = 4; +} + +message .TSA.ThemePresetsArchive { + repeated .TSP.Reference caption_style_presets = 1; + extend .TSS.ThemeArchive { + optional .TSA.ThemePresetsArchive extension = 210; + } +} + +message .TSA.ShortcutControllerArchive { + message ShortcutMapEntry { + required string shortcut = 1; + required .TSP.Reference style = 2; + } + repeated .TSA.ShortcutControllerArchive.ShortcutMapEntry entries = 1; +} + +message .TSA.PropagatePresetCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference preset_change_command = 2; + required bool always_preserve_appearance = 3; +} + +message .TSA.ShortcutCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSP.Reference old_style = 2; + optional .TSP.Reference new_style = 3; + optional string old_shortcut = 4; + optional string new_shortcut = 5; +} + +message .TSA.AddCustomFormatCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSK.CustomFormatArchive custom_format = 2; + optional .TSP.UUID custom_format_key = 3; +} + +message .TSA.UpdateCustomFormatCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSK.CustomFormatArchive custom_format = 2; + optional .TSK.CustomFormatArchive old_custom_format = 3; + optional .TSP.UUID custom_format_key = 4; +} + +message .TSA.ReplaceCustomFormatCommandArchive { + optional .TSK.CommandArchive super = 1; + optional .TSK.CustomFormatArchive custom_format = 2; + optional .TSP.UUID custom_format_key = 3; + optional .TSK.FormatStructArchive replacement_format = 4; +} + +message .TSA.NeedsMediaCompatibilityUpgradeCommandArchive { + required .TSK.CommandArchive super = 1; + optional bool needs_media_compatibility_upgrade = 2; + optional bool old_needs_media_compatibility_upgrade = 3; + optional bool collaborative_media_compatibility_upgrade_did_fail = 4; + optional bool old_collaborative_media_compatibility_upgrade_did_fail = 5; + optional bool can_use_hevc = 6; + optional bool old_can_use_hevc = 7; +} + +message .TSA.ChangeDocumentLocaleCommandArchive { + optional .TSK.CommandArchive super = 1; + optional string old_locale_id = 2; + optional string new_locale_id = 3; + optional .TSK.FormattingSymbolsArchive old_formatting_symbols = 4; + optional .TSK.FormattingSymbolsArchive new_formatting_symbols = 5; +} + +message .TSA.InducedVerifyObjectsWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID object_id_list = 2; + optional bool object_id_list_undefined = 3; + repeated string server_object_s_o_s_string_list = 4; + optional bool server_object_s_o_s_string_list_undefined = 5; + required bool pending_recalc = 6; + required double remote_data_sync_key = 7; +} + +message .TSA.InducedVerifyTransformHistoryWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSK.OperationStorageEntry server_operation_storage_entries = 2; + optional bool server_operation_storage_entries_undefined = 3; +} + +message .TSA.StyleUpdatePropertyMapCommandArchive { + optional .TSWP.StyleUpdatePropertyMapCommandArchive super = 1; +} + +message .TSA.RemoteDataChangeCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSCE.RemoteDataValueMapArchive value_map = 2; + repeated .TSCE.StockArchive quotes = 3; + required double remote_data_sync_key = 4; +} + +message .TSA.GalleryInfoSetValueCommandArchive { + message PropertyValue { + optional .TSA.GalleryInfoCaptionMode caption_mode = 1; + } + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath info_id_path = 2; + optional .TSA.GalleryInfoProperty property = 3; + optional .TSA.GalleryInfoSetValueCommandArchive.PropertyValue value = 4; + optional .TSA.GalleryInfoSetValueCommandArchive.PropertyValue old_value = 5; +} + +message .TSA.GalleryInfoInsertItemsCommandArchive { + required .TSD.ContainerInsertChildrenCommandArchive super = 1; + repeated .TSP.Reference items = 2; +} + +message .TSA.GalleryInfoRemoveItemsCommandArchive { + required .TSD.ContainerRemoveChildrenCommandArchive super = 1; +} + +message .TSA.GalleryItemSetGeometryCommand { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath item_id_path = 2; + optional .TSP.Point offset = 3; + optional float scale = 4 [default = 1]; + optional .TSP.Point old_offset = 5; + optional float old_scale = 6; +} + +message .TSA.GalleryItem { + optional .TSP.Point offset = 1; + optional float scale = 2; + optional .TSP.DataReference image_data = 3; + optional .TSP.DataReference thumbnail_image_data = 4; + optional .TSD.ImageAdjustmentsArchive image_adjustments = 5; + optional .TSP.DataReference adjusted_image_data = 6; + optional .TSP.DataReference thumbnail_adjusted_image_data = 7; + optional .TSP.Reference caption_storage = 8; + optional string accessibility_description = 9; +} + +message .TSA.GalleryInfo { + repeated .TSP.Reference items = 1; + optional .TSA.GalleryCaptionMode caption_mode = 2; + optional .TSP.Reference caption_storage = 3; + extend .TSD.ImageArchive { + optional .TSA.GalleryInfo gallery_info = 200; + } +} + +message .TSA.GallerySelectionTransformer { + required .TSD.DrawableSelectionTransformerArchive super = 1; + optional .TSP.UUIDPath gallery_uuid_path = 2; + optional .TSP.UUIDPath caption_storage_uuid_path = 3; +} + +message .TSA.GalleryItemSelection { + optional .TSP.Reference displayed_item = 1; + repeated .TSP.Reference items = 2; +} + +message .TSA.GalleryItemSelectionTransformer { + optional .TSA.GalleryItemSelectionTransformerHelper transformer_helper = 1; + optional .TSP.UUIDPath caption_storage_uuid_path = 2; +} + +message .TSA.GalleryItemSelectionTransformerHelper { + optional .TSP.UUIDPath displayed_item_uuid_path = 1; + repeated .TSP.UUIDPath item_uuid_paths = 2; +} + +message .TSA.GalleryItemSetValueCommand { + message PropertyValue { + optional .TSP.DataReference image_data = 1; + optional string accessibility_description = 2; + } + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath item_id_path = 2; + optional .TSA.GalleryItemProperty property = 3; + optional .TSA.GalleryItemSetValueCommand.PropertyValue value = 4; + optional .TSA.GalleryItemSetValueCommand.PropertyValue old_value = 5; +} + +message .TSA.CollaboratorGalleryItemCursor { + optional .TSP.UUID displayed_item_id = 1; + repeated .TSP.UUID item_ids = 2; + extend .TSK.CollaboratorCursorArchive { + optional .TSA.CollaboratorGalleryItemCursor gallery_item_cursor = 400; + } +} + +message .TSA.WebVideoInfo { + optional string url = 1; + optional .TSP.DataReference poster_image_data = 2; + optional .TSD.Attribution attribution = 3; + extend .TSD.ImageArchive { + optional .TSA.WebVideoInfo web_video_info = 300; + } +} + +message .TSA.CaptionPlacementArchive { + optional int32 caption_anchor_location = 1; + optional int32 drawable_anchor_location = 2; +} + +message .TSA.CaptionInfoArchive { + required .TSWP.ShapeInfoArchive super = 1; + optional .TSP.Reference placement = 2; + optional .TSD.CaptionOrTitleKind childInfoKind = 3; +} + +message .TSA.TitlePlacementCommandArchive { + required .TSD.InfoCommandArchive super = 1; + optional .TSD.CaptionOrTitleKind placing_child_info_kind = 2; + optional .TSP.Reference placement = 3; + optional .TSP.Reference old_placement = 4; +} + + +message .TSASOS.InducedVerifyActivityStreamWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference server_activities = 2; + optional bool server_activities_undefined = 3; + required double timestamp_of_last_activity_when_last_activity_coalescing = 4; + required int32 next_activity_to_transform_index = 5; + repeated .TSP.UUID author_identifiers_to_verify = 6; + optional bool author_identifiers_to_verify_undefined = 7; +} + +message .TSASOS.DrawableZOrderListArchive { + optional .TSP.UUID container_id = 1; + repeated .TSP.UUID drawable_id_list = 2; + optional bool drawable_id_list_undefined = 3; +} + + +message .TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSASOS.DrawableZOrderListArchive server_drawable_z_order_lists = 2; + optional bool server_drawable_z_order_lists_undefined = 3; +} + +message .TSASOS.PropagateMasterChangeCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID uuids_of_previously_visited_objects = 2; + optional bool uuids_of_previously_visited_objects_undefined = 3; +} + +message .TSASOS.CommandReapplyMasterArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID items_to_visit = 2; + optional bool items_to_visit_undefined = 3; + required bool is_undo = 4; +} + +message .TSASOS.VerifyActivityStreamWithServerCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSASOS.VerifyDocumentWithServerCommandArchive { + required .TSK.CommandArchive super = 1; +} + +message .TSASOS.VerifyDrawableZOrdersWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID drawable_id_list = 2; + optional bool drawable_id_list_undefined = 3; +} + +message .TSASOS.VerifyObjectsWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID object_id_list = 2; + optional bool object_id_list_undefined = 3; +} + +message .TSASOS.VerifyTransformHistoryWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + required int32 sequence_start = 2; + required int32 sequence_end = 3; +} + + +enum .TSP.DataUploadStatus { + DataUploadStatus_Pending = 0; + DataUploadStatus_Reserved = 1; + DataUploadStatus_UnableToReserve = 2; + DataUploadStatus_Corrupted = 3; + DataUploadStatus_DocumentMayExceedDocumentSizeLimit = 4; + DataUploadStatus_Expired = 5; +} + +message .TSP.Reference { + required uint64 identifier = 1; + optional int32 deprecated_type = 2; + optional bool deprecated_is_external = 3; +} + +message .TSP.DataReference { + required uint64 identifier = 1; +} + +message .TSP.SparseReferenceArray { + message Entry { + required uint32 index = 1; + required .TSP.Reference reference = 2; + } + required uint32 count = 1; + repeated .TSP.SparseReferenceArray.Entry entries = 2; +} + +message .TSP.Point { + required float x = 1; + required float y = 2; +} + +message .TSP.Size { + required float width = 1; + required float height = 2; +} + +message .TSP.Range { + required uint32 location = 1; + required uint32 length = 2; +} + +message .TSP.Date { + required double seconds = 1; +} + +message .TSP.IndexSet { + repeated .TSP.Range ranges = 1; +} + +message .TSP.Color { + enum ColorModel { + rgb = 1; + cmyk = 2; + white = 3; + } + enum RGBColorSpace { + srgb = 1; + p3 = 2; + } + required .TSP.Color.ColorModel model = 1; + optional float r = 3; + optional float g = 4; + optional float b = 5; + optional .TSP.Color.RGBColorSpace rgbspace = 12; + optional float a = 6 [default = 1]; + optional float c = 7; + optional float m = 8; + optional float y = 9; + optional float k = 10; + optional float w = 11; +} + +message .TSP.Path { + message Element { + required .TSP.Path.ElementType type = 1; + repeated .TSP.Point points = 2; + } + enum ElementType { + moveTo = 1; + lineTo = 2; + quadCurveTo = 3; + curveTo = 4; + closeSubpath = 5; + } + repeated .TSP.Path.Element elements = 1; +} + +message .TSP.ReferenceDictionary { + message Entry { + required .TSP.Reference key = 1; + required .TSP.Reference value = 2; + } + repeated .TSP.ReferenceDictionary.Entry entries = 1; +} + +message .TSP.UUID { + required uint64 lower = 1; + required uint64 upper = 2; +} + +message .TSP.CFUUIDArchive { + optional bytes uuid_bytes = 1; + optional uint32 uuid_w0 = 2; + optional uint32 uuid_w1 = 3; + optional uint32 uuid_w2 = 4; + optional uint32 uuid_w3 = 5; +} + +message .TSP.UUIDSetArchive { + repeated .TSP.UUID uids = 1; +} + +message .TSP.UUIDMapArchive { + repeated .TSP.UUID source = 1; + repeated .TSP.UUID target = 2; +} + +message .TSP.UUIDMultiMapArchive { + repeated .TSP.UUID source = 1; + repeated .TSP.UUID target = 2; +} + +message .TSP.UUIDCoordArchive { + required .TSP.UUID row_uid = 1; + required .TSP.UUID column_uid = 2; +} + +message .TSP.UUIDRectArchive { + repeated .TSP.UUID column_uids = 1; + repeated .TSP.UUID row_uids = 2; +} + +message .TSP.SparseUUIDArray { + message Entry { + required uint32 index = 1; + required .TSP.UUID uuid = 2; + } + required uint32 count = 1; + repeated .TSP.SparseUUIDArray.Entry entries = 2; +} + +message .TSP.UUIDPath { + repeated .TSP.UUID uuids = 1; +} + +message .TSP.SparseUUIDPathArray { + message Entry { + required uint32 index = 1; + required .TSP.UUIDPath uuid_path = 2; + } + required uint32 count = 1; + repeated .TSP.SparseUUIDPathArray.Entry entries = 2; +} + +message .TSP.PasteboardObject { + optional .TSP.Reference stylesheet = 1; + repeated .TSP.Reference drawables = 2; + repeated .TSP.Reference styles = 3; + optional .TSP.Reference wp_storage = 5; + optional .TSP.Reference guide_storage = 9; + optional .TSP.Reference app_native_object = 6; + optional bool is_text_primary = 7 [default = false]; + optional bool is_smart = 8 [default = false]; + repeated .TSP.Reference presets = 10; + repeated .TSP.Reference top_level_objects = 11; + optional .TSP.Reference native_content_description = 12; +} + +message .TSP.ObjectCollection { + repeated .TSP.Reference objects = 1; +} + +message .TSP.ObjectContainer { + optional uint32 identifier = 1; + repeated .TSP.Reference objects = 2; +} + +message .TSP.DataAttributes { + extensions 100 to 536870911; +} + +message .TSP.LargeArraySegment { + optional bool should_delay_archiving = 1; + optional uint32 delayed_archiving_priority = 2; + optional string package_locator = 3; +} + +message .TSP.LargeNumberArraySegment { + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated double elements = 2; +} + +message .TSP.LargeStringArraySegment { + message OptionalElement { + optional string element = 1; + } + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated .TSP.LargeStringArraySegment.OptionalElement elements = 2; +} + +message .TSP.LargeUUIDArraySegment { + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated .TSP.UUID elements = 2; +} + +message .TSP.LargeLazyObjectArraySegment { + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated .TSP.Reference elements = 2; +} + +message .TSP.LargeObjectArraySegment { + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated .TSP.Reference elements = 2; +} + +message .TSP.LargeArray { + repeated .TSP.Range ranges = 1; + repeated .TSP.Reference segments = 2; + optional uint64 max_segment_element_count = 3; + optional uint64 max_segment_size = 4; + optional bool should_delay_archiving = 5; + optional uint32 delayed_archiving_priority = 6; + optional bool store_outside_object_archive = 7; + optional uint64 estimated_byte_size = 8; + optional uint64 max_segment_cost = 9; +} + +message .TSP.LargeNumberArray { + optional .TSP.LargeArray large_array = 1; +} + +message .TSP.LargeStringArray { + optional .TSP.LargeArray large_array = 1; +} + +message .TSP.LargeLazyObjectArray { + optional .TSP.LargeArray large_array = 1; +} + +message .TSP.LargeObjectArray { + optional .TSP.LargeArray large_array = 1; +} + +message .TSP.LargeUUIDArray { + optional .TSP.LargeArray large_array = 1; +} + + +message .TSP.DatabaseData { + required .TSP.DataReference data = 1; +} + +message .TSP.DatabaseDataArchive { + optional .TSP.Reference data = 1; + optional string app_relative_path = 2; + required string display_name = 3; + optional uint64 length = 4; + optional uint32 hash = 5; + required bool sharable = 6 [default = true]; +} + +message .TSP.DatabaseImageDataArchive { + enum ImageType { + unknown = 0; + bitmap = 1; + pdf = 2; + } + required .TSP.DatabaseDataArchive super = 1; + required .TSP.DatabaseImageDataArchive.ImageType type = 2; +} + + +message .TSP.ArchiveInfo { + optional uint64 identifier = 1; + repeated .TSP.MessageInfo message_infos = 2; + optional bool should_merge = 3; +} + +message .TSP.MessageInfo { + required uint32 type = 1; + repeated uint32 version = 2 [packed = true]; + required uint32 length = 3; + repeated .TSP.FieldInfo field_infos = 4; + repeated uint64 object_references = 5 [packed = true]; + repeated uint64 data_references = 6 [packed = true]; + optional uint32 base_message_index = 7; + repeated uint32 diff_merge_version = 8 [packed = true]; + optional .TSP.FieldPath diff_field_path = 9; + repeated .TSP.FieldPath fields_to_remove = 10; + repeated uint32 diff_read_version = 11 [packed = true]; +} + +message .TSP.FieldInfo { + enum Type { + Value = 0; + ObjectReference = 1; + DataReference = 2; + Message = 3; + } + enum UnknownFieldRule { + IgnoreAndPreserveUntilModified = 0; + IgnoreAndPreserve = 1; + MustUnderstand = 2; + NotSupported = -1; + } + enum KnownFieldRule { + None = 0; + PreserveNewerValueUntilModified = 1; + PreserveNewerValue = 2; + } + required .TSP.FieldPath path = 1; + optional .TSP.FieldInfo.Type type = 2 [default = Value]; + optional .TSP.FieldInfo.UnknownFieldRule unknown_field_rule = 3 [default = IgnoreAndPreserveUntilModified]; + repeated uint64 object_references = 4 [packed = true]; + repeated uint64 data_references = 5 [packed = true]; + optional .TSP.FieldInfo.KnownFieldRule known_field_rule = 6 [default = None]; + repeated uint32 known_field_version = 7 [packed = true]; + optional string known_field_feature_identifier = 8; +} + +message .TSP.FieldPath { + repeated uint32 path = 1 [packed = true]; +} + +message .TSP.ComponentInfo { + required uint64 identifier = 1; + required string preferred_locator = 2; + optional string locator = 3; + repeated uint32 document_read_version = 4 [packed = true]; + repeated uint32 document_write_version = 5 [packed = true]; + repeated .TSP.ComponentExternalReference external_references = 6; + repeated .TSP.ComponentDataReference data_references = 7; + optional bool is_stored_outside_object_archive = 10 [default = false]; + repeated .TSP.ObjectUUIDMapEntry object_uuid_map_entries = 11; + optional uint64 save_token = 12 [default = 0]; + repeated .TSP.FeatureInfo feature_infos = 13; + repeated uint32 component_read_version = 14 [packed = true]; + repeated uint32 component_required_version = 15 [packed = true]; + optional uint32 compression_algorithm = 16; + optional bool can_be_dropped = 17; + repeated .TSP.ComponentExternalReference versioned_external_references = 18; + optional bool is_wasteful = 19; + repeated uint64 ambiguous_object_identifiers = 20 [packed = true]; + optional uint32 required_package_identifier = 21; +} + +message .TSP.ComponentExternalReference { + required uint64 component_identifier = 1; + optional uint64 object_identifier = 2; + optional bool is_weak = 3; +} + +message .TSP.ComponentDataReference { + message ObjectReference { + required uint64 object_identifier = 1; + required uint32 count = 2; + } + required uint64 data_identifier = 1; + repeated .TSP.ComponentDataReference.ObjectReference object_reference_list = 2; +} + +message .TSP.ObjectUUIDMapEntry { + required uint64 identifier = 1; + required .TSP.UUID uuid = 2; +} + +message .TSP.FeatureInfo { + required string identifier = 1; + repeated uint32 read_version = 2 [packed = true]; + repeated uint32 write_version = 3 [packed = true]; +} + +message .TSP.PackageMetadata { + enum PackageType { + Default = 0; + Directory = 1; + SingleFile = 2; + } + required uint64 last_object_identifier = 1; + optional .TSP.DocumentRevision revision = 2; + repeated .TSP.ComponentInfo components = 3; + repeated .TSP.DataInfo datas = 4; + repeated uint32 read_version = 5 [packed = true]; + repeated uint32 write_version = 6 [packed = true]; + repeated uint32 file_format_version = 7 [packed = true]; + optional uint64 save_token = 8 [default = 0]; + optional .TSP.PackageMetadata.PackageType preferred_package_type = 9 [default = Default]; + optional .TSP.Reference data_metadata_map = 10; + repeated .TSP.ComponentInfo versioned_components = 11; +} + +message .TSP.DocumentRevision { + optional int32 sequence_32 = 3 [default = 0]; + optional string identifier = 2; + optional uint64 sequence_64 = 1 [default = 0]; +} + +message .TSP.PasteboardMetadata { + repeated uint32 version = 1 [packed = true]; + required string app_name = 2; + repeated .TSP.DataInfo datas = 3; + optional .TSP.UUID source_document_uuid = 5; + optional .TSP.Reference data_metadata_map = 6; + repeated uint32 read_version = 7 [packed = true]; +} + +message .TSP.DataInfo { + enum DownloadPriority { + High = 0; + Default = 1; + } + required uint64 identifier = 1; + required bytes digest = 2; + required string preferred_file_name = 3; + optional string file_name = 4; + optional string document_resource_locator = 5; + optional bytes source_bookmark_data = 6; + optional string remote_url = 7; + optional bool can_download = 8 [default = false]; + optional .TSP.DataInfo.DownloadPriority download_priority = 9 [default = Default]; + optional .TSP.DataAttributes attributes = 10; + optional .TSP.EncryptionInfo encryption_info = 11; + optional bytes last_mismatched_digest = 12; + optional .TSP.IndexSet unmaterialized_ranges = 13; + optional uint64 remote_data_length = 14; + optional bool remote_data_has_package_storage = 15 [default = false]; + optional .TSP.DataUploadStatus upload_status = 16 [default = DataUploadStatus_Pending]; + optional double remote_data_mtime = 17; + optional uint64 materialized_length = 18; + optional string pasteboard_external_file_path = 99; +} + +message .TSP.DataMetadataMap { + message DataMetadataMapEntry { + required uint64 data_identifier = 1; + required .TSP.Reference data_metadata = 2; + } + repeated .TSP.DataMetadataMap.DataMetadataMapEntry data_metadata_entries = 1; +} + +message .TSP.DataMetadata { + optional .TSP.Color fallback_color = 1; +} + +message .TSP.EncryptionInfo { + optional uint64 decoded_length = 1; + optional uint64 preferred_block_size = 2; + repeated .TSP.EncryptionBlockInfo block_infos = 3; +} + +message .TSP.EncryptionBlockInfo { + required uint64 encoded_length = 1; + optional uint64 decoded_length = 2; +} + +message .TSP.ViewStateMetadata { + repeated uint32 version = 1 [packed = true]; + optional .TSP.UUID version_uuid = 4; + required .TSP.ComponentInfo component = 3; + repeated .TSP.ObjectUUIDMapEntry external_object_uuid_map_entries = 5; + repeated uint32 read_version = 6 [packed = true]; +} + +message .TSP.ObjectSerializationMetadata { + repeated uint32 version = 1 [packed = true]; + optional .TSP.UUID source_document_uuid = 2; + optional .TSP.UUID version_uuid = 3; + required .TSP.ComponentInfo component = 4; + repeated .TSP.DataInfo datas = 5; + repeated .TSP.ObjectUUIDMapEntry external_object_uuid_map_entries = 6; + optional .TSP.Reference data_metadata_map = 7; + repeated uint32 read_version = 8 [packed = true]; +} + +message .TSP.ObjectSerializationDirectory { + message Entry { + required string locator = 1; + required uint64 offset = 2; + required uint64 size = 3; + } + repeated .TSP.ObjectSerializationDirectory.Entry entries = 1; +} + +message .TSP.DataPropertiesEntryV1 { + required bytes digest = 1; + optional bool expects_matched_digest = 2; + optional double creation_time_interval_since_1970 = 3; + repeated uint32 creation_version = 4 [packed = true]; + optional bytes last_mismatched_digest = 5; +} + +message .TSP.DataPropertiesV1 { + repeated .TSP.DataPropertiesEntryV1 properties = 1; +} + +message .TSP.DocumentMetadata { + optional bool is_in_collaboration_mode = 1; + optional .TSP.DataPropertiesV1 data_properties_v1 = 3; +} + +message .TSP.SupportMetadata { + message DataCollaborationProperties { + required bytes digest = 1; + optional bool acknowledged_by_server = 2 [default = false]; + optional bool materialized_on_server = 3 [default = false]; + optional int32 revision_sequence_for_materialized_on_server = 5 [default = 0]; + optional .TSP.DataUploadStatus upload_status = 4 [default = DataUploadStatus_Pending]; + optional bool is_remote_data_ever = 6 [default = false]; + optional int32 revision_sequence_for_acknowledged_by_server = 7 [default = 0]; + } + optional bool is_in_collaboration_mode = 1; + repeated .TSP.SupportMetadata.DataCollaborationProperties data_collaboration_properties = 2; +} + + +message .TSCE.CellReferenceArchive { + required uint32 column = 1; + required uint32 row = 2; + required .TSP.CFUUIDArchive table_id = 3; +} + +message .TSCE.InternalCellReferenceArchive { + required .TSCE.CellCoordinateArchive coordinate = 1; + required uint32 owner_id = 2; +} + +message .TSCE.RelativeCellRefArchive { + optional int32 relative_row_offset = 1; + optional int32 relative_column_offset = 2; + optional .TSP.UUID table_uid = 3; + optional bool preserve_column = 4; + optional bool preserve_row = 5; + optional bool is_spanning_column = 6; + optional bool is_spanning_row = 7; +} + +message .TSCE.RangeReferenceArchive { + required .TSP.CFUUIDArchive table_id = 1; + required uint32 top_left_column = 2; + required uint32 top_left_row = 3; + required uint32 bottom_right_column = 4; + required uint32 bottom_right_row = 5; +} + +message .TSCE.InternalRangeReferenceArchive { + required uint32 owner_id = 1; + required .TSCE.RangeCoordinateArchive range = 2; +} + +message .TSCE.IndexSetArchive { + message IndexSetEntry { + required int32 range_begin = 1; + optional int32 range_end = 2; + } + repeated .TSCE.IndexSetArchive.IndexSetEntry entries = 1; +} + +message .TSCE.CellCoordSetArchive { + message ColumnEntry { + required uint32 column = 1; + required .TSCE.IndexSetArchive row_set = 2; + } + repeated .TSCE.CellCoordSetArchive.ColumnEntry column_entries = 1; +} + +message .TSCE.InternalCellRefSetArchive { + message OwnerEntry { + required uint32 owner_id = 1; + required .TSCE.CellCoordSetArchive coord_set = 2; + } + repeated .TSCE.InternalCellRefSetArchive.OwnerEntry owner_entries = 1; +} + +message .TSCE.ColumnRowSize { + optional uint32 num_columns = 1 [default = 1]; + optional uint32 num_rows = 2 [default = 1]; +} + +message .TSCE.CellRectArchive { + required .TSCE.CellCoordinateArchive origin = 1; + required .TSCE.ColumnRowSize size = 2; +} + +message .TSCE.CellRefSetArchive { + message OwnerEntry { + required .TSP.UUID owner_uid = 1; + required .TSCE.CellCoordSetArchive coord_set = 2; + } + repeated .TSCE.CellRefSetArchive.OwnerEntry owner_entries = 1; +} + +message .TSCE.UidCoordSetArchive { + message ColumnEntry { + required .TSP.UUID column = 1; + repeated .TSP.UUID row_set = 2; + } + repeated .TSCE.UidCoordSetArchive.ColumnEntry column_entries = 1; +} + +message .TSCE.UidCellRefSetArchive { + message OwnerEntry { + required .TSP.UUID owner_uid = 1; + required .TSCE.UidCoordSetArchive coord_set = 2; + } + repeated .TSCE.UidCellRefSetArchive.OwnerEntry owner_entries = 1; +} + +message .TSCE.ReferencesToDirtyArchive { + optional .TSCE.IndexSetArchive to_dirty_owner_ids = 1; + optional .TSCE.InternalCellRefSetArchive to_dirty_cells = 2; + optional .TSCE.InternalCellRefSetArchive to_dirty_cells_additional = 3; + repeated .TSCE.InternalRangeReferenceArchive to_dirty_range_refs = 4; + optional .TSCE.InternalCellRefSetArchive calc_in_progress_cells = 6; + optional .TSCE.InternalCellRefSetArchive to_update_precedents_cells = 7; +} + +message .TSCE.CoordMapperArchive { + message BaseToViewEntry { + required uint32 base_column_or_row = 1; + required uint32 view_column_or_row = 2; + } + message SummaryToViewEntry { + required uint32 summary_column_or_row = 1; + required uint32 view_column_or_row = 2; + } + required .TSP.UUID table_uid = 1; + optional .TSCE.IndexSetArchive summary_rows_set = 2; + optional .TSCE.IndexSetArchive summary_columns_set = 3; + optional .TSCE.IndexSetArchive label_rows_set = 4; + repeated .TSCE.CoordMapperArchive.BaseToViewEntry base_to_view_row_map = 5; + repeated .TSCE.CoordMapperArchive.BaseToViewEntry base_to_view_column_map = 6; + repeated .TSCE.CoordMapperArchive.SummaryToViewEntry summary_to_view_row_map = 7; + repeated .TSCE.CoordMapperArchive.SummaryToViewEntry summary_to_view_column_map = 8; +} + +message .TSCE.ReferenceArchive { + enum ReferenceType { + CELL_REFERENCE = 1; + RANGE_REFERENCE = 2; + NAME_DEPENDENCY = 3; + } + required .TSCE.ReferenceArchive.ReferenceType reference_type = 1; + optional .TSCE.CellReferenceArchive cell_reference = 2; + optional .TSCE.RangeReferenceArchive range_reference = 3; +} + +message .TSCE.EdgeArchive { + required uint32 column = 1; + required uint32 row = 2; + required bool is_precedent = 3; + optional .TSP.CFUUIDArchive owner_id = 4; +} + +message .TSCE.EdgesArchive { + repeated uint32 packed_edge_without_owner = 9; + repeated uint32 packed_edge_with_owner = 10; + repeated .TSP.CFUUIDArchive owner_id_for_edge = 11; + repeated uint32 internal_owner_id_for_edge = 12; +} + +message .TSCE.ExpandedEdgesArchive { + repeated uint32 edge_without_owner_rows = 1; + repeated uint32 edge_without_owner_columns = 2; + repeated uint32 edge_with_owner_rows = 3; + repeated uint32 edge_with_owner_columns = 4; + repeated uint32 internal_owner_id_for_edge = 5; +} + +message .TSCE.CellRecordArchive { + required uint32 column = 1; + required uint32 row = 2; + optional uint64 dirty_self_plus_precedents_count = 3 [default = 0]; + optional bool is_in_a_cycle = 4 [default = false]; + repeated .TSCE.EdgeArchive edge = 5 [deprecated = true]; + optional bool contains_a_formula = 6 [default = true]; + optional bool has_calculated_precedents = 7 [default = false]; + optional bool calculate_precedents_on_next_recalc = 8 [default = false, deprecated = true]; + optional bool translate_for_excel_import_on_next_recalc = 10 [default = false]; + optional .TSCE.EdgesArchive edges = 9; +} + +message .TSCE.CellDependenciesArchive { + repeated .TSCE.CellRecordArchive cell_record = 1; + optional uint32 num_dirty_cells = 2; +} + +message .TSCE.CellRecordExpandedArchive { + required uint32 column = 1; + required uint32 row = 2; + optional uint64 dirty_self_plus_precedents_count = 3 [default = 0]; + optional bool is_in_a_cycle = 4 [default = false]; + optional bool has_calculated_precedents = 5 [default = false]; + optional .TSCE.ExpandedEdgesArchive expanded_edges = 6; +} + +message .TSCE.CellDependenciesExpandedArchive { + repeated .TSCE.CellRecordExpandedArchive cell_record = 1; +} + +message .TSCE.CellRecordTileArchive { + required uint32 internal_owner_id = 1; + required uint32 tile_column_begin = 2; + required uint32 tile_row_begin = 3; + repeated .TSCE.CellRecordExpandedArchive cell_records = 4; +} + +message .TSCE.CellDependenciesTiledArchive { + repeated .TSP.Reference cell_record_tiles = 1; +} + +message .TSCE.VolatileDependenciesArchive { + repeated uint32 volatile_time_cell_column = 1; + repeated uint32 volatile_time_cell_row = 2; + repeated uint32 volatile_random_cell_column = 3; + repeated uint32 volatile_random_cell_row = 4; + repeated uint32 volatile_locale_cell_column = 15; + repeated uint32 volatile_locale_cell_row = 16; + repeated uint32 volatile_location_cell_column = 5; + repeated uint32 volatile_location_cell_row = 6; + repeated uint32 volatile_compass_cell_column = 7; + repeated uint32 volatile_compass_cell_row = 8; + repeated uint32 volatile_remote_data_cell_column = 19; + repeated uint32 volatile_remote_data_cell_row = 20; + repeated uint32 volatile_sheet_table_name_cell_column = 17; + repeated uint32 volatile_sheet_table_name_cell_row = 18; + repeated uint32 calculated_dependency_cell_column = 9; + repeated uint32 calculated_dependency_cell_row = 10; + repeated .TSCE.CellReferenceArchive volatile_geometry_cell_reference = 13; + repeated .TSCE.CellCoordinateArchive volatile_geometry_cell = 11; +} + +message .TSCE.VolatileDependenciesExpandedArchive { + optional .TSCE.CellCoordSetArchive volatile_time_cells = 1; + optional .TSCE.CellCoordSetArchive volatile_random_cells = 2; + optional .TSCE.CellCoordSetArchive volatile_locale_cells = 3; + optional .TSCE.CellCoordSetArchive volatile_sheet_table_name_cells = 4; + optional .TSCE.CellCoordSetArchive volatile_remote_data_cells = 5; + optional .TSCE.InternalCellRefSetArchive volatile_geometry_cell_refs = 7; +} + +message .TSCE.RTreeInternalNodeContentsArchive { + repeated uint32 min = 1; + repeated uint32 max = 2; + required .TSCE.RTreeNodeArchive child = 3; +} + +message .TSCE.RTreeLeafNodeContentsArchive { + repeated uint32 min = 1; + repeated uint32 max = 2; + required .TSCE.CellReferenceArchive cell_reference = 3; +} + +message .TSCE.RTreeNodeArchive { + required uint32 level = 1; + required uint32 count = 2; + repeated .TSCE.RTreeInternalNodeContentsArchive internal_node_contents = 3; + repeated .TSCE.RTreeLeafNodeContentsArchive leaf_node_contents = 4; +} + +message .TSCE.RTreeArchive { + required uint32 data_file_id = 1; + required uint32 data_size = 2; + required uint32 data_num_dims = 3; + required uint32 data_elem_size = 4; + required uint32 data_elem_real_size = 5; + required uint32 data_max_nodes = 6; + required uint32 data_min_nodes = 7; + required .TSCE.RTreeNodeArchive root = 8; +} + +message .TSCE.RangeBackDependencyArchive { + required uint32 cell_coord_row = 1; + required uint32 cell_coord_column = 2; + optional .TSCE.RangeReferenceArchive range_reference = 3; + optional .TSCE.InternalRangeReferenceArchive internal_range_reference = 4; +} + +message .TSCE.RangeDependenciesArchive { + repeated .TSCE.RangeBackDependencyArchive back_dependency = 2; +} + +message .TSCE.RangePrecedentsTileArchive { + message FromToRangeArchive { + required .TSCE.CellCoordinateArchive from_coord = 1; + required .TSCE.CellRectArchive refers_to_rect = 2; + } + required uint32 to_owner_id = 1; + repeated .TSCE.RangePrecedentsTileArchive.FromToRangeArchive from_to_range = 2; +} + +message .TSCE.RangeDependenciesTiledArchive { + repeated .TSP.Reference range_precedents_tile = 1; +} + +message .TSCE.SpanningDependenciesArchive { + message ReferringColumnToLocalCells { + required uint32 column = 1; + required .TSCE.SpanningDependenciesArchive.RangeContext range_context = 2; + repeated .TSCE.CellCoordinateArchive cell_coordinate = 3; + } + message ReferringColumnToRemoteCells { + required uint32 column = 1; + required .TSCE.SpanningDependenciesArchive.RangeContext range_context = 2; + repeated .TSCE.InternalCellReferenceArchive internal_cell_reference = 3; + } + enum RangeContext { + DEFAULT = 0; + INCLUDE_HEADERS = 1; + } + repeated uint32 column = 1; + repeated .TSCE.SpanningDependenciesArchive.RangeContext range_context = 2; + repeated .TSCE.CellReferenceArchive cell = 3; + optional .TSCE.RangeCoordinateArchive total_range_for_deleted_table = 4; + optional .TSCE.RangeCoordinateArchive body_range_for_deleted_table = 5; + repeated .TSCE.SpanningDependenciesArchive.ReferringColumnToLocalCells referring_column_to_local_cells = 6; + repeated .TSCE.SpanningDependenciesArchive.ReferringColumnToRemoteCells referring_column_to_remote_cells = 7; +} + +message .TSCE.SpanningDependenciesExpandedArchive { + message ExtentRange { + required uint32 extent_begin = 1; + optional uint32 extent_end = 2; + } + message ExtentRangeWithTableWithContext { + required uint32 owner_id = 1; + required .TSCE.SpanningDependenciesExpandedArchive.RangeContext range_context = 2; + repeated .TSCE.SpanningDependenciesExpandedArchive.ExtentRange ranges = 3; + } + message CellCoordRefersToExtents { + required .TSCE.CellCoordinateArchive coordinate = 1; + repeated .TSCE.SpanningDependenciesExpandedArchive.ExtentRangeWithTableWithContext ranges_by_table_context = 2; + } + enum RangeContext { + DEFAULT = 0; + INCLUDE_HEADERS = 1; + } + repeated .TSCE.SpanningDependenciesExpandedArchive.CellCoordRefersToExtents coord_refers_to_spans = 1; + optional .TSCE.RangeCoordinateArchive total_range_for_table = 2; + optional .TSCE.RangeCoordinateArchive body_range_for_table = 3; +} + +message .TSCE.WholeOwnerDependenciesArchive { + repeated .TSCE.InternalCellReferenceArchive dependent_cell = 1; +} + +message .TSCE.WholeOwnerDependenciesExpandedArchive { + optional .TSCE.InternalCellRefSetArchive dependent_cells = 1; +} + +message .TSCE.CellErrorsArchive { + message ErrorForCell { + required .TSCE.CellCoordinateArchive coordinate = 1; + required .TSCE.CellErrorsArchive.ErrorFlavor error_flavor = 2; + optional .TSCE.InternalCellReferenceArchive err_due_to_cell = 3; + } + enum ErrorFlavor { + NONE = 0; + ERROR = 1; + REF_ERROR = 2; + CIRCULAR_REF_ERROR = 3; + UNSUPPORTED_FUNCTION_ERROR = 4; + } + repeated .TSCE.CellErrorsArchive.ErrorForCell errors = 1; +} + +message .TSCE.UuidReferencesArchive { + message TableRef { + required .TSP.UUID owner_uuid = 1; + optional .TSCE.CellCoordSetArchive coord_set = 2; + } + message UuidRef { + required .TSP.UUID uuid = 1; + optional .TSCE.CellCoordSetArchive coord_set = 2; + } + message TableWithUuidRef { + required .TSP.UUID owner_uuid = 1; + repeated .TSCE.UuidReferencesArchive.UuidRef uuid_refs = 2; + } + repeated .TSCE.UuidReferencesArchive.TableRef table_refs = 1; + repeated .TSCE.UuidReferencesArchive.TableWithUuidRef table_uuid_refs = 2; +} + +message .TSCE.FormulaOwnerDependenciesArchive { + required .TSP.UUID formula_owner_uid = 1; + required uint32 internal_formula_owner_id = 2; + optional uint32 owner_kind = 3 [default = 0]; + optional .TSCE.CellDependenciesExpandedArchive cell_dependencies = 4; + optional .TSCE.RangeDependenciesArchive range_dependencies = 5; + optional .TSCE.VolatileDependenciesExpandedArchive volatile_dependencies = 6; + optional .TSCE.SpanningDependenciesExpandedArchive spanning_column_dependencies = 7; + optional .TSCE.SpanningDependenciesExpandedArchive spanning_row_dependencies = 8; + optional .TSCE.WholeOwnerDependenciesExpandedArchive whole_owner_dependencies = 9; + optional .TSCE.CellErrorsArchive cell_errors = 10; + optional .TSP.Reference formula_owner = 11; + optional .TSP.UUID base_owner_uid = 12; + optional .TSCE.CellDependenciesTiledArchive tiled_cell_dependencies = 13; + optional .TSCE.UuidReferencesArchive uuid_references = 14; + optional .TSCE.RangeDependenciesTiledArchive tiled_range_dependencies = 15; +} + +message .TSCE.FormulaOwnerInfoArchive { + required .TSP.CFUUIDArchive formula_owner_id = 1; + optional .TSCE.CellDependenciesArchive cell_dependencies = 2; + optional .TSCE.RangeDependenciesArchive range_dependencies = 3; + optional .TSCE.VolatileDependenciesArchive volatile_dependencies = 4; + optional .TSCE.SpanningDependenciesArchive spanning_column_dependencies = 5; + optional .TSCE.SpanningDependenciesArchive spanning_row_dependencies = 6; + optional .TSCE.WholeOwnerDependenciesArchive whole_owner_dependencies = 8; + optional .TSCE.CellErrorsArchive cell_errors = 9; + optional .TSP.Reference formula_owner = 7; +} + +message .TSCE.SubFormulaOwnerIDArchive { + required .TSP.UUID base_owner_uid = 1; + required uint32 owner_kind = 2; +} + +message .TSCE.OwnerIDMapArchive { + message OwnerIDMapArchiveEntry { + required uint32 internal_owner_id = 1; + required .TSP.CFUUIDArchive owner_id = 2; + } + repeated .TSCE.OwnerIDMapArchive.OwnerIDMapArchiveEntry map_entry = 1; + repeated uint32 unregistered_internal_owner_id = 2; +} + +message .TSCE.UidLookupListArchive { + repeated .TSP.UUID uuids = 1; +} + +message .TSCE.DependencyTrackerArchive { + repeated .TSCE.FormulaOwnerInfoArchive formula_owner_info = 1; + repeated .TSCE.CellReferenceArchive dirty_leaf = 2 [deprecated = true]; + optional .TSCE.OwnerIDMapArchive owner_id_map = 3; + repeated .TSCE.InternalCellReferenceArchive internal_dirty_leaf = 4 [deprecated = true]; + optional uint64 number_of_formulas = 5; + repeated .TSP.Reference formula_owner_dependencies = 6; +} + +message .TSCE.RemoteDataSpecifierArchive { + required uint32 function_index = 1; + required string symbol = 2; + required uint32 attribute = 3; + optional double date = 4; +} + +message .TSCE.RemoteDataValueMapArchive { + message RemoteDataMapEntry { + required .TSCE.RemoteDataSpecifierArchive specifier = 1; + required .TSCE.CellValueArchive value = 2; + } + repeated .TSCE.RemoteDataValueMapArchive.RemoteDataMapEntry entry = 1; +} + +message .TSCE.StockArchive { + message AttributeEntry { + required uint32 attribute = 1; + required string value = 2; + } + required string symbol = 1; + optional double date = 2; + repeated .TSCE.StockArchive.AttributeEntry attribute = 3; +} + +message .TSCE.RemoteDataStoreArchive { + required .TSCE.RemoteDataValueMapArchive value_map = 1; + repeated .TSCE.StockArchive stocks = 2; +} + +message .TSCE.NameTrackedReferencePair { + required string name = 1; + optional .TSP.Reference tracked_reference = 2; + optional uint32 tracked_reference_id = 3; +} + +message .TSCE.NamesByTrackedReferenceArchive { + required .TSP.CFUUIDArchive table_id = 1; + repeated .TSCE.NameTrackedReferencePair name_tracked_reference_pair = 2; +} + +message .TSCE.NamedReferenceManagerArchive { + required .TSP.Reference reference_tracker = 1; + repeated .TSCE.NamesByTrackedReferenceArchive names_by_tracked_reference_by_table = 2 [deprecated = true]; +} + +message .TSCE.UuidSetStoreArchive { + message UuidSet { + repeated .TSP.UUID uuid = 1; + required uint32 index_of_set = 2; + } + repeated .TSCE.UuidSetStoreArchive.UuidSet uuidSet = 1; +} + +message .TSCE.UuidReferenceMapArchive { + message CellRefsForUuid { + required .TSP.UUID uuid = 1; + repeated .TSCE.InternalCellReferenceArchive cell_ref = 2; + optional .TSCE.InternalCellRefSetArchive cell_refs = 3; + } + repeated .TSCE.UuidReferenceMapArchive.CellRefsForUuid cell_refs_for_uuid = 1; +} + +message .TSCE.GroupByNodeMapArchive { + message CellRefsForGroupNode { + required .TSP.UUID group_node_uid = 1; + optional .TSCE.InternalCellRefSetArchive cell_refs = 3; + } + message GroupNodesForGroupBy { + required .TSP.UUID group_by_uid = 1; + repeated .TSCE.GroupByNodeMapArchive.CellRefsForGroupNode refs_for_group_node = 2; + } + repeated .TSCE.GroupByNodeMapArchive.GroupNodesForGroupBy refs_for_group_by = 1; +} + +message .TSCE.CalculationEngineArchive { + enum ExcelImportDateMode { + DATE_MODE_1900 = 1; + DATE_MODE_1900_LEGACY = 2; + DATE_MODE_1904_LEGACY = 3; + } + optional bool base_date_1904 = 1; + required .TSCE.DependencyTrackerArchive dependency_tracker = 2; + optional .TSP.Reference named_reference_manager = 3; + optional .TSCE.CalculationEngineArchive.ExcelImportDateMode excel_import_date_mode = 4 [default = DATE_MODE_1900]; + optional string saved_locale_identifier_for_4_2 = 5; + optional uint64 document_random_seed = 6; + optional .TSCE.UuidReferenceMapArchive uuid_reference_map = 7; + optional double document_timestamp = 9; + optional string document_timezone = 10; + optional .TSCE.RewriteTableUIDInfoArchive table_uid_history = 11; + optional .TSP.Reference remote_data_store = 12; + optional .TSCE.GroupByNodeMapArchive group_node_map = 13; + optional .TSP.Reference header_name_manager = 14; + optional .TSP.Reference refs_to_dirty = 15; + optional string saved_locale_identifier = 16; + repeated .TSP.UUID begin_tracking_names_legacy_nrm = 17; + repeated .TSP.UUID end_tracking_names_legacy_nrm = 18; +} + +message .TSCE.PreserveColumnRowFlagsArchive { + required bool begin_row_is_absolute = 1; + required bool begin_column_is_absolute = 2; + optional bool end_row_is_absolute = 3; + optional bool end_column_is_absolute = 4; +} + +message .TSCE.CategoryReferenceArchive { + message CatRefUidList { + repeated .TSP.UUID uid = 1; + } + required .TSP.UUID group_by_uid = 1; + required .TSP.UUID column_uid = 2; + required uint32 aggregate_type = 3; + required sint32 group_level = 4; + optional .TSCE.CategoryReferenceArchive.CatRefUidList group_uids = 6; + optional .TSCE.PreserveColumnRowFlagsArchive preserve_flags = 7; + optional int32 relative_column = 8; + optional .TSP.UUID relative_group_uid = 9; + optional .TSP.UUID absolute_group_uid = 10; + optional bool option_refers_to_pivot_rows = 11; + optional bool option_refers_to_pivot_columns = 12; + optional uint32 agg_index_level = 13; + optional bool option_show_aggregate_name = 14; +} + +message .TSCE.ASTNodeArrayArchive { + message ASTLocalCellReferenceNodeArchive { + required uint32 row_handle = 1; + required uint32 column_handle = 2; + required uint32 row_is_sticky = 3; + required uint32 column_is_sticky = 4; + } + message ASTCrossTableCellReferenceNodeArchive { + required uint32 row_handle = 1; + required uint32 column_handle = 2; + required uint32 row_is_sticky = 3; + required uint32 column_is_sticky = 4; + required .TSP.CFUUIDArchive table_id = 5; + optional string AST_reference_whitespace_after_sheet_name = 6; + optional string AST_reference_whitespace_before_table_name = 7; + optional string AST_reference_whitespace_after_table_name = 8; + optional string AST_reference_whitespace_before_cell_address = 9; + } + message ASTColumnCoordinateArchive { + required sint32 column = 1; + optional bool absolute = 2 [default = false]; + } + message ASTRowCoordinateArchive { + required sint32 row = 1; + optional bool absolute = 2 [default = false]; + } + message ASTUidList { + repeated .TSP.UUID uid = 1; + } + message ASTUidTract { + required .TSCE.ASTNodeArrayArchive.ASTUidList columnUids = 1; + required .TSCE.ASTNodeArrayArchive.ASTUidList rowUids = 2; + optional bool is_range_ref = 3; + optional .TSCE.ASTNodeArrayArchive.ASTUidTractPurpose purpose = 4; + optional bool preserve_rectangular = 5 [default = true]; + } + message ASTStickyBits { + required bool begin_row_is_absolute = 1; + required bool begin_column_is_absolute = 2; + required bool end_row_is_absolute = 3; + required bool end_column_is_absolute = 4; + } + message ASTUidTractList { + repeated .TSCE.ASTNodeArrayArchive.ASTUidTract tract = 1; + required .TSCE.ASTNodeArrayArchive.ASTStickyBits sticky_bits = 2; + } + message ASTUidCoordinateArchive { + required .TSP.UUID column_uid = 1; + required .TSP.UUID row_uid = 2; + required bool column_absolute = 3; + required bool row_absolute = 4; + } + message ASTCategoryLevels { + required uint32 AST_column_group_level = 1; + required uint32 AST_row_group_level = 2; + optional uint32 AST_agg_index_level = 3; + } + message ASTCategoryReferenceArchive { + required .TSCE.CategoryReferenceArchive category_ref = 1; + } + message ASTColonTractArchive { + message ASTColonTractRelativeRangeArchive { + required int32 range_begin = 1; + optional int32 range_end = 2; + } + message ASTColonTractAbsoluteRangeArchive { + required uint32 range_begin = 1; + optional uint32 range_end = 2; + } + repeated .TSCE.ASTNodeArrayArchive.ASTColonTractArchive.ASTColonTractRelativeRangeArchive relative_column = 1; + repeated .TSCE.ASTNodeArrayArchive.ASTColonTractArchive.ASTColonTractRelativeRangeArchive relative_row = 2; + repeated .TSCE.ASTNodeArrayArchive.ASTColonTractArchive.ASTColonTractAbsoluteRangeArchive absolute_column = 3; + repeated .TSCE.ASTNodeArrayArchive.ASTColonTractArchive.ASTColonTractAbsoluteRangeArchive absolute_row = 4; + optional bool preserve_rectangular = 5 [default = true]; + } + message ASTCrossTableReferenceExtraInfoArchive { + required .TSP.CFUUIDArchive table_id = 1; + optional string AST_reference_whitespace_after_sheet_name = 2; + optional string AST_reference_whitespace_before_table_name = 3; + optional string AST_reference_whitespace_after_table_name = 4; + optional string AST_reference_whitespace_before_cell_address = 5; + } + message ASTLetNodeWhitespace { + optional string AST_let_whitespace_after_let = 1; + optional string AST_let_whitespace_after_identifier = 2; + optional string AST_let_whitespace_after_equals = 3; + optional string AST_let_whitespace_after_delimiter = 4; + } + message ASTNodeArchive { + required .TSCE.ASTNodeArrayArchive.ASTNodeType AST_node_type = 1; + optional uint32 AST_function_node_index = 2; + optional uint32 AST_function_node_numArgs = 3; + optional double AST_number_node_number = 4; + optional bool AST_boolean_node_boolean = 5; + optional string AST_string_node_string = 6; + optional double AST_date_node_dateNum = 7; + optional bool AST_date_node_suppress_date_format = 19; + optional bool AST_date_node_suppress_time_format = 20; + optional string AST_date_node_date_time_format = 21; + optional double AST_duration_node_unitNum = 8; + optional int32 AST_duration_node_unit = 9; + optional uint32 AST_duration_node_style = 22; + optional uint32 AST_duration_node_duration_unit_largest = 23; + optional uint32 AST_duration_node_duration_unit_smallest = 24; + optional bool AST_duration_node_use_automatic_units = 29; + optional bool AST_token_node_boolean = 10; + optional uint32 AST_array_node_numCol = 11; + optional uint32 AST_array_node_numRow = 12; + optional uint32 AST_list_node_numArgs = 13; + optional .TSCE.ASTNodeArrayArchive AST_thunk_node_array = 14; + optional .TSCE.ASTNodeArrayArchive.ASTLocalCellReferenceNodeArchive AST_local_cell_reference_node_reference = 15; + optional .TSCE.ASTNodeArrayArchive.ASTCrossTableCellReferenceNodeArchive AST_cross_table_cell_reference_node_reference = 16; + optional string AST_unknown_function_node_string = 17; + optional uint32 AST_unknown_function_node_numArgs = 18; + optional string AST_whitespace = 25; + optional .TSCE.ASTNodeArrayArchive.ASTColumnCoordinateArchive AST_column = 26; + optional .TSCE.ASTNodeArrayArchive.ASTRowCoordinateArchive AST_row = 27; + optional .TSCE.ASTNodeArrayArchive.ASTCrossTableReferenceExtraInfoArchive AST_cross_table_reference_extra_info = 28; + optional .TSCE.ASTNodeArrayArchive.ASTUidCoordinateArchive AST_uid_coordinate = 30; + optional .TSCE.ASTNodeArrayArchive.ASTStickyBits AST_sticky_bits = 33; + optional .TSCE.ASTNodeArrayArchive.ASTStickyBits AST_frozen_sticky_bits = 41; + optional string AST_let_identifier = 34; + optional .TSCE.ASTNodeArrayArchive AST_let_e2 = 35; + optional .TSCE.ASTNodeArrayArchive.ASTLetNodeWhitespace AST_let_whitespace = 36; + optional uint32 AST_symbol = 37; + optional .TSCE.ASTNodeArrayArchive.ASTUidTractList AST_tract_list = 38; + optional .TSCE.ASTNodeArrayArchive.ASTCategoryReferenceArchive AST_category_ref = 39; + optional .TSCE.ASTNodeArrayArchive.ASTColonTractArchive AST_colon_tract = 40; + optional uint64 AST_number_node_decimal_low = 42; + optional uint64 AST_number_node_decimal_high = 43; + optional .TSCE.ASTNodeArrayArchive.ASTCategoryLevels AST_category_levels = 44; + } + enum ASTNodeType { + ADDITION_NODE = 1; + SUBTRACTION_NODE = 2; + MULTIPLICATION_NODE = 3; + DIVISION_NODE = 4; + POWER_NODE = 5; + CONCATENATION_NODE = 6; + GREATER_THAN_NODE = 7; + GREATER_THAN_OR_EQUAL_TO_NODE = 8; + LESS_THAN_NODE = 9; + LESS_THAN_OR_EQUAL_TO_NODE = 10; + EQUAL_TO_NODE = 11; + NOT_EQUAL_TO_NODE = 12; + NEGATION_NODE = 13; + PLUS_SIGN_NODE = 14; + PERCENT_NODE = 15; + FUNCTION_NODE = 16; + NUMBER_NODE = 17; + BOOLEAN_NODE = 18; + STRING_NODE = 19; + DATE_NODE = 20; + DURATION_NODE = 21; + EMPTY_ARGUMENT_NODE = 22; + TOKEN_NODE = 23; + ARRAY_NODE = 24; + LIST_NODE = 25; + THUNK_NODE = 26; + LOCAL_CELL_REFERENCE_NODE = 27; + CROSS_TABLE_CELL_REFERENCE_NODE = 28; + COLON_NODE = 29; + REFERENCE_ERROR_NODE = 30; + UNKNOWN_FUNCTION_NODE = 31; + APPEND_WHITESPACE_NODE = 32; + PREPEND_WHITESPACE_NODE = 33; + BEGIN_EMBEDDED_NODE_ARRAY = 34; + END_THUNK_NODE = 35; + CELL_REFERENCE_NODE = 36; + COLON_NODE_WITH_UIDS = 45; + REFERENCE_ERROR_WITH_UIDS = 46; + UID_REFERENCE_NODE = 48; + LET_BIND_NODE = 52; + LET_VAR_NODE = 53; + LET_END_SCOPE_NODE = 54; + LINKED_CELL_REF_NODE = 63; + LINKED_COLUMN_REF_NODE = 64; + LINKED_ROW_REF_NODE = 65; + CATEGORY_REF_NODE = 66; + COLON_TRACT_NODE = 67; + VIEW_TRACT_REF_NODE = 68; + } + enum ASTUidTractPurpose { + UIDS_INCLUDED = 0; + UIDS_PREMERGE = 1; + UIDS_PREMOVEREGION = 2; + UIDS_EXCLUDED = 3; + UIDS_ACTIVE = 4; + UIDS_PREMERGE_TOPLEFT = 5; + UIDS_REMOVED_BY_MOVE = 6; + FULLTUPLE_ROW_COLUMN_HEADER = 7; + FULLTUPLE_AGGREGATE_RULE_UID = 8; + FULLTUPLE_ROW_COLUMN_RULE_VALUE_PAIRS = 9; + } + repeated .TSCE.ASTNodeArrayArchive.ASTNodeArchive AST_node = 1; +} + +message .TSCE.FormulaTranslationFlagsArchive { + optional bool excel_import_translation = 1 [default = false]; + optional bool number_to_date_coercion_removal_translation = 2 [default = false]; + optional bool contains_uid_form_references = 3 [default = false]; + optional bool contains_frozen_references = 4 [default = false]; + optional bool returns_percent_formatted = 5 [default = false]; +} + +message .TSCE.FormulaArchive { + required .TSCE.ASTNodeArrayArchive AST_node_array = 1; + optional uint32 host_column = 2; + optional uint32 host_row = 3; + optional bool host_column_is_negative = 4 [default = false]; + optional bool host_row_is_negative = 5 [default = false]; + optional .TSCE.FormulaTranslationFlagsArchive translation_flags = 6; + optional .TSP.UUID host_table_uid = 7; + optional .TSP.UUID host_column_uid = 8; + optional .TSP.UUID host_row_uid = 9; +} + +message .TSCE.FunctorArchive { + required .TSCE.FormulaArchive formula = 1; + required uint32 num_args = 2; +} + +message .TSCE.FormatStructArchive { + required uint32 format_type = 1; + optional uint32 decimal_places = 2; + optional string currency_code = 3; + optional uint32 negative_style = 4; + optional bool show_thousands_separator = 5; + optional bool use_accounting_style = 6; + optional uint32 duration_style = 7; + optional uint32 base = 8; + optional uint32 base_places = 9; + optional bool base_use_minus_sign = 10; + optional uint32 fraction_accuracy = 11; + optional bool suppress_date_format = 12; + optional bool suppress_time_format = 13; + optional string date_time_format = 14; + optional uint32 duration_unit_largest = 15; + optional uint32 duration_unit_smallest = 16; +} + +message .TSCE.RangeCoordinateArchive { + required uint32 top_left_column = 1; + required uint32 top_left_row = 2; + required uint32 bottom_right_column = 3; + required uint32 bottom_right_row = 4; +} + +message .TSCE.TableTransposeInfoArchive { + required uint32 number_of_footer_rows = 3; + required .TSCE.RangeCoordinateArchive body_range_for_transposed_table = 4; +} + +message .TSCE.MergeOriginMovedArchive { + repeated uint32 src_column = 1; + repeated uint32 src_row = 2; + repeated uint32 dst_column = 3; + repeated uint32 dst_row = 4; +} + +message .TSCE.OwnerUIDMapperArchive { + required .TSP.UUID table_uid = 1; + required .TSP.UUID next_table_uid = 2; + required .TSP.UUID hidden_state_for_rows_owner_uid = 3; + required .TSP.UUID next_hidden_state_for_rows_owner_uid = 4; + required .TSP.UUID hidden_state_for_columns_owner_uid = 5; + required .TSP.UUID next_hidden_state_for_columns_owner_uid = 6; + required .TSP.UUID conditional_style_owner_uid = 7; + required .TSP.UUID next_conditional_style_owner_uid = 8; + required .TSP.UUID sort_rule_reference_tracker_owner_uid = 9; + required .TSP.UUID next_sort_rule_reference_tracker_owner_uid = 10; + required .TSP.UUID merge_owner_uid = 11; + required .TSP.UUID next_merge_owner_uid = 12; + required .TSP.UUID category_aggregates_owner_uid = 15; + required .TSP.UUID next_category_aggregates_owner_uid = 16; + required .TSP.UUID group_by_uid = 17; + required .TSP.UUID next_group_by_uid = 18; + required .TSP.UUID pencil_annotation_owner_uid = 19; + required .TSP.UUID next_pencil_annotation_owner_uid = 20; +} + +message .TSCE.RewriteTableUIDInfoArchive { + message TableUIDMapEntryArchive { + required .TSP.UUID prev_table_uid = 1; + required .TSP.UUID new_table_uid = 2; + } + repeated .TSCE.RewriteTableUIDInfoArchive.TableUIDMapEntryArchive table_uid_map = 1; +} + +message .TSCE.GroupByChangeArchive { + message GroupingColumnChangeArchive { + required uint32 old_level = 1; + required uint32 new_level = 2; + } + enum ChangeType { + NONE = 0; + GROUP_VALUE_CHANGE = 1; + GROUP_DEFINITION_CHANGE = 2; + REMOVE_GROUP_LEVEL = 3; + ADD_GROUP_LEVEL = 4; + PROMOTE = 5; + DEMOTE = 6; + } + required .TSCE.GroupByChangeArchive.ChangeType change_type = 1; + required .TSP.UUID group_by_uid = 2; + optional uint32 previous_level = 3; + optional uint32 updated_level = 4; + optional .TSP.UUIDMapArchive previous_to_updated_map = 5; + optional .TSP.UUIDMapArchive updated_to_previous_map = 6; + repeated .TSP.UUID removed_group_uids = 7; + repeated .TSCE.GroupByChangeArchive.GroupingColumnChangeArchive grouping_column_changes = 8; +} + +message .TSCE.RewriteGroupNodeUIDInfoArchive { + optional .TSP.UUID group_by_uid = 1; + required .TSP.UUIDMapArchive group_node_uid_map = 2; +} + +message .TSCE.IndexedUidsArchive { + message IndexedUid { + required .TSP.UUID uid_for_index = 1; + required uint32 index_for_uid = 2; + } + repeated .TSCE.IndexedUidsArchive.IndexedUid uids = 1; +} + +message .TSCE.RewriteRangeEntryArchive { + required uint32 range_location = 1; + required uint32 range_length = 2; + repeated .TSP.UUID range_uids = 3; + required uint32 offset = 4; +} + +message .TSCE.ColumnOrRowUuidsInfoArchive { + required bool is_rows = 1; + required .TSP.UUID table_uid = 2; + required .TSP.UUID cond_style_owner_uid = 3; + required .TSP.UUID group_by_uid = 4; + required .TSCE.IndexedUidsArchive uids = 5; + repeated .TSCE.RewriteRangeEntryArchive range_entries = 6; + required .TSCE.RangeCoordinateArchive table_range = 7; + optional .TSP.UUID insert_at_uid = 8; + optional .TSP.UUID insert_opposite_uid = 9; +} + +message .TSCE.RegionInfoArchive { + required .TSP.UUID table_uid = 1; + required .TSCE.IndexedUidsArchive column_uids = 2; + required .TSCE.IndexedUidsArchive row_uids = 3; +} + +message .TSCE.RegionMovedInfoArchive { + required .TSCE.RegionInfoArchive src_region = 1; + required .TSCE.RegionInfoArchive dst_region = 2; + optional bool span_rows = 3; + optional bool span_columns = 4; + optional .TSCE.RegionInfoArchive original_src_region = 5; + optional .TSP.UUID final_dest_table_uid = 6; +} + +message .TSCE.MergeSourceArchive { + required uint32 coord_column = 1; + required uint32 coord_row = 2; +} + +message .TSCE.HauntedOwnerArchive { + required .TSP.UUID owner_uid = 1; +} + +message .TSCE.CellCoordinateArchive { + optional fixed32 packedData = 1; + optional uint32 column = 2; + optional uint32 row = 3; +} + +message .TSCE.CellCoordinateVectorArchive { + repeated .TSCE.CellCoordinateArchive cell_coord = 1; +} + +message .TSCE.ExpandedCellRefObjectPairArchive { + required .TSCE.CellReferenceArchive cell_ref = 1; + required .TSP.Reference object = 2; +} + +message .TSCE.ExpandedCellRefObjectMapArchive { + repeated .TSCE.ExpandedCellRefObjectPairArchive cell_ref_object_pair = 1; +} + +message .TSCE.FormulaAtCoordArchive { + required uint32 column = 1; + required uint32 row = 2; + optional .TSCE.FormulaArchive formula = 3; + optional bool repeat_previous_formula = 4 [default = false]; +} + +message .TSCE.FormulaCoordPairsByOwnerArchive { + required uint32 owner_kind = 1; + optional .TSP.UUID owner_uid = 2; + repeated .TSCE.FormulaAtCoordArchive formula_at_coords = 3; +} + +message .TSCE.FormulasForUndoArchive { + repeated .TSCE.FormulaCoordPairsByOwnerArchive formulas_for_owner = 1; +} + +message .TSCE.FormulaRewriteCommandArchive { + optional .TSP.Reference table_rewrite_command = 1; + optional .TSK.CommandArchive super = 2; +} + +message .TSCE.TrackedReferenceArchive { + required .TSCE.ASTNodeArrayArchive ast = 1; + required uint32 formula_id = 2; +} + +message .TSCE.ExpandedTrackedReferenceArchive { + required .TSCE.ASTNodeArrayArchive ast = 1; + required uint32 formula_column = 2; + required uint32 formula_row = 3; +} + +message .TSCE.TrackedReferenceStoreArchive { + required .TSP.CFUUIDArchive uuid = 1; + repeated .TSP.Reference tracked_reference = 2 [deprecated = true]; + repeated .TSCE.TrackedReferenceArchive contained_tracked_reference = 3; + repeated .TSCE.ExpandedTrackedReferenceArchive contained_expanded_tracked_reference = 4; +} + +message .TSCE.ViewTractRefArchive { + required .TSP.UUID table_uid = 1; + optional .TSCE.ASTNodeArrayArchive.ASTUidTract uid_tract = 2; + optional .TSCE.PreserveColumnRowFlagsArchive preserve_flags = 3; + optional uint32 agg_index_level = 4; + optional sint32 column_group_level = 5; + optional sint32 row_group_level = 6; +} + +message .TSCE.BooleanCellValueArchive { + required bool value = 1; + optional .TSK.FormatStructArchive format = 2; + optional bool format_is_explicit = 3 [default = false]; +} + +message .TSCE.DateCellValueArchive { + required double value = 1; + required .TSK.FormatStructArchive format = 2; + optional bool format_is_implicit = 3 [deprecated = true]; + optional bool format_is_explicit = 4 [default = false]; +} + +message .TSCE.NumberCellValueArchive { + optional double value = 1; + optional int32 unit_index = 2; + optional string currency_code = 5; + required .TSK.FormatStructArchive format = 3; + optional bool format_is_implicit = 4 [deprecated = true]; + optional bool format_is_explicit = 6 [default = false]; + optional uint64 decimal_low = 7; + optional uint64 decimal_high = 8; +} + +message .TSCE.StringCellValueArchive { + required string value = 1; + required .TSK.FormatStructArchive format = 2; + optional bool format_is_implicit = 3 [deprecated = true]; + optional bool format_is_explicit = 4 [default = false]; + optional bool is_regex = 5 [default = false]; + optional bool is_case_sensitive_regex = 6 [default = false]; +} + +message .TSCE.ErrorCellValueArchive { + required int32 error_type = 1; + optional int32 extra_info_int = 3; + optional string extra_info_string = 4; + optional double extra_info_double = 5; +} + +message .TSCE.CellValueArchive { + enum CellValueType { + NIL_TYPE = 1; + BOOLEAN_TYPE = 2; + DATE_TYPE = 3; + NUMBER_TYPE = 4; + STRING_TYPE = 5; + } + required .TSCE.CellValueArchive.CellValueType cell_value_type = 1; + optional .TSCE.BooleanCellValueArchive boolean_value = 2; + optional .TSCE.DateCellValueArchive date_value = 3; + optional .TSCE.NumberCellValueArchive number_value = 4; + optional .TSCE.StringCellValueArchive string_value = 5; + optional .TSCE.ErrorCellValueArchive error_value = 6; +} + + +message .TST.Deprecated_TableStrokeArchive { + optional .TSD.StrokeArchive stroke = 1; + optional bool background = 2 [deprecated = true]; + optional float opacity = 3 [deprecated = true]; + optional bool empty = 4 [deprecated = true]; +} + +message .TST.CellStylePropertiesArchive { + optional .TSD.FillArchive cell_fill = 1; + optional bool text_wrap = 3; + optional .TST.Deprecated_TableStrokeArchive deprecated_top_stroke = 4; + optional .TST.Deprecated_TableStrokeArchive deprecated_right_stroke = 5; + optional .TST.Deprecated_TableStrokeArchive deprecated_bottom_stroke = 6; + optional .TST.Deprecated_TableStrokeArchive deprecated_left_stroke = 7; + optional int32 vertical_alignment = 8; + optional .TSWP.PaddingArchive padding = 9; + optional .TSD.StrokeArchive top_stroke = 10; + optional .TSD.StrokeArchive right_stroke = 11; + optional .TSD.StrokeArchive bottom_stroke = 12; + optional .TSD.StrokeArchive left_stroke = 13; +} + +message .TST.Deprecated_StrokePresetDataArchive { + required .TST.Deprecated_TableStrokeArchive deprecated_horizontal_stroke = 2; + required .TST.Deprecated_TableStrokeArchive deprecated_vertical_stroke = 1; + required .TST.Deprecated_TableStrokeArchive deprecated_exterior_stroke = 3; + required int32 deprecated_visible_mask = 5; +} + +message .TST.StrokePresetDataArchive { + optional .TSD.StrokeArchive horizontal_stroke = 1; + optional .TSD.StrokeArchive vertical_stroke = 2; + optional .TSD.StrokeArchive exterior_stroke = 3; + optional int32 visible_mask = 4; +} + +message .TST.StrokePresetListArchive { + required int32 count = 1; + repeated .TST.Deprecated_StrokePresetDataArchive deprecated_preset = 2; + repeated .TST.StrokePresetDataArchive preset = 3; +} + +message .TST.TableStylePropertiesArchive { + optional bool banded_rows = 1; + optional .TSD.FillArchive banded_fill = 2; + optional bool behaves_like_spreadsheet = 21; + optional bool auto_resize = 22; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_row_separator_stroke = 4; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_row_border_stroke = 5; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_row_horizontal_stroke = 23; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_row_vertical_stroke = 24; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_column_border_stroke = 7; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_column_separator_stroke = 8; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_column_horizontal_stroke = 25; + optional .TST.Deprecated_TableStrokeArchive deprecated_header_column_vertical_stroke = 26; + optional .TST.Deprecated_TableStrokeArchive deprecated_footer_row_separator_stroke = 10; + optional .TST.Deprecated_TableStrokeArchive deprecated_footer_row_border_stroke = 11; + optional .TST.Deprecated_TableStrokeArchive deprecated_footer_row_horizontal_stroke = 27; + optional .TST.Deprecated_TableStrokeArchive deprecated_footer_row_vertical_stroke = 28; + optional .TST.Deprecated_TableStrokeArchive deprecated_table_body_horizontal_border_stroke = 12; + optional .TST.Deprecated_TableStrokeArchive deprecated_table_body_vertical_border_stroke = 29; + optional .TST.Deprecated_TableStrokeArchive deprecated_table_body_horizontal_stroke = 30; + optional .TST.Deprecated_TableStrokeArchive deprecated_table_body_vertical_stroke = 31; + optional .TST.StrokePresetListArchive stroke_preset_list = 32; + optional bool v_strokes_visible = 33; + optional bool h_strokes_visible = 34; + optional bool hr_separator_visible = 35; + optional bool hc_separator_visible = 36; + optional bool footer_separator_visible = 37; + optional bool table_border_visible = 38; + optional bool table_header_border_visible = 39; + optional bool table_hc_divider_visible = 42; + optional bool table_hr_divider_visible = 43; + optional bool table_footer_divider_visible = 44; + optional int32 OBSOLETE_master_font_size = 40; + optional string master_font_family = 41; + optional .TSWP.WritingDirectionType writing_direction = 45; + optional .TSD.StrokeArchive header_row_separator_stroke = 46; + optional .TSD.StrokeArchive header_row_border_stroke = 47; + optional .TSD.StrokeArchive header_row_horizontal_stroke = 48; + optional .TSD.StrokeArchive header_row_vertical_stroke = 49; + optional .TSD.StrokeArchive header_column_border_stroke = 50; + optional .TSD.StrokeArchive header_column_separator_stroke = 51; + optional .TSD.StrokeArchive header_column_horizontal_stroke = 52; + optional .TSD.StrokeArchive header_column_vertical_stroke = 53; + optional .TSD.StrokeArchive footer_row_separator_stroke = 54; + optional .TSD.StrokeArchive footer_row_border_stroke = 55; + optional .TSD.StrokeArchive footer_row_horizontal_stroke = 56; + optional .TSD.StrokeArchive footer_row_vertical_stroke = 57; + optional .TSD.StrokeArchive table_body_horizontal_border_stroke = 58; + optional .TSD.StrokeArchive table_body_vertical_border_stroke = 59; + optional .TSD.StrokeArchive table_body_horizontal_stroke = 60; + optional .TSD.StrokeArchive table_body_vertical_stroke = 61; + optional .TSD.StrokeArchive category_level1_top_stroke = 62; + optional .TSD.StrokeArchive category_level2_top_stroke = 63; + optional .TSD.StrokeArchive category_level3_top_stroke = 64; + optional .TSD.StrokeArchive category_level4_top_stroke = 65; + optional .TSD.StrokeArchive category_level5_top_stroke = 66; + optional .TSD.StrokeArchive category_level1_bottom_stroke = 67; + optional .TSD.StrokeArchive category_level2_bottom_stroke = 68; + optional .TSD.StrokeArchive category_level3_bottom_stroke = 69; + optional .TSD.StrokeArchive category_level4_bottom_stroke = 70; + optional .TSD.StrokeArchive category_level5_bottom_stroke = 71; + optional .TSD.StrokeArchive category_level1_interior_stroke = 72; + optional .TSD.StrokeArchive category_level2_interior_stroke = 73; + optional .TSD.StrokeArchive category_level3_interior_stroke = 74; + optional .TSD.StrokeArchive category_level4_interior_stroke = 75; + optional .TSD.StrokeArchive category_level5_interior_stroke = 76; + optional .TSD.StrokeArchive category_level1_label_separator_stroke = 77; + optional .TSD.StrokeArchive category_level2_label_separator_stroke = 78; + optional .TSD.StrokeArchive category_level3_label_separator_stroke = 79; + optional .TSD.StrokeArchive category_level4_label_separator_stroke = 80; + optional .TSD.StrokeArchive category_level5_label_separator_stroke = 81; + optional .TSD.StrokeArchive table_body_pivot_group_horizontal_stroke = 82; + optional .TSD.StrokeArchive table_body_pivot_group_vertical_stroke = 83; + optional .TSD.StrokeArchive table_body_pivot_deemphasis_horizontal_stroke = 84; + optional .TSD.StrokeArchive table_body_pivot_emphasis_vertical_stroke = 85; + optional .TSD.StrokeArchive header_column_pivot_group_horizontal_stroke = 86; + optional .TSD.StrokeArchive header_column_pivot_group_deemphasis_stroke = 87; + optional .TSD.StrokeArchive header_column_pivot_separator_stroke = 88; + optional .TSD.StrokeArchive header_row_pivot_group_vertical_stroke = 89; + optional .TSD.StrokeArchive header_row_pivot_group_deemphasis_stroke = 90; + optional .TSD.StrokeArchive header_row_pivot_title_stroke = 91; + optional .TSD.StrokeArchive footer_row_pivot_group_vertical_stroke = 92; +} + +message .TST.TableStylePresetArchive { + optional int32 index = 1; + optional .TSP.Reference image = 2; + optional .TSP.Reference style_network = 3; +} + +message .TST.TableStrokePresetArchive { + required int32 index = 1; +} + +message .TST.ThemePresetsArchive { + repeated .TSP.Reference table_style_presets = 1; + repeated .TSP.Reference table_cell_stroke_presets = 2; + extend .TSS.ThemeArchive { + optional .TST.ThemePresetsArchive extension = 200; + } +} + + +enum .TST.CellType { + genericCellType = 0; + spanCellType = 1; + numberCellType = 2; + textCellType = 3; + formulaCellType = 4; + dateCellType = 5; + boolCellType = 6; + durationCellType = 7; + formulaErrorCellType = 8; + automaticCellType = 9; +} + +enum .TST.CellValueType { + emptyCellValueType = 0; + numberCellValueType = 1; + stringCellValueType = 2; + providedCellValueType = 3; + dateCellValueType = 4; + boolCellValueType = 5; + durationCellValueType = 6; + errorCellValueType = 7; + richTextCellType = 8; + currencyCellValueType = 9; +} + +enum .TST.TableDimensionArchive { + dimensionNeither = -1; + dimensionRow = 0; + dimensionColumn = 1; +} + +enum .TST.SelectionTypeArchive { + deprecatedCellSelectionType = 0; + rowSelectionType = 1; + columnSelectionType = 2; + deprecatedCellEditingSelectionType = 3; + deprecatedTableNameSelectionType = 4; + deprecatedTableSelectionType = 5; + regionSelectionType = 6; + noSelectionType = 7; +} + +enum .TST.FillDirectionArchive { + kTSTFillDownArchive = 1; + kTSTFillUpArchive = 2; + kTSTFillRightArchive = 3; + kTSTFillLeftArchive = 4; +} + +enum .TST.MergeActionArchive { + mergeActionInsert = 1; + mergeActionRemove = 2; + mergeActionShrink = 3; + mergeActionGrow = 4; +} + +enum .TST.HideShowActionArchive { + hideShowActionHide = 0; + hideShowActionShow = 1; +} + +message .TST.CellID { + required fixed32 packedData = 1; + optional .TSCE.CellCoordinateArchive expanded_coord = 2; +} + +message .TST.CellUIDLookupListArchive { + optional .TSCE.UidLookupListArchive column_uids = 1; + optional .TSCE.UidLookupListArchive row_uids = 2; + repeated int32 column_indexes = 3; + repeated int32 row_indexes = 4; +} + +message .TST.CellUIDListArchive { + repeated .TSP.UUID row_uids = 1; + repeated .TSP.UUID column_uids = 2; + repeated int32 compressed_row_indexes = 3; + repeated int32 compressed_column_indexes = 4; + optional .TST.CellUIDLookupListArchive uncompressed_lookup_list = 5; +} + +message .TST.TableSize { + required fixed32 packedData = 1; + optional uint32 num_columns = 2; + optional uint32 num_rows = 3; +} + +message .TST.ExpandedTableSize { + required uint32 num_columns = 1; + required uint32 num_rows = 2; +} + +message .TST.CellRange { + required .TST.CellID origin = 1; + required .TST.TableSize size = 2; +} + +message .TST.ExpandedCellRange { + required .TSCE.CellCoordinateArchive origin = 1; + required .TST.ExpandedTableSize size = 2; +} + +message .TST.TableSelection { + required .TST.CellRange cellRange = 1; + required .TST.CellRange extendedCellRange = 2; + required bool extendedCellRangeValid = 3; + required .TST.SelectionTypeArchive selection_type = 4; +} + +message .TST.TileRowInfo { + required uint32 tile_row_index = 1; + required uint32 cell_count = 2; + required bytes cell_storage_buffer_pre_bnc = 3; + required bytes cell_offsets_pre_bnc = 4; + optional uint32 storage_version = 5; + optional bytes cell_storage_buffer = 6; + optional bytes cell_offsets = 7; + optional bool has_wide_offsets = 8; +} + +message .TST.Tile { + required uint32 maxColumn = 1; + required uint32 maxRow = 2; + required uint32 numCells = 3; + required uint32 numrows = 4; + repeated .TST.TileRowInfo rowInfos = 5; + optional uint32 storage_version = 6; + optional bool last_saved_in_BNC = 7; + optional bool should_use_wide_rows = 8; +} + +message .TST.TileStorage { + message Tile { + required uint32 tileid = 1; + required .TSP.Reference tile = 2; + } + repeated .TST.TileStorage.Tile tiles = 1; + optional uint32 tile_size = 2; + optional bool should_use_wide_rows = 3; +} + +message .TST.PopUpMenuModel { + message CellValue { + required .TST.PopUpMenuModel.CellValueType cell_value_type = 1; + optional .TSCE.BooleanCellValueArchive boolean_value = 2; + optional .TSCE.DateCellValueArchive date_value = 3; + optional .TSCE.NumberCellValueArchive number_value = 4; + optional .TSCE.StringCellValueArchive string_value = 5; + } + enum CellValueType { + NIL_TYPE = 1; + BOOLEAN_TYPE = 2; + DATE_TYPE = 3; + NUMBER_TYPE = 4; + STRING_TYPE = 5; + } + repeated .TST.PopUpMenuModel.CellValue item = 1 [deprecated = true]; + repeated .TSCE.CellValueArchive tsce_item = 2; +} + +message .TST.ImportWarningSetArchive { + message FormulaImportWarning { + required .TST.ImportWarningSetArchive.FormulaWarningType formula_warning_type = 1; + optional string original_formula = 2; + optional string supplementary_text = 3; + optional int32 formula_warning_type_int = 4; + } + enum FormulaWarningType { + THREE_D_REFERENCE = 1; + ARRAYED_FORMULA = 2; + DIFFERENT_BEHAVIOR_FOR_FUNCTION = 3; + ERROR_TOKEN = 4; + EXTERNAL_REFERENCE = 5; + NATURAL_LANGUAGE_FORMULA = 6; + REFERENCE_OUT_OF_BOUNDS = 7; + SHARED_FORMULA_BASE_NOT_FOUND = 8; + UNKNOWN_NAME = 9; + UNSUPPORTED_FORMULA = 10; + UNSUPPORTED_FUNCTION = 11; + UNSUPPORTED_NAME = 12; + TRANSPOSED_NO_ISSUES = 13; + TRANSPOSED_WITH_ISSUES = 14; + TRANSPOSED_WITH_ISSUES_UNCHANGED = 15; + } + optional .TST.ImportWarningSetArchive.FormulaImportWarning formula_import_warning = 1; + optional bool cond_format_above_avg_equal_avg = 2 [default = false]; + optional bool cond_format_above_avg_std_dev = 3 [default = false]; + optional bool cond_format_complex_formula = 4 [default = false]; + optional bool cond_format_contains_errors = 5 [default = false]; + optional bool cond_format_expr = 6 [default = false]; + optional bool cond_format_not_contains_errors = 7 [default = false]; + optional bool cond_format_parameters_not_all_same_type = 8 [default = false]; + optional bool cond_format_stop_if_true = 9 [default = false]; + optional bool cond_format_unsupported_operator = 10 [default = false]; + optional bool cond_format_unsupported_styling = 11 [default = false]; + optional bool cond_format_unsupported_time_period = 12 [default = false]; + optional bool error_cell_with_no_formula = 13 [default = false]; + optional bool unsupported_cond_format = 14 [default = false]; + optional string original_data_format = 15; + optional bool formula_warning_filtered_column_formula_not_copied = 16 [default = false]; + optional bool duration_format_range_changed = 17 [default = false]; +} + +message .TST.CellRefImportWarningSetPairArchive { + required .TSCE.CellReferenceArchive cell_ref = 1; + optional .TST.ImportWarningSetArchive warning_set = 3; +} + +message .TST.ImportWarningSetByCellRefArchive { + repeated .TST.CellRefImportWarningSetPairArchive cellref_warning_set_pair = 1; +} + +message .TST.TableDataList { + message ListEntry { + required uint32 key = 1; + required uint32 refcount = 2; + optional string string = 3; + optional .TSP.Reference reference = 4; + optional .TSCE.FormulaArchive formula = 5; + optional .TSK.FormatStructArchive format = 6; + optional .TSK.CustomFormatArchive custom_format = 8; + optional .TSP.Reference rich_text_payload = 9; + optional .TSP.Reference comment_storage = 10; + optional .TST.ImportWarningSetArchive import_warning_set = 11; + optional .TST.CellSpecArchive cell_spec = 12; + } + enum ListType { + STRING = 1; + FORMAT = 2; + FORMULA = 3; + STYLE = 4; + FORMULA_ERROR = 5; + CUSTOM_FORMAT = 6; + MULTIPLE_CHOICE_LIST_FORMAT = 7; + RICH_TEXT_PAYLOAD = 8; + CONDITIONAL_STYLE = 9; + COMMENT_STORAGE = 10; + IMPORT_WARNING = 11; + CONTROL_CELL_SPEC = 12; + } + required .TST.TableDataList.ListType listType = 1; + required uint32 nextListID = 2; + repeated .TST.TableDataList.ListEntry entries = 3; + repeated .TSP.Reference segments = 4; + optional bool is_new_for_bnc = 5; +} + +message .TST.TableDataListSegment { + required .TST.TableDataList.ListType list_type = 1; + required .TSP.Range key_range = 2; + repeated .TST.TableDataList.ListEntry entries = 3; +} + +message .TST.TableRBTree { + message Node { + required uint32 key = 1; + required uint32 value = 2; + } + repeated .TST.TableRBTree.Node nodes = 1; +} + +message .TST.HeaderStorageBucket { + message Header { + required uint32 index = 1; + required float size = 2; + required uint32 hidingState = 3; + required uint32 numberOfCells = 4; + optional .TSP.Reference cell_style = 5; + optional .TSP.Reference text_style = 6; + } + required uint32 bucketHashFunction = 1; + repeated .TST.HeaderStorageBucket.Header headers = 2; +} + +message .TST.HeaderStorage { + required uint32 bucketHashFunction = 1; + repeated .TSP.Reference buckets = 2; +} + +message .TST.DataStore { + required .TST.HeaderStorage rowHeaders = 1; + required .TSP.Reference columnHeaders = 2; + required .TST.TileStorage tiles = 3; + required .TSP.Reference stringTable = 4; + required .TSP.Reference styleTable = 5; + required .TSP.Reference formula_table = 6; + optional .TSP.Reference formulaErrorTable = 12; + required .TSP.Reference format_table_pre_bnc = 11; + optional .TSP.Reference multipleChoiceListFormatTable = 16; + optional .TSP.Reference merge_region_map = 13; + optional .TSP.Reference deprecated_custom_format_table = 15; + required uint32 nextRowStripID = 7; + required uint32 nextColumnStripID = 8; + required .TST.TableRBTree rowTileTree = 9; + required .TST.TableRBTree columnTileTree = 10; + optional uint32 storage_version_pre_bnc = 14; + optional .TSP.Reference rich_text_table = 17; + optional .TSP.Reference conditionalstyletable = 18; + optional .TSP.Reference commentStorageTable = 19; + optional .TSP.Reference importWarningSetTable = 20; + optional .TSP.Reference control_cell_spec_table = 21; + optional .TSP.Reference format_table = 22; +} + +message .TST.TableInfoArchive { + required .TSD.DrawableArchive super = 1; + required .TSP.Reference tableModel = 2; + optional .TSP.Reference editing_state = 3 [deprecated = true]; + optional .TSP.Reference summary_model = 4; + optional .TSP.Reference category_order = 5; + optional .TSP.Reference view_column_row_uids = 6; + optional .TSP.UUID group_by_uuid = 7; + optional .TSP.UUID hidden_states_uuid = 8; + optional uint32 formula_coord_space_in_pre40 = 9 [deprecated = true]; + optional uint32 formula_coord_space = 10; + optional .TSCE.CoordMapperArchive pasteboard_coord_mapper = 13; + optional .TST.LayoutEngineArchive layout_engine = 14; + optional .TSP.Reference pivot_data_model = 15; + optional bool is_a_pivot_table = 16; + optional .TSP.Reference pivot_order = 17; +} + +message .TST.CategoryInfoArchive { + required .TSD.DrawableArchive super = 1; + required .TSP.Reference tableModel = 2; +} + +message .TST.WPTableInfoArchive { + required .TST.TableInfoArchive super = 1; + optional .TSP.Reference storage = 2; +} + +message .TST.TableStyleNetworkArchive { + required .TSP.Reference body_text_style = 1; + required .TSP.Reference header_row_text_style = 2; + required .TSP.Reference header_column_text_style = 3; + required .TSP.Reference footer_row_text_style = 4; + required .TSP.Reference body_cell_style = 5; + required .TSP.Reference header_row_style = 6; + required .TSP.Reference header_column_style = 7; + required .TSP.Reference footer_row_style = 8; + required .TSP.Reference table_style = 9; + optional .TSP.Reference table_name_style = 10; + optional .TSP.Reference table_name_shape_style = 11; + optional uint32 preset_id = 12; + optional .TSP.Reference category_level_1_text_style = 13; + optional .TSP.Reference category_level_2_text_style = 14; + optional .TSP.Reference category_level_3_text_style = 15; + optional .TSP.Reference category_level_4_text_style = 16; + optional .TSP.Reference category_level_5_text_style = 17; + optional .TSP.Reference category_level_1_style = 18; + optional .TSP.Reference category_level_2_style = 19; + optional .TSP.Reference category_level_3_style = 20; + optional .TSP.Reference category_level_4_style = 21; + optional .TSP.Reference category_level_5_style = 22; + optional .TSP.Reference label_level_1_text_style = 23; + optional .TSP.Reference label_level_2_text_style = 24; + optional .TSP.Reference label_level_3_text_style = 25; + optional .TSP.Reference label_level_4_text_style = 26; + optional .TSP.Reference label_level_5_text_style = 27; + optional .TSP.Reference label_level_1_style = 28; + optional .TSP.Reference label_level_2_style = 29; + optional .TSP.Reference label_level_3_style = 30; + optional .TSP.Reference label_level_4_style = 31; + optional .TSP.Reference label_level_5_style = 32; + optional .TSP.Reference pivot_body_summary_row_style = 33; + optional .TSP.Reference pivot_body_summary_column_style = 34; + optional .TSP.Reference pivot_header_column_summary_style = 35; +} + +message .TST.TableGroupSortOrderUIDArchive { + message GroupSortRuleUIDArchive { + enum Direction { + ascending = 0; + descending = 1; + } + optional .TSP.UUID grouping_column_uid = 1; + optional .TSP.UUID column_uid = 2; + optional .TST.TableGroupSortOrderUIDArchive.GroupSortRuleUIDArchive.Direction direction = 3; + } + repeated .TST.TableGroupSortOrderUIDArchive.GroupSortRuleUIDArchive group_sort_rules = 1; +} + +message .TST.TableSortOrderArchive { + message SortRuleArchive { + enum Direction { + ascending = 0; + descending = 1; + } + required uint32 index = 1; + required .TST.TableSortOrderArchive.SortRuleArchive.Direction direction = 2; + } + enum SortType { + entire_table = 0; + row_range = 1; + } + required .TST.TableSortOrderArchive.SortType type = 1; + repeated .TST.TableSortOrderArchive.SortRuleArchive rules = 2; +} + +message .TST.TableSortOrderUIDArchive { + message SortRuleArchive { + enum Direction { + ascending = 0; + descending = 1; + } + required .TSP.UUID column_uid = 1; + required .TST.TableSortOrderUIDArchive.SortRuleArchive.Direction direction = 2; + } + enum SortType { + entire_table = 0; + row_range = 1; + } + required .TST.TableSortOrderUIDArchive.SortType type = 1; + repeated .TST.TableSortOrderUIDArchive.SortRuleArchive rules = 2; +} + +message .TST.SortRuleReferenceTrackerArchive { + required .TSP.Reference reference_tracker = 1; +} + +message .TST.CellRegion { + repeated .TST.CellRange cell_ranges = 1; +} + +message .TST.CellUIDRegionArchive { + repeated .TSP.UUIDRectArchive cell_uid_ranges = 1; +} + +message .TST.StructuredTextImportRecord { + required .TSK.StructuredTextImportSettings import_settings = 1; + optional string import_source = 2; + optional double import_date = 3; + optional bytes source_data = 4; + optional uint64 source_encoding = 5; + optional float confidence = 6; + optional .TST.CellRegion imported_region = 7; + optional uint64 source_row_count = 8; + optional uint64 source_column_count = 9; +} + +message .TST.TableModelArchive { + required string table_id = 1; + optional string from_table_id = 43; + optional bool was_cut = 50; + required .TSP.Reference table_style = 3; + required .TSP.Reference body_text_style = 24; + required .TSP.Reference header_row_text_style = 25; + required .TSP.Reference header_column_text_style = 26; + required .TSP.Reference footer_row_text_style = 27; + required .TSP.Reference body_cell_style = 18; + required .TSP.Reference header_row_style = 19; + required .TSP.Reference header_column_style = 20; + required .TSP.Reference footer_row_style = 21; + optional .TSP.Reference table_name_style = 30; + optional .TSP.Reference table_name_shape_style = 36; + optional .TSP.Reference table_style_preset = 48; + optional uint32 preset_index = 28; + required .TST.DataStore base_data_store = 4; + optional .TSP.Reference provider = 5; + required uint32 number_of_rows = 6; + required uint32 number_of_columns = 7; + required string table_name = 8; + optional bool table_name_enabled = 22; + optional double table_name_height = 33; + optional bool table_name_border_enabled = 37; + optional uint32 number_of_header_rows = 9; + optional uint32 number_of_header_columns = 10; + optional uint32 number_of_footer_rows = 11; + optional bool header_rows_frozen = 12; + optional bool header_columns_frozen = 13; + optional uint32 number_of_hidden_rows = 14; + optional uint32 number_of_hidden_columns = 15; + optional uint32 number_of_user_hidden_rows = 41; + optional uint32 number_of_user_hidden_columns = 42; + optional uint32 number_of_filtered_rows = 40; + required double default_row_height = 16; + required double default_column_width = 17; + optional .TST.CellID origin_offset = 23 [deprecated = true]; + optional bool repeating_header_rows_enabled = 29; + optional bool style_apply_clears_all = 31; + optional bool repeating_header_columns_enabled = 32; + optional .TSP.Reference hidden_state_formula_owner_for_columns = 34; + optional .TSP.Reference hidden_state_formula_owner_for_rows = 35; + optional .TSP.Reference row_filter_set_pre_pivot = 38; + optional .TSP.CFUUIDArchive conditional_style_formula_owner_id = 39; + optional .TST.TableSortOrderArchive sort_order = 44; + optional .TST.SortRuleReferenceTrackerArchive sort_rule_reference_tracker = 45; + optional .TSP.Reference base_column_row_uids = 46; + optional .TST.MergeOwnerArchive merge_owner = 47; + optional .TSP.Reference stroke_sidecar = 49; + optional bool preset_needs_strong_ownership = 51; + optional .TST.StructuredTextImportRecord text_import_record = 52; + optional .TSP.Reference category_level_1_style = 60; + optional .TSP.Reference category_level_2_style = 61; + optional .TSP.Reference category_level_3_style = 62; + optional .TSP.Reference category_level_4_style = 63; + optional .TSP.Reference category_level_5_style = 64; + optional .TSP.Reference category_level_1_text_style = 65; + optional .TSP.Reference category_level_2_text_style = 66; + optional .TSP.Reference category_level_3_text_style = 67; + optional .TSP.Reference category_level_4_text_style = 68; + optional .TSP.Reference category_level_5_text_style = 69; + optional .TST.HiddenStatesOwnerArchive hidden_states_owner = 70; + optional .TSP.Reference label_level_1_style = 71; + optional .TSP.Reference label_level_2_style = 72; + optional .TSP.Reference label_level_3_style = 73; + optional .TSP.Reference label_level_4_style = 74; + optional .TSP.Reference label_level_5_style = 75; + optional .TSP.Reference label_level_1_text_style = 76; + optional .TSP.Reference label_level_2_text_style = 77; + optional .TSP.Reference label_level_3_text_style = 78; + optional .TSP.Reference label_level_4_text_style = 79; + optional .TSP.Reference label_level_5_text_style = 80; + optional .TST.CategoryOwnerArchive category_owner_deprecated = 81; + optional .TST.PencilAnnotationOwnerArchive pencil_annotation_owner = 82; + optional string from_group_by_uid = 83; + optional .TSCE.HauntedOwnerArchive haunted_owner = 84; + optional .TSP.Reference pivot_owner = 85; + optional .TSP.Reference category_owner = 86; + optional .TSP.Reference pivot_body_summary_row_style = 87; + optional .TSP.Reference pivot_body_summary_column_style = 88; + optional .TSP.Reference pivot_header_column_summary_style = 89; + repeated uint32 pivot_value_types_by_col = 90; + repeated uint32 pivot_date_grouping_columns = 91; + repeated uint32 pivot_date_grouping_types = 92; +} + +message .TST.SummaryModelArchive { + required .TSP.Reference table_info = 1; + optional .TST.DataStore data_store = 2; + optional .TSP.Reference column_row_uids = 3; + optional .TSP.UUID aggregate_formula_owner_uuid = 4; + optional .TSP.Reference summary_cell_vendor = 5; + optional double category_column_width = 10; + optional double summary_row_level_1_height = 11 [deprecated = true]; + optional double summary_row_level_2_height = 12 [deprecated = true]; + optional double summary_row_level_3_height = 13 [deprecated = true]; + optional double summary_row_level_4_height = 14 [deprecated = true]; + optional double summary_row_level_5_height = 15 [deprecated = true]; + optional double summary_label_row_level_1_height = 16 [deprecated = true]; + optional double summary_label_row_level_2_height = 17 [deprecated = true]; + optional double summary_label_row_level_3_height = 18 [deprecated = true]; + optional double summary_label_row_level_4_height = 19 [deprecated = true]; + optional double summary_label_row_level_5_height = 20 [deprecated = true]; + optional uint32 label_row_visibility_1 = 21 [deprecated = true]; + optional uint32 label_row_visibility_2 = 22 [deprecated = true]; + optional uint32 label_row_visibility_3 = 23 [deprecated = true]; + optional uint32 label_row_visibility_4 = 24 [deprecated = true]; + optional uint32 label_row_visibility_5 = 25 [deprecated = true]; + repeated double summary_row_height_list = 26; + repeated double label_row_height_list = 27; + repeated uint32 label_row_visibility_list = 28; + optional .TST.TableGroupSortOrderUIDArchive group_sort_order = 29; +} + +message .TST.SummaryModelGroupByChangeStateArchive { + optional .TSP.Reference cell_map = 1; + repeated double summary_row_height_list = 2; + repeated double label_row_height_list = 3; + repeated uint32 label_row_visibility_list = 4; +} + +message .TST.ColumnRowUIDMapArchive { + repeated .TSP.UUID sorted_column_uids = 1; + repeated uint32 column_index_for_uid = 2; + repeated uint32 column_uid_for_index = 3; + repeated .TSP.UUID sorted_row_uids = 4; + repeated uint32 row_index_for_uid = 5; + repeated uint32 row_uid_for_index = 6; +} + +message .TST.StrokeLayerArchive { + message StrokeRunArchive { + optional int32 origin = 1; + optional uint32 length = 2; + optional .TSD.StrokeArchive stroke = 3; + optional uint32 order = 4; + } + optional uint32 row_column_index = 1; + repeated .TST.StrokeLayerArchive.StrokeRunArchive stroke_runs = 2; +} + +message .TST.StrokeSidecarArchive { + optional uint32 max_order = 1; + optional uint32 column_count = 2; + optional uint32 row_count = 3; + repeated .TSP.Reference left_column_stroke_layers = 4; + repeated .TSP.Reference right_column_stroke_layers = 5; + repeated .TSP.Reference top_row_stroke_layers = 6; + repeated .TSP.Reference bottom_row_stroke_layers = 7; +} + +message .TST.DurationWrapperArchive { +} + +message .TST.Cell { + required .TST.CellValueType valueType = 2; + optional .TSP.Reference cell_style = 3; + optional .TSP.Reference text_style = 4; + optional double numberValue = 5; + optional string stringValue = 6; + optional bool boolValue = 7; + optional .TSK.FormatStructArchive current_format = 9; + optional .TSP.Reference formulaError = 10; + optional .TSK.FormatStructArchive number_format = 11; + optional .TSK.FormatStructArchive currency_format = 12; + optional .TSK.FormatStructArchive duration_format = 13; + optional .TSK.FormatStructArchive date_format = 14; + optional .TSK.FormatStructArchive custom_format = 16; + optional .TSK.FormatStructArchive base_format = 17; + optional uint32 explicit_format_flags = 19; + optional .TSP.Reference richText = 20; + optional .TSP.Reference conditional_style = 21; + optional .TSP.Reference comment_storage = 23; + optional uint32 conditional_style_applied_rule = 24; + optional .TST.ImportWarningSetArchive import_warning_set = 25; + optional .TSK.CustomFormatArchive custom_format_object = 26; + optional .TST.CellBorderArchive cell_border = 27; + optional .TST.CellSpecArchive cell_spec = 28; + optional uint32 cell_format_kind = 29; + optional .TSK.FormatStructArchive text_format = 30; + optional .TSK.FormatStructArchive boolean_format = 31; + optional uint64 decimal_value_low = 32; + optional uint64 decimal_value_high = 33; +} + +message .TST.MergeRegionMapArchive { + repeated .TST.CellRange cell_range = 1; +} + +message .TST.CellMapArchive { + repeated .TSP.Reference cell_tiles = 2; + required bool uid_based = 3; + repeated .TSCE.CellCoordinateArchive expanded_cell_ids = 14; + optional .TST.CellUIDListArchive cell_uid_list = 5; + repeated .TSP.UUIDRectArchive merge_uid_ranges = 7; + repeated .TSP.UUIDRectArchive unmerge_uid_ranges = 9; + repeated .TST.MergeOperationArchive merge_actions = 13; + optional bool may_modify_formulas_in_cells = 10 [default = true]; + optional bool may_modify_values_referenced_by_formulas = 11 [default = true]; +} + +message .TST.CellListArchive { + message OptionalCell { + optional .TST.Cell cell = 1; + } + repeated .TST.CellListArchive.OptionalCell cells = 1; + optional uint32 trailing_empty_cell_count = 2; +} + +message .TST.ConcurrentCellMapArchive { + repeated .TSP.Reference cell_lists = 1; + required bool uid_based = 2; + repeated .TST.MergeOperationArchive merge_actions = 3; + optional bool may_modify_formulas_in_cells = 4 [default = true]; + optional bool may_modify_values_referenced_by_formulas = 5 [default = true]; + optional bool affects_cell_borders = 6 [default = true]; +} + +message .TST.ConcurrentCellListArchive { + message OptionalCell { + optional .TST.Cell cell = 1; + } + repeated .TST.ConcurrentCellListArchive.OptionalCell cells = 1; + optional .TSP.UUIDRectArchive cell_uid_range = 2; + optional .TST.CellRange cell_range = 3; +} + +message .TST.CellFormatAndValueArchive { + required .TST.CellValueType valueType = 1; + optional double numberValue = 2; + optional string stringValue = 3; + optional bool boolValue = 4; + optional .TSP.Reference richTextStorage = 5; + required bool use_all_spare_formats = 6; + required uint32 explicit_flags = 7; + required uint32 cell_format_kind = 8; + optional .TSK.FormatStructArchive number_format = 10; + optional .TSK.FormatStructArchive currency_format = 11; + optional .TSK.FormatStructArchive date_format = 12; + optional .TSK.FormatStructArchive duration_format = 13; + optional .TSK.FormatStructArchive text_format = 14; + optional .TSK.FormatStructArchive boolean_format = 15; + optional string formatted_value = 16; + optional .TSP.Reference formatted_rich_text_value = 17; + required bool apply_spare_format_only = 18; + required bool spare_format_type = 19; + optional uint64 decimal_low = 20; + optional uint64 decimal_high = 21; + optional bool suppress_apply_value = 22; +} + +message .TST.CellSpecArchive { + required uint32 interaction_type = 1; + optional .TSCE.FormulaArchive formula = 2; + optional double range_control_min = 3; + optional double range_control_max = 4; + optional double range_control_inc = 5; + optional .TSP.Reference chooser_control_popup_model = 6; + optional bool chooser_control_start_w_first = 7; + optional bool category_summary_should_display_label = 8 [deprecated = true]; +} + +message .TST.CommentStorageWrapperArchive { + optional .TSP.Reference comment_storage = 1; +} + +message .TST.CellDiffArchive { + required .TSS.CommandPropertyMapArchive property_map_to_set = 1; + required .TSS.CommandPropertyMapArchive property_map_to_reset = 2; +} + +message .TST.CellDiffArray { + optional .TSP.LargeArray large_array = 1; +} + +message .TST.CellDiffArraySegment { + optional .TSP.LargeArraySegment large_array_segment = 1; + repeated .TST.CellDiffArchive elements = 2; +} + +message .TST.CellDiffMapArchive { + required bool uid_based = 1; + repeated .TSCE.CellCoordinateArchive expanded_cell_ids = 2; + required .TST.CellUIDListArchive cell_uids = 3; + optional .TSP.Reference cell_diff_array = 4; +} + +message .TST.HierarchicalCellDiffMapArchive { + message BoxedRow { + required .TSP.IndexSet column_index_set = 1; + repeated .TST.CellDiffArchive cell_diff_list = 2; + } + required int32 num_row_rules = 1; + required int32 num_column_rules = 2; + repeated .TSP.UUID row_header_uids = 3; + repeated .TSP.UUID column_header_uids = 4; + repeated .TSP.UUID aggregate_rule_uids = 5; + required .TST.TableDimensionArchive active_flattening_dimension = 6; + repeated .TSP.UUID row_value_uids = 7; + repeated uint32 row_level_preorder = 8; + repeated .TSP.UUID column_value_uids = 9; + repeated uint32 column_level_preorder = 10; + repeated .TST.HierarchicalCellDiffMapArchive.BoxedRow cell_diff_storage = 11; + repeated double row_sizes = 12; + repeated double column_sizes = 13; +} + +message .TST.DoubleStyleMapArchive { + message DoubleStyleMapEntryArchive { + required .TST.CellID cell_id = 1; + required .TSP.Reference old_style = 2; + required .TSP.Reference new_style = 3; + } + required uint32 capacity = 1; + required uint32 count = 2; + repeated .TST.DoubleStyleMapArchive.DoubleStyleMapEntryArchive cell_map_entry = 3; +} + +message .TST.StyleTableMapArchive { + message StyleTableMapEntryArchive { + required uint32 key = 1; + required .TSP.Reference old_style = 2; + required .TSP.Reference new_style = 3; + } + required uint32 capacity = 1; + required uint32 count = 2; + repeated .TST.StyleTableMapArchive.StyleTableMapEntryArchive map_entry = 3; +} + +message .TST.SelectionArchive { + optional .TSP.Reference tableModel = 1 [deprecated = true]; + required .TST.SelectionTypeArchive selection_type = 4; + optional .TST.CellID anchor_cell = 5; + repeated .TST.CellRange cell_ranges = 6; + repeated .TST.CellRange base_ranges = 7; + optional .TST.CellID cursor_cell = 8; + optional .TSP.Reference table_info = 9; + optional .TST.CellUIDRegionArchive cell_uid_region = 10; + optional .TST.CellUIDRegionArchive base_uid_region = 11; + optional .TSP.UUIDCoordArchive anchor_cell_uid = 12; + optional .TSP.UUIDCoordArchive cursor_cell_uid = 13; +} + +message .TST.DeathhawkRdar39989167CellSelectionArchive { + optional .TSP.Reference table_info = 1; + optional .TST.SelectionTypeArchive selection_type = 2; + optional .TST.CellUIDRegionArchive cell_uid_region = 3; + optional .TST.CellUIDRegionArchive base_uid_region = 4; + optional .TSP.UUIDCoordArchive anchor_cell_uid = 5; + optional .TSP.UUIDCoordArchive cursor_cell_uid = 6; +} + +message .TST.StrokeSelectionArchive { + optional int32 mask = 1; +} + +message .TST.ControlCellSelectionArchive { +} + +message .TST.StockCellSelectionArchive { +} + +message .TST.TableNameSelectionArchive { +} + +message .TST.AutofillSelectionArchive { + optional .TST.CellRange source_cell_range = 1; + optional .TST.CellRange target_cell_range = 2; +} + +message .TST.FilterRulePrePivotArchive { + required .TST.FormulaPredicatePrePivotArchive predicate = 1; + optional bool disabled = 2; +} + +message .TST.FilterRuleArchive { + required .TST.FormulaPredicateArchive predicate = 1; +} + +message .TST.TableStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TST.TableStylePropertiesArchive table_properties = 11; +} + +message .TST.CellStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .TST.CellStylePropertiesArchive cell_properties = 11; +} + +message .TST.FormulaPredArgDataArchive { + optional double double_value = 1; + optional uint64 decimal_low = 2; + optional uint64 decimal_high = 3; + optional string string_value = 4; + optional double date_value = 5; + optional double duration_timeinterval = 6; + optional int32 duration_units = 7; + optional bool boolean_value = 8; +} + +message .TST.FormulaPredArgArchive { + required int32 arg_type = 1; + optional .TST.FormulaPredArgDataArchive arg_value = 2; + optional .TSCE.CellReferenceArchive base_cell_ref = 3; + optional .TSCE.RelativeCellRefArchive relative_cell_ref = 4; + optional .TSCE.CategoryReferenceArchive category_ref = 5; + optional .TSCE.ASTNodeArrayArchive.ASTUidTractList uid_tract_list = 6; + optional .TSCE.CellCoordinateArchive host_cell_coord = 7; + optional bool preserve_row = 8; + optional bool preserve_column = 9; + repeated .TST.FormulaPredArgDataArchive list_entries = 10; + optional .TSCE.ViewTractRefArchive view_tract_ref = 11; +} + +message .TST.FormulaPredicatePrePivotArchive { + required .TSCE.FormulaArchive formula = 1; + required int32 predicate_type = 2; + required int32 qualifier1 = 3; + required int32 qualifier2 = 4; + required int32 param_index1 = 5; + required int32 param_index2 = 6; + required int32 param_index0 = 7; +} + +message .TST.FormulaPredicateArchive { + required int32 predicate_type = 1; + required int32 qualifier1 = 2; + required int32 qualifier2 = 3; + optional .TST.FormulaPredArgArchive param_value0 = 4; + optional .TST.FormulaPredArgArchive param_value1 = 5; + optional .TST.FormulaPredArgArchive param_value2 = 6; + optional .TSCE.FormulaArchive formula = 7; + optional bool for_conditional_style = 8; + optional .TSP.UUID host_table_uid = 9; + optional .TSP.UUID host_column_uid = 10; + optional .TSP.UUID host_row_uid = 11; +} + +message .TST.ConditionalStyleSetArchive { + message ConditionalStyleRulePrePivot { + required .TST.FormulaPredicatePrePivotArchive predicate = 1; + required .TSP.Reference cell_style = 2; + required .TSP.Reference text_style = 3; + } + message ConditionalStyleRule { + optional .TST.FormulaPredicateArchive predicate = 1; + required .TSP.Reference cell_style = 2; + required .TSP.Reference text_style = 3; + } + message ConditionalStyleRules { + repeated .TST.ConditionalStyleSetArchive.ConditionalStyleRule rule = 1; + } + required uint32 ruleCount = 1; + repeated .TST.ConditionalStyleSetArchive.ConditionalStyleRulePrePivot rules_prepivot = 2; + optional .TST.ConditionalStyleSetArchive.ConditionalStyleRules rules = 3; +} + +message .TST.FilterSetArchive { + enum FilterSetType { + FilterSetArchiveTypeAll = 0; + FilterSetArchiveTypeAny = 1; + } + optional .TST.FilterSetArchive.FilterSetType type = 1 [default = FilterSetArchiveTypeAll]; + optional bool is_enabled = 2 [default = true]; + repeated .TST.FilterRulePrePivotArchive filter_rules_prepivot = 3; + optional bool needs_formula_rewrite_for_import = 4 [default = false]; + repeated uint32 filter_offsets = 5; + repeated bool filter_enabled = 6; + repeated .TST.FilterRuleArchive filter_rules = 7; +} + +message .TST.UniqueIndexArchive { + message UniqueIndexEntryArchive { + required string string_value = 1; + repeated .TSP.UUID row_uids = 2; + } + required .TSP.UUID column_uid = 1; + repeated .TST.UniqueIndexArchive.UniqueIndexEntryArchive unique_entries = 2; +} + +message .TST.HiddenStateExtentArchive { + message RowOrColumnState { + required .TSP.UUID row_or_column_uid = 1; + optional bool user_hidden = 2; + optional bool filtered = 3; + optional bool pivot_hidden = 4; + } + enum RowOrColumnDirection { + ColumnDirection = 0; + RowDirection = 1; + } + required .TSP.UUID hidden_state_extent_uid = 1; + repeated .TST.HiddenStateExtentArchive.RowOrColumnState base_hidden_states = 2; + required .TST.HiddenStateExtentArchive.RowOrColumnDirection row_or_column_direction = 3; + repeated .TSCE.CellValueArchive threshold_value = 5; + optional bool needs_to_update_filter_set_for_import = 6 [default = false]; + repeated .TSP.UUID collapsed_group_uids = 7; + optional .TSP.Reference filter_set = 8; + optional .TSCE.IndexSetArchive summary_pivot_hidden_indexes = 9; + optional .TSCE.IndexSetArchive summary_filtered_indexes = 10; + repeated .TST.UniqueIndexArchive unique_indexes = 11; + repeated .TST.HiddenStateExtentArchive.RowOrColumnState summary_hidden_states = 12; +} + +message .TST.HiddenStatesArchive { + required .TSP.UUID hidden_states_uid = 1; + required .TST.HiddenStateExtentArchive column_hidden_state_extent = 2; + required .TST.HiddenStateExtentArchive row_hidden_state_extent = 3; +} + +message .TST.HiddenStatesOwnerArchive { + required .TSP.UUID owner_uid = 1; + repeated .TST.HiddenStatesArchive hidden_states = 2; +} + +message .TST.ExpandCollapseStateArchive { + repeated .TSP.UUID uids_collapsed = 1; + repeated .TSP.UUID uids_expanded = 2; + optional .TST.TableDimensionArchive dimension = 3; +} + +message .TST.TokenAttachmentArchive { + required .TSWP.UIGraphicalAttachment super = 1; + optional .TSP.Reference expressionNode = 2; +} + +message .TST.FormulaArchive { + optional .TSP.Reference expressionTree = 1; +} + +message .TST.ExpressionNodeArchive { + repeated .TSP.Reference children = 1; + optional uint64 first_index = 2 [default = 0]; + optional uint64 last_index = 3 [default = 0]; +} + +message .TST.BooleanNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required bool value = 2; +} + +message .TST.NumberNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + optional double number = 2; + optional uint64 decimal_low = 3; + optional uint64 decimal_high = 4; +} + +message .TST.StringNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required string value = 2; +} + +message .TST.IdentifierNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + optional string identifier = 2; + optional uint32 symbol = 3; +} + +message .TST.ArrayNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + optional uint32 columns = 2; + optional uint32 rows = 3; +} + +message .TST.ListNodeArchive { + required .TST.ExpressionNodeArchive super = 1; +} + +message .TST.OperatorNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required uint32 operatorChar = 2; +} + +message .TST.PostfixOperatorNodeArchive { + required .TST.OperatorNodeArchive super = 1; +} + +message .TST.PrefixOperatorNodeArchive { + required .TST.OperatorNodeArchive super = 1; +} + +message .TST.FunctionNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required uint32 functionIndex = 2; + optional string invalidFunctionName = 3; +} + +message .TST.FunctionEndNodeArchive { + required .TST.ExpressionNodeArchive super = 1; +} + +message .TST.DateNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required string value = 2; + optional string format = 3; +} + +message .TST.ReferenceNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + optional .TSCE.RangeReferenceArchive rangeReference = 2; + required uint32 preserve_flags = 3; + optional string hostTableID = 4; + optional .TSCE.CellReferenceArchive host_cell_ref = 10; + optional .TSP.UUID table_uid = 5; + optional .TSP.UUIDCoordArchive range_top_left = 6; + optional .TSP.UUIDCoordArchive range_bottom_right = 7; + optional .TSCE.CategoryReferenceArchive category_ref = 8; + optional .TSP.UUIDRectArchive uid_range_rect = 9; +} + +message .TST.DurationNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required double timeinterval = 2; + required uint32 smallest = 3; + required uint32 largest = 4; + required uint32 style = 5; +} + +message .TST.ArgumentPlaceholderNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + optional uint32 functionIndex = 2; + optional uint32 argumentIndex = 3; + optional uint32 mode = 4; +} + +message .TST.EmptyExpressionNodeArchive { + required .TST.ExpressionNodeArchive super = 1; +} + +message .TST.LetNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + optional string whitespace_after_let = 2; + optional string whitespace_after_identifier = 3; + optional string whitespace_after_equals = 4; + optional string whitespace_after_delimiter = 5; +} + +message .TST.InNodeArchive { + required .TST.ExpressionNodeArchive super = 1; +} + +message .TST.VariableNodeArchive { + required .TST.ExpressionNodeArchive super = 1; + required string identifier = 2; + required uint32 symbol = 3; +} + +message .TST.LayoutHintArchive { + required bool isValid = 1; + optional .TST.CellRange cellRange = 2; + optional .TST.CellID hintID = 3; + required .TSP.Size maximumSize = 4; + required uint32 partitionPosition = 5; + required bool horizontal = 6; + optional .TSP.Size effectiveSize = 7; + optional uint32 partitioningPass = 8; +} + +message .TST.CompletionTokenAttachmentArchive { + required .TST.TokenAttachmentArchive super = 1; + optional string completionText = 2; + optional uint32 caretPosition = 3; + optional uint32 prefixStart = 4; +} + +message .TST.HiddenStateFormulaOwnerArchive { + optional .TSP.CFUUIDArchive owner_id = 1; + repeated .TSCE.CellValueArchive threshold_value = 2; + optional bool needs_to_update_filter_set_for_import = 3 [default = false]; +} + +message .TST.FormulaStoreArchive { + message FormulaStorePair { + required uint32 formula_index = 1; + required .TSCE.FormulaArchive formula = 2; + } + required uint32 next_formula_index = 2; + repeated .TST.FormulaStoreArchive.FormulaStorePair formulas = 3; +} + +message .TST.MergeOperationArchive { + required .TST.MergeActionArchive merge_type = 1; + repeated .TSP.UUIDRectArchive merge_ranges = 2; + repeated .TSCE.FormulaArchive merge_formulas = 3; + repeated uint32 merge_formula_indexes = 4; +} + +message .TST.MergeOwnerArchive { + required .TSP.CFUUIDArchive owner_id = 1; + optional .TST.FormulaStoreArchive formula_store = 2; +} + +message .TST.PencilAnnotationArchive { + optional .TSP.Reference table_info = 1; + optional .TSP.Reference pencil_annotation_storage = 2; +} + +message .TST.PencilAnnotationOwnerArchive { + required .TSP.CFUUIDArchive owner_id = 1; + optional .TST.FormulaStoreArchive formula_store = 2; + repeated .TSP.Reference annotations = 3; +} + +message .TST.AccumulatorArchive { + optional uint32 bool_count = 1; + optional uint32 number_count = 2; + optional uint32 date_count = 3; + optional uint32 duration_count = 4; + optional uint32 string_count = 5; + required .TSCE.CellValueArchive min_value = 6; + required .TSCE.CellValueArchive max_value = 7; + required .TSCE.CellValueArchive number_total_value = 8; + optional .TSCE.CellValueArchive first_date_seen = 9; + optional double total_secs_since_ref_date = 10; + optional double secs_to_add = 11; + optional uint32 bool_true_count = 12; + optional uint32 error_count = 13; + optional bool is_circular_ref = 14; + optional .TSCE.CellValueArchive product_value = 15; + optional uint32 no_content_count = 16; +} + +message .TST.GroupColumnArchive { + required .TSP.UUID column_uid = 1; + required uint32 grouping_type = 2; + optional .TSCE.FunctorArchive grouping_functor = 3; + optional .TSP.UUID grouping_column_uid = 4; +} + +message .TST.GroupColumnListArchive { + repeated .TST.GroupColumnArchive group_column = 1; +} + +message .TST.ColumnAggregateArchive { + required .TSP.UUID column_uid = 1; + required uint32 level = 2; + required uint32 agg_type = 3; + optional uint32 show_as_type = 4; + optional .TSP.UUID column_aggregate_uid = 5; + optional .TSP.UUID running_total_group_column_uid = 6; +} + +message .TST.ColumnAggregateListArchive { + repeated .TST.ColumnAggregateArchive aggregates = 1; +} + +message .TST.GroupByArchive { + message AggNodeArchive { + required .TSCE.CellCoordinateArchive formula_coord = 1; + optional .TST.AccumulatorArchive accum = 2; + repeated .TST.GroupByArchive.AggNodeArchive child = 3; + } + message AggregatorArchive { + required .TSP.UUID column_uid = 1; + optional .TST.GroupByArchive.AggNodeArchive agg_node = 2; + } + message GroupNodeArchive { + message FormatManagerArchive { + message RowSetArchive { + repeated .TSP.UUID row_uids = 1; + } + optional .TSCE.CellValueArchive cell_value = 1; + repeated .TSK.FormatStructArchive formats = 2; + repeated .TST.GroupByArchive.GroupNodeArchive.FormatManagerArchive.RowSetArchive row_sets = 3; + repeated .TSCE.IndexSetArchive row_uid_lookup_sets = 4; + } + required .TSP.UUID group_uid = 1; + repeated .TST.GroupByArchive.GroupNodeArchive child = 3; + repeated .TSP.UUID row_uid = 4; + repeated .TSCE.CellCoordinateArchive agg_formula_coords = 5; + optional .TST.GroupByArchive.GroupNodeArchive.FormatManagerArchive format_manager = 6; + optional .TSCE.CellValueArchive group_cell_value = 7; + optional .TSCE.IndexSetArchive row_indexes = 8; + optional .TSCE.IndexSetArchive row_lookup_uids = 9; + repeated .TSP.Reference child_ref = 10; + } + required .TSP.UUID group_by_uid = 1; + repeated .TST.GroupColumnArchive group_column = 2; + optional .TST.GroupByArchive.GroupNodeArchive group_node_root = 3; + repeated .TST.GroupByArchive.AggregatorArchive aggregator = 4; + repeated .TST.ColumnAggregateArchive column_agg_type = 5; + required bool is_enabled = 6; + optional .TSCE.CellCoordinateArchive indirect_agg_type_change_formula = 7; + optional .TSCE.CellCoordinateArchive grouping_columns_formula = 8; + optional .TSCE.CellCoordinateArchive aggs_in_group_root_formula = 9; + optional .TSCE.CellCoordinateArchive grouping_column_headers_formula = 10; + optional .TSCE.CellCoordinateArchive column_order_changed_formula = 11; + optional .TSCE.CellCoordinateArchive row_order_changed_formula = 12; + optional .TSCE.CellCoordinateArchive row_order_changed_ignoring_recalc_formula = 13; + optional int32 owner_index = 14 [default = 8]; + optional .TSCE.UidLookupListArchive row_uid_lookup = 15; + optional .TSCE.CellCoordinateArchive hidden_states_changed_formula = 16; + repeated .TSP.Reference aggregator_ref = 17; + optional .TSP.Reference group_node_root_ref = 18; +} + +message .TST.CategoryOwnerArchive { + required .TSP.UUID owner_uid = 1; + repeated .TST.GroupByArchive group_by = 2; +} + +message .TST.CategoryOwnerRefArchive { + repeated .TSP.Reference group_by = 1; +} + +message .TST.PivotGroupingColumnOptionsMapArchive { + repeated .TSP.UUID uids = 1; + repeated uint32 flags = 2; + repeated .TSP.UUID aggregate_rule_uids = 4; +} + +message .TST.PivotOwnerArchive { + optional .TSP.UUID pivot_owner_uid = 2; + optional .TST.GroupColumnListArchive grouping_columns_for_rows = 3; + optional .TST.GroupColumnListArchive grouping_columns_for_columns = 4; + optional .TST.ColumnAggregateListArchive aggregate_columns = 5; + optional int32 flattening_dimension = 6; + optional bool is_empty_pivot = 7; + optional .TSP.UUID source_table_uid = 8; + optional double refresh_timestamp = 9; + optional .TSP.Reference grpg_col_options_map = 10; + optional bool hide_grand_total_rows = 11; + optional string source_table_name = 12; + optional bool hide_grand_total_columns = 13; + optional .TST.FormulaStoreArchive formula_store = 17; + optional .TSP.UUID refresh_uid = 18; + optional .TSP.UUID row_column_rule_change_uid = 19; + optional .TSP.UUID aggregate_rule_change_uid = 20; +} + +message .TST.RichTextPayloadArchive { + required .TSP.Reference storage = 1; + optional .TSP.Range range = 2; + required .TST.CellID cellid = 3; +} + +message .TST.FormulaEqualsTokenAttachmentArchive { + required .TSWP.UIGraphicalAttachment super = 1; +} + +message .TST.CellFillStandIn { + required .TSD.FillArchive fill = 1; + optional bool type_is_mixed = 2; + optional bool color_has_been_modified = 3; + optional bool color_is_mixed = 4; + optional bool first_color_has_been_modified = 5; + optional bool first_color_is_mixed = 6; + optional bool last_color_has_been_modified = 7; + optional bool last_color_is_mixed = 8; + optional bool gradient_type_has_been_modified = 9; + optional bool gradient_type_is_mixed = 10; + optional bool gradient_angle_has_been_modified = 11; + optional bool gradient_angle_is_mixed = 12; + optional bool image_data_has_been_modified = 13; + optional bool image_data_is_mixed = 14; + optional bool tint_color_has_been_modified = 15; + optional bool tint_color_is_mixed = 16; + optional bool scale_has_been_modified = 17; + optional bool scale_is_mixed = 18; + optional bool technique_has_been_modified = 19; + optional bool technique_is_mixed = 20; +} + +message .TST.FormulaSelectionArchive { + required .TSWP.SelectionArchive super = 1; + optional uint32 activeTokenCharIndex = 2; +} + +message .TST.CellBorderArchive { + optional .TSD.StrokeArchive top_stroke = 1; + optional int32 top_stroke_order = 2; + optional .TSD.StrokeArchive right_stroke = 3; + optional int32 right_stroke_order = 4; + optional .TSD.StrokeArchive bottom_stroke = 5; + optional int32 bottom_stroke_order = 6; + optional .TSD.StrokeArchive left_stroke = 7; + optional int32 left_stroke_order = 8; +} + +message .TST.DefaultCellStylesContainerArchive { + required .TSP.Reference table_style_network = 1; + repeated .TSP.UUID row_uids = 2; + repeated .TSP.UUID column_uids = 3; + repeated uint32 row_types = 4; + repeated uint32 column_types = 5; + optional bool is_a_pivot_table = 6; +} + +message .TST.MultiTableRemapperArchive { + enum Purpose { + DEFAULT = 0; + GROUPING = 1; + PAGES_SECTION_DUPLICATION_NONCOLLAB = 2; + } + required .TST.MultiTableRemapperArchive.Purpose mapping_purpose = 1; + required bool should_steal_references = 2; + required bool can_reuse_table_names = 3; + repeated .TSCE.OwnerUIDMapperArchive owner_uid_mapper = 4; + required .TSP.UUIDMapArchive backing_tables_for_charts = 5; + required bool cross_document_paste = 6; + required bool nested_inner_mapper = 7; +} + +message .TST.ChangePropagationMapWrapper { + required int32 replacement_behavior = 1; + repeated .TSP.Reference style_replace_prototypes = 2; + repeated .TSP.Reference style_replace_replacements = 3; + repeated .TSP.Reference style_modify_styles = 4; + repeated .TSP.Reference style_modify_old_prop_maps = 5; + repeated .TSP.Reference style_modify_new_prop_maps = 6; + repeated .TSP.Reference style_delete_prototypes = 7; + repeated .TSP.Reference style_delete_replacements = 8; + optional .TSP.Reference table_preset_replace_prototype = 9; + optional .TSP.Reference table_preset_replace_replacement = 10; + optional .TSP.Reference table_preset_delete_prototype = 11; + optional .TSP.Reference table_preset_delete_replacement = 12; +} + +message .TST.SummaryCellVendorArchive { + message SummaryCellEntry { + required .TSP.UUID wildcardUID = 1; + required .TSP.UUID columnUID = 2; + required .TST.Cell cell = 3; + } + required .TSP.Reference table_info = 1; + repeated .TST.SummaryCellVendorArchive.SummaryCellEntry entries = 2; +} + +message .TST.CategoryOrderArchive { + required .TSP.Reference table_info = 1; + required .TSP.Reference uid_map = 2; +} + +message .TST.PivotOrderArchive { + optional .TSP.Reference uid_map = 1; +} + +message .TST.HeaderNameMgrTileArchive { + message NameFragmentArchive { + required string name_fragment = 1; + required .TSCE.CellCoordinateArchive name_precedent = 2; + optional .TSCE.UidCellRefSetArchive uses_of_name_fragment = 3; + } + required string first_fragment = 1; + required string last_fragment = 2; + repeated .TST.HeaderNameMgrTileArchive.NameFragmentArchive name_frag_entries = 3; +} + +message .TST.HeaderNameMgrArchive { + message PerTableArchive { + required .TSP.UUID table_uid = 1; + required .TSCE.CellCoordinateArchive per_table_precedent = 2; + optional bool is_deleted = 3; + repeated .TSP.UUID header_row_uids = 5; + repeated .TSP.UUID header_column_uids = 6; + repeated .TSP.UUID update_header_row_uids = 7; + repeated .TSP.UUID update_header_column_uids = 8; + } + required .TSP.UUID owner_uid = 1; + optional .TSP.UUID nrm_owner_uid = 2; + repeated .TST.HeaderNameMgrArchive.PerTableArchive per_tables = 3; + repeated .TSP.Reference name_frag_tiles = 4; +} + +message .TST.WidthHeightCacheFittingEntry { + optional uint32 fitting_index = 1; + optional float fitting_size = 2; +} + +message .TST.WidthHeightCache { + repeated .TST.WidthHeightCacheFittingEntry rows_fitting_entries = 1; + optional uint32 columns_count = 3; +} + +message .TST.LayoutEngineArchive { + optional .TST.WidthHeightCache width_height_cache = 1; +} + +message .TST.CollaboratorTableCursorSubselectionArchive { + optional .TST.CellUIDListArchive cell_uid_list = 1; + optional .TST.SelectionTypeArchive selection_type = 3; + repeated .TSP.UUID row_column_uid_list = 4; + extend .TSK.CollaboratorCursorArchive { + optional .TST.CollaboratorTableCursorSubselectionArchive table_cursor_subselection = 200; + } +} + +extend .TSS.CommandPropertyEntryArchive { + optional .TST.ImportWarningSetArchive import_warning_set = 500; + optional .TST.CellFormatAndValueArchive format_and_value = 501; + optional .TST.CellBorderArchive cell_border = 503; + optional .TST.CommentStorageWrapperArchive comment_storage = 504; + optional .TST.CellSpecArchive cell_spec = 505; +} + + +message .TSTSOS.SpecSetTableStrokePresetListArchive { + optional .TST.StrokePresetListArchive table_stroke_preset_list = 1; + required bool unset = 2; +} + +message .TSTSOS.SpecTableStrokePresetListArchive { + optional .TSTSOS.SpecSetTableStrokePresetListArchive spec_set_table_stroke_preset_list = 1; +} + +message .TSTSOS.TableCellStylePropertyChangeSetArchive { + optional .TSSSOS.SpecBoolArchive text_wrap = 1; + optional bool text_wrap_undefined = 2; + optional .TSSSOS.SpecIntegerArchive type = 3; + optional bool type_undefined = 4; + optional .TSDSOS.SpecFillArchive fill = 5; + optional bool fill_undefined = 6; + optional .TSSSOS.SpecIntegerArchive vertical_alignment = 7; + optional bool vertical_alignment_undefined = 8; + optional .TSWPSOS.SpecPaddingArchive padding = 9; + optional bool padding_undefined = 10; +} + +message .TSTSOS.TableStylePropertyChangeSetArchive { + optional .TSSSOS.SpecBoolArchive auto_resize = 1; + optional bool auto_resize_undefined = 2; + optional .TSSSOS.SpecBoolArchive banded_rows = 3; + optional bool banded_rows_undefined = 4; + optional .TSDSOS.SpecFillArchive banded_cell_fill = 5; + optional bool banded_cell_fill_undefined = 6; + optional .TSSSOS.SpecBoolArchive behaves_like_spreadsheet = 7; + optional bool behaves_like_spreadsheet_undefined = 8; + optional .TSDSOS.SpecStrokeArchive body_horizontal_border_stroke = 9; + optional bool body_horizontal_border_stroke_undefined = 10; + optional .TSDSOS.SpecStrokeArchive body_vertical_border_stroke = 11; + optional bool body_vertical_border_stroke_undefined = 12; + optional .TSDSOS.SpecStrokeArchive body_horizontal_stroke = 13; + optional bool body_horizontal_stroke_undefined = 14; + optional .TSDSOS.SpecStrokeArchive body_vertical_stroke = 15; + optional bool body_vertical_stroke_undefined = 16; + optional .TSDSOS.SpecStrokeArchive header_column_border_stroke = 17; + optional bool header_column_border_stroke_undefined = 18; + optional .TSDSOS.SpecStrokeArchive header_column_vertical_stroke = 19; + optional bool header_column_vertical_stroke_undefined = 20; + optional .TSDSOS.SpecStrokeArchive header_column_horizontal_stroke = 21; + optional bool header_column_horizontal_stroke_undefined = 22; + optional .TSDSOS.SpecStrokeArchive header_column_separator_stroke = 23; + optional bool header_column_separator_stroke_undefined = 24; + optional .TSDSOS.SpecStrokeArchive header_row_border_stroke = 25; + optional bool header_row_border_stroke_undefined = 26; + optional .TSDSOS.SpecStrokeArchive header_row_horizontal_stroke = 27; + optional bool header_row_horizontal_stroke_undefined = 28; + optional .TSDSOS.SpecStrokeArchive header_row_vertical_stroke = 29; + optional bool header_row_vertical_stroke_undefined = 30; + optional .TSDSOS.SpecStrokeArchive header_row_separator_stroke = 31; + optional bool header_row_separator_stroke_undefined = 32; + optional .TSDSOS.SpecStrokeArchive footer_row_border_stroke = 33; + optional bool footer_row_border_stroke_undefined = 34; + optional .TSDSOS.SpecStrokeArchive footer_row_horizontal_stroke = 35; + optional bool footer_row_horizontal_stroke_undefined = 36; + optional .TSDSOS.SpecStrokeArchive footer_row_vertical_stroke = 37; + optional bool footer_row_vertical_stroke_undefined = 38; + optional .TSDSOS.SpecStrokeArchive footer_row_separator_stroke = 39; + optional bool footer_row_separator_stroke_undefined = 40; + optional .TSTSOS.SpecTableStrokePresetListArchive stroke_preset_list_object = 41; + optional bool stroke_preset_list_object_undefined = 42; + optional .TSSSOS.SpecBoolArchive vertical_strokes_visible = 43; + optional bool vertical_strokes_visible_undefined = 44; + optional .TSSSOS.SpecBoolArchive horizontal_strokes_visible = 45; + optional bool horizontal_strokes_visible_undefined = 46; + optional .TSSSOS.SpecBoolArchive header_row_sep_visible = 47; + optional bool header_row_sep_visible_undefined = 48; + optional .TSSSOS.SpecBoolArchive header_row_verticals_visible = 49; + optional bool header_row_verticals_visible_undefined = 50; + optional .TSSSOS.SpecBoolArchive header_col_sep_visible = 51; + optional bool header_col_sep_visible_undefined = 52; + optional .TSSSOS.SpecBoolArchive header_col_horizontals_visible = 53; + optional bool header_col_horizontals_visible_undefined = 54; + optional .TSSSOS.SpecBoolArchive footer_sep_visible = 55; + optional bool footer_sep_visible_undefined = 56; + optional .TSSSOS.SpecBoolArchive footer_verticals_visible = 57; + optional bool footer_verticals_visible_undefined = 58; + optional .TSSSOS.SpecBoolArchive border_strokes_visible = 59; + optional bool border_strokes_visible_undefined = 60; + optional .TSSSOS.SpecStringArchive master_font_family = 61; + optional bool master_font_family_undefined = 62; + optional .TSSSOS.SpecIntegerArchive writing_direction = 63; + optional bool writing_direction_undefined = 64; + optional .TSDSOS.SpecStrokeArchive category_level1_top_stroke = 65; + optional bool category_level1_top_stroke_undefined = 66; + optional .TSDSOS.SpecStrokeArchive category_level2_top_stroke = 67; + optional bool category_level2_top_stroke_undefined = 68; + optional .TSDSOS.SpecStrokeArchive category_level3_top_stroke = 69; + optional bool category_level3_top_stroke_undefined = 70; + optional .TSDSOS.SpecStrokeArchive category_level4_top_stroke = 71; + optional bool category_level4_top_stroke_undefined = 72; + optional .TSDSOS.SpecStrokeArchive category_level5_top_stroke = 73; + optional bool category_level5_top_stroke_undefined = 74; + optional .TSDSOS.SpecStrokeArchive category_level1_label_separator_stroke = 75; + optional bool category_level1_label_separator_stroke_undefined = 76; + optional .TSDSOS.SpecStrokeArchive category_level2_label_separator_stroke = 77; + optional bool category_level2_label_separator_stroke_undefined = 78; + optional .TSDSOS.SpecStrokeArchive category_level3_label_separator_stroke = 79; + optional bool category_level3_label_separator_stroke_undefined = 80; + optional .TSDSOS.SpecStrokeArchive category_level4_label_separator_stroke = 81; + optional bool category_level4_label_separator_stroke_undefined = 82; + optional .TSDSOS.SpecStrokeArchive category_level5_label_separator_stroke = 83; + optional bool category_level5_label_separator_stroke_undefined = 84; + optional .TSDSOS.SpecStrokeArchive category_level1_bottom_stroke = 85; + optional bool category_level1_bottom_stroke_undefined = 86; + optional .TSDSOS.SpecStrokeArchive category_level2_bottom_stroke = 87; + optional bool category_level2_bottom_stroke_undefined = 88; + optional .TSDSOS.SpecStrokeArchive category_level3_bottom_stroke = 89; + optional bool category_level3_bottom_stroke_undefined = 90; + optional .TSDSOS.SpecStrokeArchive category_level4_bottom_stroke = 91; + optional bool category_level4_bottom_stroke_undefined = 92; + optional .TSDSOS.SpecStrokeArchive category_level5_bottom_stroke = 93; + optional bool category_level5_bottom_stroke_undefined = 94; + optional .TSDSOS.SpecStrokeArchive category_level1_interior_stroke = 95; + optional bool category_level1_interior_stroke_undefined = 96; + optional .TSDSOS.SpecStrokeArchive category_level2_interior_stroke = 97; + optional bool category_level2_interior_stroke_undefined = 98; + optional .TSDSOS.SpecStrokeArchive category_level3_interior_stroke = 99; + optional bool category_level3_interior_stroke_undefined = 100; + optional .TSDSOS.SpecStrokeArchive category_level4_interior_stroke = 101; + optional bool category_level4_interior_stroke_undefined = 102; + optional .TSDSOS.SpecStrokeArchive category_level5_interior_stroke = 103; + optional bool category_level5_interior_stroke_undefined = 104; + optional .TSDSOS.SpecStrokeArchive body_pivot_group_horizontal_stroke = 105; + optional bool body_pivot_group_horizontal_stroke_undefined = 106; + optional .TSDSOS.SpecStrokeArchive body_pivot_group_vertical_stroke = 107; + optional bool body_pivot_group_vertical_stroke_undefined = 108; + optional .TSDSOS.SpecStrokeArchive body_pivot_de_emphasis_horizontal_stroke = 109; + optional bool body_pivot_de_emphasis_horizontal_stroke_undefined = 110; + optional .TSDSOS.SpecStrokeArchive body_pivot_emphasis_vertical_stroke = 111; + optional bool body_pivot_emphasis_vertical_stroke_undefined = 112; + optional .TSDSOS.SpecStrokeArchive header_column_pivot_group_horizontal_stroke = 113; + optional bool header_column_pivot_group_horizontal_stroke_undefined = 114; + optional .TSDSOS.SpecStrokeArchive header_column_pivot_group_de_emphasis_stroke = 115; + optional bool header_column_pivot_group_de_emphasis_stroke_undefined = 116; + optional .TSDSOS.SpecStrokeArchive header_column_pivot_separator_stroke = 117; + optional bool header_column_pivot_separator_stroke_undefined = 118; + optional .TSDSOS.SpecStrokeArchive header_row_pivot_group_vertical_stroke = 119; + optional bool header_row_pivot_group_vertical_stroke_undefined = 120; + optional .TSDSOS.SpecStrokeArchive header_row_pivot_group_de_emphasis_stroke = 121; + optional bool header_row_pivot_group_de_emphasis_stroke_undefined = 122; + optional .TSDSOS.SpecStrokeArchive header_row_pivot_title_stroke = 123; + optional bool header_row_pivot_title_stroke_undefined = 124; + optional .TSDSOS.SpecStrokeArchive footer_row_pivot_group_vertical_stroke = 125; + optional bool footer_row_pivot_group_vertical_stroke_undefined = 126; +} + + +enum .TST.TableArea { + TableAreaBody = 1; + TableAreaHeaderRow = 2; + TableAreaHeaderColumn = 3; + TableAreaFooterRow = 4; +} + +enum .TST.TableAreaTransition { + TableAreaTransitionHeaderRowToBody = 1; + TableAreaTransitionBodyToHeaderRow = 2; + TableAreaTransitionFooterRowToBody = 3; + TableAreaTransitionBodyToFooterRow = 4; + TableAreaTransitionHeaderColumnToBody = 5; + TableAreaTransitionBodyToHeaderColumn = 6; +} + +enum .TST.ColumnRowBundleItemTypeEnum { + ColumnRowTypeAnchor = 0; + ColumnRowTypeHeaderRow = 1; + ColumnRowTypeBodyRow = 2; + ColumnRowTypeFooterRow = 3; + ColumnRowTypeHeaderColumn = 4; + ColumnRowTypeBodyColumn = 5; +} + +message .TST.TableCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath table_info_id_path = 2; + optional string commandname = 3; + optional .TSP.Reference default_cell_styles_container = 4; + optional double timestamp = 5; + optional uint32 random_seed_lo = 6; + optional uint32 random_seed_hi = 7; + optional bool is_inverse = 8; + optional double old_timestamp = 9; + optional uint64 old_random_seed = 10; +} + +message .TST.CommandApplyCellContentsArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference cell_diff_map = 2; + optional .TSP.Reference rollback_cell_diff_map = 3; + repeated .TSP.UUID custom_format_keys = 4; + optional string action_string = 5; +} + +message .TST.CommandApplyCellDiffMapArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference cell_diff_map = 2; + required bool should_allow_merge_fragments = 3; + optional .TSP.Reference inverse_cell_diff_map = 4; + repeated .TSP.UUID custom_format_keys = 5; +} + +message .TST.CommandApplyCellMapArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference redo_cell_map = 2; + optional .TSP.Reference undo_cell_map = 3; + optional .TSP.Reference undo_formula_rewrite_command = 4; + repeated .TSP.UUID custom_format_keys = 5; + optional uint32 merge_owner_rollback_index = 6; + required bool is_from_paste = 7; + repeated .TSP.Reference formula_rewrite_commands = 8; +} + +message .TST.CommandApplyConcurrentCellMapArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference redo_concurrent_cell_map = 2; + optional .TSP.Reference undo_concurrent_cell_map = 3; + optional .TSP.Reference undo_formula_rewrite_command = 4; + repeated .TSP.UUID custom_format_keys = 5; + optional uint32 merge_owner_rollback_index = 6; + required bool is_from_paste = 7; + repeated .TSP.Reference formula_rewrite_commands = 8; +} + +message .TST.CommandChangeFreezeHeaderStateArchive { + required .TST.TableCommandArchive super = 1; + required .TST.TableDimensionArchive direction = 2; + required bool new_freeze_state = 3; + required bool prev_freeze_state = 4; +} + +message .TST.CommandDeleteCellsArchive { + required .TST.TableCommandArchive super = 1; + optional bool invalidate_comments = 5; + optional bool invalidate_comments_valid = 6; + optional .TST.CellUIDRegionArchive cell_uid_region = 7; + optional .TST.CellUIDListArchive summary_cell_uid_list = 8; + optional .TSP.Reference inverse_concurrent_cell_map = 9; +} + +message .TST.CommandDeleteCellContentsArchive { + required .TST.TableCommandArchive super = 1; + required .TST.CellUIDListArchive cell_uid_list = 2; + optional .TSP.Reference inverse_cell_diff_map = 3; +} + +message .TST.CommandMutateCellFormatArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.CellUIDListArchive cell_uid_list = 2; + optional .TSP.Reference inverse_cell_diff_map = 3; + optional .TSP.Reference whole_format_diff_map = 4; + required uint32 intended_format_type = 5; +} + +message .TST.CommandSetAutomaticDurationUnitsArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + optional bool automatic_units = 4; +} + +message .TST.CommandSetDurationStyleArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + optional uint32 duration_style = 2; +} + +message .TST.CommandSetDurationUnitSmallestLargestArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + optional uint32 smallest_unit = 2; + optional uint32 largest_unit = 3; +} + +message .TST.CommandReplaceCustomFormatArchive { + optional .TSP.Reference undo_diff_map = 1; + optional .TSP.Reference commit_diff_map = 2; + required .TST.TableCommandArchive super = 6; +} + +message .TST.CommandMoveCellsArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.UUIDPath dst_table_info_id_path = 2; + required .TSP.UUIDRectArchive src_uid_range = 3; + required .TSP.UUIDRectArchive dst_uid_range = 4; + optional .TST.TableDimensionArchive table_dimension = 5; + required .TSP.Reference src_cell_map = 6; + optional .TSP.Reference dst_cell_map = 7; + optional .TSP.Reference dst_cell_styles_container = 8; + optional .TSP.Reference src_undo_cell_map = 9; + optional .TSP.Reference dst_undo_cell_map = 10; + required uint32 dst_merge_owner_rollback_index = 11; + repeated .TSP.Reference formula_rewrite_commands = 12; + optional .TST.MergeOperationArchive merge_action_to_restore = 13; + optional .TST.CellUIDListArchive comment_cell_uids_to_restore = 14; + repeated .TSP.Reference comment_storages_to_restore = 15; +} + +message .TST.ColumnRowMetadataArchive { + required double size = 1; + required uint32 hiding_action = 2; + optional .TSP.Reference cell_style = 3; + optional .TSP.Reference text_style = 4; + optional .TSP.UUID uuid = 5; +} + +message .TST.CommandInsertColumnsOrRowsArchive { + required .TST.TableCommandArchive super = 1; + required .TST.ColumnRowBundleArchive bundle = 2; + required .TSP.Reference concurrent_cell_map = 15; + required .TSP.Reference categories_cell_map = 16; + optional .TSP.Reference undo_commands = 4; + optional .TSP.Reference undo_concurrent_cell_map = 17; + optional .TSP.Reference undo_categories_cell_map = 18; + optional .TST.TableSortOrderUIDArchive sort_order = 6; + optional .TST.TableGroupSortOrderUIDArchive group_sort_order = 14; + optional .TSP.Reference filter_set = 7; + optional bool should_edge_expand_formula_ranges = 8; + optional bool was_categorized = 9; + repeated .TSP.UUID undo_order = 10; + required .TSP.UUID src_row_column_uid = 11; + required .TSP.UUID opp_row_column_uid = 12; + optional .TST.ColumnRowBundleArchive undo_bundle = 13; +} + +message .TST.ColumnRowBundleArchive { + required bool is_row = 1; + repeated .TSP.UUID view_uid_list = 2; + repeated .TST.ColumnRowBundleItemTypeEnum view_type_list = 3; + repeated .TSP.UUID base_uid_list = 4; + repeated .TST.ColumnRowBundleItemTypeEnum base_type_list = 5; + repeated .TSP.UUID category_order_uid_list = 6; + repeated .TST.ColumnRowBundleItemTypeEnum category_order_type_list = 7; + repeated .TST.ColumnRowMetadataArchive metadata_list = 8; +} + +message .TST.CommandRemoveColumnsOrRowsArchive { + required .TST.TableCommandArchive super = 1; + required .TST.ColumnRowBundleArchive bundle = 2; + optional .TSP.Reference concurrent_cell_map = 11; + optional .TSP.Reference categories_cell_map = 12; + optional .TSP.Reference undo_concurrent_cell_map = 13; + optional .TSP.Reference undo_categories_cell_map = 14; + optional .TSP.Reference undo_filter_set = 5; + optional .TST.TableSortOrderUIDArchive undo_sort_order = 6; + optional .TST.TableGroupSortOrderUIDArchive undo_group_sort_order = 10; + optional .TSP.Reference formula_rewrite_command_for_undo = 7; + optional bool inverse_should_edge_expand_formula_ranges = 8; + repeated .TSP.UUID undo_order = 9; +} + +message .TST.CommandRowColumnRangeArchive { + required .TST.TableCommandArchive super = 1; + repeated .TSP.UUID uids = 2; + required bool is_row = 3; +} + +message .TST.CommandResizeColumnOrRowArchive { + required .TST.CommandRowColumnRangeArchive super = 1; + repeated float sizes = 2; + repeated float sizes_for_undo = 3; +} + +message .TST.CommandCategoryResizeColumnOrRowArchive { + required .TST.TableCommandArchive super = 1; + repeated float category_row_sizes = 2; + repeated float category_row_sizes_for_undo = 3; + repeated float category_label_row_sizes = 4; + repeated float category_label_row_sizes_for_undo = 5; + optional double category_column_size = 6; + optional double category_column_size_for_undo = 7; +} + +message .TST.CommandHideShowArchive { + required .TST.CommandRowColumnRangeArchive super = 1; + required .TST.HideShowActionArchive hide_show_action = 2; + required uint32 hiding_action = 3; + repeated .TST.HideShowActionArchive hide_show_action_for_undo = 4; +} + +message .TST.CommandTextPreflightInsertCellArchive { + required .TST.TableCommandArchive super = 3; + optional .TSP.Reference coalesced_textcommand = 6; + optional .TSP.Reference postflightcommand = 8; + optional bool grouped_with_postflight = 9; + required .TST.Cell editing_cell = 10; + required .TSP.Reference editing_storage = 11; + optional uint32 last_column_hit_by_tap = 12; + required .TSP.UUIDCoordArchive cell_uid = 13; + optional .TSK.SelectionPathArchive archived_initial_selection_path = 14; +} + +message .TST.CommandPostflightSetCellArchive { + required .TST.TableCommandArchive super = 3; + optional .TSP.Reference childcommandundo = 4; + required .TST.Cell editing_cell = 6; + required .TST.Cell new_cell = 7; + required .TSP.Reference editing_storage = 8; + optional uint32 last_column_hit_by_tap = 9; + required .TSP.UUIDCoordArchive cell_uid = 10; +} + +message .TST.CommandChangeTableAreaForColumnOrRowArchive { + required .TST.CommandRowColumnRangeArchive super = 1; + required .TST.TableAreaTransition table_area_transition = 2; + optional .TSP.Reference cell_diff_map = 3; + optional .TSP.Reference undo_cell_diff_map = 4; + optional .TSP.Reference undo_commands = 5; + optional string action_string = 6; +} + +message .TST.CommandSetPencilAnnotationsArchive { + required .TST.TableCommandArchive super = 1; + repeated .TSP.Reference annotations = 2; + repeated .TSCE.FormulaArchive formulas = 3; + repeated uint64 formula_indexes = 4; + repeated .TSCE.FormulaArchive inverse_formulas = 5; + repeated uint64 inverse_formula_indexes = 6; + optional uint64 rollback_index = 7; +} + +message .TST.CommandSetTableNameArchive { + required string newtablename = 1; + optional string oldtablename = 2; + optional .TSP.Reference newstyle = 3; + optional .TSP.Reference oldstyle = 4; + required .TST.TableCommandArchive super = 5; + optional .TSP.Reference old_shape_style = 6; + optional .TSP.Reference new_shape_style = 7; + optional bool old_table_name_border_enabled = 8; + optional bool new_table_name_border_enabled = 9; +} + +message .TST.CommandSetTableNameEnabledArchive { + required .TST.TableCommandArchive super = 1; + required bool table_name_enabled = 2; + optional bool prev_table_name_enabled = 3; +} + +message .TST.CommandSetTableFontSizeArchive { + required .TST.TableCommandArchive super = 1; + required bool is_increase = 2; + required int32 font_size_diff = 3; + repeated double font_size_list = 4; + repeated double inverse_font_size_list = 5; + optional .TSP.Reference cell_diff_map = 6; + optional .TSP.Reference inverse_cell_diff_map = 7; + required bool styles_container_refresh_done = 8; +} + +message .TST.CommandSetTableFontNameArchive { + required .TST.TableCommandArchive super = 1; + required string font_name = 2; + required bool preserve_face = 3; + optional string previous_font_name = 4; + optional .TSP.Reference previous_table_style = 5; + repeated .TSP.Reference previous_text_styles = 6; + required .TSP.Reference cell_diff_map = 7; + optional .TSP.Reference inverse_cell_diff_map = 8; +} + +message .TST.CommandSetTableNameHeightArchive { + required .TST.TableCommandArchive super = 1; + required double old_table_name_height = 2; + required double new_table_name_height = 3; +} + +message .TST.CommandSetNowArchive { + required .TST.TableCommandArchive super = 1; +} + +message .TST.CommandSetWasCutArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.UUID from_table_uid = 2; + required .TSP.UUID prev_from_table_uid = 3; + required bool was_cut = 4; + required bool prev_was_cut = 5; + required .TSP.UUID from_group_by_uid = 6; + required .TSP.UUID prev_from_group_by_uid = 7; +} + +message .TST.CommandStyleCellsArchive { + required .TST.TableCommandArchive super = 1; + optional .TSP.ReferenceDictionary format_properties = 2; + required .TST.SelectionArchive selection = 3; + required .TSP.Reference undo_cell_map = 4; + required .TSP.Reference redo_cell_map = 5; + optional .TSP.Reference text_undo = 6; +} + +message .TST.CommandStyleTableArchive { + required .TST.TableCommandArchive super = 1; + optional .TSP.ReferenceDictionary format_properties = 2; + optional .TSTSOS.TableStylePropertyChangeSetArchive old_style = 3; + optional .TSTSOS.TableStylePropertyChangeSetArchive new_style = 4; +} + +message .TST.CommandSetRepeatingHeaderEnabledArchive { + required bool repeating_header_enabled = 1; + required .TST.TableDimensionArchive direction = 2; + required .TST.TableCommandArchive super = 3; + optional bool prev_repeating_header_enabled = 4; +} + +message .TST.CommandSetFiltersEnabledArchive { + required .TST.TableCommandArchive super = 1; + required bool new_filters_enabled = 2; + optional bool old_filters_enabled = 3; + repeated .TSP.UUID rollback_uid_list = 4; +} + +message .TST.CommandAddTableStylePresetArchive { + required .TST.TableCommandArchive super = 1; + required int32 preset_index = 2; + required .TSP.Reference table_styles = 3; + required bool send_notification = 4; +} + +message .TST.CommandRemoveTableStylePresetArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSP.Reference removed_table_styles = 3; + required int32 preset_id = 4; + required int32 preset_index_in_theme = 5; +} + +message .TST.CommandReplaceTableStylePresetArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference theme = 2; + required .TSP.Reference old_table_styles = 3; + required .TSP.Reference new_table_styles = 4; +} + +message .TST.CommandApplyTableStylePresetArchive { + required .TST.TableCommandArchive super = 1; + optional .TSP.Reference preset = 2; + optional .TSP.Reference styles = 3; + optional .TSP.Reference undo_preset = 4; + optional .TSP.Reference undo_styles = 5; + optional .TSP.Reference cell_diff_map = 6; + optional .TSP.Reference undo_cell_diff_map = 7; + required int32 apply_preset_option = 8; + required bool table_clears_all_flag = 11; + required bool undo_table_clears_all_flag = 12; + repeated .TST.ColumnRowMetadataArchive row_col_styles = 13; + repeated .TST.ColumnRowMetadataArchive undo_row_col_styles = 14; + optional .TSP.Reference change_prop_map_wrapper = 15; +} + +message .TST.CommandSetBaseArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required uint32 base = 2; +} + +message .TST.CommandSetBasePlacesArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required uint32 base_places = 2; +} + +message .TST.CommandSetBaseUseMinusSignArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required bool base_use_minus_sign = 2; +} + +message .TST.CommandSetCurrencyCodeArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required string currency_code = 2; +} + +message .TST.CommandSetFractionAccuracyArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required uint32 fraction_accuracy = 2; +} + +message .TST.CommandSetNegativeNumberStyleArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required uint32 negative_number_style = 2; +} + +message .TST.CommandSetNumberOfDecimalPlacesArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required uint32 decimal_places = 2; +} + +message .TST.CommandSetDateTimeFormatArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + optional string date_format_string = 2; + optional string time_format_string = 3; +} + +message .TST.CommandSetShowThousandsSeparatorArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required bool show_thousands_separator = 2; +} + +message .TST.CommandSetUseAccountingStyleArchive { + required .TST.CommandMutateCellFormatArchive super = 1; + required bool use_accounting_style = 2; +} + +message .TST.CommandSetRangeControlMinMaxIncArchive { + required .TST.TableCommandArchive super = 1; + optional double minimum = 2; + optional double maximum = 3; + optional double increment = 4; + optional .TSP.Reference cell_diff_map = 5; + optional .TST.CellUIDListArchive cell_uid_list = 6; + optional .TSP.Reference inverse_cell_diff_map = 7; + required bool is_first_commit = 8; +} + +message .TST.CommandMoveColumnsOrRowsArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.UUID dest_uid = 2; + required bool before = 3; + required .TSP.UUID undo_dest_uid = 4; + required bool undo_before = 5; + repeated .TSP.UUID uids = 6; + required .TST.TableDimensionArchive direction = 7; + optional .TSP.Reference formula_rewrite_command = 8; +} + +message .TST.CommandSortArchive { + required .TST.TableCommandArchive super = 1; + repeated .TSP.UUID from_row_uids = 2; + repeated .TSP.UUID to_row_uids = 3; + optional .TSP.Reference formula_rewrite_command = 4; +} + +message .TST.FormulaRewriteSpecArchive { + required uint32 rewrite_type = 1; + optional .TSP.UUID table_uid = 2; + optional .TSP.UUID cond_style_owner_uid = 3; + optional .TSP.UUID group_by_uid = 4; + optional bool is_inverse = 5; + optional .TSCE.ColumnOrRowUuidsInfoArchive column_or_row_uuids_info = 6; + optional .TSCE.ColumnOrRowUuidsInfoArchive aux_column_or_row_uuids_info = 7; + optional .TSCE.RegionMovedInfoArchive region_moved_info = 8; + optional .TSCE.RegionInfoArchive region_info = 9; + optional .TSCE.RewriteTableUIDInfoArchive rewrite_table_id_info = 10; + optional .TSCE.TableTransposeInfoArchive transposed_table_info = 11; + optional .TSCE.MergeOriginMovedArchive merge_origin_moved_info = 12; + optional .TSCE.MergeSourceArchive merge_source = 13; + optional .TSCE.RewriteGroupNodeUIDInfoArchive group_node_info = 14; + optional .TSCE.GroupByChangeArchive groupby_change = 15; +} + +message .TST.CommandRewriteFormulasForTransposeArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + required .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; + optional .TST.ImportWarningSetByCellRefArchive warningset_map = 4; +} + +message .TST.CommandRewriteTableFormulasForRewriteSpecArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + required .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; +} + +message .TST.CommandRewriteMergeFormulasArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + required .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; +} + +message .TST.CommandRewriteCategoryFormulasArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + required .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; +} + +message .TST.CommandRewriteFilterFormulasForTableResizeArchive { + required .TST.TableCommandArchive super = 1; +} + +message .TST.CommandRewriteFilterFormulasForRewriteSpecArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference filter_set = 2; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 3; +} + +message .TST.CommandRewriteConditionalStylesForRewriteSpecArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + optional .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; + optional .TSCE.ExpandedCellRefObjectMapArchive conditional_style_sets = 4; +} + +message .TST.CommandRewritePivotOwnerFormulasArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + required .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; +} + +message .TST.CommandMergeArchive { + required .TST.TableCommandArchive super = 1; + required .TST.CellUIDListArchive cell_uid_list = 2; + optional .TSP.Reference undo_cell_map = 3; + optional .TSP.Reference undo_formula_rewrite_command = 4; + optional uint32 merge_owner_rollback = 5; + optional .TSP.Reference commit_cell_map = 6; +} + +message .TST.CommandInverseMergeArchive { + required .TST.CommandApplyCellMapArchive super = 1; + required .TSP.UUIDCoordArchive merge_source_cell_uid = 2; +} + +message .TST.CommandUnmergeArchive { + required .TST.TableCommandArchive super = 1; + repeated .TSP.UUIDRectArchive unmerge_uid_ranges = 2; + optional .TSP.Reference undo_cell_map = 3; + optional .TSP.Reference undo_formula_rewrite_command = 4; +} + +message .TST.CommandChooseTableIdRemapperArchive { + required .TSK.CommandArchive super = 1; + required .TST.MultiTableRemapperArchive table_id_mapper = 2; + optional .TSP.Reference formula_rewrite_command_for_undo = 3; + required bool apply_and_clear = 4; +} + +message .TST.CommandCategorySetGroupingColumnsArchive { + required .TST.TableCommandArchive super = 1; + required int32 new_enabled_changing = 2; + required int32 old_enabled_changing = 3; + required .TST.GroupColumnListArchive new_grouping_columns = 4; + optional .TST.GroupColumnListArchive old_grouping_columns = 5; + required bool restore_base_order = 6; + repeated .TSP.UUID base_row_order = 7; + required bool undo_restore_base_order = 8; + repeated .TSP.UUID undo_base_row_order = 9; + required bool restore_view_order = 10; + repeated .TSP.UUID view_row_order = 11; + required bool undo_restore_view_order = 12; + repeated .TSP.UUID undo_view_row_order = 13; + repeated .TSP.UUID collapse_state = 14; + repeated .TSP.UUID undo_collapse_state = 15; + optional .TST.SummaryModelGroupByChangeStateArchive summary_change_state = 16; + optional .TST.SummaryModelGroupByChangeStateArchive undo_summary_change_state = 17; + optional .TST.ColumnAggregateListArchive new_column_aggregates = 18; + optional .TST.ColumnAggregateListArchive old_column_aggregates = 19; + optional .TSP.Reference undo_set_enabled_rewrite_command = 20; + optional .TSP.Reference undo_set_columns_rewrite_command = 21; + required bool force_restore_all_states = 22; + optional .TSP.Reference cell_diff_map = 23; + optional .TSP.Reference undo_cell_diff_map = 24; + optional .TSP.Reference undo_set_group_sort_order_command = 25; +} + +message .TST.FormulaEditingCommandGroupArchive { + required .TSK.ProgressiveCommandGroupArchive super = 1; + required bool undoSelectionValid = 2; + required uint32 undoSelectionStart = 3; + required uint32 undoSelectionLength = 4; + required uint32 undoActiveToken = 5; + required bool redoSelectionValid = 6; + required uint32 redoSelectionStart = 7; + required uint32 redoSelectionLength = 8; + required uint32 redoActiveToken = 9; +} + +message .TST.FormulaEditingCommandSelectionBehaviorArchive { + required .TSK.CommandSelectionBehaviorArchive super = 1; + optional uint32 undoActiveToken = 2; + optional uint32 redoActiveToken = 3; +} + +message .TST.TableCommandSelectionBehaviorArchive { + required .TSK.CommandSelectionBehaviorArchive super = 1; + optional .TSP.Reference table_info = 2; + optional .TSP.UUID last_column_uid_hit_by_tap = 3; + optional uint32 invalidate_comments = 4; +} + +message .TST.CommandApplyCellCommentArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.UUIDCoordArchive cell_uid = 2; + optional .TSP.Reference old_comment_storage = 3; + optional .TSP.Reference new_comment_storage = 4; + optional .TSD.CommentCommandVariant forward_variant = 5; + optional .TSD.CommentCommandVariant inverse_variant = 6; +} + +message .TST.CommandSetFormulaTokenizationArchive { + required .TSK.CommandArchive super = 1; + required bool tokenization = 2; +} + +message .TST.CommandSetFilterSetTypeArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.FilterSetArchive.FilterSetType old_filter_set_type = 2; + required .TST.FilterSetArchive.FilterSetType new_filter_set_type = 3; + repeated .TSP.UUID rollback_uid_list = 4; +} + +message .TST.CommandSetTextStyleArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference cell_diff_map = 2; + optional .TSP.Reference inverse_cell_diff_map = 3; +} + +message .TST.CommandSetTextStylePropertiesArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference cell_diff_map = 2; + repeated bool cell_was_rich_text = 3; + optional .TSP.Reference inverse_cell_diff_map = 4; +} + +message .TST.CommandJustForNotifyingArchive { + required .TST.TableCommandArchive super = 1; + required uint32 change_descriptor_type = 2; +} + +message .TST.CommandSetStorageLanguageArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference storage = 2; + required string language = 3; + required uint32 range_location = 4; + required uint32 range_length = 5; + optional .TSWP.UndoTransaction undo_transaction = 6; +} + +message .TST.CommandSetSortOrderArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.TableSortOrderArchive old_sort_order = 2; + optional .TST.TableSortOrderArchive new_sort_order = 3; +} + +message .TST.CommandSetGroupSortOrderArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.TableGroupSortOrderUIDArchive old_group_sort_order = 2; + optional .TST.TableGroupSortOrderUIDArchive new_group_sort_order = 3; +} + +message .TST.CommandRewriteSortOrderForTableResizeArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.TableSortOrderArchive old_sort_order = 2; + optional .TST.TableSortOrderArchive new_sort_order = 3; +} + +message .TST.CommandRewriteSortOrderForRewriteSpecArchive { + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + optional .TST.TableSortOrderArchive old_sort_order = 3; + optional .TST.TableSortOrderArchive new_sort_order = 4; +} + +message .TST.CommandSetFilterSetArchive { + required .TST.TableCommandArchive super = 1; + required .TSP.Reference new_filter_set = 2; + optional .TSP.Reference old_filter_set = 3; + repeated .TSP.UUID rollback_uid_list = 4; +} + +message .TST.ColumnRowRestoreDataArchive { + repeated .TSP.UUID uid_list = 1; + repeated .TST.ColumnRowMetadataArchive metadatas = 2; +} + +message .TST.CommandTransposeTableArchive { + required .TST.TableCommandArchive super = 1; + required .TST.ExpandedCellRange original_table_range = 2; + required .TSP.Reference original_cell_map = 3; + required uint32 original_footer_row_count = 4; + repeated float original_column_widths = 5; + repeated float original_row_heights = 6; + repeated .TST.CellRange ineligible_merge_list = 7; + required .TSP.Reference transposed_cell_map = 8; + optional .TSP.Reference undo_formula_rewrite_command = 9; + optional .TSP.Reference rich_text_subcommands = 10; + optional .TST.ColumnRowRestoreDataArchive column_restore_data = 11; + optional .TST.ColumnRowRestoreDataArchive row_restore_data = 12; +} + +message .TST.CommandSetStructuredTextImportRecordArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.StructuredTextImportRecord new_import_record = 2; + optional .TST.StructuredTextImportRecord old_import_record = 3; +} + +message .TST.CommandCategoryCollapseExpandGroupArchive { + required .TST.TableCommandArchive super = 1; + required bool is_collapsing = 2; + required .TST.GroupColumnListArchive grouping_columns = 3; + required .TST.ExpandCollapseStateArchive collapse_state = 4; + optional .TST.ExpandCollapseStateArchive undo_collapse_state = 5; +} + +message .TST.CommandCategoryChangeSummaryAggregateType { + required .TST.TableCommandArchive super = 1; + required uint32 aggregate_type = 2; + required uint32 undo_aggregate_type = 3; + required .TSP.UUID column_uid = 4; + required sint32 group_level = 5; +} + +message .TST.CommandCategorySetLabelRowVisibility { + required .TST.TableCommandArchive super = 1; + required uint32 group_level = 2; + required uint32 label_row_visibility = 3; + required uint32 undo_label_row_visibility = 4; +} + +message .TST.CommandCategoryWillChangeGroupValue { + required .TST.TableCommandArchive super = 1; + required .TSP.UUID group_node_uid = 2; + optional .TSP.UUID undo_group_node_uid = 3; + optional .TSCE.CellValueArchive group_value = 4; + optional .TSCE.CellValueArchive undo_group_value = 5; + optional .TSP.Reference rewrite_command_for_undo = 6; +} + +message .TST.IdempotentSelectionTransformerArchive { + required .TSP.Reference archived_selection = 1; +} + +message .TST.WPSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; + required .TSP.Reference archived_selection = 2; + optional .TSP.UUIDCoordArchive origin_cell_uid = 3; +} + +message .TST.TableSubSelectionTransformerBaseArchive { + required .TSP.UUIDPath table_info_id_path = 1; +} + +message .TST.TableNameSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; +} + +message .TST.ControlCellSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; + optional .TST.CellUIDListArchive cell_uids = 2; + optional .TSP.UUIDCoordArchive origin_cell_uid = 3; + required .TSCE.CellCoordinateArchive origin_cell_id = 4; +} + +message .TST.StockCellSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; + optional .TST.CellUIDListArchive cell_uids = 2; + optional .TSP.UUIDCoordArchive origin_cell_uid = 3; + required .TSCE.CellCoordinateArchive origin_cell_id = 4; +} + +message .TST.RegionSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; + optional .TST.CellUIDListArchive cell_uids = 2; + optional .TSP.UUIDCoordArchive origin_cell_uid = 3; + required .TSP.UUIDCoordArchive anchor_cell_uid = 4; + required .TSP.UUIDCoordArchive cursor_cell_uid = 5; +} + +message .TST.StrokeSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; + required .TSP.Reference archived_selection = 2; +} + +message .TST.RowColumnSelectionTransformerArchive { + required .TST.TableSubSelectionTransformerBaseArchive super = 1; + required .TST.SelectionTypeArchive selection_type = 2; + repeated .TSP.UUID row_col_uids = 3; +} + +message .TST.CommandCategoryMoveRowsArchive { + required .TST.TableCommandArchive super = 1; + required uint32 action_type = 2; + repeated .TSP.UUID category_row_order = 3; + repeated .TSP.UUID undo_category_row_order = 4; + required .TSP.Reference cell_diff_map = 5; + optional .TSP.Reference undo_cell_diff_map = 6; + optional .TST.GroupColumnListArchive grouping_columns = 7; +} + +message .TST.CommandRewriteHiddenStatesForGroupByChangeArchive { + required .TST.TableCommandArchive super = 1; + required .TSCE.GroupByChangeArchive group_by_change = 2; + optional .TST.ExpandCollapseStateArchive collapsed_state = 3; +} + +message .TST.CommandRewritePencilAnnotationFormulasArchive { + message AnnotationPair { + required uint64 index = 1; + required .TSP.Reference annotation = 2; + } + required .TST.TableCommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + required .TSCE.FormulasForUndoArchive formulas_to_rewrite = 3; + repeated .TST.CommandRewritePencilAnnotationFormulasArchive.AnnotationPair annotations_for_undo = 4; +} + +message .TST.CommandPivotSetPivotRulesArchive { + required .TST.TableCommandArchive super = 1; + optional .TSP.UUID new_target_pivot_refresh_uid = 2; + optional .TST.GroupColumnListArchive new_row_groupings = 3; + optional .TST.GroupColumnListArchive old_row_groupings = 4; + optional .TST.GroupColumnListArchive new_column_groupings = 5; + optional .TST.GroupColumnListArchive old_column_groupings = 6; + optional .TST.ColumnAggregateListArchive new_aggregates = 7; + optional .TST.ColumnAggregateListArchive old_aggregates = 8; + optional .TST.TableDimensionArchive new_flattening_dimension = 9; + optional .TST.TableDimensionArchive old_flattening_dimension = 10; + optional .TSP.Reference new_pivot_data_model = 11; + optional .TSP.Reference old_pivot_data_model = 12; + optional .TSP.UUID new_pivot_refresh_uid = 13; + optional .TSP.UUID old_pivot_refresh_uid = 14; + optional double new_pivot_refresh_timestamp = 15; + optional double old_pivot_refresh_timestamp = 16; + optional .TSP.Reference new_options_map = 17; + optional .TSP.Reference old_options_map = 18; + repeated .TSP.UUID new_view_row_order = 19; + repeated .TSP.UUID old_view_row_order = 20; + repeated .TSP.UUID new_view_column_order = 21; + repeated .TSP.UUID old_view_column_order = 22; + repeated .TSP.UUID new_collapsed_row_groups = 23; + repeated .TSP.UUID old_collapsed_row_groups = 24; + repeated .TSP.UUID new_collapsed_column_groups = 25; + repeated .TSP.UUID old_collapsed_column_groups = 26; + optional .TST.HierarchicalCellDiffMapArchive new_hierarchical_cell_diff_map = 27; + optional .TST.HierarchicalCellDiffMapArchive old_hierarchical_cell_diff_map = 28; + optional .TSP.Reference formula_rewrite_command_for_undo = 29; + optional .TSP.UUIDRectArchive new_body_uid_tract = 30; + optional .TSP.UUIDRectArchive old_body_uid_tract = 31; + optional .TSP.UUID old_target_pivot_refresh_uid = 32; + optional .TSP.UUID new_target_pivot_row_column_rule_change_uid = 33; + optional .TSP.UUID old_target_pivot_row_column_rule_change_uid = 34; + optional .TSP.UUID new_target_pivot_aggregate_rule_change_uid = 35; + optional .TSP.UUID old_target_pivot_aggregate_rule_change_uid = 36; + optional bool is_order_finalized = 37; + optional .TSP.Reference new_filter_set = 39; + optional .TSP.Reference old_filter_set = 40; + optional bool use_small_table_limits = 41; + optional int32 setting_filters_enabled = 42; + optional int32 undo_setting_filters_enabled = 43; +} + +message .TST.CommandPivotSetGroupingColumnOptionsArchive { + required .TST.TableCommandArchive super = 1; + optional .TSP.UUID grouping_column_uid = 2; + optional uint32 non_sorting_flag = 3; + optional bool bool_value = 4; + optional bool undo_bool_value = 5; +} + +message .TST.CommandPivotHideShowGrandTotalsArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.TableDimensionArchive dimension = 2; + optional bool is_hiding = 3; + optional bool undo_is_hiding = 4; +} + +message .TST.CommandPivotSortArchive { + required .TST.TableCommandArchive super = 1; + optional .TST.TableDimensionArchive dimension = 2; + repeated .TSP.UUID column_order = 3; + repeated .TSP.UUID undo_column_order = 4; + repeated .TSP.UUID row_order = 5; + repeated .TSP.UUID undo_row_order = 6; + required .TSP.UUID target_pivot_row_column_rule_change_uid = 7; + required .TSP.UUID target_pivot_aggregate_rule_change_uid = 8; + required .TSP.UUID target_pivot_data_refresh_uid = 9; + optional .TSP.UUID grouping_column_uid = 10; + optional uint32 sorting_flags = 11; + optional uint32 undo_sorting_flags = 12; + optional .TSP.UUID sorting_aggregate_rule_uid = 13; + optional .TSP.UUID undo_sorting_aggregate_rule_uid = 14; + required bool is_order_finalized = 15; +} + +message .TST.CommandRewriteTrackedReferencesArchive { + required .TSK.CommandArchive super = 1; + optional .TST.FormulaRewriteSpecArchive rewrite_spec = 2; +} + +message .TST.CommandExtendTableIDHistoryArchive { + required .TSK.CommandArchive super = 1; + required .TST.FormulaRewriteSpecArchive rewrite_spec = 2; + optional .TSCE.RewriteTableUIDInfoArchive table_uid_history_rollback = 3; +} + + +message .KN.AnimationAttributesArchive { + optional string animation_type = 1; + optional string effect = 2; + optional double duration = 3; + optional uint32 direction = 4; + optional double delay = 5; + optional bool is_automatic = 6; + optional .TSP.Color color = 7; + optional .TSD.PathSourceArchive custom_effect_timing_curve_1 = 8; + optional .TSD.PathSourceArchive custom_effect_timing_curve_2 = 9; + optional .TSD.PathSourceArchive custom_effect_timing_curve_3 = 10; + optional uint32 random_number_seed = 11; + optional double custom_detail = 12; + optional string custom_effect_timing_curve_theme_name_1 = 13; + optional string custom_effect_timing_curve_theme_name_2 = 14; + optional string custom_effect_timing_curve_theme_name_3 = 15; + optional bool writing_direction_is_rtl = 16; +} + +message .KN.TransitionAttributesArchive { + enum TransitionCustomAttributesTimingCurveType { + TransitionCustomAttributesTimingCurveTypeLinear = 1; + TransitionCustomAttributesTimingCurveTypeEaseIn = 2; + TransitionCustomAttributesTimingCurveTypeEaseOut = 3; + TransitionCustomAttributesTimingCurveTypeEaseInEaseOut = 4; + TransitionCustomAttributesTimingCurveTypeCustom = 5; + } + enum TransitionCustomAttributesTextDeliveryType { + TransitionCustomAttributesTextDeliveryTypeByObject = 1; + TransitionCustomAttributesTextDeliveryTypeByWord = 2; + TransitionCustomAttributesTextDeliveryTypeByCharacter = 3; + TransitionCustomAttributesTextDeliveryTypeByLine = 4; + } + optional .KN.AnimationAttributesArchive animationAttributes = 8; + optional float custom_twist = 9; + optional uint32 custom_mosaic_size = 10; + optional uint32 custom_mosaic_type = 11; + optional bool custom_bounce = 12; + optional bool custom_magic_move_fade_unmatched_objects = 13; + optional .KN.TransitionAttributesArchive.TransitionCustomAttributesTimingCurveType custom_timing_curve = 15; + optional .KN.TransitionAttributesArchive.TransitionCustomAttributesTextDeliveryType custom_text_delivery_type = 16; + optional bool custom_motion_blur = 17; + optional float custom_travel_distance = 18; + optional string database_animation_type = 1 [deprecated = true]; + optional string database_effect = 2 [deprecated = true]; + optional double database_duration = 3 [deprecated = true]; + optional uint32 database_direction = 4 [deprecated = true]; + optional float database_delay = 5 [deprecated = true]; + optional bool database_is_automatic = 6 [deprecated = true]; + optional .TSP.Color database_color = 7 [deprecated = true]; +} + +message .KN.TransitionArchive { + required .KN.TransitionAttributesArchive attributes = 2; +} + +message .KN.BuildChunkArchive { + optional .TSP.Reference build = 1; + optional uint32 index = 2 [deprecated = true]; + optional double delay = 3; + optional double duration = 4; + optional bool automatic = 5; + optional bool referent = 6; + optional .KN.BuildChunkIdentifierArchive build_chunk_identifier = 7; + optional .TSP.UUID build_id = 8; +} + +message .KN.BuildChunkIdentifierArchive { + optional .TSP.UUID build_id = 1; + optional int32 build_chunk_id = 2; +} + +message .KN.BuildAttributeValueArchive { + enum BuildAttributeValueType { + k_integer = 0; + k_double = 2; + k_bool = 3; + k_string = 4; + k_path_source = 5; + k_color = 6; + } + optional uint32 integer_value = 1; + optional double double_value = 2; + optional bool bool_value = 3; + optional string string_value = 4; + optional .TSD.PathSourceArchive path_source_value = 5; + optional .TSP.Color color_value = 6; + optional .KN.BuildAttributeValueArchive.BuildAttributeValueType type = 7; +} + +message .KN.BuildAttributeTupleArchive { + optional string property = 1; + optional .KN.BuildAttributeValueArchive value = 2; + optional .TSP.UUID build_id = 3; + optional .KN.BuildChunkIdentifierArchive build_chunk_identifier = 4; +} + +message .KN.BuildAttributesArchive { + enum BuildAttributesAcceleration { + kNone = 0; + kEaseIn = 1; + kEaseOut = 2; + kEaseBoth = 3; + kCustom = 4; + } + enum BuildAttributesRotationDirection { + kClockwise = 31; + kCounterclockwise = 32; + } + enum BuildAttributesCurveStyle { + kStraight = 0; + kCurved = 1; + } + enum BuildAttributesTextDelivery { + kTextDeliveryUndefined = 0; + kTextDeliveryByObject = 1; + kTextDeliveryByWord = 2; + kTextDeliveryByCharacter = 3; + kTextDeliveryByLine = 4; + } + enum BuildAttributesDeliveryOption { + kDeliveryOptionUndefined = 0; + kDeliveryOptionForward = 1; + kDeliveryOptionBackward = 2; + kDeliveryOptionFromCenter = 3; + kDeliveryOptionFromEdges = 4; + kDeliveryOptionRandom = 5; + } + enum ActionBuildAttributesJiggleIntensity { + kJiggleIntensitySmall = 0; + kJiggleIntensityMedium = 1; + kJiggleIntensityLarge = 2; + } + optional .KN.AnimationAttributesArchive animationAttributes = 18; + optional uint32 eventTrigger = 4; + optional double delayAutomaticAfter = 6 [deprecated = true]; + optional double delayAutomaticWith = 7 [deprecated = true]; + optional .KN.BuildAttributesArchive.BuildAttributesCurveStyle curveStyle = 14; + optional double ChartRotation3D = 17; + optional uint32 startOffset = 27; + optional uint32 endOffset = 28; + optional double action_rotationAngle = 9; + optional .KN.BuildAttributesArchive.BuildAttributesRotationDirection action_rotationDirection = 10; + optional double action_scaleSize = 11; + optional double action_colorAlpha = 12; + optional .KN.BuildAttributesArchive.BuildAttributesAcceleration action_acceleration = 13; + optional .TSD.PathSourceArchive action_motionPathSource = 22; + optional bool custom_bounce = 19; + optional .KN.BuildAttributesArchive.BuildAttributesTextDelivery custom_textDelivery = 20; + optional .KN.BuildAttributesArchive.BuildAttributesDeliveryOption custom_deliveryOption = 21; + optional bool custom_action_decay = 23; + optional uint32 custom_action_repeatCount = 24; + optional double custom_action_scale = 25; + optional .KN.BuildAttributesArchive.ActionBuildAttributesJiggleIntensity custom_action_jiggleIntensity = 26; + optional bool custom_motion_blur = 29; + optional bool custom_include_endpoints = 30; + optional bool custom_shine = 33; + optional double custom_scale_amount = 34; + optional double custom_travel_distance = 35; + optional bool custom_cursor = 36; + optional bool custom_align_to_path = 37; + optional string database_animationType = 1 [deprecated = true]; + optional string database_effect = 2 [deprecated = true]; + optional uint32 database_direction = 3 [deprecated = true]; + optional double database_delay = 5 [deprecated = true]; + optional double database_duration = 8 [deprecated = true]; + optional .TSP.Color database_color = 16 [deprecated = true]; + optional string motionPathString = 15 [deprecated = true]; +} + +message .KN.BuildArchive { + optional .TSP.Reference drawable = 1; + required string delivery = 2; + optional double duration = 3 [deprecated = true]; + required .KN.BuildAttributesArchive attributes = 4; + optional int32 chunk_id_seed = 5; +} + +message .KN.PlaceholderArchive { + enum Kind { + kKindPlaceholder = 0; + kKindSlideNumberPlaceholder = 1; + kKindTitlePlaceholder = 2; + kKindBodyPlaceholder = 3; + kKindObjectPlaceholder = 4; + } + required .TSWP.ShapeInfoArchive super = 1; + optional .KN.PlaceholderArchive.Kind kind = 2 [default = kKindPlaceholder]; +} + +message .KN.NoteArchive { + required .TSP.Reference containedStorage = 1; +} + +message .KN.ClassicStylesheetRecordArchive { + repeated .TSS.StylesheetArchive.IdentifiedStyleEntry identifier_to_style_map = 1; + optional .TSP.Reference deprecated_theme = 2 [deprecated = true]; +} + +message .KN.ClassicThemeRecordArchive { + optional string uuid = 1; + optional .TSP.Reference stylesheetRecord = 2; + repeated .TSP.Reference templates = 3; +} + +message .KN.SlideArchive { + message SageTagMapEntry { + required string tag = 1; + required .TSP.Reference info = 2; + } + message InstructionalTextMap { + message InstructionalTextMapEntry { + optional .TSP.Reference info = 1; + required string instructional_text = 2; + } + repeated .KN.SlideArchive.InstructionalTextMap.InstructionalTextMapEntry instructional_text_for_infos = 1; + } + required .TSP.Reference style = 1; + repeated .TSP.Reference builds = 2; + repeated .KN.BuildChunkArchive buildChunkArchives = 3 [deprecated = true]; + repeated .TSP.Reference buildChunks = 43; + required .KN.TransitionArchive transition = 4; + optional .TSP.Reference titlePlaceholder = 5; + optional .TSP.Reference bodyPlaceholder = 6; + optional .TSP.Reference objectPlaceholder = 30; + optional .TSP.Reference slideNumberPlaceholder = 20; + repeated .TSP.Reference owned_drawables = 7; + repeated .TSP.Reference drawables_z_order = 42; + repeated .KN.SlideArchive.SageTagMapEntry sage_tag_to_info_map = 28; + optional .KN.SlideArchive.InstructionalTextMap instructional_text_map = 45; + optional string name = 10; + optional .TSD.GeometryArchive titlePlaceholderGeometry = 11; + optional uint32 titlePlaceholderShapeStyleIndex = 12; + optional uint32 titlePlaceholderTextStyleIndex = 13; + optional .TSWP.ShapeStylePropertiesArchive titleLayoutProperties = 24; + optional .TSD.GeometryArchive bodyPlaceholderGeometry = 14; + optional uint32 bodyPlaceholderShapeStyleIndex = 15; + optional uint32 bodyPlaceholderTextStyleIndex = 16; + optional .TSWP.ShapeStylePropertiesArchive bodyLayoutProperties = 25; + optional .TSD.GeometryArchive slideNumberPlaceholderGeometry = 21; + optional uint32 slideNumberPlaceholderShapeStyleIndex = 22; + optional uint32 slideNumberPlaceholderTextStyleIndex = 23; + optional .TSWP.ShapeStylePropertiesArchive slideNumberLayoutProperties = 26; + optional .TSP.Reference classicStylesheetRecord = 29; + repeated .TSP.Reference bodyParagraphStyles = 31; + repeated .TSP.Reference bodyListStyles = 35; + optional string thumbnailTextForTitlePlaceholder = 37; + optional string thumbnailTextForBodyPlaceholder = 38; + optional bool slide_objects_layer_with_template = 41 [default = false]; + optional .TSP.Reference template_slide = 17; + repeated .TSD.GuideArchive staticGuides = 18; + optional .TSP.Reference userDefinedGuideStorage = 36; + required bool inDocument = 19; + optional .TSP.Reference note = 27; + repeated .TSP.Reference infos_using_object_placeholder_geometry = 44; + optional bool deprecated_objectPlaceholderVisibleForExport = 34; + optional .TSP.Reference info_using_object_placeholder_geometry = 39; + optional bool info_using_object_placeholder_geometry_matches_object_placeholder_geometry = 40; +} + +message .KN.SlideNodeArchive { + message SlideSpecificHyperlinkMapEntry { + required string slideNodeIDString = 1; + repeated string infoOrStorageIDString = 2; + } + repeated .TSP.Reference children = 1; + optional .TSP.Reference slide = 2; + optional uint32 depth = 21 [default = 1]; + repeated .TSP.DataReference thumbnails = 16; + repeated .TSP.Size thumbnailSizes = 10; + optional bool thumbnailsAreDirty = 14; + repeated string digests_for_datas_needing_download_for_thumbnail = 25; + required bool isSkipped = 4; + optional bool isCollapsed = 5 [deprecated = true]; + optional bool isCollapsedInOutlineView = 17 [deprecated = true]; + optional bool hasBodyInOutlineView = 19 [deprecated = true]; + required bool hasBuilds = 6 [deprecated = true]; + required bool hasTransition = 7; + optional bool hasNote = 8; + optional bool isSlideNumberVisible = 18 [default = false]; + optional string uniqueIdentifier = 11 [deprecated = true]; + optional string copyFromSlideIdentifier = 12; + optional uint32 slideSpecificHyperlinkCount = 13 [deprecated = true]; + optional uint32 build_event_count = 15; + optional uint32 build_event_count_cache_version = 26; + optional bool build_event_count_is_up_to_date = 22 [deprecated = true]; + optional bool has_explicit_builds = 20; + optional uint32 has_explicit_builds_cache_version = 27; + optional bool has_explicit_builds_is_up_to_date = 23 [deprecated = true]; + repeated .KN.SlideNodeArchive.SlideSpecificHyperlinkMapEntry slideSpecificHyperlinkMap = 24; + optional bool background_is_no_fill_or_color_fill_with_alpha = 28; + optional .TSP.UUID template_slide_id = 29; + repeated .TSP.UUID live_video_source_ids = 30; + repeated .KN.LiveVideoSourceUsageEntry live_video_source_usage_entries = 31; + optional .TSP.Reference database_thumbnail = 3 [deprecated = true]; + repeated .TSP.Reference database_thumbnails = 9 [deprecated = true]; +} + +message .KN.DesktopUILayoutArchive { + enum SidebarViewMode { + kSidebarViewModeNavigator = 0; + kSidebarViewModeOutline = 1; + } + enum InspectorPaneViewMode { + kInspectorPaneViewModeFormat = 0; + kInspectorPaneViewModeAnimate = 1; + kInspectorPaneViewModeSetup = 2; + } + optional bool sidebar_visible = 1; + optional .KN.DesktopUILayoutArchive.SidebarViewMode sidebar_view_mode = 2; + optional bool notes_visible = 3; + optional bool light_table_visible = 5; + optional bool inspector_pane_visible = 6 [default = true]; + optional .KN.DesktopUILayoutArchive.InspectorPaneViewMode inspector_pane_view_mode = 7 [default = kInspectorPaneViewModeFormat]; + optional bool showing_template_slides = 8; + optional bool inspector_pane_autohidden = 9; + optional bool element_list_visible = 10; + optional bool activity_stream_visible = 11; + optional bool activity_stream_was_visible = 12; +} + +message .KN.UIStateArchive { + optional .TSP.Reference slideNodeToEdit = 1 [deprecated = true]; + optional .TSP.Reference deprecated_template_slide_node_to_apply = 2; + optional .TSP.Size deprecated_slideThumbnailSize = 3; + optional float canvasViewScale = 4; + optional .TSP.Point canvasOffset = 5; + repeated .TSP.Reference selectedSlideNodes = 6 [deprecated = true]; + optional float iPhoneCanvasViewScale = 7 [deprecated = true]; + optional .TSP.Point iPhoneCanvasOffset = 8 [deprecated = true]; + optional float iPhone568CanvasViewScale = 9 [deprecated = true]; + optional .TSP.Point iPhone568CanvasOffset = 10 [deprecated = true]; + optional .TSP.Reference desktop_ui_layout = 11; + optional bool desktop_slide_view_content_fits_window = 12; + optional float desktop_canvas_view_scale = 13; + optional .TSP.Point desktop_canvas_offset = 21; + optional float light_table_zoom_scale = 14; + repeated .TSCH.ChartUIState chart_ui_state = 15; + optional bool show_slide_guides = 16; + optional bool show_template_guides = 17; + optional bool shows_comments = 18; + optional bool comments_printing_toggle_enabled = 39; + repeated .TSP.Reference collapsed_slide_nodes = 19; + repeated .TSP.Reference outline_collapsed_slide_nodes = 28; + repeated .TSP.Reference outline_has_body_slide_nodes = 30; + optional bool shows_ruler = 20; + optional float desktop_navigator_view_width = 22; + optional float desktop_outline_view_width = 23; + optional bool desktop_outline_view_default_fixed = 31; + optional .TSP.Size desktop_main_content_size = 24; + optional float desktop_presenter_notes_view_height = 25; + optional .TSP.Point desktop_main_window_origin = 26; + optional bool light_table_hides_skipped_slides = 27; + optional .TSK.SelectionPathArchive selection_path = 29; + optional float desktop_element_list_view_width = 32; + repeated .TSP.Reference element_list_expanded_groups = 33; + optional bool shows_mobile_light_table = 34; + optional float mobile_light_table_zoom_scale = 35; + optional bool mobile_light_table_hides_skipped_slides = 36; + optional .TSP.Reference freehand_drawing_toolkit_state = 37; + optional .TSP.Reference selection_path_transformer = 38; + optional bool shows_mobile_outline = 40; + optional bool editing_disabled = 41; + optional float desktop_activity_stream_view_width = 42; +} + +message .KN.IOSRestorableViewStateRootArchive { + optional .KN.IOSSavedPlaybackStateArchive saved_playback_state = 1; +} + +message .KN.IOSSavedPlaybackStateArchive { + enum PresentationType { + Manual = 1; + Record = 2; + PlayRecording = 3; + Rehearse = 4; + Showcast = 5; + } + optional .KN.IOSSavedPlaybackStateArchive.PresentationType presentation_type = 1; + optional uint32 slide_node_index = 2; + optional uint32 event_index = 3; + repeated string breadcrumb_trail = 4; + optional bool had_external_display = 5; + optional bool is_elapsed_time_started = 6; + optional double elapsed_time_start_time = 7; + optional double recording_playback_current_time = 8; + optional bool should_show_slide_navigator = 9; + optional bool is_multi_presenter_show = 10; +} + +message .KN.CanvasSelectionArchive { + repeated .TSP.Reference infos = 1; + repeated .TSP.Reference non_interactive_infos = 5; + repeated .TSP.Reference infos_for_action_ghost_indexes = 6; + repeated .TSP.IndexSet action_ghost_indexes = 3; + repeated .TSP.Reference build_chunks = 4; + repeated uint32 database_action_ghost_indexes = 2 [deprecated = true]; +} + +message .KN.ActionGhostSelectionArchive { +} + +message .KN.ThemeCustomTimingCurveArchive { + required string name = 1; + required .TSD.PathSourceArchive curve = 2; +} + +message .KN.ThemeArchive { + required .TSS.ThemeArchive super = 1; + repeated .TSP.Reference templates = 2; + optional string uuid = 3; + repeated .TSP.Reference classicThemeRecords = 4; + optional .TSP.Reference default_template_slide_node = 5; + optional .TSP.Reference default_template_slide_node_reference = 6; + optional bool default_template_slide_node_is_our_best_guess = 7; + repeated .KN.ThemeCustomTimingCurveArchive custom_effect_timing_curves = 8; + optional .TSP.Reference live_video_source_collection = 9; + repeated .TSP.Reference motion_background_style_presets = 10; +} + +message .KN.SlideTreeArchive { + optional .TSP.Reference rootSlideNode = 1 [deprecated = true]; + repeated .TSP.Reference slides = 2; +} + +message .KN.ShowArchive { + enum KNShowMode { + kKNShowModeNormal = 0; + kKNShowModeAutoPlay = 1; + kKNShowModeHyperlinksOnly = 2; + } + optional .TSP.Reference uiState = 1; + required .TSP.Reference theme = 2; + required .KN.SlideTreeArchive slideTree = 3; + required .TSP.Size size = 4; + required .TSP.Reference stylesheet = 5; + optional bool slideNumbersVisible = 6; + optional .TSP.Reference recording = 7; + optional bool loop_presentation = 8; + optional .KN.ShowArchive.KNShowMode mode = 9 [default = kKNShowModeNormal]; + optional double autoplay_transition_delay = 10 [default = 5]; + optional double autoplay_build_delay = 11 [default = 2]; + optional bool idle_timer_active = 15; + optional double idle_timer_delay = 16 [default = 900]; + optional .TSP.Reference soundtrack = 17; + optional bool automatically_plays_upon_open = 18; + optional .TSP.Reference slideList = 19; +} + +message .KN.DocumentArchive { + required .TSA.DocumentArchive super = 3; + required .TSP.Reference show = 2; + optional .TSP.Reference tables_custom_format_list = 4; +} + +message .KN.SlideStylePropertiesArchive { + optional .TSD.FillArchive fill = 1; + optional .KN.TransitionAttributesArchive transition = 2; + optional bool transition_null = 3; + optional bool titlePlaceholderVisibility = 4; + optional bool bodyPlaceholderVisibility = 5; + optional bool objectPlaceholderVisibility = 7; + optional bool slideNumberPlaceholderVisibility = 6; +} + +message .KN.SlideStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .KN.SlideStylePropertiesArchive slide_properties = 11; +} + +message .KN.PasteboardNativeStorageArchive { + message LiveVideoSourcePair { + optional .TSP.Reference live_video_info = 1; + optional .TSP.Reference live_video_source = 2; + } + repeated .TSP.Reference drawables = 1; + repeated .TSP.Reference builds = 2; + repeated .TSP.Reference buildChunks = 3; + repeated .TSP.Reference slideNodes = 4; + repeated .TSP.Reference displayed_slide_nodes = 12; + repeated .TSP.Reference template_slide_nodes = 9; + repeated .TSP.Reference collapsedSlideNodes = 10; + repeated .TSP.Reference outlineCollapsedSlideNodes = 11; + repeated .TSP.Reference outlineHasBodySlideNodes = 13; + optional .TSP.Size originalShowSize = 5; + repeated .TSP.Range titleRanges = 6; + repeated .TSD.GeometryArchive geometries_in_root = 7; + optional string slide_node_unique_identifier = 8; + repeated .KN.ThemeCustomTimingCurveArchive custom_effect_timing_curves = 14; + repeated string original_slide_node_UUIDs = 15; + optional bool slide_nodes_have_datas_needing_download = 16; + optional .KN.TransitionArchive transition = 17; + repeated .KN.PasteboardNativeStorageArchive.LiveVideoSourcePair live_video_sources = 18; +} + +message .KN.PrototypeForUndoTemplateChangeArchive { + optional .TSP.Reference slide_style = 1; + required .TSP.UUID template_slide_id = 2; + repeated .TSP.UUID drawable_info_id_list = 3; + repeated .TSP.Reference placeholders = 4; + repeated string placeholder_tags_list = 5; +} + +message .KN.RecordingArchive { + enum RecordingSyncStateEnum { + kRecordingSyncStateInSyncWithShow = 0; + kRecordingSyncStateOutOfSyncWithShow = 1; + } + repeated .TSP.Reference event_tracks = 1; + optional .TSP.Reference movie_track = 2; + optional double duration = 3; + optional .KN.RecordingArchive.RecordingSyncStateEnum sync_state_enum = 4 [default = kRecordingSyncStateInSyncWithShow, deprecated = true]; + optional .TSP.Date modification_date = 5; + optional .KN.RecordingSyncState sync_state = 6; + optional .KN.RecordingCorrectionHistory correction_history = 7; +} + +message .KN.RecordingSyncState { + optional .TSP.UUID out_of_sync_token = 1; + optional bool can_clear_out_of_sync_token = 2 [default = false]; +} + +message .KN.RecordingCorrectionHistory { + optional bool did_add_missing_events_for_radar_49654305 = 1; +} + +message .KN.RecordingEventTrackArchive { + optional string type = 1; + repeated .KN.RecordingEventArchive events = 2; +} + +message .KN.RecordingEventArchive { + optional double start_time = 1 [default = -1]; + optional .KN.RecordingNavigationEventArchive navigation_event_archive = 1000; + optional .KN.RecordingLaserEventArchive laser_event_archive = 1001; + optional .KN.RecordingPauseEventArchive pause_event_archive = 1002; + optional .KN.RecordingMovieEventArchive movie_event_archive = 1003; +} + +message .KN.RecordingNavigationEventArchive { + enum RecordingNavigationEventAnimationPhase { + kRecordingNavigationEventAnimationNone = 0; + kRecordingNavigationEventAnimationStart = 1; + kRecordingNavigationEventAnimationEnd = 2; + } + optional .TSP.UUID target_slide_node_id = 4; + optional .TSP.Reference target_slide_node_reference = 1; + optional uint32 target_event_index = 2; + optional .KN.RecordingNavigationEventArchive.RecordingNavigationEventAnimationPhase animation_phase = 3 [default = kRecordingNavigationEventAnimationNone]; +} + +message .KN.RecordingLaserEventArchive { + optional .TSP.Point unscaled_location = 1 [deprecated = true]; + optional .TSP.Point unit_location = 2; +} + +message .KN.RecordingPauseEventArchive { + enum RecordingPauseEventType { + kRecordingPauseEventTypeResume = 0; + kRecordingPauseEventTypePause = 1; + kRecordingPauseEventTypeConcealWithBlack = 2; + kRecordingPauseEventTypeConcealWithWhite = 3; + } + optional .KN.RecordingPauseEventArchive.RecordingPauseEventType pause_event_type = 1 [default = kRecordingPauseEventTypeResume]; +} + +message .KN.RecordingMovieEventArchive { + enum RecordingMovieEventType { + kRecordingMovieEventNone = 0; + kRecordingMovieEventSeek = 1; + kRecordingMovieEventSetRate = 2; + kRecordingMovieEventStartPlayback = 3; + kRecordingMovieEventStopPlayback = 4; + kRecordingMovieEventBeginScrubbing = 5; + kRecordingMovieEventEndScrubbing = 6; + } + optional .TSP.Reference movie_info_reference = 1; + optional .KN.RecordingMovieEventArchive.RecordingMovieEventType movie_event_type = 2 [default = kRecordingMovieEventSeek]; + optional double movie_event_value = 3; + optional .TSP.Reference movie_info_that_played_across_slides_reference = 4; + optional .TSP.UUID movie_slide_node_id = 5; +} + +message .KN.RecordingMovieTrackArchive { + repeated .KN.MovieSegmentArchive movie_segments = 1; + optional bool is_movie_segment_data_trimmed_to_duration = 2; +} + +message .KN.MovieSegmentArchive { + optional .TSP.DataReference movie_data = 3; + optional double start_time = 2 [default = -1]; + optional .TSP.Reference database_movie_data = 1; +} + +message .KN.Soundtrack { + enum SoundtrackMode { + kKNSoundtrackModePlayOnce = 0; + kKNSoundtrackModeLoop = 1; + kKNSoundtrackModeDoNotPlay = 2; + } + optional double volume = 1; + optional .KN.Soundtrack.SoundtrackMode mode = 2 [default = kKNSoundtrackModePlayOnce]; + repeated .TSP.DataReference movie_media = 3; +} + +message .KN.SlideNumberAttachmentArchive { + required .TSWP.TextualAttachmentArchive super = 1; +} + +message .KN.SlideCollectionSelectionArchive { + message OutlineSelection { + required .TSP.Reference slide_node = 1; + required .TSP.IndexSet selected_paragraph_indexes = 2; + } + repeated .TSP.Reference slide_nodes = 1; + optional .TSP.Reference slide_node_to_edit = 2; + repeated .KN.SlideCollectionSelectionArchive.OutlineSelection selected_paragraph_indexes_for_slide_nodes = 3; + optional .TSP.Range range_in_selected_paragraph = 4; +} + +message .KN.PresenterNotesSelectionArchive { + optional .TSP.Reference slide_node = 1; +} + +message .KN.MixedIdOperationArgs { + enum ArgsListKind { + Add = 0; + Remove = 1; + ShowPlaceholder = 2; + HidePlaceholder = 3; + } + repeated .KN.MixedIdOperationArgs.ArgsListKind args_list_types = 1; + repeated .TSK.AddIdOperationArgs add_args_list = 2; + repeated .TSK.IdPlacementOperationArgs show_placeholder_args_list = 3; + repeated .TSK.RemoveIdOperationArgs remove_args_list = 4; + repeated .TSK.IdPlacementOperationArgs hide_placeholder_args_list = 5; +} + +message .KN.LiveVideoInfo { + optional .TSP.UUID source_id = 1; + optional bool is_placeholder = 2; + optional double scale = 3; + optional .TSP.Point normalized_offset = 4; + optional int32 mask_kind = 5; + optional double mask_corner_radius = 6; + optional int32 background_kind = 7; + optional .TSD.FillArchive background_fill = 8; + extend .TSD.MovieArchive { + optional .KN.LiveVideoInfo live_video_info = 100; + } +} + +message .KN.LiveVideoSource { + optional string name = 1; + optional .KN.LiveVideoCaptureDeviceDescription capture_device_description = 2; + optional .KN.LiveVideoSourceCollaborationCommandUsageState collaboration_command_usage_state = 3; + optional .TSP.DataReference poster_image_data = 4; + optional string symbol_abbreviation_text = 5; + optional int32 symbol_image_identifier = 6; + optional int32 symbol_tint_color_identifier = 7; + optional bool is_default_source = 8; +} + +message .KN.LiveVideoSourceCollaborationCommandUsageState { + optional .TSP.UUID single_collaboration_command_usage_token = 1; + optional bool has_multiple_collaboration_command_usage_tokens = 2; +} + +message .KN.LiveVideoCaptureDeviceDescription { + enum Position { + Unspecified = 0; + Back = 1; + Front = 2; + } + optional string unique_id = 1; + optional .KN.LiveVideoCaptureDeviceDescription.Position position = 2; + optional string device_type = 3; + optional string localized_name = 4; + optional bool is_ios_screen_recording_device = 5; + optional string model_id = 6; + optional .TSP.Size default_video_resolution = 7; +} + +message .KN.LiveVideoSourceCollection { + repeated .TSP.Reference sources = 1; + optional .TSP.Reference default_source = 2; +} + +message .KN.LiveVideoSourceUsageEntry { + repeated int32 background_kinds = 1; +} + +message .KN.MotionBackgroundStylePropertiesArchive { + optional string background_name = 1; + optional string variant = 2; + optional .TSD.FillArchive color_gradient = 3; + optional int32 random_number_seed = 10; + optional double color_blur_sigma = 11; + optional double noise_amplitude = 12; + optional double noise_octaves = 13; + optional double noise_scale = 14; + optional double noise_speed = 15; + optional double color_palette_offset = 16; + optional double zoom = 17; + optional bool invert = 18; + optional string blend_mode = 19; + optional string source_blend_factor = 20; + optional string dest_blend_factor = 21; + optional string motion = 22; + optional .TSP.Color background_color = 23; + optional .TSP.Color foreground_color = 24; + optional .TSP.Color line_color = 25; + optional .TSP.Color point_color = 26; + optional double alpha = 27; + optional double border = 28; + optional double blend = 29; + optional double brightness = 30; + optional double border_lightness = 31; + optional double contrast = 32; + optional double damping = 33; + optional double density = 34; + optional double diffuse_power = 35; + optional double distortion = 36; + optional double entropy = 37; + optional double exposure = 38; + optional double filter = 39; + optional double fog_distance = 40; + optional double fog_power = 41; + optional double gamma = 42; + optional double grain_amount = 43; + optional double grain_intensity = 44; + optional double hue = 45; + optional double lightness = 46; + optional double line_alpha = 47; + optional double line_center = 48; + optional double line_fade = 49; + optional double line_fade_power = 50; + optional double line_length = 51; + optional double line_width = 52; + optional double noise_size_scale = 53; + optional double noise_size_weight = 54; + optional double noise_variance = 55; + optional double offset = 56; + optional double motion_background_opacity = 57; + optional double point_depth_alpha = 58; + optional double point_size = 59; + optional double radius = 60; + optional double refraction = 61; + optional double resolution = 62; + optional double saturation = 63; + optional double scale = 64; + optional double shadow_alpha = 65; + optional double shadow_angle = 66; + optional double shadow_offset = 67; + optional double shadow_scale = 68; + optional double shadow_value = 69; + optional double speed = 70; + optional double texture_power = 71; + optional double time = 72; + optional bool draw_points = 73; + optional bool draw_lines = 74; + optional bool draw_shadows = 75; + optional uint32 pixels_per_division = 76; + optional bool symmetry = 77; + optional bool lock_focus = 78; + optional double amplitude = 79; + optional double envelope = 80; + optional double y_offset = 81; + optional double focus = 82; + optional double blur = 83; + optional double grain_speed = 84; + optional .TSP.Color mesh_color = 85; + optional double angle = 86; + optional double mesh_line_width = 87; + optional double delta_time = 88; + optional double time_start = 89; + optional double color_contrast = 90; + optional double color_gamma = 91; + optional double color_saturation = 92; + optional double color_brightness = 93; + optional double color_hue = 94; + optional double color_vibrance = 95; + optional double noise_movement = 96; + optional double power = 97; + optional double threshold = 98; + optional double noise_scale_horizontal = 99; + optional double noise_scale_vertical = 100; + optional double noise_gain = 101; + optional double noise_lacunarity = 102; + optional int32 instance_count = 103; + optional double extrusion = 104; + optional double noise_offset = 105; + optional double color_hue_offset = 106; + optional double shadow_hue = 107; + optional double shadow_hue_offset = 108; + optional double shadow_saturation = 109; + optional double shadow_brightness = 110; + optional double shadow_intensity = 111; + optional double shadow_power = 112; + optional int32 noise_octaves_iterations = 113; +} + +message .KN.MotionBackgroundStyleArchive { + required .TSS.StyleArchive super = 1; + optional uint32 override_count = 10 [default = 0]; + optional .KN.MotionBackgroundStylePropertiesArchive slide_properties = 11; + optional .TSP.DataReference poster_frame_data = 12; +} + +message .KN.MotionBackgroundFillArchive { + required .TSP.Reference motion_background_style = 1; +} + +extend .TSD.FillArchive { + optional .KN.MotionBackgroundFillArchive motionBackgroundFill = 200; +} + + +message .KNSOS.SpecSetTransitionAttributesArchive { + optional .KN.TransitionAttributesArchive transition_attributes = 1; + required bool unset = 2; +} + +message .KNSOS.SpecTransitionAttributesArchive { + optional .KNSOS.SpecSetTransitionAttributesArchive spec_set_transition_attributes = 1; +} + +message .KNSOS.MotionBackgroundStylePropertyChangeSetArchive { + optional .TSSSOS.SpecStringArchive name = 1; + optional bool name_undefined = 2; + optional .TSSSOS.SpecStringArchive variant = 3; + optional bool variant_undefined = 4; + optional .TSDSOS.SpecFillArchive color_gradient = 5; + optional bool color_gradient_undefined = 6; + optional .TSSSOS.SpecIntegerArchive random_seed = 7; + optional bool random_seed_undefined = 8; + optional .TSSSOS.SpecDoubleArchive color_blur_sigma = 9; + optional bool color_blur_sigma_undefined = 10; + optional .TSSSOS.SpecDoubleArchive color_contrast = 11; + optional bool color_contrast_undefined = 12; + optional .TSSSOS.SpecDoubleArchive color_gamma = 13; + optional bool color_gamma_undefined = 14; + optional .TSSSOS.SpecDoubleArchive color_saturation = 15; + optional bool color_saturation_undefined = 16; + optional .TSSSOS.SpecDoubleArchive color_brightness = 17; + optional bool color_brightness_undefined = 18; + optional .TSSSOS.SpecDoubleArchive color_hue = 19; + optional bool color_hue_undefined = 20; + optional .TSSSOS.SpecDoubleArchive color_vibrance = 21; + optional bool color_vibrance_undefined = 22; + optional .TSSSOS.SpecDoubleArchive noise_amplitude = 23; + optional bool noise_amplitude_undefined = 24; + optional .TSSSOS.SpecDoubleArchive noise_movement = 25; + optional bool noise_movement_undefined = 26; + optional .TSSSOS.SpecDoubleArchive noise_octaves = 27; + optional bool noise_octaves_undefined = 28; + optional .TSSSOS.SpecDoubleArchive noise_scale = 29; + optional bool noise_scale_undefined = 30; + optional .TSSSOS.SpecDoubleArchive noise_scale_horizontal = 31; + optional bool noise_scale_horizontal_undefined = 32; + optional .TSSSOS.SpecDoubleArchive noise_scale_vertical = 33; + optional bool noise_scale_vertical_undefined = 34; + optional .TSSSOS.SpecDoubleArchive noise_gain = 35; + optional bool noise_gain_undefined = 36; + optional .TSSSOS.SpecDoubleArchive noise_lacunarity = 37; + optional bool noise_lacunarity_undefined = 38; + optional .TSSSOS.SpecDoubleArchive noise_speed = 39; + optional bool noise_speed_undefined = 40; + optional .TSSSOS.SpecIntegerArchive color_palette_offset = 41; + optional bool color_palette_offset_undefined = 42; + optional .TSSSOS.SpecDoubleArchive zoom = 43; + optional bool zoom_undefined = 44; + optional .TSSSOS.SpecBoolArchive invert = 45; + optional bool invert_undefined = 46; + optional .TSSSOS.SpecStringArchive blend_mode = 47; + optional bool blend_mode_undefined = 48; + optional .TSSSOS.SpecStringArchive source_blend_factor = 49; + optional bool source_blend_factor_undefined = 50; + optional .TSSSOS.SpecStringArchive dest_blend_factor = 51; + optional bool dest_blend_factor_undefined = 52; + optional .TSSSOS.SpecStringArchive motion = 53; + optional bool motion_undefined = 54; + optional .TSSSOS.SpecColorArchive background_color = 55; + optional bool background_color_undefined = 56; + optional .TSSSOS.SpecColorArchive foreground_color = 57; + optional bool foreground_color_undefined = 58; + optional .TSSSOS.SpecColorArchive line_color = 59; + optional bool line_color_undefined = 60; + optional .TSSSOS.SpecColorArchive point_color = 61; + optional bool point_color_undefined = 62; + optional .TSSSOS.SpecDoubleArchive alpha = 63; + optional bool alpha_undefined = 64; + optional .TSSSOS.SpecDoubleArchive border = 65; + optional bool border_undefined = 66; + optional .TSSSOS.SpecDoubleArchive blend = 67; + optional bool blend_undefined = 68; + optional .TSSSOS.SpecDoubleArchive brightness = 69; + optional bool brightness_undefined = 70; + optional .TSSSOS.SpecDoubleArchive border_lightness = 71; + optional bool border_lightness_undefined = 72; + optional .TSSSOS.SpecDoubleArchive contrast = 73; + optional bool contrast_undefined = 74; + optional .TSSSOS.SpecDoubleArchive damping = 75; + optional bool damping_undefined = 76; + optional .TSSSOS.SpecDoubleArchive density = 77; + optional bool density_undefined = 78; + optional .TSSSOS.SpecDoubleArchive diffuse_power = 79; + optional bool diffuse_power_undefined = 80; + optional .TSSSOS.SpecDoubleArchive distortion = 81; + optional bool distortion_undefined = 82; + optional .TSSSOS.SpecDoubleArchive entropy = 83; + optional bool entropy_undefined = 84; + optional .TSSSOS.SpecDoubleArchive exposure = 85; + optional bool exposure_undefined = 86; + optional .TSSSOS.SpecDoubleArchive filter = 87; + optional bool filter_undefined = 88; + optional .TSSSOS.SpecDoubleArchive fog_distance = 89; + optional bool fog_distance_undefined = 90; + optional .TSSSOS.SpecDoubleArchive fog_power = 91; + optional bool fog_power_undefined = 92; + optional .TSSSOS.SpecDoubleArchive gamma = 93; + optional bool gamma_undefined = 94; + optional .TSSSOS.SpecDoubleArchive grain_amount = 95; + optional bool grain_amount_undefined = 96; + optional .TSSSOS.SpecDoubleArchive grain_intensity = 97; + optional bool grain_intensity_undefined = 98; + optional .TSSSOS.SpecDoubleArchive hue = 99; + optional bool hue_undefined = 100; + optional .TSSSOS.SpecDoubleArchive lightness = 101; + optional bool lightness_undefined = 102; + optional .TSSSOS.SpecDoubleArchive line_alpha = 103; + optional bool line_alpha_undefined = 104; + optional .TSSSOS.SpecDoubleArchive line_center = 105; + optional bool line_center_undefined = 106; + optional .TSSSOS.SpecDoubleArchive line_fade = 107; + optional bool line_fade_undefined = 108; + optional .TSSSOS.SpecDoubleArchive line_fade_power = 109; + optional bool line_fade_power_undefined = 110; + optional .TSSSOS.SpecDoubleArchive line_length = 111; + optional bool line_length_undefined = 112; + optional .TSSSOS.SpecDoubleArchive line_width = 113; + optional bool line_width_undefined = 114; + optional .TSSSOS.SpecDoubleArchive noise_size_scale = 115; + optional bool noise_size_scale_undefined = 116; + optional .TSSSOS.SpecDoubleArchive noise_size_weight = 117; + optional bool noise_size_weight_undefined = 118; + optional .TSSSOS.SpecDoubleArchive noise_variance = 119; + optional bool noise_variance_undefined = 120; + optional .TSSSOS.SpecDoubleArchive offset = 121; + optional bool offset_undefined = 122; + optional .TSSSOS.SpecDoubleArchive motion_background_opacity = 123; + optional bool motion_background_opacity_undefined = 124; + optional .TSSSOS.SpecDoubleArchive point_depth_alpha = 125; + optional bool point_depth_alpha_undefined = 126; + optional .TSSSOS.SpecDoubleArchive point_size = 127; + optional bool point_size_undefined = 128; + optional .TSSSOS.SpecDoubleArchive power = 129; + optional bool power_undefined = 130; + optional .TSSSOS.SpecDoubleArchive radius = 131; + optional bool radius_undefined = 132; + optional .TSSSOS.SpecDoubleArchive refraction = 133; + optional bool refraction_undefined = 134; + optional .TSSSOS.SpecDoubleArchive resolution = 135; + optional bool resolution_undefined = 136; + optional .TSSSOS.SpecDoubleArchive saturation = 137; + optional bool saturation_undefined = 138; + optional .TSSSOS.SpecDoubleArchive scale = 139; + optional bool scale_undefined = 140; + optional .TSSSOS.SpecDoubleArchive shadow_alpha = 141; + optional bool shadow_alpha_undefined = 142; + optional .TSSSOS.SpecDoubleArchive shadow_angle = 143; + optional bool shadow_angle_undefined = 144; + optional .TSSSOS.SpecDoubleArchive shadow_offset = 145; + optional bool shadow_offset_undefined = 146; + optional .TSSSOS.SpecDoubleArchive shadow_scale = 147; + optional bool shadow_scale_undefined = 148; + optional .TSSSOS.SpecDoubleArchive shadow_value = 149; + optional bool shadow_value_undefined = 150; + optional .TSSSOS.SpecDoubleArchive speed = 151; + optional bool speed_undefined = 152; + optional .TSSSOS.SpecDoubleArchive texture_power = 153; + optional bool texture_power_undefined = 154; + optional .TSSSOS.SpecDoubleArchive time = 155; + optional bool time_undefined = 156; + optional .TSSSOS.SpecBoolArchive draw_points = 157; + optional bool draw_points_undefined = 158; + optional .TSSSOS.SpecBoolArchive draw_lines = 159; + optional bool draw_lines_undefined = 160; + optional .TSSSOS.SpecBoolArchive draw_shadows = 161; + optional bool draw_shadows_undefined = 162; + optional .TSSSOS.SpecIntegerArchive pixels_per_division = 163; + optional bool pixels_per_division_undefined = 164; + optional .TSSSOS.SpecBoolArchive symmetry = 165; + optional bool symmetry_undefined = 166; + optional .TSSSOS.SpecBoolArchive lock_focus = 167; + optional bool lock_focus_undefined = 168; + optional .TSSSOS.SpecDoubleArchive amplitude = 169; + optional bool amplitude_undefined = 170; + optional .TSSSOS.SpecDoubleArchive envelope = 171; + optional bool envelope_undefined = 172; + optional .TSSSOS.SpecDoubleArchive y_offset = 173; + optional bool y_offset_undefined = 174; + optional .TSSSOS.SpecDoubleArchive focus = 175; + optional bool focus_undefined = 176; + optional .TSSSOS.SpecDoubleArchive blur = 177; + optional bool blur_undefined = 178; + optional .TSSSOS.SpecDoubleArchive grain_speed = 179; + optional bool grain_speed_undefined = 180; + optional .TSSSOS.SpecColorArchive mesh_color = 181; + optional bool mesh_color_undefined = 182; + optional .TSSSOS.SpecDoubleArchive angle = 183; + optional bool angle_undefined = 184; + optional .TSSSOS.SpecDoubleArchive mesh_line_width = 185; + optional bool mesh_line_width_undefined = 186; + optional .TSSSOS.SpecDoubleArchive delta_time = 187; + optional bool delta_time_undefined = 188; + optional .TSSSOS.SpecDoubleArchive threshold = 189; + optional bool threshold_undefined = 190; + optional .TSSSOS.SpecDoubleArchive time_start = 191; + optional bool time_start_undefined = 192; + optional .TSSSOS.SpecIntegerArchive instance_count = 193; + optional bool instance_count_undefined = 194; + optional .TSSSOS.SpecDoubleArchive extrusion = 195; + optional bool extrusion_undefined = 196; + optional .TSSSOS.SpecDoubleArchive noise_offset = 197; + optional bool noise_offset_undefined = 198; + optional .TSSSOS.SpecDoubleArchive color_hue_offset = 199; + optional bool color_hue_offset_undefined = 200; + optional .TSSSOS.SpecDoubleArchive shadow_hue = 201; + optional bool shadow_hue_undefined = 202; + optional .TSSSOS.SpecDoubleArchive shadow_hue_offset = 203; + optional bool shadow_hue_offset_undefined = 204; + optional .TSSSOS.SpecDoubleArchive shadow_saturation = 205; + optional bool shadow_saturation_undefined = 206; + optional .TSSSOS.SpecDoubleArchive shadow_brightness = 207; + optional bool shadow_brightness_undefined = 208; + optional .TSSSOS.SpecDoubleArchive shadow_intensity = 209; + optional bool shadow_intensity_undefined = 210; + optional .TSSSOS.SpecDoubleArchive shadow_power = 211; + optional bool shadow_power_undefined = 212; + optional .TSSSOS.SpecIntegerArchive noise_octaves_iterations = 213; + optional bool noise_octaves_iterations_undefined = 214; +} + +message .KNSOS.SlideStylePropertyChangeSetArchive { + optional .TSDSOS.SpecFillArchive fill = 1; + optional bool fill_undefined = 2; + optional .KNSOS.SpecTransitionAttributesArchive slide_transition = 3; + optional bool slide_transition_undefined = 4; +} + + +enum .KN.AnimationReferent { + kRelativeToStart = 1; + kRelativeToEnd = 2; +} + +message .KN.UIStateCommandGroupArchive { + required .TSK.CommandGroupArchive super = 1; + required .TSP.Reference uiState = 2; + required string property = 3; + repeated .TSP.Reference slideNodesToEdit = 4; + repeated .TSP.Reference template_slide_nodes_to_apply = 5; + repeated .TSP.Size thumbnailSizes = 6; + repeated .TSP.Reference selectedSlideNodes = 7; + repeated .TSP.Reference restoreSelectedSlideNodes = 8; +} + +message .KN.CommandSlideInsertDrawablesArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + repeated .TSP.Reference drawables = 3; + repeated .TSP.Reference working_drawables = 18; + optional .KN.MixedIdOperationArgs args_list = 4; + required bool update_geometry_to_match_object_placeholder = 5; + repeated .TSP.UUID ids_of_drawables_using_object_placeholder_geometry = 6; + repeated string sage_placeholder_tags_list = 7; + repeated string instructional_text_list = 20; + optional .TSP.Reference undo_archive = 8; + optional bool is_pasting = 9; + repeated .TSP.Reference insert_build_descriptions = 10; + repeated .TSP.Reference working_insert_build_descriptions = 19; + repeated .TSP.Reference remove_build_descriptions = 11; + optional bool remove_slide_specific_hyperlinks = 12; + repeated .TSP.UUID custom_format_keys = 13; + optional uint32 saved_next_untitled_resolver_index = 16; + optional .TSD.GeometryArchive geometry_of_object_placeholder_for_comparison_to_restore_link = 17; +} + +message .KN.CommandSlideSetPlaceholdersForTagsArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + repeated .TSP.Reference infos = 3; + repeated string tags = 4; + repeated .TSP.Reference old_infos = 6; + repeated string old_tags = 5; +} + +message .KN.CommandTemplateSlideSetPlaceholderForTagArchive { + required .KN.CommandSlideSetPlaceholdersForTagsArchive super = 1; + required .TSP.UUID placeholder_id = 2; + optional string tag = 3; +} + +message .KN.CommandSlidePropagateSetPlaceholderForTagArchive { + required .KN.CommandSlideSetPlaceholdersForTagsArchive super = 1; + required .TSP.UUID placeholder_id = 2; + required .TSP.UUID original_id = 3; +} + +message .KN.CommandSlideRemoveDrawableArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + repeated .TSP.Reference sortedDrawables = 3; + required .KN.MixedIdOperationArgs args_list = 4; + repeated uint32 drawable_indexes_for_undo = 10; + repeated string placeholderTags = 5; + repeated string instructional_text_list = 11; + repeated .TSP.Reference insert_build_descriptions = 6; + repeated .TSP.Reference remove_build_descriptions = 7; + repeated .TSP.Reference drawables_using_object_placeholder_geometry = 8; + repeated .TSP.Reference inverse_insert_hyperlink_commands = 9; +} + +message .KN.CommandSlideMoveDrawableZOrderArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference old_ordered_infos = 4; + repeated .TSK.RearrangeIdOperationArgs args_list = 6; + required .TSP.UUID slide_id = 7; + repeated .TSP.Reference old_ordered_infos_on_slide_for_undo = 8; +} + +message .KN.CommandSlideNodeSetPropertyArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_node_id_path = 2; + required string property = 3; + required bool old_value = 4; + required bool value = 5; +} + +message .KN.CommandSlideNodeSetViewStatePropertyArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_node_id_path = 2; + required string property = 3; + required bool old_value = 4; + required bool value = 5; +} + +message .KN.CommandSlideSetBackgroundFillArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_id_path = 2; + optional .TSD.FillArchive old_fill = 3; + required .TSD.FillArchive new_fill = 4; +} + +message .KN.CommandSlideSetStyleArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_id_path = 2; + required .TSP.Reference slide_style = 3; + optional .TSP.Reference old_slide_style = 4; +} + +message .KN.CommandShowMarkOutOfSyncRecordingArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference show = 2; + optional .TSP.Reference old_recording = 3; + optional bool old_is_recording_out_of_sync = 4 [default = false]; + optional bool new_is_recording_out_of_sync = 5 [default = false]; + optional .TSP.Date old_modification_date = 6; + optional .TSP.Date new_modification_date = 7; +} + +message .KN.CommandShowMarkOutOfSyncRecordingIfNeededArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUID out_of_sync_token = 2; +} + +message .KN.CommandShowRemoveRecordingArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference show = 2; + optional .TSP.Reference old_recording = 3; +} + +message .KN.CommandShowReplaceRecordingArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference show = 2; + required .TSP.Reference replacement_recording = 3; + optional .TSP.Reference old_recording = 5; +} + +message .KN.CommandShowSetValueArchive { + message PropertyValue { + optional bool bool_value = 1; + optional double double_value = 2; + optional .KN.ShowArchive.KNShowMode show_mode_value = 3; + optional .TSP.Size size_value = 4; + } + required .TSK.CommandArchive super = 1; + required .TSP.Reference show = 2; + required string property = 3; + required .KN.CommandShowSetValueArchive.PropertyValue old_value = 4; + required .KN.CommandShowSetValueArchive.PropertyValue new_value = 5; +} + +message .KN.CommandShowInsertSlideArchive { + enum Kind { + kKindInsertSlide = 0; + kKindInsertSlideForPaste = 1; + kKindInsertSlideForDuplicate = 2; + } + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference slide_nodes_being_inserted = 2; + repeated .TSP.Reference working_slide_nodes_being_inserted = 14; + repeated .TSK.AddIdOperationArgs inserted_args_list = 3; + repeated .TSP.UUID ids_of_slide_nodes_with_depth_changes = 4; + repeated uint32 depths_of_slide_nodes_with_depth_changes = 5; + repeated uint32 old_depths_of_slide_nodes_with_depth_changes = 6; + repeated .TSP.Reference slide_nodes_for_depth_fix_up = 7; + repeated uint32 depths_of_slide_nodes_for_depth_fix_up = 8; + repeated uint32 old_depths_of_slide_nodes_for_depth_fix_up = 9; + optional .KN.CommandShowInsertSlideArchive.Kind kind = 10 [default = kKindInsertSlide]; + repeated .TSP.Reference template_slide_nodes_being_inserted = 11; + repeated .TSP.UUID custom_format_keys = 12; + repeated bool collapsed_state_of_slide_nodes_being_inserted = 13; + optional .TSP.Reference undo_archive = 15; +} + +message .KN.CommandShowMoveSlideArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference slide_nodes_being_moved_linearly = 2; + repeated .TSK.RearrangeIdOperationArgs rearranged_args_list = 3; + repeated .TSP.UUID ids_of_slide_nodes_with_depth_changes = 4; + repeated uint32 depths_of_slide_nodes_with_depth_changes = 5; + repeated uint32 old_depths_of_slide_nodes_with_depth_changes = 6; + repeated .TSP.Reference slide_nodes_for_depth_fix_up = 7; + repeated uint32 depths_of_slide_nodes_for_depth_fix_up = 8; + repeated uint32 old_depths_of_slide_nodes_for_depth_fix_up = 9; +} + +message .KN.CommandShowRemoveSlideArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference slide_nodes_being_removed = 2; + repeated .TSK.RemoveIdOperationArgs removed_args_list = 3; + repeated .TSP.UUID ids_of_slide_nodes_with_depth_changes = 4; + repeated uint32 depths_of_slide_nodes_with_depth_changes = 5; + repeated uint32 old_depths_of_slide_nodes_with_depth_changes = 6; + repeated .TSP.Reference slide_nodes_for_depth_fix_up = 7; + repeated uint32 depths_of_slide_nodes_for_depth_fix_up = 8; + repeated uint32 old_depths_of_slide_nodes_for_depth_fix_up = 9; + repeated bool collapsed_state_of_slide_nodes_being_removed = 11; +} + +message .KN.CommandShowChangeThemeArchive { + message IdentifierToStyleMap { + repeated .TSS.StylesheetArchive.IdentifiedStyleEntry styles = 1; + } + required .TSK.CommandArchive super = 1; + required .TSP.Reference show = 2; + required .TSP.Reference theme = 3; + optional .TSP.Reference old_theme = 4; + optional string template_identifier = 5; + optional string old_template_identifier = 6; + optional .KN.CommandShowChangeThemeArchive.IdentifierToStyleMap identifier_to_style_map = 7; + optional .KN.CommandShowChangeThemeArchive.IdentifierToStyleMap old_identifier_to_style_map = 8; +} + +message .KN.CommandShowChangeSlideSizeArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Size size = 2; +} + +message .KN.CommandSetThemeCustomEffectTimingCurveArchive { + required .TSK.CommandArchive super = 1; + optional string name = 2; + optional .TSD.PathSourceArchive path_source = 3; + optional .TSD.PathSourceArchive old_path_source = 4; +} + +message .KN.CommandMoveTemplatesArchive { + required .TSD.ContainerReorderChildrenCommandArchive super = 1; + repeated .TSP.Reference template_slides = 3; + repeated .TSP.Reference previous_indexes_keys = 4; + repeated uint32 previous_indexes_values = 5; + repeated .TSP.Reference final_template_arrangement = 6; +} + +message .KN.CommandInsertTemplateArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference undo_template_change_commands = 7; + required bool set_inserted_slide_as_default_template_slide = 8; + optional .TSP.Reference undo_replacement_template_slide_node = 9; +} + +message .KN.CommandPrimitiveInsertTemplateArchive { + required .TSD.ContainerInsertChildrenCommandArchive super = 1; + required bool was_inserted_with_drop = 2; + repeated .TSP.UUID custom_format_keys = 3; + repeated .TSP.Reference previous_classic_theme_records = 4; +} + +message .KN.CommandRemoveTemplateArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference replacement_template_slide_node = 5; + repeated .TSP.Reference template_change_commands = 6; + optional bool default_template_slide_node_was_replaced = 7; +} + +message .KN.CommandPrimitiveRemoveTemplateArchive { + required .TSD.ContainerRemoveChildrenCommandArchive super = 1; + repeated .TSP.Reference previous_classic_theme_records = 3; +} + +message .KN.CommandSlideInsertBuildArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference insert_build_description = 2; + optional .KN.BuildChunkIdentifierArchive identifier_for_chunk_to_insert_after = 3; + optional bool should_create_chunks = 4; + repeated .TSP.Reference old_tuples_to_update = 5; + optional bool was_initialized_over_the_wire = 6; + optional bool has_been_committed = 7; +} + +message .KN.InsertBuildDescriptionArchive { + required .TSP.UUID slide_id = 1; + required .TSP.Reference build_to_insert = 2; + repeated .TSP.Reference chunks_to_insert = 3; + required bool should_assign_chunk_identifiers = 4; + repeated .KN.BuildChunkIdentifierArchive identifers_for_chunks_to_insert_after = 5; + repeated .TSP.Reference tuples_to_update = 6; + repeated .KN.BuildChunkIdentifierArchive fallback_chunk_identifiers = 7; + required bool is_for_paste = 8; +} + +message .KN.UndoObjectArchive { + required .TSD.UndoObjectArchive super = 1; +} + +message .KN.CommandSlideRemoveBuildArchive { + required .TSK.CommandArchive super = 1; + required .TSP.Reference remove_build_description = 2; + optional .TSP.Reference build = 3; + repeated .TSP.Reference chunks_to_insert = 4; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_insert_after = 5; + repeated .TSP.Reference old_tuples_to_update = 6; + repeated .KN.BuildChunkIdentifierArchive fallback_chunk_identifiers = 7; +} + +message .KN.RemoveBuildDescriptionArchive { + optional .TSP.UUID slide_id = 1; + optional .TSP.UUID build_id = 2; + optional bool should_remove_chunks = 3; + optional bool should_remove_chunk_identifiers = 4; + repeated .TSP.Reference tuples_to_update = 5; +} + +message .KN.CommandSlideInsertBuildChunkArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + required .TSP.Reference chunk_to_insert = 3; + optional .KN.BuildChunkIdentifierArchive identifier_for_chunk_to_insert_after = 4; + repeated .TSP.Reference tuples_to_update = 5; + repeated .TSP.Reference old_tuples_to_update = 6; + optional bool needs_selection_update = 7; + optional bool should_assign_chunk_identifier = 8; +} + +message .KN.CommandSlideRemoveBuildChunkArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + optional .TSP.Reference removed_chunk = 3; + optional .KN.BuildChunkIdentifierArchive identifier_for_chunk_to_remove = 4; + optional .KN.BuildChunkIdentifierArchive identifier_for_chunk_to_insert_after = 5; + repeated .TSP.Reference tuples_to_update = 6; + repeated .TSP.Reference old_tuples_to_update = 7; + optional bool needs_selection_update = 8; +} + +message .KN.CommandSlideMoveBuildChunksArchive { + required .TSK.CommandArchive super = 1; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_move = 2; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_move_after = 3; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_move_after_for_undo = 4; + repeated .TSP.Reference tuples_to_update = 5; + repeated .TSP.Reference old_tuples_to_update = 6; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_move_including_clustered_inactive_chunks = 7; +} + +message .KN.CommandBuildSetValueArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference tuple = 2; + repeated .TSP.Reference chunks_to_add = 3; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_insert_after = 4; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_remove = 5; + repeated .TSP.Reference tuples_to_update = 6; + optional .TSP.Reference old_tuple_for_main_property = 7; + repeated .TSP.Reference old_tuples_to_update_for_sub_commands = 8; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_added_chunks = 9; + repeated .KN.BuildChunkIdentifierArchive generated_identifiers = 10; + repeated .TSP.Reference removed_chunks = 11; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_prior_to_removed_chunks = 12; + optional uint32 old_chunk_ID_seed = 13; + repeated .KN.BuildChunkIdentifierArchive old_chunk_identifiers = 14; + repeated .TSP.Reference chunks_removed_during_undo = 15; +} + +message .KN.CommandBuildUpdateChunkReferentsArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID build_id = 2; + repeated .TSP.Reference tuples_to_update = 3; + repeated .TSP.Reference old_tuples_to_update = 4; +} + +message .KN.CommandBuildUpdateChunkCountArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + repeated .TSP.UUID drawable_ids = 3; + repeated .TSP.Reference expected_delivery_style_tuples = 4; + repeated .TSP.Reference chunks_to_add = 5; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_insert_after = 6; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_to_remove = 7; + repeated .TSP.Reference tuples_to_update = 8; + optional bool needs_async_process_changes_selection_update = 9; + repeated .TSP.Reference old_tuples_to_update = 10; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_added_chunks = 11; + repeated .KN.BuildChunkIdentifierArchive generated_identifiers = 12; + repeated .TSP.Reference removed_chunks = 13; + repeated .KN.BuildChunkIdentifierArchive identifiers_for_chunks_prior_to_removed_chunks = 14; + repeated .TSP.Reference old_delivery_style_tuples = 15; + repeated uint32 old_chunk_ID_seeds = 16; + repeated .KN.BuildChunkIdentifierArchive old_chunk_identifiers = 17; + repeated .TSP.Reference working_builds = 18; + repeated .TSP.Reference chunks_removed_during_undo = 19; + repeated .TSP.Reference chunks_added_during_undo = 20; +} + +message .KN.CommandBuildChunkSetValueArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.Reference tuples_to_update = 2; + repeated .TSP.Reference old_tuples_to_update = 3; +} + +message .KN.CommandTransitionSetValueArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_node_id_path = 2; + optional .KN.TransitionAttributesArchive old_attributes = 3; + optional .KN.TransitionAttributesArchive attributes = 4; + optional string property = 5; +} + +message .KN.CommandShowSetSlideNumberVisibilityArchive { + required .TSK.CommandArchive super = 1; + required bool slide_numbers_visible = 3; + repeated .TSP.UUID ids_of_slide_nodes_to_skip = 4; + repeated .TSP.UUID ids_of_slide_nodes_already_correct = 5; + required bool is_undo = 6; +} + +message .KN.CommandTemplateSetThumbnailTextArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID template_id = 2; + required bool is_body = 3; + optional string new_text = 4; + optional string old_text = 5; +} + +message .KN.CommandTemplateSetBodyStylesArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUID template_id = 2; + repeated .TSP.Reference new_paragraph_styles = 3; + repeated .TSP.Reference new_list_styles = 4; + repeated .TSP.Reference old_paragraph_styles = 5; + repeated .TSP.Reference old_list_styles = 6; +} + +message .KN.CommandChangeTemplateSlideArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_id_path = 2; + required .TSP.Reference template_slide_node = 3; + optional .TSP.Reference old_template_slide_node = 4; + required bool is_undo_redo = 5; + optional .TSP.Reference target_prototype = 6; +} + +message .KN.CommandSlidePrimitiveSetTemplateArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_id_path = 2; + required .TSP.UUID template_id = 3; + optional .TSP.Reference old_template_slide_node = 4; +} + +message .KN.CommandSlideResetTemplateBackgroundObjectsArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath slide_id_path = 2; +} + +message .KN.CommandShowSetSoundtrack { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference show = 2; + optional .TSP.Reference soundtrack = 3; + optional .TSP.Reference old_soundtrack = 4; +} + +message .KN.CommandSoundtrackSetValue { + message PropertyValue { + optional double double_value = 1; + optional .KN.Soundtrack.SoundtrackMode mode_value = 2; + repeated .TSP.DataReference media_reference_values = 3; + } + required .TSK.CommandArchive super = 1; + optional .TSP.UUID soundtrack_id = 2; + optional string property = 3; + optional .KN.CommandSoundtrackSetValue.PropertyValue old_value = 4; + optional .KN.CommandSoundtrackSetValue.PropertyValue new_value = 5; +} + +message .KN.CommandSlideUpdateTemplateDrawables { + required .TSK.CommandArchive super = 1; + required .TSP.UUID slide_id = 2; + repeated .TSK.IdPlacementOperationArgs id_placement_operation_args = 3; + repeated .TSP.Reference old_child_infos_for_undo = 4; +} + +message .KN.ChartInfoGeometryCommandArchive { + required .TSD.InfoGeometryCommandArchive super = 1; + required .TSP.Point previous_legend_offset = 2; + required .TSP.Size previous_legend_size = 3; + required .TSP.Point adjusted_legend_offset = 4; + required .TSP.Size adjusted_legend_size = 5; +} + +message .KN.CanvasSelectionTransformerArchive { + required .TSD.InfoCollectionSelectionTransformerHelperArchive transformer_helper = 1; + repeated .KN.BuildChunkIdentifierArchive build_chunk_ids = 2; + repeated .TSP.UUID action_build_ids = 3; + repeated .TSP.UUID originally_selected_drawable_uuids = 4; +} + +message .KN.ActionGhostSelectionTransformerArchive { +} + +message .KN.DocumentSelectionTransformerArchive { + required .TSP.Reference document_selection = 1; +} + +message .KN.NoteCanvasSelectionTransformerArchive { + required .TSD.InfoCollectionSelectionTransformerHelperArchive transformer_helper = 1; +} + +message .KN.OutlineCanvasSelectionTransformerArchive { + required .TSP.Reference canvas_selection_transformer = 1; + optional .TSP.UUIDPath storage_uuid_path = 2; +} + +message .KN.SlideCollectionSelectionTransformerHelperArchive { + repeated .TSP.UUIDPath slide_nodes = 1; + optional .TSP.UUIDPath slide_node_to_edit = 2; + optional bool slide_collection_is_theme = 3 [default = false]; + optional uint32 previous_primary_selected_index = 4; +} + +message .KN.SlideCollectionSelectionTransformerArchive { + required .KN.SlideCollectionSelectionTransformerHelperArchive transformer_helper = 1; +} + +message .KN.OutlineSelectionTransformerArchive { + required .KN.SlideCollectionSelectionTransformerHelperArchive transformer_helper = 1; + optional bool can_have_range_in_selected_paragraph = 2 [default = false]; + repeated .TSK.RangeAddress selection_range_addresses = 3; +} + +message .KN.CommandLiveVideoInfoApplyPreset { + required .TSD.BaseApplyPresetCommandArchive super = 1; +} + +message .KN.CommandLiveVideoInfoSetSource { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath live_video_info_id_path = 2; + optional .TSP.UUID source_id = 3; + optional .TSP.UUID local_collaboration_command_usage_token = 4; + optional .KN.LiveVideoSourceCollaborationCommandUsageState working_source_old_collaboration_command_usage_state = 5; + optional .TSP.Reference old_source = 6; + optional .TSP.UUID old_source_id = 7; +} + +message .KN.CommandLiveVideoInfoSetValue { + message PropertyValue { + optional double scale = 1; + optional .TSP.Point normalized_offset = 2; + optional int32 mask_kind = 3; + optional double mask_corner_radius = 4; + optional bool is_placeholder = 5; + optional int32 background_kind = 6; + optional .TSD.FillArchive background_fill = 7; + } + enum Property { + Scale = 0; + NormalizedOffset = 1; + MaskKind = 2; + MaskCornerRadius = 3; + IsPlaceholder = 4; + BackgroundKind = 5; + BackgroundFill = 6; + } + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath live_video_info_id_path = 2; + required .KN.CommandLiveVideoInfoSetValue.Property property = 3; + optional .KN.CommandLiveVideoInfoSetValue.PropertyValue value = 4; + optional .KN.CommandLiveVideoInfoSetValue.PropertyValue old_value = 5; +} + +message .KN.CommandLiveVideoSourceSetValue { + message PropertyValue { + optional string name = 1; + optional .KN.LiveVideoCaptureDeviceDescription capture_device_description = 2; + optional .TSP.DataReference poster_image_data = 3; + optional string symbol_abbreviation_text = 4; + optional int32 symbol_image_identifier = 5; + optional int32 symbol_tint_color_identifier = 6; + } + enum Property { + SourceName = 0; + CaptureDeviceDescription = 1; + PosterImageData = 2; + SymbolAbbreviationText = 3; + SymbolImageIdentifier = 4; + SymbolTintColorIdentifier = 5; + } + required .TSK.CommandArchive super = 1; + required .TSP.UUID live_video_source_id = 2; + required .KN.CommandLiveVideoSourceSetValue.Property property = 3; + optional .KN.CommandLiveVideoSourceSetValue.PropertyValue value = 4; + optional .KN.CommandLiveVideoSourceSetValue.PropertyValue old_value = 5; +} + +message .KN.CommandLiveVideoStyleSetValue { + required .TSD.BaseStyleSetValueCommandArchive super = 1; + optional .TSDSOS.MediaStylePropertyChangeSetArchive change = 2; +} + +message .KN.CommandThemeAddLiveVideoSource { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference live_video_source = 2; + optional bool is_implicit = 3; +} + +message .KN.CommandThemeRemoveLiveVideoSource { + required .TSK.CommandArchive super = 1; + required .TSP.UUID live_video_source_id = 2; + optional bool is_implicit = 3; + optional .TSP.Reference removed_live_video_source = 4; +} + +message .KN.CommandMotionBackgroundStyleSetValueArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath slide_id_path = 4; + optional .TSP.Reference old_style = 2; + optional .TSP.Reference old_slide_style = 5; + optional .KNSOS.MotionBackgroundStylePropertyChangeSetArchive change = 3; + optional .KNSOS.MotionBackgroundStylePropertyChangeSetArchive undo_property_change = 6; +} + +message .KN.CommandMotionBackgroundStyleUpdatePosterFrameDataArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference motion_background_style = 2; + optional .TSP.DataReference poster_image_data = 3; + optional .TSP.DataReference old_poster_image_data = 4; +} + + +message .KNSOS.InducedVerifyDocumentWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID slide_node_id_list = 2; + optional bool slide_node_id_list_undefined = 3; + repeated .TSP.UUID template_slide_node_id_list = 4; + optional bool template_slide_node_id_list_undefined = 5; +} + +message .KNSOS.InducedVerifyDrawableZOrdersWithServerCommandArchive { + required .TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive super = 1; +} + +message .KNSOS.CommandSlideReapplyTemplateSlideArchive { + required .TSASOS.CommandReapplyMasterArchive super = 1; +} + + +enum .TP.ViewScaleMode { + ViewScaleMode_UserDefined = 0; + ViewScaleMode_FitWidth = 1; + ViewScaleMode_FirPage = 2; +} + +enum .TP.ViewScaleModeiOS { + ViewScaleModeiOS_Undefined = 0; + ViewScaleModeiOS_UserDefined = 1; + ViewScaleModeiOS_FitWidth = 2; + ViewScaleModeiOS_FitMinimum = 3; + ViewScaleModeiOS_FitPortraitWidth = 4; +} + +enum .TP.PageViewState { + PageViewState_OneUp = 0; + PageViewState_TwoUp = 1; +} + +message .TP.DocumentArchive { + required .TSA.DocumentArchive super = 15; + optional .TSP.Reference stylesheet = 2; + optional .TSP.Reference floating_drawables = 3; + optional .TSP.Reference body_storage = 4; + optional .TSP.Reference section = 5; + optional .TSP.Reference theme = 6; + optional .TSP.Reference settings = 7; + optional .TSP.Reference deprecated_layout_state = 11; + optional .TSP.Reference deprecated_view_state = 12; + repeated .TSP.Reference citation_records = 13; + repeated .TSP.Reference toc_styles = 14; + repeated .TSP.Reference change_sessions = 16; + optional .TSP.Reference most_recent_change_session = 17; + optional .TSP.Reference drawables_zorder = 20; + optional bool uses_single_header_footer = 21; + optional float page_width = 30; + optional float page_height = 31; + optional float left_margin = 32; + optional float right_margin = 33; + optional float top_margin = 34; + optional float bottom_margin = 35; + optional float header_margin = 36; + optional float footer_margin = 37; + optional float page_scale = 38; + optional bool lays_out_body_vertically = 39; + optional bool change_tracking_enabled = 40; + optional .TSP.Reference tables_custom_format_list = 41; + optional uint32 orientation = 42 [default = 0]; + optional string printer_id = 43; + optional string paper_id = 44; + optional .TSP.DataReference equation_environment = 45; + optional bool show_in_bookmarks_list_paragraph_styles_property_initialized = 46 [default = false]; + optional .TSP.Reference flow_info_container = 47; + repeated .TSP.Reference page_templates = 48; + optional bool should_use_anchored_drawable_wrap_slop = 49; + optional .TSP.Reference merge_data = 50; +} + +message .TP.ThemeArchive { + required .TSS.ThemeArchive super = 1; +} + +message .TP.SettingsArchive { + enum FootnoteKind { + kFootnoteKindFootnotes = 0; + kFootnoteKindDocumentEndnotes = 1; + kFootnoteKindSectionEndnotes = 2; + } + enum FootnoteFormat { + kFootnoteFormatNumeric = 0; + kFootnoteFormatRoman = 1; + kFootnoteFormatSymbolic = 2; + kFootnoteFormatJapaneseNumeric = 3; + kFootnoteFormatJapaneseIdeographic = 4; + kFootnoteFormatArabicNumeric = 5; + } + enum FootnoteNumbering { + kFootnoteNumberingContinuous = 0; + kFootnoteNumberingRestartEachPage = 1; + kFootnoteNumberingRestartEachSection = 2; + } + optional bool body = 1 [default = true]; + optional bool headers = 2 [default = true]; + optional bool footers = 3 [default = true]; + optional bool preview = 4 [default = true]; + optional bool copy_movies = 5 [default = true]; + optional bool copy_assets = 6 [default = true]; + optional bool placeholder_authoring = 7 [default = false]; + optional bool links_enabled = 8 [default = true]; + optional bool hyphenation = 9 [default = false]; + optional bool use_ligatures = 10 [default = false]; + optional bool toc_links_enabled = 11 [default = false]; + optional bool show_ct_markup = 12 [default = true]; + optional bool show_ct_deletions = 13 [default = true]; + optional int32 ct_bubbles_visibility = 14; + optional bool change_bars_visible = 15 [default = true]; + optional bool format_changes_visible = 16 [default = true]; + optional bool annotations_visible = 17 [default = true]; + optional bool document_is_rtl = 18 [default = false]; + optional string decimal_tab = 20; + optional string language = 21; + optional string hyphenation_language = 22; + optional string creation_locale = 23; + optional string last_locale = 24; + optional string orig_template = 25; + optional string creation_date = 26; + optional string bibliography_format = 27; + optional .TP.SettingsArchive.FootnoteKind footnote_kind = 30; + optional .TP.SettingsArchive.FootnoteFormat footnote_format = 31; + optional .TP.SettingsArchive.FootnoteNumbering footnote_numbering = 32; + optional int32 footnote_gap = 33; + optional bool facing_pages = 34 [default = false]; + optional bool section_authoring = 40 [default = false]; +} + +message .TP.PlaceholderArchive { + required .TSWP.ShapeInfoArchive super = 1; +} + +message .TP.DrawableTagPairsArchive { + message DrawableTagPair { + required string tag = 1; + required .TSP.Reference drawable = 2; + } + repeated .TP.DrawableTagPairsArchive.DrawableTagPair drawable_tag_pairs = 1; +} + +message .TP.FloatingDrawablesArchive { + message DrawableEntry { + optional .TSP.Reference drawable = 1; + } + message PageGroup { + required uint32 page_index = 1; + repeated .TP.FloatingDrawablesArchive.DrawableEntry background_drawables = 2; + repeated .TP.FloatingDrawablesArchive.DrawableEntry foreground_drawables = 3; + repeated .TP.FloatingDrawablesArchive.DrawableEntry drawables = 4; + } + repeated .TP.FloatingDrawablesArchive.PageGroup page_groups = 1; + optional .TP.DrawableTagPairsArchive drawable_tag_pairs = 2; +} + +message .TP.DrawablesZOrderArchive { + repeated .TSP.Reference drawables = 1; +} + +message .TP.SectionTemplateArchive { + repeated .TSP.Reference headers = 1; + repeated .TSP.Reference footers = 2; + repeated .TSP.Reference section_template_drawables = 3; + optional .TSP.UUIDPath page_template_uuidpath = 4; +} + +message .TP.PageTemplateArchive { + message TagDrawablePair { + required string tag = 1; + required .TSP.Reference drawable = 2; + required uint32 z_index = 3; + } + optional string name = 1; + repeated .TSP.Reference section_template_drawables = 2; + repeated .TP.PageTemplateArchive.TagDrawablePair placeholder_drawables = 3; + required bool headers_footers_match_previous_page = 4; + optional bool hide_headers_footers = 5; + optional .TSD.FillArchive background_fill = 6; + optional .TSP.Reference guide_storage = 7; +} + +message .TP.SectionArchive { + optional bool OBSOLETE_shows_header = 1; + optional bool OBSOLETE_shows_footer = 2; + repeated .TSP.Reference OBSOLETE_headers = 3; + repeated .TSP.Reference OBSOLETE_footers = 4; + optional float OBSOLETE_left_margin = 5; + optional float OBSOLETE_right_margin = 6; + optional float OBSOLETE_top_margin = 7; + optional float OBSOLETE_bottom_margin = 8; + optional float OBSOLETE_header_padding = 9; + optional float OBSOLETE_footer_padding = 10; + optional float OBSOLETE_paper_width = 11; + optional float OBSOLETE_paper_height = 12; + optional bool OBSOLETE_landscape_mode = 13; + repeated .TSP.Reference OBSOLETE_section_template_drawables = 14; + optional float OBSOLETE_header_margin = 15; + optional float OBSOLETE_footer_margin = 16; + optional bool inherit_previous_header_footer = 17; + optional bool section_template_first_page_different = 18; + optional bool section_template_even_odd_pages_different = 19; + optional uint32 section_start_kind = 20; + optional uint32 section_page_number_kind = 21; + optional uint32 section_page_number_start = 22; + optional .TSP.Reference first_section_template_page = 23; + optional .TSP.Reference even_section_template_page = 24; + optional .TSP.Reference odd_section_template_page = 25; + optional string name = 26; + optional bool section_template_first_page_hides_header_footer = 28; + optional .TSP.Reference user_defined_guide_storage = 29; + optional .TSD.FillArchive background_fill = 30; + optional .TSP.UUID section_hyperlink_uuid = 31; +} + +message .TP.DoublePoint { + required double x = 1; + required double y = 2; +} + +message .TP.DoubleSize { + required double width = 1; + required double height = 2; +} + +message .TP.AnchorPosArchive { + optional .TSP.Reference attachment = 1 [deprecated = true]; + optional .TSP.Point position = 2; + optional .TSP.UUIDPath drawable_uuid_path = 3; + optional .TP.DoublePoint double_position = 4; +} + +message .TP.TargetHintArchive { + optional .TSP.Point frame_origin = 1; + optional .TSP.Size frame_size = 2; + optional .TSP.Range range = 3; + optional uint32 next_widow_pulls_down_from_char_index = 4; + optional .TSP.Range anchored_range = 5; + optional uint32 column_count = 6; + optional uint32 line_fragment_count = 7; + optional .TP.DoublePoint double_origin = 8; + optional .TP.DoubleSize double_size = 9; + optional bool end_of_layout = 10; + optional bool last_line_is_empty_and_has_list_label = 11; + optional bool text_is_vertical = 12; + optional bool terminated_by_break = 13; +} + +message .TP.PageHintArchive { + enum PageKind { + kPageKindNone = 0; + kPageKindText = 1; + kPageKindFiller = 2; + kPageKindOrphan = 3; + kPageKindEndnote = 4; + kPageKindDirty = 5; + kTPPageKindPageLayout = 6; + } + enum PageSide { + kTPPageSideUnknown = 0; + kTPPageSideLeft = 1; + kTPPageSideRight = 2; + } + optional .TP.PageHintArchive.PageKind page_kind = 1; + repeated .TP.TargetHintArchive target_hints = 2; + optional .TSP.Range footnote_auto_number_range = 3; + optional .TSP.Range footnote_layout_range = 4; + optional .TSP.Reference first_child_hint = 6 [deprecated = true]; + optional .TSP.Reference last_child_hint = 7 [deprecated = true]; + repeated .TP.AnchorPosArchive anchored_attachments_map = 8; + optional uint32 version_number = 10; + optional uint32 platform_id = 11; + repeated .TSP.Reference child_hints = 12; + repeated .TSP.UUID partitioned_attachment_uuids = 13; + repeated .TSP.Reference text_flows = 14; + repeated .TP.TargetHintArchive flow_hints = 15; + optional .TP.PageHintArchive.PageSide page_side = 17 [deprecated = true]; + optional uint32 page_column = 18; + optional uint32 page_row = 19; + optional .TP.TopicNumberHintsArchive topic_number_hints = 20; + repeated .TP.TopicNumberHintsArchive flow_topic_number_hints = 21; +} + +message .TP.NullChildHintArchive { +} + +message .TP.SectionHintArchive { + repeated .TP.PageHintArchive page_hints = 1; + optional uint32 start_page_index = 2; +} + +message .TP.TextboxHintArchive { + required .TSP.Range range = 1; + required .TSP.Size size = 2; +} + +message .TP.TopicNumberHintLevelDataArchive { + required uint32 number = 1; + required uint32 label_type = 2; + required uint32 number_type = 3; + required bool is_tiered = 4; +} + +message .TP.TopicNumberHintEntryArchive { + required .TSP.Reference list_style = 1; + repeated .TP.TopicNumberHintLevelDataArchive topic_numbers = 2; +} + +message .TP.TopicNumberHintsArchive { + repeated .TP.TopicNumberHintEntryArchive topic_numbers_map = 2; +} + +message .TP.LayoutStateArchive { + optional uint32 section_index = 1; + optional uint32 section_page_index = 2; + optional uint32 document_page_index = 3; + optional uint32 last_page_count = 4; + repeated .TP.SectionHintArchive section_hints = 5; + optional uint32 body_length = 6; + repeated string missing_fonts = 7; + optional int32 os_version = 8; +} + +message .TP.CanvasSelectionArchive { + required .TSWP.SelectionType deprecated_type = 1 [deprecated = true]; + required .TSP.Range visual_definition_range = 2; + required .TSWP.StyleInsertionBehavior style_insertion_behavior = 3; + required .TSWP.CaretAffinity caret_affinity = 4; + repeated .TSP.Reference infos = 5; + repeated .TSP.Reference excluded_infos = 6; + repeated .TSP.Reference additional_infos = 7; + optional .TSP.Reference deprecated_container = 8; + optional bool leading_edge = 9; + optional uint32 leading_char_index = 10; + optional .TSWP.SelectionType type = 11; + repeated .TSP.Range ranges = 12; +} + +message .TP.AllFootnoteSelectionArchive { +} + +message .TP.UIStateArchive { + optional float OBSOLETE_view_scale = 1; + optional .TSP.Point visible_rect_origin = 2; + optional bool OBSOLETE_landscape = 3; + optional .TSP.Reference selection = 4 [deprecated = true]; + optional .TSP.Reference selection_model = 5 [deprecated = true]; + optional bool section_template_drawables_selectable = 6; + optional .TSP.Size visible_rect_size = 7; + repeated .TSCH.ChartUIState chart_ui_state = 8; + optional bool ruler_visible = 9 [default = true]; + optional bool layout_borders_visible = 10 [default = false]; + optional bool word_count_hud_visible = 11 [default = false]; + optional bool shows_comments = 12 [default = true]; + optional bool shows_page_navigator = 13 [default = false]; + optional .TP.ViewScaleMode view_scale_mode = 14 [default = ViewScaleMode_UserDefined]; + optional float view_scale = 15 [default = 1.25]; + optional .TSP.Point window_frame_origin = 16; + optional .TSP.Size window_frame_size = 17; + optional string selected_inspector_switch_segment_identifier = 18; + optional bool inspector_hidden = 19; + optional uint32 word_count_hud_type = 20; + optional float word_count_hud_x_position = 21; + optional float word_count_hud_y_position = 22; + optional bool show_user_defined_guides = 23 [default = true]; + optional bool should_show_comment_sidebar = 24 [default = false]; + optional .TSK.SelectionPathArchive compatibility_selection_path = 25; + optional bool shows_ctmarkup = 26 [default = true]; + optional bool shows_ctdeletions = 27 [default = true]; + optional bool change_tracking_paused = 28 [default = false]; + optional .TSK.SelectionPathArchive selection_path = 29; + optional string filtered_author_name = 30; + optional .TP.ViewScaleModeiOS view_scale_mode_ios = 31 [default = ViewScaleModeiOS_UserDefined]; + optional .TSP.Reference filtered_author = 32; + optional .TP.PageViewState page_view_state = 33; + optional bool pencil_annotations_hidden = 34 [default = false]; + optional .TSP.Reference freehand_drawing_toolkit_state = 35; + optional float presentation_auto_scroll_speed = 36; + optional .TSP.Reference selection_path_transformer = 37; + optional bool shows_toc_navigator = 38 [default = false]; + optional bool show_user_defined_page_template_guides = 39 [default = true]; + optional bool editing_disabled = 40; + optional .TSP.Reference pencil_annotation_ui_state = 41; + optional bool shows_flow_mode = 42 [default = false]; + optional .TP.MailMergeSettingsArchive mail_merge_settings = 43; + optional bool shows_activity_stream = 44 [default = false]; + optional float toc_or_page_nav_width = 45; + optional float activity_or_annotation_width = 46; +} + +message .TP.ViewStateRootArchive { + optional .TSP.Reference layout_state = 1; + optional .TSP.Reference view_state = 2; +} + +message .TP.UserDefinedGuideMapArchive { + message UserDefinedGuide { + required uint32 page_index = 1; + required .TSP.Reference guide_storage = 2; + } + repeated .TP.UserDefinedGuideMapArchive.UserDefinedGuide user_defined_guide_storages = 1; +} + +message .TP.SectionSelectionArchive { + repeated .TSP.Reference sections = 1; +} + +message .TP.SectionSelectionTransformerArchive { + optional .TSP.Reference original_selection = 1; + optional .TSP.UUIDPath storage_uuid_path = 2; + repeated .TSP.UUIDPath section_uuid_paths = 3; +} + +message .TP.SectionPasteboardObjectArchive { + message PageDrawables { + required uint32 page_index = 1; + required .TP.DrawableTagPairsArchive drawable_tag_pairs = 2; + } + required .TSP.Reference text_storage = 1; + required uint32 page_count = 2; + repeated .TP.SectionPasteboardObjectArchive.PageDrawables page_drawables = 3; + repeated .TSP.Reference ordered_drawables = 4; +} + +message .TP.SectionsAppNativeObjectArchive { + message PageTemplatesEntry { + required .TSP.UUID key = 1; + required .TSP.Reference value = 2; + } + repeated .TSP.Reference section_pasteboard_objects = 1; + repeated .TP.SectionsAppNativeObjectArchive.PageTemplatesEntry page_templates = 2; + repeated .TSP.Reference flows = 3; +} + +message .TP.MailMergeSettingsArchive { + message NumbersDataSourceArchive { + optional bytes bookmark_data = 1; + optional .TSP.UUID table_uuid = 2; + optional .TSP.UUID document_uuid = 4; + repeated .TSWP.MergeFieldTypeArchive merge_field_types = 3; + } + message ContactsFieldsMapEntry { + optional string key = 1; + optional .TSWP.MergeFieldTypeArchive value = 2; + } + message NumbersFieldsMapEntry { + optional string key = 1; + optional .TSWP.MergeFieldTypeArchive value = 2; + } + enum CurrentDataSource { + kContactsDataSource = 0; + kNumbersDataSource = 1; + } + optional bool substitute_closest = 1 [default = true]; + optional bool data_has_header_row = 2 [default = true]; + optional .TP.MailMergeSettingsArchive.CurrentDataSource current_data_source = 3 [default = kContactsDataSource]; + optional string contacts_group_identifier = 4; + optional string numbers_document_url = 5 [deprecated = true]; + optional .TSP.UUID numbers_table_uuid = 6 [deprecated = true]; + optional bytes numbers_bookmark_data = 7 [deprecated = true]; + optional .TP.MailMergeSettingsArchive.NumbersDataSourceArchive numbers_data_source = 8; + optional .TP.MailMergeSettingsArchive.NumbersDataSourceArchive merging_numbers_data_source = 9; + repeated .TP.MailMergeSettingsArchive.ContactsFieldsMapEntry contacts_fields_map = 10; + repeated .TP.MailMergeSettingsArchive.NumbersFieldsMapEntry numbers_fields_map = 11; +} + + +message .TPSOS.InducedVerifyDocumentWithServerCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSP.UUID drawables_z_order_list = 2; + optional bool drawables_z_order_list_undefined = 3; +} + +message .TPSOS.InducedVerifyDrawableZOrdersWithServerCommandArchive { + required .TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive super = 1; +} + +message .TPSOS.ReapplyPageTemplateCommandArchive { + required .TSASOS.CommandReapplyMasterArchive super = 1; +} + + +message .TP.InsertDrawablesCommandArchive { + enum InsertionType { + InsertingPrototype = 0; + Pasting = 1; + Cloning = 2; + } + required .TSK.CommandArchive super = 1; + optional bool for_paste = 2 [deprecated = true]; + optional .TP.InsertDrawablesCommandArchive.InsertionType insertion_type = 10; + repeated .TSK.AddIdOperationArgs args_list = 3; + repeated uint32 page_index_list = 4; + repeated .TSP.Reference drawable_info_list = 5; + repeated string placeholder_tags_list = 9; + repeated .TSP.UUID custom_format_keys = 6; + optional .TSP.Reference drawable_undo_object = 7; + optional uint32 saved_next_untitled_resolver_index = 8; +} + +message .TP.MoveDrawablesPageIndexCommandArchive { + message Drawable { + optional .TSP.Reference drawable = 1; + optional uint32 z_order = 2; + } + required .TSK.CommandArchive super = 1; + optional uint32 page_index = 2 [deprecated = true]; + repeated .TP.MoveDrawablesPageIndexCommandArchive.Drawable drawables = 3 [deprecated = true]; + optional bool maintain_z_order = 4 [deprecated = true]; + repeated .TSP.UUIDPath drawable_info_id_path_list = 5; + repeated uint32 page_index_list = 6; + repeated uint32 original_page_index_list = 7; + repeated string tags_list = 8; + repeated string original_tags_list = 9; + optional bool preserve_tags = 10; +} + +message .TP.InsertSectionBreakCommandArchive { + required .TSWP.StorageActionCommandArchive super = 1; +} + +message .TP.MoveDrawableZOrderCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSK.RearrangeIdOperationArgs args_list = 2; + optional uint32 action_string_index = 3; +} + +message .TP.RemoveDrawablesCommandArchive { + required .TSK.CommandArchive super = 1; + repeated .TSK.RemoveIdOperationArgs args_list = 2; + repeated .TSP.Reference drawable_info_list = 3; + repeated uint32 page_index_list = 4; + repeated string tags_list = 5; +} + +message .TP.ChangeSectionMarginsCommandArchive { + enum SectionMargin { + kSectionMarginLeft = 0; + kSectionMarginRight = 1; + kSectionMarginTop = 2; + kSectionMarginBottom = 3; + kSectionMarginHeader = 4; + kSectionMarginFooter = 5; + } + required .TSK.CommandArchive super = 1; + optional .TSP.Reference section = 2; + optional .TP.ChangeSectionMarginsCommandArchive.SectionMargin margin = 3; + optional float margin_value = 4; +} + +message .TP.InsertSectionTemplateDrawablesCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference OBSOLETE_section = 2; + repeated .TSP.Reference section_template_drawables = 3; + optional uint32 drawable_index = 4; + optional .TSP.Reference section_template_drawable_provider = 5; + repeated .TSP.UUID custom_format_keys = 6; +} + +message .TP.MoveSectionTemplateDrawableZOrderCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference OBSOLETE_section = 2; + repeated .TSP.Reference section_template_drawables = 3; + repeated uint32 indexes = 4; + optional .TSP.Reference section_template_drawable_provider = 5; +} + +message .TP.RemoveSectionTemplateDrawablesCommandArchive { + message SectionTemplateDrawable { + optional .TSP.Reference drawable = 1; + optional uint32 drawable_index = 2; + } + required .TSK.CommandArchive super = 1; + optional .TSP.Reference OBSOLETE_section = 2; + repeated .TP.RemoveSectionTemplateDrawablesCommandArchive.SectionTemplateDrawable section_template_drawables = 3; + optional .TSP.Reference section_template_drawable_provider = 4; +} + +message .TP.PasteSectionTemplateDrawablesCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.Reference section = 2; + repeated .TSP.Reference section_template_drawables = 3; + optional uint32 drawable_index = 4; +} + +message .TP.MoveDrawablesAttachedCommandArchive { + message GSSPCharIndexAndPosition { + optional int32 char_index = 1; + optional uint32 h_offset_type = 2; + optional float h_offset = 3; + optional uint32 v_offset_type = 4; + optional float v_offset = 5; + } + required .TSWP.StorageActionCommandArchive super = 1; + repeated .TSK.IdPlacementOperationArgs args_list = 2; + repeated .TSP.Range range_list = 3; + repeated .TSP.UUIDPath drawable_info_id_path_list = 4; + repeated .TP.MoveDrawablesAttachedCommandArchive.GSSPCharIndexAndPosition position_list = 5; + repeated .TSD.ExteriorTextWrapArchive exterior_text_wrap_list = 6; + repeated uint32 original_page_index_list = 7; + repeated .TSD.ExteriorTextWrapArchive original_exterior_text_wrap_list = 8; + repeated .TSP.Reference original_attachment_list = 9; +} + +message .TP.MoveDrawablesFloatingCommandArchive { + required .TSWP.StorageActionCommandArchive super = 1; + repeated .TSK.IdPlacementOperationArgs args_list = 2; + repeated .TSP.Range range_list = 3; + repeated .TSP.UUIDPath drawable_info_id_path_list = 4; + repeated uint32 page_index_list = 5; + repeated .TSD.ExteriorTextWrapArchive exterior_text_wrap_list = 6; + repeated .TSP.Reference original_attachment_list = 7; + repeated .TSD.ExteriorTextWrapArchive original_exterior_text_wrap_list = 8; +} + +message .TP.ChangeFootnoteFormatCommandArchive { + enum FootnoteFormat { + kFootnoteFormatNumeric = 0; + kFootnoteFormatRoman = 1; + kFootnoteFormatSymbolic = 2; + kFootnoteFormatJapaneseNumeric = 3; + kFootnoteFormatJapaneseIdeographic = 4; + kFootnoteFormatArabicNumeric = 5; + } + required .TSK.CommandArchive super = 1; + optional .TP.ChangeFootnoteFormatCommandArchive.FootnoteFormat format = 2; +} + +message .TP.ChangeFootnoteKindCommandArchive { + enum FootnoteKind { + kFootnoteKindFootnotes = 0; + kFootnoteKindDocumentEndnotes = 1; + kFootnoteKindSectionEndnotes = 2; + } + required .TSK.CommandArchive super = 1; + optional .TP.ChangeFootnoteKindCommandArchive.FootnoteKind kind = 2; + optional .TSWP.UndoTransaction undo_transaction = 3; +} + +message .TP.ChangeFootnoteNumberingCommandArchive { + enum FootnoteNumbering { + kFootnoteNumberingContinuous = 0; + kFootnoteNumberingRestartEachPage = 1; + kFootnoteNumberingRestartEachSection = 2; + } + required .TSK.CommandArchive super = 1; + optional .TP.ChangeFootnoteNumberingCommandArchive.FootnoteNumbering numbering = 2; +} + +message .TP.ChangeFootnoteSpacingCommandArchive { + required .TSK.CommandArchive super = 1; + optional int32 footnote_spacing = 2; +} + +message .TP.MoveInlineDrawableAnchoredCommandArchive { + required .TSWP.StorageActionCommandArchive super = 1; + optional .TSK.IdPlacementOperationArgs id_placement_operation_args = 2; + optional uint32 replacement_range_location = 3; + optional uint32 replacement_range_length = 4; + optional .TSP.UUIDPath drawable_info_id_path = 5; + optional .TSD.ExteriorTextWrapArchive exterior_text_wrap = 6; + optional .TSD.ExteriorTextWrapArchive original_exterior_text_wrap = 7; +} + +message .TP.MoveAnchoredDrawableInlineCommandArchive { + required .TSWP.StorageActionCommandArchive super = 1; + optional .TSK.IdPlacementOperationArgs id_placement_operation_args = 2; + optional uint32 replacement_range_location = 3; + optional uint32 replacement_range_length = 4; + optional .TSP.UUIDPath drawable_info_id_path = 5; + optional .TSD.ExteriorTextWrapArchive exterior_text_wrap = 6; + optional .TSD.ExteriorTextWrapArchive original_exterior_text_wrap = 7; +} + +message .TP.InsertFootnoteCommandArchive { + required .TSWP.StorageActionCommandArchive super = 1; +} + +message .TP.ToggleBodyLayoutDirectionCommandArchive { + required .TSK.CommandArchive super = 1; + optional bool new_direction_is_vertical = 2; +} + +message .TP.TrackChangesCommandArchive { + required .TSK.CommandArchive super = 1; + optional bool track_changes = 2; + repeated .TSP.Reference change_session_history = 3; + optional bool paused = 4 [deprecated = true]; + optional .TSP.Reference most_recent_change_session = 5; + optional bool old_track_changes = 6; + repeated .TSP.Reference old_change_session_history = 7; + optional .TSP.Reference old_most_recent_change_session = 8; +} + +message .TP.PauseChangeTrackingCommandArchive { + required .TSK.CommandArchive super = 1; + optional bool paused = 2 [deprecated = true]; +} + +message .TP.SectionGuideCommandArchive { + required .TSD.AbstractGuideCommandArchive super = 1; + required .TSP.UUIDPath section_id_path = 2; + required uint32 page_index = 3; +} + +message .TP.ReplaceHeaderFooterStorageCommandArchive { + required .TSK.CommandArchive super = 1; + optional .TSP.UUIDPath header_footer_storage_id_path = 2; + optional .TSP.Reference replacement_header_footer_storage = 3; + optional .TSP.Reference replacement_header_footer_storage_undo_object = 4; + optional .TSP.Reference old_header_footer_storage = 5; +} + +message .TP.PrototypeForUndoChangePageTemplateForSection { + optional .TSP.UUIDPath id_path_for_template_in_document = 1; + required .TSP.Reference internal_page_template = 2; +} + +message .TP.ChangePageTemplateForSectionCommandArchive { + required .TSK.CommandArchive super = 1; + required .TSP.UUIDPath section_id_path = 2; + required .TSP.Reference page_template = 3; + optional .TSP.Reference old_page_template = 4; + required bool is_undo_redo = 5; + optional .TSP.Reference target_prototype = 6; +} + +message .TP.AllFootnoteSelectionTransformerArchive { + required .TSP.Reference all_footnote_selection = 1; +} + +message .TP.DocumentSelectionTransformerArchive { + required .TSP.Reference document_selection = 1; + required .TSP.UUIDPath storage_uuid_path = 2; +} + +message .TP.CanvasSelectionTransformerArchive { + required .TSWP.SelectionTransformerArchive super = 1; + required .TSD.InfoCollectionSelectionTransformerHelperArchive infos_collection_helper = 2; + required .TSD.InfoCollectionSelectionTransformerHelperArchive excluded_infos_collection_helper = 3; + required .TSD.InfoCollectionSelectionTransformerHelperArchive additional_infos_collection_helper = 4; + optional .TSP.UUIDPath header_or_footnote_storage_uuid_path = 5; +} + + diff --git a/public/test.numbers b/public/test.numbers new file mode 100755 index 0000000000000000000000000000000000000000..32813e944755e12f346544cd47062348ab821cf4 GIT binary patch literal 159350 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 analyze + - edit fields / files? + - different menu for message / enum / extend / literal +*/ +import { useState, useEffect, useRef } from 'react'; +import type { MouseEvent as ReactMouseEvent, ChangeEventHandler, ChangeEvent } from 'react'; +import './App.css'; +import { ObjectInspector, ObjectLabel, ObjectName, ObjectValue } from 'react-inspector'; +import { PanelGroup, Panel, PanelResizeHandle } from 'react-resizable-panels'; +import { process, read, ParsedFile } from './iwa'; +import { parse_protos, ProtoMap } from './messages'; +import type { $_TSP_MessageInfo, $_TSP_Reference } from './messages'; +import { Menu, Item, Separator, useContextMenu } from 'react-contexify'; +import 'react-contexify/dist/ReactContexify.css'; +import { ToastContainer, toast } from 'react-toastify'; +import 'react-toastify/dist/ReactToastify.css'; + +//#region Xxd + +//import { vsprintf } from 'printj'; +/*const X = "%02hhx", Y = X + X + " "; +const FMT = [...Array.from({length:16}).map((_,i) => + Y.repeat(i>>1) + (i%2 ? X:" ") + " " + " ".repeat(7 - (i >> 1)) + "|" + "%c".repeat(i) + " ".repeat(16-i) + "|\n" +), Y.repeat(8) + "|" + "%c".repeat(16) + "|\n"]; + +const xxd = (u8: Uint8Array): string => { + let out: string[] = []; + for(let i = 0; i < u8.length; i+=16) { + let d = [...u8.slice(i, i+16)]; + out.push(vsprintf(`%04x: ${FMT[d.length]}`, [i, ...d, ...d.map(x => String.fromCharCode(x).replace(/[^\x20-\x7E]/g,"."))])) + } + return out.join(""); +} + +type XxdProps = { + data?: Uint8Array; +}; + +function Xxd({data}: XxdProps) { + return (
{data && xxd(data)}
); +}*/ +//
+ +//#endregion + +//#region TableView + +type TableViewProps = { + id?: string; + data: any[]; + cols: string[]; + rowclick?: (row: any, R: number, e: ReactMouseEvent) => void; + cellclick?: (value: any, R: number, C: number, e: ReactMouseEvent) => void; +}; + +function TableView({id, data, cols, rowclick, cellclick}: TableViewProps) { + return ( + + + {cols.map((c,idx) => ( + + ))} + + {data.map((row, R) => ( + {e.preventDefault(); e.stopPropagation(); rowclick(row, R, e)}} : {})} + {...(row["id"] == id ? {style: {backgroundColor: "#646cff", color: "#FFFFFF" }} : {})} + >{/* TODO: forward-ref? */} + {cols.map((c,C) => ())} + + ))} +
{c}
{e.preventDefault(); e.stopPropagation(); cellclick(row, R, C, e)}} : {})} + >{row[c]??""}
+ ); +} + +//#endregion + +//#region ContextMenu + +interface ContextMenuProps { + ID: string; + menuType: string; + menuField: string; + menuId: string; + onClickId?: ({props}: any)=>void; + onClickCopyByteArray?: ({props}: any)=>void; + onClickCopyJSON: ({props}: any)=>void; + showProtoDef: ({props}: any)=>void; +} +const ContextMenu = ({ID, menuType, menuField, menuId, onClickId, onClickCopyByteArray, onClickCopyJSON, showProtoDef}: ContextMenuProps) => ( + + {menuField && ({menuField})} + {menuType} + + + Copy byte array + Copy JSON + Show Definition + ); + +//#endregion + +function App() { + /* selected message ID */ + const [id, setId] = useState("0"); + /* parsed file */ + const [file, setFile] = useState({ space: {}, tbl: [], type: "N" }); + /* current object */ + const [obj, setObj] = useState({}); + /* current meta */ + const [meta, setMeta] = useState<$_TSP_MessageInfo>({} as any); + /* protobuf definitions */ + const [protos, setProtos] = useState({}); + /* selected message type */ + const [sel, setSel] = useState(""); + /* current protobuf definition */ + const [__html, setProto] = useState("Select a Row"); + /* "dirty" if inspecting a subfield */ + const [dirty, setDirty] = useState(false); + /* history stack */ + const [stack, setStack] = useState([]); + /* react-contexify */ + const MENU_ID = "insp-menu"; + const { show } = useContextMenu({ id: MENU_ID }); + const [menuField, setMenuField] = useState(""); + const [menuType, setMenuType] = useState(""); + const [menuId, setMenuId] = useState(""); + const tblRef = useRef(null); + + /* update selection based on table row */ + const doitRow = (row: any, R: number, reset?: boolean) => { + let obj: any, meta: $_TSP_MessageInfo; + try { + obj = process(file.space[+row.id][0].data, row.message, protos); + meta = process(file.space[+row.id][0].rawmeta, ".TSP.MessageInfo", protos); + } catch(e) { + console.error(row, e); toast.error(`Could not parse ${row.id} (${row.type})`, {position: toast.POSITION.TOP_CENTER}); return; + } + if(reset == true) setStack([]); else if(typeof reset != "undefined") setStack([...stack, id]); + setSel(row.message); + setProto(protos[row.message] || ""); + setDirty(false); + setObj(obj); + /* .TSP.MessageInfo */ + if(meta.object_references) meta.$object_references = meta.object_references.map((n: BigInt) => { + /* create a fake reference for the inspector */ + var o: $_TSP_Reference = ({ identifier: n }); + Object.defineProperty(o, "PB_TYPE", {value: ".TSP.Reference", enumerable: false}); + return o; + }); + if(meta.field_infos) meta.field_infos.forEach((fi) => { + /* .TSP.FieldInfo */ + if(fi.object_references) fi.$object_references = fi.object_references.map((n: BigInt) => { + /* create a fake reference for the inspector */ + var o: $_TSP_Reference = ({ identifier: n }); + Object.defineProperty(o, "PB_TYPE", {value: ".TSP.Reference", enumerable: false}); + return o; + }); + }) + setMeta(meta); + setId(String(row.id)); + var rowelt = document.getElementById(`tr-${R}`); + var top = rowelt?.offsetTop || 0; + if(tblRef.current) { + let tbl = tblRef.current; + if(top > tbl.scrollTop + tbl.clientHeight - (rowelt?.clientHeight||0) || top < tbl.scrollTop + (rowelt?.clientHeight||0)) tbl.scrollTop = Math.max(0, top - tbl.clientHeight/2 - (rowelt?.clientHeight||0)/2); + } + }; + /* click event handler for the messages table */ + const rowclick = (row: any, R: number) => { doitRow(row, R, true); }; + /* helper for .TSP.Reference */ + const gotoRef = (id: string) => { + var R = file.tbl.findIndex(t => +t.id == +id); + if (R == -1) throw new Error(`Message ${id} not found`); + doitRow(file.tbl[R], R, false); + }; + /* helper for selecting sub-proto */ + const selectProto = (type: string) => { setProto(protos[type] || ""); setDirty(type != sel); }; + /* go back to the previous message */ + const pop = () => { + const oldId = stack.pop()||"0"; + setStack([...stack]); + var R = file.tbl.findIndex(t => +t.id == +oldId); + if (R == -1) throw new Error(`Message ${oldId} not found`); + doitRow(file.tbl[R], R); + }; + + /* on load, get protobuf definitions and process the test file */ + useEffect(() => { + let ignore = false; + (async () => { + const protos = await (await fetch("protos")).text(); + const testfile = await (await fetch("test.numbers")).arrayBuffer(); + if(ignore) return; + setProtos(parse_protos(protos)); + setFile(read(testfile)); + })(); + return () => { ignore = true; } + }, []); + useEffect(() => { if(file.tbl[0]) doitRow(file.tbl[0], 0, true); }, [file]); + + const onChange: ChangeEventHandler = async (e: ChangeEvent) => { + if(!e.target.files) { toast.error("must select a file!"); throw new Error("No file selected!"); } + let data: ParsedFile; + try { data = read(await e.target.files?.[0].arrayBuffer()); } catch(e) { + if((e as any).message?.includes("Failed to read archive")) toast.error("Please select an iWork file", { position: toast.POSITION.TOP_CENTER }); + else toast.error(e && (e as any).message || e, { position: toast.POSITION.TOP_CENTER }); + console.error(e); return; + } + setFile(data); + } + + /* Menu machinations */ + interface MenuProps { + type: string; + field?: string; + id: string; + data: any; + } + function displayMenu(event: ReactMouseEvent, props?: MenuProps) { + setMenuField(props?.field||""); + setMenuType(props?.type||""); + if(props?.id) setMenuId(String(props.id)); + show({ event, props }); + } + function onClickId(){ gotoRef(menuId); } + function onClickCopyByteArray({ props }: {props: MenuProps}){ + var _data = props?.data?.PB_RAW?.data || (+props.id == +id) && file.space[+id][0].data; + if(!_data) throw new Error("Could not find raw data"); + navigator.clipboard.writeText("[" + [..._data].map(x => "0x" + x.toString(16).toUpperCase().padStart(2,"0")).join(", ") + "]"); + } + function onClickCopyJSON({ props }: {props: MenuProps}){ + if(!props?.data) throw new Error("Could not find raw data"); + navigator.clipboard.writeText(JSON.stringify(props.data, (_,v) => typeof v == "bigint" ? v.toString() : v instanceof Uint8Array ? [...v]: v)); + } + function showProtoDef({props}: {props: MenuProps}) { selectProto(props.type); } + + type NodeRendererProps = { + depth: number; + name: string; + data: any; + isNonenumerable: boolean; + expanded: boolean; + } + const nodeRenderer = ({ depth, name, data, isNonenumerable }: NodeRendererProps) => { + if(depth === 0) return ( Message {id}
{selectProto(sel);}} onContextMenu={e => {displayMenu(e, { type: sel, id, data })}}>[{sel}] ); + if(typeof data == "bigint" && name.includes("identifier")) return ( <> + : -> {gotoRef(String(data))}}>{String(data)} + ); + if(data.PB_TYPE) { + const frag = ( {selectProto(data.PB_TYPE);}}> + {data.PB_ENUM && } + {data.PB_ENUM && <> = {data.PB_ENUM}} [{data.PB_TYPE}] + ); + if(data.PB_TYPE == ".TSP.Reference") { + let id = String(data?.identifier); + return ( {displayMenu(e, { type: data.PB_TYPE, id, data, field: data.PB_FIELD })}}> + : {frag} -> {gotoRef(id)}}>{id} + ); + } + return ( {displayMenu(e, { type: data.PB_TYPE, id, data, field: data.PB_FIELD })}}> + : {frag} + ); + } + return ( ); + }; + const metaRenderer = ({ depth, name, data, isNonenumerable }: NodeRendererProps) => { + if(depth === 0) return ( Metadata ); + if(typeof data == "bigint" && name.includes("identifier")) return ( <> + : -> {gotoRef(String(data))}}>{String(data)} + ); + if(data.PB_TYPE) { + const frag = ( {selectProto(data.PB_TYPE);}}> + {data.PB_ENUM && } + {data.PB_ENUM && <> = {data.PB_ENUM}} [{data.PB_TYPE}] + ); + if(data.PB_TYPE == ".TSP.Reference") { + let id = String(data?.identifier); + return ( {displayMenu(e, { type: data.PB_TYPE, id, data, field: data.PB_FIELD })}}> + : {frag} -> {gotoRef(id)}}>{id} + ); + } + return ( {displayMenu(e, { type: data.PB_TYPE, id, data, field: data.PB_FIELD })}}> + : {frag} + ); + } + return ( ); + }; + + return ( <> + {/* header */} + + +
+ +
+ + {/* message table */} + + +
+ +
+ + {/* selected message bar */} +
{sel ? (<> + Selected message {(stack.length > 4 ? [...stack.slice(0,2), "...", ...stack.slice(-1)] : stack).map(i => i + " > ").join("")} {id} ({sel}) {file.space[+id]?.[0]?.data?.length || 0} bytes {stack.length && Return to {stack[stack.length - 1]} || ""} + ) : "Select a message to see the contents"}
+ +
+
+ + {/* proto definition */} +
+                {dirty && (<> { selectProto(sel);}}>Return to {sel}

)} + {__html.split("\n").map((r, idx) => ( <>{!r.match(/(optional|repeated|required) \./) ? ( + {r} + ) : ( + {selectProto(r.trim().split(" ")[1]);}}>{r} + )}
))} +
+ +
+ +
+ + {/* inspector */} + Message + + Meta + +
+ +
+
+
+
+ + {/* Menu */} + + + {/* Toast */} + +
+ ); +} + +export default App diff --git a/src/index.css b/src/index.css new file mode 100644 index 0000000..2c3fac6 --- /dev/null +++ b/src/index.css @@ -0,0 +1,69 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + -webkit-text-size-adjust: 100%; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/iwa.ts b/src/iwa.ts new file mode 100644 index 0000000..a7727ac --- /dev/null +++ b/src/iwa.ts @@ -0,0 +1,411 @@ +import * as CFB from 'cfb'; + +import Messages, { MessageTypes } from "./messages/"; + +/* see https://bugs.webkit.org/show_bug.cgi?id=243148 -- affects iOS Safari */ +declare var Buffer: any; // Buffer is typeof-guarded but TS still needs this :( +var subarray: "subarray" | "slice" = (() => { + try { + if(typeof Uint8Array == "undefined") return "slice"; + if(typeof Uint8Array.prototype.subarray == "undefined") return "slice"; + // NOTE: feature tests are for node < 6.x + if(typeof Buffer !== "undefined") { + if(typeof Buffer.prototype.subarray == "undefined") return "slice"; + if((typeof Buffer.from == "function" ? Buffer.from([72,62]) : new Buffer([72,62])) instanceof Uint8Array) return "subarray"; + return "slice"; + } + return "subarray"; + } catch(e) { return "slice"; } +})(); + +/** Concatenate Uint8Arrays */ +function u8concat(u8a: Uint8Array[]): Uint8Array { + var len = 0; + for(var i = 0; i < u8a.length; ++i) len += u8a[i].length; + var out = new Uint8Array(len); + var off = 0; + for(i = 0; i < u8a.length; ++i) { + var u8 = u8a[i], L = u8.length; + if(L < 250) { for(var j = 0; j < L; ++j) out[off++] = u8[j]; } + else { out.set(u8, off); off += L; } + } + return out; +} + +interface Ptr { l: number; } + +/** Parse an integer from the varint that can be exactly stored in a double */ +function parse_varint49(buf: Uint8Array, ptr: Ptr): number { + var l = ptr.l; + var usz = buf[l] & 0x7F; + varint: if(buf[l++] >= 0x80) { + usz |= (buf[l] & 0x7F) << 7; if(buf[l++] < 0x80) break varint; + usz |= (buf[l] & 0x7F) << 14; if(buf[l++] < 0x80) break varint; + usz |= (buf[l] & 0x7F) << 21; if(buf[l++] < 0x80) break varint; + usz += (buf[l] & 0x7F) * Math.pow(2, 28); ++l; if(buf[l++] < 0x80) break varint; + usz += (buf[l] & 0x7F) * Math.pow(2, 35); ++l; if(buf[l++] < 0x80) break varint; + usz += (buf[l] & 0x7F) * Math.pow(2, 42); ++l; if(buf[l++] < 0x80) break varint; + } + ptr.l = l; + return usz; +} +/** Parse a repeated varint [packed = true] field */ +function parse_packed_varints(buf: Uint8Array): number[] { + var ptr: Ptr = {l: 0}; + var out: number[] = []; + while(ptr.l < buf.length) out.push(parse_varint49(buf, ptr)); + return out; +} +/** Parse a BigInt from the varint */ +function parse_varint64(buf: Uint8Array, ptr: Ptr): BigInt { + var l = ptr.l; + var usz = BigInt(buf[l] & 0x7F); + varint: if(buf[l++] >= 0x80) { + usz += BigInt(buf[l] & 0x7F) << 7n; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 14n; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 21n; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 28n; ++l; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 35n; ++l; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 42n; ++l; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 49n; ++l; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 56n; ++l; if(buf[l++] < 0x80) break varint; + usz += BigInt(buf[l] & 0x7F) << 63n; ++l; if(buf[l++] < 0x80) break varint; + } + ptr.l = l; + return usz; +} +/** Parse a repeated varint [packed = true] field */ +function parse_packed_varint64(buf: Uint8Array): BigInt[] { + var ptr: Ptr = {l: 0}; + var out: BigInt[] = []; + while(ptr.l < buf.length) out.push(parse_varint64(buf, ptr)); + return out; +} +/** Parse a 32-bit signed integer from the raw varint */ +function varint_to_i32(buf: Uint8Array): number { + var l = 0, + i32 = (buf[l] & 0x7F) ; if(buf[l++] < 0x80) return i32; + i32 |= (buf[l] & 0x7F) << 7; if(buf[l++] < 0x80) return i32; + i32 |= (buf[l] & 0x7F) << 14; if(buf[l++] < 0x80) return i32; + i32 |= (buf[l] & 0x7F) << 21; if(buf[l++] < 0x80) return i32; + i32 |= (buf[l] & 0x0F) << 28; return i32; +} +/** Parse a 64-bit unsigned integer as a pair */ +function varint_to_u64(buf: Uint8Array): [number, number] { + var l = 0, lo = buf[l] & 0x7F, hi = 0; + varint: if(buf[l++] >= 0x80) { + lo |= (buf[l] & 0x7F) << 7; if(buf[l++] < 0x80) break varint; + lo |= (buf[l] & 0x7F) << 14; if(buf[l++] < 0x80) break varint; + lo |= (buf[l] & 0x7F) << 21; if(buf[l++] < 0x80) break varint; + lo |= (buf[l] & 0x7F) << 28; hi = (buf[l] >> 4) & 0x07; if(buf[l++] < 0x80) break varint; + hi |= (buf[l] & 0x7F) << 3; if(buf[l++] < 0x80) break varint; + hi |= (buf[l] & 0x7F) << 10; if(buf[l++] < 0x80) break varint; + hi |= (buf[l] & 0x7F) << 17; if(buf[l++] < 0x80) break varint; + hi |= (buf[l] & 0x7F) << 24; if(buf[l++] < 0x80) break varint; + hi |= (buf[l] & 0x7F) << 31; + } + return [lo >>> 0, hi >>> 0]; +} +export { varint_to_i32, varint_to_u64 }; + +interface ProtoItem { + data: Uint8Array; + type: number; +} +type ProtoField = Array; +type ProtoMessage = Array; +interface IWAMessage { + /** Metadata in .TSP.MessageInfo */ + meta: ProtoMessage; + rawmeta: Uint8Array; + data: Uint8Array; +} +interface IWAArchiveInfo { + id: number; + merge?: boolean; + messages: IWAMessage[]; +} +/** Shallow parse of a Protobuf message */ +function parse_shallow(buf: Uint8Array): ProtoMessage { + var out: ProtoMessage = [], ptr: Ptr = {l: 0}; + while(ptr.l < buf.length) { + var off = ptr.l; + var num = parse_varint49(buf, ptr); + var type = num & 0x07; num = (num / 8)|0; + var data: Uint8Array; + var l = ptr.l; + switch(type) { + case 0: { + while(buf[l++] >= 0x80); + data = buf[subarray](ptr.l, l); + ptr.l = l; + } break; + case 1: { data = buf[subarray](l, l + 8); ptr.l = l + 8; } break; + case 2: { + var len = parse_varint49(buf, ptr); + data = buf[subarray](ptr.l, ptr.l + len); + ptr.l += len; + } break; + case 5: { data = buf[subarray](l, l + 4); ptr.l = l + 4; } break; + default: throw new Error(`PB Type ${type} for Field ${num} at offset ${off}`); + } + var v: ProtoItem = { data, type }; + if(out[num] == null) out[num] = []; + out[num].push(v); + } + return out; +} + +/** Extract all messages from a IWA file */ +function parse_iwa_file(buf: Uint8Array): IWAArchiveInfo[] { + var out: IWAArchiveInfo[] = [], ptr: Ptr = {l: 0}; + while(ptr.l < buf.length) { + /* .TSP.ArchiveInfo */ + var len = parse_varint49(buf, ptr); + var ai = parse_shallow(buf[subarray](ptr.l, ptr.l + len)); + ptr.l += len; + + var res: IWAArchiveInfo = { + /* TODO: technically ID is optional */ + id: varint_to_i32(ai[1][0].data), + messages: [] + }; + ai[2].forEach(b => { + var mi = parse_shallow(b.data); + var fl = varint_to_i32(mi[3][0].data); + res.messages.push({ + meta: mi, + rawmeta: b.data, + data: buf[subarray](ptr.l, ptr.l + fl) + }); + ptr.l += fl; + }); + if(ai[3]?.[0]) res.merge = (varint_to_i32(ai[3][0].data) >>> 0) > 0; + out.push(res); + } + return out; +} + +/** Decompress a snappy chunk */ +function parse_snappy_chunk(type: number, buf: Uint8Array): Uint8Array[] { + if(type != 0) throw new Error(`Unexpected Snappy chunk type ${type}`); + var ptr: Ptr = {l: 0}; + + var usz = parse_varint49(buf, ptr); + var chunks: Uint8Array[] = []; + var l = ptr.l; + while(l < buf.length) { + var tag = buf[l] & 0x3; + if(tag == 0) { + var len = buf[l++] >> 2; + if(len < 60) ++len; + else { + var c = len - 59; + len = buf[l]; + if(c > 1) len |= (buf[l+1]<<8); + if(c > 2) len |= (buf[l+2]<<16); + if(c > 3) len |= (buf[l+3]<<24); + len >>>=0; len++; + l += c; + } + chunks.push(buf[subarray](l, l + len)); l += len; continue; + } else { + var offset = 0, length = 0; + if(tag == 1) { + length = ((buf[l] >> 2) & 0x7) + 4; + offset = (buf[l++] & 0xE0) << 3; + offset |= buf[l++]; + } else { + length = (buf[l++] >> 2) + 1; + if(tag == 2) { offset = buf[l] | (buf[l+1]<<8); l += 2; } + else { offset = (buf[l] | (buf[l+1]<<8) | (buf[l+2]<<16) | (buf[l+3]<<24))>>>0; l += 4; } + } + if(offset == 0) throw new Error("Invalid offset 0"); + var j = chunks.length - 1, off = offset; + while(j >=0 && off >= chunks[j].length) { off -= chunks[j].length; --j; } + if(j < 0) { + if(off == 0) off = chunks[(j = 0)].length; + else throw new Error("Invalid offset beyond length"); + } + // Node 0.8 Buffer slice does not support negative indices + if(length < off) chunks.push(chunks[j][subarray](chunks[j].length-off, chunks[j].length-off + length)); + else { + if(off > 0) { chunks.push(chunks[j][subarray](chunks[j].length-off)); length -= off; } ++j; + while(length >= chunks[j].length) { chunks.push(chunks[j]); length -= chunks[j].length; ++j; } + if(length) chunks.push(chunks[j][subarray](0, length)); + } + if(chunks.length > 25) chunks = [u8concat(chunks)]; + } + } + var clen = 0; for(var u8i = 0; u8i < chunks.length; ++u8i) clen += chunks[u8i].length; + if(clen != usz) throw new Error(`Unexpected length: ${clen} != ${usz}`); + return chunks; +} + +/** Decompress IWA file */ +function decompress_iwa_file(buf: Uint8Array): Uint8Array { + if(Array.isArray(buf)) buf = new Uint8Array(buf); + var out: Uint8Array[] = []; + var l = 0; + while(l < buf.length) { + var t = buf[l++]; + var len = buf[l] | (buf[l+1]<<8) | (buf[l+2] << 16); l += 3; + out.push.apply(out, parse_snappy_chunk(t, buf[subarray](l, l + len))); + l += len; + } + if(l !== buf.length) throw new Error("data is not a valid framed stream!"); + return out.length == 1 ? out[0] : u8concat(out); +} + +type MessageSpace = {[id: number]: IWAMessage[]}; +type TableItem = { id: number; path: string; type: number; message: string; }; + +interface ParsedFile { + space: MessageSpace; + tbl: TableItem[]; + type: MessageTypes; +} + +function parse_iwa(cfb: CFB.CFB$Container): ParsedFile { + var M: MessageSpace = {}, indices: number[] = [], tbl: TableItem[] = []; + cfb.FullPaths.forEach(p => { if(p.match(/\.iwpv2/)) throw new Error(`Unsupported password protection`); }); + + var root!: TableItem, rootmsg!: IWAMessage; + /* collect entire message space */ + cfb.FileIndex.forEach((s, idx) => { + if(!s.name.match(/\.iwa$/)) return; + if(s.content[0] != 0) return; // TODO: this should test if the iwa follows the framing format + var o: Uint8Array; + try { o = decompress_iwa_file(s.content as Uint8Array); } catch(e: any) { return console.log("?? " + s.content.length + " " + ((e as Error).message || e)); } + var packets: IWAArchiveInfo[]; + try { packets = parse_iwa_file(o); } catch(e: any) { return console.log("## " + ((e as Error).message || e)); } + packets.forEach(packet => { M[packet.id] = packet.messages; indices.push(packet.id); + var type = varint_to_i32(packet.messages[0].meta[1][0].data); + var item = { + id: packet.id, + type, + path:cfb.FullPaths[idx].replace(/Root Entry/, ""), + message: "??" + }; + if(item.id == 1) { root = item; rootmsg = packet.messages[0]; } + tbl.push(item); + }); + }); + if(!indices.length) throw new Error("File has no messages"); + if(!root) throw new Error(`Root element (id 1) missing!`); + var type: MessageTypes = "N"; + if(root.type == 10000) type = "P"; + else if(parse_shallow(rootmsg.data)?.[2]?.[0]) type = "K"; + + tbl.forEach(item => item.message = Messages[type][item.type] || "??"); + + return { space: M, tbl, type }; +} + +function process_item(item: {data: Uint8Array; type: number}, type: string, protos: any) { + switch(item.type) { + case 0: + var varint = parse_varint49(item.data, {l:0}); + switch(type) { + case "bool": return !!+varint; + case "uint32": return varint; + case "int32": return varint | 0; + case "sint32": return (-(varint&1))^(varint>>1); + case "uint64": var u64 = varint_to_u64(item.data); return (BigInt(u64[1])<<32n) + BigInt(u64[0]); + case "int64": var u64 = varint_to_u64(item.data); return new BigInt64Array([(BigInt(u64[1])<<32n) + BigInt(u64[0])])[0]; + case "sint64": var u64 = varint_to_u64(item.data); var bi = (BigInt(u64[1])<<32n) + BigInt(u64[0]); return (-(bi&1n))^(bi>>1n); + } break; + case 1: switch(type) { + case "fixed64": return new BigUint64Array(new Uint8Array([...item.data]).buffer)[0]; + case "sfixed64": return new BigInt64Array(new Uint8Array([...item.data]).buffer)[0]; + case "double": return new Float64Array(new Uint8Array([...item.data]).buffer)[0]; + } break; + case 2: switch(type) { + case "string": return new TextDecoder().decode(item.data); + case "bytes": return item.data; + } break; + case 5: switch(type) { + case "float": return new Float32Array(new Uint8Array([...item.data]).buffer)[0]; + case "fixed32": return new Uint32Array(new Uint8Array([...item.data]).buffer)[0]; + case "sfixed32": return new Int32Array(new Uint8Array([...item.data]).buffer)[0]; + } + } + if(protos[type]) return process(item.data, type, protos); + console.error(item); + return item; +} + +function process_enum(data: Uint8Array, message: string, protos: any) { + var val = parse_varint49(data, {l: 0}); + if(val >= 4294967296) val |= 0; + var msg = protos[message].split("\n"); + for(let m of msg) { + if(m.startsWith("enum")) continue; + if(m.indexOf("=")> -1) { + let [field, , value] = m.trim().split(" "); + if(val == parseInt(value, 10)) { + var res = {} + Object.defineProperty(res, "value", { get: () => val}); + Object.defineProperty(res, "PB_ENUM", { value: field, enumerable: false}) + return res; + } + } + } + throw [val, message, protos[message]]; +} + +function process(data: Uint8Array, message: string, protos: any) { + if(!protos[message]) return parse_shallow(data); + var shallow = parse_shallow(data); + var proto: string[] = protos[message].split("\n"); + var out: any = {}; + if(proto[0].startsWith("enum")) return process_enum(data, message, protos); + proto.forEach(line => { + if(!line.startsWith(" ") || line.indexOf("=") == -1 || line.startsWith(" ")) return; + const [freq, type, name, , idx] = line.trim().split(/\s+/); + var i = parseInt(idx, 10); + if(isNaN(i)) return; + if(!shallow[i]?.length) return; + switch(freq) { + case "repeated": { + if(/packed\s*=\s*true/.test(line)) { + /* these are the known types as of iwa 13.0 */ + switch(type) { + case "uint32": out[name] = parse_packed_varints(shallow[i][0].data); break; + case "uint64": out[name] = parse_packed_varint64(shallow[i][0].data); break; + case "fixed64": out[name] = new BigUint64Array(new Uint8Array(shallow[i][0].data).buffer); break; + default: + console.log(shallow[i][0], line); + throw new Error(`unsupported packed field of type ${type}`); + } + } else out[name] = shallow[i].map(item => protos[type]?.startsWith("enum") ? process_enum(item.data, type, protos) : process_item(item, type, protos)); + } break; + case "required": case "optional": out[name] = protos[type]?.startsWith("enum") ? process_enum(shallow[i][0].data, type, protos) : process_item(shallow[i][0], type, protos); break + default: throw `unsupported frequency ${freq}`; + } + if(type.startsWith(".")) { + if(freq == "repeated") out[name].forEach((n: any) => {try { Object.defineProperty(n, "PB_TYPE", {value: type, enumerable: false}); } catch(e){}}); + else try { Object.defineProperty(out[name], "PB_TYPE", {value: type, enumerable: false}); } catch(e) {} + } + try { + if(freq == "repeated") out[name].forEach((n: any, idx:number) => {try { Object.defineProperty(n, "PB_RAW", {value: shallow[i][idx], enumerable: false}); } catch(e){}}); + else try { Object.defineProperty(out[name], "PB_RAW", {value: shallow[i][0], enumerable: false}); } catch(e) {} + } catch(e){console.log(e);} + try { + if(freq == "repeated") out[name].forEach((n: any, idx:number) => {try { Object.defineProperty(n, "PB_FIELD", {value: `${name}[${idx}]` , enumerable: false}); } catch(e){}}); + else try { Object.defineProperty(out[name], "PB_FIELD", {value: name, enumerable: false}); } catch(e) {} + } catch(e){console.log(e);} + }) + return out; +} + +function read(ab: ArrayBuffer): ParsedFile { + let cfb: CFB.CFB$Container; + try { + cfb = CFB.read(new Uint8Array(ab), {type: "buffer"}); + } catch(e) { throw new Error(`Failed to read archive: |${e&&(e as any).message||e}|`); } + return parse_iwa(cfb); +} + +export { parse_iwa, read, process } +export type { MessageSpace, TableItem, ParsedFile }; diff --git a/src/main.tsx b/src/main.tsx new file mode 100644 index 0000000..057fb00 --- /dev/null +++ b/src/main.tsx @@ -0,0 +1,10 @@ +import * as React from 'react' +import * as ReactDOM from 'react-dom/client' +import App from './App' +import './index.css' + +ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render( + + + , +) diff --git a/src/messages/index.ts b/src/messages/index.ts new file mode 100644 index 0000000..5318243 --- /dev/null +++ b/src/messages/index.ts @@ -0,0 +1,95 @@ +type MessageTypes = "N" | "K" | "P"; +export type { MessageTypes }; + +type LUT = {[id: number|string]: string}; + +import N from "./numbers"; +import K from "./keynote"; +import P from "./pages"; + +const Messages: {[key in MessageTypes]: LUT} = { N, K, P }; + +export default Messages; + +type ProtoMap = {[key: string]: string}; + +const post_process = (buf: string, key: string, out: ProtoMap) => { + var payload = "", nested = false; + buf.split("\n").forEach(row => { + if(row.startsWith(" message") || row.startsWith(" enum")) { + nested = true + payload = row + "\n"; + } else if(row.startsWith(" }")) { + payload += row + "\n"; + nested = false; + payload = payload.replace(/^ /mg, ""); + var new_key = ""; + payload = payload.replace(/^(message|enum) ([\S]*)/, (_, $1, $2) => { + new_key = key + "." + $2; + return $1 + " " + key + "." + $2 + }); + out[new_key] = payload; + payload = ""; + } else if(nested) payload += row + "\n"; + }); +}; + +const parse_protos = (text: string): ProtoMap => { + const out: ProtoMap = {}; + let buf = "", key = ""; + text.split("\n").forEach(line => { + if(line.startsWith("message") || line.startsWith("enum")) { + key = line.split(" ")[1]; + buf = line + "\n"; + } + else if(line.startsWith(" ")) buf += line + "\n"; + else if(line == "}") { + buf += line; + out[key] = buf; + post_process(buf, key, out); + } + else if(!line){} + else if(line.startsWith("extend")) { + key = line.split(" ")[1]; + buf = out[key] + "\n" + line + "\n"; + } + else throw line; + }); + return out; +}; + +export { parse_protos }; +export type { ProtoMap }; + +interface $_TSP_Reference { + identifier: BigInt; +} +interface $_TSP_FieldPath { + path?: number[]; +} +interface $_TSP_FieldInfo { + path: $_TSP_FieldPath; + type?: number; + unknown_field_rule?: number; + object_references?: BigInt[]; + data_references?: BigInt[]; + known_field_rule?: number; + known_field_version?: number[]; + known_field_feature_identifier?: string; + $object_references?: $_TSP_Reference[]; +} +interface $_TSP_MessageInfo { + type: number; + version: number[]; + length: number; + field_infos?: $_TSP_FieldInfo[]; + object_references?: BigInt[]; + data_references?: BigInt[]; + base_message_index?: number; + diff_merge_version?: number[]; + diff_field_path?: $_TSP_FieldPath; + fields_to_remove?: $_TSP_FieldPath[]; + diff_read_version?: number[]; + $object_references?: $_TSP_Reference[]; +} +export type { $_TSP_MessageInfo, $_TSP_Reference } \ No newline at end of file diff --git a/src/messages/keynote.ts b/src/messages/keynote.ts new file mode 100644 index 0000000..df86a03 --- /dev/null +++ b/src/messages/keynote.ts @@ -0,0 +1,631 @@ +export default { + 1: ".KN.DocumentArchive", + 2: ".KN.ShowArchive", + 3: ".KN.UIStateArchive", + 4: ".KN.SlideNodeArchive", + 5: ".KN.SlideArchive", + 6: ".KN.SlideArchive", + 7: ".KN.PlaceholderArchive", + 8: ".KN.BuildArchive", + 9: ".KN.SlideStyleArchive", + 10: ".KN.ThemeArchive", + 11: ".KN.PasteboardNativeStorageArchive", + 12: ".KN.PlaceholderArchive", + 14: ".TSWP.TextualAttachmentArchive", + 15: ".KN.NoteArchive", + 16: ".KN.RecordingArchive", + 17: ".KN.RecordingEventTrackArchive", + 18: ".KN.RecordingMovieTrackArchive", + 19: ".KN.ClassicStylesheetRecordArchive", + 20: ".KN.ClassicThemeRecordArchive", + 21: ".KN.Soundtrack", + 22: ".KN.SlideNumberAttachmentArchive", + 23: ".KN.DesktopUILayoutArchive", + 24: ".KN.CanvasSelectionArchive", + 25: ".KN.SlideCollectionSelectionArchive", + 26: ".KN.MotionBackgroundStyleArchive", + 100: ".KN.CommandBuildSetValueArchive", + 101: ".KN.CommandShowInsertSlideArchive", + 102: ".KN.CommandShowMoveSlideArchive", + 103: ".KN.CommandShowRemoveSlideArchive", + 104: ".KN.CommandSlideInsertDrawablesArchive", + 105: ".KN.CommandSlideRemoveDrawableArchive", + 106: ".KN.CommandSlideNodeSetPropertyArchive", + 107: ".KN.CommandSlideInsertBuildArchive", + 109: ".KN.CommandSlideRemoveBuildArchive", + 110: ".KN.CommandSlideInsertBuildChunkArchive", + 111: ".KN.CommandSlideMoveBuildChunksArchive", + 112: ".KN.CommandSlideRemoveBuildChunkArchive", + 114: ".KN.CommandTransitionSetValueArchive", + 118: ".KN.CommandSlideMoveDrawableZOrderArchive", + 119: ".KN.CommandChangeTemplateSlideArchive", + 123: ".KN.CommandShowSetSlideNumberVisibilityArchive", + 124: ".KN.CommandShowSetValueArchive", + 128: ".KN.CommandShowMarkOutOfSyncRecordingArchive", + 129: ".KN.CommandShowRemoveRecordingArchive", + 130: ".KN.CommandShowReplaceRecordingArchive", + 131: ".KN.CommandShowSetSoundtrack", + 132: ".KN.CommandSoundtrackSetValue", + 134: ".KN.CommandMoveTemplatesArchive", + 135: ".KN.CommandInsertTemplateArchive", + 136: ".KN.CommandSlideSetStyleArchive", + 137: ".KN.CommandSlideSetPlaceholdersForTagsArchive", + 138: ".KN.CommandBuildChunkSetValueArchive", + 140: ".KN.CommandRemoveTemplateArchive", + 142: ".KN.CommandTemplateSetThumbnailTextArchive", + 143: ".KN.CommandShowChangeThemeArchive", + 144: ".KN.CommandSlidePrimitiveSetTemplateArchive", + 145: ".KN.CommandTemplateSetBodyStylesArchive", + 146: ".KNSOS.CommandSlideReapplyTemplateSlideArchive", + 148: ".KN.ChartInfoGeometryCommandArchive", + 150: ".KN.CommandSlideUpdateTemplateDrawables", + 152: ".KN.CommandSlideSetBackgroundFillArchive", + 153: ".KN.BuildChunkArchive", + 156: ".KN.CommandSlideNodeSetViewStatePropertyArchive", + 157: ".KN.CommandBuildUpdateChunkCountArchive", + 158: ".KN.CommandBuildUpdateChunkReferentsArchive", + 159: ".KN.BuildAttributeTupleArchive", + 160: ".KN.CommandSetThemeCustomEffectTimingCurveArchive", + 161: ".KN.CommandShowChangeSlideSizeArchive", + 162: ".KN.InsertBuildDescriptionArchive", + 163: ".KN.RemoveBuildDescriptionArchive", + 164: ".KN.DocumentSelectionTransformerArchive", + 165: ".KN.SlideCollectionSelectionTransformerArchive", + 166: ".KN.OutlineCanvasSelectionTransformerArchive", + 167: ".KN.NoteCanvasSelectionTransformerArchive", + 168: ".KN.CanvasSelectionTransformerArchive", + 169: ".KN.OutlineSelectionTransformerArchive", + 170: ".KN.UndoObjectArchive", + 172: ".KN.PrototypeForUndoTemplateChangeArchive", + 173: ".KN.CommandShowMarkOutOfSyncRecordingIfNeededArchive", + 174: ".KNSOS.InducedVerifyDocumentWithServerCommandArchive", + 175: ".KNSOS.InducedVerifyDrawableZOrdersWithServerCommandArchive", + 176: ".KN.CommandPrimitiveInsertTemplateArchive", + 177: ".KN.CommandPrimitiveRemoveTemplateArchive", + 178: ".KN.CommandTemplateSlideSetPlaceholderForTagArchive", + 179: ".KN.CommandSlidePropagateSetPlaceholderForTagArchive", + 180: ".KN.ActionGhostSelectionArchive", + 181: ".KN.ActionGhostSelectionTransformerArchive", + 182: ".KN.CommandSlideResetTemplateBackgroundObjectsArchive", + 184: ".KN.LiveVideoSource", + 185: ".KN.LiveVideoSourceCollection", + 186: ".KN.CommandLiveVideoInfoApplyPreset", + 187: ".KN.CommandLiveVideoInfoSetSource", + 188: ".KN.CommandLiveVideoInfoSetValue", + 189: ".KN.CommandLiveVideoSourceSetValue", + 190: ".KN.CommandLiveVideoStyleSetValue", + 191: ".KN.CommandThemeAddLiveVideoSource", + 192: ".KN.CommandThemeRemoveLiveVideoSource", + 194: ".KN.CommandMotionBackgroundStyleSetValueArchive", + 195: ".KN.CommandMotionBackgroundStyleUpdatePosterFrameDataArchive", + 200: ".TSK.DocumentArchive", + 201: ".TSK.LocalCommandHistory", + 202: ".TSK.CommandGroupArchive", + 203: ".TSK.CommandContainerArchive", + 205: ".TSK.TreeNode", + 210: ".TSK.ViewStateArchive", + 211: ".TSK.DocumentSupportArchive", + 212: ".TSK.AnnotationAuthorArchive", + 213: ".TSK.AnnotationAuthorStorageArchive", + 215: ".TSK.SetAnnotationAuthorColorCommandArchive", + 218: ".TSK.CollaborationCommandHistory", + 219: ".TSK.DocumentSelectionArchive", + 220: ".TSK.CommandSelectionBehaviorArchive", + 221: ".TSK.NullCommandArchive", + 222: ".TSK.CustomFormatListArchive", + 223: ".TSK.GroupCommitCommandArchive", + 224: ".TSK.InducedCommandCollectionArchive", + 225: ".TSK.InducedCommandCollectionCommitCommandArchive", + 226: ".TSK.CollaborationDocumentSessionState", + 227: ".TSK.CollaborationCommandHistoryCoalescingGroup", + 228: ".TSK.CollaborationCommandHistoryCoalescingGroupNode", + 229: ".TSK.CollaborationCommandHistoryOriginatingCommandAcknowledgementObserver", + 230: ".TSK.DocumentSupportCollaborationState", + 231: ".TSK.ChangeDocumentPackageTypeCommandArchive", + 232: ".TSK.UpgradeDocPostProcessingCommandArchive", + 233: ".TSK.FinalCommandPairArchive", + 234: ".TSK.OutgoingCommandQueueItem", + 235: ".TSK.TransformerEntry", + 238: ".TSK.CreateLocalStorageSnapshotCommandArchive", + 240: ".TSK.SelectionPathTransformerArchive", + 241: ".TSK.NativeContentDescription", + 242: ".TSD.PencilAnnotationStorageArchive", + 245: ".TSK.OperationStorage", + 246: ".TSK.OperationStorageEntryArray", + 247: ".TSK.OperationStorageEntryArraySegment", + 248: ".TSK.BlockDiffsAtCurrentRevisionCommand", + 249: ".TSK.OutgoingCommandQueue", + 250: ".TSK.OutgoingCommandQueueSegment", + 251: ".TSK.PropagatedCommandCollectionArchive", + 252: ".TSK.LocalCommandHistoryItem", + 253: ".TSK.LocalCommandHistoryArray", + 254: ".TSK.LocalCommandHistoryArraySegment", + 255: ".TSK.CollaborationCommandHistoryItem", + 256: ".TSK.CollaborationCommandHistoryArray", + 257: ".TSK.CollaborationCommandHistoryArraySegment", + 258: ".TSK.PencilAnnotationUIState", + 259: ".TSKSOS.FixCorruptedDataCommandArchive", + 260: ".TSK.CommandAssetChunkArchive", + 261: ".TSK.AssetUploadStatusCommandArchive", + 262: ".TSK.AssetUnmaterializedOnServerCommandArchive", + 263: ".TSK.CommandBehaviorArchive", + 264: ".TSK.CommandBehaviorSelectionPathStorageArchive", + 265: ".TSK.CommandActivityBehaviorArchive", + 273: ".TSK.ActivityOnlyCommandArchive", + 275: ".TSK.SetActivityAuthorShareParticipantIDCommandArchive", + 279: ".TSK.ActivityAuthorCacheArchive", + 280: ".TSK.ActivityStreamArchive", + 281: ".TSK.ActivityArchive", + 282: ".TSK.ActivityCommitCommandArchive", + 283: ".TSK.ActivityStreamActivityArray", + 284: ".TSK.ActivityStreamActivityArraySegment", + 285: ".TSK.ActivityStreamRemovedAuthorAuditorPendingStateArchive", + 286: ".TSK.ActivityAuthorArchive", + 287: ".TSKSOS.ResetActivityStreamCommandArchive", + 288: ".TSKSOS.RemoveAuthorIdentifiersCommandArchive", + 289: ".TSK.ActivityCursorCollectionPersistenceWrapperArchive", + 400: ".TSS.StyleArchive", + 401: ".TSS.StylesheetArchive", + 402: ".TSS.ThemeArchive", + 412: ".TSS.StyleUpdatePropertyMapCommandArchive", + 413: ".TSS.ThemeReplacePresetCommandArchive", + 414: ".TSS.ThemeAddStylePresetCommandArchive", + 415: ".TSS.ThemeRemoveStylePresetCommandArchive", + 416: ".TSS.ThemeReplaceColorPresetCommandArchive", + 417: ".TSS.ThemeMovePresetCommandArchive", + 419: ".TSS.ThemeReplaceStylePresetAndDisconnectStylesCommandArchive", + 600: ".TSA.DocumentArchive", + 601: ".TSA.FunctionBrowserStateArchive", + 602: ".TSA.PropagatePresetCommandArchive", + 603: ".TSA.ShortcutControllerArchive", + 604: ".TSA.ShortcutCommandArchive", + 605: ".TSA.AddCustomFormatCommandArchive", + 606: ".TSA.UpdateCustomFormatCommandArchive", + 607: ".TSA.ReplaceCustomFormatCommandArchive", + 611: ".TSASOS.VerifyObjectsWithServerCommandArchive", + 612: ".TSA.InducedVerifyObjectsWithServerCommandArchive", + 613: ".TSASOS.VerifyDocumentWithServerCommandArchive", + 614: ".TSASOS.VerifyDrawableZOrdersWithServerCommandArchive", + 615: ".TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive", + 616: ".TSA.NeedsMediaCompatibilityUpgradeCommandArchive", + 617: ".TSA.ChangeDocumentLocaleCommandArchive", + 618: ".TSA.StyleUpdatePropertyMapCommandArchive", + 619: ".TSA.RemoteDataChangeCommandArchive", + 623: ".TSA.GalleryItem", + 624: ".TSA.GallerySelectionTransformer", + 625: ".TSA.GalleryItemSelection", + 626: ".TSA.GalleryItemSelectionTransformer", + 627: ".TSA.GalleryInfoSetValueCommandArchive", + 628: ".TSA.GalleryItemSetGeometryCommand", + 629: ".TSA.GalleryItemSetValueCommand", + 630: ".TSA.InducedVerifyTransformHistoryWithServerCommandArchive", + 631: ".TSASOS.CommandReapplyMasterArchive", + 632: ".TSASOS.PropagateMasterChangeCommandArchive", + 633: ".TSA.CaptionInfoArchive", + 634: ".TSA.CaptionPlacementArchive", + 635: ".TSA.TitlePlacementCommandArchive", + 636: ".TSA.GalleryInfoInsertItemsCommandArchive", + 637: ".TSA.GalleryInfoRemoveItemsCommandArchive", + 638: ".TSASOS.VerifyActivityStreamWithServerCommandArchive", + 639: ".TSASOS.InducedVerifyActivityStreamWithServerCommandArchive", + 2001: ".TSWP.StorageArchive", + 2002: ".TSWP.SelectionArchive", + 2003: ".TSWP.DrawableAttachmentArchive", + 2004: ".TSWP.TextualAttachmentArchive", + 2005: ".TSWP.StorageArchive", + 2006: ".TSWP.UIGraphicalAttachment", + 2007: ".TSWP.TextualAttachmentArchive", + 2008: ".TSWP.FootnoteReferenceAttachmentArchive", + 2009: ".TSWP.TextualAttachmentArchive", + 2010: ".TSWP.TSWPTOCPageNumberAttachmentArchive", + 2011: ".TSWP.ShapeInfoArchive", + 2013: ".TSWP.HighlightArchive", + 2014: ".TSWP.CommentInfoArchive", + 2015: ".TSWP.EquationInfoArchive", + 2016: ".TSWP.PencilAnnotationArchive", + 2021: ".TSWP.CharacterStyleArchive", + 2022: ".TSWP.ParagraphStyleArchive", + 2023: ".TSWP.ListStyleArchive", + 2024: ".TSWP.ColumnStyleArchive", + 2025: ".TSWP.ShapeStyleArchive", + 2026: ".TSWP.TOCEntryStyleArchive", + 2031: ".TSWP.PlaceholderSmartFieldArchive", + 2032: ".TSWP.HyperlinkFieldArchive", + 2033: ".TSWP.FilenameSmartFieldArchive", + 2034: ".TSWP.DateTimeSmartFieldArchive", + 2035: ".TSWP.BookmarkFieldArchive", + 2036: ".TSWP.MergeSmartFieldArchive", + 2037: ".TSWP.CitationRecordArchive", + 2038: ".TSWP.CitationSmartFieldArchive", + 2039: ".TSWP.UnsupportedHyperlinkFieldArchive", + 2040: ".TSWP.BibliographySmartFieldArchive", + 2041: ".TSWP.TOCSmartFieldArchive", + 2042: ".TSWP.RubyFieldArchive", + 2043: ".TSWP.NumberAttachmentArchive", + 2050: ".TSWP.TextStylePresetArchive", + 2051: ".TSWP.TOCSettingsArchive", + 2052: ".TSWP.TOCEntryInstanceArchive", + 2053: ".TSWPSOS.StyleDiffArchive", + 2060: ".TSWP.ChangeArchive", + 2061: ".TSK.DeprecatedChangeAuthorArchive", + 2062: ".TSWP.ChangeSessionArchive", + 2101: ".TSWP.TextCommandArchive", + 2107: ".TSWP.ApplyPlaceholderTextCommandArchive", + 2116: ".TSWP.ApplyRubyTextCommandArchive", + 2118: ".TSWP.ModifyRubyTextCommandArchive", + 2119: ".TSWP.UpdateDateTimeFieldCommandArchive", + 2120: ".TSWP.ModifyTOCSettingsBaseCommandArchive", + 2121: ".TSWP.ModifyTOCSettingsForTOCInfoCommandArchive", + 2123: ".TSWP.SetObjectPropertiesCommandArchive", + 2124: ".TSWP.UpdateFlowInfoCommandArchive", + 2125: ".TSWP.AddFlowInfoCommandArchive", + 2126: ".TSWP.RemoveFlowInfoCommandArchive", + 2127: ".TSWP.ContainedObjectsCommandArchive", + 2128: ".TSWP.EquationInfoGeometryCommandArchive", + 2206: ".TSWP.AnchorAttachmentCommandArchive", + 2217: ".TSWP.TextCommentReplyCommandArchive", + 2231: ".TSWP.ShapeApplyPresetCommandArchive", + 2240: ".TSWP.TOCInfoArchive", + 2241: ".TSWP.TOCAttachmentArchive", + 2242: ".TSWP.TOCLayoutHintArchive", + 2400: ".TSWP.StyleBaseCommandArchive", + 2401: ".TSWP.StyleCreateCommandArchive", + 2402: ".TSWP.StyleRenameCommandArchive", + 2404: ".TSWP.StyleDeleteCommandArchive", + 2405: ".TSWP.StyleReorderCommandArchive", + 2406: ".TSWP.StyleUpdatePropertyMapCommandArchive", + 2407: ".TSWP.StorageActionCommandArchive", + 2408: ".TSWP.ShapeStyleSetValueCommandArchive", + 2409: ".TSWP.HyperlinkSelectionArchive", + 2410: ".TSWP.FlowInfoArchive", + 2411: ".TSWP.FlowInfoContainerArchive", + 2412: ".TSWP.PencilAnnotationSelectionTransformerArchive", + 3002: ".TSD.DrawableArchive", + 3003: ".TSD.ContainerArchive", + 3004: ".TSD.ShapeArchive", + 3005: ".TSD.ImageArchive", + 3006: ".TSD.MaskArchive", + 3007: ".TSD.MovieArchive", + 3008: ".TSD.GroupArchive", + 3009: ".TSD.ConnectionLineArchive", + 3015: ".TSD.ShapeStyleArchive", + 3016: ".TSD.MediaStyleArchive", + 3021: ".TSD.InfoGeometryCommandArchive", + 3022: ".TSD.DrawablePathSourceCommandArchive", + 3024: ".TSD.ImageMaskCommandArchive", + 3025: ".TSD.ImageMediaCommandArchive", + 3026: ".TSD.ImageReplaceCommandArchive", + 3027: ".TSD.MediaOriginalSizeCommandArchive", + 3028: ".TSD.ShapeStyleSetValueCommandArchive", + 3030: ".TSD.MediaStyleSetValueCommandArchive", + 3031: ".TSD.ShapeApplyPresetCommandArchive", + 3032: ".TSD.MediaApplyPresetCommandArchive", + 3034: ".TSD.MovieSetValueCommandArchive", + 3036: ".TSD.ExteriorTextWrapCommandArchive", + 3037: ".TSD.MediaFlagsCommandArchive", + 3040: ".TSD.DrawableHyperlinkCommandArchive", + 3041: ".TSD.ConnectionLineConnectCommandArchive", + 3042: ".TSD.InstantAlphaCommandArchive", + 3043: ".TSD.DrawableLockCommandArchive", + 3044: ".TSD.ImageNaturalSizeCommandArchive", + 3045: ".TSD.CanvasSelectionArchive", + 3047: ".TSD.GuideStorageArchive", + 3048: ".TSD.StyledInfoSetStyleCommandArchive", + 3049: ".TSD.DrawableInfoCommentCommandArchive", + 3050: ".TSD.GuideCommandArchive", + 3051: ".TSD.DrawableAspectRatioLockedCommandArchive", + 3052: ".TSD.ContainerRemoveChildrenCommandArchive", + 3053: ".TSD.ContainerInsertChildrenCommandArchive", + 3054: ".TSD.ContainerReorderChildrenCommandArchive", + 3055: ".TSD.ImageAdjustmentsCommandArchive", + 3056: ".TSD.CommentStorageArchive", + 3057: ".TSD.ThemeReplaceFillPresetCommandArchive", + 3058: ".TSD.DrawableAccessibilityDescriptionCommandArchive", + 3059: ".TSD.PasteStyleCommandArchive", + 3061: ".TSD.DrawableSelectionArchive", + 3062: ".TSD.GroupSelectionArchive", + 3063: ".TSD.PathSelectionArchive", + 3064: ".TSD.CommentInvalidatingCommandSelectionBehaviorArchive", + 3065: ".TSD.ImageInfoAbstractGeometryCommandArchive", + 3066: ".TSD.ImageInfoGeometryCommandArchive", + 3067: ".TSD.ImageInfoMaskGeometryCommandArchive", + 3068: ".TSD.UndoObjectArchive", + 3070: ".TSD.ReplaceAnnotationAuthorCommandArchive", + 3071: ".TSD.DrawableSelectionTransformerArchive", + 3072: ".TSD.GroupSelectionTransformerArchive", + 3073: ".TSD.ShapeSelectionTransformerArchive", + 3074: ".TSD.PathSelectionTransformerArchive", + 3080: ".TSD.MediaInfoGeometryCommandArchive", + 3082: ".TSD.GroupUngroupInformativeCommandArchive", + 3083: ".TSD.DrawableContentDescription", + 3084: ".TSD.ContainerRemoveDrawablesCommandArchive", + 3085: ".TSD.ContainerInsertDrawablesCommandArchive", + 3086: ".TSD.PencilAnnotationArchive", + 3087: ".TSD.FreehandDrawingOpacityCommandArchive", + 3088: ".TSD.DrawablePencilAnnotationCommandArchive", + 3089: ".TSD.PencilAnnotationSelectionArchive", + 3090: ".TSD.FreehandDrawingContentDescription", + 3091: ".TSD.FreehandDrawingToolkitUIState", + 3092: ".TSD.PencilAnnotationSelectionTransformerArchive", + 3094: ".TSD.FreehandDrawingAnimationCommandArchive", + 3095: ".TSD.InsertCaptionOrTitleCommandArchive", + 3096: ".TSD.RemoveCaptionOrTitleCommandArchive", + 3097: ".TSD.StandinCaptionArchive", + 3098: ".TSD.SetCaptionOrTitleVisibilityCommandArchive", + 4000: ".TSCE.CalculationEngineArchive", + 4001: ".TSCE.FormulaRewriteCommandArchive", + 4003: ".TSCE.NamedReferenceManagerArchive", + 4004: ".TSCE.TrackedReferenceStoreArchive", + 4005: ".TSCE.TrackedReferenceArchive", + 4007: ".TSCE.RemoteDataStoreArchive", + 4008: ".TSCE.FormulaOwnerDependenciesArchive", + 4009: ".TSCE.CellRecordTileArchive", + 4010: ".TSCE.RangePrecedentsTileArchive", + 4011: ".TSCE.ReferencesToDirtyArchive", + 5000: ".TSCH.PreUFF.ChartInfoArchive", + 5002: ".TSCH.PreUFF.ChartGridArchive", + 5004: ".TSCH.ChartMediatorArchive", + 5010: ".TSCH.PreUFF.ChartStyleArchive", + 5011: ".TSCH.PreUFF.ChartSeriesStyleArchive", + 5012: ".TSCH.PreUFF.ChartAxisStyleArchive", + 5013: ".TSCH.PreUFF.LegendStyleArchive", + 5014: ".TSCH.PreUFF.ChartNonStyleArchive", + 5015: ".TSCH.PreUFF.ChartSeriesNonStyleArchive", + 5016: ".TSCH.PreUFF.ChartAxisNonStyleArchive", + 5017: ".TSCH.PreUFF.LegendNonStyleArchive", + 5020: ".TSCH.ChartStylePreset", + 5021: ".TSCH.ChartDrawableArchive", + 5022: ".TSCH.ChartStyleArchive", + 5023: ".TSCH.ChartNonStyleArchive", + 5024: ".TSCH.LegendStyleArchive", + 5025: ".TSCH.LegendNonStyleArchive", + 5026: ".TSCH.ChartAxisStyleArchive", + 5027: ".TSCH.ChartAxisNonStyleArchive", + 5028: ".TSCH.ChartSeriesStyleArchive", + 5029: ".TSCH.ChartSeriesNonStyleArchive", + 5030: ".TSCH.ReferenceLineStyleArchive", + 5031: ".TSCH.ReferenceLineNonStyleArchive", + 5103: ".TSCH.CommandSetChartTypeArchive", + 5104: ".TSCH.CommandSetSeriesNameArchive", + 5105: ".TSCH.CommandSetCategoryNameArchive", + 5107: ".TSCH.CommandSetScatterFormatArchive", + 5108: ".TSCH.CommandSetLegendFrameArchive", + 5109: ".TSCH.CommandSetGridValueArchive", + 5110: ".TSCH.CommandSetGridDirectionArchive", + 5115: ".TSCH.CommandAddGridRowsArchive", + 5116: ".TSCH.CommandAddGridColumnsArchive", + 5118: ".TSCH.CommandMoveGridRowsArchive", + 5119: ".TSCH.CommandMoveGridColumnsArchive", + 5122: ".TSCH.CommandSetPieWedgeExplosion", + 5123: ".TSCH.CommandStyleSwapArchive", + 5125: ".TSCH.CommandChartApplyPreset", + 5126: ".TSCH.ChartCommandArchive", + 5127: ".TSCH.CommandReplaceGridValuesArchive", + 5129: ".TSCH.StylePasteboardDataArchive", + 5130: ".TSCH.CommandSetMultiDataSetIndexArchive", + 5131: ".TSCH.CommandReplaceThemePresetArchive", + 5132: ".TSCH.CommandInvalidateWPCaches", + 5135: ".TSCH.CommandMutatePropertiesArchive", + 5136: ".TSCH.CommandScaleAllTextArchive", + 5137: ".TSCH.CommandSetFontFamilyArchive", + 5138: ".TSCH.CommandApplyFillSetArchive", + 5139: ".TSCH.CommandReplaceCustomFormatArchive", + 5140: ".TSCH.CommandAddReferenceLineArchive", + 5141: ".TSCH.CommandDeleteReferenceLineArchive", + 5142: ".TSCH.CommandDeleteGridColumnsArchive", + 5143: ".TSCH.CommandDeleteGridRowsArchive", + 5145: ".TSCH.ChartSelectionArchive", + 5146: ".TSCH.ChartTextSelectionTransformerArchive", + 5147: ".TSCH.ChartSubselectionTransformerArchive", + 5148: ".TSCH.ChartDrawableSelectionTransformerArchive", + 5149: ".TSCH.ChartSubselectionTransformerHelperArchive", + 5150: ".TSCH.ChartRefLineSubselectionTransformerHelperArchive", + 5151: ".TSCH.CDESelectionTransformerArchive", + 5152: ".TSCH.ChartSubselectionIdentityTransformerHelperArchive", + 5154: ".TSCH.CommandPasteStyleArchive", + 5155: ".TSCH.CommandInducedReplaceChartGrid", + 5156: ".TSCH.CommandReplaceImageDataArchive", + 5157: ".TSCH.CommandInduced3DChartGeometry", + 6000: ".TST.TableInfoArchive", + 6001: ".TST.TableModelArchive", + 6002: ".TST.Tile", + 6003: ".TST.TableStyleArchive", + 6004: ".TST.CellStyleArchive", + 6005: ".TST.TableDataList", + 6006: ".TST.HeaderStorageBucket", + 6007: ".TST.WPTableInfoArchive", + 6008: ".TST.TableStylePresetArchive", + 6009: ".TST.TableStrokePresetArchive", + 6010: ".TST.ConditionalStyleSetArchive", + 6011: ".TST.TableDataListSegment", + 6030: ".TST.SelectionArchive", + 6031: ".TST.CellMapArchive", + 6032: ".TST.DeathhawkRdar39989167CellSelectionArchive", + 6033: ".TST.ConcurrentCellMapArchive", + 6034: ".TST.ConcurrentCellListArchive", + 6100: ".TST.TableCommandArchive", + 6101: ".TST.CommandDeleteCellsArchive", + 6102: ".TST.CommandInsertColumnsOrRowsArchive", + 6103: ".TST.CommandRemoveColumnsOrRowsArchive", + 6104: ".TST.CommandResizeColumnOrRowArchive", + 6107: ".TST.CommandSetTableNameArchive", + 6111: ".TST.CommandChangeFreezeHeaderStateArchive", + 6114: ".TST.CommandSetTableNameEnabledArchive", + 6117: ".TST.CommandApplyTableStylePresetArchive", + 6120: ".TST.CommandSetRepeatingHeaderEnabledArchive", + 6123: ".TST.CommandSortArchive", + 6125: ".TST.CommandStyleTableArchive", + 6126: ".TST.CommandSetNumberOfDecimalPlacesArchive", + 6127: ".TST.CommandSetShowThousandsSeparatorArchive", + 6128: ".TST.CommandSetNegativeNumberStyleArchive", + 6129: ".TST.CommandSetFractionAccuracyArchive", + 6131: ".TST.CommandSetCurrencyCodeArchive", + 6132: ".TST.CommandSetUseAccountingStyleArchive", + 6136: ".TST.CommandSetTableFontNameArchive", + 6137: ".TST.CommandSetTableFontSizeArchive", + 6142: ".TST.CommandSetTableNameHeightArchive", + 6144: ".TST.MergeRegionMapArchive", + 6145: ".TST.CommandHideShowArchive", + 6146: ".TST.CommandSetBaseArchive", + 6147: ".TST.CommandSetBasePlacesArchive", + 6148: ".TST.CommandSetBaseUseMinusSignArchive", + 6149: ".TST.CommandSetTextStylePropertiesArchive", + 6150: ".TST.CommandCategoryChangeSummaryAggregateType", + 6152: ".TST.CommandCategoryResizeColumnOrRowArchive", + 6153: ".TST.CommandCategoryMoveRowsArchive", + 6156: ".TST.CommandSetPencilAnnotationsArchive", + 6157: ".TST.CommandCategoryWillChangeGroupValue", + 6158: ".TST.CommandApplyConcurrentCellMapArchive", + 6159: ".TST.CommandSetGroupSortOrderArchive", + 6179: ".TST.FormulaEqualsTokenAttachmentArchive", + 6181: ".TST.TokenAttachmentArchive", + 6182: ".TST.ExpressionNodeArchive", + 6183: ".TST.BooleanNodeArchive", + 6184: ".TST.NumberNodeArchive", + 6185: ".TST.StringNodeArchive", + 6186: ".TST.ArrayNodeArchive", + 6187: ".TST.ListNodeArchive", + 6188: ".TST.OperatorNodeArchive", + 6189: ".TST.FunctionNodeArchive", + 6190: ".TST.DateNodeArchive", + 6191: ".TST.ReferenceNodeArchive", + 6192: ".TST.DurationNodeArchive", + 6193: ".TST.ArgumentPlaceholderNodeArchive", + 6194: ".TST.PostfixOperatorNodeArchive", + 6195: ".TST.PrefixOperatorNodeArchive", + 6196: ".TST.FunctionEndNodeArchive", + 6197: ".TST.EmptyExpressionNodeArchive", + 6198: ".TST.LayoutHintArchive", + 6199: ".TST.CompletionTokenAttachmentArchive", + 6201: ".TST.TableDataList", + 6204: ".TST.HiddenStateFormulaOwnerArchive", + 6205: ".TST.CommandSetAutomaticDurationUnitsArchive", + 6206: ".TST.PopUpMenuModel", + 6218: ".TST.RichTextPayloadArchive", + 6220: ".TST.FilterSetArchive", + 6221: ".TST.CommandSetFiltersEnabledArchive", + 6224: ".TST.CommandRewriteFilterFormulasForTableResizeArchive", + 6226: ".TST.CommandTextPreflightInsertCellArchive", + 6228: ".TST.CommandDeleteCellContentsArchive", + 6229: ".TST.CommandPostflightSetCellArchive", + 6235: ".TST.IdentifierNodeArchive", + 6238: ".TST.CommandSetDateTimeFormatArchive", + 6239: ".TST.TableCommandSelectionBehaviorArchive", + 6244: ".TST.CommandApplyCellCommentArchive", + 6246: ".TST.CommandSetFormulaTokenizationArchive", + 6247: ".TST.TableStyleNetworkArchive", + 6250: ".TST.CommandSetFilterSetTypeArchive", + 6255: ".TST.CommandSetTextStyleArchive", + 6256: ".TST.CommandJustForNotifyingArchive", + 6258: ".TST.CommandSetSortOrderArchive", + 6262: ".TST.CommandAddTableStylePresetArchive", + 6264: ".TST.CellDiffMapArchive", + 6265: ".TST.CommandApplyCellContentsArchive", + 6266: ".TST.CommandRemoveTableStylePresetArchive", + 6267: ".TST.ColumnRowUIDMapArchive", + 6268: ".TST.CommandMoveColumnsOrRowsArchive", + 6269: ".TST.CommandReplaceCustomFormatArchive", + 6270: ".TST.CommandReplaceTableStylePresetArchive", + 6271: ".TST.FormulaSelectionArchive", + 6273: ".TST.CellListArchive", + 6275: ".TST.CommandApplyCellDiffMapArchive", + 6276: ".TST.CommandSetFilterSetArchive", + 6277: ".TST.CommandMutateCellFormatArchive", + 6278: ".TST.CommandSetStorageLanguageArchive", + 6280: ".TST.CommandMergeArchive", + 6281: ".TST.CommandUnmergeArchive", + 6282: ".TST.CommandApplyCellMapArchive", + 6283: ".TST.ControlCellSelectionArchive", + 6284: ".TST.TableNameSelectionArchive", + 6285: ".TST.CommandRewriteFormulasForTransposeArchive", + 6287: ".TST.CommandTransposeTableArchive", + 6289: ".TST.CommandSetDurationStyleArchive", + 6290: ".TST.CommandSetDurationUnitSmallestLargestArchive", + 6291: ".TST.CommandRewriteTableFormulasForRewriteSpecArchive", + 6292: ".TST.CommandRewriteConditionalStylesForRewriteSpecArchive", + 6293: ".TST.CommandRewriteFilterFormulasForRewriteSpecArchive", + 6294: ".TST.CommandRewriteSortOrderForRewriteSpecArchive", + 6295: ".TST.StrokeSelectionArchive", + 6297: ".TST.LetNodeArchive", + 6298: ".TST.VariableNodeArchive", + 6299: ".TST.InNodeArchive", + 6300: ".TST.CommandInverseMergeArchive", + 6301: ".TST.CommandMoveCellsArchive", + 6302: ".TST.DefaultCellStylesContainerArchive", + 6303: ".TST.CommandRewriteMergeFormulasArchive", + 6304: ".TST.CommandChangeTableAreaForColumnOrRowArchive", + 6305: ".TST.StrokeSidecarArchive", + 6306: ".TST.StrokeLayerArchive", + 6307: ".TST.CommandChooseTableIdRemapperArchive", + 6310: ".TST.CommandSetWasCutArchive", + 6311: ".TST.AutofillSelectionArchive", + 6312: ".TST.StockCellSelectionArchive", + 6313: ".TST.CommandSetNowArchive", + 6314: ".TST.CommandSetStructuredTextImportRecordArchive", + 6315: ".TST.CommandRewriteCategoryFormulasArchive", + 6316: ".TST.SummaryModelArchive", + 6317: ".TST.SummaryCellVendorArchive", + 6318: ".TST.CategoryOrderArchive", + 6320: ".TST.CommandCategoryCollapseExpandGroupArchive", + 6321: ".TST.CommandCategorySetGroupingColumnsArchive", + 6323: ".TST.CommandRewriteHiddenStatesForGroupByChangeArchive", + 6350: ".TST.IdempotentSelectionTransformerArchive", + 6351: ".TST.TableSubSelectionTransformerBaseArchive", + 6352: ".TST.TableNameSelectionTransformerArchive", + 6353: ".TST.RegionSelectionTransformerArchive", + 6354: ".TST.RowColumnSelectionTransformerArchive", + 6355: ".TST.ControlCellSelectionTransformerArchive", + 6357: ".TST.ChangePropagationMapWrapper", + 6358: ".TST.WPSelectionTransformerArchive", + 6359: ".TST.StockCellSelectionTransformerArchive", + 6360: ".TST.CommandSetRangeControlMinMaxIncArchive", + 6361: ".TST.CommandCategorySetLabelRowVisibility", + 6362: ".TST.CommandRewritePencilAnnotationFormulasArchive", + 6363: ".TST.PencilAnnotationArchive", + 6364: ".TST.StrokeSelectionTransformerArchive", + 6365: ".TST.HeaderNameMgrTileArchive", + 6366: ".TST.HeaderNameMgrArchive", + 6367: ".TST.CellDiffArray", + 6368: ".TST.CellDiffArraySegment", + 6369: ".TST.PivotOrderArchive", + 6370: ".TST.PivotOwnerArchive", + 6371: ".TST.CommandPivotSetPivotRulesArchive", + 6372: ".TST.CategoryOwnerRefArchive", + 6373: ".TST.GroupByArchive", + 6374: ".TST.PivotGroupingColumnOptionsMapArchive", + 6375: ".TST.CommandPivotSetGroupingColumnOptionsArchive", + 6376: ".TST.CommandPivotHideShowGrandTotalsArchive", + 6377: ".TST.CommandPivotSortArchive", + 6379: ".TST.CommandRewritePivotOwnerFormulasArchive", + 6380: ".TST.CommandRewriteTrackedReferencesArchive", + 6381: ".TST.CommandExtendTableIDHistoryArchive", + 6382: ".TST.GroupByArchive.AggregatorArchive", + 6383: ".TST.GroupByArchive.GroupNodeArchive", + 10011: ".TSWP.SectionPlaceholderArchive", + 10020: ".TSWP.ShapeSelectionTransformerArchive", + 10021: ".TSWP.SelectionTransformerArchive", + 10022: ".TSWP.ShapeContentDescription", + 10023: ".TSWP.TateChuYokoFieldArchive", + 10024: ".TSWP.DropCapStyleArchive", + 11000: ".TSP.PasteboardObject", + 11006: ".TSP.PackageMetadata", + 11007: ".TSP.PasteboardMetadata", + 11008: ".TSP.ObjectContainer", + 11009: ".TSP.ViewStateMetadata", + 11010: ".TSP.ObjectCollection", + 11011: ".TSP.DocumentMetadata", + 11012: ".TSP.SupportMetadata", + 11013: ".TSP.ObjectSerializationMetadata", + 11014: ".TSP.DataMetadata", + 11015: ".TSP.DataMetadataMap", + 11016: ".TSP.LargeNumberArraySegment", + 11017: ".TSP.LargeStringArraySegment", + 11018: ".TSP.LargeLazyObjectArraySegment", + 11019: ".TSP.LargeNumberArray", + 11020: ".TSP.LargeStringArray", + 11021: ".TSP.LargeLazyObjectArray", + 11024: ".TSP.LargeUUIDArraySegment", + 11025: ".TSP.LargeUUIDArray", + 11026: ".TSP.LargeObjectArraySegment", + 11027: ".TSP.LargeObjectArray", +} as {[key: number]: string}; diff --git a/src/messages/numbers.ts b/src/messages/numbers.ts new file mode 100644 index 0000000..705a1a4 --- /dev/null +++ b/src/messages/numbers.ts @@ -0,0 +1,581 @@ +export default { + 1: ".TN.DocumentArchive", + 2: ".TN.SheetArchive", + 3: ".TN.FormBasedSheetArchive", + 7: ".TN.PlaceholderArchive", + 200: ".TSK.DocumentArchive", + 201: ".TSK.LocalCommandHistory", + 202: ".TSK.CommandGroupArchive", + 203: ".TSK.CommandContainerArchive", + 205: ".TSK.TreeNode", + 210: ".TSK.ViewStateArchive", + 211: ".TSK.DocumentSupportArchive", + 212: ".TSK.AnnotationAuthorArchive", + 213: ".TSK.AnnotationAuthorStorageArchive", + 215: ".TSK.SetAnnotationAuthorColorCommandArchive", + 218: ".TSK.CollaborationCommandHistory", + 219: ".TSK.DocumentSelectionArchive", + 220: ".TSK.CommandSelectionBehaviorArchive", + 221: ".TSK.NullCommandArchive", + 222: ".TSK.CustomFormatListArchive", + 223: ".TSK.GroupCommitCommandArchive", + 224: ".TSK.InducedCommandCollectionArchive", + 225: ".TSK.InducedCommandCollectionCommitCommandArchive", + 226: ".TSK.CollaborationDocumentSessionState", + 227: ".TSK.CollaborationCommandHistoryCoalescingGroup", + 228: ".TSK.CollaborationCommandHistoryCoalescingGroupNode", + 229: ".TSK.CollaborationCommandHistoryOriginatingCommandAcknowledgementObserver", + 230: ".TSK.DocumentSupportCollaborationState", + 231: ".TSK.ChangeDocumentPackageTypeCommandArchive", + 232: ".TSK.UpgradeDocPostProcessingCommandArchive", + 233: ".TSK.FinalCommandPairArchive", + 234: ".TSK.OutgoingCommandQueueItem", + 235: ".TSK.TransformerEntry", + 238: ".TSK.CreateLocalStorageSnapshotCommandArchive", + 240: ".TSK.SelectionPathTransformerArchive", + 241: ".TSK.NativeContentDescription", + 242: ".TSD.PencilAnnotationStorageArchive", + 245: ".TSK.OperationStorage", + 246: ".TSK.OperationStorageEntryArray", + 247: ".TSK.OperationStorageEntryArraySegment", + 248: ".TSK.BlockDiffsAtCurrentRevisionCommand", + 249: ".TSK.OutgoingCommandQueue", + 250: ".TSK.OutgoingCommandQueueSegment", + 251: ".TSK.PropagatedCommandCollectionArchive", + 252: ".TSK.LocalCommandHistoryItem", + 253: ".TSK.LocalCommandHistoryArray", + 254: ".TSK.LocalCommandHistoryArraySegment", + 255: ".TSK.CollaborationCommandHistoryItem", + 256: ".TSK.CollaborationCommandHistoryArray", + 257: ".TSK.CollaborationCommandHistoryArraySegment", + 258: ".TSK.PencilAnnotationUIState", + 259: ".TSKSOS.FixCorruptedDataCommandArchive", + 260: ".TSK.CommandAssetChunkArchive", + 261: ".TSK.AssetUploadStatusCommandArchive", + 262: ".TSK.AssetUnmaterializedOnServerCommandArchive", + 263: ".TSK.CommandBehaviorArchive", + 264: ".TSK.CommandBehaviorSelectionPathStorageArchive", + 265: ".TSK.CommandActivityBehaviorArchive", + 273: ".TSK.ActivityOnlyCommandArchive", + 275: ".TSK.SetActivityAuthorShareParticipantIDCommandArchive", + 279: ".TSK.ActivityAuthorCacheArchive", + 280: ".TSK.ActivityStreamArchive", + 281: ".TSK.ActivityArchive", + 282: ".TSK.ActivityCommitCommandArchive", + 283: ".TSK.ActivityStreamActivityArray", + 284: ".TSK.ActivityStreamActivityArraySegment", + 285: ".TSK.ActivityStreamRemovedAuthorAuditorPendingStateArchive", + 286: ".TSK.ActivityAuthorArchive", + 287: ".TSKSOS.ResetActivityStreamCommandArchive", + 288: ".TSKSOS.RemoveAuthorIdentifiersCommandArchive", + 289: ".TSK.ActivityCursorCollectionPersistenceWrapperArchive", + 400: ".TSS.StyleArchive", + 401: ".TSS.StylesheetArchive", + 402: ".TSS.ThemeArchive", + 412: ".TSS.StyleUpdatePropertyMapCommandArchive", + 413: ".TSS.ThemeReplacePresetCommandArchive", + 414: ".TSS.ThemeAddStylePresetCommandArchive", + 415: ".TSS.ThemeRemoveStylePresetCommandArchive", + 416: ".TSS.ThemeReplaceColorPresetCommandArchive", + 417: ".TSS.ThemeMovePresetCommandArchive", + 419: ".TSS.ThemeReplaceStylePresetAndDisconnectStylesCommandArchive", + 600: ".TSA.DocumentArchive", + 601: ".TSA.FunctionBrowserStateArchive", + 602: ".TSA.PropagatePresetCommandArchive", + 603: ".TSA.ShortcutControllerArchive", + 604: ".TSA.ShortcutCommandArchive", + 605: ".TSA.AddCustomFormatCommandArchive", + 606: ".TSA.UpdateCustomFormatCommandArchive", + 607: ".TSA.ReplaceCustomFormatCommandArchive", + 611: ".TSASOS.VerifyObjectsWithServerCommandArchive", + 612: ".TSA.InducedVerifyObjectsWithServerCommandArchive", + 613: ".TSASOS.VerifyDocumentWithServerCommandArchive", + 614: ".TSASOS.VerifyDrawableZOrdersWithServerCommandArchive", + 615: ".TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive", + 616: ".TSA.NeedsMediaCompatibilityUpgradeCommandArchive", + 617: ".TSA.ChangeDocumentLocaleCommandArchive", + 618: ".TSA.StyleUpdatePropertyMapCommandArchive", + 619: ".TSA.RemoteDataChangeCommandArchive", + 623: ".TSA.GalleryItem", + 624: ".TSA.GallerySelectionTransformer", + 625: ".TSA.GalleryItemSelection", + 626: ".TSA.GalleryItemSelectionTransformer", + 627: ".TSA.GalleryInfoSetValueCommandArchive", + 628: ".TSA.GalleryItemSetGeometryCommand", + 629: ".TSA.GalleryItemSetValueCommand", + 630: ".TSA.InducedVerifyTransformHistoryWithServerCommandArchive", + 631: ".TSASOS.CommandReapplyMasterArchive", + 632: ".TSASOS.PropagateMasterChangeCommandArchive", + 633: ".TSA.CaptionInfoArchive", + 634: ".TSA.CaptionPlacementArchive", + 635: ".TSA.TitlePlacementCommandArchive", + 636: ".TSA.GalleryInfoInsertItemsCommandArchive", + 637: ".TSA.GalleryInfoRemoveItemsCommandArchive", + 638: ".TSASOS.VerifyActivityStreamWithServerCommandArchive", + 639: ".TSASOS.InducedVerifyActivityStreamWithServerCommandArchive", + 2001: ".TSWP.StorageArchive", + 2002: ".TSWP.SelectionArchive", + 2003: ".TSWP.DrawableAttachmentArchive", + 2004: ".TSWP.TextualAttachmentArchive", + 2005: ".TSWP.StorageArchive", + 2006: ".TSWP.UIGraphicalAttachment", + 2007: ".TSWP.TextualAttachmentArchive", + 2008: ".TSWP.FootnoteReferenceAttachmentArchive", + 2009: ".TSWP.TextualAttachmentArchive", + 2010: ".TSWP.TSWPTOCPageNumberAttachmentArchive", + 2011: ".TSWP.ShapeInfoArchive", + 2013: ".TSWP.HighlightArchive", + 2014: ".TSWP.CommentInfoArchive", + 2015: ".TSWP.EquationInfoArchive", + 2016: ".TSWP.PencilAnnotationArchive", + 2021: ".TSWP.CharacterStyleArchive", + 2022: ".TSWP.ParagraphStyleArchive", + 2023: ".TSWP.ListStyleArchive", + 2024: ".TSWP.ColumnStyleArchive", + 2025: ".TSWP.ShapeStyleArchive", + 2026: ".TSWP.TOCEntryStyleArchive", + 2031: ".TSWP.PlaceholderSmartFieldArchive", + 2032: ".TSWP.HyperlinkFieldArchive", + 2033: ".TSWP.FilenameSmartFieldArchive", + 2034: ".TSWP.DateTimeSmartFieldArchive", + 2035: ".TSWP.BookmarkFieldArchive", + 2036: ".TSWP.MergeSmartFieldArchive", + 2037: ".TSWP.CitationRecordArchive", + 2038: ".TSWP.CitationSmartFieldArchive", + 2039: ".TSWP.UnsupportedHyperlinkFieldArchive", + 2040: ".TSWP.BibliographySmartFieldArchive", + 2041: ".TSWP.TOCSmartFieldArchive", + 2042: ".TSWP.RubyFieldArchive", + 2043: ".TSWP.NumberAttachmentArchive", + 2050: ".TSWP.TextStylePresetArchive", + 2051: ".TSWP.TOCSettingsArchive", + 2052: ".TSWP.TOCEntryInstanceArchive", + 2053: ".TSWPSOS.StyleDiffArchive", + 2060: ".TSWP.ChangeArchive", + 2061: ".TSK.DeprecatedChangeAuthorArchive", + 2062: ".TSWP.ChangeSessionArchive", + 2101: ".TSWP.TextCommandArchive", + 2107: ".TSWP.ApplyPlaceholderTextCommandArchive", + 2116: ".TSWP.ApplyRubyTextCommandArchive", + 2118: ".TSWP.ModifyRubyTextCommandArchive", + 2119: ".TSWP.UpdateDateTimeFieldCommandArchive", + 2120: ".TSWP.ModifyTOCSettingsBaseCommandArchive", + 2121: ".TSWP.ModifyTOCSettingsForTOCInfoCommandArchive", + 2123: ".TSWP.SetObjectPropertiesCommandArchive", + 2124: ".TSWP.UpdateFlowInfoCommandArchive", + 2125: ".TSWP.AddFlowInfoCommandArchive", + 2126: ".TSWP.RemoveFlowInfoCommandArchive", + 2127: ".TSWP.ContainedObjectsCommandArchive", + 2128: ".TSWP.EquationInfoGeometryCommandArchive", + 2206: ".TSWP.AnchorAttachmentCommandArchive", + 2217: ".TSWP.TextCommentReplyCommandArchive", + 2231: ".TSWP.ShapeApplyPresetCommandArchive", + 2240: ".TSWP.TOCInfoArchive", + 2241: ".TSWP.TOCAttachmentArchive", + 2242: ".TSWP.TOCLayoutHintArchive", + 2400: ".TSWP.StyleBaseCommandArchive", + 2401: ".TSWP.StyleCreateCommandArchive", + 2402: ".TSWP.StyleRenameCommandArchive", + 2404: ".TSWP.StyleDeleteCommandArchive", + 2405: ".TSWP.StyleReorderCommandArchive", + 2406: ".TSWP.StyleUpdatePropertyMapCommandArchive", + 2407: ".TSWP.StorageActionCommandArchive", + 2408: ".TSWP.ShapeStyleSetValueCommandArchive", + 2409: ".TSWP.HyperlinkSelectionArchive", + 2410: ".TSWP.FlowInfoArchive", + 2411: ".TSWP.FlowInfoContainerArchive", + 2412: ".TSWP.PencilAnnotationSelectionTransformerArchive", + 3002: ".TSD.DrawableArchive", + 3003: ".TSD.ContainerArchive", + 3004: ".TSD.ShapeArchive", + 3005: ".TSD.ImageArchive", + 3006: ".TSD.MaskArchive", + 3007: ".TSD.MovieArchive", + 3008: ".TSD.GroupArchive", + 3009: ".TSD.ConnectionLineArchive", + 3015: ".TSD.ShapeStyleArchive", + 3016: ".TSD.MediaStyleArchive", + 3021: ".TSD.InfoGeometryCommandArchive", + 3022: ".TSD.DrawablePathSourceCommandArchive", + 3024: ".TSD.ImageMaskCommandArchive", + 3025: ".TSD.ImageMediaCommandArchive", + 3026: ".TSD.ImageReplaceCommandArchive", + 3027: ".TSD.MediaOriginalSizeCommandArchive", + 3028: ".TSD.ShapeStyleSetValueCommandArchive", + 3030: ".TSD.MediaStyleSetValueCommandArchive", + 3031: ".TSD.ShapeApplyPresetCommandArchive", + 3032: ".TSD.MediaApplyPresetCommandArchive", + 3034: ".TSD.MovieSetValueCommandArchive", + 3036: ".TSD.ExteriorTextWrapCommandArchive", + 3037: ".TSD.MediaFlagsCommandArchive", + 3040: ".TSD.DrawableHyperlinkCommandArchive", + 3041: ".TSD.ConnectionLineConnectCommandArchive", + 3042: ".TSD.InstantAlphaCommandArchive", + 3043: ".TSD.DrawableLockCommandArchive", + 3044: ".TSD.ImageNaturalSizeCommandArchive", + 3045: ".TSD.CanvasSelectionArchive", + 3047: ".TSD.GuideStorageArchive", + 3048: ".TSD.StyledInfoSetStyleCommandArchive", + 3049: ".TSD.DrawableInfoCommentCommandArchive", + 3050: ".TSD.GuideCommandArchive", + 3051: ".TSD.DrawableAspectRatioLockedCommandArchive", + 3052: ".TSD.ContainerRemoveChildrenCommandArchive", + 3053: ".TSD.ContainerInsertChildrenCommandArchive", + 3054: ".TSD.ContainerReorderChildrenCommandArchive", + 3055: ".TSD.ImageAdjustmentsCommandArchive", + 3056: ".TSD.CommentStorageArchive", + 3057: ".TSD.ThemeReplaceFillPresetCommandArchive", + 3058: ".TSD.DrawableAccessibilityDescriptionCommandArchive", + 3059: ".TSD.PasteStyleCommandArchive", + 3061: ".TSD.DrawableSelectionArchive", + 3062: ".TSD.GroupSelectionArchive", + 3063: ".TSD.PathSelectionArchive", + 3064: ".TSD.CommentInvalidatingCommandSelectionBehaviorArchive", + 3065: ".TSD.ImageInfoAbstractGeometryCommandArchive", + 3066: ".TSD.ImageInfoGeometryCommandArchive", + 3067: ".TSD.ImageInfoMaskGeometryCommandArchive", + 3068: ".TSD.UndoObjectArchive", + 3070: ".TSD.ReplaceAnnotationAuthorCommandArchive", + 3071: ".TSD.DrawableSelectionTransformerArchive", + 3072: ".TSD.GroupSelectionTransformerArchive", + 3073: ".TSD.ShapeSelectionTransformerArchive", + 3074: ".TSD.PathSelectionTransformerArchive", + 3080: ".TSD.MediaInfoGeometryCommandArchive", + 3082: ".TSD.GroupUngroupInformativeCommandArchive", + 3083: ".TSD.DrawableContentDescription", + 3084: ".TSD.ContainerRemoveDrawablesCommandArchive", + 3085: ".TSD.ContainerInsertDrawablesCommandArchive", + 3086: ".TSD.PencilAnnotationArchive", + 3087: ".TSD.FreehandDrawingOpacityCommandArchive", + 3088: ".TSD.DrawablePencilAnnotationCommandArchive", + 3089: ".TSD.PencilAnnotationSelectionArchive", + 3090: ".TSD.FreehandDrawingContentDescription", + 3091: ".TSD.FreehandDrawingToolkitUIState", + 3092: ".TSD.PencilAnnotationSelectionTransformerArchive", + 3094: ".TSD.FreehandDrawingAnimationCommandArchive", + 3095: ".TSD.InsertCaptionOrTitleCommandArchive", + 3096: ".TSD.RemoveCaptionOrTitleCommandArchive", + 3097: ".TSD.StandinCaptionArchive", + 3098: ".TSD.SetCaptionOrTitleVisibilityCommandArchive", + 4000: ".TSCE.CalculationEngineArchive", + 4001: ".TSCE.FormulaRewriteCommandArchive", + 4003: ".TSCE.NamedReferenceManagerArchive", + 4004: ".TSCE.TrackedReferenceStoreArchive", + 4005: ".TSCE.TrackedReferenceArchive", + 4007: ".TSCE.RemoteDataStoreArchive", + 4008: ".TSCE.FormulaOwnerDependenciesArchive", + 4009: ".TSCE.CellRecordTileArchive", + 4010: ".TSCE.RangePrecedentsTileArchive", + 4011: ".TSCE.ReferencesToDirtyArchive", + 5000: ".TSCH.PreUFF.ChartInfoArchive", + 5002: ".TSCH.PreUFF.ChartGridArchive", + 5004: ".TSCH.ChartMediatorArchive", + 5010: ".TSCH.PreUFF.ChartStyleArchive", + 5011: ".TSCH.PreUFF.ChartSeriesStyleArchive", + 5012: ".TSCH.PreUFF.ChartAxisStyleArchive", + 5013: ".TSCH.PreUFF.LegendStyleArchive", + 5014: ".TSCH.PreUFF.ChartNonStyleArchive", + 5015: ".TSCH.PreUFF.ChartSeriesNonStyleArchive", + 5016: ".TSCH.PreUFF.ChartAxisNonStyleArchive", + 5017: ".TSCH.PreUFF.LegendNonStyleArchive", + 5020: ".TSCH.ChartStylePreset", + 5021: ".TSCH.ChartDrawableArchive", + 5022: ".TSCH.ChartStyleArchive", + 5023: ".TSCH.ChartNonStyleArchive", + 5024: ".TSCH.LegendStyleArchive", + 5025: ".TSCH.LegendNonStyleArchive", + 5026: ".TSCH.ChartAxisStyleArchive", + 5027: ".TSCH.ChartAxisNonStyleArchive", + 5028: ".TSCH.ChartSeriesStyleArchive", + 5029: ".TSCH.ChartSeriesNonStyleArchive", + 5030: ".TSCH.ReferenceLineStyleArchive", + 5031: ".TSCH.ReferenceLineNonStyleArchive", + 5103: ".TSCH.CommandSetChartTypeArchive", + 5104: ".TSCH.CommandSetSeriesNameArchive", + 5105: ".TSCH.CommandSetCategoryNameArchive", + 5107: ".TSCH.CommandSetScatterFormatArchive", + 5108: ".TSCH.CommandSetLegendFrameArchive", + 5109: ".TSCH.CommandSetGridValueArchive", + 5110: ".TSCH.CommandSetGridDirectionArchive", + 5115: ".TSCH.CommandAddGridRowsArchive", + 5116: ".TSCH.CommandAddGridColumnsArchive", + 5118: ".TSCH.CommandMoveGridRowsArchive", + 5119: ".TSCH.CommandMoveGridColumnsArchive", + 5122: ".TSCH.CommandSetPieWedgeExplosion", + 5123: ".TSCH.CommandStyleSwapArchive", + 5125: ".TSCH.CommandChartApplyPreset", + 5126: ".TSCH.ChartCommandArchive", + 5127: ".TSCH.CommandReplaceGridValuesArchive", + 5129: ".TSCH.StylePasteboardDataArchive", + 5130: ".TSCH.CommandSetMultiDataSetIndexArchive", + 5131: ".TSCH.CommandReplaceThemePresetArchive", + 5132: ".TSCH.CommandInvalidateWPCaches", + 5135: ".TSCH.CommandMutatePropertiesArchive", + 5136: ".TSCH.CommandScaleAllTextArchive", + 5137: ".TSCH.CommandSetFontFamilyArchive", + 5138: ".TSCH.CommandApplyFillSetArchive", + 5139: ".TSCH.CommandReplaceCustomFormatArchive", + 5140: ".TSCH.CommandAddReferenceLineArchive", + 5141: ".TSCH.CommandDeleteReferenceLineArchive", + 5142: ".TSCH.CommandDeleteGridColumnsArchive", + 5143: ".TSCH.CommandDeleteGridRowsArchive", + 5145: ".TSCH.ChartSelectionArchive", + 5146: ".TSCH.ChartTextSelectionTransformerArchive", + 5147: ".TSCH.ChartSubselectionTransformerArchive", + 5148: ".TSCH.ChartDrawableSelectionTransformerArchive", + 5149: ".TSCH.ChartSubselectionTransformerHelperArchive", + 5150: ".TSCH.ChartRefLineSubselectionTransformerHelperArchive", + 5151: ".TSCH.CDESelectionTransformerArchive", + 5152: ".TSCH.ChartSubselectionIdentityTransformerHelperArchive", + 5154: ".TSCH.CommandPasteStyleArchive", + 5155: ".TSCH.CommandInducedReplaceChartGrid", + 5156: ".TSCH.CommandReplaceImageDataArchive", + 5157: ".TSCH.CommandInduced3DChartGeometry", + 6000: ".TST.TableInfoArchive", + 6001: ".TST.TableModelArchive", + 6002: ".TST.Tile", + 6003: ".TST.TableStyleArchive", + 6004: ".TST.CellStyleArchive", + 6005: ".TST.TableDataList", + 6006: ".TST.HeaderStorageBucket", + 6007: ".TST.WPTableInfoArchive", + 6008: ".TST.TableStylePresetArchive", + 6009: ".TST.TableStrokePresetArchive", + 6010: ".TST.ConditionalStyleSetArchive", + 6011: ".TST.TableDataListSegment", + 6030: ".TST.SelectionArchive", + 6031: ".TST.CellMapArchive", + 6032: ".TST.DeathhawkRdar39989167CellSelectionArchive", + 6033: ".TST.ConcurrentCellMapArchive", + 6034: ".TST.ConcurrentCellListArchive", + 6100: ".TST.TableCommandArchive", + 6101: ".TST.CommandDeleteCellsArchive", + 6102: ".TST.CommandInsertColumnsOrRowsArchive", + 6103: ".TST.CommandRemoveColumnsOrRowsArchive", + 6104: ".TST.CommandResizeColumnOrRowArchive", + 6107: ".TST.CommandSetTableNameArchive", + 6111: ".TST.CommandChangeFreezeHeaderStateArchive", + 6114: ".TST.CommandSetTableNameEnabledArchive", + 6117: ".TST.CommandApplyTableStylePresetArchive", + 6120: ".TST.CommandSetRepeatingHeaderEnabledArchive", + 6123: ".TST.CommandSortArchive", + 6125: ".TST.CommandStyleTableArchive", + 6126: ".TST.CommandSetNumberOfDecimalPlacesArchive", + 6127: ".TST.CommandSetShowThousandsSeparatorArchive", + 6128: ".TST.CommandSetNegativeNumberStyleArchive", + 6129: ".TST.CommandSetFractionAccuracyArchive", + 6131: ".TST.CommandSetCurrencyCodeArchive", + 6132: ".TST.CommandSetUseAccountingStyleArchive", + 6136: ".TST.CommandSetTableFontNameArchive", + 6137: ".TST.CommandSetTableFontSizeArchive", + 6142: ".TST.CommandSetTableNameHeightArchive", + 6144: ".TST.MergeRegionMapArchive", + 6145: ".TST.CommandHideShowArchive", + 6146: ".TST.CommandSetBaseArchive", + 6147: ".TST.CommandSetBasePlacesArchive", + 6148: ".TST.CommandSetBaseUseMinusSignArchive", + 6149: ".TST.CommandSetTextStylePropertiesArchive", + 6150: ".TST.CommandCategoryChangeSummaryAggregateType", + 6152: ".TST.CommandCategoryResizeColumnOrRowArchive", + 6153: ".TST.CommandCategoryMoveRowsArchive", + 6156: ".TST.CommandSetPencilAnnotationsArchive", + 6157: ".TST.CommandCategoryWillChangeGroupValue", + 6158: ".TST.CommandApplyConcurrentCellMapArchive", + 6159: ".TST.CommandSetGroupSortOrderArchive", + 6179: ".TST.FormulaEqualsTokenAttachmentArchive", + 6181: ".TST.TokenAttachmentArchive", + 6182: ".TST.ExpressionNodeArchive", + 6183: ".TST.BooleanNodeArchive", + 6184: ".TST.NumberNodeArchive", + 6185: ".TST.StringNodeArchive", + 6186: ".TST.ArrayNodeArchive", + 6187: ".TST.ListNodeArchive", + 6188: ".TST.OperatorNodeArchive", + 6189: ".TST.FunctionNodeArchive", + 6190: ".TST.DateNodeArchive", + 6191: ".TST.ReferenceNodeArchive", + 6192: ".TST.DurationNodeArchive", + 6193: ".TST.ArgumentPlaceholderNodeArchive", + 6194: ".TST.PostfixOperatorNodeArchive", + 6195: ".TST.PrefixOperatorNodeArchive", + 6196: ".TST.FunctionEndNodeArchive", + 6197: ".TST.EmptyExpressionNodeArchive", + 6198: ".TST.LayoutHintArchive", + 6199: ".TST.CompletionTokenAttachmentArchive", + 6201: ".TST.TableDataList", + 6204: ".TST.HiddenStateFormulaOwnerArchive", + 6205: ".TST.CommandSetAutomaticDurationUnitsArchive", + 6206: ".TST.PopUpMenuModel", + 6218: ".TST.RichTextPayloadArchive", + 6220: ".TST.FilterSetArchive", + 6221: ".TST.CommandSetFiltersEnabledArchive", + 6224: ".TST.CommandRewriteFilterFormulasForTableResizeArchive", + 6226: ".TST.CommandTextPreflightInsertCellArchive", + 6228: ".TST.CommandDeleteCellContentsArchive", + 6229: ".TST.CommandPostflightSetCellArchive", + 6235: ".TST.IdentifierNodeArchive", + 6238: ".TST.CommandSetDateTimeFormatArchive", + 6239: ".TST.TableCommandSelectionBehaviorArchive", + 6244: ".TST.CommandApplyCellCommentArchive", + 6246: ".TST.CommandSetFormulaTokenizationArchive", + 6247: ".TST.TableStyleNetworkArchive", + 6250: ".TST.CommandSetFilterSetTypeArchive", + 6255: ".TST.CommandSetTextStyleArchive", + 6256: ".TST.CommandJustForNotifyingArchive", + 6258: ".TST.CommandSetSortOrderArchive", + 6262: ".TST.CommandAddTableStylePresetArchive", + 6264: ".TST.CellDiffMapArchive", + 6265: ".TST.CommandApplyCellContentsArchive", + 6266: ".TST.CommandRemoveTableStylePresetArchive", + 6267: ".TST.ColumnRowUIDMapArchive", + 6268: ".TST.CommandMoveColumnsOrRowsArchive", + 6269: ".TST.CommandReplaceCustomFormatArchive", + 6270: ".TST.CommandReplaceTableStylePresetArchive", + 6271: ".TST.FormulaSelectionArchive", + 6273: ".TST.CellListArchive", + 6275: ".TST.CommandApplyCellDiffMapArchive", + 6276: ".TST.CommandSetFilterSetArchive", + 6277: ".TST.CommandMutateCellFormatArchive", + 6278: ".TST.CommandSetStorageLanguageArchive", + 6280: ".TST.CommandMergeArchive", + 6281: ".TST.CommandUnmergeArchive", + 6282: ".TST.CommandApplyCellMapArchive", + 6283: ".TST.ControlCellSelectionArchive", + 6284: ".TST.TableNameSelectionArchive", + 6285: ".TST.CommandRewriteFormulasForTransposeArchive", + 6287: ".TST.CommandTransposeTableArchive", + 6289: ".TST.CommandSetDurationStyleArchive", + 6290: ".TST.CommandSetDurationUnitSmallestLargestArchive", + 6291: ".TST.CommandRewriteTableFormulasForRewriteSpecArchive", + 6292: ".TST.CommandRewriteConditionalStylesForRewriteSpecArchive", + 6293: ".TST.CommandRewriteFilterFormulasForRewriteSpecArchive", + 6294: ".TST.CommandRewriteSortOrderForRewriteSpecArchive", + 6295: ".TST.StrokeSelectionArchive", + 6297: ".TST.LetNodeArchive", + 6298: ".TST.VariableNodeArchive", + 6299: ".TST.InNodeArchive", + 6300: ".TST.CommandInverseMergeArchive", + 6301: ".TST.CommandMoveCellsArchive", + 6302: ".TST.DefaultCellStylesContainerArchive", + 6303: ".TST.CommandRewriteMergeFormulasArchive", + 6304: ".TST.CommandChangeTableAreaForColumnOrRowArchive", + 6305: ".TST.StrokeSidecarArchive", + 6306: ".TST.StrokeLayerArchive", + 6307: ".TST.CommandChooseTableIdRemapperArchive", + 6310: ".TST.CommandSetWasCutArchive", + 6311: ".TST.AutofillSelectionArchive", + 6312: ".TST.StockCellSelectionArchive", + 6313: ".TST.CommandSetNowArchive", + 6314: ".TST.CommandSetStructuredTextImportRecordArchive", + 6315: ".TST.CommandRewriteCategoryFormulasArchive", + 6316: ".TST.SummaryModelArchive", + 6317: ".TST.SummaryCellVendorArchive", + 6318: ".TST.CategoryOrderArchive", + 6320: ".TST.CommandCategoryCollapseExpandGroupArchive", + 6321: ".TST.CommandCategorySetGroupingColumnsArchive", + 6323: ".TST.CommandRewriteHiddenStatesForGroupByChangeArchive", + 6350: ".TST.IdempotentSelectionTransformerArchive", + 6351: ".TST.TableSubSelectionTransformerBaseArchive", + 6352: ".TST.TableNameSelectionTransformerArchive", + 6353: ".TST.RegionSelectionTransformerArchive", + 6354: ".TST.RowColumnSelectionTransformerArchive", + 6355: ".TST.ControlCellSelectionTransformerArchive", + 6357: ".TST.ChangePropagationMapWrapper", + 6358: ".TST.WPSelectionTransformerArchive", + 6359: ".TST.StockCellSelectionTransformerArchive", + 6360: ".TST.CommandSetRangeControlMinMaxIncArchive", + 6361: ".TST.CommandCategorySetLabelRowVisibility", + 6362: ".TST.CommandRewritePencilAnnotationFormulasArchive", + 6363: ".TST.PencilAnnotationArchive", + 6364: ".TST.StrokeSelectionTransformerArchive", + 6365: ".TST.HeaderNameMgrTileArchive", + 6366: ".TST.HeaderNameMgrArchive", + 6367: ".TST.CellDiffArray", + 6368: ".TST.CellDiffArraySegment", + 6369: ".TST.PivotOrderArchive", + 6370: ".TST.PivotOwnerArchive", + 6371: ".TST.CommandPivotSetPivotRulesArchive", + 6372: ".TST.CategoryOwnerRefArchive", + 6373: ".TST.GroupByArchive", + 6374: ".TST.PivotGroupingColumnOptionsMapArchive", + 6375: ".TST.CommandPivotSetGroupingColumnOptionsArchive", + 6376: ".TST.CommandPivotHideShowGrandTotalsArchive", + 6377: ".TST.CommandPivotSortArchive", + 6379: ".TST.CommandRewritePivotOwnerFormulasArchive", + 6380: ".TST.CommandRewriteTrackedReferencesArchive", + 6381: ".TST.CommandExtendTableIDHistoryArchive", + 6382: ".TST.GroupByArchive.AggregatorArchive", + 6383: ".TST.GroupByArchive.GroupNodeArchive", + 10011: ".TSWP.SectionPlaceholderArchive", + 10020: ".TSWP.ShapeSelectionTransformerArchive", + 10021: ".TSWP.SelectionTransformerArchive", + 10022: ".TSWP.ShapeContentDescription", + 10023: ".TSWP.TateChuYokoFieldArchive", + 10024: ".TSWP.DropCapStyleArchive", + 11000: ".TSP.PasteboardObject", + 11006: ".TSP.PackageMetadata", + 11007: ".TSP.PasteboardMetadata", + 11008: ".TSP.ObjectContainer", + 11009: ".TSP.ViewStateMetadata", + 11010: ".TSP.ObjectCollection", + 11011: ".TSP.DocumentMetadata", + 11012: ".TSP.SupportMetadata", + 11013: ".TSP.ObjectSerializationMetadata", + 11014: ".TSP.DataMetadata", + 11015: ".TSP.DataMetadataMap", + 11016: ".TSP.LargeNumberArraySegment", + 11017: ".TSP.LargeStringArraySegment", + 11018: ".TSP.LargeLazyObjectArraySegment", + 11019: ".TSP.LargeNumberArray", + 11020: ".TSP.LargeStringArray", + 11021: ".TSP.LargeLazyObjectArray", + 11024: ".TSP.LargeUUIDArraySegment", + 11025: ".TSP.LargeUUIDArray", + 11026: ".TSP.LargeObjectArraySegment", + 11027: ".TSP.LargeObjectArray", + 12002: ".TN.CommandSheetInsertDrawablesArchive", + 12003: ".TN.CommandDocumentInsertSheetArchive", + 12004: ".TN.CommandDocumentRemoveSheetArchive", + 12005: ".TN.CommandSetSheetNameArchive", + 12006: ".TN.ChartMediatorArchive", + 12008: ".TN.CommandDocumentReorderSheetArchive", + 12009: ".TN.ThemeArchive", + 12012: ".TN.CommandSheetRemoveDrawablesArchive", + 12013: ".TN.CommandSheetMoveDrawableZOrderArchive", + 12014: ".TN.CommandChartMediatorSetEditingState", + 12015: ".TN.CommandFormChooseTargetTableArchive", + 12017: ".TN.CommandSetPageOrientationArchive", + 12018: ".TN.CommandSetContentScaleArchive", + 12026: ".TN.UIStateArchive", + 12028: ".TN.SheetSelectionArchive", + 12030: ".TN.CommandSetDocumentPaperSize", + 12031: ".TN.CommandSetPrinterMarginsArchive", + 12032: ".TN.CommandSetHeaderFooterInsetsArchive", + 12033: ".TN.CommandSetPageOrderArchive", + 12034: ".TN.CommandSetUsingStartPageNumberArchive", + 12035: ".TN.CommandSetStartPageNumberArchive", + 12036: ".TN.ChartSelectionArchive", + 12037: ".TN.CommandChartMediatorSetGridDirection", + 12038: ".TN.CommandChartMediatorSetFormula", + 12039: ".TN.CommandChartMediatorSetSeriesOrder", + 12040: ".TN.FormSelectionArchive", + 12041: ".TN.DocumentSelectionTransformerArchive", + 12042: ".TN.SheetSelectionTransformerArchive", + 12043: ".TN.CommandInducedSheetChangeArchive", + 12044: ".TNSOS.InducedVerifyDocumentWithServerCommandArchive", + 12045: ".TNSOS.InducedVerifyDrawableZOrdersWithServerCommandArchive", + 12046: ".TN.PasteboardNativeStorageArchive", + 12047: ".TN.CanvasSelectionTransformerArchive", + 12048: ".TN.CommandSetSheetDirectionArchive", + 12049: ".TN.CommandSetSheetShouldPrintCommentsArchive", + 12050: ".TN.SheetStyleArchive", + 12051: ".TN.CommandSheetSetBackgroundFillArchive", + 12052: ".TN.CommandSetPrintBackgroundsArchive", + 12053: ".TN.FormBuilderSelectionArchive", + 12054: ".TN.FormTableChooserSelectionArchive", + 12055: ".TN.FormTableChooserSelectionTransformerArchive", + 12056: ".TN.FormBuilderSelectionTransformerArchive", + 12057: ".TN.FormViewerSelectionTransformerArchive", + 12058: ".TN.FormSheetSelectionTransformerArchive", + 12059: ".TN.FormCommandActivityBehaviorArchive", +} as {[key: number]: string}; diff --git a/src/messages/pages.ts b/src/messages/pages.ts new file mode 100644 index 0000000..a5c5f26 --- /dev/null +++ b/src/messages/pages.ts @@ -0,0 +1,582 @@ +export default { + 7: ".TP.PlaceholderArchive", + 200: ".TSK.DocumentArchive", + 201: ".TSK.LocalCommandHistory", + 202: ".TSK.CommandGroupArchive", + 203: ".TSK.CommandContainerArchive", + 205: ".TSK.TreeNode", + 210: ".TSK.ViewStateArchive", + 211: ".TSK.DocumentSupportArchive", + 212: ".TSK.AnnotationAuthorArchive", + 213: ".TSK.AnnotationAuthorStorageArchive", + 215: ".TSK.SetAnnotationAuthorColorCommandArchive", + 218: ".TSK.CollaborationCommandHistory", + 219: ".TSK.DocumentSelectionArchive", + 220: ".TSK.CommandSelectionBehaviorArchive", + 221: ".TSK.NullCommandArchive", + 222: ".TSK.CustomFormatListArchive", + 223: ".TSK.GroupCommitCommandArchive", + 224: ".TSK.InducedCommandCollectionArchive", + 225: ".TSK.InducedCommandCollectionCommitCommandArchive", + 226: ".TSK.CollaborationDocumentSessionState", + 227: ".TSK.CollaborationCommandHistoryCoalescingGroup", + 228: ".TSK.CollaborationCommandHistoryCoalescingGroupNode", + 229: ".TSK.CollaborationCommandHistoryOriginatingCommandAcknowledgementObserver", + 230: ".TSK.DocumentSupportCollaborationState", + 231: ".TSK.ChangeDocumentPackageTypeCommandArchive", + 232: ".TSK.UpgradeDocPostProcessingCommandArchive", + 233: ".TSK.FinalCommandPairArchive", + 234: ".TSK.OutgoingCommandQueueItem", + 235: ".TSK.TransformerEntry", + 238: ".TSK.CreateLocalStorageSnapshotCommandArchive", + 240: ".TSK.SelectionPathTransformerArchive", + 241: ".TSK.NativeContentDescription", + 242: ".TSD.PencilAnnotationStorageArchive", + 245: ".TSK.OperationStorage", + 246: ".TSK.OperationStorageEntryArray", + 247: ".TSK.OperationStorageEntryArraySegment", + 248: ".TSK.BlockDiffsAtCurrentRevisionCommand", + 249: ".TSK.OutgoingCommandQueue", + 250: ".TSK.OutgoingCommandQueueSegment", + 251: ".TSK.PropagatedCommandCollectionArchive", + 252: ".TSK.LocalCommandHistoryItem", + 253: ".TSK.LocalCommandHistoryArray", + 254: ".TSK.LocalCommandHistoryArraySegment", + 255: ".TSK.CollaborationCommandHistoryItem", + 256: ".TSK.CollaborationCommandHistoryArray", + 257: ".TSK.CollaborationCommandHistoryArraySegment", + 258: ".TSK.PencilAnnotationUIState", + 259: ".TSKSOS.FixCorruptedDataCommandArchive", + 260: ".TSK.CommandAssetChunkArchive", + 261: ".TSK.AssetUploadStatusCommandArchive", + 262: ".TSK.AssetUnmaterializedOnServerCommandArchive", + 263: ".TSK.CommandBehaviorArchive", + 264: ".TSK.CommandBehaviorSelectionPathStorageArchive", + 265: ".TSK.CommandActivityBehaviorArchive", + 273: ".TSK.ActivityOnlyCommandArchive", + 275: ".TSK.SetActivityAuthorShareParticipantIDCommandArchive", + 279: ".TSK.ActivityAuthorCacheArchive", + 280: ".TSK.ActivityStreamArchive", + 281: ".TSK.ActivityArchive", + 282: ".TSK.ActivityCommitCommandArchive", + 283: ".TSK.ActivityStreamActivityArray", + 284: ".TSK.ActivityStreamActivityArraySegment", + 285: ".TSK.ActivityStreamRemovedAuthorAuditorPendingStateArchive", + 286: ".TSK.ActivityAuthorArchive", + 287: ".TSKSOS.ResetActivityStreamCommandArchive", + 288: ".TSKSOS.RemoveAuthorIdentifiersCommandArchive", + 289: ".TSK.ActivityCursorCollectionPersistenceWrapperArchive", + 400: ".TSS.StyleArchive", + 401: ".TSS.StylesheetArchive", + 402: ".TSS.ThemeArchive", + 412: ".TSS.StyleUpdatePropertyMapCommandArchive", + 413: ".TSS.ThemeReplacePresetCommandArchive", + 414: ".TSS.ThemeAddStylePresetCommandArchive", + 415: ".TSS.ThemeRemoveStylePresetCommandArchive", + 416: ".TSS.ThemeReplaceColorPresetCommandArchive", + 417: ".TSS.ThemeMovePresetCommandArchive", + 419: ".TSS.ThemeReplaceStylePresetAndDisconnectStylesCommandArchive", + 600: ".TSA.DocumentArchive", + 601: ".TSA.FunctionBrowserStateArchive", + 602: ".TSA.PropagatePresetCommandArchive", + 603: ".TSA.ShortcutControllerArchive", + 604: ".TSA.ShortcutCommandArchive", + 605: ".TSA.AddCustomFormatCommandArchive", + 606: ".TSA.UpdateCustomFormatCommandArchive", + 607: ".TSA.ReplaceCustomFormatCommandArchive", + 611: ".TSASOS.VerifyObjectsWithServerCommandArchive", + 612: ".TSA.InducedVerifyObjectsWithServerCommandArchive", + 613: ".TSASOS.VerifyDocumentWithServerCommandArchive", + 614: ".TSASOS.VerifyDrawableZOrdersWithServerCommandArchive", + 615: ".TSASOS.InducedVerifyDrawableZOrdersWithServerCommandArchive", + 616: ".TSA.NeedsMediaCompatibilityUpgradeCommandArchive", + 617: ".TSA.ChangeDocumentLocaleCommandArchive", + 618: ".TSA.StyleUpdatePropertyMapCommandArchive", + 619: ".TSA.RemoteDataChangeCommandArchive", + 623: ".TSA.GalleryItem", + 624: ".TSA.GallerySelectionTransformer", + 625: ".TSA.GalleryItemSelection", + 626: ".TSA.GalleryItemSelectionTransformer", + 627: ".TSA.GalleryInfoSetValueCommandArchive", + 628: ".TSA.GalleryItemSetGeometryCommand", + 629: ".TSA.GalleryItemSetValueCommand", + 630: ".TSA.InducedVerifyTransformHistoryWithServerCommandArchive", + 631: ".TSASOS.CommandReapplyMasterArchive", + 632: ".TSASOS.PropagateMasterChangeCommandArchive", + 633: ".TSA.CaptionInfoArchive", + 634: ".TSA.CaptionPlacementArchive", + 635: ".TSA.TitlePlacementCommandArchive", + 636: ".TSA.GalleryInfoInsertItemsCommandArchive", + 637: ".TSA.GalleryInfoRemoveItemsCommandArchive", + 638: ".TSASOS.VerifyActivityStreamWithServerCommandArchive", + 639: ".TSASOS.InducedVerifyActivityStreamWithServerCommandArchive", + 2001: ".TSWP.StorageArchive", + 2002: ".TSWP.SelectionArchive", + 2003: ".TSWP.DrawableAttachmentArchive", + 2004: ".TSWP.TextualAttachmentArchive", + 2005: ".TSWP.StorageArchive", + 2006: ".TSWP.UIGraphicalAttachment", + 2007: ".TSWP.TextualAttachmentArchive", + 2008: ".TSWP.FootnoteReferenceAttachmentArchive", + 2009: ".TSWP.TextualAttachmentArchive", + 2010: ".TSWP.TSWPTOCPageNumberAttachmentArchive", + 2011: ".TSWP.ShapeInfoArchive", + 2013: ".TSWP.HighlightArchive", + 2014: ".TSWP.CommentInfoArchive", + 2015: ".TSWP.EquationInfoArchive", + 2016: ".TSWP.PencilAnnotationArchive", + 2021: ".TSWP.CharacterStyleArchive", + 2022: ".TSWP.ParagraphStyleArchive", + 2023: ".TSWP.ListStyleArchive", + 2024: ".TSWP.ColumnStyleArchive", + 2025: ".TSWP.ShapeStyleArchive", + 2026: ".TSWP.TOCEntryStyleArchive", + 2031: ".TSWP.PlaceholderSmartFieldArchive", + 2032: ".TSWP.HyperlinkFieldArchive", + 2033: ".TSWP.FilenameSmartFieldArchive", + 2034: ".TSWP.DateTimeSmartFieldArchive", + 2035: ".TSWP.BookmarkFieldArchive", + 2036: ".TSWP.MergeSmartFieldArchive", + 2037: ".TSWP.CitationRecordArchive", + 2038: ".TSWP.CitationSmartFieldArchive", + 2039: ".TSWP.UnsupportedHyperlinkFieldArchive", + 2040: ".TSWP.BibliographySmartFieldArchive", + 2041: ".TSWP.TOCSmartFieldArchive", + 2042: ".TSWP.RubyFieldArchive", + 2043: ".TSWP.NumberAttachmentArchive", + 2050: ".TSWP.TextStylePresetArchive", + 2051: ".TSWP.TOCSettingsArchive", + 2052: ".TSWP.TOCEntryInstanceArchive", + 2053: ".TSWPSOS.StyleDiffArchive", + 2060: ".TSWP.ChangeArchive", + 2061: ".TSK.DeprecatedChangeAuthorArchive", + 2062: ".TSWP.ChangeSessionArchive", + 2101: ".TSWP.TextCommandArchive", + 2107: ".TSWP.ApplyPlaceholderTextCommandArchive", + 2116: ".TSWP.ApplyRubyTextCommandArchive", + 2118: ".TSWP.ModifyRubyTextCommandArchive", + 2119: ".TSWP.UpdateDateTimeFieldCommandArchive", + 2120: ".TSWP.ModifyTOCSettingsBaseCommandArchive", + 2121: ".TSWP.ModifyTOCSettingsForTOCInfoCommandArchive", + 2123: ".TSWP.SetObjectPropertiesCommandArchive", + 2124: ".TSWP.UpdateFlowInfoCommandArchive", + 2125: ".TSWP.AddFlowInfoCommandArchive", + 2126: ".TSWP.RemoveFlowInfoCommandArchive", + 2127: ".TSWP.ContainedObjectsCommandArchive", + 2128: ".TSWP.EquationInfoGeometryCommandArchive", + 2206: ".TSWP.AnchorAttachmentCommandArchive", + 2217: ".TSWP.TextCommentReplyCommandArchive", + 2231: ".TSWP.ShapeApplyPresetCommandArchive", + 2240: ".TSWP.TOCInfoArchive", + 2241: ".TSWP.TOCAttachmentArchive", + 2242: ".TSWP.TOCLayoutHintArchive", + 2400: ".TSWP.StyleBaseCommandArchive", + 2401: ".TSWP.StyleCreateCommandArchive", + 2402: ".TSWP.StyleRenameCommandArchive", + 2404: ".TSWP.StyleDeleteCommandArchive", + 2405: ".TSWP.StyleReorderCommandArchive", + 2406: ".TSWP.StyleUpdatePropertyMapCommandArchive", + 2407: ".TSWP.StorageActionCommandArchive", + 2408: ".TSWP.ShapeStyleSetValueCommandArchive", + 2409: ".TSWP.HyperlinkSelectionArchive", + 2410: ".TSWP.FlowInfoArchive", + 2411: ".TSWP.FlowInfoContainerArchive", + 2412: ".TSWP.PencilAnnotationSelectionTransformerArchive", + 3002: ".TSD.DrawableArchive", + 3003: ".TSD.ContainerArchive", + 3004: ".TSD.ShapeArchive", + 3005: ".TSD.ImageArchive", + 3006: ".TSD.MaskArchive", + 3007: ".TSD.MovieArchive", + 3008: ".TSD.GroupArchive", + 3009: ".TSD.ConnectionLineArchive", + 3015: ".TSD.ShapeStyleArchive", + 3016: ".TSD.MediaStyleArchive", + 3021: ".TSD.InfoGeometryCommandArchive", + 3022: ".TSD.DrawablePathSourceCommandArchive", + 3024: ".TSD.ImageMaskCommandArchive", + 3025: ".TSD.ImageMediaCommandArchive", + 3026: ".TSD.ImageReplaceCommandArchive", + 3027: ".TSD.MediaOriginalSizeCommandArchive", + 3028: ".TSD.ShapeStyleSetValueCommandArchive", + 3030: ".TSD.MediaStyleSetValueCommandArchive", + 3031: ".TSD.ShapeApplyPresetCommandArchive", + 3032: ".TSD.MediaApplyPresetCommandArchive", + 3034: ".TSD.MovieSetValueCommandArchive", + 3036: ".TSD.ExteriorTextWrapCommandArchive", + 3037: ".TSD.MediaFlagsCommandArchive", + 3040: ".TSD.DrawableHyperlinkCommandArchive", + 3041: ".TSD.ConnectionLineConnectCommandArchive", + 3042: ".TSD.InstantAlphaCommandArchive", + 3043: ".TSD.DrawableLockCommandArchive", + 3044: ".TSD.ImageNaturalSizeCommandArchive", + 3045: ".TSD.CanvasSelectionArchive", + 3047: ".TSD.GuideStorageArchive", + 3048: ".TSD.StyledInfoSetStyleCommandArchive", + 3049: ".TSD.DrawableInfoCommentCommandArchive", + 3050: ".TSD.GuideCommandArchive", + 3051: ".TSD.DrawableAspectRatioLockedCommandArchive", + 3052: ".TSD.ContainerRemoveChildrenCommandArchive", + 3053: ".TSD.ContainerInsertChildrenCommandArchive", + 3054: ".TSD.ContainerReorderChildrenCommandArchive", + 3055: ".TSD.ImageAdjustmentsCommandArchive", + 3056: ".TSD.CommentStorageArchive", + 3057: ".TSD.ThemeReplaceFillPresetCommandArchive", + 3058: ".TSD.DrawableAccessibilityDescriptionCommandArchive", + 3059: ".TSD.PasteStyleCommandArchive", + 3061: ".TSD.DrawableSelectionArchive", + 3062: ".TSD.GroupSelectionArchive", + 3063: ".TSD.PathSelectionArchive", + 3064: ".TSD.CommentInvalidatingCommandSelectionBehaviorArchive", + 3065: ".TSD.ImageInfoAbstractGeometryCommandArchive", + 3066: ".TSD.ImageInfoGeometryCommandArchive", + 3067: ".TSD.ImageInfoMaskGeometryCommandArchive", + 3068: ".TSD.UndoObjectArchive", + 3070: ".TSD.ReplaceAnnotationAuthorCommandArchive", + 3071: ".TSD.DrawableSelectionTransformerArchive", + 3072: ".TSD.GroupSelectionTransformerArchive", + 3073: ".TSD.ShapeSelectionTransformerArchive", + 3074: ".TSD.PathSelectionTransformerArchive", + 3080: ".TSD.MediaInfoGeometryCommandArchive", + 3082: ".TSD.GroupUngroupInformativeCommandArchive", + 3083: ".TSD.DrawableContentDescription", + 3084: ".TSD.ContainerRemoveDrawablesCommandArchive", + 3085: ".TSD.ContainerInsertDrawablesCommandArchive", + 3086: ".TSD.PencilAnnotationArchive", + 3087: ".TSD.FreehandDrawingOpacityCommandArchive", + 3088: ".TSD.DrawablePencilAnnotationCommandArchive", + 3089: ".TSD.PencilAnnotationSelectionArchive", + 3090: ".TSD.FreehandDrawingContentDescription", + 3091: ".TSD.FreehandDrawingToolkitUIState", + 3092: ".TSD.PencilAnnotationSelectionTransformerArchive", + 3094: ".TSD.FreehandDrawingAnimationCommandArchive", + 3095: ".TSD.InsertCaptionOrTitleCommandArchive", + 3096: ".TSD.RemoveCaptionOrTitleCommandArchive", + 3097: ".TSD.StandinCaptionArchive", + 3098: ".TSD.SetCaptionOrTitleVisibilityCommandArchive", + 4000: ".TSCE.CalculationEngineArchive", + 4001: ".TSCE.FormulaRewriteCommandArchive", + 4003: ".TSCE.NamedReferenceManagerArchive", + 4004: ".TSCE.TrackedReferenceStoreArchive", + 4005: ".TSCE.TrackedReferenceArchive", + 4007: ".TSCE.RemoteDataStoreArchive", + 4008: ".TSCE.FormulaOwnerDependenciesArchive", + 4009: ".TSCE.CellRecordTileArchive", + 4010: ".TSCE.RangePrecedentsTileArchive", + 4011: ".TSCE.ReferencesToDirtyArchive", + 5000: ".TSCH.PreUFF.ChartInfoArchive", + 5002: ".TSCH.PreUFF.ChartGridArchive", + 5004: ".TSCH.ChartMediatorArchive", + 5010: ".TSCH.PreUFF.ChartStyleArchive", + 5011: ".TSCH.PreUFF.ChartSeriesStyleArchive", + 5012: ".TSCH.PreUFF.ChartAxisStyleArchive", + 5013: ".TSCH.PreUFF.LegendStyleArchive", + 5014: ".TSCH.PreUFF.ChartNonStyleArchive", + 5015: ".TSCH.PreUFF.ChartSeriesNonStyleArchive", + 5016: ".TSCH.PreUFF.ChartAxisNonStyleArchive", + 5017: ".TSCH.PreUFF.LegendNonStyleArchive", + 5020: ".TSCH.ChartStylePreset", + 5021: ".TSCH.ChartDrawableArchive", + 5022: ".TSCH.ChartStyleArchive", + 5023: ".TSCH.ChartNonStyleArchive", + 5024: ".TSCH.LegendStyleArchive", + 5025: ".TSCH.LegendNonStyleArchive", + 5026: ".TSCH.ChartAxisStyleArchive", + 5027: ".TSCH.ChartAxisNonStyleArchive", + 5028: ".TSCH.ChartSeriesStyleArchive", + 5029: ".TSCH.ChartSeriesNonStyleArchive", + 5030: ".TSCH.ReferenceLineStyleArchive", + 5031: ".TSCH.ReferenceLineNonStyleArchive", + 5103: ".TSCH.CommandSetChartTypeArchive", + 5104: ".TSCH.CommandSetSeriesNameArchive", + 5105: ".TSCH.CommandSetCategoryNameArchive", + 5107: ".TSCH.CommandSetScatterFormatArchive", + 5108: ".TSCH.CommandSetLegendFrameArchive", + 5109: ".TSCH.CommandSetGridValueArchive", + 5110: ".TSCH.CommandSetGridDirectionArchive", + 5115: ".TSCH.CommandAddGridRowsArchive", + 5116: ".TSCH.CommandAddGridColumnsArchive", + 5118: ".TSCH.CommandMoveGridRowsArchive", + 5119: ".TSCH.CommandMoveGridColumnsArchive", + 5122: ".TSCH.CommandSetPieWedgeExplosion", + 5123: ".TSCH.CommandStyleSwapArchive", + 5125: ".TSCH.CommandChartApplyPreset", + 5126: ".TSCH.ChartCommandArchive", + 5127: ".TSCH.CommandReplaceGridValuesArchive", + 5129: ".TSCH.StylePasteboardDataArchive", + 5130: ".TSCH.CommandSetMultiDataSetIndexArchive", + 5131: ".TSCH.CommandReplaceThemePresetArchive", + 5132: ".TSCH.CommandInvalidateWPCaches", + 5135: ".TSCH.CommandMutatePropertiesArchive", + 5136: ".TSCH.CommandScaleAllTextArchive", + 5137: ".TSCH.CommandSetFontFamilyArchive", + 5138: ".TSCH.CommandApplyFillSetArchive", + 5139: ".TSCH.CommandReplaceCustomFormatArchive", + 5140: ".TSCH.CommandAddReferenceLineArchive", + 5141: ".TSCH.CommandDeleteReferenceLineArchive", + 5142: ".TSCH.CommandDeleteGridColumnsArchive", + 5143: ".TSCH.CommandDeleteGridRowsArchive", + 5145: ".TSCH.ChartSelectionArchive", + 5146: ".TSCH.ChartTextSelectionTransformerArchive", + 5147: ".TSCH.ChartSubselectionTransformerArchive", + 5148: ".TSCH.ChartDrawableSelectionTransformerArchive", + 5149: ".TSCH.ChartSubselectionTransformerHelperArchive", + 5150: ".TSCH.ChartRefLineSubselectionTransformerHelperArchive", + 5151: ".TSCH.CDESelectionTransformerArchive", + 5152: ".TSCH.ChartSubselectionIdentityTransformerHelperArchive", + 5154: ".TSCH.CommandPasteStyleArchive", + 5155: ".TSCH.CommandInducedReplaceChartGrid", + 5156: ".TSCH.CommandReplaceImageDataArchive", + 5157: ".TSCH.CommandInduced3DChartGeometry", + 6000: ".TST.TableInfoArchive", + 6001: ".TST.TableModelArchive", + 6002: ".TST.Tile", + 6003: ".TST.TableStyleArchive", + 6004: ".TST.CellStyleArchive", + 6005: ".TST.TableDataList", + 6006: ".TST.HeaderStorageBucket", + 6007: ".TST.WPTableInfoArchive", + 6008: ".TST.TableStylePresetArchive", + 6009: ".TST.TableStrokePresetArchive", + 6010: ".TST.ConditionalStyleSetArchive", + 6011: ".TST.TableDataListSegment", + 6030: ".TST.SelectionArchive", + 6031: ".TST.CellMapArchive", + 6032: ".TST.DeathhawkRdar39989167CellSelectionArchive", + 6033: ".TST.ConcurrentCellMapArchive", + 6034: ".TST.ConcurrentCellListArchive", + 6100: ".TST.TableCommandArchive", + 6101: ".TST.CommandDeleteCellsArchive", + 6102: ".TST.CommandInsertColumnsOrRowsArchive", + 6103: ".TST.CommandRemoveColumnsOrRowsArchive", + 6104: ".TST.CommandResizeColumnOrRowArchive", + 6107: ".TST.CommandSetTableNameArchive", + 6111: ".TST.CommandChangeFreezeHeaderStateArchive", + 6114: ".TST.CommandSetTableNameEnabledArchive", + 6117: ".TST.CommandApplyTableStylePresetArchive", + 6120: ".TST.CommandSetRepeatingHeaderEnabledArchive", + 6123: ".TST.CommandSortArchive", + 6125: ".TST.CommandStyleTableArchive", + 6126: ".TST.CommandSetNumberOfDecimalPlacesArchive", + 6127: ".TST.CommandSetShowThousandsSeparatorArchive", + 6128: ".TST.CommandSetNegativeNumberStyleArchive", + 6129: ".TST.CommandSetFractionAccuracyArchive", + 6131: ".TST.CommandSetCurrencyCodeArchive", + 6132: ".TST.CommandSetUseAccountingStyleArchive", + 6136: ".TST.CommandSetTableFontNameArchive", + 6137: ".TST.CommandSetTableFontSizeArchive", + 6142: ".TST.CommandSetTableNameHeightArchive", + 6144: ".TST.MergeRegionMapArchive", + 6145: ".TST.CommandHideShowArchive", + 6146: ".TST.CommandSetBaseArchive", + 6147: ".TST.CommandSetBasePlacesArchive", + 6148: ".TST.CommandSetBaseUseMinusSignArchive", + 6149: ".TST.CommandSetTextStylePropertiesArchive", + 6150: ".TST.CommandCategoryChangeSummaryAggregateType", + 6152: ".TST.CommandCategoryResizeColumnOrRowArchive", + 6153: ".TST.CommandCategoryMoveRowsArchive", + 6156: ".TST.CommandSetPencilAnnotationsArchive", + 6157: ".TST.CommandCategoryWillChangeGroupValue", + 6158: ".TST.CommandApplyConcurrentCellMapArchive", + 6159: ".TST.CommandSetGroupSortOrderArchive", + 6179: ".TST.FormulaEqualsTokenAttachmentArchive", + 6181: ".TST.TokenAttachmentArchive", + 6182: ".TST.ExpressionNodeArchive", + 6183: ".TST.BooleanNodeArchive", + 6184: ".TST.NumberNodeArchive", + 6185: ".TST.StringNodeArchive", + 6186: ".TST.ArrayNodeArchive", + 6187: ".TST.ListNodeArchive", + 6188: ".TST.OperatorNodeArchive", + 6189: ".TST.FunctionNodeArchive", + 6190: ".TST.DateNodeArchive", + 6191: ".TST.ReferenceNodeArchive", + 6192: ".TST.DurationNodeArchive", + 6193: ".TST.ArgumentPlaceholderNodeArchive", + 6194: ".TST.PostfixOperatorNodeArchive", + 6195: ".TST.PrefixOperatorNodeArchive", + 6196: ".TST.FunctionEndNodeArchive", + 6197: ".TST.EmptyExpressionNodeArchive", + 6198: ".TST.LayoutHintArchive", + 6199: ".TST.CompletionTokenAttachmentArchive", + 6201: ".TST.TableDataList", + 6204: ".TST.HiddenStateFormulaOwnerArchive", + 6205: ".TST.CommandSetAutomaticDurationUnitsArchive", + 6206: ".TST.PopUpMenuModel", + 6218: ".TST.RichTextPayloadArchive", + 6220: ".TST.FilterSetArchive", + 6221: ".TST.CommandSetFiltersEnabledArchive", + 6224: ".TST.CommandRewriteFilterFormulasForTableResizeArchive", + 6226: ".TST.CommandTextPreflightInsertCellArchive", + 6228: ".TST.CommandDeleteCellContentsArchive", + 6229: ".TST.CommandPostflightSetCellArchive", + 6235: ".TST.IdentifierNodeArchive", + 6238: ".TST.CommandSetDateTimeFormatArchive", + 6239: ".TST.TableCommandSelectionBehaviorArchive", + 6244: ".TST.CommandApplyCellCommentArchive", + 6246: ".TST.CommandSetFormulaTokenizationArchive", + 6247: ".TST.TableStyleNetworkArchive", + 6250: ".TST.CommandSetFilterSetTypeArchive", + 6255: ".TST.CommandSetTextStyleArchive", + 6256: ".TST.CommandJustForNotifyingArchive", + 6258: ".TST.CommandSetSortOrderArchive", + 6262: ".TST.CommandAddTableStylePresetArchive", + 6264: ".TST.CellDiffMapArchive", + 6265: ".TST.CommandApplyCellContentsArchive", + 6266: ".TST.CommandRemoveTableStylePresetArchive", + 6267: ".TST.ColumnRowUIDMapArchive", + 6268: ".TST.CommandMoveColumnsOrRowsArchive", + 6269: ".TST.CommandReplaceCustomFormatArchive", + 6270: ".TST.CommandReplaceTableStylePresetArchive", + 6271: ".TST.FormulaSelectionArchive", + 6273: ".TST.CellListArchive", + 6275: ".TST.CommandApplyCellDiffMapArchive", + 6276: ".TST.CommandSetFilterSetArchive", + 6277: ".TST.CommandMutateCellFormatArchive", + 6278: ".TST.CommandSetStorageLanguageArchive", + 6280: ".TST.CommandMergeArchive", + 6281: ".TST.CommandUnmergeArchive", + 6282: ".TST.CommandApplyCellMapArchive", + 6283: ".TST.ControlCellSelectionArchive", + 6284: ".TST.TableNameSelectionArchive", + 6285: ".TST.CommandRewriteFormulasForTransposeArchive", + 6287: ".TST.CommandTransposeTableArchive", + 6289: ".TST.CommandSetDurationStyleArchive", + 6290: ".TST.CommandSetDurationUnitSmallestLargestArchive", + 6291: ".TST.CommandRewriteTableFormulasForRewriteSpecArchive", + 6292: ".TST.CommandRewriteConditionalStylesForRewriteSpecArchive", + 6293: ".TST.CommandRewriteFilterFormulasForRewriteSpecArchive", + 6294: ".TST.CommandRewriteSortOrderForRewriteSpecArchive", + 6295: ".TST.StrokeSelectionArchive", + 6297: ".TST.LetNodeArchive", + 6298: ".TST.VariableNodeArchive", + 6299: ".TST.InNodeArchive", + 6300: ".TST.CommandInverseMergeArchive", + 6301: ".TST.CommandMoveCellsArchive", + 6302: ".TST.DefaultCellStylesContainerArchive", + 6303: ".TST.CommandRewriteMergeFormulasArchive", + 6304: ".TST.CommandChangeTableAreaForColumnOrRowArchive", + 6305: ".TST.StrokeSidecarArchive", + 6306: ".TST.StrokeLayerArchive", + 6307: ".TST.CommandChooseTableIdRemapperArchive", + 6310: ".TST.CommandSetWasCutArchive", + 6311: ".TST.AutofillSelectionArchive", + 6312: ".TST.StockCellSelectionArchive", + 6313: ".TST.CommandSetNowArchive", + 6314: ".TST.CommandSetStructuredTextImportRecordArchive", + 6315: ".TST.CommandRewriteCategoryFormulasArchive", + 6316: ".TST.SummaryModelArchive", + 6317: ".TST.SummaryCellVendorArchive", + 6318: ".TST.CategoryOrderArchive", + 6320: ".TST.CommandCategoryCollapseExpandGroupArchive", + 6321: ".TST.CommandCategorySetGroupingColumnsArchive", + 6323: ".TST.CommandRewriteHiddenStatesForGroupByChangeArchive", + 6350: ".TST.IdempotentSelectionTransformerArchive", + 6351: ".TST.TableSubSelectionTransformerBaseArchive", + 6352: ".TST.TableNameSelectionTransformerArchive", + 6353: ".TST.RegionSelectionTransformerArchive", + 6354: ".TST.RowColumnSelectionTransformerArchive", + 6355: ".TST.ControlCellSelectionTransformerArchive", + 6357: ".TST.ChangePropagationMapWrapper", + 6358: ".TST.WPSelectionTransformerArchive", + 6359: ".TST.StockCellSelectionTransformerArchive", + 6360: ".TST.CommandSetRangeControlMinMaxIncArchive", + 6361: ".TST.CommandCategorySetLabelRowVisibility", + 6362: ".TST.CommandRewritePencilAnnotationFormulasArchive", + 6363: ".TST.PencilAnnotationArchive", + 6364: ".TST.StrokeSelectionTransformerArchive", + 6365: ".TST.HeaderNameMgrTileArchive", + 6366: ".TST.HeaderNameMgrArchive", + 6367: ".TST.CellDiffArray", + 6368: ".TST.CellDiffArraySegment", + 6369: ".TST.PivotOrderArchive", + 6370: ".TST.PivotOwnerArchive", + 6371: ".TST.CommandPivotSetPivotRulesArchive", + 6372: ".TST.CategoryOwnerRefArchive", + 6373: ".TST.GroupByArchive", + 6374: ".TST.PivotGroupingColumnOptionsMapArchive", + 6375: ".TST.CommandPivotSetGroupingColumnOptionsArchive", + 6376: ".TST.CommandPivotHideShowGrandTotalsArchive", + 6377: ".TST.CommandPivotSortArchive", + 6379: ".TST.CommandRewritePivotOwnerFormulasArchive", + 6380: ".TST.CommandRewriteTrackedReferencesArchive", + 6381: ".TST.CommandExtendTableIDHistoryArchive", + 6382: ".TST.GroupByArchive.AggregatorArchive", + 6383: ".TST.GroupByArchive.GroupNodeArchive", + 10000: ".TP.DocumentArchive", + 10001: ".TP.ThemeArchive", + 10010: ".TP.FloatingDrawablesArchive", + 10011: ".TP.SectionArchive", + 10012: ".TP.SettingsArchive", + 10015: ".TP.DrawablesZOrderArchive", + 10016: ".TP.UserDefinedGuideMapArchive", + 10017: ".TP.PageTemplateArchive", + 10020: ".TSWP.ShapeSelectionTransformerArchive", + 10021: ".TSWP.SelectionTransformerArchive", + 10022: ".TSWP.ShapeContentDescription", + 10023: ".TSWP.TateChuYokoFieldArchive", + 10024: ".TSWP.DropCapStyleArchive", + 10101: ".TP.InsertDrawablesCommandArchive", + 10102: ".TP.RemoveDrawablesCommandArchive", + 10110: ".TP.MoveDrawablesAttachedCommandArchive", + 10111: ".TP.MoveDrawablesFloatingCommandArchive", + 10112: ".TP.MoveInlineDrawableAnchoredCommandArchive", + 10113: ".TP.InsertFootnoteCommandArchive", + 10114: ".TP.ChangeFootnoteFormatCommandArchive", + 10115: ".TP.ChangeFootnoteKindCommandArchive", + 10116: ".TP.ChangeFootnoteNumberingCommandArchive", + 10118: ".TP.ChangeFootnoteSpacingCommandArchive", + 10119: ".TP.MoveAnchoredDrawableInlineCommandArchive", + 10125: ".TP.InsertSectionTemplateDrawablesCommandArchive", + 10126: ".TP.RemoveSectionTemplateDrawablesCommandArchive", + 10127: ".TP.PasteSectionTemplateDrawablesCommandArchive", + 10130: ".TP.MoveDrawablesPageIndexCommandArchive", + 10131: ".TP.LayoutStateArchive", + 10132: ".TP.CanvasSelectionArchive", + 10133: ".TP.UIStateArchive", + 10135: ".TP.SectionSelectionArchive", + 10136: ".TP.SectionSelectionTransformerArchive", + 10140: ".TP.MoveSectionTemplateDrawableZOrderCommandArchive", + 10141: ".TP.MoveDrawableZOrderCommandArchive", + 10143: ".TP.SectionTemplateArchive", + 10147: ".TP.ViewStateRootArchive", + 10149: ".TP.TrackChangesCommandArchive", + 10152: ".TP.InsertSectionBreakCommandArchive", + 10157: ".TP.PauseChangeTrackingCommandArchive", + 10160: ".TP.AllFootnoteSelectionArchive", + 10161: ".TP.SectionGuideCommandArchive", + 10162: ".TP.DocumentSelectionTransformerArchive", + 10163: ".TP.CanvasSelectionTransformerArchive", + 10164: ".TP.AllFootnoteSelectionTransformerArchive", + 10165: ".TPSOS.InducedVerifyDocumentWithServerCommandArchive", + 10166: ".TP.NullChildHintArchive", + 10167: ".TPSOS.InducedVerifyDrawableZOrdersWithServerCommandArchive", + 10169: ".TP.ReplaceHeaderFooterStorageCommandArchive", + 10170: ".TP.ChangePageTemplateForSectionCommandArchive", + 10171: ".TP.PrototypeForUndoChangePageTemplateForSection", + 10172: ".TPSOS.ReapplyPageTemplateCommandArchive", + 10173: ".TP.SectionsAppNativeObjectArchive", + 10174: ".TP.SectionPasteboardObjectArchive", + 10175: ".TP.MailMergeSettingsArchive", + 11000: ".TSP.PasteboardObject", + 11006: ".TSP.PackageMetadata", + 11007: ".TSP.PasteboardMetadata", + 11008: ".TSP.ObjectContainer", + 11009: ".TSP.ViewStateMetadata", + 11010: ".TSP.ObjectCollection", + 11011: ".TSP.DocumentMetadata", + 11012: ".TSP.SupportMetadata", + 11013: ".TSP.ObjectSerializationMetadata", + 11014: ".TSP.DataMetadata", + 11015: ".TSP.DataMetadataMap", + 11016: ".TSP.LargeNumberArraySegment", + 11017: ".TSP.LargeStringArraySegment", + 11018: ".TSP.LargeLazyObjectArraySegment", + 11019: ".TSP.LargeNumberArray", + 11020: ".TSP.LargeStringArray", + 11021: ".TSP.LargeLazyObjectArray", + 11024: ".TSP.LargeUUIDArraySegment", + 11025: ".TSP.LargeUUIDArray", + 11026: ".TSP.LargeObjectArraySegment", + 11027: ".TSP.LargeObjectArray", +} as {[key: number]: string}; diff --git a/src/vite-env.d.ts b/src/vite-env.d.ts new file mode 100644 index 0000000..11f02fe --- /dev/null +++ b/src/vite-env.d.ts @@ -0,0 +1 @@ +/// diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..8795d5f --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": ["DOM", "DOM.Iterable", "ESNext"], + "module": "ESNext", + "skipLibCheck": true, + + /* Bundler mode */ + "moduleResolution": "node", + "resolveJsonModule": true, + "isolatedModules": true, + "noEmit": true, + "jsx": "react-jsx", + + /* Linting */ + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noFallthroughCasesInSwitch": true + }, + "include": ["src"], + "references": [{ "path": "./tsconfig.node.json" }] +} diff --git a/tsconfig.node.json b/tsconfig.node.json new file mode 100644 index 0000000..cfa1ab5 --- /dev/null +++ b/tsconfig.node.json @@ -0,0 +1,10 @@ +{ + "compilerOptions": { + "composite": true, + "skipLibCheck": true, + "module": "ESNext", + "moduleResolution": "node", + "allowSyntheticDefaultImports": true + }, + "include": ["vite.config.ts"] +} diff --git a/types.ts b/types.ts new file mode 100644 index 0000000..d384355 --- /dev/null +++ b/types.ts @@ -0,0 +1,65 @@ +/// + +declare type RawData = Uint8Array | number[]; +interface BinaryRecord { + n?: string; + f: any; + T?: -1 | 1; + p?: number; + r?: number; +} +declare function recordhopper(data: RawData, cb:(val: any, R: BinaryRecord, RT: number)=>void): void; +declare interface ReadableData { + l: number; + read_shift(t: 4): number; + read_shift(t: any): any; +} +declare type ParseFunc = (data: ReadableData, length: number) => T; +declare var parse_XLWideString: ParseFunc; + +declare interface WritableData { + l: number; + write_shift(t: 4, val: number): void; + write_shift(t: number, val: string|number, f?: string): any; +} +declare type WritableRawData = WritableData & RawData; +interface BufArray { + end(): RawData; + next(sz: number): WritableData; + push(buf: RawData): void; +} +declare function buf_array(): BufArray; +declare function write_record(ba: BufArray, type: number, payload?: RawData, length?: number): void; +declare function new_buf(sz: number): RawData & WritableData & ReadableData; + +declare var tagregex: RegExp; +declare var XML_HEADER: string; +declare var RELS: any; +declare function parsexmltag(tag: string, skip_root?: boolean, skip_LC?: boolean): object; +declare function strip_ns(x: string): string; +declare function write_UInt32LE(x: number, o?: WritableData): RawData; +declare function write_XLWideString(data: string, o?: WritableData): RawData; +declare function writeuint16(x: number): RawData; + +declare function utf8read(x: string): string; +declare function utf8write(x: string): string; + +declare function a2s(a: RawData): string; +declare function s2a(s: string): RawData; + +interface ParseXLMetaOptions { + WTF?: number|boolean; +} +interface XLMDT { + name: string; + offsets?: number[]; +} +interface XLMetaRef { + type: string; + index: number; +} +interface XLMeta { + Types: XLMDT[]; + Cell: XLMetaRef[]; + Value: XLMetaRef[]; +} \ No newline at end of file diff --git a/vite.config.ts b/vite.config.ts new file mode 100644 index 0000000..ed31cb3 --- /dev/null +++ b/vite.config.ts @@ -0,0 +1,24 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' +import { VitePWA } from "vite-plugin-pwa"; + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react(), VitePWA({ + registerType: 'autoUpdate', + workbox: { + globPatterns: ['**/*.{js,css,html,ico,png,svg,numbers}', '**/protos'] + }, + manifest: { + icons: [ + { + src: "https://sheetjs.com/favico/favicon-196x196.png", + sizes: "196x196", + type: "image/png", + purpose: "any" + } + ] + } + })], + base: "" +})