diff --git a/out/extension.js b/out/extension.js index 737aebe..912849b 100644 --- a/out/extension.js +++ b/out/extension.js @@ -751,7 +751,6 @@ function formatItem(item) { let config = vscode.workspace.getConfiguration("oh-alignment-tool"); let formatStyle = item.formatOption ? item.formatOption : config.formatStyle; let newLineAfterItem = config.newLineAfterItem; - let multilineIndentAmount = config.multilineIndentAmount; let editor = vscode.window.activeTextEditor; let formattedItem = ""; // Only execute if there's an active text editor @@ -759,13 +758,27 @@ function formatItem(item) { return ""; } let highestLengths = []; - highestLengths[0] = utils.generateTabFromSpaces(item.highestLengths[0]); - highestLengths[1] = utils.generateTabFromSpaces(item.highestLengths[1]); - highestLengths[2] = utils.generateTabFromSpaces(item.highestLengths[2]); - highestLengths[3] = utils.generateTabFromSpaces(item.highestLengths[3]); - highestLengths[4] = utils.generateTabFromSpaces(item.highestLengths[4]); - highestLengths[5] = utils.generateTabFromSpaces(item.highestLengths[5]); - highestLengths[6] = utils.generateTabFromSpaces(item.highestLengths[6]); + let indentWithSpaces = editor.options.insertSpaces; + let minIndent = config.minimumIndentAmount; + if (!indentWithSpaces) { + highestLengths[0] = utils.generateTabFromSpaces(item.highestLengths[0]); + highestLengths[1] = utils.generateTabFromSpaces(item.highestLengths[1]); + highestLengths[2] = utils.generateTabFromSpaces(item.highestLengths[2]); + highestLengths[3] = utils.generateTabFromSpaces(item.highestLengths[3]); + highestLengths[4] = utils.generateTabFromSpaces(item.highestLengths[4]); + highestLengths[5] = utils.generateTabFromSpaces(item.highestLengths[5]); + highestLengths[6] = utils.generateTabFromSpaces(item.highestLengths[6]); + } + else { + highestLengths[0] = item.highestLengths[0]; + highestLengths[0] = item.highestLengths[0]; + highestLengths[1] = item.highestLengths[1]; + highestLengths[2] = item.highestLengths[2]; + highestLengths[3] = item.highestLengths[3]; + highestLengths[4] = item.highestLengths[4]; + highestLengths[5] = item.highestLengths[5]; + highestLengths[6] = item.highestLengths[6]; + } // Check for the formatting style in the user configuration if (formatStyle === "Column" || formatStyle === "ChannelColumn") { // Fill the required amount of tabs after each item part. For Column Style Formatting @@ -778,14 +791,14 @@ function formatItem(item) { // Add the leading whitespace (for group and subgroups) // Add tabs to string for (let i = 0; i < item.leadingWhiteSpace; i++) { - newType = "\t" + newType; + newType = editor.options.insertSpaces ? " " + newType : "\t" + newType; } if (formatStyle === "ChannelColumn") { let tabs = ""; let spaces = ""; - let tabIndent = highestLengths[0] + highestLengths[1] + highestLengths[2] + highestLengths[3] + highestLengths[4] + highestLengths[5]; + let tabIndent = newType.length + newName.length + newLabel.length + newIcon.length + newGroup.length + newTag.length; for (let i = 0; i < tabIndent; i++) { - tabs = tabs + "\t"; + tabs += editor.options.insertSpaces ? " " : "\t"; } var identResult = item.channel.match(/^\{(\w*)="/); let identCount = 0; @@ -806,38 +819,22 @@ function formatItem(item) { // Multiline Format Style } else if (formatStyle === "Multiline") { - // If item type is longer than the indent, make sure there's at least one space - let typeNameIndent = ""; - let tabSize = 0; - let indent = ""; - // Get the tab size setting of the current editor - if (editor.options.tabSize !== undefined) { - tabSize = +editor.options.tabSize; - } - // Check if Indent Amount is smaller than item type - if (highestLengths[0] > multilineIndentAmount) { - typeNameIndent = typeNameIndent + "\t"; - } - else { - let gapSize = multilineIndentAmount - Math.floor(item.type.length / tabSize); - for (let index = 0; index < gapSize; index++) { - typeNameIndent = typeNameIndent + "\t"; - } - } - // Check if item parts are empty - let newLabel = utils.fillMultiLines(item.label, multilineIndentAmount, item.leadingWhiteSpace); - let newIcon = utils.fillMultiLines(item.icon, multilineIndentAmount, item.leadingWhiteSpace); - let newGroup = utils.fillMultiLines(item.group, multilineIndentAmount, item.leadingWhiteSpace); - let newTag = utils.fillMultiLines(item.tag, multilineIndentAmount, item.leadingWhiteSpace); - let newChannel = utils.fillMultiLines(item.channel, multilineIndentAmount, item.leadingWhiteSpace); - let newComment = utils.fillMultiLines(item.comment, multilineIndentAmount, item.leadingWhiteSpace); - // Insert a new line after the item if config says so + // Fill the required amount of tabs after each item part. For Column Style Formatting + let newMultiType = utils.fillColumns(item.type, highestLengths[0]); // Add the leading whitespace (for group and subgroups) // Add tabs to string for (let i = 0; i < item.leadingWhiteSpace; i++) { - indent = "\t" + indent; + newMultiType = editor.options.insertSpaces ? " " + newMultiType : "\t" + newMultiType; } - formattedItem = indent + item.type + typeNameIndent + item.name + newLabel + newIcon + newGroup + newTag + newChannel + newComment; + let newMultiTypeLength = indentWithSpaces ? newMultiType.length : utils.generateTabFromSpaces(newMultiType.length); + // Check if item parts are empty + let newLabel = utils.fillMultiLines(item.label, newMultiTypeLength, item.leadingWhiteSpace); + let newIcon = utils.fillMultiLines(item.icon, newMultiTypeLength, item.leadingWhiteSpace); + let newGroup = utils.fillMultiLines(item.group, newMultiTypeLength, item.leadingWhiteSpace); + let newTag = utils.fillMultiLines(item.tag, newMultiTypeLength, item.leadingWhiteSpace); + let newChannel = utils.fillMultiLines(item.channel, newMultiTypeLength, item.leadingWhiteSpace); + let newComment = utils.fillMultiLines(item.comment, newMultiTypeLength, item.leadingWhiteSpace); + formattedItem = newMultiType + item.name + newLabel + newIcon + newGroup + newTag + newChannel + newComment; } else { // @todo add window message for user diff --git a/out/extension.js.map b/out/extension.js.map index 73bdccb..60ca108 100644 --- a/out/extension.js.map +++ b/out/extension.js.map @@ -1 +1 @@ -{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,iCAAiC;AAEjC,iCAAiC;AAEjC,+BAAgC;AAEhC,iCAAkC;AAMlC,2CAA2C;AAC3C,MAAM,aAAa,GAAG,aAAa,CAAC;AACpC,MAAM,wBAAwB,GAAG,aAAa,CAAC;AAC/C,MAAM,sBAAsB,GAAG,aAAa,CAAC;AAC7C,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AACnC,MAAM,kBAAkB,GAAG,mCAAmC,CAAC;AAC/D,MAAM,kBAAkB,GAAG,sBAAsB,CAAC;AAElD,mDAAmD;AACnD,MAAM,eAAe,GAAG,0IAA0I,CAAC;AACnK,MAAM,eAAe,GAAG,sCAAsC,CAAC;AAC/D,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,eAAe,GAAG,OAAO,CAAC;AAChC,MAAM,gBAAgB,GAAG,SAAS,CAAC;AACnC,MAAM,cAAc,GAAG,sCAAsC,CAAC;AAC9D,MAAM,wBAAwB,GAAG,qCAAqC,CAAC;AACvE,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEzC,MAAM,sBAAsB,GAAG,gHAAgH,CAAC;AAEhJ,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,cAAc,GAAG,aAAa,CAAC;AACrC,MAAM,iBAAiB,GAAG,SAAS,CAAC;AACpC,MAAM,oBAAoB,GAAG,SAAS,CAAC;AACvC,MAAM,sBAAsB,GAAG,SAAS,CAAC;AAEzC,sBAAsB;AACtB,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,aAAa,GAAG,MAAM,CAAC;AAC7B,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,aAAa,GAAG,QAAQ,CAAC;AAC/B,MAAM,cAAc,GAAG,SAAS,CAAC;AACjC,MAAM,YAAY,GAAG,SAAS,CAAC;AAC/B,MAAM,gBAAgB,GAAG,kBAAkB,CAAC;AAE5C,6BAA6B;AAC7B,IAAI,sBAAsB,GAAG,CAAC,CAAC;AAC/B,IAAI,oBAAoB,GAAG,CAAC,CAAC;AAC7B,IAAI,uBAAuB,GAAG,CAAC,CAAC;AAChC,IAAI,0BAA0B,GAAG,CAAC,CAAC;AACnC,IAAI,4BAA4B,GAAG,CAAC,CAAC;AAErC,kBAAkB;AAClB,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAE7B,SAAS,gBAAgB,CAAC,QAA6B;IACtD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC;IACtC,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/E,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAgB,QAAQ,CAAC,OAAgC;IACxD,2BAA2B;IAC3B,OAAO,CAAC,aAAa,CAAC,IAAI,CACzB,MAAM,CAAC,SAAS,CAAC,sCAAsC,CAAC,SAAS,EAAE;QAClE,8BAA8B,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC5D,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;YACpE,oDAAoD;YACpD,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;gBAC3C,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aACnE;iBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;gBAChD,OAAO,cAAc,EAAE,CAAC;aACxB;iBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACjD,OAAO,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;aACjE;iBAAM;gBACN,OAAO,SAAS,CAAC;aACjB;QACF,CAAC;KACD,CAAC,CACF,CAAC;IACF,qCAAqC;IACrC,OAAO,CAAC,aAAa,CAAC,IAAI,CACzB,MAAM,CAAC,SAAS,CAAC,2CAA2C,CAAC,SAAS,EAAE;QACvE,mCAAmC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YACxE,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC3G,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;KACD,CAAC,CACF,CAAC;IAEF,wBAAwB;IACxB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACrE,2BAA2B,EAAE,CAAC;IAC/B,CAAC,CAAC,CAAC;IACH,uBAAuB;IACvB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpE,0BAA0B,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,uBAAuB;IACvB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpE,0BAA0B,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,uBAAuB;IACvB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpE,0BAA0B,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,uBAAuB;IACvB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACpE,0BAA0B,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,yBAAyB;IACzB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACtE,4BAA4B,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;AACJ,CAAC;AAtDD,4BAsDC;AAED;;GAEG;AACH,SAAgB,UAAU,KAAI,CAAC;AAA/B,gCAA+B;AAE/B;;GAEG;AACH,SAAS,2BAA2B;IACnC,UAAU,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACzH,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B;IAClC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC7G,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B;IAClC,UAAU,CAAC,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC7G,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B;IAClC,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AAC/G,CAAC;AAED;;GAEG;AACH,SAAS,0BAA0B;IAClC,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACjH,CAAC;AAED;;GAEG;AACH,SAAS,4BAA4B;IACpC,UAAU,CAAC,UAAU,EAAE,aAAa,EAAE,sDAAsD,EAAE,QAAQ,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,CAAC,CAAC;AACzJ,CAAC;AAED;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,KAAoB;IAC9C,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,2DAA2D;IAC3D,gDAAgD;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACpC,OAAO,MAAM,CAAC;KACd;IAED,oCAAoC;IACpC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAClD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5C,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;IACzC,IAAI,MAAuB,CAAC;IAC5B,IAAI,aAAa,GAAG,CAAC,CAAC;IAEtB,4BAA4B;IAC5B,gBAAgB,GAAG,KAAK,CAAC;IAEzB,IAAI,QAAQ,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAC7B,+BAA+B;IAC/B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3C,6BAA6B;IAC7B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IAC3C,6BAA6B;IAC7B,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACzC,qCAAqC;IACrC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC5D,qCAAqC;IACrC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE7C,IAAI,SAAS,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/I,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE1D,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAE1D,0DAA0D;IAC1D,KAAK,IAAI,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvD,0EAA0E;QAC1E,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnC,iEAAiE;QACjE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;QAC5C,IAAI,UAAU,GAAG,EAAE,CAAC;QAEpB,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3B,aAAa,EAAE,CAAC;SAChB;QAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,aAAa,EAAE,KAAK,EAAE,EAAE;YACnD,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;SAC/B;QAED,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;QAEjC,mEAAmE;QACnE,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YAC3B,aAAa,EAAE,CAAC;SAChB;QAED,IAAI,SAAS,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACxG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;KAC1D;IAED,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAoB;IAC3C,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,2DAA2D;IAC3D,gDAAgD;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACpC,OAAO,MAAM,CAAC;KACd;IAED,oCAAoC;IACpC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAClD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5C,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;IACzC,IAAI,MAAuB,CAAC;IAC5B,IAAI,SAAsB,CAAC;IAC3B,SAAS,GAAG,IAAI,KAAK,EAAE,CAAC;IAExB,IAAI,WAAW,GAAG,KAAK,CAAC;IACxB,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IAEzB,wCAAwC;IACxC,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IACpE,IAAI,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACnD,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE/C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,4BAA4B;IAC5B,gBAAgB,GAAG,KAAK,CAAC;IAEzB,+CAA+C;IAC/C,uCAAuC;IACvC,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,WAAW,GAAG,EAAE,CAAC;IACrB,IAAI,WAAW,GAAG,EAAE,CAAC;IAErB,4BAA4B;IAC5B,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtB,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAE1D,0DAA0D;IAC1D,KAAK,IAAI,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvD,0EAA0E;QAC1E,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnC,iEAAiE;QACjE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACrF,IAAI,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACrG,IAAI,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QACtG,IAAI,WAAW,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAC9F,IAAI,WAAW,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC;QAE9F,yEAAyE;QACzE,iBAAiB,GAAG,QAAQ,CAAC,gCAAgC,CAAC;QAC9D,IAAI,kBAAkB,KAAK,KAAK,EAAE;YACjC,iBAAiB,GAAG,CAAC,CAAC;SACtB;QAED,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,mBAAmB,IAAI,OAAO,IAAI,YAAY,IAAI,eAAe,IAAI,gBAAgB,EAAE;YACjI,IAAI,WAAW,EAAE;gBAChB,oCAAoC;gBACpC,IAAI,gBAAgB,EAAE;oBACrB,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzE;gBACD,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;gBAChN,gBAAgB,EAAE,CAAC;gBAEnB,+CAA+C;gBAC/C,uCAAuC;gBACvC,QAAQ,GAAG,EAAE,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAC;gBACd,SAAS,GAAG,EAAE,CAAC;gBACf,QAAQ,GAAG,EAAE,CAAC;gBACd,SAAS,GAAG,EAAE,CAAC;gBACf,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,GAAG,EAAE,CAAC;gBACjB,WAAW,GAAG,EAAE,CAAC;gBACjB,WAAW,GAAG,KAAK,CAAC;aACpB;SACD;QAED,mEAAmE;QACnE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,mBAAmB,EAAE;YAC/D,SAAS;SACT;aAAM,IAAI,OAAO,EAAE;YACnB,IAAI,WAAW,EAAE;gBAChB,IAAI,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;gBACpC,IAAI,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;gBACnD,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC/C,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;iBAChC;aACD;iBAAM,IAAI,WAAW,EAAE;gBACvB,mCAAmC;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,EAAE;oBAC3C,IAAI,OAAO,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;oBAC9C,OAAO,CAAC,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;iBAC7C;gBACD,4BAA4B;gBAC5B,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACtB,gBAAgB,GAAG,CAAC,CAAC;aACrB;YACD,SAAS;SACT;aAAM,IAAI,YAAY,IAAI,eAAe,EAAE;YAC3C,gBAAgB,GAAG,KAAK,CAAC;YACzB,SAAS;SACT;aAAM,IAAI,YAAY,EAAE;YACxB,gBAAgB,GAAG,IAAI,CAAC;YACxB,SAAS;SACT;aAAM,IAAI,eAAe,EAAE;YAC3B,gBAAgB,GAAG,KAAK,CAAC;YACzB,SAAS;SACT;aAAM,IAAI,gBAAgB,EAAE;YAC5B,SAAS;SACT;QAED,qBAAqB;QACrB,oDAAoD;QACpD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACzF,IAAI,SAAS,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACpE,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,EAAE;YACxC,IAAI,WAAW,EAAE;gBAChB,oCAAoC;gBACpC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;gBAChN,gBAAgB,EAAE,CAAC;gBAEnB,+CAA+C;gBAC/C,uCAAuC;gBACvC,QAAQ,GAAG,EAAE,CAAC;gBACd,QAAQ,GAAG,EAAE,CAAC;gBACd,SAAS,GAAG,EAAE,CAAC;gBACf,QAAQ,GAAG,EAAE,CAAC;gBACd,SAAS,GAAG,EAAE,CAAC;gBACf,OAAO,GAAG,EAAE,CAAC;gBACb,WAAW,GAAG,EAAE,CAAC;gBACjB,WAAW,GAAG,EAAE,CAAC;gBACjB,WAAW,GAAG,KAAK,CAAC;aACpB;YACD,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAClC,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,aAAa,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9C,WAAW,GAAG,IAAI,CAAC;YAEnB,qBAAqB;YACrB,IAAI,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;YACxE,IAAI,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE;gBAChD,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACtC,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC9F,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;gBACtE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzE;SACD;QACD,wCAAwC;QACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACnD,SAAS;SACT;QACD,sBAAsB;QACtB,IAAI,cAAc,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC1E,IAAI,cAAc,IAAI,cAAc,CAAC,YAAY,EAAE;YAClD,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACxC,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAChG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,qBAAqB;QACrB,IAAI,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACxE,IAAI,aAAa,IAAI,aAAa,CAAC,YAAY,EAAE;YAChD,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YACtC,cAAc,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC9F,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,sBAAsB;QACtB,IAAI,cAAc,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QAC1E,IAAI,cAAc,IAAI,cAAc,CAAC,YAAY,EAAE;YAClD,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;YACxC,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAChG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,oBAAoB;QACpB,IAAI,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QACtE,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,EAAE;YAC9C,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACpC,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC5F,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACrE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,iCAAiC;YACjC,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,wBAAwB;QACxB,IAAI,CAAC,cAAc,EAAE;YACpB,IAAI,gBAAgB,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAC;YACpF,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,EAAE;gBACtD,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC7C,WAAW,GAAG,WAAW,CAAC,SAAS,EAAE,CAAC;gBACtC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC/B,cAAc,GAAG,IAAI,CAAC;iBACtB;gBACD,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACpG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzE;SACD;aAAM;YACN,IAAI,gBAAgB,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;YAClF,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,EAAE;gBACtD,WAAW,IAAI,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACxD,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;oBAC9B,cAAc,GAAG,KAAK,CAAC;iBACvB;gBACD,cAAc,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBACpG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzE;SACD;QAED,kCAAkC;QAClC,IAAI,gBAAgB,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC7E,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,IAAI,gBAAgB,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,EAAE;YAC9G,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC5C,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;KACD;IAED,IAAI,WAAW,EAAE;QAChB,oCAAoC;QACpC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAC;QAChN,gBAAgB,EAAE,CAAC;QAEnB,+CAA+C;QAC/C,uCAAuC;QACvC,QAAQ,GAAG,EAAE,CAAC;QACd,QAAQ,GAAG,EAAE,CAAC;QACd,SAAS,GAAG,EAAE,CAAC;QACf,QAAQ,GAAG,EAAE,CAAC;QACd,SAAS,GAAG,EAAE,CAAC;QACf,OAAO,GAAG,EAAE,CAAC;QACb,WAAW,GAAG,EAAE,CAAC;QACjB,WAAW,GAAG,EAAE,CAAC;QACjB,WAAW,GAAG,KAAK,CAAC;KACpB;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,gBAAgB,EAAE,CAAC,EAAE,EAAE;QAC3C,IAAI,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;KAC1C;IAED,mCAAmC;IACnC,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;QAC/B,IAAI,eAAe,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,eAAe,KAAK,EAAE,EAAE;YAC3B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;SAClE;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,KAAoB;IAC5C,IAAI,MAAM,GAAsB,EAAE,CAAC;IACnC,2DAA2D;IAC3D,gDAAgD;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACpC,OAAO,MAAM,CAAC;KACd;IAED,oCAAoC;IACpC,IAAI,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC;IAClD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5C,IAAI,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC;IACzC,IAAI,MAAuB,CAAC;IAC5B,IAAI,UAAwB,CAAC;IAC7B,UAAU,GAAG,IAAI,KAAK,EAAE,CAAC;IAEzB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,wCAAwC;IACxC,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IACpE,IAAI,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;IACnD,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAE/C,IAAI,iBAAiB,GAAG,CAAC,CAAC;IAE1B,4BAA4B;IAC5B,gBAAgB,GAAG,KAAK,CAAC;IAEzB,+CAA+C;IAC/C,uCAAuC;IACvC,IAAI,aAAa,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9C,IAAI,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,aAAa,GAAG,EAAE,CAAC;IACvB,IAAI,eAAe,GAAG,EAAE,CAAC;IACzB,IAAI,YAAY,GAAG,EAAE,CAAC;IAEtB,4BAA4B;IAC5B,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtB,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,IAAI,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;IAE1D,sBAAsB;IACtB,0DAA0D;IAC1D,KAAK,IAAI,KAAK,GAAG,SAAS,EAAE,KAAK,IAAI,QAAQ,EAAE,KAAK,EAAE,EAAE;QACvD,0EAA0E;QAC1E,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAEnC,iEAAiE;QACjE,IAAI,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,OAAO,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QACrF,IAAI,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACrG,IAAI,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC;QAEtG,yEAAyE;QACzE,iBAAiB,GAAG,QAAQ,CAAC,gCAAgC,CAAC;QAC9D,IAAI,kBAAkB,KAAK,KAAK,EAAE;YACjC,iBAAiB,GAAG,CAAC,CAAC;SACtB;QAED,mEAAmE;QACnE,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,mBAAmB,EAAE;YAC/D,IAAI,YAAY,EAAE;gBACjB,oCAAoC;gBACpC,IAAI,gBAAgB,EAAE;oBACrB,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzE;gBACD,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;gBAE9M,+CAA+C;gBAC/C,uCAAuC;gBACvC,SAAS,GAAG,EAAE,CAAC;gBACf,OAAO,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,EAAE,CAAC;gBAChB,aAAa,GAAG,EAAE,CAAC;gBACnB,eAAe,GAAG,EAAE,CAAC;gBACrB,YAAY,GAAG,EAAE,CAAC;gBAClB,YAAY,GAAG,KAAK,CAAC;aACrB;YACD,SAAS;SACT;aAAM,IAAI,OAAO,EAAE;YACnB,SAAS;SACT;aAAM,IAAI,YAAY,IAAI,eAAe,EAAE;YAC3C,gBAAgB,GAAG,KAAK,CAAC;YACzB,SAAS;SACT;aAAM,IAAI,YAAY,EAAE;YACxB,gBAAgB,GAAG,IAAI,CAAC;YACxB,SAAS;SACT;aAAM,IAAI,eAAe,EAAE;YAC3B,gBAAgB,GAAG,KAAK,CAAC;YACzB,SAAS;SACT;aAAM,IAAI,gBAAgB,EAAE;YAC5B,SAAS;SACT;QAED,sBAAsB;QACtB,oDAAoD;QACpD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;QACzF,IAAI,SAAS,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACrE,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,EAAE;YACxC,IAAI,YAAY,EAAE;gBACjB,oCAAoC;gBACpC,IAAI,gBAAgB,EAAE;oBACrB,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBACzE;gBACD,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACtC,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACnC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;gBAE9M,+CAA+C;gBAC/C,uCAAuC;gBACvC,SAAS,GAAG,EAAE,CAAC;gBACf,OAAO,GAAG,EAAE,CAAC;gBACb,UAAU,GAAG,EAAE,CAAC;gBAChB,aAAa,GAAG,EAAE,CAAC;gBACnB,eAAe,GAAG,EAAE,CAAC;gBACrB,YAAY,GAAG,EAAE,CAAC;gBAClB,YAAY,GAAG,KAAK,CAAC;aACrB;YACD,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACnC,sBAAsB,GAAG,SAAS,CAAC,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAC/G,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;YACvE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,aAAa,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC9C,YAAY,GAAG,IAAI,CAAC;YAEpB,sBAAsB;YACtB,IAAI,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACtE,IAAI,YAAY,IAAI,YAAY,CAAC,YAAY,EAAE;gBAC9C,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACpC,cAAc,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC5F,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;gBACrE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;gBACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzE;SACD;QACD,wCAAwC;QACxC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;YACnD,SAAS;SACT;QACD,uBAAuB;QACvB,IAAI,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC5E,IAAI,eAAe,IAAI,eAAe,CAAC,YAAY,EAAE;YACpD,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC1C,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAClG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YACxE,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,sBAAsB;QACtB,IAAI,kBAAkB,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;QAClF,IAAI,kBAAkB,IAAI,kBAAkB,CAAC,YAAY,EAAE;YAC1D,aAAa,GAAG,GAAG,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAChD,cAAc,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACxG,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3E,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,uBAAuB;QACvB,IAAI,oBAAoB,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QACtF,IAAI,oBAAoB,IAAI,oBAAoB,CAAC,YAAY,EAAE;YAC9D,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACpD,cAAc,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAC5G,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;YAC7E,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;QACD,kCAAkC;QAClC,IAAI,iBAAiB,GAAG,GAAG,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;QAC9E,IAAI,iBAAiB,IAAI,iBAAiB,CAAC,YAAY,EAAE;YACxD,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC9C,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;YAC1E,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC;YACzF,YAAY,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzE;KACD;IAED,IAAI,YAAY,EAAE;QACjB,oCAAoC;QACpC,IAAI,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,IAAI,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,UAAU,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,YAAY,CAAC,EAAE,iBAAiB,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;QAE9M,+CAA+C;QAC/C,uCAAuC;QACvC,SAAS,GAAG,EAAE,CAAC;QACf,OAAO,GAAG,EAAE,CAAC;QACb,UAAU,GAAG,EAAE,CAAC;QAChB,aAAa,GAAG,EAAE,CAAC;QACnB,eAAe,GAAG,EAAE,CAAC;QACrB,YAAY,GAAG,EAAE,CAAC;QAClB,YAAY,GAAG,KAAK,CAAC;KACrB;IAED,qCAAqC;IACrC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACnE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAEnE,mCAAmC;IACnC,UAAU,CAAC,OAAO,CAAC,UAAU,KAAK;QACjC,IAAI,gBAAgB,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,gBAAgB,KAAK,EAAE,EAAE;YAC5B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;SACpE;IACF,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AACf,CAAC;AAED;;6GAE6G;AAC7G;;;;;;;;;;GAUG;AACH,SAAS,UAAU,CAAC,IAAY,EAAE,IAAY,EAAE,KAAa,EAAE,IAAY,EAAE,KAAa,EAAE,GAAW,EAAE,OAAe;IACvH,gDAAgD;IAChD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACpC,OAAO;KACP;IACD,uDAAuD;IACvD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5C,IAAI,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClE,MAAM,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAElE,4BAA4B;IAC5B,IAAI,cAAc,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACtB,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAEtB,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;IAChG,IAAI,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAErC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;QACvB,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,SAAS,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,IAAU;IAC7B,iCAAiC;IACjC,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IACpE,IAAI,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC;IAC7E,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC/C,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5C,IAAI,aAAa,GAAG,EAAE,CAAC;IAEvB,gDAAgD;IAChD,IAAI,CAAC,MAAM,EAAE;QACZ,OAAO,EAAE,CAAC;KACV;IAED,IAAI,cAAc,GAAG,EAAE,CAAC;IAExB,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACxE,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,2DAA2D;IAC3D,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,eAAe,EAAE;QAChE,qFAAqF;QACrF,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAChE,IAAI,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5D,uDAAuD;QACvD,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;YAChD,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;SACzB;QAED,IAAI,WAAW,KAAK,eAAe,EAAE;YACpC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,IAAI,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YAEtI,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;aACnB;YAED,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,WAAW,EAAE;gBAChB,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;oBACpC,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;iBACtB;aACD;YAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC;YACjF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC,CAAC;SACtF;QAED,yCAAyC;QACzC,IAAI,IAAI,CAAC,OAAO,KAAK,EAAE,EAAE;YACxB,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;SACnC;QACD,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAEzG,yBAAyB;KACzB;SAAM,IAAI,WAAW,KAAK,WAAW,EAAE;QACvC,+EAA+E;QAC/E,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,MAAM,GAAG,EAAE,CAAC;QAEhB,iDAAiD;QACjD,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE;YACzC,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SAClC;QAED,mDAAmD;QACnD,IAAI,cAAc,CAAC,CAAC,CAAC,GAAG,qBAAqB,EAAE;YAC9C,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;SACvC;aAAM;YACN,IAAI,OAAO,GAAG,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC;YAC7E,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,EAAE,KAAK,EAAE,EAAE;gBAC7C,cAAc,GAAG,cAAc,GAAG,IAAI,CAAC;aACvC;SACD;QAED,gCAAgC;QAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/F,IAAI,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC7F,IAAI,QAAQ,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/F,IAAI,MAAM,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC3F,IAAI,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACnG,IAAI,UAAU,GAAG,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAEnG,qDAAqD;QACrD,uDAAuD;QACvD,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;YAChD,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC;SACvB;QACD,aAAa,GAAG,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,CAAC;KACnI;SAAM;QACN,oCAAoC;QACpC,OAAO,EAAE,CAAC;KACV;IAED,aAAa,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;IAC1C,aAAa,GAAG,gBAAgB,KAAK,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC;IAClF,OAAO,aAAa,CAAC;AACtB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,WAAW,CAAC,KAAY;IAChC,iCAAiC;IACjC,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC;IACpE,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACrC,IAAI,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;IAC/C,IAAI,qBAAqB,GAAG,MAAM,CAAC,qBAAqB,CAAC;IACzD,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC;IAC5C,IAAI,cAAc,GAAG,EAAE,CAAC;IAExB,gDAAgD;IAChD,IAAI,CAAC,MAAM,EAAE;QACZ,OAAO,EAAE,CAAC;KACV;IAED,2DAA2D;IAC3D,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,eAAe,EAAE;QAChE,sFAAsF;QACtF,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3E,IAAI,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAChF,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,UAAU,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5E,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7E,IAAI,aAAa,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,uDAAuD;QACvD,qBAAqB;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,iBAAiB,EAAE,CAAC,EAAE,EAAE;YACjD,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC;SACzB;QAED,IAAI,WAAW,KAAK,eAAe,EAAE;YACpC,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,IAAI,SAAS,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YAE1K,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;aACnB;YACD,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC;YAC1B,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;SACvD;QAED,0CAA0C;QAE1C,yBAAyB;KACzB;SAAM,IAAI,WAAW,KAAK,WAAW,EAAE;KACvC;SAAM;QACN,oCAAoC;QACpC,OAAO,EAAE,CAAC;KACV;IAED,OAAO,EAAE,CAAC;AACX,CAAC"} \ No newline at end of file +{"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/package.json b/package.json index 89f8d4c..b37c5bb 100644 --- a/package.json +++ b/package.json @@ -95,10 +95,10 @@ "Formats the files in a multiline-style. E.g. in an items file each part of an item is written in a new line." ] }, - "oh-alignment-tool.multilineIndentAmount": { + "oh-alignment-tool.minimumIndentAmount": { "type": "number", - "default": 3, - "description": "Tab indent level when formatting multiline items." + "default": 4, + "description": "Minimum separation of thing or item parts." }, "oh-alignment-tool.enableBetaFeatures": { "type": "boolean", diff --git a/src/extension.ts b/src/extension.ts index 5ba2761..efb26c6 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -827,7 +827,6 @@ function formatItem(item: Item): string { let config = vscode.workspace.getConfiguration("oh-alignment-tool"); let formatStyle = item.formatOption ? item.formatOption : config.formatStyle; let newLineAfterItem = config.newLineAfterItem; - let multilineIndentAmount = config.multilineIndentAmount; let editor = vscode.window.activeTextEditor; let formattedItem = ""; @@ -837,14 +836,27 @@ function formatItem(item: Item): string { } let highestLengths = []; - - highestLengths[0] = utils.generateTabFromSpaces(item.highestLengths[0]); - highestLengths[1] = utils.generateTabFromSpaces(item.highestLengths[1]); - highestLengths[2] = utils.generateTabFromSpaces(item.highestLengths[2]); - highestLengths[3] = utils.generateTabFromSpaces(item.highestLengths[3]); - highestLengths[4] = utils.generateTabFromSpaces(item.highestLengths[4]); - highestLengths[5] = utils.generateTabFromSpaces(item.highestLengths[5]); - highestLengths[6] = utils.generateTabFromSpaces(item.highestLengths[6]); + let indentWithSpaces = editor.options.insertSpaces; + let minIndent = config.minimumIndentAmount; + + if (!indentWithSpaces) { + highestLengths[0] = utils.generateTabFromSpaces(item.highestLengths[0]); + highestLengths[1] = utils.generateTabFromSpaces(item.highestLengths[1]); + highestLengths[2] = utils.generateTabFromSpaces(item.highestLengths[2]); + highestLengths[3] = utils.generateTabFromSpaces(item.highestLengths[3]); + highestLengths[4] = utils.generateTabFromSpaces(item.highestLengths[4]); + highestLengths[5] = utils.generateTabFromSpaces(item.highestLengths[5]); + highestLengths[6] = utils.generateTabFromSpaces(item.highestLengths[6]); + } else { + highestLengths[0] = item.highestLengths[0]; + highestLengths[0] = item.highestLengths[0]; + highestLengths[1] = item.highestLengths[1]; + highestLengths[2] = item.highestLengths[2]; + highestLengths[3] = item.highestLengths[3]; + highestLengths[4] = item.highestLengths[4]; + highestLengths[5] = item.highestLengths[5]; + highestLengths[6] = item.highestLengths[6]; + } // Check for the formatting style in the user configuration if (formatStyle === "Column" || formatStyle === "ChannelColumn") { @@ -859,16 +871,16 @@ function formatItem(item: Item): string { // Add the leading whitespace (for group and subgroups) // Add tabs to string for (let i = 0; i < item.leadingWhiteSpace; i++) { - newType = "\t" + newType; + newType = editor.options.insertSpaces ? " " + newType : "\t" + newType; } if (formatStyle === "ChannelColumn") { let tabs = ""; let spaces = ""; - let tabIndent = highestLengths[0] + highestLengths[1] + highestLengths[2] + highestLengths[3] + highestLengths[4] + highestLengths[5]; + let tabIndent = newType.length + newName.length + newLabel.length + newIcon.length + newGroup.length + newTag.length; for (let i = 0; i < tabIndent; i++) { - tabs = tabs + "\t"; + tabs += editor.options.insertSpaces ? " " : "\t"; } var identResult = item.channel.match(/^\{(\w*)="/); @@ -892,41 +904,26 @@ function formatItem(item: Item): string { // Multiline Format Style } else if (formatStyle === "Multiline") { - // If item type is longer than the indent, make sure there's at least one space - let typeNameIndent = ""; - let tabSize = 0; - let indent = ""; - - // Get the tab size setting of the current editor - if (editor.options.tabSize !== undefined) { - tabSize = +editor.options.tabSize; - } - - // Check if Indent Amount is smaller than item type - if (highestLengths[0] > multilineIndentAmount) { - typeNameIndent = typeNameIndent + "\t"; - } else { - let gapSize = multilineIndentAmount - Math.floor(item.type.length / tabSize); - for (let index = 0; index < gapSize; index++) { - typeNameIndent = typeNameIndent + "\t"; - } - } + // Fill the required amount of tabs after each item part. For Column Style Formatting + let newMultiType = utils.fillColumns(item.type, highestLengths[0]); - // Check if item parts are empty - let newLabel = utils.fillMultiLines(item.label, multilineIndentAmount, item.leadingWhiteSpace); - let newIcon = utils.fillMultiLines(item.icon, multilineIndentAmount, item.leadingWhiteSpace); - let newGroup = utils.fillMultiLines(item.group, multilineIndentAmount, item.leadingWhiteSpace); - let newTag = utils.fillMultiLines(item.tag, multilineIndentAmount, item.leadingWhiteSpace); - let newChannel = utils.fillMultiLines(item.channel, multilineIndentAmount, item.leadingWhiteSpace); - let newComment = utils.fillMultiLines(item.comment, multilineIndentAmount, item.leadingWhiteSpace); - - // Insert a new line after the item if config says so // Add the leading whitespace (for group and subgroups) // Add tabs to string for (let i = 0; i < item.leadingWhiteSpace; i++) { - indent = "\t" + indent; + newMultiType = editor.options.insertSpaces ? " " + newMultiType : "\t" + newMultiType; } - formattedItem = indent + item.type + typeNameIndent + item.name + newLabel + newIcon + newGroup + newTag + newChannel + newComment; + + let newMultiTypeLength = indentWithSpaces ? newMultiType.length : utils.generateTabFromSpaces(newMultiType.length); + + // Check if item parts are empty + let newLabel = utils.fillMultiLines(item.label, newMultiTypeLength, item.leadingWhiteSpace); + let newIcon = utils.fillMultiLines(item.icon, newMultiTypeLength, item.leadingWhiteSpace); + let newGroup = utils.fillMultiLines(item.group, newMultiTypeLength, item.leadingWhiteSpace); + let newTag = utils.fillMultiLines(item.tag, newMultiTypeLength, item.leadingWhiteSpace); + let newChannel = utils.fillMultiLines(item.channel, newMultiTypeLength, item.leadingWhiteSpace); + let newComment = utils.fillMultiLines(item.comment, newMultiTypeLength, item.leadingWhiteSpace); + + formattedItem = newMultiType + item.name + newLabel + newIcon + newGroup + newTag + newChannel + newComment; } else { // @todo add window message for user return ""; diff --git a/src/utils.ts b/src/utils.ts index 1893336..3a53a74 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -46,6 +46,7 @@ export function fillColumns(str: string, finalLength: number): string { let tabSize = 0; let gapLength = 0; let strLength = 0; + let tab = ""; // Check it item is empty if (finalLength === 0) { @@ -61,13 +62,22 @@ export function fillColumns(str: string, finalLength: number): string { tabSize = +editor.options.tabSize; } - // Calculate the width of the column gap - strLength = Math.floor(str.length / tabSize); - gapLength = finalLength - strLength; - - // Add tabs to string - for (let i = 0; i < gapLength; i++) { - str = str + "\t"; + if (editor.options.insertSpaces) { + for (let e = 0; e < tabSize + finalLength - str.length; e++) { + tab += " "; + } + str += tab; + } else { + tab = "\t"; + + // Calculate the width of the column gap + strLength = Math.floor(str.length / tabSize); + gapLength = finalLength - strLength; + + // Add tabs to string + for (let i = 0; i < gapLength; i++) { + str += tab; + } } return str; @@ -79,10 +89,11 @@ export function fillColumns(str: string, finalLength: number): string { * @param str * @param finalLength */ -export function fillMultiLines(str: string, indenAmount: number, leadingWhiteSpace: number): string { +export function fillMultiLines(str: string, indentAmount: number, leadingWhiteSpace: number): string { let editor = vscode.window.activeTextEditor; let gap = ""; let indent = ""; + let tabSize = 0; // Only execute if there's an active text editor if (!editor) { @@ -93,14 +104,25 @@ export function fillMultiLines(str: string, indenAmount: number, leadingWhiteSpa return ""; } - // Add tabs to string - for (let i = 0; i < indenAmount; i++) { - gap = gap + "\t"; + // Get the tab size setting of the current editor + if (editor.options.tabSize !== undefined) { + tabSize = +editor.options.tabSize; + } + + if (editor.options.insertSpaces) { + for (let e = 0; e < indentAmount; e++) { + gap += " "; + } + } else { + // Add tabs to string + for (let i = 0; i < indentAmount; i++) { + gap += "\t"; + } } // Add tabs to string for (let i = 0; i < leadingWhiteSpace; i++) { - indent = indent + "\t"; + indent += editor.options.insertSpaces ? " " : "\t"; } str = "\n" + indent + gap + str;