diff --git a/dist/datamodel/node/container/SlddNode.d.ts.map b/dist/datamodel/node/container/SlddNode.d.ts.map index 704c85bd..e46b4288 100644 --- a/dist/datamodel/node/container/SlddNode.d.ts.map +++ b/dist/datamodel/node/container/SlddNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"SlddNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AA0BvE,UAAU,SAAS;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAgCD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;gBAEjC,IAAI,EAAE,MAAM;IAkBxB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAM5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAM3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI3C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAQnF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,QAAQ;IAuKlG,MAAM,CAAC,oBAAoB,CACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACtC,qBAAqB,GAAG,IAAI;IA+D/B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAK5D,SAAS,IAAI,OAAO;IAKpB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA6B3C"} \ No newline at end of file +{"version":3,"file":"SlddNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,MAAM,qBAAqB,CAAC;AAChD,OAAO,WAAW,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AA2BvE,UAAU,SAAS;IACf,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IACzC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAC3C;AAgCD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,aAAa;IAC/C,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC/C,oBAAoB,EAAE,OAAO,EAAE,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IAC7C,UAAU,EAAE,SAAS,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,cAAc,EAAE,qBAAqB,GAAG,IAAI,CAAC;gBAEjC,IAAI,EAAE,MAAM;IAkBxB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAM5B;IAED,aAAa,IAAI,SAAS,EAAE;IAI5B,WAAW,IAAI,UAAU,EAAE;IAM3B,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,GAAG,IAAI;IAI3C,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAQnF;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,GAAG,QAAQ;IA8KlG,MAAM,CAAC,oBAAoB,CACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,GACtC,qBAAqB,GAAG,IAAI;IA+D/B,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM;IAK5D,SAAS,IAAI,OAAO;IAKpB,aAAa,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CA6B3C"} \ No newline at end of file diff --git a/dist/datamodel/node/container/SlddNode.js b/dist/datamodel/node/container/SlddNode.js index 2b72ca0b..a963b9d9 100644 --- a/dist/datamodel/node/container/SlddNode.js +++ b/dist/datamodel/node/container/SlddNode.js @@ -12,6 +12,7 @@ import { DATA_PART_KEY, TEXT_CONTENT, TEXT_PARTS } from '../../parser/SlddParts. import { takeDecodeFailures, takePartialDecodes } from '../../parser/EncodedValue.js'; import { takeUnheldIntegers, unheldIntegerWarning } from '../data/integerReading.js'; import { takeUnwrittenSpellings, unwrittenSpellingWarning } from '../../parser/writtenSpelling.js'; +import { takeUnshapedValues, unshapedValueWarning } from '../data/unshapedValue.js'; import { heldByTextDictionary } from '../../parser/MatWriter.js'; import { attachChunkFrame, attachEntrySource, entrySourceOf, readFrameOf, readSourceOf } from '../../parser/EntrySource.js'; import { setEntryFragmentReader } from '../../parser/EntryMerge.js'; @@ -230,6 +231,9 @@ export default class SlddNode extends ContainerNode { // A binary dictionary's reader warned about its own text already, and hands // the node the value it shows, so this is a text dictionary's alone. takeUnwrittenSpellings(); + // And a JSON object of no shape MATLAB writes, which a hand edit left where a + // value is (unshapedValue). + takeUnshapedValues(); // A text dictionary's complex text is this file's own, which a save writes // back as read where it has no stream to be instead // (MatWriter.heldByTextDictionary). A binary dictionary's is not: the record @@ -267,6 +271,10 @@ export default class SlddNode extends ContainerNode { if (unwritten && node.sourceFormat !== 'xml') { warnings?.push(unwrittenSpellingWarning(String(entry.name), unwritten)); } + const unshaped = takeUnshapedValues(); + if (unshaped) { + warnings?.push(unshapedValueWarning(String(entry.name), unshaped)); + } } }); } diff --git a/dist/datamodel/node/container/SlddNode.js.map b/dist/datamodel/node/container/SlddNode.js.map index cf7eeda2..5536cd8e 100644 --- a/dist/datamodel/node/container/SlddNode.js.map +++ b/dist/datamodel/node/container/SlddNode.js.map @@ -1 +1 @@ -{"version":3,"file":"SlddNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SlddNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/container/SlddNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts b/dist/datamodel/node/data/MatlabVariableNode.d.ts index a66541e1..0907b7cf 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts @@ -485,6 +485,15 @@ export default class MatlabVariableNode extends DataNode { static _createScalar(value: unknown, type: string, name: string, parent: BaseNode | null): MatlabVariableNode; static parse(rawVal: unknown, name: string, parent: BaseNode | null): MatlabVariableNode; static parseScalar(rawVal: unknown, name: string, parent: BaseNode | null): MatlabVariableNode; + /** + * Does this scalar hold, untouched, the JSON object of no shape MATLAB writes that it was read + * as (parseScalar's last arm)? `{"foo": 1}`, `{}`, or a class marker left with no class, + * `{"_array_class": null, ...}`, which only a hand edit leaves in a text dictionary (see + * unshapedValue). It is shown as the JSON it holds (_formatScalar), written back to a text + * dictionary as read (serializeValue replays `_rawInput`), and refused by the XML writers + * (serializeXml), where it was the text `[object Object]` in a double's spelling. + */ + _unshapedObject(): boolean; /** * struct([]) out of a text dictionary. Deliberately the same node * `_createFromMatStruct` builds for the same value — scalar kind, 'struct' class, diff --git a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map index b6142365..7f4df548 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.d.ts.map +++ b/dist/datamodel/node/data/MatlabVariableNode.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/MatlabVariableNode.js b/dist/datamodel/node/data/MatlabVariableNode.js index f04e680e..e269f7c9 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js +++ b/dist/datamodel/node/data/MatlabVariableNode.js @@ -15,6 +15,7 @@ import { NOT_AVAILABLE } from '../../parser/McosParser.js'; import { mcosDecodedFor } from './mcosDecodedTable.js'; import { heldAsRead, integerReader } from './integerReading.js'; import { isWrittenSpelling, matrixHoldsUnwritten, recordUnwrittenSpelling, rowHoldsUnwritten } from '../../parser/writtenSpelling.js'; +import { recordUnshapedValue, unshapedText } from './unshapedValue.js'; import { subscriptLabel } from '../../display/Subscript.js'; import { decodeMatStream, functionHandleOf, structElementsHeld, undecodedValue } from '../../parser/MatParser.js'; import { setOwn } from '../../parser/ownKeys.js'; @@ -541,6 +542,11 @@ export default class MatlabVariableNode extends DataNode { if (this._undecoded) { return String(this._scalarValue); } + // A JSON object of no shape MATLAB writes (_unshapedObject): the JSON it holds, as a summary, + // which takes no editor. String() of it, `[object Object]`, showed nothing that was read. + if (this._unshapedObject()) { + return '<' + unshapedText(this._scalarValue) + '>'; + } // char and a scalar string have no child rows, so the cell is the only place // the value is ever visible and the char budget is the only rule that applies: // a realistic description shows in full, a 1500-character blob does not take @@ -2637,6 +2643,12 @@ export default class MatlabVariableNode extends DataNode { if (this._scalarType === 'function_handle') { throw this._handleRefusalHere(this._kind === 'scalar' ? String(this._scalarValue) : 'Matrix(' + this._dims.join(',') + ')'); } + // Nor a JSON object of no shape MATLAB writes (_unshapedObject), at an entry, a struct field or + // a cell element: the double's arm wrote it as `Class="double">[object Object]`. Refused, as the + // property writer refuses the same object (DataNode._unspellable), naming the entry and the path. + if (this._unshapedObject()) { + throw DataNode._unspellable(this._scalarValue, this.name, this._whereWritten()); + } // Dims no Dimension can spell — a text dictionary's [1, "x"] or a host's NaN pasted // into a binary one — are refused, finally, naming the value, and never written as // `Dimension="1*x"` (parser/Size). What a binary dictionary read is spelled as read. @@ -2899,8 +2911,15 @@ export default class MatlabVariableNode extends DataNode { return p + '<' + tagName + attrStr + ' Class="cell" Dimension="' + (empty ? dimensionText(dims) : '0*0') + '"/>'; } // dims.join, so a 2x3x2 cell keeps its third extent here as it does in - // _serializeCellPropertyXml and in what MATLAB itself writes. - let xml = p + '<' + tagName + attrStr + ' Class="cell" Dimension="' + dimensionText(dims) + '">\n'; + // _serializeCellPropertyXml and in what MATLAB itself writes. A 1x1 cell of one element + // states none, at an entry, a cell element or a struct field, as MATLAB writes it there + // and as DataNode._cellXml writes a property's: no cell MATLAB writes says + // `Dimension="1*1"` (cell1x1_binary.sldd). The binary reader takes the absence as 1x1 at + // an entry and as 1xN for N elements in a cell or a struct. + const dimAttr = dims.length <= 2 && dims[0] === 1 && dims[1] === 1 && this.children.length === 1 + ? '' + : ' Dimension="' + dimensionText(dims) + '"'; + let xml = p + '<' + tagName + attrStr + ' Class="cell"' + dimAttr + '>\n'; // Each element with its origin in the file while a merge asks for it (EntrySource). for (const child of this.children) { xml += withOrigin(child.serializeXml('Element', {}, indent + 1), originOf(child)) + '\n'; @@ -3116,6 +3135,14 @@ export default class MatlabVariableNode extends DataNode { } else if (this._kind === 'scalar') { v.value = this._scalarValue; + // A JSON object of no shape MATLAB writes (_unshapedObject) is no double, and MatWriter wrote + // it as 0: in the stream of an N-D cell holding one, edited at a sibling, and in the hex of a + // cell holding one and a sparse array. It stands in as one MatWriter refuses, as a member of + // another class does (_memberVar), so the save that needs the stream is refused and the hex + // falls back to the XML, which refuses it there. + if (this._unshapedObject()) { + v._unwritable = 'an object of no shape MATLAB writes, ' + unshapedText(this._scalarValue) + ', which MatWriter has no variable for'; + } if (this._scalarType === 'char') { v.className = 'char'; // A char array's shape is NOT its text length. `[1, len]` flattened every @@ -3728,9 +3755,26 @@ export default class MatlabVariableNode extends DataNode { else { node._scalarType = 'double'; node._scalarValue = rawVal === undefined ? 0 : rawVal; + // A JSON object of no shape MATLAB writes, held as it came (_unshapedObject), for the + // dictionary's warnings (unshapedValue). + if (node._unshapedObject()) { + recordUnshapedValue(node, rawVal); + } } return node; } + /** + * Does this scalar hold, untouched, the JSON object of no shape MATLAB writes that it was read + * as (parseScalar's last arm)? `{"foo": 1}`, `{}`, or a class marker left with no class, + * `{"_array_class": null, ...}`, which only a hand edit leaves in a text dictionary (see + * unshapedValue). It is shown as the JSON it holds (_formatScalar), written back to a text + * dictionary as read (serializeValue replays `_rawInput`), and refused by the XML writers + * (serializeXml), where it was the text `[object Object]` in a double's spelling. + */ + _unshapedObject() { + const v = this._scalarValue; + return this._kind === 'scalar' && v !== null && typeof v === 'object' && v === this._rawInput; + } /** * struct([]) out of a text dictionary. Deliberately the same node * `_createFromMatStruct` builds for the same value — scalar kind, 'struct' class, diff --git a/dist/datamodel/node/data/MatlabVariableNode.js.map b/dist/datamodel/node/data/MatlabVariableNode.js.map index dbb8bcd6..7746f16d 100644 --- a/dist/datamodel/node/data/MatlabVariableNode.js.map +++ b/dist/datamodel/node/data/MatlabVariableNode.js.map @@ -1 +1 @@ -{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatlabVariableNode.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/MatlabVariableNode.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/datamodel/node/data/unshapedValue.d.ts b/dist/datamodel/node/data/unshapedValue.d.ts new file mode 100644 index 00000000..9546b420 --- /dev/null +++ b/dist/datamodel/node/data/unshapedValue.d.ts @@ -0,0 +1,21 @@ +import type { ParseWarning } from '../../parser/ParseWarning.js'; +/** + * The JSON `value` is, cut at SHOWN_MAX characters. A value JSON cannot spell, which only a host + * can hand in (a bigint in it), is named by its first keys. Never throws. + */ +export declare function unshapedText(value: object): string; +/** Record one object of no shape MATLAB writes, held by the node `at`. */ +export declare function recordUnshapedValue(at: { + readonly matlabPath: string; +}, value: object): void; +/** What a warning names: how many, and the first one's path and text. */ +export interface UnshapedValues { + count: number; + path: string; + text: string; +} +/** The objects recorded since the last call, which clears them, or null if there were none. */ +export declare function takeUnshapedValues(): UnshapedValues | null; +/** The one warning for entry `part` whose read recorded `taken`. */ +export declare function unshapedValueWarning(part: string, taken: UnshapedValues): ParseWarning; +//# sourceMappingURL=unshapedValue.d.ts.map \ No newline at end of file diff --git a/dist/datamodel/node/data/unshapedValue.d.ts.map b/dist/datamodel/node/data/unshapedValue.d.ts.map new file mode 100644 index 00000000..8564f84b --- /dev/null +++ b/dist/datamodel/node/data/unshapedValue.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"unshapedValue.d.ts","sourceRoot":"","sources":["../../../../src/datamodel/node/data/unshapedValue.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAKjE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAYlD;AAMD,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,EAAE,EAAE;IAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAAE,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAI5F;AAED,yEAAyE;AACzE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+FAA+F;AAC/F,wBAAgB,kBAAkB,IAAI,cAAc,GAAG,IAAI,CAK1D;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,YAAY,CAOtF"} \ No newline at end of file diff --git a/dist/datamodel/node/data/unshapedValue.js b/dist/datamodel/node/data/unshapedValue.js new file mode 100644 index 00000000..b619d42a --- /dev/null +++ b/dist/datamodel/node/data/unshapedValue.js @@ -0,0 +1,46 @@ +// A hand edit can leave an object of any size; the row and the warning show its start. +const SHOWN_MAX = 60; +/** + * The JSON `value` is, cut at SHOWN_MAX characters. A value JSON cannot spell, which only a host + * can hand in (a bigint in it), is named by its first keys. Never throws. + */ +export function unshapedText(value) { + let text; + try { + text = JSON.stringify(value); + } + catch { + text = undefined; + } + if (text === undefined) { + const keys = Object.keys(value); + text = '{' + keys.slice(0, 5).map((k) => JSON.stringify(k)).join(', ') + (keys.length > 5 ? ', ...' : '') + '}'; + } + return text.length > SHOWN_MAX ? text.slice(0, SHOWN_MAX) + '...' : text; +} +/** The first object recorded since the last take, the node holding it and its text, and how many there were. */ +let first = null; +let count = 0; +/** Record one object of no shape MATLAB writes, held by the node `at`. */ +export function recordUnshapedValue(at, value) { + if (count++ === 0) { + first = { at, text: unshapedText(value) }; + } +} +/** The objects recorded since the last call, which clears them, or null if there were none. */ +export function takeUnshapedValues() { + const taken = first && { count, path: first.at.matlabPath, text: first.text }; + first = null; + count = 0; + return taken; +} +/** The one warning for entry `part` whose read recorded `taken`. */ +export function unshapedValueWarning(part, taken) { + const at = taken.path === part ? '' : ` at ${taken.path}`; + const message = taken.count === 1 + ? `"${part}" holds ${taken.text}${at}, which is not a value MATLAB writes; it is shown as read.` + : `"${part}" holds ${taken.count} values that are not values MATLAB writes; the first is ${taken.text}${at}, ` + + 'and each is shown as read.'; + return { code: 'part-unreadable', message, part }; +} +//# sourceMappingURL=unshapedValue.js.map \ No newline at end of file diff --git a/dist/datamodel/node/data/unshapedValue.js.map b/dist/datamodel/node/data/unshapedValue.js.map new file mode 100644 index 00000000..4c7b6f46 --- /dev/null +++ b/dist/datamodel/node/data/unshapedValue.js.map @@ -0,0 +1 @@ +{"version":3,"file":"unshapedValue.js","sourceRoot":"","sources":["../../../../src/datamodel/node/data/unshapedValue.ts"],"names":[],"mappings":"AAsBA,uFAAuF;AACvF,MAAM,SAAS,GAAG,EAAE,CAAC;AAErB;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,IAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC;IAClH,CAAC;IACD,OAAO,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC;AAED,gHAAgH;AAChH,IAAI,KAAK,GAAiE,IAAI,CAAC;AAC/E,IAAI,KAAK,GAAG,CAAC,CAAC;AAEd,0EAA0E;AAC1E,MAAM,UAAU,mBAAmB,CAAC,EAAmC,EAAE,KAAa;IACpF,IAAI,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC;QAClB,KAAK,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5C,CAAC;AACH,CAAC;AASD,+FAA+F;AAC/F,MAAM,UAAU,kBAAkB;IAChC,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;IAC9E,KAAK,GAAG,IAAI,CAAC;IACb,KAAK,GAAG,CAAC,CAAC;IACV,OAAO,KAAK,CAAC;AACf,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,oBAAoB,CAAC,IAAY,EAAE,KAAqB;IACtE,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1D,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,KAAK,CAAC;QAC/B,CAAC,CAAC,IAAI,IAAI,WAAW,KAAK,CAAC,IAAI,GAAG,EAAE,4DAA4D;QAChG,CAAC,CAAC,IAAI,IAAI,WAAW,KAAK,CAAC,KAAK,2DAA2D,KAAK,CAAC,IAAI,GAAG,EAAE,IAAI;cAC1G,4BAA4B,CAAC;IACnC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACpD,CAAC"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatWriter.d.ts b/dist/datamodel/parser/MatWriter.d.ts index 6135960b..7a6dec15 100644 --- a/dist/datamodel/parser/MatWriter.d.ts +++ b/dist/datamodel/parser/MatWriter.d.ts @@ -16,7 +16,9 @@ export declare class MatWriteError extends Error { * - 'not-an-index': a sparse array's non-zero whose row or column is not a whole number, * which no index can hold, and without which the array is not the one it is; * - 'not-decoded': a value the reader recorded without decoding, with no stream of its own - * to be written as, so nothing holds its value but the text of its placeholder. + * to be written as, so nothing holds its value but the text of its placeholder; + * - 'no-spelling': an empty a text dictionary has no spelling of that MATLAB reads back as + * what it is: a function handle's, an N-D enumeration's or string's (textEmptySpelling). * Final: nothing may be written in the value's place — not the value laid out full, not its * summary, not its elements one by one — so it reaches whoever asked for the write, and a * copy or a save that holds the value fails. Every other MatWriteError says this writer has @@ -31,7 +33,7 @@ export declare class MatBudgetError extends MatWriteError { readonly at: string; readonly what: string; readonly entry: string | undefined; - readonly reason: 'budget' | 'not-a-count' | 'past-int32' | 'not-an-index' | 'not-decoded'; + readonly reason: 'budget' | 'not-a-count' | 'past-int32' | 'not-an-index' | 'not-decoded' | 'no-spelling'; /** False when what stands at `at` declares a size that is no count at all (NaN, Inf). */ readonly counted: boolean; constructor(message: string, at: string, what: string, entry?: string, reason?: MatBudgetError['reason']); @@ -142,9 +144,9 @@ export declare function matStreamOfElement(raw: Uint8Array): Uint8Array | null; export declare function complexTextVariable(raw: unknown): MatVariable | null; /** * Records every complex text in `value`, a value as the text dictionary being read holds it, - * and every dims array that holds an infinity. Every entry is walked, so the walk allocates - * nothing and steps over every primitive: 15 ms of the 420 ms a 138 MB dictionary of 140,000 - * entries takes to read. + * every dims array that holds an infinity, and every `{_type, _emptyDims}`. Every entry is + * walked, so the walk allocates nothing and steps over every primitive: 15 ms of the 420 ms a + * 138 MB dictionary of 140,000 entries takes to read. */ export declare function heldByTextDictionary(value: unknown): void; /** @@ -173,10 +175,24 @@ export declare function textDictionaryForm(x: unknown, at?: string): unknown; * values give another meaning under `_type` (BinarySlddParser.RESERVED_TYPE), or a char, a struct * or a cell, which no reader holds so: the binary one holds a struct's or a cell's empty as its * array (BinarySlddParser.structValue, cellValue), and the header's text spelling, `[]` or '', - * would reopen one as a double or a char 0x0, where its MAT stream reopens as what it is. Null - * too for a string or a function handle, which no MAT stream holds: a text dictionary was given - * one as the host handed it in, which reopens as what it is at a field and in a cell, where the - * header's spelling at a field, '', reopens as a char 0x0. + * would reopen one as a double or a char 0x0, where its MAT stream reopens as what it is. + * + * A string's and a function handle's, which no MAT stream holds, go so too, the function handle's + * at every rank: a text dictionary is given a string's as the String bag MATLAB reads back as it + * is, and refuses a function handle's, which MATLAB reads back as it is in no spelling + * (textEmptySpelling). As the host handed it in, MATLAB read either back as another value, or a + * struct without the field, and it was written so at a field and in a cell, and `[]` at an entry + * and at an object's property, a double 0x0. But one the text dictionary holds itself, as it was + * written there (heldByTextDictionary), is itself: a save that edits nothing writes the file it + * read. + * + * A string's of rank 2 is that String bag here already, not the binary reader's empty: the binary + * writers build an object's property and a Parameter's Value from this (serializeValue), and spell + * the bag as MATLAB's own saveobj envelope, which MATLAB reads back as the string it is at a + * property, where the reader's empty, `Class="string" Dimension="0*3"/>`, reads back as a double + * 1x1 (test/parity/matlab/host_string_empties_binary.truth.json, R2027a). At a Parameter's Value, + * where MATLAB holds no empty string, it reads every spelling back as a double 0x0. A copy carries + * the bag, which a paste into a binary dictionary writes as that envelope too. */ export declare function emptyDimsHeldForm(o: Record): Record | [] | null; export {}; diff --git a/dist/datamodel/parser/MatWriter.d.ts.map b/dist/datamodel/parser/MatWriter.d.ts.map index 1a247b9f..f8b66770 100644 --- a/dist/datamodel/parser/MatWriter.d.ts.map +++ b/dist/datamodel/parser/MatWriter.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"MatWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2BlD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,CAAC;IAC1F,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,cAAc,CAAC,QAAQ,CAAY;CASnH;AAkMD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAatD,+CAA+C;AAC/C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAU7C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/D;AAiCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAc7F;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AA6WD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAsBvE;AAED,KAAK,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;AAiDzH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAgB5D;AAuFD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAOpE;AA4CD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAGrE;AAuDD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA2BpE;AAoED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA6BzD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,SAAK,GAAG,OAAO,CAE/D;AAqTD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAcjG"} \ No newline at end of file +{"version":3,"file":"MatWriter.d.ts","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AA2BlD;;;;;GAKG;AACH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAI5B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,cAAe,SAAQ,aAAa;IAC/C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,aAAa,GAAG,aAAa,CAAC;IAC1G,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;gBACd,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,MAAM,GAAE,cAAc,CAAC,QAAQ,CAAY;CASnH;AAkMD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AAatD,+CAA+C;AAC/C,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAU7C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAE/D;AAiCD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,CAe7F;AAQD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AA6WD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAsBvE;AAED,KAAK,kBAAkB,GAAG,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;AAiDzH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAgB5D;AAuFD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAOpE;AA4CD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,WAAW,GAAG,MAAM,CAElD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,WAAW,GAAG,UAAU,CAE1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAGrE;AAuDD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,CA2BpE;AAwED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CA+BzD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,SAAK,GAAG,OAAO,CAE/D;AAsVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,GAAG,IAAI,CAqBjG"} \ No newline at end of file diff --git a/dist/datamodel/parser/MatWriter.js b/dist/datamodel/parser/MatWriter.js index f9fdc11b..c9fb029c 100644 --- a/dist/datamodel/parser/MatWriter.js +++ b/dist/datamodel/parser/MatWriter.js @@ -62,7 +62,9 @@ export class MatWriteError extends Error { * - 'not-an-index': a sparse array's non-zero whose row or column is not a whole number, * which no index can hold, and without which the array is not the one it is; * - 'not-decoded': a value the reader recorded without decoding, with no stream of its own - * to be written as, so nothing holds its value but the text of its placeholder. + * to be written as, so nothing holds its value but the text of its placeholder; + * - 'no-spelling': an empty a text dictionary has no spelling of that MATLAB reads back as + * what it is: a function handle's, an N-D enumeration's or string's (textEmptySpelling). * Final: nothing may be written in the value's place — not the value laid out full, not its * summary, not its elements one by one — so it reaches whoever asked for the write, and a * copy or a save that holds the value fails. Every other MatWriteError says this writer has @@ -343,6 +345,7 @@ export function budgetFailure(e, entry, where) { 'past-int32': ', an extent past ' + MAT_MAX_EXTENT + ', the most a MAT stream\'s dimensions can say, and it has no other spelling here.', 'not-an-index': ', which is not a row and a column, and it has no spelling here without that non-zero.', 'not-decoded': ', so there is no value of it to write.', + 'no-spelling': ', and a text dictionary has no spelling of it that MATLAB reads back as it is.', }[e.reason]; return new MatBudgetError('Cannot write "' + entry + '": ' + at + ' is ' + e.what + why + ' Nothing was written.', at, e.what, entry, e.reason); } @@ -1135,6 +1138,10 @@ function matrixLiteralVariable(o) { * recorded is the dims array itself, not the bag holding it: an untouched object array is * written as a new bag around its elements (ObjectNode.serializeValue, `{ ...rawVal, * _elements }`), which keeps the array read and is not the bag read. + * + * And a `{_type, _emptyDims}` of its own, the form a host hands an empty in as, which the file + * holds as it was written there (emptyDimsHeldForm): a string's or a function handle's goes as + * read, where one handed in is respelled or refused. */ const textDictionaryOwn = new WeakSet(); const isInfinity = (x) => x === Infinity || x === -Infinity; @@ -1142,9 +1149,9 @@ const isInfinity = (x) => x === Infinity || x === -Infinity; const isReadExtent = (x) => isInfinity(x) || isTextExtent(x); /** * Records every complex text in `value`, a value as the text dictionary being read holds it, - * and every dims array that holds an infinity. Every entry is walked, so the walk allocates - * nothing and steps over every primitive: 15 ms of the 420 ms a 138 MB dictionary of 140,000 - * entries takes to read. + * every dims array that holds an infinity, and every `{_type, _emptyDims}`. Every entry is + * walked, so the walk allocates nothing and steps over every primitive: 15 ms of the 420 ms a + * 138 MB dictionary of 140,000 entries takes to read. */ export function heldByTextDictionary(value) { if (Array.isArray(value)) { @@ -1172,6 +1179,9 @@ export function heldByTextDictionary(value) { if (k === '_dimensions' && Array.isArray(v) && v.some(isInfinity)) { textDictionaryOwn.add(v); } + else if (k === '_emptyDims') { + textDictionaryOwn.add(o); + } heldByTextDictionary(v); } } @@ -1376,10 +1386,14 @@ function bagClass(o) { * or a struct without the field; this package with its class). As an entry's value, which * MATLAB refuses to hold at all and so has no spelling of, `[]`, as before: the double 0x0 * that MATLAB and this package both read it back as. - * - one of rank >= 3, or of a class MATLAB gives no object of its own (a function handle's), - * the spelling it was given before: at a property or a field, `[]` for a numeric class and - * '' for any other, an N-D char '' at every place (MATLAB's own `""`); as an entry's value, - * its MAT stream (entryEmptyText); in a cell, the header as read. + * - an empty string, the String bag holding no element; an N-D numeric, logical or char one, + * its MAT stream at every place, which MATLAB reads back as what it is (its own writer writes + * the 0x0 of its class, `""` for a char); refused, an empty function handle, an N-D + * enumeration's and an N-D string's, which MATLAB reads back as what they are in no spelling + * (textEmptySpelling, lossy_empties_readback.truth.json); + * - an object array's of rank >= 3, or one of a class MATLAB gives no object of its own + * (NOT_AN_OBJECT_CLASS), the spelling it was given before: at a property or a field, ''; + * as an entry's value `[]` (entryEmptyText); in a cell, the header as read. * * Each is one the binary reader says it read: an enumeration value by its keys (XmlUtils.ENUM_KEY), * an empty by its own (XmlUtils.BINARY_EMPTY_KEY), which is gone from what this returns. The same @@ -1431,8 +1445,8 @@ function heldTextSpelling(o, place, at) { * `place` (heldTextSpelling): a numeric, logical or enumeration (`enumeration`) one as its class * under the header of its extents, `header` when it is given and states two, and its 0x0 as * MATLAB spells one; a char as the shaped char's literal, its 0x0 `''`; an object array's as - * MATLAB writes it, which it reads back right in no spelling. Undefined for one of rank >= 3, for - * an extent that is no count, for a class MATLAB gives no object of its own + * MATLAB writes it, which it reads back right in no spelling. Undefined for an object array's of + * rank >= 3, for an extent that is no count, for a class MATLAB gives no object of its own * (NOT_AN_OBJECT_CLASS), and for an object array's at an object array's element. * * Refused, finally, said where it stands (`at`), for one whose spelling states an extent past @@ -1440,13 +1454,39 @@ function heldTextSpelling(o, place, at) { * extent wrapped, where it reads `Matrix(0,2147483647)` as what it is (R2027a, a text * dictionary's entry), and no MAT stream can say the extent either, so a text dictionary has no * spelling for it, as for an N-D one past it (entryEmptyText). + * + * And, at every place, an empty string, an empty function handle and an N-D empty, which MATLAB + * was asked about too (test/parity/matlab/probe_lossy_empties_readback.m, + * lossy_empties_readback.truth.json, R2027a): + * - a string's of rank 2 is the String bag holding no element, `{"_array_type": "String", + * "_dimensions": [0, 3], "_elements": [], "_mw_element_type": "MATLABArray"}`, MATLAB's own + * spelling of one at an entry (below one it writes no `_mw_element_type`), which it reads + * back, either way, as the string it is at an entry, a cell, a field and an object's property; + * - an N-D numeric, logical or char one is its MAT stream, which MATLAB reads back as what it is + * at every place, where its own writer writes the 0x0 of its class; refused past MAT_MAX_EXTENT, + * as at an entry (entryEmptyText); + * - a function handle's is refused at every rank: MATLAB holds no function handle in a dictionary + * but as an object's property, and reads its own spelling of an empty one there, + * `{"_type": "function_handle", "_value": "[]"}`, back as a 1x1 handle. So is an N-D + * enumeration's, which MATLAB reads back with its third extent gone under the header or as the + * bag less its keys, as a 0x0 in its own spelling, and in the bag it writes for a non-empty one, + * around an empty stream (enumTextForm), not at all: R2027a crashes opening the dictionary. And + * an N-D string's, which MATLAB refuses in a cell or a field and reads back as another value at + * an entry. */ function textEmptySpelling(cls, dims, place, at, enumeration = false, header) { const d = effectiveDims(dims); - if (d.length !== 2 || !d.every(isCount)) { + if (!d.every(isCount)) { return undefined; } const char = cls === 'mxchar' || cls === 'char'; + if (cls === 'function_handle' || (d.length > 2 && (enumeration || cls === 'string'))) { + const what = cls === 'function_handle' ? 'an empty function handle (' + d.join('x') + ')' : 'a ' + d.join('x') + ' ' + cls; + throw new MatBudgetError((at || 'the value') + ', ' + what + ', has no spelling MATLAB reads back', at, what, undefined, 'no-spelling'); + } + if (d.length > 2) { + return char || cls === 'logical' || NUMERIC_CLASS.test(cls) ? entryEmptyText(char ? 'char' : cls, d, at) : undefined; + } if ((char || enumeration || cls === 'logical' || NUMERIC_CLASS.test(cls)) && d.some((x) => x > MAT_MAX_EXTENT)) { const what = 'a ' + d.join('x') + ' ' + (char ? 'char' : cls); throw new MatBudgetError((at || 'the value') + ', ' + what + ', has an extent past ' + MAT_MAX_EXTENT, at, what, undefined, 'past-int32'); @@ -1462,6 +1502,9 @@ function textEmptySpelling(cls, dims, place, at, enumeration = false, header) { const stated = typeof header === 'string' && /^Matrix\(\d+,\d+\)$/.test(header) ? header : 'Matrix(' + d.map(headerDigits).join(',') + ')'; return { _type: cls, _value: stated }; } + if (cls === 'string') { + return { _array_type: 'String', _dimensions: d, _elements: [], _mw_element_type: 'MATLABArray' }; + } if (NOT_AN_OBJECT_CLASS.test(cls)) { return undefined; } @@ -1477,7 +1520,7 @@ function textEmptySpelling(cls, dims, place, at, enumeration = false, header) { } } /** The classes a binary dictionary's empty may name that MATLAB gives no object of its own, and that keep their old spelling (heldTextSpelling). */ -const NOT_AN_OBJECT_CLASS = /^(?:function_handle|string|struct|cell|cdata|sparse|complex)$/; +const NOT_AN_OBJECT_CLASS = /^(?:struct|cell|cdata|sparse|complex)$/; const isCount = (d) => typeof d === 'number' && Number.isInteger(d) && d >= 0; /** The extents of the binary reader's shaped empty char, its mxchar literal with no character (`Matrix(0,2)\n[]`), or null. */ function mxcharEmptyDims(text) { @@ -1494,22 +1537,43 @@ function mxcharEmptyDims(text) { * values give another meaning under `_type` (BinarySlddParser.RESERVED_TYPE), or a char, a struct * or a cell, which no reader holds so: the binary one holds a struct's or a cell's empty as its * array (BinarySlddParser.structValue, cellValue), and the header's text spelling, `[]` or '', - * would reopen one as a double or a char 0x0, where its MAT stream reopens as what it is. Null - * too for a string or a function handle, which no MAT stream holds: a text dictionary was given - * one as the host handed it in, which reopens as what it is at a field and in a cell, where the - * header's spelling at a field, '', reopens as a char 0x0. + * would reopen one as a double or a char 0x0, where its MAT stream reopens as what it is. + * + * A string's and a function handle's, which no MAT stream holds, go so too, the function handle's + * at every rank: a text dictionary is given a string's as the String bag MATLAB reads back as it + * is, and refuses a function handle's, which MATLAB reads back as it is in no spelling + * (textEmptySpelling). As the host handed it in, MATLAB read either back as another value, or a + * struct without the field, and it was written so at a field and in a cell, and `[]` at an entry + * and at an object's property, a double 0x0. But one the text dictionary holds itself, as it was + * written there (heldByTextDictionary), is itself: a save that edits nothing writes the file it + * read. + * + * A string's of rank 2 is that String bag here already, not the binary reader's empty: the binary + * writers build an object's property and a Parameter's Value from this (serializeValue), and spell + * the bag as MATLAB's own saveobj envelope, which MATLAB reads back as the string it is at a + * property, where the reader's empty, `Class="string" Dimension="0*3"/>`, reads back as a double + * 1x1 (test/parity/matlab/host_string_empties_binary.truth.json, R2027a). At a Parameter's Value, + * where MATLAB holds no empty string, it reads every spelling back as a double 0x0. A copy carries + * the bag, which a paste into a binary dictionary writes as that envelope too. */ export function emptyDimsHeldForm(o) { const cls = o._type; const dims = o._emptyDims; - if (typeof cls !== 'string' || RESERVED_EMPTY_TYPE.has(cls) || cls === 'char' || cls === 'struct' || cls === 'cell' || cls === 'string' || cls === 'function_handle' + if (typeof cls !== 'string' || RESERVED_EMPTY_TYPE.has(cls) || cls === 'char' || cls === 'struct' || cls === 'cell' || !Array.isArray(dims) || dims.length < 2 || !dims.every((x) => Number.isSafeInteger(x) && x >= 0) || !dims.includes(0)) { return null; } + const handle = cls === 'function_handle'; + if ((handle || cls === 'string') && textDictionaryOwn.has(o)) { + return o; + } const d = effectiveDims(dims); - if (d.length !== 2) { + if (d.length !== 2 && !handle) { return null; } + if (cls === 'string') { + return { _array_type: 'String', _dimensions: d, _elements: [], _mw_element_type: 'MATLABArray' }; + } return cls === 'double' && d[0] === 0 && d[1] === 0 ? [] : { _type: cls, _value: 'Matrix(' + d.join(',') + ')', [BINARY_EMPTY_KEY]: true }; } /** BinarySlddParser.RESERVED_TYPE: the `_type`s this package's values give a meaning of their own. */ diff --git a/dist/datamodel/parser/MatWriter.js.map b/dist/datamodel/parser/MatWriter.js.map index 58c74a43..b52b9a9b 100644 --- a/dist/datamodel/parser/MatWriter.js.map +++ b/dist/datamodel/parser/MatWriter.js.map @@ -1 +1 @@ -{"version":3,"file":"MatWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"MatWriter.js","sourceRoot":"","sources":["../../../src/datamodel/parser/MatWriter.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,+EAA+E;AAC/E,uEAAuE;AACvE,mCAAmC;AACnC,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,+EAA+E;AAC/E,+EAA+E;AAC/E,gFAAgF;AAChF,+EAA+E;AAC/E,+EAA+E;AAC/E,6EAA6E;AAC7E,sEAAsE;AACtE,kFAAkF;AAClF,uCAAuC;AACvC,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,EAAE;AACF,4EAA4E;AAC5E,+EAA+E;AAC/E,iFAAiF;AACjF,iFAAiF;AACjF,kBAAkB;AAClB,2EAA2E;AAC3E,+BAA+B;AAC/B,6EAA6E;AAC7E,8EAA8E;AAC9E,4BAA4B;AAC5B,kFAAkF;AAClF,gFAAgF;AAChF,iFAAiF;AACjF,uCAAuC;AACvC,EAAE;AACF,gFAAgF;AAChF,iFAAiF;AACjF,kBAAkB;AAGlB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,0BAA0B,EAC1B,wBAAwB,GAEzB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACrF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAEtG;;;;;GAKG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAO,cAAe,SAAQ,aAAa;IAO/C,YAAY,OAAe,EAAE,EAAU,EAAE,IAAY,EAAE,KAAc,EAAE,SAAmC,QAAQ;QAChH,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;QAC7B,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,MAAM,KAAK,aAAa,CAAC;IAC1C,CAAC;CACF;AAED,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,QAAQ,GAAG,CAAC,CAAC;AACnB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,QAAQ,GAAG,EAAE,CAAC;AACpB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,OAAO,GAAG,EAAE,CAAC;AAEnB,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,MAAM,OAAO,GAAG,CAAC,CAAC;AAClB,MAAM,QAAQ,GAAG,CAAC,CAAC;AAEnB,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,uEAAuE;AACvE,kFAAkF;AAClF,UAAU;AACV,MAAM,UAAU,GAA2B;IACzC,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,SAAS;IACjB,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,CAAC;IACT,MAAM,EAAE,CAAC;IACT,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,QAAQ;IACf,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,+EAA+E;IAC/E,qEAAqE;IACrE,OAAO,EAAE,QAAQ;CAClB,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,SAAS;IACZ,CAAC,EAAE,OAAO;IACV,CAAC,EAAE,QAAQ;IACX,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;IACb,EAAE,EAAE,QAAQ;IACZ,EAAE,EAAE,SAAS;CACd,CAAC;AAEF,MAAM,KAAK,GAA2B;IACpC,CAAC,OAAO,CAAC,EAAE,CAAC;IACZ,CAAC,QAAQ,CAAC,EAAE,CAAC;IACb,CAAC,QAAQ,CAAC,EAAE,CAAC;IACb,CAAC,SAAS,CAAC,EAAE,CAAC;IACd,CAAC,QAAQ,CAAC,EAAE,CAAC;IACb,CAAC,SAAS,CAAC,EAAE,CAAC;IACd,CAAC,SAAS,CAAC,EAAE,CAAC;IACd,CAAC,SAAS,CAAC,EAAE,CAAC;IACd,CAAC,QAAQ,CAAC,EAAE,CAAC;IACb,CAAC,SAAS,CAAC,EAAE,CAAC;CACf,CAAC;AAEF,wEAAwE;AACxE,gFAAgF;AAChF,MAAM,cAAc,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAExE,SAAS,MAAM,CAAC,KAAmB;IACjC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,KAAK,IAAI,CAAC,CAAC,MAAM,CAAC;IACpB,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,EAAE,GAAG,CAAC,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACf,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,KAAK,CAAC,CAAS;IACtB,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;IACrD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,IAAgB;IAC7C,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACrC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACjB,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,GAAW,EAAE,OAAgB,EAAE,OAAgB;IACjE,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAC/B,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACd,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,OAAO,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,WAAW,CAAC,CAAW;IAC9B,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,iFAAiF;AACjF,oDAAoD;AACpD,SAAS,SAAS;IAChB,OAAO,OAAO,CAAC,OAAO,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CAAC,CAAkC;IAChD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IACvC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACZ,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,cAAc,CAAC,CAAW;IACjC,OAAO,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC,EAAE,CAAC,CAAC,CAAC;AACR,CAAC;AAED,2EAA2E;AAC3E,SAAS,gBAAgB;IACvB,OAAO,OAAO,CACZ,SAAS,EACT,MAAM,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/H,CAAC;AACJ,CAAC;AAED,8FAA8F;AAC9F,EAAE;AACF,4FAA4F;AAC5F,6FAA6F;AAC7F,+FAA+F;AAC/F,2FAA2F;AAC3F,+FAA+F;AAC/F,6FAA6F;AAC7F,6FAA6F;AAC7F,2DAA2D;AAC3D,EAAE;AACF,6FAA6F;AAC7F,6FAA6F;AAC7F,6FAA6F;AAC7F,uFAAuF;AACvF,EAAE;AACF,4FAA4F;AAC5F,0FAA0F;AAC1F,0FAA0F;AAC1F,6FAA6F;AAC7F,qDAAqD;AACrD,EAAE;AACF,2FAA2F;AAC3F,uFAAuF;AACvF,4FAA4F;AAC5F,2FAA2F;AAC3F,uFAAuF;AACvF,WAAW;AAEX;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAQtD,MAAM,SAAS,GAAG,GAAmB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;AAElF,4EAA4E;AAC5E,IAAI,OAAO,GAA0B,IAAI,CAAC;AAE1C,+CAA+C;AAC/C,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,KAAK,IAAI,CAAC;AAC1B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,QAAQ,CAAI,KAAc;IACxC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,SAAS,EAAE,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,IAAY;IACvD,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;;GAMG;AACH,SAAS,MAAM,CAAC,MAAsB,EAAE,KAAa,EAAE,IAAY;IACjE,uFAAuF;IACvF,+DAA+D;IAC/D,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1E,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,gBAAgB,GAAG,KAAK,GAAG,4CAA4C,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC5K,CAAC;IACD,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QAChB,OAAO;IACT,CAAC;IACD,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,+DAA+D;QAC/D,MAAM,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAClG,MAAM,IAAI,cAAc,CACtB,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,gBAAgB,GAAG,IAAI,GAAG,sCAAsC,GAAG,MAAM,CAAC,IAAI,GAAG,wBAAwB;cACzI,qBAAqB,EACzB,EAAE,EACF,IAAI,CACL,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,CAAiB,EAAE,KAAa,EAAE,KAAa;IAC3E,IAAI,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC;IACxB,MAAM,GAAG,GAAG,qBAAqB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,MAAM,CAAC;IAC3D,MAAM,GAAG,GAAG;QACV,MAAM,EAAE,8CAA8C,GAAG,GAAG,GAAG,2DAA2D;QAC1H,aAAa,EAAE,2FAA2F,GAAG,GAAG,GAAG,qBAAqB;QACxI,YAAY,EAAE,mBAAmB,GAAG,cAAc,GAAG,mFAAmF;QACxI,cAAc,EAAE,uFAAuF;QACvG,aAAa,EAAE,wCAAwC;QACvD,aAAa,EAAE,gFAAgF;KAChG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACZ,OAAO,IAAI,cAAc,CAAC,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,EAAE,GAAG,MAAM,GAAG,CAAC,CAAC,IAAI,GAAG,GAAG,GAAG,uBAAuB,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;AAClJ,CAAC;AAED,uDAAuD;AACvD,MAAM,MAAM,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE5C,0FAA0F;AAC1F,MAAM,OAAO,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;AAElF;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,IAAI,GAAG,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC;IAClF,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC,MAAM,CAAC;AAE7C,4FAA4F;AAC5F,gCAAgC;AAChC,MAAM,qBAAqB,GAA2B;IACpD,CAAC,OAAO,CAAC,EAAE,MAAM;IACjB,CAAC,QAAQ,CAAC,EAAE,OAAO;IACnB,CAAC,QAAQ,CAAC,EAAE,OAAO;IACnB,CAAC,SAAS,CAAC,EAAE,QAAQ;IACrB,CAAC,QAAQ,CAAC,EAAE,OAAO;IACnB,CAAC,SAAS,CAAC,EAAE,QAAQ;IACrB,CAAC,QAAQ,CAAC,EAAE,OAAO;IACnB,CAAC,SAAS,CAAC,EAAE,QAAQ;CACtB,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,SAAS,cAAc,CAAC,IAAY,EAAE,MAA0B;IAC9D,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,aAAa,CAAC,wCAAwC,GAAG,IAAI,CAAC,CAAC;IAC3E,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACpB,MAAM,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YACrB,QAAQ,IAAI,EAAE,CAAC;gBACb,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5B,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7B,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACnC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpC,MAAM;gBACR,KAAK,QAAQ;oBACX,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACtC,MAAM;gBACR;oBACE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACvC,MAAM;YACV,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,0FAA0F;AAC1F,0FAA0F;AAC1F,oFAAoF;AACpF,EAAE;AACF,2FAA2F;AAC3F,4FAA4F;AAC5F,0FAA0F;AAC1F,EAAE;AACF,0FAA0F;AAC1F,0FAA0F;AAC1F,wFAAwF;AACxF,uBAAuB;AACvB,SAAS,SAAS,CAAC,CAAU;IAC3B,IAAI,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC;QACpB,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAC;IACX,CAAC;IACD,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,IAAK,CAA6B,EAAE,CAAC;QAClF,OAAO,SAAS,CAAE,CAAqB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,qFAAqF;IACrF,qFAAqF;IACrF,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,QAAQ,CAAC,CAAU;IAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,IAAI,IAAK,CAA6B,EAAE,CAAC;QAClF,OAAO,SAAS,CAAE,CAAqB,CAAC,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,WAAW,CAAC,CAAc,EAAE,GAAW,EAAE,CAAW;IAC3D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,yEAAyE;QACzE,8EAA8E;QAC9E,MAAM,IAAI,aAAa,CAAC,oBAAoB,GAAG,IAAI,CAAC,MAAM,GAAG,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC/G,CAAC;IACD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,+EAA+E;IAC/E,4EAA4E;IAC5E,MAAM,IAAI,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAChB,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,CAAc,EAAE,CAAW;IAC3C,gFAAgF;IAChF,4EAA4E;IAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAC3E,gFAAgF;IAChF,8EAA8E;IAC9E,gFAAgF;IAChF,yCAAyC;IACzC,IAAI,IAAI,CAAC,MAAM,KAAK,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,aAAa,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,GAAG,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,SAAS,QAAQ,CAAC,CAAc,EAAE,CAAW,EAAE,MAAsB;IACnE,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAA2B,CAAC;IAC5D,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,0FAA0F;IAC1F,yEAAyE;IACzE,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,IAAI,KAAK,CAAC,CAAC,CAAC;YAAE,IAAI,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,gBAAgB,GAAG,IAAI,GAAG,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;IAC5H,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,yEAAyE;QACzE,0CAA0C;QAC1C,IAAI,CAAC,EAAE,CAAC;YACN,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACrC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,CAAc,EAAE,CAAW,EAAE,MAAsB;IACrE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC,EAAE,CAAC,CAAC,CAAC;IACN,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IACrC,IAAI,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,IAAI,WAAW,EAAE,CAAC;IAC9B,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;QAC7B,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IAC5B,yFAAyF;IACzF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,uFAAuF;IACvF,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAClD,IAAI,IAAI,CAAC,CAAC,CAAC;oBAAE,OAAO,EAAE,CAAC;YACzB,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YAC3B,OAAO,GAAG,CAAC,CAAC;QACd,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC;IACvB,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC7D,MAAM,CAAC,MAAM,EAAE,KAAK,GAAG,UAAU,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,wBAAwB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC,CAAC;IACvK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC1B,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,0EAA0E;YAC1E,0EAA0E;YAC1E,sEAAsE;YACtE,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;gBAClE,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACvC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,uFAAuF;AACvF,MAAM,SAAS,GAAG,CAAC,CAAC;AACpB,uFAAuF;AACvF,yDAAyD;AACzD,MAAM,WAAW,GAAG,IAAI,CAAC;AAEzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,SAAS,YAAY,CAAC,CAAc,EAAE,MAAsB;IAC1D,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;IAC3D,yFAAyF;IACzF,wFAAwF;IACxF,0FAA0F;IAC1F,0FAA0F;IAC1F,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3B,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,kBAAkB,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC;QAC1M,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,mCAAmC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC;IACzI,CAAC;IACD,0FAA0F;IAC1F,wFAAwF;IACxF,+DAA+D;IAC/D,MAAM,OAAO,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,IAAI,aAAa,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,MAAM,GAAG,GAAG,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAChF,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACtF,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC;IAC1C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC;IACvE,+EAA+E;IAC/E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,MAAM,CAAC,EAAE,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,EAAE,GAAa,EAAE,CAAC;IACxB,MAAM,EAAE,GAAG,IAAI,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACpC,MAAM,EAAE,GAAa,EAAE,CAAC;IACxB,MAAM,EAAE,GAAa,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACxF,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5D,MAAM,IAAI,aAAa,CAAC,2DAA2D,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC;QACzH,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,2EAA2E;QAC3E,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACX,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACX,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACd,CAAC;IACH,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IACrB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC;IAChC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;IACf,KAAK,CAAC,CAAC,CAAC,GAAG,WAAW,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG;QACX,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;QACzB,WAAW,CAAC,CAAC,CAAC;QACd,SAAS,EAAE;QACX,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5B,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC5B,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;KAC5B,CAAC;IACF,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAqB;IACtD,MAAM,KAAK,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC;IACpC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK,CAAC;IACf,CAAC;IACD,sFAAsF;IACtF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvB,OAAO,sCAAsC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,CAAC;IACjG,CAAC;IACD,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,mCAAmC,GAAG,cAAc,GAAG,+BAA+B,CAAC;IAC3H,CAAC;IACD,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC,CAAC;IAChD,IAAI,QAAQ,GAAG,qBAAqB,EAAE,CAAC;QACrC,OAAO,CACL,2BAA2B,GAAG,IAAI,GAAG,yBAAyB,GAAG,MAAM,GAAG,sCAAsC,GAAG,QAAQ;cACzH,4DAA4D,GAAG,qBAAqB,GAAG,GAAG,CAC7F,CAAC;IACJ,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAID;;;GAGG;AACH,SAAS,kBAAkB,CAAC,CAAqB;IAC/C,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,yDAAyD,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;IACvF,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnB,OAAO,0CAA0C,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACxE,CAAC;IACD,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;IAC3D,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,2BAA2B,GAAG,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC;IACzD,CAAC;IACD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACd,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QACrC,IAAI,CAAC,KAAK,IAAI,GAAG,IAAI,EAAE,CAAC;YACtB,OAAO,mBAAmB,GAAG,CAAC,GAAG,0BAA0B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAClF,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CAAC,CAAqB;IAChD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1B,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;AAC3F,CAAC;AAED,6EAA6E;AAC7E,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,oBAAoB,GAAG,IAAI,GAAG,oDAAoD,CAAC,CAAC,CAAC,IAAI,CAAC;AACjI,CAAC;AAED,6FAA6F;AAC7F,SAAS,UAAU,CAAC,CAAW,EAAE,MAAc;IAC7C,OAAO,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,iCAAiC,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC;AAClI,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAAc;IAC9C,MAAM,MAAM,GAAG,OAAO,IAAI,SAAS,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IACzB,2EAA2E;IAC3E,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,IAAI,CAAC;QACH,eAAe,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QAC3B,OAAO,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,kDAAkD;QAClD,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,CAAC;IACV,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,aAAa,CAAC,CAAc,EAAE,MAAsB;IAC3D,IAAI,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,GAAG,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,aAAa,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,CAAc;IACvC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,SAAS,IAAI,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,CAAc,EAAE,MAAsB;IACxD,gFAAgF;IAChF,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC;IACjE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,wBAAwB,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/H,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;IAClE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,MAAM,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;QACvF,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,qBAAqB,GAAG,IAAI,GAAG,SAAS,GAAG,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC7J,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,CAAc,EAAE,MAAsB;IAC7D,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IACD,IAAI,CAAC,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;QAC3B,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,CAAgB,CAAC,EAAE,CAAC;gBACvE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;gBACpC,eAAe,CAAC,CAAgB,EAAE,MAAM,CAAC,CAAC;gBAC1C,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YAClB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,CAAC,SAAS,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAChD,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;gBACtB,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC9D,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC;oBAClE,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;oBAC7B,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,SAAiB;IAC5C,uFAAuF;IACvF,oFAAoF;IACpF,4EAA4E;IAC5E,OAAO,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC;QAChE,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,aAAa,CAAC,oBAAoB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,gFAAgF;AAChF,SAAS,aAAa,CAAC,CAAc,EAAE,MAAsB;IAC3D,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,MAAM,IAAI,aAAa,CAAC,qCAAqC,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,SAAS,CAAC,GAAG,GAAG,CAAC,CAAC;IACpG,CAAC;IACD,uFAAuF;IACvF,2FAA2F;IAC3F,0DAA0D;IAC1D,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACtB,oFAAoF;IACpF,qEAAqE;IACrE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAClB,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IACD,qFAAqF;IACrF,mFAAmF;IACnF,iFAAiF;IACjF,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,CAAC;IAChB,CAAC;IACD,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACpC,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC;IAC3D,IAAI,IAAkB,CAAC;IACvB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAChC,CAAC;SAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,IAAI,GAAG,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC;IAClC,CAAC;SAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxB,CAAC;SAAM,CAAC;QACN,IAAI,GAAG,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,yFAAyF;IACzF,sDAAsD;IACtD,OAAO,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1H,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,CAAc;IACxC,OAAO,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACtC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,CAAc;IAC5C,OAAO,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAe;IAChD,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACpE,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,GAAe;IACjC,MAAM,EAAE,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,EAAE,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpG,OAAO,MAAM,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,SAAS,cAAc,CAAC,GAAe;IACrC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACtE,MAAM,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACxC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC;IACD,qFAAqF;IACrF,MAAM,SAAS,GAAG,CAAC,EAAU,EAAU,EAAE;QACvC,IAAI,EAAE,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC;YACjB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC;IAChC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,GAAG,GAAG,GAAiD,CAAC;IAC9D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,MAAM,KAAK,QAAQ,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;IACpD,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,WAAwB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACzG,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,KAAK;QAChB,mFAAmF;QACnF,4CAA4C;QAC5C,KAAK,EAAE,0BAA0B,CAAC,KAAK,EAAE,IAAI,CAAC;QAC9C,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,qBAAqB,CAAC,CAA0B;IACvD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;IACpB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/H,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,mCAAmC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC,IAAI,EAAE,CAAC;IAChF,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,EAAE;QACR,SAAS,EAAE,GAAG;QACd,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,KAAK;QAChB,SAAS,EAAE,GAAG,KAAK,SAAS;QAC5B,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACxE,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,iBAAiB,GAAG,IAAI,OAAO,EAAU,CAAC;AAEhD,MAAM,UAAU,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC;AAErE,oIAAoI;AACpI,MAAM,YAAY,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACxC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,OAAO;IACT,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO;IACT,CAAC;IACD,MAAM,CAAC,GAAG,KAAgC,CAAC;IAC3C,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACxB,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACzB,OAAO;IACT,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YACxC,wFAAwF;YACxF,mDAAmD;YACnD,IAAI,CAAC,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAClE,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;iBAAM,IAAI,CAAC,KAAK,YAAY,EAAE,CAAC;gBAC9B,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3B,CAAC;YACD,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,kBAAkB,CAAC,CAAU,EAAE,EAAE,GAAG,EAAE;IACpD,OAAO,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC;AAYD,SAAS,QAAQ,CAAC,CAAU,EAAE,EAAU,EAAE,KAAY;IACpD,IAAI,CAAC,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACtB,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;YACjC,OAAO,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IACD,MAAM,CAAC,GAAG,CAA4B,CAAC;IACvC,kFAAkF;IAClF,qFAAqF;IACrF,4FAA4F;IAC5F,4FAA4F;IAC5F,kFAAkF;IAClF,yFAAyF;IACzF,oDAAoD;IACpD,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;IAC3B,IACE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC;WACpD,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,WAAW,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,EAClG,CAAC;QACD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,wBAAwB,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAClF,MAAM,IAAI,cAAc,CAAC,IAAI,GAAG,kBAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC1F,CAAC;IACD,qFAAqF;IACrF,sFAAsF;IACtF,kFAAkF;IAClF,uFAAuF;IACvF,mFAAmF;IACnF,qCAAqC;IACrC,IAAI,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,oFAAoF;IACpF,+FAA+F;IAC/F,+EAA+E;IAC/E,IAAI,CAAC,CAAC,gBAAgB,CAAC,KAAK,SAAS,EAAE,CAAC;QACtC,OAAO,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,yFAAyF;IACzF,8FAA8F;IAC9F,8FAA8F;IAC9F,2FAA2F;IAC3F,aAAa;IACb,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/D,0FAA0F;QAC1F,MAAM,IAAI,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QAClC,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC,KAAK,KAAK,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtJ,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;gBAChC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,2FAA2F;IAC3F,yFAAyF;IACzF,kFAAkF;IAClF,0FAA0F;IAC1F,yBAAyB;IACzB,MAAM,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAAC;IACxC,IAAI,MAAM,EAAE,CAAC;QACX,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACzD,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;gBAChC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,CAAC;QACX,CAAC;QACD,IAAI,CAAC;YACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,qFAAqF;YACrF,mFAAmF;YACnF,oFAAoF;YACpF,kFAAkF;YAClF,IAAI,CAAC,YAAY,cAAc,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7D,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;YAC9E,CAAC;YACD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IACD,uFAAuF;IACvF,+FAA+F;IAC/F,uFAAuF;IACvF,6FAA6F;IAC7F,wEAAwE;IACxE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5C,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAChC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,MAAM,GAAG,GAA4B,EAAE,GAAG,CAAC,EAAE,CAAC;QAC9C,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACtC,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;oBAChC,OAAO,CAAC,CAAC;gBACX,CAAC;gBACD,MAAM,OAAO,GAAG,EAAE,GAAI,CAA6B,EAAE,CAAC;gBACtD,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC;gBAChC,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,4FAA4F;IAC5F,2FAA2F;IAC3F,iEAAiE;IACjE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,mBAAmB,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAA4B,EAAE,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACpC,OAAO,QAAQ,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,IAAI,GAAG,GAAmC,IAAI,CAAC;IAC/C,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,CAAC,GACL,CAAC,KAAK,WAAW,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,EAAE,CAAC;YACzD,CAAC,CAAC,CAAC,KAAK,aAAa,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAA4B,EAAE,EAAE,EAAE,UAAU,CAAC;gBAChI,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACf,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;YACtB,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,CAAC;AAClB,CAAC;AAED,kHAAkH;AAClH,SAAS,QAAQ,CAAC,CAA0B;IAC1C,IAAI,CAAC,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC;IAC/C,CAAC;IACD,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,IAAI,CAAC,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,KAAK,QAAQ,EAAE,CAAC;QACzF,OAAO,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxE,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,SAAS,gBAAgB,CAAC,CAA0B,EAAE,KAAY,EAAE,EAAU;IAC5E,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;QAC3B,IAAI,OAAO,CAAC,CAAC,YAAY,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACzG,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,YAAY,EAAE,IAAgB,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YACrF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,CAAC;IACD,MAAM,MAAM,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IACxB,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAChC,IAAI,CAAC,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,OAAO,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,KAAe,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAgB,CAAC,CAAC;IACjG,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,UAAU,CAAC;QAChB,KAAK,OAAO;YACV,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,KAAe,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,KAAK,OAAO;YACV,OAAO,cAAc,CAAC,CAAC,CAAC,KAAe,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACrD;YACE,OAAO,MAAM,CAAC;IAClB,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,SAAS,iBAAiB,CAAC,GAAW,EAAE,IAAc,EAAE,KAAY,EAAE,EAAU,EAAE,WAAW,GAAG,KAAK,EAAE,MAAe;IACpH,MAAM,CAAC,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,CAAC;IAChD,IAAI,GAAG,KAAK,iBAAiB,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,GAAG,KAAK,QAAQ,CAAC,CAAC,EAAE,CAAC;QACrF,MAAM,IAAI,GAAG,GAAG,KAAK,iBAAiB,CAAC,CAAC,CAAC,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAC3H,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,qCAAqC,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC1I,CAAC;IACD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjB,OAAO,IAAI,IAAI,GAAG,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACvH,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,WAAW,IAAI,GAAG,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,EAAE,CAAC;QAC/G,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC9D,MAAM,IAAI,cAAc,CAAC,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,uBAAuB,GAAG,cAAc,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;IAC5I,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;QACvC,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,WAAW,IAAI,GAAG,KAAK,SAAS,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAChE,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC9D,CAAC;QACD,MAAM,MAAM,GAAG,OAAO,MAAM,KAAK,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;QAC3I,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACxC,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;IACnG,CAAC;IACD,IAAI,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,UAAU;YACb,OAAO,EAAE,CAAC;QACZ,KAAK,OAAO,CAAC;QACb,KAAK,MAAM;YACT,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACtC;YACE,OAAO,SAAS,CAAC;IACrB,CAAC;AACH,CAAC;AAED,oJAAoJ;AACpJ,MAAM,mBAAmB,GAAG,wCAAwC,CAAC;AAErE,MAAM,OAAO,GAAG,CAAC,CAAU,EAAW,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhG,+HAA+H;AAC/H,SAAS,eAAe,CAAC,IAAa;IACpC,MAAM,CAAC,GAAG,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAChD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,iBAAiB,CAAC,CAA0B;IAC1D,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC;IACpB,MAAM,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC;IAC1B,IACE,OAAO,GAAG,KAAK,QAAQ,IAAI,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,MAAM;WAC5G,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAK,CAAY,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EACpI,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,KAAK,iBAAiB,CAAC;IACzC,IAAI,CAAC,MAAM,IAAI,GAAG,KAAK,QAAQ,CAAC,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,OAAO,CAAC,CAAC;IACX,CAAC;IACD,MAAM,CAAC,GAAG,aAAa,CAAC,IAAgB,CAAC,CAAC;IAC1C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC;IACnG,CAAC;IACD,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,EAAE,IAAI,EAAE,CAAC;AAC7I,CAAC;AAED,sGAAsG;AACtG,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;AAE9E;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,IAAc,EAAE,EAAU;IAC7D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC;QACH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,KAAK,SAAS,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1K,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,cAAc,EAAE,CAAC;YAChC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,YAAY,aAAa,EAAE,CAAC;YAC/B,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,CAAC,CAAC;IACV,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,YAAY,CAAC,CAA0B;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,SAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,WAAyB,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QACpI,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAG,CAA6B,CAAC,eAAe,CAAmC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7I,IAAI,CAAC,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;YAC5C,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;QACrB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAgB,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrI,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,0BAA0B,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAC/F,IAAI,KAAc,CAAC;IACnB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,KAAK,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QACvK,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,CAAC,CAAC,YAAY,cAAc,CAAC,EAAE,CAAC;gBACjE,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;IACH,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC;IACtJ,CAAC;IACD,MAAM,GAAG,GAA4B,EAAE,CAAC;IACxC,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACjC,GAAG,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;IACpC,CAAC;IACD,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACrC,GAAG,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;IAC5C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,aAAa,GAAG,uBAAuB,CAAC;AAE9C,yFAAyF;AACzF,SAAS,aAAa,CAAC,IAAc;IACnC,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACvB,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,GAAG,EAAE,CAAC;IACV,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,MAAM,aAAa,GAAG,yCAAyC,CAAC;AAEhE;;;;GAIG;AACH,SAAS,aAAa,CAAC,CAA0B;IAC/C,OAAO,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACxE,CAAC;AAED,sHAAsH;AACtH,SAAS,SAAS,CAAC,KAA8B,EAAE,EAAU,EAAE,KAA2B;IACxF,IAAI,GAAG,GAAmC,IAAI,CAAC;IAC/C,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,GAAG,GAAG,GAAG,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,IAAI,KAAK,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,CAA0B,EAAE,EAAU;IAC1D,MAAM,QAAQ,GAAG,CAAC,CAAC,SAAsB,CAAC;IAC1C,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,IAAI,CAAU,CAAC;QACf,IAAI,CAAC,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;YAC7B,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,MAAM,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,GAAG,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACnE,mFAAmF;YACnF,qBAAqB;YACrB,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,KAAK,QAAQ;gBAC/E,CAAC,CAAC,SAAS,CAAC,CAA4B,EAAE,IAAI,EAAE,OAAO,CAAC;gBACxD,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,OAAO,GAAG,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC;IACX,CAAC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;AAClC,CAAC"} \ No newline at end of file diff --git a/dist/index.d.ts.map b/dist/index.d.ts.map index f94a6084..b4e609a1 100644 --- a/dist/index.d.ts.map +++ b/dist/index.d.ts.map @@ -1 +1 @@ -{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 68c7507c..2f2e4262 100644 --- a/dist/index.js +++ b/dist/index.js @@ -69,7 +69,8 @@ export { readEntryFragment } from './datamodel/parser/EntryMerge.js'; // final, with `entry`, `at` (the MATLAB path to what was refused), `what` (what stands // there, in words), `reason` ('budget', 'not-a-count', 'past-int32', 'not-an-index' for a // sparse array's non-zero at no row and column, 'not-decoded' for a value the reader did not -// decode, which has no value to write), `counted` (false when +// decode, which has no value to write, 'no-spelling' for an empty a text dictionary has no +// spelling of that MATLAB reads back as what it is), `counted` (false when // its size is no count at all), and a message naming all of them for a user. export { MatWriteError, MatBudgetError } from './datamodel/parser/MatWriter.js'; export { parseSlx } from './datamodel/parser/SlxParser.js'; diff --git a/dist/index.js.map b/dist/index.js.map index a54747db..24958c9b 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/datamodel/node/container/SlddNode.ts b/src/datamodel/node/container/SlddNode.ts index 8af5f4d0..2806d4a3 100644 --- a/src/datamodel/node/container/SlddNode.ts +++ b/src/datamodel/node/container/SlddNode.ts @@ -17,6 +17,7 @@ import { DATA_PART_KEY, TEXT_CONTENT, TEXT_PARTS } from '../../parser/SlddParts. import { takeDecodeFailures, takePartialDecodes } from '../../parser/EncodedValue.js'; import { takeUnheldIntegers, unheldIntegerWarning } from '../data/integerReading.js'; import { takeUnwrittenSpellings, unwrittenSpellingWarning } from '../../parser/writtenSpelling.js'; +import { takeUnshapedValues, unshapedValueWarning } from '../data/unshapedValue.js'; import { heldByTextDictionary } from '../../parser/MatWriter.js'; import { attachChunkFrame, attachEntrySource, entrySourceOf, readFrameOf, readSourceOf } from '../../parser/EntrySource.js'; import { setEntryFragmentReader, type ReadEntryOptions } from '../../parser/EntryMerge.js'; @@ -282,6 +283,9 @@ export default class SlddNode extends ContainerNode { // A binary dictionary's reader warned about its own text already, and hands // the node the value it shows, so this is a text dictionary's alone. takeUnwrittenSpellings(); + // And a JSON object of no shape MATLAB writes, which a hand edit left where a + // value is (unshapedValue). + takeUnshapedValues(); // A text dictionary's complex text is this file's own, which a save writes // back as read where it has no stream to be instead // (MatWriter.heldByTextDictionary). A binary dictionary's is not: the record @@ -319,6 +323,10 @@ export default class SlddNode extends ContainerNode { if (unwritten && node.sourceFormat !== 'xml') { warnings?.push(unwrittenSpellingWarning(String(entry.name), unwritten)); } + const unshaped = takeUnshapedValues(); + if (unshaped) { + warnings?.push(unshapedValueWarning(String(entry.name), unshaped)); + } } }); } diff --git a/src/datamodel/node/data/MatlabVariable.md b/src/datamodel/node/data/MatlabVariable.md index 907e662c..361dd497 100644 --- a/src/datamodel/node/data/MatlabVariable.md +++ b/src/datamodel/node/data/MatlabVariable.md @@ -195,6 +195,19 @@ An opaque MCOS object (e.g. a `Simulink.Parameter` stored as a raw variable rath than as a recognized catalog entry) has `valueEditable = false` and `canAddChild() = false`. +### A JSON object of no MATLAB shape is shown as its JSON, and not written as XML +A hand edit can leave a text dictionary holding, at an entry, a struct field or a cell +element, a JSON object that is no value MATLAB writes: `{"foo": 1}`, `{}`, or a class marker +with no class, `{"_array_class": null, ...}`. `parseScalar` holds it as it came +(`_unshapedObject`). Its row shows the JSON it holds, cut at 60 characters, as a summary with +no editor (`<{"foo":1}>`), and one part-unreadable warning per entry says so. A text save and +a copy write it back as read. Every XML writer refuses it with a `MatWriteError` naming the +entry and the path, as the property writer refuses the same object (`DataNode._unspellable`), +and MatWriter refuses it as a member of a stream. It was shown, and written into a double's +XML, as `[object Object]`. MATLAB R2027a opens such a file and reads no value from it: a 1x0 +double at an entry, the struct without the field, a 0x0 char in a cell. Pinned in +`test/unshapedObjectValue.test.ts` (G1-OBJTAIL). + ### cdata is the format's escape hatch, not "the complex encoding" A value the `.sldd` schema cannot spell is stored as `{ _type: "cdata", _value: }`, in one of two encodings: diff --git a/src/datamodel/node/data/MatlabVariableNode.ts b/src/datamodel/node/data/MatlabVariableNode.ts index 73f55df3..764ff368 100644 --- a/src/datamodel/node/data/MatlabVariableNode.ts +++ b/src/datamodel/node/data/MatlabVariableNode.ts @@ -21,6 +21,7 @@ import { NOT_AVAILABLE } from '../../parser/McosParser.js'; import { mcosDecodedFor } from './mcosDecodedTable.js'; import { heldAsRead, integerReader } from './integerReading.js'; import { isWrittenSpelling, matrixHoldsUnwritten, recordUnwrittenSpelling, rowHoldsUnwritten } from '../../parser/writtenSpelling.js'; +import { recordUnshapedValue, unshapedText } from './unshapedValue.js'; import { subscriptLabel } from '../../display/Subscript.js'; import type { Bracket, ElementOrder } from '../../display/Subscript.js'; import { decodeMatStream, functionHandleOf, structElementsHeld, undecodedValue, type MatVariable } from '../../parser/MatParser.js'; @@ -760,6 +761,11 @@ export default class MatlabVariableNode extends DataNode { if (this._undecoded) { return String(this._scalarValue); } + // A JSON object of no shape MATLAB writes (_unshapedObject): the JSON it holds, as a summary, + // which takes no editor. String() of it, `[object Object]`, showed nothing that was read. + if (this._unshapedObject()) { + return '<' + unshapedText(this._scalarValue as object) + '>'; + } // char and a scalar string have no child rows, so the cell is the only place // the value is ever visible and the char budget is the only rule that applies: // a realistic description shows in full, a 1500-character blob does not take @@ -2922,6 +2928,12 @@ export default class MatlabVariableNode extends DataNode { if (this._scalarType === 'function_handle') { throw this._handleRefusalHere(this._kind === 'scalar' ? String(this._scalarValue) : 'Matrix(' + this._dims.join(',') + ')'); } + // Nor a JSON object of no shape MATLAB writes (_unshapedObject), at an entry, a struct field or + // a cell element: the double's arm wrote it as `Class="double">[object Object]`. Refused, as the + // property writer refuses the same object (DataNode._unspellable), naming the entry and the path. + if (this._unshapedObject()) { + throw DataNode._unspellable(this._scalarValue, this.name, this._whereWritten()); + } // Dims no Dimension can spell — a text dictionary's [1, "x"] or a host's NaN pasted // into a binary one — are refused, finally, naming the value, and never written as // `Dimension="1*x"` (parser/Size). What a binary dictionary read is spelled as read. @@ -3205,8 +3217,16 @@ export default class MatlabVariableNode extends DataNode { } // dims.join, so a 2x3x2 cell keeps its third extent here as it does in - // _serializeCellPropertyXml and in what MATLAB itself writes. - let xml = p + '<' + tagName + attrStr + ' Class="cell" Dimension="' + dimensionText(dims) + '">\n'; + // _serializeCellPropertyXml and in what MATLAB itself writes. A 1x1 cell of one element + // states none, at an entry, a cell element or a struct field, as MATLAB writes it there + // and as DataNode._cellXml writes a property's: no cell MATLAB writes says + // `Dimension="1*1"` (cell1x1_binary.sldd). The binary reader takes the absence as 1x1 at + // an entry and as 1xN for N elements in a cell or a struct. + const dimAttr = + dims.length <= 2 && dims[0] === 1 && dims[1] === 1 && this.children.length === 1 + ? '' + : ' Dimension="' + dimensionText(dims) + '"'; + let xml = p + '<' + tagName + attrStr + ' Class="cell"' + dimAttr + '>\n'; // Each element with its origin in the file while a merge asks for it (EntrySource). for (const child of this.children) { xml += withOrigin((child as MatlabVariableNode).serializeXml('Element', {}, indent + 1), originOf(child)) + '\n'; @@ -3431,6 +3451,14 @@ export default class MatlabVariableNode extends DataNode { v.fields = fields; } else if (this._kind === 'scalar') { v.value = this._scalarValue; + // A JSON object of no shape MATLAB writes (_unshapedObject) is no double, and MatWriter wrote + // it as 0: in the stream of an N-D cell holding one, edited at a sibling, and in the hex of a + // cell holding one and a sparse array. It stands in as one MatWriter refuses, as a member of + // another class does (_memberVar), so the save that needs the stream is refused and the hex + // falls back to the XML, which refuses it there. + if (this._unshapedObject()) { + v._unwritable = 'an object of no shape MATLAB writes, ' + unshapedText(this._scalarValue as object) + ', which MatWriter has no variable for'; + } if (this._scalarType === 'char') { v.className = 'char'; // A char array's shape is NOT its text length. `[1, len]` flattened every @@ -4081,10 +4109,28 @@ export default class MatlabVariableNode extends DataNode { } else { node._scalarType = 'double'; node._scalarValue = rawVal === undefined ? 0 : rawVal; + // A JSON object of no shape MATLAB writes, held as it came (_unshapedObject), for the + // dictionary's warnings (unshapedValue). + if (node._unshapedObject()) { + recordUnshapedValue(node, rawVal as object); + } } return node; } + /** + * Does this scalar hold, untouched, the JSON object of no shape MATLAB writes that it was read + * as (parseScalar's last arm)? `{"foo": 1}`, `{}`, or a class marker left with no class, + * `{"_array_class": null, ...}`, which only a hand edit leaves in a text dictionary (see + * unshapedValue). It is shown as the JSON it holds (_formatScalar), written back to a text + * dictionary as read (serializeValue replays `_rawInput`), and refused by the XML writers + * (serializeXml), where it was the text `[object Object]` in a double's spelling. + */ + _unshapedObject(): boolean { + const v = this._scalarValue; + return this._kind === 'scalar' && v !== null && typeof v === 'object' && v === this._rawInput; + } + /** * struct([]) out of a text dictionary. Deliberately the same node * `_createFromMatStruct` builds for the same value — scalar kind, 'struct' class, diff --git a/src/datamodel/node/data/unshapedValue.ts b/src/datamodel/node/data/unshapedValue.ts new file mode 100644 index 00000000..ebccd732 --- /dev/null +++ b/src/datamodel/node/data/unshapedValue.ts @@ -0,0 +1,78 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A JSON object of no shape MATLAB writes, where a text dictionary holds a value: `{"foo": 1}`, +// `{}`, or a class marker left with no class, `{"_array_class": null, ...}` or +// `{"_object_class": null, ...}`. Only a hand edit leaves one. NodeClassMap.parseValue finds no +// shape in it and MatlabVariableNode.parseScalar holds it as it came, a scalar of no value +// (MatlabVariableNode._unshapedObject). +// +// It was shown as String() of it, `[object Object]`, which shows nothing that was read, with an +// editor and no warning. MATLAB (R2027a) opens the file and reads no value from it: a 1x0 double +// at an entry, the struct without the field at a struct field, a 0x0 char in a cell (measured on +// dictionaries generated from test/fixtures/typed_text.sldd). So it is shown as the JSON it holds, +// and the dictionary's warnings say so (the maintainer's group F ruling of 2026-10-18, theme 1: +// warn and show what was read). A text save writes it back as read; the XML writers refuse it. +// +// The node layer has no warnings sink, so the first one met and a count are recorded here, and +// SlddNode.parse, which builds each entry and holds the sink, takes the record before and after +// it, as it takes writtenSpelling's. The path is asked of the node when the record is taken, once +// the entry is built. Recorded outside a dictionary's read (a paste), the record holds that one +// node until the next read takes it, unreported. +import type { ParseWarning } from '../../parser/ParseWarning.js'; + +// A hand edit can leave an object of any size; the row and the warning show its start. +const SHOWN_MAX = 60; + +/** + * The JSON `value` is, cut at SHOWN_MAX characters. A value JSON cannot spell, which only a host + * can hand in (a bigint in it), is named by its first keys. Never throws. + */ +export function unshapedText(value: object): string { + let text: string | undefined; + try { + text = JSON.stringify(value); + } catch { + text = undefined; + } + if (text === undefined) { + const keys = Object.keys(value); + text = '{' + keys.slice(0, 5).map((k) => JSON.stringify(k)).join(', ') + (keys.length > 5 ? ', ...' : '') + '}'; + } + return text.length > SHOWN_MAX ? text.slice(0, SHOWN_MAX) + '...' : text; +} + +/** The first object recorded since the last take, the node holding it and its text, and how many there were. */ +let first: { at: { readonly matlabPath: string }; text: string } | null = null; +let count = 0; + +/** Record one object of no shape MATLAB writes, held by the node `at`. */ +export function recordUnshapedValue(at: { readonly matlabPath: string }, value: object): void { + if (count++ === 0) { + first = { at, text: unshapedText(value) }; + } +} + +/** What a warning names: how many, and the first one's path and text. */ +export interface UnshapedValues { + count: number; + path: string; + text: string; +} + +/** The objects recorded since the last call, which clears them, or null if there were none. */ +export function takeUnshapedValues(): UnshapedValues | null { + const taken = first && { count, path: first.at.matlabPath, text: first.text }; + first = null; + count = 0; + return taken; +} + +/** The one warning for entry `part` whose read recorded `taken`. */ +export function unshapedValueWarning(part: string, taken: UnshapedValues): ParseWarning { + const at = taken.path === part ? '' : ` at ${taken.path}`; + const message = taken.count === 1 + ? `"${part}" holds ${taken.text}${at}, which is not a value MATLAB writes; it is shown as read.` + : `"${part}" holds ${taken.count} values that are not values MATLAB writes; the first is ${taken.text}${at}, ` + + 'and each is shown as read.'; + return { code: 'part-unreadable', message, part }; +} diff --git a/src/datamodel/parser/MatWriter.ts b/src/datamodel/parser/MatWriter.ts index c56e05e4..492c2a3c 100644 --- a/src/datamodel/parser/MatWriter.ts +++ b/src/datamodel/parser/MatWriter.ts @@ -86,7 +86,9 @@ export class MatWriteError extends Error { * - 'not-an-index': a sparse array's non-zero whose row or column is not a whole number, * which no index can hold, and without which the array is not the one it is; * - 'not-decoded': a value the reader recorded without decoding, with no stream of its own - * to be written as, so nothing holds its value but the text of its placeholder. + * to be written as, so nothing holds its value but the text of its placeholder; + * - 'no-spelling': an empty a text dictionary has no spelling of that MATLAB reads back as + * what it is: a function handle's, an N-D enumeration's or string's (textEmptySpelling). * Final: nothing may be written in the value's place — not the value laid out full, not its * summary, not its elements one by one — so it reaches whoever asked for the write, and a * copy or a save that holds the value fails. Every other MatWriteError says this writer has @@ -101,7 +103,7 @@ export class MatBudgetError extends MatWriteError { readonly at: string; readonly what: string; readonly entry: string | undefined; - readonly reason: 'budget' | 'not-a-count' | 'past-int32' | 'not-an-index' | 'not-decoded'; + readonly reason: 'budget' | 'not-a-count' | 'past-int32' | 'not-an-index' | 'not-decoded' | 'no-spelling'; /** False when what stands at `at` declares a size that is no count at all (NaN, Inf). */ readonly counted: boolean; constructor(message: string, at: string, what: string, entry?: string, reason: MatBudgetError['reason'] = 'budget') { @@ -409,6 +411,7 @@ export function budgetFailure(e: MatBudgetError, entry: string, where: string): 'past-int32': ', an extent past ' + MAT_MAX_EXTENT + ', the most a MAT stream\'s dimensions can say, and it has no other spelling here.', 'not-an-index': ', which is not a row and a column, and it has no spelling here without that non-zero.', 'not-decoded': ', so there is no value of it to write.', + 'no-spelling': ', and a text dictionary has no spelling of it that MATLAB reads back as it is.', }[e.reason]; return new MatBudgetError('Cannot write "' + entry + '": ' + at + ' is ' + e.what + why + ' Nothing was written.', at, e.what, entry, e.reason); } @@ -1231,6 +1234,10 @@ function matrixLiteralVariable(o: Record): MatVariable | null { * recorded is the dims array itself, not the bag holding it: an untouched object array is * written as a new bag around its elements (ObjectNode.serializeValue, `{ ...rawVal, * _elements }`), which keeps the array read and is not the bag read. + * + * And a `{_type, _emptyDims}` of its own, the form a host hands an empty in as, which the file + * holds as it was written there (emptyDimsHeldForm): a string's or a function handle's goes as + * read, where one handed in is respelled or refused. */ const textDictionaryOwn = new WeakSet(); @@ -1241,9 +1248,9 @@ const isReadExtent = (x: unknown) => isInfinity(x) || isTextExtent(x); /** * Records every complex text in `value`, a value as the text dictionary being read holds it, - * and every dims array that holds an infinity. Every entry is walked, so the walk allocates - * nothing and steps over every primitive: 15 ms of the 420 ms a 138 MB dictionary of 140,000 - * entries takes to read. + * every dims array that holds an infinity, and every `{_type, _emptyDims}`. Every entry is + * walked, so the walk allocates nothing and steps over every primitive: 15 ms of the 420 ms a + * 138 MB dictionary of 140,000 entries takes to read. */ export function heldByTextDictionary(value: unknown): void { if (Array.isArray(value)) { @@ -1270,6 +1277,8 @@ export function heldByTextDictionary(value: unknown): void { // entries' walk, where this costs none that shows. if (k === '_dimensions' && Array.isArray(v) && v.some(isInfinity)) { textDictionaryOwn.add(v); + } else if (k === '_emptyDims') { + textDictionaryOwn.add(o); } heldByTextDictionary(v); } @@ -1489,10 +1498,14 @@ function bagClass(o: Record): string { * or a struct without the field; this package with its class). As an entry's value, which * MATLAB refuses to hold at all and so has no spelling of, `[]`, as before: the double 0x0 * that MATLAB and this package both read it back as. - * - one of rank >= 3, or of a class MATLAB gives no object of its own (a function handle's), - * the spelling it was given before: at a property or a field, `[]` for a numeric class and - * '' for any other, an N-D char '' at every place (MATLAB's own `""`); as an entry's value, - * its MAT stream (entryEmptyText); in a cell, the header as read. + * - an empty string, the String bag holding no element; an N-D numeric, logical or char one, + * its MAT stream at every place, which MATLAB reads back as what it is (its own writer writes + * the 0x0 of its class, `""` for a char); refused, an empty function handle, an N-D + * enumeration's and an N-D string's, which MATLAB reads back as what they are in no spelling + * (textEmptySpelling, lossy_empties_readback.truth.json); + * - an object array's of rank >= 3, or one of a class MATLAB gives no object of its own + * (NOT_AN_OBJECT_CLASS), the spelling it was given before: at a property or a field, ''; + * as an entry's value `[]` (entryEmptyText); in a cell, the header as read. * * Each is one the binary reader says it read: an enumeration value by its keys (XmlUtils.ENUM_KEY), * an empty by its own (XmlUtils.BINARY_EMPTY_KEY), which is gone from what this returns. The same @@ -1545,8 +1558,8 @@ function heldTextSpelling(o: Record, place: Place, at: string): * `place` (heldTextSpelling): a numeric, logical or enumeration (`enumeration`) one as its class * under the header of its extents, `header` when it is given and states two, and its 0x0 as * MATLAB spells one; a char as the shaped char's literal, its 0x0 `''`; an object array's as - * MATLAB writes it, which it reads back right in no spelling. Undefined for one of rank >= 3, for - * an extent that is no count, for a class MATLAB gives no object of its own + * MATLAB writes it, which it reads back right in no spelling. Undefined for an object array's of + * rank >= 3, for an extent that is no count, for a class MATLAB gives no object of its own * (NOT_AN_OBJECT_CLASS), and for an object array's at an object array's element. * * Refused, finally, said where it stands (`at`), for one whose spelling states an extent past @@ -1554,13 +1567,39 @@ function heldTextSpelling(o: Record, place: Place, at: string): * extent wrapped, where it reads `Matrix(0,2147483647)` as what it is (R2027a, a text * dictionary's entry), and no MAT stream can say the extent either, so a text dictionary has no * spelling for it, as for an N-D one past it (entryEmptyText). + * + * And, at every place, an empty string, an empty function handle and an N-D empty, which MATLAB + * was asked about too (test/parity/matlab/probe_lossy_empties_readback.m, + * lossy_empties_readback.truth.json, R2027a): + * - a string's of rank 2 is the String bag holding no element, `{"_array_type": "String", + * "_dimensions": [0, 3], "_elements": [], "_mw_element_type": "MATLABArray"}`, MATLAB's own + * spelling of one at an entry (below one it writes no `_mw_element_type`), which it reads + * back, either way, as the string it is at an entry, a cell, a field and an object's property; + * - an N-D numeric, logical or char one is its MAT stream, which MATLAB reads back as what it is + * at every place, where its own writer writes the 0x0 of its class; refused past MAT_MAX_EXTENT, + * as at an entry (entryEmptyText); + * - a function handle's is refused at every rank: MATLAB holds no function handle in a dictionary + * but as an object's property, and reads its own spelling of an empty one there, + * `{"_type": "function_handle", "_value": "[]"}`, back as a 1x1 handle. So is an N-D + * enumeration's, which MATLAB reads back with its third extent gone under the header or as the + * bag less its keys, as a 0x0 in its own spelling, and in the bag it writes for a non-empty one, + * around an empty stream (enumTextForm), not at all: R2027a crashes opening the dictionary. And + * an N-D string's, which MATLAB refuses in a cell or a field and reads back as another value at + * an entry. */ function textEmptySpelling(cls: string, dims: number[], place: Place, at: string, enumeration = false, header?: string): unknown { const d = effectiveDims(dims); - if (d.length !== 2 || !d.every(isCount)) { + if (!d.every(isCount)) { return undefined; } const char = cls === 'mxchar' || cls === 'char'; + if (cls === 'function_handle' || (d.length > 2 && (enumeration || cls === 'string'))) { + const what = cls === 'function_handle' ? 'an empty function handle (' + d.join('x') + ')' : 'a ' + d.join('x') + ' ' + cls; + throw new MatBudgetError((at || 'the value') + ', ' + what + ', has no spelling MATLAB reads back', at, what, undefined, 'no-spelling'); + } + if (d.length > 2) { + return char || cls === 'logical' || NUMERIC_CLASS.test(cls) ? entryEmptyText(char ? 'char' : cls, d, at) : undefined; + } if ((char || enumeration || cls === 'logical' || NUMERIC_CLASS.test(cls)) && d.some((x) => x > MAT_MAX_EXTENT)) { const what = 'a ' + d.join('x') + ' ' + (char ? 'char' : cls); throw new MatBudgetError((at || 'the value') + ', ' + what + ', has an extent past ' + MAT_MAX_EXTENT, at, what, undefined, 'past-int32'); @@ -1576,6 +1615,9 @@ function textEmptySpelling(cls: string, dims: number[], place: Place, at: string const stated = typeof header === 'string' && /^Matrix\(\d+,\d+\)$/.test(header) ? header : 'Matrix(' + d.map(headerDigits).join(',') + ')'; return { _type: cls, _value: stated }; } + if (cls === 'string') { + return { _array_type: 'String', _dimensions: d, _elements: [], _mw_element_type: 'MATLABArray' }; + } if (NOT_AN_OBJECT_CLASS.test(cls)) { return undefined; } @@ -1592,7 +1634,7 @@ function textEmptySpelling(cls: string, dims: number[], place: Place, at: string } /** The classes a binary dictionary's empty may name that MATLAB gives no object of its own, and that keep their old spelling (heldTextSpelling). */ -const NOT_AN_OBJECT_CLASS = /^(?:function_handle|string|struct|cell|cdata|sparse|complex)$/; +const NOT_AN_OBJECT_CLASS = /^(?:struct|cell|cdata|sparse|complex)$/; const isCount = (d: unknown): boolean => typeof d === 'number' && Number.isInteger(d) && d >= 0; @@ -1612,24 +1654,45 @@ function mxcharEmptyDims(text: unknown): number[] | null { * values give another meaning under `_type` (BinarySlddParser.RESERVED_TYPE), or a char, a struct * or a cell, which no reader holds so: the binary one holds a struct's or a cell's empty as its * array (BinarySlddParser.structValue, cellValue), and the header's text spelling, `[]` or '', - * would reopen one as a double or a char 0x0, where its MAT stream reopens as what it is. Null - * too for a string or a function handle, which no MAT stream holds: a text dictionary was given - * one as the host handed it in, which reopens as what it is at a field and in a cell, where the - * header's spelling at a field, '', reopens as a char 0x0. + * would reopen one as a double or a char 0x0, where its MAT stream reopens as what it is. + * + * A string's and a function handle's, which no MAT stream holds, go so too, the function handle's + * at every rank: a text dictionary is given a string's as the String bag MATLAB reads back as it + * is, and refuses a function handle's, which MATLAB reads back as it is in no spelling + * (textEmptySpelling). As the host handed it in, MATLAB read either back as another value, or a + * struct without the field, and it was written so at a field and in a cell, and `[]` at an entry + * and at an object's property, a double 0x0. But one the text dictionary holds itself, as it was + * written there (heldByTextDictionary), is itself: a save that edits nothing writes the file it + * read. + * + * A string's of rank 2 is that String bag here already, not the binary reader's empty: the binary + * writers build an object's property and a Parameter's Value from this (serializeValue), and spell + * the bag as MATLAB's own saveobj envelope, which MATLAB reads back as the string it is at a + * property, where the reader's empty, `Class="string" Dimension="0*3"/>`, reads back as a double + * 1x1 (test/parity/matlab/host_string_empties_binary.truth.json, R2027a). At a Parameter's Value, + * where MATLAB holds no empty string, it reads every spelling back as a double 0x0. A copy carries + * the bag, which a paste into a binary dictionary writes as that envelope too. */ export function emptyDimsHeldForm(o: Record): Record | [] | null { const cls = o._type; const dims = o._emptyDims; if ( - typeof cls !== 'string' || RESERVED_EMPTY_TYPE.has(cls) || cls === 'char' || cls === 'struct' || cls === 'cell' || cls === 'string' || cls === 'function_handle' + typeof cls !== 'string' || RESERVED_EMPTY_TYPE.has(cls) || cls === 'char' || cls === 'struct' || cls === 'cell' || !Array.isArray(dims) || dims.length < 2 || !dims.every((x) => Number.isSafeInteger(x) && (x as number) >= 0) || !dims.includes(0) ) { return null; } + const handle = cls === 'function_handle'; + if ((handle || cls === 'string') && textDictionaryOwn.has(o)) { + return o; + } const d = effectiveDims(dims as number[]); - if (d.length !== 2) { + if (d.length !== 2 && !handle) { return null; } + if (cls === 'string') { + return { _array_type: 'String', _dimensions: d, _elements: [], _mw_element_type: 'MATLABArray' }; + } return cls === 'double' && d[0] === 0 && d[1] === 0 ? [] : { _type: cls, _value: 'Matrix(' + d.join(',') + ')', [BINARY_EMPTY_KEY]: true }; } diff --git a/src/index.ts b/src/index.ts index 102e2ecd..ff294665 100644 --- a/src/index.ts +++ b/src/index.ts @@ -95,7 +95,8 @@ export type { ReadEntryOptions } from './datamodel/parser/EntryMerge.js'; // final, with `entry`, `at` (the MATLAB path to what was refused), `what` (what stands // there, in words), `reason` ('budget', 'not-a-count', 'past-int32', 'not-an-index' for a // sparse array's non-zero at no row and column, 'not-decoded' for a value the reader did not -// decode, which has no value to write), `counted` (false when +// decode, which has no value to write, 'no-spelling' for an empty a text dictionary has no +// spelling of that MATLAB reads back as what it is), `counted` (false when // its size is no count at all), and a message naming all of them for a user. export { MatWriteError, MatBudgetError } from './datamodel/parser/MatWriter.js'; export { parseSlx } from './datamodel/parser/SlxParser.js'; diff --git a/test/binaryEditKeepsUntouched.test.ts b/test/binaryEditKeepsUntouched.test.ts index afc7fff8..2f85ef69 100644 --- a/test/binaryEditKeepsUntouched.test.ts +++ b/test/binaryEditKeepsUntouched.test.ts @@ -28,7 +28,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { readFileSync, readdirSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { join } from 'node:path'; -import { unzipSync } from 'fflate'; +import { strToU8, unzipSync, zipSync } from 'fflate'; import * as core from '../src/index.js'; import { ingest } from '../src/core/ingest.js'; import { parseBinarySlddParts } from '../src/datamodel/parser/BinarySlddParser.js'; @@ -63,6 +63,24 @@ function open(path: string): { session: any; root: any; xml: string } { return { session, root, xml: text(unzipSync(bytes)[CHUNK]) }; } +/** + * A binary fixture as an earlier core save left it: every cell MATLAB wrote with no Dimension, a + * string's saveobj cell aside, given `Dimension="1*1"`, the spelling the writers gave a 1x1 cell + * until they wrote it as MATLAB does (cellOneByOneDimension.test.ts). MATLAB reads it as the same + * value (cell1x1.truth.json). The writers now spell those tags otherwise than the file does, which + * is what lets a test see a part written from the model where the file's bytes belong. + */ +function openOlderSave(path: string): { session: any; root: any; xml: string } { + const parts = unzipSync(new Uint8Array(readFileSync(path))); + const xml = text(parts[CHUNK]).replace(/(<(?:P Name="[^"]*"|Element) Class="cell")>/g, '$1 Dimension="1*1">'); + expect(xml).not.toBe(text(parts[CHUNK])); + parts[CHUNK] = strToU8(xml); + const session = core.createSession(); + const root: any = ingest(session, buffer(zipSync(parts)), { filename: path.split('/').pop()! }); + session.setActiveContext(root); + return { session, root, xml }; +} + /** A dictionary read from a chunk, with no package around it. */ function fromChunk(xml: string): { session: any; root: any; xml: string } { const session = core.createSession(); @@ -130,13 +148,13 @@ const DICTIONARY = ' \n

\n${body}${DICTIONARY}\n`; describe('a rename changes only the Name and LastMod lines', () => { - it('of every entry of cellarr_binary.sldd, eleven of whose fourteen the writers spell otherwise', () => { - const { xml, root: probe } = open(fixture('cellarr_binary.sldd')); + it('of every entry of cellarr_binary.sldd as an earlier save left it, eleven of whose fourteen the writers spell otherwise', () => { + const { xml, root: probe } = openOlderSave(fixture('cellarr_binary.sldd')); const names = entries(probe).map((e: any) => e.name); expect(names.length).toBe(14); let respelled = 0; for (const name of names) { - const { session, root } = open(fixture('cellarr_binary.sldd')); + const { session, root } = openOlderSave(fixture('cellarr_binary.sldd')); const entry = entryNamed(root, name); expect(entry.setProperty('Name', name + 'Renamed')).toBe(true); const expected = renamedAndStamped(objectOf(xml, name), name + 'Renamed'); @@ -223,7 +241,7 @@ describe('an edit of one property keeps the bytes of every other', () => { describe('a struct field edit changes only that field', () => { it('cellarr_binary.sldd\'s cStructArr{1}(2).a, inside a cell whose open tag the writers respell', () => { - const { session, root, xml } = open(fixture('cellarr_binary.sldd')); + const { session, root, xml } = openOlderSave(fixture('cellarr_binary.sldd')); const entry = entryNamed(root, 'cStructArr'); const field = entry.children[0].children[1].children[0]; expect(field.name).toBe('a'); @@ -232,7 +250,8 @@ describe('a struct field edit changes only that field', () => { const before = objectOf(xml, 'cStructArr'); const second = before.lastIndexOf('

2.0

'); const expected = renamedAndStamped(before.slice(0, second) + '

5.0

' + before.slice(second + '

2.0

'.length), null); - expect(regenerated(entry)).toContain('

'); + expect(before).toContain('

'); + expect(regenerated(entry)).toContain('

'); expect(savedChunk(session, root)).toBe(withObject(xml, 'cStructArr', expected)); }); }); @@ -329,34 +348,34 @@ describe('a bus\'s elements are paired by where they were read from, never by po }); describe('a cell\'s elements are paired by where they were read from, never by position (D1)', () => { - // The parity artifact cases.sldd's cellNest, {1.0, {2.0, {3.0}}} as MATLAB wrote it, whose - // innermost cell, 1x1, has no Dimension, where the writers spell one. Removing the 1.0 moves the - // nested cell from the second place to the first: it keeps its bytes only if it is merged with - // the element it was read as, not with the 1.0 that was read first. + // The parity artifact cases.sldd's cellNest, {1.0, {2.0, {3.0}}}, as an earlier save left it: + // its innermost cell, 1x1, says `Dimension="1*1"`, where the writers spell none, as MATLAB does. + // Removing the 1.0 moves the nested cell from the second place to the first: it keeps its bytes + // only if it is merged with the element it was read as, not with the 1.0 that was read first. const CASES = join(HERE, 'parity', 'artifacts', 'binary', 'cases.sldd'); const FIRST = '\n 1.0'; it('removing the first: the nested cell that survives is its bytes, under the model\'s Dimension', () => { - const { session, root, xml } = open(CASES); + const { session, root, xml } = openOlderSave(CASES); const entry = entryNamed(root, 'cellNest'); const before = objectOf(xml, 'cellNest'); expect(before.split(FIRST).length).toBe(2); - expect(before).toContain(''); - expect(before).not.toContain('Dimension="1*1"'); + expect(before).toContain(''); expect(entry.children.length).toBe(2); expect(session.deleteNodeById(entry.children[0].id)).toBe(true); expect(entry.children.length).toBe(1); - // The writers spell the survivor's innermost cell otherwise than MATLAB did. - expect(regenerated(entry)).toContain(''); + // The writers spell the survivor's innermost cell otherwise than the file does. + expect(regenerated(entry)).toContain(''); + expect(regenerated(entry)).not.toContain('Dimension="1*1"'); const expected = renamedAndStamped(before.replace(FIRST, ''), null) - .replace('

', '

'); + .replace('

', '

'); expect(savedChunk(session, root)).toBe(withObject(xml, 'cellNest', expected)); }); }); describe('an edit and its undo give back the bytes, the LastMod line new (D2)', () => { it('a struct field in a cell, edited and undone', () => { - const { session, root, xml } = open(fixture('cellarr_binary.sldd')); + const { session, root, xml } = openOlderSave(fixture('cellarr_binary.sldd')); const entry = entryNamed(root, 'cStructArr'); const field = entry.children[0].children[1].children[0]; session.setActive(root, field); @@ -452,10 +471,16 @@ describe('no origin reaches a saved file', () => { it('of any binary fixture, every entry renamed, and every entry with children losing its first', () => { const files = binaryDictionaries(); expect(files.length).toBeGreaterThanOrEqual(22); + // And the cell fixtures as an earlier save left them, since the writers now spell their 1x1 + // cells as MATLAB does: without them, few entries' merge differs from their regeneration. + const opens: [string, () => { session: any; root: any }][] = [ + ...files.map((path): [string, () => { session: any; root: any }] => [path, () => open(path)]), + ...['cellarr_binary.sldd', 'cellstr_binary.sldd', 'typed_binary.sldd'].map((name): [string, () => { session: any; root: any }] => [`${name} as an earlier save left it`, () => openOlderSave(fixture(name))]), + ]; let merged = 0; - for (const path of files) { + for (const [path, opened] of opens) { for (const edit of ['rename', 'remove'] as const) { - const { session, root } = open(path); + const { session, root } = opened(); for (const entry of entries(root)) { if (edit === 'rename') entry.setProperty('Name', entry.name + 'S2'); else if (entry.children?.length > 1 && entry.canRemoveChild?.()) session.deleteNodeById(entry.children[0].id); @@ -529,9 +554,9 @@ describe('for a host that splices chunk text (D12)', () => { // with LF and four spaces, one written on one line, and one with CRLF and two spaces. const crlf = (xml: string): string => xml.replace(/\n( *)/g, (_m, s: string) => '\r\n' + ' '.repeat(s.length / 2)); const layouts: [string, () => { session: any; root: any; xml: string }][] = [ - ['LF, four spaces', () => open(fixture('cellarr_binary.sldd'))], + ['LF, four spaces', () => openOlderSave(fixture('cellarr_binary.sldd'))], ['one line', () => open(fixture('object_array_binary.sldd'))], - ['CRLF, two spaces', () => fromChunk(crlf(open(fixture('cellarr_binary.sldd')).xml))], + ['CRLF, two spaces', () => fromChunk(crlf(openOlderSave(fixture('cellarr_binary.sldd')).xml))], ]; for (const [label, make] of layouts) { it(`spliceEntryObject keeps every byte around the entry, ${label}`, () => { @@ -567,7 +592,7 @@ describe('for a host that splices chunk text (D12)', () => { }); it('keptPartsViolations: none for what the save writes, and the path of an untouched part changed', () => { - const { session, root, xml } = open(fixture('cellarr_binary.sldd')); + const { session, root, xml } = openOlderSave(fixture('cellarr_binary.sldd')); const unedited = entryNamed(root, 'cStruct'); expect(core.keptPartsViolations(unedited, objectOf(xml, 'cStruct'))).toEqual([]); expect(core.keptPartsViolations(unedited, objectOf(xml, 'cStruct').replace('IsDerived" Class="char">0', 'IsDerived" Class="char">1'))).toEqual([ @@ -585,12 +610,12 @@ describe('for a host that splices chunk text (D12)', () => { 'P[Value]/Element[0]/Element[0]', ]); expect(core.keptPartsViolations(entry, written.replace('

', '

x'))).toEqual(['P[UUID]']); - // The regenerated entry, whose cell open tag the writers respell, changes an untouched part. + // The regenerated entry, whose cell open tag the writers spell otherwise than the file, changes an untouched part. expect(core.keptPartsViolations(entry, regenerated(entry))).toEqual(['P[Value] (open tag)']); }); it('readEntryFragment rebuilds an entry with the bytes it came from, as an undo that rebuilds from text does', () => { - const { session, root, xml } = open(fixture('cellarr_binary.sldd')); + const { session, root, xml } = openOlderSave(fixture('cellarr_binary.sldd')); const old = entryNamed(root, 'cObjArr'); const section = old.parent; const fragment = objectOf(xml, 'cObjArr'); diff --git a/test/binarySaveKeepsUnedited.test.ts b/test/binarySaveKeepsUnedited.test.ts index f2921ddc..87259584 100644 --- a/test/binarySaveKeepsUnedited.test.ts +++ b/test/binarySaveKeepsUnedited.test.ts @@ -29,7 +29,7 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'; import { readFileSync, readdirSync } from 'node:fs'; import { fileURLToPath } from 'node:url'; import { join, relative } from 'node:path'; -import { unzipSync, zipSync } from 'fflate'; +import { strToU8, unzipSync, zipSync } from 'fflate'; import { XMLValidator } from 'fast-xml-parser'; import { createSession } from '../src/index.js'; import { ingest } from '../src/core/ingest.js'; @@ -430,12 +430,24 @@ describe('what the model writes is laid out as the file it goes into is', () => }); // cellarr_binary.sldd, because a regeneration rewrites 11 of its 14 entries: an untouched -// entry written from the model here would not pass for its own bytes. +// entry written from the model here would not pass for its own bytes. The renames take it as an +// earlier save left it, every 1x1 cell given `Dimension="1*1"` (MATLAB reads it as the same +// value, cell1x1.truth.json), because the writers now spell those cells as MATLAB does, and it +// is that spelling that a regeneration rewrites. describe('an edit changes its own entry and nothing else', () => { const PATH = join(HERE, 'fixtures', 'cellarr_binary.sldd'); + const olderSave = (): { session: any; root: any; bytes: Uint8Array } => { + const parts = unzipSync(new Uint8Array(readFileSync(PATH))); + const xml = text(parts[CHUNK]); + parts[CHUNK] = strToU8(xml.replace(/(<(?:P Name="[^"]*"|Element) Class="cell")>/g, '$1 Dimension="1*1">')); + expect(text(parts[CHUNK])).not.toBe(xml); + const bytes = zipSync(parts); + const session = createSession(); + return { session, root: ingest(session, buffer(bytes), { filename: 'cellarr_binary.sldd' }), bytes }; + }; it('rename one, delete the first, add one: the rest are their bytes, in place', () => { - const { session, root, bytes } = open(PATH); + const { session, root, bytes } = olderSave(); const xml = text(unzipSync(bytes)[CHUNK]); const spans = spansOf(xml); const all = entries(root); @@ -487,7 +499,7 @@ describe('an edit changes its own entry and nothing else', () => { }); it('an edited entry is written in its own place, its bytes with only its edited lines new', () => { - const { session, root, bytes } = open(PATH); + const { session, root, bytes } = olderSave(); const xml = text(unzipSync(bytes)[CHUNK]); const spans = spansOf(xml); const target = entries(root)[4]; diff --git a/test/cellOneByOneDimension.test.ts b/test/cellOneByOneDimension.test.ts new file mode 100644 index 00000000..50c06713 --- /dev/null +++ b/test/cellOneByOneDimension.test.ts @@ -0,0 +1,301 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A 1x1 cell, and where MATLAB states its Dimension. test/fixtures/cell1x1_binary.sldd and +// cell1x1_text.sldd are MATLAB's (R2027a, make_cell1x1.m). They hold a 1x1 cell at every place a +// cell goes: an entry's Value (holding a double, a char, a string, an object, an empty and a +// cell), a cell element (nested two deep), a struct field, a field of each element of a struct +// array, a field of a struct in a cell, and an MCOS object's cell and struct properties (Widget, +// in Other Data). The controls are a 1x2, a 2x1 and a 0x0 cell. +// +// MATLAB's rule, measured there and over every binary dictionary MATLAB wrote that this project +// reads: a 1x1 cell has no Dimension in a binary dictionary, at any place, and every other cell +// has one. A text dictionary gives every 1x1 cell `_dimensions` [1, 1]. +// +// The node writer (MatlabVariableNode._serializeCellXml) wrote `Dimension="1*1"` on every 1x1 +// cell it wrote: an entry's Value, each cell element under it, and a struct field of an entry. +// The property writer (DataNode._cellXml) already left it out. MATLAB reads both spellings as the +// same 1x1 cell (cell1x1.truth.json), so nothing read back wrong. The cost was bytes: a save that +// rebuilt an entry rewrote a tag nobody edited. +// +// cell1x1.truth.json is MATLAB's reading of three binary files and the text twin: its own file, a +// copy with Dimension="1*1" added to every 1x1 cell (the old spelling), and core's own +// regeneration of the file. It also lists the cell open tags of each. To ask MATLAB again after a +// change to what core writes here (the last case below fails until it is asked): +// +// npm run build && node test/fixtures/make_cell1x1_core.mjs /tmp/cell1x1 +// mw -using Bmain matlab -nodesktop -batch "cd('/test/fixtures'); make_cell1x1('', 'read', '/tmp/cell1x1/cell1x1_core.sldd')" +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { unzipSync } from 'fflate'; +import { createSession } from '../src/index.js'; +import { ingest } from '../src/core/ingest.js'; +import { parseBinarySlddParts } from '../src/datamodel/parser/BinarySlddParser.js'; +import { regenerateChunkXml, regenerateEntryXml } from '../src/datamodel/parser/BinarySlddSerializer.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +const DIR = new URL('./fixtures/', import.meta.url); +const bytesOf = (name: string): Uint8Array => new Uint8Array(readFileSync(fileURLToPath(new URL(name, DIR)))); +const bufferOf = (u8: Uint8Array): ArrayBuffer => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; +const chunkOf = (zip: Uint8Array): string => new TextDecoder().decode(unzipSync(zip)['data/chunk0.xml']); + +const BINARY = bytesOf('cell1x1_binary.sldd'); +const TEXT = bytesOf('cell1x1_text.sldd'); +const MATLAB_CHUNK = chunkOf(BINARY); +type Read = { name: string; class: string; size: number[]; same: boolean }; +const TRUTH = JSON.parse(new TextDecoder().decode(bytesOf('cell1x1.truth.json'))) as { + release: string; + patchedAdded: number; + files: { file: string; cellTags: string[]; entries: Read[] }[]; +}; + +/** Every cell open tag MATLAB wrote, entry by entry, copied from cell1x1_binary.sldd. */ +const MATLAB_TAGS: Record = { + c0: ['

'], + c11: ['

'], + c11cell: ['

', ''], + c11char: ['

'], + c11empty: ['

'], + c11obj: ['

'], + c11str: ['

', '

'], + c12: ['

'], + c21: ['

'], + cNest: ['

', '', ''], + cOfS: ['

', '

'], + s11: ['

'], + sArr: ['

', '

'], + sNest: ['

', ''], + widget: ['

', '

'], +}; +const NAMES = Object.keys(MATLAB_TAGS); +const OLD = 'Class="cell" Dimension="1*1"'; + +const cellTags = (xml: string): string[] => xml.match(/<(?:P|Element)\b[^>]*Class="cell"[^>]*>/g) ?? []; + +/** One entry's `` block in a chunk. */ +function entryBlock(xml: string, name: string): string { + const at = xml.indexOf('

' + name + '

'); + expect(at, name).toBeGreaterThan(-1); + return xml.slice(xml.lastIndexOf('', at), xml.indexOf('\n ', at)); +} + +function open(bytes: Uint8Array, filename: string): { session: any; root: any; entry: (name: string) => any } { + const session = createSession(); + const root: any = ingest(session, bufferOf(bytes), { filename }); + session.setActiveContext(root); + const entry = (name: string): any => { + const hit = root.children.flatMap((s: any) => s.children).find((e: any) => e.name === name); + expect(hit, name).toBeTruthy(); + return hit; + }; + return { session, root, entry }; +} + +const savedChunk = (session: any, root: any): string => chunkOf(new Uint8Array(session.serializeSource(root.name).bytes)); +const sectionOf = (name: string): string => (name === 'widget' ? 'other' : 'design'); +const uuidFor = (k: number): string => '00000000-0000-4000-8c11-' + String(k).padStart(12, '0'); + +/** Each Cell's `_dimensions` in a text-shaped value, in document order. */ +function cellDims(value: unknown, out: unknown[] = []): unknown[] { + if (Array.isArray(value)) value.forEach((v) => cellDims(v, out)); + else if (value && typeof value === 'object') { + const v = value as Record; + if (v._array_type === 'Cell') out.push(v._dimensions); + Object.values(v).forEach((x) => cellDims(x, out)); + } + return out; +} + +/** Every entry of a text dictionary's JSON, by name. */ +function textEntries(text: string): Map> { + const out = new Map>(); + const walk = (v: unknown): void => { + if (Array.isArray(v)) v.forEach(walk); + else if (v && typeof v === 'object') { + const o = v as Record; + if (typeof o.name === 'string' && 'value' in o && 'metadata' in o) out.set(o.name, o); + else Object.values(o).forEach(walk); + } + }; + walk(JSON.parse(text)); + return out; +} + +describe('MATLAB states no Dimension on a 1x1 cell in a binary dictionary, at any place', () => { + it("cell1x1_binary.sldd: an entry's Value, a cell element, a struct field and an object's property", () => { + for (const name of NAMES) expect(cellTags(entryBlock(MATLAB_CHUNK, name)), name).toEqual(MATLAB_TAGS[name]); + expect(MATLAB_CHUNK).not.toContain(OLD); + }); + + it('cell1x1_text.sldd: `_dimensions` [1, 1] on every 1x1 cell', () => { + const text = textEntries(new TextDecoder().decode(TEXT)); + expect(cellDims(text.get('c11')!.value)).toEqual([[1, 1]]); + expect(cellDims(text.get('cNest')!.value)).toEqual([[1, 2], [1, 2], [1, 1]]); + expect(cellDims(text.get('sArr')!.value)).toEqual([[1, 1], [1, 1]]); + expect(cellDims(text.get('c12')!.value)).toEqual([[1, 2]]); + }); +}); + +describe('the binary writers state no Dimension on a 1x1 cell, as MATLAB does', () => { + for (const name of NAMES) { + it(`${name}, written from the model, has MATLAB's cell tags`, () => { + const { entry } = open(BINARY, 'cell1x1_binary.sldd'); + expect(cellTags(regenerateEntryXml(entry(name)))).toEqual(MATLAB_TAGS[name]); + }); + } + + it('the whole chunk written from the model has every cell tag MATLAB wrote', () => { + const { root } = open(BINARY, 'cell1x1_binary.sldd'); + const written = regenerateChunkXml(root); + expect(cellTags(written)).toEqual(cellTags(MATLAB_CHUNK)); + expect(written).not.toContain(OLD); + }); + + it('a removal that leaves one element: c12 without its second, and cNest without its first', () => { + const { session, root, entry } = open(BINARY, 'cell1x1_binary.sldd'); + expect(session.deleteNodeById(entry('c12').children[1].id)).toBe(true); + expect(session.deleteNodeById(entry('cNest').children[0].id)).toBe(true); + const saved = savedChunk(session, root); + expect(cellTags(entryBlock(saved, 'c12'))).toEqual(['

']); + expect(cellTags(entryBlock(saved, 'cNest'))).toEqual(['

', '', '']); + }); + + it('a 1x1 cell typed in: {7} over c12', () => { + const { session, root, entry } = open(BINARY, 'cell1x1_binary.sldd'); + session.setActive(root, entry('c12')); + expect(session.editProperty(entry('c12').id, 'Value', '{7}')).toBe(true); + const block = entryBlock(savedChunk(session, root), 'c12'); + expect(cellTags(block)).toEqual(['

']); + expect(block).toContain('

\n 7.0\n

'); + }); + + it('an edit inside a 1x1 cell keeps its tag (control: the merge keeps it from the file)', () => { + const { session, root, entry } = open(BINARY, 'cell1x1_binary.sldd'); + const element = entry('c11').children[0]; + session.setActive(root, element); + expect(session.editProperty(element.id, 'Value', '5')).toBe(true); + const field = entry('s11').children[0].children[0]; + session.setActive(root, field); + expect(session.editProperty(field.id, 'Value', '6')).toBe(true); + const saved = savedChunk(session, root); + expect(cellTags(entryBlock(saved, 'c11'))).toEqual(MATLAB_TAGS.c11); + expect(entryBlock(saved, 'c11')).toContain('5.0'); + expect(cellTags(entryBlock(saved, 's11'))).toEqual(MATLAB_TAGS.s11); + expect(entryBlock(saved, 's11')).toContain('6.0'); + }); + + it("every entry of the text twin, pasted into the binary dictionary, has MATLAB's cell tags", () => { + const text = open(TEXT, 'cell1x1_text.sldd'); + const { session, root } = open(BINARY, 'cell1x1_binary.sldd'); + NAMES.forEach((name, k) => { + const raw = text.entry(name).serialize() as Record; + const pasted = root.getSection(sectionOf(name)).parseEntry({ ...raw, name: 'p_' + name, metadata: { ...raw.metadata, uuid: uuidFor(k) } }); + expect(pasted, name).toBeTruthy(); + }); + const saved = savedChunk(session, root); + // The Widget's sorted, because the text twin holds its properties in another order (it + // writes only those away from the class default), and the paste keeps that order. + const inOrder = (name: string, tags: string[]): string[] => (name === 'widget' ? [...tags].sort() : tags); + for (const name of NAMES) expect(inOrder(name, cellTags(entryBlock(saved, 'p_' + name))), name).toEqual(inOrder(name, MATLAB_TAGS[name])); + }); + + it("every entry copied within the binary dictionary has MATLAB's cell tags", () => { + const { session, root, entry } = open(BINARY, 'cell1x1_binary.sldd'); + NAMES.forEach((name, k) => { + const raw = entry(name).serialize() as Record; + expect(root.getSection(sectionOf(name)).parseEntry({ ...raw, name: 'k_' + name, metadata: { ...raw.metadata, uuid: uuidFor(100 + k) } }), name).toBeTruthy(); + }); + const saved = savedChunk(session, root); + for (const name of NAMES) expect(cellTags(entryBlock(saved, 'k_' + name)), name).toEqual(MATLAB_TAGS[name]); + }); + + it('what the writers write now reads back as the value read from MATLAB\'s file', () => { + const { root, entry } = open(BINARY, 'cell1x1_binary.sldd'); + const written = regenerateChunkXml(root); + const session = createSession(); + const reread: any = session.addDataSource('mem://cell1x1', parseBinarySlddParts(written, {}), { path: 'cell1x1_binary.sldd' }); + const again = (name: string): any => reread.children.flatMap((s: any) => s.children).find((e: any) => e.name === name); + for (const name of NAMES) expect((again(name).serialize() as any).value, name).toEqual((entry(name).serialize() as any).value); + expect(cellDims((again('c11').serialize() as any).value)).toEqual([[1, 1]]); + expect(cellDims((again('cNest').serialize() as any).value)).toEqual([[1, 2], [1, 2], [1, 1]]); + }); +}); + +describe("the text writers keep MATLAB's `_dimensions` [1, 1] (control)", () => { + it('every binary entry pasted into the text twin, and an edit inside a 1x1 cell there', () => { + const binary = open(BINARY, 'cell1x1_binary.sldd'); + const { session, root, entry } = open(TEXT, 'cell1x1_text.sldd'); + NAMES.forEach((name, k) => { + const raw = binary.entry(name).serialize() as Record; + expect(root.getSection(sectionOf(name)).parseEntry({ ...raw, name: 'p_' + name, metadata: { ...raw.metadata, uuid: uuidFor(200 + k) } }), name).toBeTruthy(); + }); + const element = entry('c11').children[0]; + session.setActive(root, element); + expect(session.editProperty(element.id, 'Value', '5')).toBe(true); + const matlab = textEntries(new TextDecoder().decode(TEXT)); + const saved = textEntries(session.serializeSource(root.name).text); + for (const name of NAMES) expect(cellDims(saved.get('p_' + name)!.value), name).toEqual(cellDims(matlab.get(name)!.value)); + expect(saved.get('c11')!.value).toMatchObject({ _array_type: 'Cell', _dimensions: [1, 1], _elements: [5] }); + }); +}); + +describe('a cell that is not a 1x1 of one element keeps its Dimension (control)', () => { + // Only a hand edit leaves a text dictionary's cell whose `_dimensions` and elements disagree, or + // a 1x1 stated at rank 3. Each part of the writer's test stands for one of these: a [1, 1] of two + // elements, which with no Dimension would reopen as the 1x2 of its elements in a cell or a + // struct; a [1, 1, 1]; a [2, 1] and a [0, 1] of one element. Each is written with the dims it was + // read with, as before, and only the true 1x1 of one element states none. + const C = (dims: number[], elements: unknown[]) => ({ _array_type: 'Cell', _dimensions: dims, _elements: elements, _mw_element_type: 'MATLABArray' }); + const HAND_EDITED: [name: string, value: unknown, tag: string][] = [ + ['twoInOne', C([1, 1], [1, 2]), '

'], + ['rankThree', C([1, 1, 1], [7]), '

'], + ['column', C([2, 1], [7]), '

'], + ['noRows', C([0, 1], [7]), '

'], + ['oneByOne', C([1, 1], [7]), '

'], + ]; + const handEdited = (): Uint8Array => { + const json = JSON.parse(new TextDecoder().decode(bytesOf('rt_text.sldd'))); + const entries = json.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; + HAND_EDITED.forEach(([name, value], k) => entries.push({ name, metadata: { ...entries[0].metadata, uuid: uuidFor(300 + k) }, value })); + return new TextEncoder().encode(JSON.stringify(json, null, '\t')); + }; + + it('written from the model of the text dictionary', () => { + const { entry } = open(handEdited(), 'handEdited.sldd'); + for (const [name, , tag] of HAND_EDITED) expect(cellTags(regenerateEntryXml(entry(name))), name).toEqual([tag]); + }); + + it('pasted into a binary dictionary and saved', () => { + const text = open(handEdited(), 'handEdited.sldd'); + const { session, root } = open(BINARY, 'cell1x1_binary.sldd'); + HAND_EDITED.forEach(([name], k) => { + const raw = text.entry(name).serialize() as Record; + expect(root.getSection('design').parseEntry({ ...raw, name: 'p_' + name, metadata: { ...raw.metadata, uuid: uuidFor(400 + k) } }), name).toBeTruthy(); + }); + const saved = savedChunk(session, root); + for (const [name, , tag] of HAND_EDITED) expect(cellTags(entryBlock(saved, 'p_' + name)), name).toEqual([tag]); + }); +}); + +describe("MATLAB's reading of each spelling (cell1x1.truth.json)", () => { + it('reads every entry back as the value written, from its own file, the old spelling and core\'s', () => { + expect(TRUTH.release).toBe('2027a'); + expect(TRUTH.files.map((f) => f.file)).toEqual(['cell1x1_binary.sldd', 'cell1x1_text.sldd', 'cell1x1_patched.sldd', 'cell1x1_core.sldd']); + for (const f of TRUTH.files) { + expect(f.entries.map((e) => e.name).sort(), f.file).toEqual([...NAMES].sort()); + expect(f.entries.filter((e) => !e.same).map((e) => e.name), f.file).toEqual([]); + const read = Object.fromEntries(f.entries.map((e) => [e.name, e.class + ' ' + e.size.join('x')])); + expect(read, f.file).toMatchObject({ c11: 'cell 1x1', c11cell: 'cell 1x1', cNest: 'cell 1x2', c12: 'cell 1x2', c21: 'cell 2x1', s11: 'struct 1x1', widget: 'Widget 1x1' }); + } + const patched = TRUTH.files.find((f) => f.file === 'cell1x1_patched.sldd')!; + expect(patched.cellTags.filter((t) => t.includes(OLD)).length).toBe(TRUTH.patchedAdded); + expect(TRUTH.patchedAdded).toBe(cellTags(MATLAB_CHUNK).filter((t) => !t.includes('Dimension=') && !t.includes('Source="saveobj"')).length); + }); + + it('core writes now the cell tags MATLAB read in its regeneration of the file, which are MATLAB\'s own', () => { + const { root } = open(BINARY, 'cell1x1_binary.sldd'); + const ours = TRUTH.files.find((f) => f.file === 'cell1x1_core.sldd')!; + expect(ours.cellTags).toEqual(cellTags(MATLAB_CHUNK)); + expect(cellTags(regenerateChunkXml(root))).toEqual(ours.cellTags); + }); +}); diff --git a/test/dimsWriters.test.ts b/test/dimsWriters.test.ts index bdece7e8..4cbb7ca5 100644 --- a/test/dimsWriters.test.ts +++ b/test/dimsWriters.test.ts @@ -808,7 +808,7 @@ describe('a Matrix(…) header\'s digits are taken exactly wherever the value st const said = `0*${digits.replace(/^0+(?=\d)/, '')}`; return [ [binaryPaste(literal('double', dims)), `

`], - [binaryPaste(cell(literal('int8', dims))), `

`], + [binaryPaste(cell(literal('int8', dims))), `

`], [binaryPaste({ _array_type: 'Struct', _dimensions: [1, 1], _elements: [{ f: literal('double', dims) }], _fields: ['f'] }), `

`], [binaryPaste(parameter(literal('double', dims))), `

`], [binaryPaste(parameter(cell(literal('int8', dims)))), `

`], @@ -841,11 +841,11 @@ describe('a Matrix(…) header\'s digits are taken exactly wherever the value st // digits of the doubles it read (Size.headerDigits), so the header names a count a // double holds. const OLD = '

'; - const one = (element: string) => `

\n ${element}\n

`; + const one = (element: string) => `

\n ${element}\n

`; const FORMS: [string, string][] = [ ['a double', one('')], ['an int8', one('')], - ['a nested cell\'s', one('\n \n ')], + ['a nested cell\'s', one('\n \n ')], ['a rank-4', one('')], ['2^53 + 2', one('')], ['10^20', one('')], @@ -952,9 +952,9 @@ describe('a Matrix(…) header\'s digits are taken exactly wherever the value st const emptyStruct = { _array_type: 'Struct', _dimensions: [0, n], _elements: [], _fields: ['f'] }; const forms: [unknown, string][] = [ [emptyCell, `

`], - [cell(emptyCell), `

`], + [cell(emptyCell), `

`], [emptyStruct, `

`], - [cell(emptyStruct), `

`], + [cell(emptyStruct), `

`], [parameter(emptyCell), `

`], [parameter(emptyStruct), `

`], [parameter(cell(emptyCell)), `

`], @@ -989,7 +989,7 @@ describe('a Matrix(…) header\'s digits are taken exactly wherever the value st ['0*1152921504606847000', '0*1152921504606846976'], ['0*1000000000000000000000', '0*1000000000000000000000'], ]) { - const inCell = (dimension: string) => `

\n ${element(dimension)}\n

`; + const inCell = (dimension: string) => `

\n ${element(dimension)}\n

`; const cellEntry = opened(OLD, inCell(file)); const dEmpty = cellEntry.root.getSection('design').children.find((e: any) => e.name === 'dEmpty'); expect(dEmpty.serialize().value._elements, file).toEqual([{ _type: 'double', _value: `Matrix(${exact.split('*').join(',')})`, _binary_empty: true }]); @@ -1040,7 +1040,7 @@ describe('a Matrix(…) header\'s digits are taken exactly wherever the value st // same five places: Matrix(2,2) is Dimension="2*2">acbd. const want = [ '

acbd

', - '

acbd

', + '

acbd

', '

acbd

', '

acbd

', '

acbd

', diff --git a/test/emptyClassedValues.test.ts b/test/emptyClassedValues.test.ts index 555c171d..89a59264 100644 --- a/test/emptyClassedValues.test.ts +++ b/test/emptyClassedValues.test.ts @@ -332,14 +332,14 @@ describe('a typed `[]` is the 0x0 of its class', () => { }); it("and a binary dictionary's 0x0 logical in a cell, which its reader holds as one", () => { - const xml = hostXml().replace('

', '

\n \n

\n

'); + const xml = hostXml().replace('

', '

\n \n

\n

'); const { session, root } = open(xml); const member = entryNode(root, 'partCell').children[0]; expect(shown(member)).toEqual(['logical', '<0x0 logical>', [0, 0]]); const saved = entryOf(chunkOf(session.serializeSource(root.name)!.bytes!), 'partCell'); - expect(saved).toContain('

\n \n

'); + expect(saved).toContain('

\n \n

'); // The save keeps the unedited entry's bytes; the writer writes the same from the model. - expect(entryOf(regenerateChunkXml(root), 'partCell'), 'written from the model').toContain('

\n \n

'); + expect(entryOf(regenerateChunkXml(root), 'partCell'), 'written from the model').toContain('

\n \n

'); }); }); @@ -349,7 +349,9 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { // reads back as the class and size it is at an entry, a property, a field and a cell, and so // does a char's shaped literal; a 0x0 is MATLAB's own spelling of one. An object array's empty // reads back right in no spelling, so it is MATLAB's own: `[]` at a property and as an entry's - // value, `{"_type": cls, "_value": "[]"}` in a field and a cell. An N-D one is as it was. What + // value, `{"_type": cls, "_value": "[]"}` in a field and a cell. An N-D one is its MAT stream, + // which MATLAB reads back as what it is (test/parity/matlab/probe_lossy_empties_readback.m, + // graded by test/lossyEmptiesReadback.test.ts), where an N-D char was '' at every place. What // was written before was `[]` at a property and an entry for a numeric class and '' for any // other, a char '' at every place, and in a cell the header, an object array's too: an int8 // 0x3 reopened in MATLAB as a double 0x0, a logical 1x0 as a char. @@ -361,7 +363,7 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { return at === 'field' || at === 'cell' ? { _type: s.cls, _value: '[]' } : []; } if (s.dims.length > 2) { - return ''; + return expect.objectContaining({ _type: 'cdata' }); } if (zero(s)) { return s.cls === 'double' ? [] : { _type: s.cls, _value: '[]' }; @@ -370,7 +372,7 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { }; /** What a reopen holds for it: its class and size, an object array's class where its spelling states one. */ const reopened = (s: Shape, at: At): unknown[] => - object(s) ? (at === 'field' || at === 'cell' ? [s.cls, [0, 0]] : ['double', [0, 0]]) : s.dims.length > 2 ? ['char', [0, 0]] : [s.cls, s.dims]; + object(s) ? (at === 'field' || at === 'cell' ? [s.cls, [0, 0]] : ['double', [0, 0]]) : [s.cls, s.dims]; /** hostXml, with each shape a field of the struct property `Fields` too. */ const withFields = (): string => hostXml().replace( @@ -498,14 +500,15 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { expect(got).toEqual(want); }); - it("and a host's string or function handle `{_type, _emptyDims}` is written there as before, at each place", () => { - // No MAT stream holds an empty of either class, and MATLAB gives neither an object of its own - // (NOT_AN_OBJECT_CLASS), so a text dictionary was given one as the host handed it in at a - // struct field and a cell, which reopens as the string or function handle it is, and `[]` as - // an entry and at an object's property, a double 0x0. Taken for the binary reader's empty - // under its header, it was given that reader's spelling instead: '' at a field and a property, - // which reopens as a char 0x0, and the header in a cell; and a text dictionary holding one at - // a field or a cell, as it was written there, was rewritten by a save that edited nothing. + it("and a host's string `{_type, _emptyDims}` is written there as the String bag, at each place, and a function handle's is refused", () => { + // A text dictionary was given a host's string or function-handle empty as the host handed it + // in at a struct field and a cell, and `[]` as an entry and at an object's property, a double + // 0x0. MATLAB reads none of those back as what it is: the form as handed in reopens there as a + // char 0x0 in a cell, a double 1x0 as an entry, a double 1x1 as a property, and as a struct + // without the field (test/parity/matlab/lossy_empties_readback.truth.json). A string's is + // MATLAB's own spelling of one now, the String bag, which MATLAB reads back as the string it + // is at each place; a function handle's has no spelling MATLAB reads back as what it is, and + // the save is refused, naming where it stands (graded by test/lossyEmptiesReadback.test.ts). const host: { _type: string; _emptyDims: number[] }[] = [ { _type: 'string', _emptyDims: [0, 3] }, { _type: 'function_handle', _emptyDims: [1, 0] }, @@ -519,45 +522,63 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { widget._elements[0]._properties.Nothing = v; return widget; }; + const PLACES: [string, (v: unknown) => unknown, string][] = [ + ['s', (v) => v, ''], + ['f', inField, '.f'], + ['p', inProperty, '.Nothing'], + ['c', inCell, '{1}'], + ]; + const pasteInto = (session: any, txt: any, name: string, n: number, value: unknown) => { + const design = txt.getSection('design'); + design.parseEntry({ name, metadata: { ...design.children[0].metadata, uuid: '00000000-0000-4000-a500-' + String(n).padStart(12, '0') }, value: JSON.parse(JSON.stringify(value)) }); + }; const session = createSession(); const txt: any = ingest(session, buffer(bytesAt(TEXT_HOST)), { filename: 'custom_object_text.sldd' }); - const design = txt.getSection('design'); - const paste = (name: string, n: number, value: unknown) => - design.parseEntry({ name, metadata: { ...design.children[0].metadata, uuid: '00000000-0000-4000-a500-' + String(n).padStart(12, '0') }, value: JSON.parse(JSON.stringify(value)) }); - host.forEach((value, k) => { - paste('s' + k, 4 * k + 1, value); - paste('f' + k, 4 * k + 2, inField(value)); - paste('p' + k, 4 * k + 3, inProperty(value)); - paste('c' + k, 4 * k + 4, inCell(value)); - }); + PLACES.forEach(([name, wrap], k) => pasteInto(session, txt, name, k + 1, wrap(host[0]))); const text = session.serializeSource(txt.name)!.text!; const entries: any[] = JSON.parse(text).__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; const valueOf = (name: string) => entries.find((e) => e.name === name).value; const again: any = ingest(createSession(), buffer(strToU8(text)), { filename: 'reopened_text.sldd' }); const of = (n: any) => [n.className, n.dims]; // Each place's written value, then the class and size it reopens as. - const got = host.map((value, k) => [ - JSON.stringify(value), - valueOf('s' + k), - valueOf('f' + k)?._elements?.[0]?.f, - valueOf('p' + k)?._elements?.[0]?._properties?.Nothing, - valueOf('c' + k)?._elements?.[0], - of(entryNode(again, 's' + k)), - of(childOf(entryNode(again, 'f' + k), 'f')), - of(childOf(entryNode(again, 'p' + k), 'Nothing')), - of(entryNode(again, 'c' + k).children[0]), - ]); - const want = host.map((value) => { - const opened = [value._type, value._emptyDims]; - const double0 = ['double', [0, 0]]; - return [JSON.stringify(value), [], value, [], value, double0, opened, double0, opened]; + const got = [ + valueOf('s'), + valueOf('f')?._elements?.[0]?.f, + valueOf('p')?._elements?.[0]?._properties?.Nothing, + valueOf('c')?._elements?.[0], + of(entryNode(again, 's')), + of(childOf(entryNode(again, 'f'), 'f')), + of(childOf(entryNode(again, 'p'), 'Nothing')), + of(entryNode(again, 'c').children[0]), + ]; + const bag = { _array_type: 'String', _dimensions: [0, 3], _elements: [], _mw_element_type: 'MATLABArray' }; + const string03 = ['string', [0, 3]]; + // A function handle's, pasted alone at each place: the save is refused, and so is a copy. + const refused = PLACES.map(([name, wrap, path], k) => { + const s = createSession(); + const t: any = ingest(s, buffer(bytesAt(TEXT_HOST)), { filename: 'custom_object_text.sldd' }); + pasteInto(s, t, name, 10 + k, wrap(host[1])); + const messages: string[] = []; + for (const write of [() => s.serializeSource(t.name), () => entryNode(t, name).serialize()]) { + try { + write(); + messages.push('written'); + } catch (e) { + messages.push((e as Error).name + ': ' + (e as Error).message); + } + } + return [name + path, ...messages]; }); - // And a text dictionary holding one at a field and in a cell, as it was written there, is - // saved unedited as the same file. Each is the last entry of the last section, as a save lists it. + const refusal = (name: string, path: string) => + `MatBudgetError: Cannot write "${name}": ${name}${path} is an empty function handle (1x0), and a text dictionary has no spelling of it that MATLAB reads back as it is. Nothing was written.`; + // And a text dictionary holding either as a host handed it in, at each place, is saved unedited + // as the same file: at a field and in a cell, as it was written there before; as an entry and + // at an object's property, where a save that edited nothing wrote `[]`. Each is the last entry + // of the last section, as a save lists it. const proto = held[held.length - 1]; host.forEach((value, k) => { - [inField(value), inCell(value)].forEach((v, j) => - held.push({ ...proto, name: ['zf', 'zc'][j] + k, metadata: { ...proto.metadata, uuid: '00000000-0000-4000-a500-' + String(100 + 2 * k + j).padStart(12, '0') }, value: v }), + PLACES.forEach(([name, wrap], j) => + held.push({ ...proto, name: 'z' + name + k, metadata: { ...proto.metadata, uuid: '00000000-0000-4000-a500-' + String(100 + 4 * k + j).padStart(12, '0') }, value: wrap(value) }), ); }); const file = JSON.stringify(json, null, '\t'); @@ -566,12 +587,17 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { const saved = resave.serializeSource(reopened.name)!.text!; const zValues = (t: string) => JSON.parse(t).__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries.filter((e: any) => e.name.startsWith('z')).map((e: any) => [e.name, e.value]); - expect({ pasted: got, unedited: [zValues(saved), saved === file] }).toEqual({ pasted: want, unedited: [zValues(file), true] }); + expect({ pasted: got, refused, unedited: [zValues(saved), saved === file] }).toEqual({ + pasted: [bag, bag, bag, bag, string03, string03, string03, string03], + refused: PLACES.map(([name, , path]) => [name + path, refusal(name, path), refusal(name, path)]), + unedited: [zValues(file), true], + }); }); it('and shows there what the save writes and a reopen reads', () => { // Held as the binary reader holds it, a pasted 0x0x2 char showed `<0x0x2 char>` and an int8 - // 0x3 property `[ ]` at 0x3, and the save wrote '' and `[]`, which reopened as a 0x0. + // 0x3 property `[ ]` at 0x3, and the save wrote '' and `[]`, which reopened as a 0x0. The + // 0x0x2 char is its MAT stream now, and shows and reopens as what it is. const session = createSession(); const bin: any = ingest(session, buffer(zipSync({ ...unzipSync(bytesAt(HOST)), 'data/chunk0.xml': strToU8(hostXml()) })), { filename: 'custom_object_binary.sldd' }); const txt: any = ingest(session, buffer(bytesAt(TEXT_HOST)), { filename: 'custom_object_text.sldd' }); @@ -585,7 +611,7 @@ describe('a text dictionary is given the spelling MATLAB reads back', () => { }); const again: any = ingest(createSession(), buffer(strToU8(session.serializeSource(txt.name)!.text!)), { filename: 'reopened_text.sldd' }); expect(names.map((name) => tree(entryNode(again, name + 'Copy')))).toEqual(pasted); - expect(pasted[names.indexOf('eCh3')]).toEqual([['eCh3Copy', 'char', "''", [0, 0], true]]); + expect(pasted[names.indexOf('eCh3')]).toEqual([['eCh3Copy', 'char', '<0x0x2 char>', [0, 0, 2], false]]); }); it('and one the text dictionary holds itself is written as it holds it', () => { diff --git a/test/fixtures/cell1x1.truth.json b/test/fixtures/cell1x1.truth.json new file mode 100644 index 00000000..77d7df9a --- /dev/null +++ b/test/fixtures/cell1x1.truth.json @@ -0,0 +1,643 @@ +{ + "version": "27.1.0.3409468 (R2027a) Prerelease", + "release": "2027a", + "patchedAdded": 17, + "files": [ + { + "file": "cell1x1_binary.sldd", + "cellTags": [ + "

", + "

", + "

", + "", + "

", + "

", + "

", + "

", + "

", + "

", + "

", + "

", + "", + "", + "

", + "

", + "

", + "

", + "

", + "

", + "", + "

", + "

" + ], + "entries": [ + { + "name": "c11", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11char", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11str", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11obj", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11empty", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11cell", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "cNest", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c12", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c21", + "class": "cell", + "size": [ + 2, + 1 + ], + "same": true + }, + { + "name": "c0", + "class": "cell", + "size": [ + 0, + 0 + ], + "same": true + }, + { + "name": "s11", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sNest", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sArr", + "class": "struct", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "cOfS", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "widget", + "class": "Widget", + "size": [ + 1, + 1 + ], + "same": true + } + ] + }, + { + "file": "cell1x1_text.sldd", + "cellTags": [], + "entries": [ + { + "name": "c11", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11char", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11str", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11obj", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11empty", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11cell", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "cNest", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c12", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c21", + "class": "cell", + "size": [ + 2, + 1 + ], + "same": true + }, + { + "name": "c0", + "class": "cell", + "size": [ + 0, + 0 + ], + "same": true + }, + { + "name": "s11", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sNest", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sArr", + "class": "struct", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "cOfS", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "widget", + "class": "Widget", + "size": [ + 1, + 1 + ], + "same": true + } + ] + }, + { + "file": "cell1x1_patched.sldd", + "cellTags": [ + "

", + "

", + "

", + "", + "

", + "

", + "

", + "

", + "

", + "

", + "

", + "

", + "", + "", + "

", + "

", + "

", + "

", + "

", + "

", + "", + "

", + "

" + ], + "entries": [ + { + "name": "c11", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11char", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11str", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11obj", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11empty", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11cell", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "cNest", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c12", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c21", + "class": "cell", + "size": [ + 2, + 1 + ], + "same": true + }, + { + "name": "c0", + "class": "cell", + "size": [ + 0, + 0 + ], + "same": true + }, + { + "name": "s11", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sNest", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sArr", + "class": "struct", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "cOfS", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "widget", + "class": "Widget", + "size": [ + 1, + 1 + ], + "same": true + } + ] + }, + { + "file": "cell1x1_core.sldd", + "cellTags": [ + "

", + "

", + "

", + "", + "

", + "

", + "

", + "

", + "

", + "

", + "

", + "

", + "", + "", + "

", + "

", + "

", + "

", + "

", + "

", + "", + "

", + "

" + ], + "entries": [ + { + "name": "c11", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11char", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11str", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11obj", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11empty", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "c11cell", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "cNest", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c12", + "class": "cell", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "c21", + "class": "cell", + "size": [ + 2, + 1 + ], + "same": true + }, + { + "name": "c0", + "class": "cell", + "size": [ + 0, + 0 + ], + "same": true + }, + { + "name": "s11", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sNest", + "class": "struct", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "sArr", + "class": "struct", + "size": [ + 1, + 2 + ], + "same": true + }, + { + "name": "cOfS", + "class": "cell", + "size": [ + 1, + 1 + ], + "same": true + }, + { + "name": "widget", + "class": "Widget", + "size": [ + 1, + 1 + ], + "same": true + } + ] + } + ] +} \ No newline at end of file diff --git a/test/fixtures/cell1x1_binary.sldd b/test/fixtures/cell1x1_binary.sldd new file mode 100644 index 00000000..07ca10e5 Binary files /dev/null and b/test/fixtures/cell1x1_binary.sldd differ diff --git a/test/fixtures/cell1x1_text.sldd b/test/fixtures/cell1x1_text.sldd new file mode 100644 index 00000000..d9ab1f73 --- /dev/null +++ b/test/fixtures/cell1x1_text.sldd @@ -0,0 +1,505 @@ +{ + "__MW_TEXT_COREPROPERTIES__": { + "release": "R2027a" + }, + "__MW_TEXT_PARTS__": { + "__MW_TEXT_PART__/data/chunk0": { + "__MW_TEXT_content": { + "entries": [ + { + "name": "c0", + "metadata": { + "uuid": "e10d9b7a-54a3-4b30-9c42-c07d96b112e0", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939684", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 0, + 0 + ], + "_elements": [], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c11", + "metadata": { + "uuid": "e803b004-9812-4909-90cc-61e8d8a48cf4", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.938455", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 1 + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c11cell", + "metadata": { + "uuid": "130779d1-aa33-4bc0-8c27-2efbb455021d", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939210", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 2 + ] + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c11char", + "metadata": { + "uuid": "4023dffb-ab36-4e69-9519-607da5874b4b", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.938582", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + "ab" + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c11empty", + "metadata": { + "uuid": "92b66dda-95d2-4263-8368-db888567d752", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939105", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + [] + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c11obj", + "metadata": { + "uuid": "44c73250-0182-4b9b-b8e6-a716902db0e1", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.938895", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_array_class": "Simulink.Parameter", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "CoderInfo": { + "_id": "2", + "_object_class": "Simulink.CoderInfo", + "_properties": { + "CSCPackageName": "Simulink", + "CustomAttributes": { + "_id": "3", + "_object_class": "SimulinkCSC.AttribClass_Simulink_Default", + "_properties": {} + }, + "CustomStorageClass": "Default", + "ParameterOrSignal": "Parameter", + "StorageClass": "Auto" + } + }, + "Complexity": "real", + "Dimensions": [ + 1, + 1 + ], + "Value": 3 + } + } + ] + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c11str", + "metadata": { + "uuid": "8dca55d2-ccd1-4ab2-a0a6-ef4244704337", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.938732", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + [ + "a" + ] + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c12", + "metadata": { + "uuid": "e4c9d194-73ec-4e59-943f-ca4e537a5c8e", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939447", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 2 + ], + "_elements": [ + 1, + 2 + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "c21", + "metadata": { + "uuid": "d33da298-dca6-4ee7-8896-60b8fb86e803", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939564", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 2, + 1 + ], + "_elements": [ + 1, + 2 + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "cNest", + "metadata": { + "uuid": "3c71c7c7-b7f8-4316-b2ab-d42e9837de65", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939338", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 2 + ], + "_elements": [ + 1, + { + "_array_type": "Cell", + "_dimensions": [ + 1, + 2 + ], + "_elements": [ + 2, + { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 3 + ] + } + ] + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "cOfS", + "metadata": { + "uuid": "12afbd06-3169-4107-982e-b394d4db3ae4", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.940096", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_array_type": "Struct", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "c": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 6 + ] + } + } + ] + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "s11", + "metadata": { + "uuid": "deca1499-09bb-4677-8990-07ac5458d5c6", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939791", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Struct", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "c": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 4 + ] + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "sArr", + "metadata": { + "uuid": "70cf96e9-4ff9-466d-8e4b-3b75fe52e72a", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939998", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Struct", + "_dimensions": [ + 1, + 2 + ], + "_elements": [ + { + "c": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 7 + ] + } + }, + { + "c": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 8 + ] + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "sNest", + "metadata": { + "uuid": "cf47a515-3bcb-4ed7-a9d7-4cfa5fc679c9", + "namespace": "dacaf35e-55a5-454d-a7c1-93db038a210e", + "lastmod": "20261018T141413.939895", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_type": "Struct", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "a": 1, + "c": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 5 + ] + } + ] + } + } + ], + "_mw_element_type": "MATLABArray" + } + }, + { + "name": "widget", + "metadata": { + "uuid": "cfb79bfb-44d9-4868-86c7-1b47bf7cfc35", + "namespace": "42516768-0ace-4981-8ac7-0a9b32cba471", + "lastmod": "20261018T141413.940251", + "modifiedby": "fixture", + "isderived": "0" + }, + "value": { + "_array_class": "Widget", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "_id": "1", + "_properties": { + "Cells": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 9 + ] + }, + "Nested": { + "_array_type": "Struct", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + { + "c": { + "_array_type": "Cell", + "_dimensions": [ + 1, + 1 + ], + "_elements": [ + 10 + ] + } + } + ] + } + } + } + ], + "_mw_element_type": "MATLABArray" + } + } + ], + "Dictionary References": [], + "AllowAccessBWS": false + } + } + } +} \ No newline at end of file diff --git a/test/fixtures/lossy_empties_readback_binary.sldd b/test/fixtures/lossy_empties_readback_binary.sldd new file mode 100644 index 00000000..2b69cece Binary files /dev/null and b/test/fixtures/lossy_empties_readback_binary.sldd differ diff --git a/test/fixtures/make_cell1x1.m b/test/fixtures/make_cell1x1.m new file mode 100644 index 00000000..2975537d --- /dev/null +++ b/test/fixtures/make_cell1x1.m @@ -0,0 +1,218 @@ +function make_cell1x1(outDir, phase, oursPath) + % Copyright 2026 The MathWorks, Inc. + % Authors cell1x1_binary.sldd and cell1x1_text.sldd: where MATLAB states the Dimension of a + % 1x1 cell. test/cellOneByOneDimension.test.ts holds the writers to it. Run: + % + % mw -using Bmain matlab -nodesktop -batch "cd(''); make_cell1x1" + % + % (One line: mw splits a -batch argument on newlines. Verify by the WROTE lines and the + % trailing MAKE_CELL1X1_DONE; any FAIL line means a file says something other than this + % header promises.) `outDir` defaults to this folder. `phase` is 'write', 'read' or (the + % default) both. 'read' re-reads the dictionaries in a fresh MATLAB, and with `oursPath` + % it also reads that file: cell1x1_binary.sldd with every entry written by core + % (cellOneByOneDimension.test.ts says how to make it). + % + % Writes: + % cell1x1_binary.sldd the values below, FileFormat 'compressed-binary' + % cell1x1_text.sldd the same values, FileFormat 'uncompressed-text' + % cell1x1.truth.json MATLAB's reading of the binary file, of a copy of it with + % Dimension="1*1" added to every cell that has none (the spelling + % core's writers gave a 1x1 cell before), and of `oursPath`; and + % every cell open tag in the chunk of each + % + % WHAT IT MEASURES. A 1x1 cell at each place a cell goes: an entry's Value (holding a + % double, a char, a string, an object, an empty and a cell), a cell element (nested to two + % levels), a struct field, a field of each element of a struct array, a field of a struct + % in a cell, and the cell and struct properties of a plain MCOS object (Widget, in ./mcos; + % its other properties stay at the sentinel 0, and it is in Other Data, since Design Data + % refuses it). The controls are a 1x2, a 2x1 and a 0x0 cell. MATLAB writes no Dimension on + % a 1x1 cell in a binary dictionary, at any of these places, and `_dimensions` [1, 1] on + % every one in a text dictionary. + % + % THE TRUTH, per file and entry: the class and size MATLAB reads, and `same`, whether the + % value read is the value written (isequal). Each file is read from a copy at a path + % MATLAB has not opened, after closeAll. + % + % NO ACCOUNT NAME IN THE FILE: USER is set to 'fixture' while the dictionaries are written + % (it is each entry's LastModBy), and the zip's parts are searched for the account name; a + % hit is a FAIL. + here = fileparts(mfilename('fullpath')); + if nargin < 1 || isempty(outDir) + outDir = here; + end + if nargin < 2 || isempty(phase) + phase = 'both'; + end + if nargin < 3 + oursPath = ''; + end + addpath(fullfile(here, 'mcos')); + failures = {}; + user = getenv('USER'); + if strcmp(user, 'fixture') + user = ''; + end + + w = Widget; + w.Cells = {9}; + w.Nested = struct('c', {{10}}); + V = {'c11', {1}; 'c11char', {'ab'}; 'c11str', {"a"}; 'c11obj', {Simulink.Parameter(3)}; ... + 'c11empty', {[]}; 'c11cell', {{2}}; 'cNest', {1, {2, {3}}}; ... + 'c12', {1, 2}; 'c21', {1; 2}; 'c0', {}; ... + 's11', struct('c', {{4}}); 'sNest', struct('a', 1, 'c', {{{5}}}); ... + 'sArr', struct('c', {{7}, {8}}); 'cOfS', {struct('c', {{6}})}; ... + 'widget', w}; + formats = {'compressed-binary', 'cell1x1_binary.sldd'; 'uncompressed-text', 'cell1x1_text.sldd'}; + ddPath = fullfile(outDir, formats{1, 2}); + + if any(strcmp(phase, {'write', 'both'})) + setenv('USER', 'fixture'); + restoreUser = onCleanup(@() setenv('USER', user)); + for f = 1:size(formats, 1) + Simulink.data.dictionary.closeAll('-discard'); + p = fullfile(outDir, formats{f, 2}); + if exist(p, 'file'), delete(p); end + dd = Simulink.data.dictionary.create(p); + dd.FileFormat = formats{f, 1}; + for i = 1:size(V, 1) + try + addEntry(getSection(dd, sectionOf(V{i, 1})), V{i, 1}, V{i, 2}); + catch err + failures{end + 1} = sprintf('%s refused: %s', V{i, 1}, strrep(err.message, newline, ' ')); %#ok + end + end + saveChanges(dd); close(dd); + Simulink.data.dictionary.closeAll('-discard'); + fprintf('WROTE %s bytes=%d\n', formats{f, 2}, dir(p).bytes); + end + clear restoreUser; + end + + if ~any(strcmp(phase, {'read', 'both'})) + report(failures); + return; + end + + % The patched copy: Dimension="1*1" on every cell MATLAB wrote with none, a string's saveobj + % cell aside (no writer of core's ever spelled one there). + tmp = tempname; mkdir(tmp); + unzip(ddPath, tmp); + chunk = fullfile(tmp, 'data', 'chunk0.xml'); + x = fileread(chunk); + pattern = '(<(?:P Name="[^"]*"|Element) Class="cell")>'; + added = numel(regexp(x, pattern, 'match')); + x2 = regexprep(x, pattern, '$1 Dimension="1*1">'); + if added == 0 + failures{end + 1} = 'the patched copy did not change as intended'; + end + fid = fopen(chunk, 'w', 'n', 'UTF-8'); fwrite(fid, x2, 'char'); fclose(fid); + patched = fullfile(tempdir, 'cell1x1_patched.sldd'); + rezip(tmp, patched); + rmdir(tmp, 's'); + fprintf('PATCHED added=%d -> %s\n', added, patched); + + T = struct(); + T.version = version; + T.release = version('-release'); + T.patchedAdded = added; + T.files = struct('file', {}, 'cellTags', {}, 'entries', {}); + sources = {ddPath, 'cell1x1_binary.sldd'; fullfile(outDir, formats{2, 2}), 'cell1x1_text.sldd'; patched, 'cell1x1_patched.sldd'}; + if ~isempty(oursPath) + sources(end + 1, :) = {oursPath, 'cell1x1_core.sldd'}; + end + for f = 1:size(sources, 1) + Simulink.data.dictionary.closeAll('-discard'); + copyDir = tempname; mkdir(copyDir); + copyPath = fullfile(copyDir, ['fresh_' sources{f, 2}]); + copyfile(sources{f, 1}, copyPath); + tags = {}; + if ~contains(sources{f, 2}, '_text') + unz = tempname; mkdir(unz); + unzip(copyPath, unz); + tags = regexp(fileread(fullfile(unz, 'data', 'chunk0.xml')), '<(?:P|Element)\s[^>]*Class="cell"[^>]*>', 'match'); + rmdir(unz, 's'); + end + dd = Simulink.data.dictionary.open(copyPath); + E = struct('name', {}, 'class', {}, 'size', {}, 'same', {}); + for i = 1:size(V, 1) + try + v = getValue(getEntry(getSection(dd, sectionOf(V{i, 1})), V{i, 1})); + catch err + failures{end + 1} = sprintf('%s: %s not read: %s', sources{f, 2}, V{i, 1}, err.message); %#ok + continue; + end + ent = struct('name', V{i, 1}, 'class', class(v), 'size', size(v), 'same', isequal(v, V{i, 2})); + if ~ent.same + failures{end + 1} = sprintf('%s: %s read back as another value than was written', sources{f, 2}, V{i, 1}); %#ok + end + E(end + 1) = ent; %#ok + end + close(dd); + Simulink.data.dictionary.closeAll('-discard'); + rmdir(copyDir, 's'); + T.files(end + 1) = struct('file', sources{f, 2}, 'cellTags', {tags}, 'entries', E); + fprintf('READ %s: %s\n', sources{f, 2}, strjoin(arrayfun(@(t) sprintf('%s=%s%s', t.name, ... + mat2str(t.size), mark(t.same)), E, 'UniformOutput', false), ' ')); + end + + % No account name in any part of either dictionary. + for f = 1:size(formats, 1) + p = fullfile(outDir, formats{f, 2}); + texts = {}; + if f == 1 + tmp = tempname; mkdir(tmp); + unzip(p, tmp); + parts = dir(fullfile(tmp, '**', '*')); + for i = 1:numel(parts) + if ~parts(i).isdir + texts{end + 1} = fileread(fullfile(parts(i).folder, parts(i).name)); %#ok + end + end + rmdir(tmp, 's'); + else + texts = {fileread(p)}; + end + if ~isempty(user) && any(cellfun(@(t) contains(t, user), texts)) + failures{end + 1} = sprintf('%s holds the account name', formats{f, 2}); %#ok + end + end + + fid = fopen(fullfile(outDir, 'cell1x1.truth.json'), 'w', 'n', 'UTF-8'); + fwrite(fid, jsonencode(T, 'PrettyPrint', true), 'char'); + fclose(fid); + fprintf('WROTE cell1x1.truth.json\n'); + report(failures); +end + +function report(failures) + if isempty(failures) + fprintf('MAKE_CELL1X1_DONE\n'); + else + fprintf('FAIL %s\n', failures{:}); + fprintf('MAKE_CELL1X1_FAILED %d\n', numel(failures)); + end +end + +function s = sectionOf(name) + % Design Data refuses a plain MCOS object, so the Widget goes where MATLAB takes one. + s = 'Design Data'; + if strcmp(name, 'widget') + s = 'Other Data'; + end +end + +function s = mark(same) + % A read-back that is not the value written is flagged with a `!` in the READ line. + s = ''; + if ~same + s = '!'; + end +end + +function rezip(folder, dest) + % zip() takes the part names relative to `folder`, so the package keeps its layout. + items = dir(folder); names = {items.name}; names = names(~ismember(names, {'.', '..'})); + z = [tempname '.zip']; + zip(z, names, folder); + movefile(z, dest, 'f'); +end diff --git a/test/fixtures/make_cell1x1_core.mjs b/test/fixtures/make_cell1x1_core.mjs new file mode 100644 index 00000000..1956a326 --- /dev/null +++ b/test/fixtures/make_cell1x1_core.mjs @@ -0,0 +1,24 @@ +// Copyright 2026 The MathWorks, Inc. +// Writes cell1x1_core.sldd: cell1x1_binary.sldd with its chunk written by core from the model +// (regenerateChunkXml), and every other part as MATLAB wrote it. make_cell1x1.m's 'read' phase +// has MATLAB read it back. Run it from the repository root after `npm run build`, since it reads +// the built package: +// +// node test/fixtures/make_cell1x1_core.mjs +import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { join } from 'node:path'; +import { strToU8, unzipSync, zipSync } from 'fflate'; +import { createSession, ingest } from '../../dist/index.js'; +import { regenerateChunkXml } from '../../dist/datamodel/parser/BinarySlddSerializer.js'; + +const out = process.argv[2]; +if (!out || !out.startsWith('/')) { + throw new Error('usage: node test/fixtures/make_cell1x1_core.mjs '); +} +const u8 = new Uint8Array(readFileSync(new URL('./cell1x1_binary.sldd', import.meta.url))); +const root = ingest(createSession(), u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength), { filename: 'cell1x1_binary.sldd' }); +const parts = unzipSync(u8); +parts['data/chunk0.xml'] = strToU8(regenerateChunkXml(root)); +mkdirSync(out, { recursive: true }); +writeFileSync(join(out, 'cell1x1_core.sldd'), zipSync(parts, { level: 6 })); +console.log('WROTE', join(out, 'cell1x1_core.sldd')); diff --git a/test/hostStringEmptiesBinary.test.ts b/test/hostStringEmptiesBinary.test.ts new file mode 100644 index 00000000..f4f1e6f9 --- /dev/null +++ b/test/hostStringEmptiesBinary.test.ts @@ -0,0 +1,230 @@ +// Copyright 2026 The MathWorks, Inc. +// +// An empty string or an empty function handle, as a host hands one in, `{_type, _emptyDims}`, +// pasted into a BINARY dictionary at an object's property or at a Simulink.Parameter's Value, and +// a copy of one pasted there at an entry. Graded against what MATLAB R2027a read back of each +// spelling core writes (test/parity/matlab/probe_host_string_empties_binary.m, which opens the +// dictionaries host_string_empties_binary.mjs saves through core's API, and writes +// host_string_empties_binary.truth.json): +// - the String bag, written in a binary dictionary as MATLAB's own saveobj envelope, reads back +// as the string it is at an entry, a cell, a field and an object's property; +// - `Class="string" Dimension="0*3"/>` reads back as a double 1x1 at an object's property and +// cannot be read at all at an entry, a cell or a field ("Invalid string returned."); +// - at a Parameter's Value every spelling reads back as a double 0x0: MATLAB holds no empty +// string there, and refuses one (lossy_empties_readback.truth.json, Str03 at param). +// +// MatWriter.emptyDimsHeldForm hands the host's string empty on as the String bag, so the binary +// property writer writes the envelope. Before PR #147 it was handed on as nothing, and written +// `Class="double" Dimension="0*0"`, a double 0x0; at that PR's first head, as the binary reader's +// empty, `Class="string" Dimension="0*3"/>`. An empty function handle is refused there, as it is +// at an entry, a cell and a field (FH-PASTE; the maintainer's group F ruling, group 1: refuse what +// the writers cannot spell), where it was written as a double 0x0. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { strFromU8, unzipSync } from 'fflate'; +import { createSession, ingest } from '../src/index.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +type Place = 'entry' | 'cell' | 'field' | 'param' | 'prop'; +type Reads = { class: string; size: number[] } | { error: string }; +type Row = { id: string; form: string; dims: number[]; place: Place; name: string; spelling: string; reads: Reads }; + +const at = (rel: string) => fileURLToPath(new URL(rel, import.meta.url)); +const TRUTH: { release: string; rows: Row[] } = JSON.parse(readFileSync(at('./parity/matlab/host_string_empties_binary.truth.json'), 'utf8')); +const BINARY = new Uint8Array(readFileSync(at('./fixtures/lossy_empties_readback_binary.sldd'))); +const buffer = (u8: Uint8Array) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; +const DIMS = [[0, 3], [0, 0], [1, 0]]; +const PATH: Record = { entry: '', cell: '{1}', field: '.f', param: '.Value', prop: '.Scalar' }; +const PREFIX: Record = { entry: 'e_', cell: 'c_', field: 's_', param: 'p_', prop: 'w_' }; + +/** MATLAB's reading of `spelling` at `place`, or undefined if it was never asked. */ +const matlabRead = (place: Place, spelling: string): Reads | undefined => TRUTH.rows.find((r) => r.place === place && r.spelling === spelling)?.reads; +const reads = (cls: string, size: number[]): Reads => ({ class: cls, size }); + +// Where the element at each place opens in the entry's XML (the last tag of the match), as +// host_string_empties_binary.mjs finds it. +const OPENS: Record = { + entry: /

]*>/, + cell: /

]*>\s*]*>/, + field: /

]*>/, + param: /\s*

]*>/, + prop: /

]*>/, +}; +/** The element of `xml` at `place` in entry `name`, through its close, with no whitespace between tags. */ +function spellingIn(xml: string, name: string, place: Place): string { + const from = xml.indexOf('>' + name + '<'); + const m = OPENS[place].exec(xml.slice(from)); + if (from < 0 || !m) { + return '?'; + } + const start = from + m.index + m[0].lastIndexOf('<'); + const tag = /<(\/?)[^>]*?(\/?)>/g; + tag.lastIndex = start; + let depth = 0; + for (let t = tag.exec(xml); t; t = tag.exec(xml)) { + depth += t[1] ? -1 : t[2] ? 0 : 1; + if (depth === 0) { + return xml.slice(start, tag.lastIndex).replace(/>\s+<'); + } + } + return '?'; +} + +/** The value of an entry holding `v` at `place`; the Parameter and the Widget are MATLAB's own, copied out of the file. */ +function valueAt(bin: any, place: Place, v: unknown, dims: number[]): unknown { + const copied = (section: string, name: string) => JSON.parse(JSON.stringify(bin.getSection(section).children.find((e: any) => e.name === name).serialize().value)); + switch (place) { + case 'entry': + return v; + case 'cell': + return { _array_type: 'Cell', _dimensions: [1, 1], _elements: [v], _mw_element_type: 'MATLABArray' }; + case 'field': + return { _array_type: 'Struct', _dimensions: [1, 1], _elements: [{ f: v }], _fields: ['f'], _mw_element_type: 'MATLABArray' }; + case 'param': { + const p = copied('design', 'p_D022'); + p._elements[0]._properties.Value = v; + p._elements[0]._properties.Dimensions = dims; + return p; + } + case 'prop': { + const w = copied('other', 'w_D022'); + w._elements[0]._properties.Scalar = v; + return w; + } + } +} + +/** The node at `place` of `entry`. */ +function nodeAt(entry: any, place: Place): any { + const child = (n: any, c: string) => n?.children?.find((x: any) => x.name === c); + switch (place) { + case 'entry': + return entry; + case 'cell': + return entry?.children?.[0]; + case 'field': + return child(entry, 'f'); + case 'param': + return entry?._valueNode ?? child(entry, 'Value'); + case 'prop': + return child(entry, 'Scalar'); + } +} + +type Saved = { spelling: string; matlab: Reads | undefined; reopened: unknown[] } | { refused: string; message: string }; + +let seq = 0; +/** `v` pasted at `place` into MATLAB's binary dictionary as entry `name`, the dictionary saved, and the entry reopened; or the save's refusal. */ +function pastedAndSaved(name: string, place: Place, v: unknown, dims: number[]): Saved { + const session = createSession(); + const bin: any = ingest(session, buffer(BINARY), { filename: 'lossy_empties_readback_binary.sldd' }); + const into = bin.getSection(place === 'prop' ? 'other' : 'design'); + into.parseEntry({ name, metadata: { ...into.children[0].metadata, uuid: '00000000-0000-4000-a940-' + String(++seq).padStart(12, '0') }, value: valueAt(bin, place, v, dims) }); + let bytes: Uint8Array; + try { + bytes = new Uint8Array(session.serializeSource(bin.name)!.bytes!); + } catch (e) { + return { refused: (e as Error).name, message: (e as Error).message }; + } + const spelling = spellingIn(strFromU8(unzipSync(bytes)['data/chunk0.xml']), name, place); + const again: any = ingest(createSession(), buffer(bytes), { filename: 'resaved.sldd' }); + const node = nodeAt(again.children.flatMap((s: any) => s.children).find((e: any) => e.name === name), place); + return { spelling, matlab: matlabRead(place, spelling), reopened: [node?.className, node?.dims] }; +} + +describe("an empty string or function handle pasted into a binary dictionary, graded against MATLAB's reading", () => { + it('the truth is MATLAB\'s: the String bag reads back as the string it is but at a Value, the bare string tag as another value or nothing', () => { + expect(TRUTH.release).toBe('2027a'); + expect(TRUTH.rows.length).toBe(50); + const byForm = (form: string, place: Place) => TRUTH.rows.filter((r) => r.form === form && r.place === place); + for (const place of ['entry', 'cell', 'field', 'prop'] as Place[]) { + expect(byForm('bag', place).map((r) => r.reads), place).toEqual(byForm('bag', place).map((r) => reads('string', r.dims))); + } + expect(byForm('header', 'prop').map((r) => r.reads)).toEqual(DIMS.map(() => reads('double', [1, 1]))); + for (const place of ['entry', 'cell', 'field'] as Place[]) { + expect(byForm('header', place).map((r) => r.reads), place).toEqual(DIMS.map(() => ({ error: 'Invalid string returned.' }))); + } + expect(TRUTH.rows.filter((r) => r.place === 'param').map((r) => r.reads)).toEqual(TRUTH.rows.filter((r) => r.place === 'param').map(() => reads('double', [0, 0]))); + }); + + it("a host's empty string at an object's property is written as MATLAB reads it back, the string it is, and reopens so", () => { + const wrong: string[] = []; + for (const dims of DIMS) { + const saved = pastedAndSaved('w_h', 'prop', { _type: 'string', _emptyDims: dims }, dims); + const want = reads('string', dims); + if ('refused' in saved || JSON.stringify(saved.matlab) !== JSON.stringify(want) || JSON.stringify(saved.reopened) !== JSON.stringify(['string', dims])) { + wrong.push(dims.join('x') + ': ' + JSON.stringify(saved)); + } + } + expect(wrong).toEqual([]); + }); + + it("at a Simulink.Parameter's Value, where MATLAB holds no empty string, it is written as at a property, which MATLAB reads back as the double 0x0 it read before", () => { + // MATLAB refuses an empty string as a Parameter's Value and reads every spelling of one there, + // this one, the old `Class="double" Dimension="0*0"` and the bare string tag, as a double 0x0. + // This package reopens it as the string it was handed. Left as it is, as a text dictionary's is. + for (const dims of DIMS) { + const saved = pastedAndSaved('p_h', 'param', { _type: 'string', _emptyDims: dims }, dims); + const envelope = TRUTH.rows.find((r) => r.form === 'bag' && r.place === 'param' && JSON.stringify(r.dims) === JSON.stringify(dims))!.spelling; + expect(saved, dims.join('x')).toEqual({ spelling: envelope, matlab: reads('double', [0, 0]), reopened: ['string', dims] }); + } + }); + + it("a host's empty function handle at an object's property or a Parameter's Value is refused, as at an entry, a cell and a field, where it was written as a double 0x0", () => { + for (const place of ['prop', 'param', 'entry', 'cell', 'field'] as Place[]) { + for (const dims of [[1, 0], [0, 0]]) { + const name = PREFIX[place] + 'fh'; + const saved = pastedAndSaved(name, place, { _type: 'function_handle', _emptyDims: dims }, dims); + expect(saved, place + ' ' + dims.join('x')).toEqual({ + refused: 'MatWriteError', + message: + `Cannot write "${name}": ${name}${PATH[place]} is an empty function handle (${dims.join('x')}), which a binary dictionary holds only in MATLAB's MAT encoding, ` + + 'and this package cannot write that. Nothing was written.', + }); + } + } + }); + + it("a host's empty string copied out of a binary dictionary, and pasted into one as an entry, is written as MATLAB reads it back, the string it is", () => { + for (const dims of DIMS) { + const session = createSession(); + const bin: any = ingest(session, buffer(BINARY), { filename: 'lossy_empties_readback_binary.sldd' }); + const design = bin.getSection('design'); + const pasted = design.parseEntry({ name: 'h', metadata: { ...design.children[0].metadata, uuid: '00000000-0000-4000-a941-000000000001' }, value: { _type: 'string', _emptyDims: dims } }); + const copy = JSON.parse(JSON.stringify(pasted.serialize())); + const saved = pastedAndSaved('e_copy', 'entry', copy.value, dims); + expect(saved, dims.join('x')).toMatchObject({ matlab: reads('string', dims), reopened: ['string', dims] }); + } + }); + + it("a host's empty string pasted as an entry, a cell's element or a struct field is written as before, which MATLAB cannot read (control: left as it is)", () => { + // The node writer's spelling, `Class="string" Dimension="0*3"/>`, which this does not reach. + for (const place of ['entry', 'cell', 'field'] as Place[]) { + for (const dims of DIMS) { + const saved = pastedAndSaved(PREFIX[place] + 'h', place, { _type: 'string', _emptyDims: dims }, dims); + expect(saved, place + ' ' + dims.join('x')).toMatchObject({ matlab: { error: 'Invalid string returned.' }, reopened: ['string', dims] }); + } + } + }); + + it("a host's empty string with a trailing 1 is written as the one without it at a property and a Value, and copied so", () => { + // A trailing 1 is no extent: MATLAB's size of a 0x3x1 string is 0x3, and every other class is + // written at its dims without it (MatWriter.effectiveDims). Written with it, the envelope was + // `Dimension="0*3*1"`, a spelling MATLAB was never asked about, and it reopened here as a 0x3x1. + for (const dims of [[0, 3, 1], [1, 0, 1], [0, 0, 1, 1]]) { + const two = dims.slice(0, 2); + const envelope = (place: Place) => TRUTH.rows.find((r) => r.form === 'bag' && r.place === place && JSON.stringify(r.dims) === JSON.stringify(two))!.spelling; + const v = { _type: 'string', _emptyDims: dims }; + expect(pastedAndSaved('w_h', 'prop', v, two), dims.join('x') + ' at prop').toEqual({ spelling: envelope('prop'), matlab: reads('string', two), reopened: ['string', two] }); + expect(pastedAndSaved('p_h', 'param', v, two), dims.join('x') + ' at param').toEqual({ spelling: envelope('param'), matlab: reads('double', [0, 0]), reopened: ['string', two] }); + const session = createSession(); + const bin: any = ingest(session, buffer(BINARY), { filename: 'lossy_empties_readback_binary.sldd' }); + const design = bin.getSection('design'); + const pasted = design.parseEntry({ name: 'h', metadata: { ...design.children[0].metadata, uuid: '00000000-0000-4000-a942-000000000001' }, value: v }); + const copy = JSON.parse(JSON.stringify(pasted.serialize())); + expect(copy.value, dims.join('x') + ' copied').toEqual({ _array_type: 'String', _dimensions: two, _elements: [], _mw_element_type: 'MATLABArray' }); + expect(pastedAndSaved('e_copy', 'entry', copy.value, two), dims.join('x') + ' copy pasted').toEqual({ spelling: envelope('entry'), matlab: reads('string', two), reopened: ['string', two] }); + } + }); +}); diff --git a/test/lossyEmptiesReadback.test.ts b/test/lossyEmptiesReadback.test.ts new file mode 100644 index 00000000..d70ec88b --- /dev/null +++ b/test/lossyEmptiesReadback.test.ts @@ -0,0 +1,370 @@ +// Copyright 2026 The MathWorks, Inc. +// +// An empty string, an empty function handle and an N-D empty, pasted into a text dictionary, are +// written in a spelling MATLAB reads back there with their class and size, at every place a value +// stands; and where MATLAB reads back no spelling of one with its class and size, the save is +// refused rather than written as another value (agenda follow-up 4 of group F's reviews, ruled by +// group G on 2026-10-18: "a save the writer cannot spell is refused rather than written wrong"). +// Graded against what MATLAB said, not against what this package expects of itself. +// +// test/parity/matlab/probe_lossy_empties_readback.m asked MATLAB R2027a, and wrote the answers to +// lossy_empties_readback.truth.json: +// - `self`: what MATLAB writes there for each value itself, and reads back of its own text and +// its own binary file. The binary file is test/fixtures/lossy_empties_readback_binary.sldd, +// and `binaryReads` is each value as MATLAB holds it: its binary writer keeps every class and +// size, an extent past an int32 too. Its text writer keeps no N-D size (`[]`, +// `{"_type": "int8", "_value": "[]"}`, `""`), and refuses a function handle everywhere but an +// object's property, where it reads its own spelling back as a 1x1 handle. +// - `candidates`: what MATLAB reads back of each candidate spelling, hand-patched into a text +// dictionary it made, at each place: the String bag reads back as the string it is at every +// place, and a MAT stream as the N-D empty it is; the forms a host hands in, and the bare +// `Matrix(…)` header of an N-D one, read back as other values. +// The rule the answers give, which this grades: a value is written in a spelling MATLAB read back +// with its class and size at that place, and refused where MATLAB read back none. A spelling this +// writes that MATLAB was not asked about fails here, so a change to the writer means asking MATLAB +// again. +// +// The two routes in: a binary dictionary's value copied out of it (MATLAB's own binary file), and +// a host's `{_type, _emptyDims}`, the form an entry's empty took before the binary reader held it +// under its header, which a host still hands in. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { strFromU8, strToU8, unzipSync, zipSync } from 'fflate'; +import { createSession, ingest, MatBudgetError } from '../src/index.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +type Reads = { class: string; size: number[] } | { error: string } | []; +type Place = 'entry' | 'cell' | 'field' | 'param' | 'prop'; +type SelfRow = { id: string; expr: string; place: Place; text: string; refused: string; textReads: Reads; binaryReads: Reads; binarySaveError: string }; +type Candidate = { id: string; spelling: string; place: Place; reads: Reads }; +type Held = { class: string; size: number[] }; + +const at = (rel: string) => fileURLToPath(new URL(rel, import.meta.url)); +const TRUTH: { version: string; release: string; self: SelfRow[]; candidates: Candidate[] } = JSON.parse( + readFileSync(at('./parity/matlab/lossy_empties_readback.truth.json'), 'utf8'), +); +const buffer = (u8: Uint8Array) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; +const bytesAt = (rel: string) => new Uint8Array(readFileSync(at(rel))); +const TEXT_HOST = './fixtures/custom_object_text.sldd'; +const BINARY = './fixtures/lossy_empties_readback_binary.sldd'; +const entriesOf = (text: string): any[] => JSON.parse(text).__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; + +const PREFIX: Record = { entry: 'e_', cell: 'c_', field: 's_', param: 'p_', prop: 'w_' }; +const PATH: Record = { entry: '', cell: '{1}', field: '.f', param: '.Value', prop: '.Scalar' }; +const isReads = (r: Reads | undefined): r is Held => !!r && !Array.isArray(r) && 'class' in r; +const same = (r: Reads | undefined, want: Held) => isReads(r) && r.class === want.class && JSON.stringify(r.size) === JSON.stringify(want.size); +/** One spelling, as JSON compares it: MATLAB's own text has its layout, a candidate none. */ +const canonical = (json: string) => JSON.stringify(JSON.parse(json)); +const ownText = (s: SelfRow) => s.text !== '' && !s.text.startsWith('?'); + +/** What MATLAB read back of `spelling` at `place`: a candidate's, or its own spelling's; undefined if it was never asked. */ +function matlabRead(spelling: string, place: Place): Reads | undefined { + const candidate = TRUTH.candidates.find((c) => c.place === place && canonical(c.spelling) === spelling); + if (candidate) { + return candidate.reads; + } + return TRUTH.self.find((s) => s.place === place && ownText(s) && canonical(s.text) === spelling)?.textReads; +} + +/** Every spelling MATLAB was asked about at `place` that it read back as `want`: its own, and each candidate's. */ +function spellingsKeeping(want: Held, place: Place): string[] { + return [ + ...TRUTH.self.filter((s) => s.place === place && ownText(s) && same(s.textReads, want)).map((s) => canonical(s.text)), + ...TRUTH.candidates.filter((c) => c.place === place && same(c.reads, want)).map((c) => canonical(c.spelling)), + ]; +} + +/** The value at `place` of an entry's value, as the text dictionary holds it. */ +function valueAt(value: any, place: Place): unknown { + switch (place) { + case 'entry': + return value; + case 'cell': + return value._elements[0]; + case 'field': + return value._elements[0].f; + case 'param': + case 'prop': + return value._elements[0]._properties[place === 'param' ? 'Value' : 'Scalar']; + } +} + +/** The node at `place` of `entry`, reopened. */ +function nodeAt(entry: any, place: Place): any { + const child = (n: any, c: string) => n?.children?.find((x: any) => x.name === c); + switch (place) { + case 'entry': + return entry; + case 'cell': + return entry?.children?.[0]; + case 'field': + return child(entry, 'f'); + case 'param': + return entry?._valueNode ?? child(entry, 'Value'); + case 'prop': + return child(entry, 'Scalar'); + } +} + +type Outcome = { written: string; reopened: unknown[] } | { refused: string; message: string }; + +/** + * `payload` pasted alone into a fresh text dictionary's section `section`, saved and reopened; or + * the refusal, of the save or of the paste itself (an N-D string's, SectionNode.parseEntry). + */ +function pasteInto(section: 'design' | 'other', payload: any, place: Place): Outcome { + const session = createSession(); + const txt: any = ingest(session, buffer(bytesAt(TEXT_HOST)), { filename: 'custom_object_text.sldd' }); + const into = txt.getSection(section); + let text: string; + try { + into.parseEntry({ ...payload, metadata: { ...into.children[0].metadata, uuid: '00000000-0000-4000-a900-000000000001' } }); + text = session.serializeSource(txt.name)!.text!; + } catch (e) { + return { refused: (e as Error).name, message: (e as Error).message }; + } + const value = entriesOf(text).find((e) => e.name === payload.name).value; + const again: any = ingest(createSession(), buffer(strToU8(text)), { filename: 'reopened_text.sldd' }); + const entry = again.children.flatMap((s: any) => s.children).find((e: any) => e.name === payload.name); + const node = nodeAt(entry, place); + return { written: JSON.stringify(valueAt(value, place)), reopened: [node?.className, node?.dims] }; +} + +/** + * What is wrong with `outcome` for a value MATLAB holds as `want` at `place` of entry `name`: it + * is written in a spelling MATLAB read back as `want` and reopens here as `want`, where MATLAB read + * back such a spelling; it is refused, naming the entry and the path, where MATLAB read back none. + */ +function graded(name: string, place: Place, want: Held, outcome: Outcome): string | null { + const keeping = spellingsKeeping(want, place); + const label = `${name} at ${place} (${want.class} ${want.size.join('x')})`; + if ('refused' in outcome) { + if (keeping.length > 0) { + return `${label}: refused (${outcome.message}), where MATLAB reads back ${keeping[0]}`; + } + const opens = `Cannot write "${name}": ${name}${PATH[place]} is `; + return /^Mat(?:Budget|Write)Error$/.test(outcome.refused) && outcome.message.startsWith(opens) && outcome.message.endsWith(' Nothing was written.') + ? null + : `${label}: refused as ${outcome.refused}: ${outcome.message}`; + } + if (keeping.length === 0) { + return `${label}: written ${outcome.written.slice(0, 80)}, which MATLAB reads back as ${JSON.stringify(matlabRead(outcome.written, place) ?? 'never asked')}; MATLAB reads back no spelling of it`; + } + if (!keeping.includes(outcome.written)) { + return `${label}: written ${outcome.written.slice(0, 80)}, which MATLAB reads back as ${JSON.stringify(matlabRead(outcome.written, place) ?? 'never asked')}`; + } + if (JSON.stringify(outcome.reopened) !== JSON.stringify([want.class, want.size])) { + return `${label}: reopens here as ${JSON.stringify(outcome.reopened)}`; + } + return null; +} + +describe('an empty string, an empty function handle or an N-D empty pasted into a text dictionary', () => { + it("the truth is MATLAB's, and its binary file holds every value it saves there", () => { + expect(TRUTH.release).toBe('2027a'); + expect(TRUTH.self.length).toBe(85); + expect(TRUTH.candidates.length).toBe(85); + // MATLAB saves no N-D string in a binary dictionary, and a function handle is kept out of it. + const ids = [...new Set(TRUTH.self.map((s) => s.id))]; + const absent = ids.filter((id) => TRUTH.self.every((s) => s.id !== id || !isReads(s.binaryReads))); + expect(absent).toEqual(['Str022', 'Fh00', 'Fh10']); + }); + + it("copied out of a binary dictionary, is written as MATLAB reads it back with its class and size, or refused where MATLAB reads back none", () => { + const bin: any = ingest(createSession(), buffer(bytesAt(BINARY)), { filename: 'lossy_empties_readback_binary.sldd' }); + const entries = new Map(); + for (const section of ['design', 'other'] as const) { + for (const e of bin.getSection(section).children) { + entries.set(e.name, [section, e]); + } + } + const rows = TRUTH.self.filter( + // A Parameter's Value turns any char into a string in MATLAB, whatever its spelling; EnND, a + // non-empty N-D enumeration, is the probe's control for the bag MATLAB writes for one + // (MatWriter.enumTextForm), which nothing here changes. + (s) => isReads(s.binaryReads) && !(s.place === 'param' && s.id.startsWith('Ch')) && s.id !== 'EnND', + ); + expect(rows.length).toBe(56); + const wrong: string[] = []; + for (const s of rows) { + const name = PREFIX[s.place] + s.id; + const [section, entry] = entries.get(name); + const payload = JSON.parse(JSON.stringify(entry.serialize())); + const problem = graded(name, s.place, s.binaryReads as Held, pasteInto(section, payload, s.place)); + if (problem) { + wrong.push(problem); + } + } + expect(wrong).toEqual([]); + }); + + // The host's forms, at each place: as an entry, a struct field, a cell's element, and Widget's + // Scalar, which MATLAB holds in Other Data. + const widget = entriesOf(strFromU8(bytesAt(TEXT_HOST))).find((e) => e.name === 'widget'); + const wrapped = (place: Place, v: unknown): unknown => { + switch (place) { + case 'cell': + return { _array_type: 'Cell', _dimensions: [1, 1], _elements: [v], _mw_element_type: 'MATLABArray' }; + case 'field': + return { _array_type: 'Struct', _dimensions: [1, 1], _elements: [{ f: v }], _fields: ['f'], _mw_element_type: 'MATLABArray' }; + case 'prop': { + const w = JSON.parse(JSON.stringify(widget.value)); + w._elements[0]._properties.Scalar = v; + return w; + } + default: + return v; + } + }; + const HOST: { _type: string; _emptyDims: number[] }[] = [ + { _type: 'string', _emptyDims: [0, 3] }, + { _type: 'string', _emptyDims: [0, 0] }, + { _type: 'string', _emptyDims: [1, 0] }, + { _type: 'function_handle', _emptyDims: [1, 0] }, + { _type: 'function_handle', _emptyDims: [0, 0] }, + // An N-D one was a MAT stream at every place before, and refused past an int32; so it stays. + { _type: 'double', _emptyDims: [0, 2, 2] }, + { _type: 'logical', _emptyDims: [0, 1, 2] }, + { _type: 'char', _emptyDims: [0, 0, 2] }, + { _type: 'double', _emptyDims: [0, 2, 2147483648] }, + // A function handle's at every rank. + { _type: 'function_handle', _emptyDims: [0, 0, 2] }, + ]; + const HOST_PLACES: Place[] = ['entry', 'cell', 'field', 'prop']; + + it("a host's `{_type, _emptyDims}` is written as MATLAB reads it back with its class and size, or refused where MATLAB reads back none", () => { + const wrong: string[] = []; + for (const v of HOST) { + for (const place of HOST_PLACES) { + const name = 'h_' + place; + const outcome = pasteInto(place === 'prop' ? 'other' : 'design', { name, value: wrapped(place, JSON.parse(JSON.stringify(v))) }, place); + const problem = graded(name, place, { class: v._type, size: v._emptyDims }, outcome); + if (problem) { + wrong.push(JSON.stringify(v) + ' ' + problem); + } + } + } + expect(wrong).toEqual([]); + }); + + it('and so is its copy out of a binary dictionary, which carries its class and size, and a string\'s once that dictionary is saved', () => { + // A copy is what a host pastes: `entry.serialize()`. Out of a binary dictionary, a host's + // string or function handle empty was copied as `[]`, a double 0x0, whichever dictionary it + // was then pasted into. Saved there, a string's is `Class="string" Dimension="0*3"/>`, which + // the binary reader holds under its header, and an N-D one's `Dimension="0*2*2"`, which MATLAB + // reads back as what it is in no text spelling; a function handle's save is refused (FH-PASTE). + const copiesOut = (values: typeof HOST) => { + const session = createSession(); + const bin: any = ingest(session, buffer(bytesAt(BINARY)), { filename: 'lossy_empties_readback_binary.sldd' }); + const design = bin.getSection('design'); + const copies = values.map((v, k) => { + const pasted = design.parseEntry({ name: 'h' + k, metadata: { ...design.children[0].metadata, uuid: '00000000-0000-4000-a910-' + String(k + 1).padStart(12, '0') }, value: { ...v } }); + return JSON.parse(JSON.stringify(pasted.serialize())); + }); + return { session, bin, copies }; + }; + const strings = HOST.filter((v) => v._type === 'string'); + const handles = HOST.filter((v) => v._type === 'function_handle'); + const saved = [...strings, { _type: 'string', _emptyDims: [0, 2, 2] }]; + const { session, bin, copies } = copiesOut(saved); + const resaved: any = ingest(createSession(), buffer(session.serializeSource(bin.name)!.bytes!), { filename: 'resaved.sldd' }); + const resavedCopies = saved.map((v, k) => JSON.parse(JSON.stringify(resaved.getSection('design').children.find((e: any) => e.name === 'h' + k).serialize()))); + const cases: [{ _type: string; _emptyDims: number[] }, number, any][] = [ + ...strings.map((v, k) => [v, k, copies[k]] as [typeof v, number, any]), + ...saved.map((v, k) => [v, k, resavedCopies[k]] as [typeof v, number, any]), + ...handles.map((v, k) => [v, k, copiesOut(handles).copies[k]] as [typeof v, number, any]), + ]; + const wrong: string[] = []; + for (const [v, k, copy] of cases) { + const problem = graded('h' + k, 'entry', { class: v._type, size: v._emptyDims }, pasteInto('design', copy, 'entry')); + if (problem) { + wrong.push(JSON.stringify(v) + ' ' + problem); + } + } + expect(cases.length).toBe(10); + expect(wrong).toEqual([]); + }); + + it('the refusal of an empty function handle says what it is and why', () => { + const outcome = pasteInto('design', { name: 'h', value: wrapped('field', { _type: 'function_handle', _emptyDims: [1, 0] }) }, 'field'); + expect(outcome).toEqual({ + refused: 'MatBudgetError', + message: 'Cannot write "h": h.f is an empty function handle (1x0), and a text dictionary has no spelling of it that MATLAB reads back as it is. Nothing was written.', + }); + }); + + it('but a text dictionary holding one of them as a host handed it in is saved unedited as the same file', () => { + // As it was written there at a field and in a cell, which is how it was written before. As an + // entry or an object's property, it was rewritten `[]` by a save that edited nothing. + const json = JSON.parse(strFromU8(bytesAt(TEXT_HOST))); + const held: any[] = json.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; + // Each is an entry of the last section, after its last entry, as a save lists them. + const proto = held[held.length - 1]; + let n = 0; + for (const v of HOST.slice(0, 5)) { + for (const place of HOST_PLACES) { + held.push({ ...proto, name: 'z' + ++n + place, metadata: { ...proto.metadata, uuid: '00000000-0000-4000-a920-' + String(n).padStart(12, '0') }, value: wrapped(place, { ...v }) }); + } + } + const file = JSON.stringify(json, null, '\t'); + const session = createSession(); + const root: any = ingest(session, buffer(strToU8(file)), { filename: 'held_text.sldd' }); + const saved = session.serializeSource(root.name)!.text!; + const zValues = (t: string) => entriesOf(t).filter((e) => e.name.startsWith('z')).map((e) => [e.name, e.value]); + expect(zValues(saved)).toEqual(zValues(file)); + expect(saved === file).toBe(true); + }); + + /** A Simulink.Parameter, MATLAB's own, copied out of its binary dictionary, holding `v` as its Value. */ + const inParameter = (v: unknown, dims: number[]): unknown => { + const bin: any = ingest(createSession(), buffer(bytesAt(BINARY)), { filename: 'lossy_empties_readback_binary.sldd' }); + const p = JSON.parse(JSON.stringify(bin.getSection('design').children.find((e: any) => e.name === 'p_D022').serialize().value)); + p._elements[0]._properties.Value = v; + p._elements[0]._properties.Dimensions = dims; + return p; + }; + const hostAt = (place: Place, v: unknown, dims: number[]): Outcome => + pasteInto(place === 'prop' ? 'other' : 'design', { name: 'h_' + place, value: place === 'param' ? inParameter(v, dims) : wrapped(place, v) }, place); + + it("a host's empty string with a trailing 1 is written as the one without it, which MATLAB reads back with its class and size", () => { + // A trailing 1 is no extent: MATLAB's size of a 0x3x1 string is 0x3, and every other class is + // written at its dims without it (MatWriter.effectiveDims). Written with it, `_dimensions` was + // a spelling MATLAB was never asked about, and the value reopened here as a 0x3x1. + const wrong: string[] = []; + for (const dims of [[0, 3, 1], [1, 0, 1], [0, 0, 1, 1]]) { + const two = dims.slice(0, 2); + for (const place of HOST_PLACES) { + const problem = graded('h_' + place, place, { class: 'string', size: two }, hostAt(place, { _type: 'string', _emptyDims: dims }, dims)); + if (problem) { + wrong.push(dims.join('x') + ' ' + problem); + } + } + // At a Parameter's Value MATLAB reads every spelling of an empty string back as a double 0x0 + // (Str03 at param), so there is no spelling to grade it by: it is written as the one without the 1. + const atValue = (d: number[]) => JSON.stringify(hostAt('param', { _type: 'string', _emptyDims: d }, two)); + if (atValue(dims) !== atValue(two)) { + wrong.push(dims.join('x') + ' at param: ' + atValue(dims) + ', where without the 1: ' + atValue(two)); + } + } + expect(wrong).toEqual([]); + }); + + it("a host's N-D empty string is refused at every place, a Parameter's Value too, and named as the string it is", () => { + // MATLAB reads back no text spelling of an N-D string (Str022): it refuses one in a cell, a + // field and at a Value, and reads its own text back as another value at an entry and a property. + const wrong: string[] = []; + for (const dims of [[0, 0, 2], [0, 3, 2]]) { + for (const place of [...HOST_PLACES, 'param'] as Place[]) { + const name = 'h_' + place; + const outcome = hostAt(place, { _type: 'string', _emptyDims: dims }, dims); + const problem = graded(name, place, { class: 'string', size: dims }, outcome); + const message = `Cannot write "${name}": ${name}${PATH[place]} is a ${dims.join('x')} string, which a text dictionary holds only as its MAT stream, and that stream cannot be written: no MAT class for "string". Nothing was written.`; + if (problem || !('refused' in outcome) || outcome.refused !== 'MatWriteError' || outcome.message !== message) { + wrong.push(dims.join('x') + ' at ' + place + ': ' + (problem ?? JSON.stringify(outcome))); + } + } + } + expect(wrong).toEqual([]); + }); +}); diff --git a/test/parity/matlab/README.md b/test/parity/matlab/README.md index 9f1a5e48..471d163e 100644 --- a/test/parity/matlab/README.md +++ b/test/parity/matlab/README.md @@ -117,6 +117,7 @@ directory, because `Simulink.data.dictionary.open` rejects a relative one with | `probe_cell_string.m` | and how does it spell a `string` in a cell in the BINARY flavour, where a string is an object rather than a JSON value? (defect 52) | `$CELL_STRING_OUT` or `tempdir/cellstring` | `cellstr_text.sldd`, `cellstr_binary.sldd` | | `probe_cell_arrays.m` | and how does it spell an ARRAY in a cell — complex, struct, object — where the cell site's hand-rolled dispatch lagged the shared one by three ideas? (defects 53, 54, 55) | `$CELL_ARRAYS_OUT` or `tempdir/cellarrays` | `cellarr_text.sldd`, `cellarr_binary.sldd` | | `probe_cell_sign_literals.m` | and what does MATLAB make of a cell literal whose member opens with a sign and a space (`{- 2}`, `{1, - 2}`) or with its imaginary part (`{i + 1}`, `{2i - 3}`), and of the arithmetic beside them (`{- 2 - 3}`, `{[1] - 2}`)? Graded by `../../cellSignMember.test.ts`. Ends `CELL_SIGN OK` | — | — | +| `probe_host_string_empties_binary.m` | and what does MATLAB read back of an empty string core writes into a BINARY dictionary, as a host hands one in, as the String bag and as the binary reader's empty, at an entry, a cell, a field, a Parameter's Value and an object's property? Opens only the dictionaries `host_string_empties_binary.mjs` saves through core. Graded by `../../hostStringEmptiesBinary.test.ts`. Ends `HOST_STRING_EMPTIES_BINARY OK` | `$HOST_STRING_EMPTIES_OUT` or `tempdir/hsb` | `host_string_empties_binary.truth.json` | | `probe_mask_types.m` | which mask parameter TYPES hold an expression `findVars` resolves, and which are a selection or a widget state? | — | — | | `probe_evaluate.m` | is `Evaluate` a SECOND gate, independent of the type — and how does each container format spell it? | `tempdir/probe_evaluate` | — | | `probe_non_data_params.m` | which FREE-TEXT block parameters never name data, however much their values look like variables? | `tempdir` (one child model, deleted) | — | diff --git a/test/parity/matlab/host_string_empties_binary.mjs b/test/parity/matlab/host_string_empties_binary.mjs new file mode 100644 index 00000000..6095d0a7 --- /dev/null +++ b/test/parity/matlab/host_string_empties_binary.mjs @@ -0,0 +1,118 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The core half of probe_host_string_empties_binary.m: the binary dictionaries MATLAB is asked to +// read back. An empty string (0x3, 0x0 and 1x0) is pasted through core's API into MATLAB's own +// binary dictionary of lossy_empties_readback (test/fixtures/lossy_empties_readback_binary.sldd) at +// one place each: an entry's value, a cell's element, a struct field, a Simulink.Parameter's Value +// and Widget.Scalar, an object's property in Other Data. It is pasted in each form a host hands one +// in as: +// host `{_type: 'string', _emptyDims: [r, c]}`; +// bag the String bag, MATLAB's own spelling of it in a text dictionary (a copy out of one); +// header `{_type: 'string', _value: 'Matrix(r,c)', _binary_empty: true}`, the binary reader's +// hold of `Class="string" Dimension="r*c"/>` (a copy out of a binary dictionary); +// and, once at each place, `[]`, a double 0x0, the control. Each is saved alone, as core saves a +// binary dictionary, to /.sldd, so a file MATLAB cannot read says so for its own +// entry only. /names.json lists each file's entry, its form, its place and the XML core +// wrote there (the element at the place, whitespace between tags dropped), which the probe copies +// into its truth. +// +// Run, with dist built: node test/parity/matlab/host_string_empties_binary.mjs /tmp/hsb +import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { strFromU8, unzipSync } from 'fflate'; + +const out = process.argv[2]; +if (!out) { + throw new Error('usage: node host_string_empties_binary.mjs '); +} +const core = await import(new URL('../../../dist/index.js', import.meta.url).href); +const BINARY = fileURLToPath(new URL('../../fixtures/lossy_empties_readback_binary.sldd', import.meta.url)); +const buf = (u8) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength); + +const PLACES = ['entry', 'cell', 'field', 'param', 'prop']; +const PREFIX = { entry: 'e_', cell: 'c_', field: 's_', param: 'p_', prop: 'w_' }; +// Where the element at each place opens, in the entry's XML: the last tag of the match. +const OPENS = { + entry: /

]*>/, + cell: /

]*>\s*]*>/, + field: /

]*>/, + param: /\s*

]*>/, + prop: /

]*>/, +}; +const DIMS = { S03: [0, 3], S00: [0, 0], S10: [1, 0] }; +const FORMS = { + host: (d) => ({ _type: 'string', _emptyDims: d }), + bag: (d) => ({ _array_type: 'String', _dimensions: d, _elements: [], _mw_element_type: 'MATLABArray' }), + header: (d) => ({ _type: 'string', _value: 'Matrix(' + d.join(',') + ')', _binary_empty: true }), +}; +const CASES = [ + ...Object.entries(FORMS).flatMap(([form, of]) => Object.entries(DIMS).map(([id, dims]) => ({ id, form, dims, value: of(dims) }))), + { id: 'D00', form: 'control', dims: [0, 0], value: [] }, +]; +const LETTER = { host: 'H', bag: 'B', header: 'R', control: 'C' }; + +/** The value of an entry that holds `v` at `place`; the Parameter and the Widget are MATLAB's own, copied out of the file. */ +function valueAt(bin, place, v, dims) { + const copied = (section, name) => JSON.parse(JSON.stringify(bin.getSection(section).children.find((e) => e.name === name).serialize().value)); + switch (place) { + case 'entry': + return v; + case 'cell': + return { _array_type: 'Cell', _dimensions: [1, 1], _elements: [v], _mw_element_type: 'MATLABArray' }; + case 'field': + return { _array_type: 'Struct', _dimensions: [1, 1], _elements: [{ f: v }], _fields: ['f'], _mw_element_type: 'MATLABArray' }; + case 'param': { + const p = copied('design', 'p_D022'); + p._elements[0]._properties.Value = v; + p._elements[0]._properties.Dimensions = dims; + return p; + } + case 'prop': { + const w = copied('other', 'w_D022'); + w._elements[0]._properties.Scalar = v; + return w; + } + } +} + +/** The element of `xml` that opens at `from`, through its close, with no whitespace between tags. */ +function elementAt(xml, from) { + const tag = /<(\/?)[^>]*?(\/?)>/g; + tag.lastIndex = from; + let depth = 0; + for (let m = tag.exec(xml); m; m = tag.exec(xml)) { + depth += m[1] ? -1 : m[2] ? 0 : 1; + if (depth === 0) { + return xml.slice(from, tag.lastIndex).replace(/>\s+<'); + } + } + return '?'; +} + +mkdirSync(out, { recursive: true }); +const names = []; +let n = 0; +for (const { id, form, dims, value } of CASES) { + for (const place of PLACES) { + const name = PREFIX[place] + LETTER[form] + id; + const section = place === 'prop' ? 'other' : 'design'; + const session = core.createSession(); + const bin = core.ingest(session, buf(new Uint8Array(readFileSync(BINARY))), { filename: 'lossy_empties_readback_binary.sldd' }); + const into = bin.getSection(section); + into.parseEntry({ + name, + metadata: { ...into.children[0].metadata, uuid: '00000000-0000-4000-a930-' + String(++n).padStart(12, '0') }, + value: valueAt(bin, place, JSON.parse(JSON.stringify(value)), dims), + }); + const bytes = session.serializeSource(bin.name).bytes; + const xml = strFromU8(unzipSync(bytes)['data/chunk0.xml']); + const at = xml.indexOf('>' + name + '<'); + const m = OPENS[place].exec(xml.slice(at)); + const spelling = m ? elementAt(xml, at + m.index + m[0].lastIndexOf('<')) : '?'; + writeFileSync(out + '/' + name + '.sldd', bytes); + names.push({ id, form, dims, place, name, section, spelling }); + } +} +writeFileSync(out + '/names.json', JSON.stringify(names, null, 1)); +console.log('wrote', names.length, 'dictionaries to', out); +for (const r of names) console.log(r.name.padEnd(8), r.form.padEnd(7), r.place.padEnd(5), r.spelling); diff --git a/test/parity/matlab/host_string_empties_binary.truth.json b/test/parity/matlab/host_string_empties_binary.truth.json new file mode 100644 index 00000000..96811e35 --- /dev/null +++ b/test/parity/matlab/host_string_empties_binary.truth.json @@ -0,0 +1,835 @@ +{ + "version": "27.1.0.3409468 (R2027a) Prerelease", + "release": "2027a", + "date": "2026-10-18", + "rows": [ + { + "id": "S03", + "form": "host", + "dims": [ + 0, + 3 + ], + "place": "entry", + "name": "e_HS03", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S03", + "form": "host", + "dims": [ + 0, + 3 + ], + "place": "cell", + "name": "c_HS03", + "spelling": "", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S03", + "form": "host", + "dims": [ + 0, + 3 + ], + "place": "field", + "name": "s_HS03", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S03", + "form": "host", + "dims": [ + 0, + 3 + ], + "place": "param", + "name": "p_HS03", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S03", + "form": "host", + "dims": [ + 0, + 3 + ], + "place": "prop", + "name": "w_HS03", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S00", + "form": "host", + "dims": [ + 0, + 0 + ], + "place": "entry", + "name": "e_HS00", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S00", + "form": "host", + "dims": [ + 0, + 0 + ], + "place": "cell", + "name": "c_HS00", + "spelling": "", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S00", + "form": "host", + "dims": [ + 0, + 0 + ], + "place": "field", + "name": "s_HS00", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S00", + "form": "host", + "dims": [ + 0, + 0 + ], + "place": "param", + "name": "p_HS00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "form": "host", + "dims": [ + 0, + 0 + ], + "place": "prop", + "name": "w_HS00", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "form": "host", + "dims": [ + 1, + 0 + ], + "place": "entry", + "name": "e_HS10", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S10", + "form": "host", + "dims": [ + 1, + 0 + ], + "place": "cell", + "name": "c_HS10", + "spelling": "", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S10", + "form": "host", + "dims": [ + 1, + 0 + ], + "place": "field", + "name": "s_HS10", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S10", + "form": "host", + "dims": [ + 1, + 0 + ], + "place": "param", + "name": "p_HS10", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "form": "host", + "dims": [ + 1, + 0 + ], + "place": "prop", + "name": "w_HS10", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S03", + "form": "bag", + "dims": [ + 0, + 3 + ], + "place": "entry", + "name": "e_BS03", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03", + "form": "bag", + "dims": [ + 0, + 3 + ], + "place": "cell", + "name": "c_BS03", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03", + "form": "bag", + "dims": [ + 0, + 3 + ], + "place": "field", + "name": "s_BS03", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03", + "form": "bag", + "dims": [ + 0, + 3 + ], + "place": "param", + "name": "p_BS03", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S03", + "form": "bag", + "dims": [ + 0, + 3 + ], + "place": "prop", + "name": "w_BS03", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S00", + "form": "bag", + "dims": [ + 0, + 0 + ], + "place": "entry", + "name": "e_BS00", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "form": "bag", + "dims": [ + 0, + 0 + ], + "place": "cell", + "name": "c_BS00", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "form": "bag", + "dims": [ + 0, + 0 + ], + "place": "field", + "name": "s_BS00", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "form": "bag", + "dims": [ + 0, + 0 + ], + "place": "param", + "name": "p_BS00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "form": "bag", + "dims": [ + 0, + 0 + ], + "place": "prop", + "name": "w_BS00", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "form": "bag", + "dims": [ + 1, + 0 + ], + "place": "entry", + "name": "e_BS10", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S10", + "form": "bag", + "dims": [ + 1, + 0 + ], + "place": "cell", + "name": "c_BS10", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S10", + "form": "bag", + "dims": [ + 1, + 0 + ], + "place": "field", + "name": "s_BS10", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S10", + "form": "bag", + "dims": [ + 1, + 0 + ], + "place": "param", + "name": "p_BS10", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "form": "bag", + "dims": [ + 1, + 0 + ], + "place": "prop", + "name": "w_BS10", + "spelling": "

", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S03", + "form": "header", + "dims": [ + 0, + 3 + ], + "place": "entry", + "name": "e_RS03", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S03", + "form": "header", + "dims": [ + 0, + 3 + ], + "place": "cell", + "name": "c_RS03", + "spelling": "", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S03", + "form": "header", + "dims": [ + 0, + 3 + ], + "place": "field", + "name": "s_RS03", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S03", + "form": "header", + "dims": [ + 0, + 3 + ], + "place": "param", + "name": "p_RS03", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S03", + "form": "header", + "dims": [ + 0, + 3 + ], + "place": "prop", + "name": "w_RS03", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "S00", + "form": "header", + "dims": [ + 0, + 0 + ], + "place": "entry", + "name": "e_RS00", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S00", + "form": "header", + "dims": [ + 0, + 0 + ], + "place": "cell", + "name": "c_RS00", + "spelling": "", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S00", + "form": "header", + "dims": [ + 0, + 0 + ], + "place": "field", + "name": "s_RS00", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S00", + "form": "header", + "dims": [ + 0, + 0 + ], + "place": "param", + "name": "p_RS00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "form": "header", + "dims": [ + 0, + 0 + ], + "place": "prop", + "name": "w_RS00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "S10", + "form": "header", + "dims": [ + 1, + 0 + ], + "place": "entry", + "name": "e_RS10", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S10", + "form": "header", + "dims": [ + 1, + 0 + ], + "place": "cell", + "name": "c_RS10", + "spelling": "", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S10", + "form": "header", + "dims": [ + 1, + 0 + ], + "place": "field", + "name": "s_RS10", + "spelling": "

", + "reads": { + "error": "Invalid string returned." + } + }, + { + "id": "S10", + "form": "header", + "dims": [ + 1, + 0 + ], + "place": "param", + "name": "p_RS10", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "form": "header", + "dims": [ + 1, + 0 + ], + "place": "prop", + "name": "w_RS10", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "D00", + "form": "control", + "dims": [ + 0, + 0 + ], + "place": "entry", + "name": "e_CD00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "D00", + "form": "control", + "dims": [ + 0, + 0 + ], + "place": "cell", + "name": "c_CD00", + "spelling": "", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "D00", + "form": "control", + "dims": [ + 0, + 0 + ], + "place": "field", + "name": "s_CD00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "D00", + "form": "control", + "dims": [ + 0, + 0 + ], + "place": "param", + "name": "p_CD00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "D00", + "form": "control", + "dims": [ + 0, + 0 + ], + "place": "prop", + "name": "w_CD00", + "spelling": "

", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + } + ] +} diff --git a/test/parity/matlab/lossy_empties_readback.mjs b/test/parity/matlab/lossy_empties_readback.mjs new file mode 100644 index 00000000..bb1393a4 --- /dev/null +++ b/test/parity/matlab/lossy_empties_readback.mjs @@ -0,0 +1,85 @@ +// Copyright 2026 The MathWorks, Inc. +// +// The core half of probe_lossy_empties_readback.m (agenda follow-up 4 of group F's reviews, run for +// group G on 2026-10-18): the candidate text-dictionary spellings MATLAB is asked to read back, each +// as the JSON text a text dictionary holds at a place. Each MAT stream is the one core writes for a +// host's N-D `{_type, _emptyDims}` pasted into a text dictionary as an entry; each other spelling +// is a literal: MATLAB's own spelling of an empty string (the String bag, with and without +// `_mw_element_type`), the forms a host hands in, the bare `Matrix(…)` headers, and the bag core +// wrote in a cell for a binary dictionary's N-D empty enumeration. +// +// Run, with dist built: node test/parity/matlab/lossy_empties_readback.mjs /tmp/lossyempty +// which writes /tmp/lossyempty/cands.json for the probe. +import { mkdirSync, readFileSync, writeFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { strFromU8, strToU8, unzipSync, zipSync } from 'fflate'; + +const out = process.argv[2]; +if (!out) { + throw new Error('usage: node lossy_empties_readback.mjs '); +} +const core = await import(new URL('../../../dist/index.js', import.meta.url).href); +const bytes = (rel) => new Uint8Array(readFileSync(fileURLToPath(new URL('../../fixtures/' + rel, import.meta.url)))); +const buf = (u8) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength); +const entriesOf = (text) => JSON.parse(text).__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; +const flat = (n, o = []) => { + o.push(n); + for (const c of n.children ?? []) flat(c, o); + return o; +}; + +/** What a text dictionary is given for `value` pasted into it as an entry. */ +function written(value) { + const session = core.createSession(); + const txt = core.ingest(session, buf(bytes('custom_object_text.sldd')), { filename: 'custom_object_text.sldd' }); + const design = txt.getSection('design'); + design.parseEntry({ name: 'x', metadata: { ...design.children[0].metadata, uuid: '00000000-0000-4000-a800-000000000001' }, value }); + return entriesOf(session.serializeSource(txt.name).text).find((e) => e.name === 'x').value; +} + +/** The bag a text dictionary was given in a cell for a binary dictionary's GearMode 0x2x2, before this item. */ +function enumBagInCell() { + const xml = strFromU8(unzipSync(bytes('custom_object_binary.sldd'))['data/chunk0.xml']); + const NOTHING = '

'; + const files = unzipSync(bytes('custom_object_binary.sldd')); + files['data/chunk0.xml'] = strToU8(xml.replace(NOTHING, NOTHING + '\n

\n \n

')); + const bin = core.ingest(core.createSession(), buf(zipSync(files)), { filename: 'custom_object_binary.sldd' }); + const payload = JSON.parse(JSON.stringify(flat(bin).find((n) => n?.isEntry && n.name === 'widget').serialize())); + const session = core.createSession(); + const txt = core.ingest(session, buf(bytes('custom_object_text.sldd')), { filename: 'custom_object_text.sldd' }); + payload.name = 'x'; + payload.metadata = { ...txt.getSection('design').children[0].metadata, uuid: '00000000-0000-4000-a800-000000000002' }; + txt.getSection('design').parseEntry(payload); + return entriesOf(session.serializeSource(txt.name).text).find((e) => e.name === 'x').value._elements[0]._properties.C._elements[0]; +} + +const bag = (dims, mw = true) => ({ _array_type: 'String', _dimensions: dims, _elements: [], ...(mw ? { _mw_element_type: 'MATLABArray' } : {}) }); +const stream = (type, dims) => { + const v = written({ _type: type, _emptyDims: dims }); + if (v?._type !== 'cdata') { + throw new Error(type + ' ' + dims.join('x') + ' was not written as a stream: ' + JSON.stringify(v)); + } + return v; +}; +const CANDIDATES = [ + ['S03', bag([0, 3])], + ['S00', bag([0, 0])], + ['S10', bag([1, 0])], + ['S03nomw', bag([0, 3], false)], + ['Shost', { _type: 'string', _emptyDims: [0, 3] }], + ['Fhost10', { _type: 'function_handle', _emptyDims: [1, 0] }], + ['Fhost00', { _type: 'function_handle', _emptyDims: [0, 0] }], + ['Nd022', stream('double', [0, 2, 2])], + ['Ni8203', stream('int8', [2, 0, 3])], + ['Nlg012', stream('logical', [0, 1, 2])], + ['Nch002', stream('char', [0, 0, 2])], + ['Ni32022', stream('int32', [0, 2, 2])], + ['Hd022', { _type: 'double', _value: 'Matrix(0,2,2)' }], + ['Hlg012', { _type: 'logical', _value: 'Matrix(0,1,2)' }], + ['He022', { _type: 'GearMode', _value: 'Matrix(0,2,2)' }], + ['Ebag022', enumBagInCell()], + ['Hwide', { _type: 'double', _value: 'Matrix(0,2,2147483648)' }], +]; +mkdirSync(out, { recursive: true }); +writeFileSync(out + '/cands.json', JSON.stringify(CANDIDATES.map(([id, v]) => ({ id, spelling: JSON.stringify(v) })), null, 1)); +console.log('wrote', CANDIDATES.length, 'candidates to', out + '/cands.json'); diff --git a/test/parity/matlab/lossy_empties_readback.truth.json b/test/parity/matlab/lossy_empties_readback.truth.json new file mode 100644 index 00000000..1dc021e7 --- /dev/null +++ b/test/parity/matlab/lossy_empties_readback.truth.json @@ -0,0 +1,2725 @@ +{ + "version": "27.1.0.3409468 (R2027a) Prerelease", + "release": "2027a", + "date": "2026-10-18", + "self": [ + { + "id": "Str03", + "expr": "strings(0,3)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t3\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_elements\": [],\n\t\t\t\t\t\t\t\"_mw_element_type\": \"MATLABArray\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str03", + "expr": "strings(0,3)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t3\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str03", + "expr": "strings(0,3)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t3\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str03", + "expr": "strings(0,3)", + "place": "param", + "text": "", + "refused": "Invalid value specified for parameter. Value must be a numeric array, fi object, enumerated value, structure whose fields contain valid values, string scalar, or an expression.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Str03", + "expr": "strings(0,3)", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t3\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str00", + "expr": "strings(0,0)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_elements\": [],\n\t\t\t\t\t\t\t\"_mw_element_type\": \"MATLABArray\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str00", + "expr": "strings(0,0)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str00", + "expr": "strings(0,0)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str00", + "expr": "strings(0,0)", + "place": "param", + "text": "", + "refused": "Invalid value specified for parameter. Value must be a numeric array, fi object, enumerated value, structure whose fields contain valid values, string scalar, or an expression.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Str00", + "expr": "strings(0,0)", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 0, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str10", + "expr": "strings(1,0)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_elements\": [],\n\t\t\t\t\t\t\t\"_mw_element_type\": \"MATLABArray\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str10", + "expr": "strings(1,0)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str10", + "expr": "strings(1,0)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str10", + "expr": "strings(1,0)", + "place": "param", + "text": "", + "refused": "Invalid value specified for parameter. Value must be a numeric array, fi object, enumerated value, structure whose fields contain valid values, string scalar, or an expression.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Str10", + "expr": "strings(1,0)", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_array_type\": \"String\",\n\t\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\t\"_elements\": []\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 1, + 0 + ] + }, + "binarySaveError": "" + }, + { + "id": "Str022", + "expr": "strings(0,2,2)", + "place": "entry", + "text": "? null\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 1, + 0 + ] + }, + "binaryReads": [], + "binarySaveError": "Unable to save the following dictionaries: /private/tmp/groupG/out-GA/g4/final/scratch_binary.sldd." + }, + { + "id": "Str022", + "expr": "strings(0,2,2)", + "place": "cell", + "text": "", + "refused": "The value 'N-D string array' is invalid, expecting '2-D string array'.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "Unable to save the following dictionaries: /private/tmp/groupG/out-GA/g4/final/scratch_binary.sldd." + }, + { + "id": "Str022", + "expr": "strings(0,2,2)", + "place": "field", + "text": "", + "refused": "The value 'N-D string array' is invalid, expecting '2-D string array'.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "Unable to save the following dictionaries: /private/tmp/groupG/out-GA/g4/final/scratch_binary.sldd." + }, + { + "id": "Str022", + "expr": "strings(0,2,2)", + "place": "param", + "text": "", + "refused": "Invalid value specified for parameter. Value must be a numeric array, fi object, enumerated value, structure whose fields contain valid values, string scalar, or an expression.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "Unable to save the following dictionaries: /private/tmp/groupG/out-GA/g4/final/scratch_binary.sldd." + }, + { + "id": "Str022", + "expr": "strings(0,2,2)", + "place": "prop", + "text": "?ABSENT", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 1, + 1 + ] + }, + "binaryReads": [], + "binarySaveError": "Unable to save the following dictionaries: /private/tmp/groupG/out-GA/g4/final/scratch_binary.sldd." + }, + { + "id": "Fh00", + "expr": "function_handle.empty", + "place": "entry", + "text": "", + "refused": "Values of class 'function_handle' are not supported in the 'Design_Data' section of the dictionary.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh00", + "expr": "function_handle.empty", + "place": "cell", + "text": "", + "refused": "Unable to import variable 'c_Fh00'. Function handle data type not supported for data dictionaries.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh00", + "expr": "function_handle.empty", + "place": "field", + "text": "", + "refused": "Unable to import variable 's_Fh00'. Function handle data type not supported for data dictionaries.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh00", + "expr": "function_handle.empty", + "place": "param", + "text": "", + "refused": "Invalid value specified for parameter. Value must be a numeric array, fi object, enumerated value, structure whose fields contain valid values, string scalar, or an expression.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh00", + "expr": "function_handle.empty", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"function_handle\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "function_handle", + "size": [ + 1, + 1 + ] + }, + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh10", + "expr": "function_handle.empty(1,0)", + "place": "entry", + "text": "", + "refused": "Values of class 'function_handle' are not supported in the 'Design_Data' section of the dictionary.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh10", + "expr": "function_handle.empty(1,0)", + "place": "cell", + "text": "", + "refused": "Unable to import variable 'c_Fh10'. Function handle data type not supported for data dictionaries.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh10", + "expr": "function_handle.empty(1,0)", + "place": "field", + "text": "", + "refused": "Unable to import variable 's_Fh10'. Function handle data type not supported for data dictionaries.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh10", + "expr": "function_handle.empty(1,0)", + "place": "param", + "text": "", + "refused": "Invalid value specified for parameter. Value must be a numeric array, fi object, enumerated value, structure whose fields contain valid values, string scalar, or an expression.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "Fh10", + "expr": "function_handle.empty(1,0)", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"function_handle\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "function_handle", + "size": [ + 1, + 1 + ] + }, + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "D022", + "expr": "zeros(0,2,2)", + "place": "entry", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "D022", + "expr": "zeros(0,2,2)", + "place": "cell", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "D022", + "expr": "zeros(0,2,2)", + "place": "field", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "D022", + "expr": "zeros(0,2,2)", + "place": "param", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "D022", + "expr": "zeros(0,2,2)", + "place": "prop", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8203", + "expr": "int8(zeros(2,0,3))", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8203", + "expr": "int8(zeros(2,0,3))", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8203", + "expr": "int8(zeros(2,0,3))", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8203", + "expr": "int8(zeros(2,0,3))", + "place": "param", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8203", + "expr": "int8(zeros(2,0,3))", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + }, + "binarySaveError": "" + }, + { + "id": "Lg012", + "expr": "false(0,1,2)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Lg012", + "expr": "false(0,1,2)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Lg012", + "expr": "false(0,1,2)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Lg012", + "expr": "false(0,1,2)", + "place": "param", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Lg012", + "expr": "false(0,1,2)", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Ch002", + "expr": "char(zeros(0,0,2))", + "place": "entry", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Ch002", + "expr": "char(zeros(0,0,2))", + "place": "cell", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Ch002", + "expr": "char(zeros(0,0,2))", + "place": "field", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "Ch002", + "expr": "char(zeros(0,0,2))", + "place": "param", + "text": "[\n\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t]", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 1, + 1 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 1, + 1 + ] + }, + "binarySaveError": "" + }, + { + "id": "Ch002", + "expr": "char(zeros(0,0,2))", + "place": "prop", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "En022", + "expr": "GearMode.empty(0,2,2)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_type\": \"GearMode\",\n\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "En022", + "expr": "GearMode.empty(0,2,2)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_type\": \"GearMode\",\n\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "En022", + "expr": "GearMode.empty(0,2,2)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"GearMode\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "En022", + "expr": "GearMode.empty(0,2,2)", + "place": "param", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "En022", + "expr": "GearMode.empty(0,2,2)", + "place": "prop", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnND", + "expr": "repmat(GearMode.Drive,1,2,2)", + "place": "entry", + "text": "? {\n\t\t\t\t\t\t\t\"_array_class\": \"GearMode\",\n\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_elements\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"_enum_value\": {\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"cdata\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \" %)30 . 2 8 ( # % # $ \\\" @ ! 4 0 0 $ ! 0 \\u0000\\u0000\\u0000\"\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\"_id\": \"1\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnND", + "expr": "repmat(GearMode.Drive,1,2,2)", + "place": "cell", + "text": "?\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"_array_class\": \"GearMode\",\n\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\"_elements\": [\n\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\"_enum_value\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"cdata\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"_value\": \" %)30 . 2 8 ( # % # $ \\\" @ ! 4 0 0 $ ! 0 \\u0000\\u0000\\u0000\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"_id\": \"", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnND", + "expr": "repmat(GearMode.Drive,1,2,2)", + "place": "field", + "text": "? {\n\t\t\t\t\t\t\t\t\t\t\"_array_class\": \"GearMode\",\n\t\t\t\t\t\t\t\t\t\t\"_dimensions\": [\n\t\t\t\t\t\t\t\t\t\t\t1,\n\t\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\t\t\t\"_elements\": [\n\t\t\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\t\t\t\"_enum_value\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"cdata\",\n\t\t\t\t\t\t\t\t\t\t\t\t\t\"_value\": \" %)30 . 2 8 ( # % # $ \\\" @ ! 4 0 0 $ ! 0 \\u0000\\u0000\\u0000\"\n\t\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\t\"_id", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnND", + "expr": "repmat(GearMode.Drive,1,2,2)", + "place": "param", + "text": "? {\n\t\t\t\t\t\t\t\t\t\t\t\"_enum_value\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"cdata\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"_value\": \" %)30 . 2 8 ( # % # $ \\\" @ ! 4 0 0 $ ! 0 \\u0000\\u0000\\u0000\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"_id\": \"2\",\n\t\t\t\t\t\t\t\t\t\t\t\"_object_class\": \"GearMode\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_mw_element_type\": \"MATLABArray\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnND", + "expr": "repmat(GearMode.Drive,1,2,2)", + "place": "prop", + "text": "? {\n\t\t\t\t\t\t\t\t\t\t\t\"_enum_value\": {\n\t\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"cdata\",\n\t\t\t\t\t\t\t\t\t\t\t\t\"_value\": \" %)30 . 2 8 ( # % # $ \\\" @ ! 4 0 0 $ ! 0 \\u0000\\u0000\\u0000\"\n\t\t\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t\t\t\"_id\": \"2\",\n\t\t\t\t\t\t\t\t\t\t\t\"_object_class\": \"GearMode\"\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\"_mw_element_type\": \"MATLABArray\"\n\t\t\t\t\t\t}\n\t\t\t\t\t},\n\t", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 1, + 2, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "DWide", + "expr": "zeros(0,2,2147483648)", + "place": "entry", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "DWide", + "expr": "zeros(0,2,2147483648)", + "place": "cell", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "DWide", + "expr": "zeros(0,2,2147483648)", + "place": "field", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "DWide", + "expr": "zeros(0,2,2147483648)", + "place": "param", + "text": "", + "refused": "Simulink supports dimension size of up to 2147483647. The dimension size specified exceeds this limit. Consider reducing the value size before compiling or simulating the model.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "DWide", + "expr": "zeros(0,2,2147483648)", + "place": "prop", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "double", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8Wide", + "expr": "int8(zeros(2147483648,0,2))", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2.147483648E+9, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8Wide", + "expr": "int8(zeros(2147483648,0,2))", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2.147483648E+9, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8Wide", + "expr": "int8(zeros(2147483648,0,2))", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2.147483648E+9, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "I8Wide", + "expr": "int8(zeros(2147483648,0,2))", + "place": "param", + "text": "", + "refused": "Simulink supports dimension size of up to 2147483647. The dimension size specified exceeds this limit. Consider reducing the value size before compiling or simulating the model.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "I8Wide", + "expr": "int8(zeros(2147483648,0,2))", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"int8\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "int8", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "int8", + "size": [ + 2.147483648E+9, + 0, + 2 + ] + }, + "binarySaveError": "" + }, + { + "id": "LgWide", + "expr": "false(0,2,2147483648)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "LgWide", + "expr": "false(0,2,2147483648)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "LgWide", + "expr": "false(0,2,2147483648)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "LgWide", + "expr": "false(0,2,2147483648)", + "place": "param", + "text": "", + "refused": "Simulink supports dimension size of up to 2147483647. The dimension size specified exceeds this limit. Consider reducing the value size before compiling or simulating the model.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "LgWide", + "expr": "false(0,2,2147483648)", + "place": "prop", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\t\"_type\": \"logical\",\n\t\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "logical", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "logical", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "ChWide", + "expr": "char(zeros(0,2,2147483648))", + "place": "entry", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "ChWide", + "expr": "char(zeros(0,2,2147483648))", + "place": "cell", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "ChWide", + "expr": "char(zeros(0,2,2147483648))", + "place": "field", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "ChWide", + "expr": "char(zeros(0,2,2147483648))", + "place": "param", + "text": "[\n\t\t\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t\t\t]", + "refused": "", + "textReads": { + "class": "string", + "size": [ + 1, + 1 + ] + }, + "binaryReads": { + "class": "string", + "size": [ + 1, + 1 + ] + }, + "binarySaveError": "" + }, + { + "id": "ChWide", + "expr": "char(zeros(0,2,2147483648))", + "place": "prop", + "text": "\"\"", + "refused": "", + "textReads": { + "class": "char", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "char", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnWide", + "expr": "GearMode.empty(0,2,2147483648)", + "place": "entry", + "text": "{\n\t\t\t\t\t\t\t\"_type\": \"GearMode\",\n\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnWide", + "expr": "GearMode.empty(0,2,2147483648)", + "place": "cell", + "text": "{\n\t\t\t\t\t\t\t\t\t\"_type\": \"GearMode\",\n\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnWide", + "expr": "GearMode.empty(0,2,2147483648)", + "place": "field", + "text": "{\n\t\t\t\t\t\t\t\t\t\t\"_type\": \"GearMode\",\n\t\t\t\t\t\t\t\t\t\t\"_value\": \"[]\"\n\t\t\t\t\t\t\t\t\t}", + "refused": "", + "textReads": { + "class": "GearMode", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + }, + { + "id": "EnWide", + "expr": "GearMode.empty(0,2,2147483648)", + "place": "param", + "text": "", + "refused": "Simulink supports dimension size of up to 2147483647. The dimension size specified exceeds this limit. Consider reducing the value size before compiling or simulating the model.", + "textReads": [], + "binaryReads": [], + "binarySaveError": "" + }, + { + "id": "EnWide", + "expr": "GearMode.empty(0,2,2147483648)", + "place": "prop", + "text": "[]", + "refused": "", + "textReads": { + "class": "double", + "size": [ + 0, + 0 + ] + }, + "binaryReads": { + "class": "GearMode", + "size": [ + 0, + 2, + 2.147483648E+9 + ] + }, + "binarySaveError": "" + } + ], + "candidates": [ + { + "id": "S03", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "entry", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "cell", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S03", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "field", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "prop", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S00", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "entry", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "cell", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "field", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S00", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "prop", + "reads": { + "class": "string", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[1,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "entry", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S10", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[1,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "cell", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S10", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[1,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S10", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[1,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "field", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S10", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[1,0],\"_elements\":[],\"_mw_element_type\":\"MATLABArray\"}", + "place": "prop", + "reads": { + "class": "string", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "S03nomw", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[]}", + "place": "entry", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03nomw", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[]}", + "place": "cell", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03nomw", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[]}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "S03nomw", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[]}", + "place": "field", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "S03nomw", + "spelling": "{\"_array_type\":\"String\",\"_dimensions\":[0,3],\"_elements\":[]}", + "place": "prop", + "reads": { + "class": "string", + "size": [ + 0, + 3 + ] + } + }, + { + "id": "Shost", + "spelling": "{\"_type\":\"string\",\"_emptyDims\":[0,3]}", + "place": "entry", + "reads": { + "class": "double", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "Shost", + "spelling": "{\"_type\":\"string\",\"_emptyDims\":[0,3]}", + "place": "cell", + "reads": { + "class": "char", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "Shost", + "spelling": "{\"_type\":\"string\",\"_emptyDims\":[0,3]}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "Shost", + "spelling": "{\"_type\":\"string\",\"_emptyDims\":[0,3]}", + "place": "field", + "reads": { + "error": "Unrecognized field name \"f\"." + } + }, + { + "id": "Shost", + "spelling": "{\"_type\":\"string\",\"_emptyDims\":[0,3]}", + "place": "prop", + "reads": { + "class": "double", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "Fhost10", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[1,0]}", + "place": "entry", + "reads": { + "class": "double", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "Fhost10", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[1,0]}", + "place": "cell", + "reads": { + "class": "char", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "Fhost10", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[1,0]}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "Fhost10", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[1,0]}", + "place": "field", + "reads": { + "error": "Unrecognized field name \"f\"." + } + }, + { + "id": "Fhost10", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[1,0]}", + "place": "prop", + "reads": { + "class": "double", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "Fhost00", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[0,0]}", + "place": "entry", + "reads": { + "class": "double", + "size": [ + 1, + 0 + ] + } + }, + { + "id": "Fhost00", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[0,0]}", + "place": "cell", + "reads": { + "class": "char", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "Fhost00", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[0,0]}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 0 + ] + } + }, + { + "id": "Fhost00", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[0,0]}", + "place": "field", + "reads": { + "error": "Unrecognized field name \"f\"." + } + }, + { + "id": "Fhost00", + "spelling": "{\"_type\":\"function_handle\",\"_emptyDims\":[0,0]}", + "place": "prop", + "reads": { + "class": "double", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "Nd022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@ % # \\\" @ ! D \\u0000\"}", + "place": "entry", + "reads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Nd022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@ % # \\\" @ ! D \\u0000\"}", + "place": "cell", + "reads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Nd022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@ % # \\\" @ ! D \\u0000\"}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Nd022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@ % # \\\" @ ! D \\u0000\"}", + "place": "field", + "reads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Nd022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( !@ % # \\\" @ ! D \\u0000\"}", + "place": "prop", + "reads": { + "class": "double", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Ni8203", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\" % # ( P ! $ \\u0000\"}", + "place": "entry", + "reads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + } + }, + { + "id": "Ni8203", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\" % # ( P ! $ \\u0000\"}", + "place": "cell", + "reads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + } + }, + { + "id": "Ni8203", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\" % # ( P ! $ \\u0000\"}", + "place": "param", + "reads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + } + }, + { + "id": "Ni8203", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\" % # ( P ! $ \\u0000\"}", + "place": "field", + "reads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + } + }, + { + "id": "Ni8203", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\" % # ( P ! $ \\u0000\"}", + "place": "prop", + "reads": { + "class": "int8", + "size": [ + 2, + 0, + 3 + ] + } + }, + { + "id": "Nlg012", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"0( % # ! @ ! ( \\u0000\"}", + "place": "entry", + "reads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + } + }, + { + "id": "Nlg012", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"0( % # ! @ ! ( \\u0000\"}", + "place": "cell", + "reads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + } + }, + { + "id": "Nlg012", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"0( % # ! @ ! ( \\u0000\"}", + "place": "param", + "reads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + } + }, + { + "id": "Nlg012", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"0( % # ! @ ! ( \\u0000\"}", + "place": "field", + "reads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + } + }, + { + "id": "Nlg012", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( \\\"0( % # ! @ ! ( \\u0000\"}", + "place": "prop", + "reads": { + "class": "logical", + "size": [ + 0, + 1, + 2 + ] + } + }, + { + "id": "Nch002", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( ! % # @ ! ! \\u0000\"}", + "place": "entry", + "reads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + } + }, + { + "id": "Nch002", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( ! % # @ ! ! \\u0000\"}", + "place": "cell", + "reads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + } + }, + { + "id": "Nch002", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( ! % # @ ! ! \\u0000\"}", + "place": "param", + "reads": { + "class": "string", + "size": [ + 1, + 1 + ] + } + }, + { + "id": "Nch002", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( ! % # @ ! ! \\u0000\"}", + "place": "field", + "reads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + } + }, + { + "id": "Nch002", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( ! % # @ ! ! \\u0000\"}", + "place": "prop", + "reads": { + "class": "char", + "size": [ + 0, + 0, + 2 + ] + } + }, + { + "id": "Ni32022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( # % # \\\" @ ! 4 \\u0000\"}", + "place": "entry", + "reads": { + "class": "int32", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Ni32022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( # % # \\\" @ ! 4 \\u0000\"}", + "place": "cell", + "reads": { + "class": "int32", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Ni32022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( # % # \\\" @ ! 4 \\u0000\"}", + "place": "param", + "reads": { + "class": "int32", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Ni32022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( # % # \\\" @ ! 4 \\u0000\"}", + "place": "field", + "reads": { + "class": "int32", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Ni32022", + "spelling": "{\"_type\":\"cdata\",\"_value\":\" %)30 . . 8 ( # % # \\\" @ ! 4 \\u0000\"}", + "place": "prop", + "reads": { + "class": "int32", + "size": [ + 0, + 2, + 2 + ] + } + }, + { + "id": "Hd022", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "entry", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hd022", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "cell", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hd022", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hd022", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "field", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hd022", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "prop", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hlg012", + "spelling": "{\"_type\":\"logical\",\"_value\":\"Matrix(0,1,2)\"}", + "place": "entry", + "reads": { + "class": "logical", + "size": [ + 0, + 1 + ] + } + }, + { + "id": "Hlg012", + "spelling": "{\"_type\":\"logical\",\"_value\":\"Matrix(0,1,2)\"}", + "place": "cell", + "reads": { + "class": "logical", + "size": [ + 0, + 1 + ] + } + }, + { + "id": "Hlg012", + "spelling": "{\"_type\":\"logical\",\"_value\":\"Matrix(0,1,2)\"}", + "place": "param", + "reads": { + "class": "logical", + "size": [ + 0, + 1 + ] + } + }, + { + "id": "Hlg012", + "spelling": "{\"_type\":\"logical\",\"_value\":\"Matrix(0,1,2)\"}", + "place": "field", + "reads": { + "class": "logical", + "size": [ + 0, + 1 + ] + } + }, + { + "id": "Hlg012", + "spelling": "{\"_type\":\"logical\",\"_value\":\"Matrix(0,1,2)\"}", + "place": "prop", + "reads": { + "class": "logical", + "size": [ + 0, + 1 + ] + } + }, + { + "id": "He022", + "spelling": "{\"_type\":\"GearMode\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "entry", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "He022", + "spelling": "{\"_type\":\"GearMode\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "cell", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "He022", + "spelling": "{\"_type\":\"GearMode\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "param", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "He022", + "spelling": "{\"_type\":\"GearMode\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "field", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "He022", + "spelling": "{\"_type\":\"GearMode\",\"_value\":\"Matrix(0,2,2)\"}", + "place": "prop", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Ebag022", + "spelling": "{\"_array_class\":\"GearMode\",\"_dimensions\":[0,2,2],\"_mw_element_type\":\"MATLABArray\",\"_elements\":[]}", + "place": "entry", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Ebag022", + "spelling": "{\"_array_class\":\"GearMode\",\"_dimensions\":[0,2,2],\"_mw_element_type\":\"MATLABArray\",\"_elements\":[]}", + "place": "cell", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Ebag022", + "spelling": "{\"_array_class\":\"GearMode\",\"_dimensions\":[0,2,2],\"_mw_element_type\":\"MATLABArray\",\"_elements\":[]}", + "place": "param", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Ebag022", + "spelling": "{\"_array_class\":\"GearMode\",\"_dimensions\":[0,2,2],\"_mw_element_type\":\"MATLABArray\",\"_elements\":[]}", + "place": "field", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Ebag022", + "spelling": "{\"_array_class\":\"GearMode\",\"_dimensions\":[0,2,2],\"_mw_element_type\":\"MATLABArray\",\"_elements\":[]}", + "place": "prop", + "reads": { + "class": "GearMode", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hwide", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2147483648)\"}", + "place": "entry", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hwide", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2147483648)\"}", + "place": "cell", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hwide", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2147483648)\"}", + "place": "param", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hwide", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2147483648)\"}", + "place": "field", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + }, + { + "id": "Hwide", + "spelling": "{\"_type\":\"double\",\"_value\":\"Matrix(0,2,2147483648)\"}", + "place": "prop", + "reads": { + "class": "double", + "size": [ + 0, + 2 + ] + } + } + ] +} diff --git a/test/parity/matlab/probe_host_string_empties_binary.m b/test/parity/matlab/probe_host_string_empties_binary.m new file mode 100644 index 00000000..1087fc99 --- /dev/null +++ b/test/parity/matlab/probe_host_string_empties_binary.m @@ -0,0 +1,67 @@ +% How does MATLAB read back, out of a BINARY dictionary core saved, a host's empty string pasted at +% each place a value can stand? (PR #147's review, round 1, measured 2026-10-18.) +% +% A host hands an empty string in as `{_type: 'string', _emptyDims: [r, c]}`. Pasted into a binary +% dictionary, core writes it `Class="string" Dimension="r*c"` with no body at an entry's value, a +% cell's element and a struct field, as before PR #147. At a Simulink.Parameter's Value and at an +% object's property, where it was `Class="double" Dimension="0*0"`, MatWriter.emptyDimsHeldForm +% hands it on as the String bag, which the binary writer spells as MATLAB's own saveobj envelope; +% at that PR's first head it was the bare tag there too. MATLAB itself writes a string's empty in a +% binary dictionary as that envelope, so it never writes the bare tag; this asks what it reads back +% of each spelling, each form a host hands one in as pasted at each place. +% +% Run: node test/parity/matlab/host_string_empties_binary.mjs /tmp/hsb (with dist built) +% env HOST_STRING_EMPTIES_OUT=/tmp/hsb mw -using Bmain matlab -nodesktop \ +% -batch "run('$PWD/test/parity/matlab/probe_host_string_empties_binary.m')" +% then: cp /tmp/hsb/host_string_empties_binary.truth.json test/parity/matlab/ +% It opens only the dictionaries the core half wrote, one per entry, each named for its entry. +% Prints HOST_STRING_EMPTIES_BINARY OK on its last line. +% Output: host_string_empties_binary.truth.json, {version, release, date, rows}: each row the core +% half's id, dims, place, name and spelling, and `reads`, {class, size} or {error}. + +outdir = getenv('HOST_STRING_EMPTIES_OUT'); +if isempty(outdir), outdir = fullfile(tempdir, 'hsb'); end +here = fileparts(mfilename('fullpath')); +addpath(fullfile(here, '..', '..', 'fixtures', 'mcos')); % Widget +rehash; +Simulink.data.dictionary.closeAll('-discard'); +fprintf('VERSION %s\n', version); +NAMES = jsondecode(fileread(fullfile(outdir, 'names.json'))); +rows = struct('id', {}, 'form', {}, 'dims', {}, 'place', {}, 'name', {}, 'spelling', {}, 'reads', {}); +for k = 1:numel(NAMES) + r = NAMES(k); + reads = readAt(fullfile(outdir, [r.name '.sldd']), r.name, r.section, r.place); + rows(end+1) = struct('id', r.id, 'form', r.form, 'dims', r.dims', 'place', r.place, 'name', r.name, 'spelling', r.spelling, 'reads', reads); %#ok + fprintf('READ %-8s %-7s %-5s %s => %s\n', r.name, r.form, r.place, r.spelling, readsText(reads)); +end +truth = struct('version', version, 'release', version('-release'), 'date', char(datetime('now', 'Format', 'yyyy-MM-dd')), 'rows', rows); +fid = fopen(fullfile(outdir, 'host_string_empties_binary.truth.json'), 'w', 'n', 'UTF-8'); +fprintf(fid, '%s\n', jsonencode(truth, 'PrettyPrint', true)); +fclose(fid); +fprintf('HOST_STRING_EMPTIES_BINARY OK\n'); + +% What MATLAB reads at `place` in entry `nm` of file `fn`: {class, size} or {error}. +function r = readAt(fn, nm, sec, place) + try + Simulink.data.dictionary.closeAll('-discard'); + dd = Simulink.data.dictionary.open(fn); + if strcmp(sec, 'other'), s = getSection(dd, 'Other Data'); else, s = getSection(dd, 'Design Data'); end + v = getValue(getEntry(s, nm)); + switch place + case 'cell', v = v{1}; + case 'field', v = v.f; + case 'param', v = v.Value; + case 'prop', v = v.Scalar; + end + r = struct('class', class(v), 'size', size(v)); + close(dd); + catch e + r = struct('error', strrep(e.message, newline, ' ')); + end + Simulink.data.dictionary.closeAll('-discard'); +end + +function s = readsText(r) + if isfield(r, 'error'), s = ['ERROR ' r.error]; + else, s = sprintf('class=%s size=%s', r.class, mat2str(r.size)); end +end diff --git a/test/parity/matlab/probe_lossy_empties_readback.m b/test/parity/matlab/probe_lossy_empties_readback.m new file mode 100644 index 00000000..741cab75 --- /dev/null +++ b/test/parity/matlab/probe_lossy_empties_readback.m @@ -0,0 +1,263 @@ +% How does MATLAB read back, out of a TEXT dictionary, an empty string, an empty function handle +% and an N-D empty, at each place a value can stand, and how does it spell one there itself? +% (Agenda follow-up 4 of group F's reviews, "lossy host empties", ruled by group G, measured +% 2026-10-18.) +% +% A text dictionary was given `[]` for a host's string or function-handle `{_type, _emptyDims}` at +% an entry or an object's property, which reopens as a double 0x0, and the form as handed in at a +% struct field or a cell; and `[]`, `''` or the bare `Matrix(…)` header for a binary dictionary's +% N-D empty at a property, a field or a cell, with no refusal past an int32. This probe asks, +% place by place: +% +% SELF what MATLAB's own text writer writes for each value, and what MATLAB reads back +% out of its own text file and its own binary one. The binary file holds each value +% MATLAB saves there alone (a scratch dictionary per value), and is the input +% test/lossyEmptiesReadback.test.ts pastes into a text dictionary; +% CANDIDATES for each spelling in cands.json (test/parity/matlab/lossy_empties_readback.mjs +% writes it from core's own output), hand-patched into a MATLAB-made text +% dictionary, what MATLAB reads back. +% +% The places: an entry's value (entry), a cell's element (cell), a struct field (field), a +% Simulink.Parameter's Value (param) and a user object's property (prop, Widget.Scalar, in +% Other Data). +% +% Not in the candidates, because each one crashes MATLAB R2027a (27.1.0.3409468) with a +% segmentation violation as it opens the dictionary, at the entry, the first place asked: an +% N-D empty enumeration spelled as the bag MATLAB writes for a non-empty N-D one +% (MatWriter.enumTextForm), `{"_array_class": "GearMode", "_dimensions": [1, 1], "_elements": +% [{"_enum_value": }], "_mw_element_type": "MATLABArray"}`, around an empty 0x2x2 stream +% of int32, of double or of uint8, with an `_id` in the element, without `_mw_element_type`, or +% around `{"_type": "int32", "_value": "Matrix(0,2)"}`: six candidates, one MATLAB each, six crashes. +% +% Run: node test/parity/matlab/lossy_empties_readback.mjs /tmp/lossyempty (with dist built) +% env LOSSY_EMPTY_OUT=/tmp/lossyempty mw -using Bmain matlab -nodesktop \ +% -batch "run('$PWD/test/parity/matlab/probe_lossy_empties_readback.m')" +% then: cp /tmp/lossyempty/lossy_empties_readback.truth.json test/parity/matlab/ +% cp /tmp/lossyempty/self_compressed_binary.sldd test/fixtures/lossy_empties_readback_binary.sldd +% Prints LOSSY_EMPTIES_READBACK OK on its last line. A function handle is kept out of the binary +% file: MATLAB writes one there in its MAT encoding, which carries the matlabroot of the MATLAB +% that wrote it (test/fixtureHygiene.test.ts). +% Output: lossy_empties_readback.truth.json, {version, release, date, self, candidates}: +% self: id, expr, place, text (MATLAB's own spelling at that place, or '' when it refused +% the value), refused (its message), textReads, binaryReads (empty when the value +% is not in the binary file), binarySaveError (why not, when its save failed); +% candidates: id, spelling, place, reads; each `reads` {class, size} or {error}. + +outdir = getenv('LOSSY_EMPTY_OUT'); +if isempty(outdir), outdir = fullfile(tempdir, 'lossyempty'); end +if ~exist(outdir, 'dir'), mkdir(outdir); end +here = fileparts(mfilename('fullpath')); +addpath(fullfile(here, '..', '..', 'fixtures', 'mcos')); % Widget, GearMode +rehash; +Simulink.data.dictionary.closeAll('-discard'); +fprintf('VERSION %s\n', version); + +%% SELF: what MATLAB writes, and reads back of its own files +EXPR = { ... + 'Str03', 'strings(0,3)'; ... + 'Str00', 'strings(0,0)'; ... + 'Str10', 'strings(1,0)'; ... + 'Str022', 'strings(0,2,2)'; ... + 'Fh00', 'function_handle.empty'; ... + 'Fh10', 'function_handle.empty(1,0)'; ... + 'D022', 'zeros(0,2,2)'; ... + 'I8203', 'int8(zeros(2,0,3))'; ... + 'Lg012', 'false(0,1,2)'; ... + 'Ch002', 'char(zeros(0,0,2))'; ... + 'En022', 'GearMode.empty(0,2,2)'; ... + 'EnND', 'repmat(GearMode.Drive,1,2,2)'; ... + 'DWide', 'zeros(0,2,2147483648)'; ... + 'I8Wide', 'int8(zeros(2147483648,0,2))'; ... + 'LgWide', 'false(0,2,2147483648)'; ... + 'ChWide', 'char(zeros(0,2,2147483648))'; ... + 'EnWide', 'GearMode.empty(0,2,2147483648)'}; +NOT_IN_BINARY = {'Fh00', 'Fh10'}; +PLACES = {'entry', 'cell', 'field', 'param', 'prop'}; +V = cell(size(EXPR, 1), 1); +made = true(size(EXPR, 1), 1); +for i = 1:size(EXPR, 1) + try + V{i} = eval(EXPR{i,2}); + catch e + made(i) = false; + fprintf('MAKE %-7s %s FAILED %s\n', EXPR{i,1}, EXPR{i,2}, strrep(e.message, newline, ' ')); + end +end +% Which values a binary dictionary saves: each alone, at its five places, in a scratch file. +binarySaveError = repmat({''}, size(EXPR, 1), 1); +for i = 1:size(EXPR, 1) + if ~made(i) || any(strcmp(EXPR{i,1}, NOT_IN_BINARY)), continue; end + fn = fullfile(outdir, 'scratch_binary.sldd'); + if exist(fn, 'file'), delete(fn); end + dd = Simulink.data.dictionary.create(fn); dd.FileFormat = 'compressed-binary'; + addAll(dd, EXPR(i,1), V(i), PLACES); + try + saveChanges(dd); + catch e + binarySaveError{i} = strrep(e.message, newline, ' '); + end + close(dd); + Simulink.data.dictionary.closeAll('-discard'); +end +inBinary = made & cellfun(@isempty, binarySaveError) & ~ismember(EXPR(:,1), NOT_IN_BINARY); +files = struct(); +for fmt = {'uncompressed-text', 'compressed-binary'} + fn = fullfile(outdir, ['self_' strrep(fmt{1}, '-', '_') '.sldd']); + if exist(fn, 'file'), delete(fn); end + dd = Simulink.data.dictionary.create(fn); dd.FileFormat = fmt{1}; + if strcmp(fmt{1}, 'compressed-binary'), keep = inBinary; else, keep = made; end + refused = addAll(dd, EXPR(keep,1), V(keep), PLACES); + saveChanges(dd); close(dd); + files.(strrep(fmt{1}, '-', '_')) = struct('fn', fn, 'refused', refused); +end +Simulink.data.dictionary.closeAll('-discard'); +textFile = files.uncompressed_text; binFile = files.compressed_binary; +txt = fileread(textFile.fn); +self = struct('id', {}, 'expr', {}, 'place', {}, 'text', {}, 'refused', {}, 'textReads', {}, 'binaryReads', {}, 'binarySaveError', {}); +for i = 1:size(EXPR, 1) + if ~made(i), continue; end + for q = 1:numel(PLACES) + [nm, sec] = placed(EXPR{i,1}, PLACES{q}); + row = struct('id', EXPR{i,1}, 'expr', EXPR{i,2}, 'place', PLACES{q}, 'text', '', 'refused', '', 'textReads', [], 'binaryReads', [], 'binarySaveError', binarySaveError{i}); + if isfield(textFile.refused, nm) + row.refused = textFile.refused.(nm); + else + row.text = spellingAt(txt, nm, PLACES{q}); + row.textReads = readAt(textFile.fn, nm, sec, PLACES{q}); + end + if inBinary(i) && ~isfield(binFile.refused, nm) + row.binaryReads = readAt(binFile.fn, nm, sec, PLACES{q}); + end + self(end+1) = row; %#ok + fprintf('SELF %-7s %-5s text=%s refused=%s => %s | bin %s\n', EXPR{i,1}, PLACES{q}, regexprep(row.text(1:min(end, 160)), '\s+', ' '), row.refused, readsText(row.textReads), readsText(row.binaryReads)); + end +end + +%% CANDIDATES: hand-patched spellings read back +base = fullfile(outdir, 'cand_base.sldd'); +if exist(base, 'file'), delete(base); end +dd = Simulink.data.dictionary.create(base); dd.FileFormat = 'uncompressed-text'; +design = getSection(dd, 'Design Data'); other = getSection(dd, 'Other Data'); +addEntry(design, 'k_entry', 987654321); +addEntry(design, 'k_cell', {987654322}); +addEntry(design, 'k_param', Simulink.Parameter(987654323)); +addEntry(design, 'k_field', struct('f', 987654324)); +w = Widget; w.Scalar = 987654325; +addEntry(other, 'k_prop', w); +saveChanges(dd); close(dd); +Simulink.data.dictionary.closeAll('-discard'); +baseText = fileread(base); +CANDS = jsondecode(fileread(fullfile(outdir, 'cands.json'))); +KEYS = {'entry', 'k_entry', 987654321, 'design'; 'cell', 'k_cell', 987654322, 'design'; ... + 'param', 'k_param', 987654323, 'design'; 'field', 'k_field', 987654324, 'design'; ... + 'prop', 'k_prop', 987654325, 'other'}; +candidates = struct('id', {}, 'spelling', {}, 'place', {}, 'reads', {}); +for k = 1:numel(CANDS) + for q = 1:size(KEYS, 1) + [t, ok] = putCandidate(baseText, KEYS{q,3}, CANDS(k).spelling); + if ~ok + reads = struct('error', 'PLACEHOLDER-NOT-FOUND'); + else + fn = fullfile(outdir, sprintf('cand_%02d_%s.sldd', k, KEYS{q,1})); + fid = fopen(fn, 'w', 'n', 'UTF-8'); fwrite(fid, t, 'char'); fclose(fid); + reads = readAt(fn, KEYS{q,2}, KEYS{q,4}, KEYS{q,1}); + end + candidates(end+1) = struct('id', CANDS(k).id, 'spelling', CANDS(k).spelling, 'place', KEYS{q,1}, 'reads', reads); %#ok + fprintf('CAND %-8s %-5s => %s\n', CANDS(k).id, KEYS{q,1}, readsText(reads)); + end +end + +truth = struct('version', version, 'release', version('-release'), 'date', char(datetime('now', 'Format', 'yyyy-MM-dd')), ... + 'self', self, 'candidates', candidates); +fid = fopen(fullfile(outdir, 'lossy_empties_readback.truth.json'), 'w', 'n', 'UTF-8'); +fprintf(fid, '%s\n', jsonencode(truth, 'PrettyPrint', true)); +fclose(fid); +fprintf('LOSSY_EMPTIES_READBACK OK\n'); + +% Each value at each place in dictionary `dd`; what MATLAB refused, by entry name. +function refused = addAll(dd, ids, vals, places) + design = getSection(dd, 'Design Data'); other = getSection(dd, 'Other Data'); + refused = struct(); + for i = 1:numel(ids) + for q = 1:numel(places) + [nm, sec] = placed(ids{i}, places{q}); + try + val = valueAt(vals{i}, places{q}); + if strcmp(sec, 'other'), addEntry(other, nm, val); else, addEntry(design, nm, val); end + catch e + refused.(nm) = strrep(e.message, newline, ' '); + end + end + end +end + +% The entry name and its section for value `id` standing at `place`. +function [nm, sec] = placed(id, place) + sec = 'design'; + pre = struct('entry', 'e_', 'cell', 'c_', 'field', 's_', 'param', 'p_', 'prop', 'w_'); + nm = [pre.(place) id]; + if strcmp(place, 'prop'), sec = 'other'; end +end + +% The value an entry holds for `v` standing at `place`. +function val = valueAt(v, place) + switch place + case 'entry', val = v; + case 'cell', val = {v}; + case 'field', val = struct('f', {v}); + case 'param', val = Simulink.Parameter; val.Value = v; + case 'prop', val = Widget; val.Scalar = v; + end +end + +% MATLAB's own spelling of the value at `place` in entry `nm`: the raw JSON text after the +% place's key, for a value no deeper than one object or one flat list; '?ABSENT' when MATLAB +% wrote no such key there, and '?' + the next 400 characters for a deeper value. +function s = spellingAt(txt, nm, place) + at = strfind(txt, ['"name": "' nm '"']); + if numel(at) ~= 1, s = '?NAME'; return; end + rest = txt(at + 1:end); + next = strfind(rest, '"name": "'); + if ~isempty(next), rest = rest(1:next(1) - 1); end + keyOf = struct('entry', '"value":', 'cell', '"_elements":', 'field', '"f":', 'param', '"Value":', 'prop', '"Scalar":'); + k = strfind(rest, keyOf.(place)); + if isempty(k), s = '?ABSENT'; return; end + rest = rest(k(1) + numel(keyOf.(place)):end); + if strcmp(place, 'cell'), rest = regexprep(rest, '^\s*\[', '', 'once'); end + tok = regexp(rest, '^\s*(\[[^\[\]{}]*\]|""|\{[^{}]*\})', 'tokens', 'once'); + if isempty(tok), s = ['?' rest(1:min(end, 400))]; else, s = tok{1}; end +end + +% What MATLAB reads at `place` in entry `nm` of file `fn`: {class, size} or {error}. +function r = readAt(fn, nm, sec, place) + try + Simulink.data.dictionary.closeAll('-discard'); + dd = Simulink.data.dictionary.open(fn); + if strcmp(sec, 'other'), s = getSection(dd, 'Other Data'); else, s = getSection(dd, 'Design Data'); end + v = getValue(getEntry(s, nm)); + switch place + case 'cell', v = v{1}; + case 'field', v = v.f; + case 'param', v = v.Value; + case 'prop', v = v.Scalar; + end + r = struct('class', class(v), 'size', size(v)); + close(dd); + catch e + r = struct('error', strrep(e.message, newline, ' ')); + end + Simulink.data.dictionary.closeAll('-discard'); +end + +function s = readsText(r) + if isempty(r), s = '-'; elseif isfield(r, 'error'), s = ['ERROR ' r.error]; + else, s = sprintf('class=%s size=%s', r.class, mat2str(r.size)); end +end + +% `txt` with the one value MATLAB wrote as the placeholder number `ph` replaced by `cand`. +function [txt, ok] = putCandidate(txt, ph, cand) + phs = sprintf('%d', ph); + [s, e] = regexp(txt, ['(? fileURLToPath(new URL(rel, import.meta.url)); const TRUTH: { version: string; release: string; self: SelfRow[]; candidates: Candidate[] } = JSON.parse( readFileSync(at('./parity/matlab/text_empty_readback.truth.json'), 'utf8'), ); +/** MATLAB's answers about N-D empties, empty strings and empty function handles (test/lossyEmptiesReadback.test.ts). */ +const LOSSY: { self: SelfRow[]; candidates: Candidate[] } = JSON.parse(readFileSync(at('./parity/matlab/lossy_empties_readback.truth.json'), 'utf8')); const buffer = (u8: Uint8Array) => u8.buffer.slice(u8.byteOffset, u8.byteOffset + u8.byteLength) as ArrayBuffer; const bytesAt = (rel: string) => new Uint8Array(readFileSync(at(rel))); @@ -71,11 +75,17 @@ function valueAt(value: any, place: Place): unknown { /** What MATLAB read back of `spelling` at `place`: a candidate's, or its own spelling's; undefined if it was never asked. */ function matlabRead(spelling: string, place: Place): Reads | undefined { - const candidate = TRUTH.candidates.find((c) => c.place === place && canonical(c.spelling) === spelling); - if (candidate) { - return candidate.reads; + for (const truth of [TRUTH, LOSSY]) { + const candidate = truth.candidates.find((c) => c.place === place && canonical(c.spelling) === spelling); + if (candidate) { + return candidate.reads; + } + const own = truth.self.find((s) => s.place === place && s.text !== '' && !s.text.startsWith('?') && canonical(s.text) === spelling); + if (own) { + return own.textReads; + } } - return TRUTH.self.find((s) => s.place === place && s.text !== '' && !s.text.startsWith('?') && canonical(s.text) === spelling)?.textReads; + return undefined; } /** Every value MATLAB put in its binary dictionary, pasted into a text dictionary, saved and reopened. */ @@ -145,8 +155,8 @@ describe('a text dictionary is given the spelling MATLAB reads back for an empty for (const s of rows) { const original = s.binaryReads as { class: string; size: number[] }; // An object array's empty has no spelling MATLAB reads back (the next case); a char at a - // Parameter's Value is a string in MATLAB, whatever its spelling; an N-D one is as it was. - if (OBJECT_CLASSES.has(original.class) || (s.place === 'param' && original.class === 'char') || original.size.length > 2) { + // Parameter's Value is a string in MATLAB, whatever its spelling. + if (OBJECT_CLASSES.has(original.class) || (s.place === 'param' && original.class === 'char')) { continue; } const reads = matlabRead(spelled(s), s.place); @@ -171,7 +181,7 @@ describe('a text dictionary is given the spelling MATLAB reads back for an empty const wrong: string[] = []; for (const s of rows) { const original = s.binaryReads as { class: string; size: number[] }; - if ((s.place === 'param' && original.class === 'char') || original.size.length > 2) { + if (s.place === 'param' && original.class === 'char') { continue; } const node = nodeAt(reopened, PREFIX[s.place] + s.id, s.place); diff --git a/test/unshapedObjectValue.test.ts b/test/unshapedObjectValue.test.ts new file mode 100644 index 00000000..3be780ef --- /dev/null +++ b/test/unshapedObjectValue.test.ts @@ -0,0 +1,297 @@ +// Copyright 2026 The MathWorks, Inc. +// +// A hand-edited text dictionary whose value, at an entry, a struct field or a cell element, is a +// JSON object of no shape MATLAB writes: `{"foo": 1}`, `{}`, or a class marker left with no class, +// `{"_array_class": null, ...}` or `{"_object_class": null, ...}`. It opens, shows the JSON it holds +// and says so in one warning for the entry, and is saved to a text dictionary as it was read. Its +// XML, the spelling a binary dictionary holds and a paste into one writes, is refused, naming the +// entry and the path to it, and nothing is written (G1-OBJTAIL; the maintainer's group F rulings of +// 2026-10-18: a save the writer cannot spell is refused rather than written wrong, and malformed +// input warns and shows what was read). +// +// Such an object was read as a double scalar holding the object (MatlabVariableNode.parseScalar), +// shown as String() of it, `[object Object]`, with an editor and no warning, and written in the +// double's own XML, `

[object Object]

`. MATLAB (R2027a) opens the +// file and reads no value from it: a 1x0 double at an entry, the struct without the field, a 0x0 +// char in a cell. As an object's property or a Simulink.Parameter's Value the same object was +// already refused by the property writer (C-205), but its row showed `[object Object]` too. +import { describe, it, expect } from 'vitest'; +import { readFileSync } from 'node:fs'; +import { fileURLToPath } from 'node:url'; +import { createSession } from '../src/index.js'; +import { ingest } from '../src/core/ingest.js'; +import { serializeEntryToXml } from '../src/datamodel/parser/BinarySlddSerializer.js'; +import { MatBudgetError, MatWriteError } from '../src/datamodel/parser/MatWriter.js'; +import { BINARY, TEXT as SPARSE_TEXT, copyOf, sparseFixture, thrownBy } from './tools/pasteVenues.js'; +import '../src/datamodel/node/data/NodeClassMap.js'; + +type Any = any; + +/** The refusal's whole text: the object at `path` of `entry`, described as `what`. */ +const refusalText = (entry: string, path: string, what: string) => + `Cannot write "${entry}": ${path} is ${what}, which a binary dictionary has no spelling for. Nothing was written.`; +/** The warning for an entry holding one such object, shown as `shown`, at `path`. */ +const warningText = (entry: string, path: string, shown: string) => + `"${entry}" holds ${shown}${path === entry ? '' : ' at ' + path}, which is not a value MATLAB writes; it is shown as read.`; + +const structOf = (fields: Record) => ({ _array_type: 'Struct', _dimensions: [1, 1], _elements: [fields] }); +const cellOf = (...elements: unknown[]) => ({ _array_type: 'Cell', _dimensions: [1, elements.length], _elements: elements, _mw_element_type: 'MATLABArray' }); +const widget = (props: Record) => ({ _array_class: 'Widget', _dimensions: [1, 1], _elements: [{ _properties: props }], _mw_element_type: 'MATLABArray' }); +const parameterOf = (value: unknown) => ({ _array_class: 'Simulink.Parameter', _dimensions: [1, 1], _elements: [{ _properties: { Value: value } }] }); + +// The objects a hand edit can leave: the value, what the row shows (the JSON it holds, cut at 60 +// characters), and how the refusal describes it (DataNode._unspellable's words). +const OBJECTS: [value: unknown, shown: string, what: string][] = [ + [{ foo: 1 }, '{"foo":1}', 'an object holding "foo"'], + [{}, '{}', 'an object holding no key'], + [ + { _array_class: null, _dimensions: [1, 1], _elements: [{ _properties: { A: 1 } }] }, + '{"_array_class":null,"_dimensions":[1,1],"_elements":[{"_pro...', + 'an object holding "_array_class", "_dimensions", "_elements"', + ], + [{ _object_class: null, _properties: { A: 1 } }, '{"_object_class":null,"_properties":{"A":1}}', 'an object holding "_object_class", "_properties"'], + [{ _type: 'double' }, '{"_type":"double"}', 'an object holding "_type"'], +]; + +// Where the object stands, the entry's value holding it, the path from the entry to it, and the +// row that shows it (from the entry). +type Place = [place: string, value: (v: unknown) => unknown, suffix: string, row: (entry: Any) => Any]; +const child = (name: string) => (n: Any) => n.children.find((c: Any) => c.name === name); +const PLACES: Place[] = [ + ['the entry itself', (v) => v, '', (e) => e], + ["a field of the entry's struct", (v) => structOf({ f: v, g: 1 }), '.f', child('f')], + ["an element of the entry's cell", (v) => cellOf(2, v), '{2}', child('2')], + ["an element of a cell at a field of the entry's struct", (v) => structOf({ c: cellOf(v) }), '.c{1}', (e) => child('1')(child('c')(e))], +]; +// Where the property writer refused it already (C-205): only the row was wrong. +const REFUSED_BEFORE: Place[] = [ + ["an object's property", (v) => widget({ P: v, n: 1 }), '.P', child('P')], + ["a Simulink.Parameter's Value", (v) => parameterOf(v), '.Value', (e) => e], +]; + +// Each case is an entry of its own, named `e`, of one hand-edited text dictionary. +type Case = { name: string; value: unknown; path: string; shown: string; what: string; row: (entry: Any) => Any; derived?: boolean }; +const cases: Case[] = []; +const caseOf = (value: unknown, suffix: string, shown: string, what: string, row: (entry: Any) => Any, derived = false): Case => { + const name = `e${cases.length}`; + const c = { name, value: JSON.parse(JSON.stringify(value)), path: name + suffix, shown, what, row, derived }; + cases.push(c); + return c; +}; +const placed = (list: Place[]) => + list.map(([place, value, suffix, row]) => ({ place, cases: OBJECTS.map(([v, shown, what]) => caseOf(value(v), suffix, shown, what, row)) })); +const PLACED = placed(PLACES); +const PROPERTIES = placed(REFUSED_BEFORE); +// Two in one entry: one warning, which counts them and names the first. +const two = caseOf(structOf({ f: { foo: 1 }, h: {} }), '.f', '{"foo":1}', 'an object holding "foo"', child('f')); +// Where a writer other than the XML's was asked for it: an Architectural Data entry, which is a +// Simulink.data.dictionary Constant; a cell holding a sparse array too, which the XML writes as one +// MAT stream; and an N-D cell, which a text dictionary holds only as its stream once it is edited. +const FOO: [string, string] = ['{"foo":1}', 'an object holding "foo"']; +const constant = caseOf({ foo: 1 }, '', ...FOO, (e) => e, true); +const withSparse = caseOf(cellOf({ foo: 1 }, { _type: 'sparse', _value: 'Matrix(2,2)\n[[0, 1]; [0, 0]]' }), '{1}', ...FOO, child('1')); +const nd = caseOf({ _array_type: 'Cell', _dimensions: [1, 1, 2], _elements: [{ foo: 1 }, 2], _mw_element_type: 'MATLABArray' }, '{1}', ...FOO, child('1')); +const OTHER_WRITERS = [constant, withSparse, nd]; +// A spellable entry beside them, which is written. +const spellable = caseOf(structOf({ f: 1, g: 'a' }), '', '', '', (e) => e); + +/** rt_text.sldd with each of `list` appended as an entry, as a hand edit leaves the file. */ +const handEdited = (list: Case[]): string => { + const json = JSON.parse(readFileSync(fileURLToPath(new URL('./fixtures/rt_text.sldd', import.meta.url)), 'utf8')); + const entries = json.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries; + list.forEach((c, i) => { + const metadata = { ...entries[0].metadata, uuid: `d43e9523-8ba6-426a-b689-${String(7e11 + i)}`, ...(c.derived ? { isderived: '1' } : {}) }; + entries.push({ name: c.name, metadata, value: c.value }); + }); + return JSON.stringify(json, null, '\t'); +}; +const HAND_EDITED = handEdited(cases); + +const openText = (text: string): { session: Any; root: Any } => { + const session = createSession(); + return { session, root: ingest(session, text, { filename: 'handEdited.sldd' }) }; +}; +const TEXT = openText(HAND_EDITED); +// rt_text.sldd's entries, and so these, are in its "other" section. +const entryIn = (root: Any, c: Case): Any => root.children.flatMap((s: Any) => s.children).find((e: Any) => e.name === c.name); +const textEntry = (c: Case): Any => entryIn(TEXT.root, c); + +let seq = 0; +/** The case's entry, copied as a host copies it, pasted into a fresh `file`. */ +function pastedInto(file: string, c: Case): { session: Any; root: Any; entry: Any } { + const session = createSession(); + const root: Any = ingest(session, sparseFixture(file), { filename: file }); + const entry = root + .getSection('design') + .parseEntry({ name: c.name, metadata: { uuid: `00000000-0000-4000-c1a7-${String(++seq).padStart(12, '0')}` }, value: copyOf(textEntry(c)) }); + return { session, root, entry }; +} + +/** The entry's XML, a paste of it into a binary dictionary and the save of that are each refused, with exactly `text`. */ +function expectRefused(c: Case, text: string): void { + // The text dictionary's own entry, written as XML, as a paste into a binary dictionary writes it. + const [direct] = thrownBy(() => serializeEntryToXml(textEntry(c))); + expect(direct?.name).toBe('MatWriteError'); + expect(direct).toBeInstanceOf(MatWriteError); + // This writer has no spelling for the value, which is not the budget's refusal. + expect(direct).not.toBeInstanceOf(MatBudgetError); + expect(direct!.message).toBe(text); + const { session, root, entry } = pastedInto(BINARY, c); + const [pasted] = thrownBy(() => serializeEntryToXml(entry)); + expect(pasted).toBeInstanceOf(MatWriteError); + expect(pasted!.message).toBe(text); + const [saved] = thrownBy(() => session.serializeSource(root.name)); + expect(saved).toBeInstanceOf(MatWriteError); + expect(saved!.message).toBe(text); +} + +describe('a hand-edited text dictionary holding an object of no MATLAB shape, opened', () => { + for (const { place, cases: list } of [...PLACED, ...PROPERTIES]) { + it(`at ${place}: shows the JSON it holds, and takes no editor`, () => { + for (const c of list) { + const row = c.row(textEntry(c)); + expect([c.path, row.displayValue]).toEqual([c.path, `<${c.shown}>`]); + expect([c.path, row.valueEditable]).toEqual([c.path, false]); + } + }); + } + + it('as an Architectural Data Constant, in a cell beside a sparse array, and in an N-D cell: shows the JSON it holds, and takes no editor', () => { + expect(textEntry(constant).constructor.name).toBe('ConstantNode'); + for (const c of OTHER_WRITERS) { + const row = c.row(textEntry(c)); + expect([c.path, row.displayValue, row.valueEditable]).toEqual([c.path, '<{"foo":1}>', false]); + } + }); + + it('says so in one warning for each entry holding one, naming the first and how many there are', () => { + const expected = [...PLACED, ...PROPERTIES] + .flatMap((p) => p.cases) + .map((c) => ({ code: 'part-unreadable', message: warningText(c.name, c.path, c.shown), part: c.name })); + expected.push({ + code: 'part-unreadable', + message: `"${two.name}" holds 2 values that are not values MATLAB writes; the first is {"foo":1} at ${two.path}, and each is shown as read.`, + part: two.name, + }); + for (const c of OTHER_WRITERS) { + expected.push({ code: 'part-unreadable', message: warningText(c.name, c.path, c.shown), part: c.name }); + } + expect(TEXT.root.warnings).toEqual(expected); + }); + + it('is saved, untouched, as the bytes it was read from', () => { + const { session, root } = openText(HAND_EDITED); + const out = session.serializeSource(root.name)!; + expect(out.kind).toBe('text'); + expect(out.text).toBe(HAND_EDITED); + }); + + it('copies each entry as it was read', () => { + expect(cases.filter((c) => JSON.stringify(copyOf(textEntry(c))) !== JSON.stringify(c.value)).map((c) => c.path)).toEqual([]); + }); + + it('keeps the object as read when a sibling field is edited and the text dictionary saved', () => { + const { session, root } = openText(HAND_EDITED); + const c = PLACED[1].cases[0]; + const entry = entryIn(root, c); + expect(entry.children.find((n: Any) => n.name === 'g').setProperty('Value', '3')).toBe(true); + const saved = JSON.parse(session.serializeSource(root.name)!.text!); + const back = saved.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries.find((e: Any) => e.name === c.name); + expect(back.value._elements[0]).toEqual({ f: { foo: 1 }, g: 3 }); + }); + + it('pasted into another text dictionary and saved, holds the object as it was read', () => { + for (const c of PLACED.flatMap((p) => p.cases)) { + const { session, root } = pastedInto(SPARSE_TEXT, c); + const saved = JSON.parse(session.serializeSource(root.name)!.text!); + const back = saved.__MW_TEXT_PARTS__['__MW_TEXT_PART__/data/chunk0'].__MW_TEXT_content.entries.find((e: Any) => e.name === c.name); + expect([c.path, back.value]).toEqual([c.path, c.value]); + } + }); + + it('shows a value no JSON spells, handed in by a host, by its keys, and does not throw', () => { + const session = createSession(); + const root: Any = ingest(session, sparseFixture(SPARSE_TEXT), { filename: SPARSE_TEXT }); + const entry = root.getSection('design').parseEntry({ name: 'hosted', metadata: { uuid: '00000000-0000-4000-c1a7-ffffffffffff' }, value: { a: 1, b: 2n } }); + expect(entry.displayValue).toBe('<{"a", "b"}>'); + expect(entry.valueEditable).toBe(false); + }); + + it('pasted, is not reported on the next dictionary opened, which holds none', () => { + // A paste records the object as a read does, and no read takes the record then: the next one + // takes it before each entry is built (SlddNode.parse), so it is not reported on that file's + // first entry, naming the pasted entry's path. + pastedInto(SPARSE_TEXT, PLACED[1].cases[0]); + const { root } = openText(readFileSync(fileURLToPath(new URL('./fixtures/rt_text.sldd', import.meta.url)), 'utf8')); + expect(root.warnings ?? []).toEqual([]); + }); + + it('as an element of a numeric array, the family this leaves out: shown as before, with an editor and no warning (control)', () => { + // `[1, {"foo": 1}]` is read as a double array, not by parseScalar's last arm, so its element + // holds the object but was not read from it, and is no _unshapedObject: it shows String() of + // it with an editor, as before. Its XML is written so too (`1.0 [object Object]`), as before. + const arrays: Case[] = [ + { name: 'arr', value: [1, { foo: 1 }], path: 'arr(2)', shown: '', what: '', row: child('2') }, + { name: 'inCell', value: cellOf(2, [1, { foo: 1 }]), path: 'inCell{2}(2)', shown: '', what: '', row: (e) => child('2')(child('2')(e)) }, + ]; + const { root } = openText(handEdited(arrays)); + for (const c of arrays) { + const row = c.row(entryIn(root, c)); + expect([c.path, row.matlabPath, row.displayValue, row.valueEditable]).toEqual([c.path, c.path, '[object Object]', true]); + } + expect(root.warnings ?? []).toEqual([]); + }); +}); + +describe('an object of no MATLAB shape, written as XML', () => { + for (const { place, cases: list } of PLACED) { + it(`at ${place}: refused, naming the entry and the path, where it was written as [object Object]`, () => { + for (const c of list) { + expectRefused(c, refusalText(c.name, c.path, c.what)); + } + }); + } + + it('two in one entry: the first is the one named', () => { + expectRefused(two, refusalText(two.name, two.path, two.what)); + }); + + for (const { place, cases: list } of PROPERTIES) { + it(`at ${place}: refused, as before`, () => { + for (const c of list) { + expectRefused(c, refusalText(c.name, c.path, c.what)); + } + }); + } + + it('as an Architectural Data Constant: refused, naming the entry', () => { + expectRefused(constant, refusalText(constant.name, constant.path, constant.what)); + }); + + it('in a cell beside a sparse array: refused, where the cell was written as one MAT stream holding it as 0', () => { + expectRefused(withSparse, refusalText(withSparse.name, withSparse.path, withSparse.what)); + }); + + it('in an N-D cell: refused, where it was written as [object Object]', () => { + expectRefused(nd, refusalText(nd.name, nd.path, nd.what)); + }); + + it('in an N-D cell edited at a sibling: the text save, which holds the cell only as its MAT stream, is refused, where it held the object as 0', () => { + const { session, root } = openText(HAND_EDITED); + expect(entryIn(root, nd).children.find((n: Any) => n.name === '2').setProperty('Value', '3')).toBe(true); + const [thrown] = thrownBy(() => session.serializeSource(root.name)); + expect(thrown).toBeInstanceOf(MatWriteError); + expect(thrown).not.toBeInstanceOf(MatBudgetError); + expect(thrown!.message).toBe( + `Cannot write "${nd.name}": ${nd.name} is a 1x1x2 cell, which a text dictionary holds only as its MAT stream, and that stream cannot be written: ` + + 'an object of no shape MATLAB writes, {"foo":1}, which MatWriter has no variable for. Nothing was written.', + ); + }); + + it('a spellable entry beside them is written, as before', () => { + const xml = serializeEntryToXml(textEntry(spellable)); + expect(xml).toContain('

1.0

'); + const { session, root } = pastedInto(BINARY, spellable); + expect(session.serializeSource(root.name)!.kind).toBe('binary'); + }); +});