{"version":3,"file":"template7.js.map","sources":["../src/context.js","../src/utils.js","../src/helpers.js","../src/template7-class.js","../src/template7.js"],"sourcesContent":["let t7ctx;\nif (typeof window !== 'undefined') {\n t7ctx = window;\n} else if (typeof global !== 'undefined') {\n t7ctx = global;\n} else {\n t7ctx = this;\n}\n\nconst Template7Context = t7ctx;\n\nexport default Template7Context;\n","import Template7Context from './context';\n\nconst Template7Utils = {\n quoteSingleRexExp: new RegExp('\\'', 'g'),\n quoteDoubleRexExp: new RegExp('\"', 'g'),\n isFunction(func) {\n return typeof func === 'function';\n },\n escape(string = '') {\n return string\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n },\n helperToSlices(string) {\n const { quoteDoubleRexExp, quoteSingleRexExp } = Template7Utils;\n const helperParts = string.replace(/[{}#}]/g, '').trim().split(' ');\n const slices = [];\n let shiftIndex;\n let i;\n let j;\n for (i = 0; i < helperParts.length; i += 1) {\n let part = helperParts[i];\n let blockQuoteRegExp;\n let openingQuote;\n if (i === 0) slices.push(part);\n else if (part.indexOf('\"') === 0 || part.indexOf('\\'') === 0) {\n blockQuoteRegExp = part.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = part.indexOf('\"') === 0 ? '\"' : '\\'';\n // Plain String\n if (part.match(blockQuoteRegExp).length === 2) {\n // One word string\n slices.push(part);\n } else {\n // Find closed Index\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n part += ` ${helperParts[j]}`;\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n slices.push(part);\n break;\n }\n }\n if (shiftIndex) i = shiftIndex;\n }\n } else if (part.indexOf('=') > 0) {\n // Hash\n const hashParts = part.split('=');\n const hashName = hashParts[0];\n let hashContent = hashParts[1];\n if (!blockQuoteRegExp) {\n blockQuoteRegExp = hashContent.indexOf('\"') === 0 ? quoteDoubleRexExp : quoteSingleRexExp;\n openingQuote = hashContent.indexOf('\"') === 0 ? '\"' : '\\'';\n }\n if (hashContent.match(blockQuoteRegExp).length !== 2) {\n shiftIndex = 0;\n for (j = i + 1; j < helperParts.length; j += 1) {\n hashContent += ` ${helperParts[j]}`;\n if (helperParts[j].indexOf(openingQuote) >= 0) {\n shiftIndex = j;\n break;\n }\n }\n if (shiftIndex) i = shiftIndex;\n }\n const hash = [hashName, hashContent.replace(blockQuoteRegExp, '')];\n slices.push(hash);\n } else {\n // Plain variable\n slices.push(part);\n }\n }\n return slices;\n },\n stringToBlocks(string) {\n const blocks = [];\n let i;\n let j;\n if (!string) return [];\n const stringBlocks = string.split(/({{[^{^}]*}})/);\n for (i = 0; i < stringBlocks.length; i += 1) {\n let block = stringBlocks[i];\n if (block === '') continue;\n if (block.indexOf('{{') < 0) {\n blocks.push({\n type: 'plain',\n content: block,\n });\n } else {\n if (block.indexOf('{/') >= 0) {\n continue;\n }\n block = block\n .replace(/{{([#/])*([ ])*/, '{{$1')\n .replace(/([ ])*}}/, '}}');\n if (block.indexOf('{#') < 0 && block.indexOf(' ') < 0 && block.indexOf('else') < 0) {\n // Simple variable\n blocks.push({\n type: 'variable',\n contextName: block.replace(/[{}]/g, ''),\n });\n continue;\n }\n // Helpers\n const helperSlices = Template7Utils.helperToSlices(block);\n let helperName = helperSlices[0];\n const isPartial = helperName === '>';\n const helperContext = [];\n const helperHash = {};\n for (j = 1; j < helperSlices.length; j += 1) {\n const slice = helperSlices[j];\n if (Array.isArray(slice)) {\n // Hash\n helperHash[slice[0]] = slice[1] === 'false' ? false : slice[1];\n } else {\n helperContext.push(slice);\n }\n }\n\n if (block.indexOf('{#') >= 0) {\n // Condition/Helper\n let helperContent = '';\n let elseContent = '';\n let toSkip = 0;\n let shiftIndex;\n let foundClosed = false;\n let foundElse = false;\n let depth = 0;\n for (j = i + 1; j < stringBlocks.length; j += 1) {\n if (stringBlocks[j].indexOf('{{#') >= 0) {\n depth += 1;\n }\n if (stringBlocks[j].indexOf('{{/') >= 0) {\n depth -= 1;\n }\n if (stringBlocks[j].indexOf(`{{#${helperName}`) >= 0) {\n helperContent += stringBlocks[j];\n if (foundElse) elseContent += stringBlocks[j];\n toSkip += 1;\n } else if (stringBlocks[j].indexOf(`{{/${helperName}`) >= 0) {\n if (toSkip > 0) {\n toSkip -= 1;\n helperContent += stringBlocks[j];\n if (foundElse) elseContent += stringBlocks[j];\n } else {\n shiftIndex = j;\n foundClosed = true;\n break;\n }\n } else if (stringBlocks[j].indexOf('else') >= 0 && depth === 0) {\n foundElse = true;\n } else {\n if (!foundElse) helperContent += stringBlocks[j];\n if (foundElse) elseContent += stringBlocks[j];\n }\n }\n if (foundClosed) {\n if (shiftIndex) i = shiftIndex;\n if (helperName === 'raw') {\n blocks.push({\n type: 'plain',\n content: helperContent,\n });\n } else {\n blocks.push({\n type: 'helper',\n helperName,\n contextName: helperContext,\n content: helperContent,\n inverseContent: elseContent,\n hash: helperHash,\n });\n }\n }\n } else if (block.indexOf(' ') > 0) {\n if (isPartial) {\n helperName = '_partial';\n if (helperContext[0]) {\n if (helperContext[0].indexOf('[') === 0) helperContext[0] = helperContext[0].replace(/[[\\]]/g, '');\n else helperContext[0] = `\"${helperContext[0].replace(/\"|'/g, '')}\"`;\n }\n }\n blocks.push({\n type: 'helper',\n helperName,\n contextName: helperContext,\n hash: helperHash,\n });\n }\n }\n }\n return blocks;\n },\n parseJsVariable(expression, replace, object) {\n return expression.split(/([+ \\-*/^()&=|<>!%:?])/g).reduce((arr, part) => {\n if (!part) {\n return arr;\n }\n if (part.indexOf(replace) < 0) {\n arr.push(part);\n return arr;\n }\n if (!object) {\n arr.push(JSON.stringify(''));\n return arr;\n }\n\n let variable = object;\n if (part.indexOf(`${replace}.`) >= 0) {\n part.split(`${replace}.`)[1].split('.').forEach((partName) => {\n if (partName in variable) variable = variable[partName];\n else variable = undefined;\n });\n }\n if (typeof variable === 'string') {\n variable = JSON.stringify(variable);\n }\n if (variable === undefined) variable = 'undefined';\n\n arr.push(variable);\n return arr;\n }, []).join('');\n },\n parseJsParents(expression, parents) {\n return expression.split(/([+ \\-*^()&=|<>!%:?])/g).reduce((arr, part) => {\n if (!part) {\n return arr;\n }\n\n if (part.indexOf('../') < 0) {\n arr.push(part);\n return arr;\n }\n\n if (!parents || parents.length === 0) {\n arr.push(JSON.stringify(''));\n return arr;\n }\n\n const levelsUp = part.split('../').length - 1;\n const parentData = levelsUp > parents.length ? parents[parents.length - 1] : parents[levelsUp - 1];\n\n let variable = parentData;\n const parentPart = part.replace(/..\\//g, '');\n parentPart.split('.').forEach((partName) => {\n if (typeof variable[partName] !== 'undefined') variable = variable[partName];\n else variable = 'undefined';\n });\n if (variable === false || variable === true) {\n arr.push(JSON.stringify(variable));\n return arr;\n }\n if (variable === null || variable === 'undefined') {\n arr.push(JSON.stringify(''));\n return arr;\n }\n arr.push(JSON.stringify(variable));\n return arr;\n }, []).join('');\n },\n getCompileVar(name, ctx, data = 'data_1') {\n let variable = ctx;\n let parts;\n let levelsUp = 0;\n let newDepth;\n if (name.indexOf('../') === 0) {\n levelsUp = name.split('../').length - 1;\n newDepth = variable.split('_')[1] - levelsUp;\n variable = `ctx_${newDepth >= 1 ? newDepth : 1}`;\n parts = name.split('../')[levelsUp].split('.');\n } else if (name.indexOf('@global') === 0) {\n variable = 'Template7.global';\n parts = name.split('@global.')[1].split('.');\n } else if (name.indexOf('@root') === 0) {\n variable = 'root';\n parts = name.split('@root.')[1].split('.');\n } else {\n parts = name.split('.');\n }\n for (let i = 0; i < parts.length; i += 1) {\n const part = parts[i];\n if (part.indexOf('@') === 0) {\n let dataLevel = data.split('_')[1];\n if (levelsUp > 0) {\n dataLevel = newDepth;\n }\n if (i > 0) {\n variable += `[(data_${dataLevel} && data_${dataLevel}.${part.replace('@', '')})]`;\n } else {\n variable = `(data_${dataLevel} && data_${dataLevel}.${part.replace('@', '')})`;\n }\n } else if (Number.isFinite ? Number.isFinite(part) : Template7Context.isFinite(part)) {\n variable += `[${part}]`;\n } else if (part === 'this' || part.indexOf('this.') >= 0 || part.indexOf('this[') >= 0 || part.indexOf('this(') >= 0) {\n variable = part.replace('this', ctx);\n } else {\n variable += `.${part}`;\n }\n }\n return variable;\n },\n getCompiledArguments(contextArray, ctx, data) {\n const arr = [];\n for (let i = 0; i < contextArray.length; i += 1) {\n if (/^['\"]/.test(contextArray[i])) arr.push(contextArray[i]);\n else if (/^(true|false|\\d+)$/.test(contextArray[i])) arr.push(contextArray[i]);\n else {\n arr.push(Template7Utils.getCompileVar(contextArray[i], ctx, data));\n }\n }\n\n return arr.join(', ');\n },\n};\n\nexport default Template7Utils;\n","/* eslint no-eval: \"off\" */\nimport Template7Utils from './utils';\nimport Template7Class from './template7-class';\nimport Template7Context from './context';\n\nconst Template7Helpers = {\n _partial(partialName, options) {\n const ctx = this;\n const p = Template7Class.partials[partialName];\n if (!p || (p && !p.template)) return '';\n if (!p.compiled) {\n p.compiled = new Template7Class(p.template).compile();\n }\n Object.keys(options.hash).forEach((hashName) => {\n ctx[hashName] = options.hash[hashName];\n });\n return p.compiled(ctx, options.data, options.root);\n },\n escape(context) {\n if (typeof context !== 'string') {\n throw new Error('Template7: Passed context to \"escape\" helper should be a string');\n }\n return Template7Utils.escape(context);\n },\n if(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n unless(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (!ctx) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n each(context, options) {\n let ctx = context;\n let ret = '';\n let i = 0;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n if (Array.isArray(ctx)) {\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n for (i = 0; i < ctx.length; i += 1) {\n ret += options.fn(ctx[i], { first: i === 0, last: i === ctx.length - 1, index: i });\n }\n if (options.hash.reverse) {\n ctx = ctx.reverse();\n }\n } else {\n // eslint-disable-next-line\n for (const key in ctx) {\n i += 1;\n ret += options.fn(ctx[key], { key });\n }\n }\n if (i > 0) return ret;\n return options.inverse(this);\n },\n with(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = context.call(this); }\n return options.fn(ctx);\n },\n join(context, options) {\n let ctx = context;\n if (Template7Utils.isFunction(ctx)) { ctx = ctx.call(this); }\n return ctx.join(options.hash.delimiter || options.hash.delimeter);\n },\n js(expression, options) {\n const data = options.data;\n let func;\n let execute = expression;\n ('index first last key').split(' ').forEach((prop) => {\n if (typeof data[prop] !== 'undefined') {\n const re1 = new RegExp(`this.@${prop}`, 'g');\n const re2 = new RegExp(`@${prop}`, 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = `(function(){${execute}})`;\n } else {\n func = `(function(){return (${execute})})`;\n }\n return eval(func).call(this);\n },\n js_if(expression, options) {\n const data = options.data;\n let func;\n let execute = expression;\n ('index first last key').split(' ').forEach((prop) => {\n if (typeof data[prop] !== 'undefined') {\n const re1 = new RegExp(`this.@${prop}`, 'g');\n const re2 = new RegExp(`@${prop}`, 'g');\n execute = execute\n .replace(re1, JSON.stringify(data[prop]))\n .replace(re2, JSON.stringify(data[prop]));\n }\n });\n if (options.root && execute.indexOf('@root') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@root', options.root);\n }\n if (execute.indexOf('@global') >= 0) {\n execute = Template7Utils.parseJsVariable(execute, '@global', Template7Context.Template7.global);\n }\n if (execute.indexOf('../') >= 0) {\n execute = Template7Utils.parseJsParents(execute, options.parents);\n }\n if (execute.indexOf('return') >= 0) {\n func = `(function(){${execute}})`;\n } else {\n func = `(function(){return (${execute})})`;\n }\n const condition = eval(func).call(this);\n if (condition) {\n return options.fn(this, options.data);\n }\n\n return options.inverse(this, options.data);\n },\n};\nTemplate7Helpers.js_compare = Template7Helpers.js_if;\n\nexport default Template7Helpers;\n","import Template7Utils from './utils';\nimport Template7Helpers from './helpers';\n\nconst Template7Options = {};\nconst Template7Partials = {};\n\nclass Template7Class {\n constructor(template) {\n const t = this;\n t.template = template;\n }\n compile(template = this.template, depth = 1) {\n const t = this;\n if (t.compiled) return t.compiled;\n\n if (typeof template !== 'string') {\n throw new Error('Template7: Template must be a string');\n }\n const { stringToBlocks, getCompileVar, getCompiledArguments } = Template7Utils;\n\n const blocks = stringToBlocks(template);\n const ctx = `ctx_${depth}`;\n const data = `data_${depth}`;\n if (blocks.length === 0) {\n return function empty() { return ''; };\n }\n\n function getCompileFn(block, newDepth) {\n if (block.content) return t.compile(block.content, newDepth);\n return function empty() { return ''; };\n }\n function getCompileInverse(block, newDepth) {\n if (block.inverseContent) return t.compile(block.inverseContent, newDepth);\n return function empty() { return ''; };\n }\n\n let resultString = '';\n if (depth === 1) {\n resultString += `(function (${ctx}, ${data}, root) {\\n`;\n } else {\n resultString += `(function (${ctx}, ${data}) {\\n`;\n }\n if (depth === 1) {\n resultString += 'function isArray(arr){return Array.isArray(arr);}\\n';\n resultString += 'function isFunction(func){return (typeof func === \\'function\\');}\\n';\n resultString += 'function c(val, ctx) {if (typeof val !== \"undefined\" && val !== null) {if (isFunction(val)) {return val.call(ctx);} else return val;} else return \"\";}\\n';\n resultString += 'root = root || ctx_1 || {};\\n';\n }\n resultString += 'var r = \\'\\';\\n';\n let i;\n for (i = 0; i < blocks.length; i += 1) {\n const block = blocks[i];\n // Plain block\n if (block.type === 'plain') {\n // eslint-disable-next-line\n resultString += `r +='${(block.content).replace(/\\r/g, '\\\\r').replace(/\\n/g, '\\\\n').replace(/'/g, '\\\\' + '\\'')}';`;\n continue;\n }\n let variable;\n let compiledArguments;\n // Variable block\n if (block.type === 'variable') {\n variable = getCompileVar(block.contextName, ctx, data);\n resultString += `r += c(${variable}, ${ctx});`;\n }\n // Helpers block\n if (block.type === 'helper') {\n let parents;\n if (ctx !== 'ctx_1') {\n const level = ctx.split('_')[1];\n let parentsString = `ctx_${level - 1}`;\n for (let j = level - 2; j >= 1; j -= 1) {\n parentsString += `, ctx_${j}`;\n }\n parents = `[${parentsString}]`;\n } else {\n parents = `[${ctx}]`;\n }\n let dynamicHelper;\n if (block.helperName.indexOf('[') === 0) {\n block.helperName = getCompileVar(block.helperName.replace(/[[\\]]/g, ''), ctx, data);\n dynamicHelper = true;\n }\n if (dynamicHelper || block.helperName in Template7Helpers) {\n compiledArguments = getCompiledArguments(block.contextName, ctx, data);\n resultString += `r += (Template7Helpers${dynamicHelper ? `[${block.helperName}]` : `.${block.helperName}`}).call(${ctx}, ${compiledArguments && (`${compiledArguments}, `)}{hash:${JSON.stringify(block.hash)}, data: ${data} || {}, fn: ${getCompileFn(block, depth + 1)}, inverse: ${getCompileInverse(block, depth + 1)}, root: root, parents: ${parents}});`;\n } else if (block.contextName.length > 0) {\n throw new Error(`Template7: Missing helper: \"${block.helperName}\"`);\n } else {\n variable = getCompileVar(block.helperName, ctx, data);\n resultString += `if (${variable}) {`;\n resultString += `if (isArray(${variable})) {`;\n resultString += `r += (Template7Helpers.each).call(${ctx}, ${variable}, {hash:${JSON.stringify(block.hash)}, data: ${data} || {}, fn: ${getCompileFn(block, depth + 1)}, inverse: ${getCompileInverse(block, depth + 1)}, root: root, parents: ${parents}});`;\n resultString += '}else {';\n resultString += `r += (Template7Helpers.with).call(${ctx}, ${variable}, {hash:${JSON.stringify(block.hash)}, data: ${data} || {}, fn: ${getCompileFn(block, depth + 1)}, inverse: ${getCompileInverse(block, depth + 1)}, root: root, parents: ${parents}});`;\n resultString += '}}';\n }\n }\n }\n resultString += '\\nreturn r;})';\n\n if (depth === 1) {\n // eslint-disable-next-line\n t.compiled = eval(resultString);\n return t.compiled;\n }\n return resultString;\n }\n static get options() {\n return Template7Options;\n }\n static get partials() {\n return Template7Partials;\n }\n static get helpers() {\n return Template7Helpers;\n }\n}\nexport default Template7Class;\n","import Template7Class from './template7-class';\n\nfunction Template7(...args) {\n const [template, data] = args;\n if (args.length === 2) {\n let instance = new Template7Class(template);\n const rendered = instance.compile()(data);\n instance = null;\n return (rendered);\n }\n return new Template7Class(template);\n}\nTemplate7.registerHelper = function registerHelper(name, fn) {\n Template7Class.helpers[name] = fn;\n};\nTemplate7.unregisterHelper = function unregisterHelper(name) {\n Template7Class.helpers[name] = undefined;\n delete Template7Class.helpers[name];\n};\nTemplate7.registerPartial = function registerPartial(name, template) {\n Template7Class.partials[name] = { template };\n};\nTemplate7.unregisterPartial = function unregisterPartial(name) {\n if (Template7Class.partials[name]) {\n Template7Class.partials[name] = undefined;\n delete Template7Class.partials[name];\n }\n};\nTemplate7.compile = function compile(template, options) {\n const instance = new Template7Class(template, options);\n return instance.compile();\n};\n\nTemplate7.options = Template7Class.options;\nTemplate7.helpers = Template7Class.helpers;\nTemplate7.partials = Template7Class.partials;\n\nexport default Template7;\n"],"names":["let","this","const"],"mappings":";;;;;;;;;;;;;;;;;;;;;EAAAA,IAAI,KAAK,CAAC;EACV,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACjC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;IACxC,KAAK,GAAG,MAAM,CAAC;GAChB,MAAM;IACL,KAAK,GAAGC,SAAI,CAAC;GACd;;EAEDC,IAAM,gBAAgB,GAAG,KAAK,CAAC;;ECP/BA,IAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,IAAI,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;IACxC,iBAAiB,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC;IACvC,+BAAU,CAAC,IAAI,EAAE;MACf,OAAO,OAAO,IAAI,KAAK,UAAU,CAAC;KACnC;IACD,uBAAM,CAAC,MAAW,EAAE;qCAAP,GAAG;;MACd,OAAO,MAAM;SACV,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;KAC5B;IACD,uCAAc,CAAC,MAAM,EAAE;MACrB;MAA2B,yDAAqC;MAChEA,IAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;MACpEA,IAAM,MAAM,GAAG,EAAE,CAAC;MAClBF,IAAI,UAAU,CAAC;MACfA,IAAI,CAAC,CAAC;MACNA,IAAI,CAAC,CAAC;MACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC1CA,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC1BA,IAAI,2BAAgB,CAAC;QACrBA,IAAI,uBAAY,CAAC;QACjB,IAAI,CAAC,KAAK,CAAC,IAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAC;aAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;UAC5D,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;UACnF,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;;UAEpD,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;;YAE7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;WACnB,MAAM;;YAEL,UAAU,GAAG,CAAC,CAAC;YACf,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;cAC9C,IAAI,IAAI,OAAI,WAAW,CAAC,CAAC,CAAC,CAAE,CAAC;cAC7B,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBAC7C,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClB,MAAM;eACP;aACF;YACD,IAAI,UAAU,IAAE,CAAC,GAAG,UAAU,GAAC;WAChC;SACF,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;;UAEhCE,IAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;UAClCA,IAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;UAC9BF,IAAI,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;UAC/B,IAAI,CAAC,gBAAgB,EAAE;YACrB,gBAAgB,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,iBAAiB,GAAG,iBAAiB,CAAC;YAC1F,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC;WAC5D;UACD,IAAI,WAAW,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YACpD,UAAU,GAAG,CAAC,CAAC;YACf,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;cAC9C,WAAW,IAAI,OAAI,WAAW,CAAC,CAAC,CAAC,CAAE,CAAC;cACpC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;gBAC7C,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;eACP;aACF;YACD,IAAI,UAAU,IAAE,CAAC,GAAG,UAAU,GAAC;WAChC;UACDE,IAAM,IAAI,GAAG,CAAC,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC;UACnE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB,MAAM;;UAEL,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACnB;OACF;MACD,OAAO,MAAM,CAAC;KACf;IACD,uCAAc,CAAC,MAAM,EAAE;MACrBA,IAAM,MAAM,GAAG,EAAE,CAAC;MAClBF,IAAI,CAAC,CAAC;MACNA,IAAI,CAAC,CAAC;MACN,IAAI,CAAC,MAAM,IAAE,OAAO,EAAE,GAAC;MACvBE,IAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;MACnD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC3CF,IAAI,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,KAAK,EAAE,IAAE,WAAS;QAC3B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;UAC3B,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,KAAK;WACf,CAAC,CAAC;SACJ,MAAM;UACL,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5B,SAAS;WACV;UACD,KAAK,GAAG,KAAK;aACV,OAAO,CAAC,iBAAiB,EAAE,MAAM,CAAC;aAClC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;UAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;;YAElF,MAAM,CAAC,IAAI,CAAC;cACV,IAAI,EAAE,UAAU;cAChB,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACxC,CAAC,CAAC;YACH,SAAS;WACV;;UAEDE,IAAM,YAAY,GAAG,cAAc,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;UAC1DF,IAAI,UAAU,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;UACjCE,IAAM,SAAS,GAAG,UAAU,KAAK,GAAG,CAAC;UACrCA,IAAM,aAAa,GAAG,EAAE,CAAC;UACzBA,IAAM,UAAU,GAAG,EAAE,CAAC;UACtB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;YAC3CA,IAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;cAExB,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;aAChE,MAAM;cACL,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC3B;WACF;;UAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;;YAE5BF,IAAI,aAAa,GAAG,EAAE,CAAC;YACvBA,IAAI,WAAW,GAAG,EAAE,CAAC;YACrBA,IAAI,MAAM,GAAG,CAAC,CAAC;YACfA,IAAI,qBAAU,CAAC;YACfA,IAAI,WAAW,GAAG,KAAK,CAAC;YACxBA,IAAI,SAAS,GAAG,KAAK,CAAC;YACtBA,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;cAC/C,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACvC,KAAK,IAAI,CAAC,CAAC;eACZ;cACD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;gBACvC,KAAK,IAAI,CAAC,CAAC;eACZ;cACD,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,UAAO,UAAU,EAAG,IAAI,CAAC,EAAE;gBACpD,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,SAAS,IAAE,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,GAAC;gBAC9C,MAAM,IAAI,CAAC,CAAC;eACb,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,UAAO,UAAU,EAAG,IAAI,CAAC,EAAE;gBAC3D,IAAI,MAAM,GAAG,CAAC,EAAE;kBACd,MAAM,IAAI,CAAC,CAAC;kBACZ,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC;kBACjC,IAAI,SAAS,IAAE,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,GAAC;iBAC/C,MAAM;kBACL,UAAU,GAAG,CAAC,CAAC;kBACf,WAAW,GAAG,IAAI,CAAC;kBACnB,MAAM;iBACP;eACF,MAAM,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE;gBAC9D,SAAS,GAAG,IAAI,CAAC;eAClB,MAAM;gBACL,IAAI,CAAC,SAAS,IAAE,aAAa,IAAI,YAAY,CAAC,CAAC,CAAC,GAAC;gBACjD,IAAI,SAAS,IAAE,WAAW,IAAI,YAAY,CAAC,CAAC,CAAC,GAAC;eAC/C;aACF;YACD,IAAI,WAAW,EAAE;cACf,IAAI,UAAU,IAAE,CAAC,GAAG,UAAU,GAAC;cAC/B,IAAI,UAAU,KAAK,KAAK,EAAE;gBACxB,MAAM,CAAC,IAAI,CAAC;kBACV,IAAI,EAAE,OAAO;kBACb,OAAO,EAAE,aAAa;iBACvB,CAAC,CAAC;eACJ,MAAM;gBACL,MAAM,CAAC,IAAI,CAAC;kBACV,IAAI,EAAE,QAAQ;8BACd,UAAU;kBACV,WAAW,EAAE,aAAa;kBAC1B,OAAO,EAAE,aAAa;kBACtB,cAAc,EAAE,WAAW;kBAC3B,IAAI,EAAE,UAAU;iBACjB,CAAC,CAAC;eACJ;aACF;WACF,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YACjC,IAAI,SAAS,EAAE;cACb,UAAU,GAAG,UAAU,CAAC;cACxB,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE;gBACpB,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAE,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAC;uBAC9F,aAAa,CAAC,CAAC,CAAC,GAAG,QAAI,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,EAAC,OAAG,GAAC;eACrE;aACF;YACD,MAAM,CAAC,IAAI,CAAC;cACV,IAAI,EAAE,QAAQ;0BACd,UAAU;cACV,WAAW,EAAE,aAAa;cAC1B,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;WACJ;SACF;OACF;MACD,OAAO,MAAM,CAAC;KACf;IACD,yCAAe,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE;MAC3C,OAAO,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,MAAM,WAAE,GAAG,EAAE,IAAI,EAAE;QACpE,IAAI,CAAC,IAAI,EAAE;UACT,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;UAC7B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UACf,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,CAAC,MAAM,EAAE;UACX,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;UAC7B,OAAO,GAAG,CAAC;SACZ;;QAEDA,IAAI,QAAQ,GAAG,MAAM,CAAC;QACtB,IAAI,IAAI,CAAC,OAAO,EAAI,OAAO,QAAI,IAAI,CAAC,EAAE;UACpC,IAAI,CAAC,KAAK,EAAI,OAAO,QAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,WAAE,QAAQ,EAAE;YACzD,IAAI,QAAQ,IAAI,QAAQ,IAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAC;mBACnD,QAAQ,GAAG,SAAS,GAAC;WAC3B,CAAC,CAAC;SACJ;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;UAChC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;SACrC;QACD,IAAI,QAAQ,KAAK,SAAS,IAAE,QAAQ,GAAG,WAAW,GAAC;;QAEnD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnB,OAAO,GAAG,CAAC;OACZ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACD,uCAAc,CAAC,UAAU,EAAE,OAAO,EAAE;MAClC,OAAO,UAAU,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC,MAAM,WAAE,GAAG,EAAE,IAAI,EAAE;QACnE,IAAI,CAAC,IAAI,EAAE;UACT,OAAO,GAAG,CAAC;SACZ;;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;UAC3B,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;UACf,OAAO,GAAG,CAAC;SACZ;;QAED,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE;UACpC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;UAC7B,OAAO,GAAG,CAAC;SACZ;;QAEDE,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC9CA,IAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;;QAEnGF,IAAI,QAAQ,GAAG,UAAU,CAAC;QAC1BE,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC7C,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,WAAE,QAAQ,EAAE;UACvC,IAAI,OAAO,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW,IAAE,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAC;iBACxE,QAAQ,GAAG,WAAW,GAAC;SAC7B,CAAC,CAAC;QACH,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,IAAI,EAAE;UAC3C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;UACnC,OAAO,GAAG,CAAC;SACZ;QACD,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,WAAW,EAAE;UACjD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;UAC7B,OAAO,GAAG,CAAC;SACZ;QACD,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnC,OAAO,GAAG,CAAC;OACZ,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;KACjB;IACD,qCAAa,CAAC,IAAI,EAAE,GAAG,EAAE,IAAe,EAAE;iCAAb,GAAG;;MAC9BF,IAAI,QAAQ,GAAG,GAAG,CAAC;MACnBA,IAAI,KAAK,CAAC;MACVA,IAAI,QAAQ,GAAG,CAAC,CAAC;MACjBA,IAAI,QAAQ,CAAC;MACb,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;QAC7B,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QACxC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC;QAC7C,QAAQ,GAAG,UAAO,QAAQ,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAE,CAAC;QACjD,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OAChD,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;QACxC,QAAQ,GAAG,kBAAkB,CAAC;QAC9B,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OAC9C,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QACtC,QAAQ,GAAG,MAAM,CAAC;QAClB,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OAC5C,MAAM;QACL,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;OACzB;MACD,KAAKA,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QACxCE,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;UAC3BF,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UACnC,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,SAAS,GAAG,QAAQ,CAAC;WACtB;UACD,IAAI,CAAC,GAAG,CAAC,EAAE;YACT,QAAQ,IAAI,YAAU,SAAS,iBAAY,SAAS,UAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAC,OAAI,CAAC;WACnF,MAAM;YACL,QAAQ,GAAG,WAAS,SAAS,iBAAY,SAAS,UAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,EAAC,MAAG,CAAC;WAChF;SACF,MAAM,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;UACpF,QAAQ,IAAI,MAAI,IAAI,MAAG,CAAC;SACzB,MAAM,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;UACpH,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;SACtC,MAAM;UACL,QAAQ,IAAI,MAAI,IAAM,CAAC;SACxB;OACF;MACD,OAAO,QAAQ,CAAC;KACjB;IACD,mDAAoB,CAAC,YAAY,EAAE,GAAG,EAAE,IAAI,EAAE;MAC5CE,IAAM,GAAG,GAAG,EAAE,CAAC;MACf,KAAKF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAC;aACxD,IAAI,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAC;aAC1E;UACH,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;SACpE;OACF;;MAED,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACvB;GACF,CAAC;;EC5TF;AACA;EAIAE,IAAM,gBAAgB,GAAG;IACvB,2BAAQ,CAAC,WAAW,EAAE,OAAO,EAAE;MAC7BA,IAAM,GAAG,GAAG,IAAI,CAAC;MACjBA,IAAM,CAAC,GAAG,cAAc,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;MAC/C,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAE,OAAO,EAAE,GAAC;MACxC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;QACf,CAAC,CAAC,QAAQ,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAC;OACvD;MACD,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,WAAE,QAAQ,EAAE;QAC3C,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;OACxC,CAAC,CAAC;MACH,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KACpD;IACD,uBAAM,CAAC,OAAO,EAAE;MACd,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE;QAC/B,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;OACpF;MACD,OAAO,cAAc,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;KACvC;IACD,iBAAE,CAAC,OAAO,EAAE,OAAO,EAAE;MACnBF,IAAI,GAAG,GAAG,OAAO,CAAC;MAClB,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;MAC7D,IAAI,GAAG,EAAE;QACP,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;OACvC;;MAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C;IACD,uBAAM,CAAC,OAAO,EAAE,OAAO,EAAE;MACvBA,IAAI,GAAG,GAAG,OAAO,CAAC;MAClB,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;MAC7D,IAAI,CAAC,GAAG,EAAE;QACR,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;OACvC;;MAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C;IACD,mBAAI,CAAC,OAAO,EAAE,OAAO,EAAE;MACrBA,IAAI,GAAG,GAAG,OAAO,CAAC;MAClBA,IAAI,GAAG,GAAG,EAAE,CAAC;MACbA,IAAI,CAAC,GAAG,CAAC,CAAC;MACV,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;MAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACtB,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;UACxB,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;SACrB;QACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;UAClC,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;SACrF;QACD,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE;UACxB,GAAG,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;SACrB;OACF,MAAM;;QAEL,KAAKE,IAAM,GAAG,IAAI,GAAG,EAAE;UACrB,CAAC,IAAI,CAAC,CAAC;UACP,GAAG,IAAI,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAE,GAAG,EAAE,CAAC,CAAC;SACtC;OACF;MACD,IAAI,CAAC,GAAG,CAAC,IAAE,OAAO,GAAG,GAAC;MACtB,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAC9B;IACD,qBAAI,CAAC,OAAO,EAAE,OAAO,EAAE;MACrBF,IAAI,GAAG,GAAG,OAAO,CAAC;MAClB,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;MACjE,OAAO,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;KACxB;IACD,mBAAI,CAAC,OAAO,EAAE,OAAO,EAAE;MACrBA,IAAI,GAAG,GAAG,OAAO,CAAC;MAClB,IAAI,cAAc,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE;MAC7D,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;KACnE;IACD,eAAE,CAAC,UAAU,EAAE,OAAO,EAAE;MACtBE,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;MAC1BF,IAAI,IAAI,CAAC;MACTA,IAAI,OAAO,GAAG,UAAU,CAAC;MACzB,CAAC,sBAAsB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,WAAE,IAAI,EAAE;QACjD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;UACrCE,IAAM,GAAG,GAAG,IAAI,MAAM,aAAU,IAAI,GAAI,GAAG,CAAC,CAAC;UAC7CA,IAAM,GAAG,GAAG,IAAI,MAAM,QAAK,IAAI,GAAI,GAAG,CAAC,CAAC;UACxC,OAAO,GAAG,OAAO;aACd,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACxC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC7C;OACF,CAAC,CAAC;MACH,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjD,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;OAC1E;MACD,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACnC,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;OACjG;MACD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC/B,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;OACnE;MACD,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAClC,IAAI,GAAG,iBAAe,OAAO,OAAI,CAAC;OACnC,MAAM;QACL,IAAI,GAAG,yBAAuB,OAAO,QAAK,CAAC;OAC5C;MACD,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KAC9B;IACD,qBAAK,CAAC,UAAU,EAAE,OAAO,EAAE;MACzBA,IAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;MAC1BF,IAAI,IAAI,CAAC;MACTA,IAAI,OAAO,GAAG,UAAU,CAAC;MACzB,CAAC,sBAAsB,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,WAAE,IAAI,EAAE;QACjD,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;UACrCE,IAAM,GAAG,GAAG,IAAI,MAAM,aAAU,IAAI,GAAI,GAAG,CAAC,CAAC;UAC7CA,IAAM,GAAG,GAAG,IAAI,MAAM,QAAK,IAAI,GAAI,GAAG,CAAC,CAAC;UACxC,OAAO,GAAG,OAAO;aACd,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aACxC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAC7C;OACF,CAAC,CAAC;MACH,IAAI,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACjD,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;OAC1E;MACD,IAAI,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACnC,OAAO,GAAG,cAAc,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;OACjG;MACD,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;QAC/B,OAAO,GAAG,cAAc,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;OACnE;MACD,IAAI,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;QAClC,IAAI,GAAG,iBAAe,OAAO,OAAI,CAAC;OACnC,MAAM;QACL,IAAI,GAAG,yBAAuB,OAAO,QAAK,CAAC;OAC5C;MACDA,IAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;MACxC,IAAI,SAAS,EAAE;QACb,OAAO,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;OACvC;;MAED,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;KAC5C;GACF,CAAC;EACF,gBAAgB,CAAC,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC;;EC1IrDA,IAAM,gBAAgB,GAAG,EAAE,CAAC;EAC5BA,IAAM,iBAAiB,GAAG,EAAE,CAAC;;EAE7B,IAAM,cAAc,GAClB,uBAAW,CAAC,QAAQ,EAAE;IACpBA,IAAM,CAAC,GAAG,IAAI,CAAC;IACf,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC;EAC1B;;6HAAG;EACH,yBAAE,4BAAQ,QAAwB,EAAE,KAAS,EAAE;yCAA7B,GAAG,IAAI,CAAC;mCAAe,GAAG;;IACxCA,IAAM,CAAC,GAAG,IAAI,CAAC;IACjB,IAAM,CAAC,CAAC,QAAQ,IAAE,OAAO,CAAC,CAAC,QAAQ,GAAC;;IAElC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;MAChC,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;KACzD;IACH;MAA0B;MAAe,+DAAwC;;IAEjF,IAAQ,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxCA,IAAM,GAAG,GAAG,SAAO,KAAK,CAAG;IAC3BA,IAAM,IAAI,GAAG,UAAQ,KAAK,CAAG;IAC7B,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;MACzB,OAAS,SAAS,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KACxC;;IAED,SAAS,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE;MACrC,IAAI,KAAK,CAAC,OAAO,IAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAC;MAC/D,OAAS,SAAS,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KACxC;IACD,SAAS,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE;MAC1C,IAAI,KAAK,CAAC,cAAc,IAAE,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,GAAC;MAC7E,OAAS,SAAS,KAAK,GAAG,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;KACxC;;IAEDF,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,IAAI,KAAK,KAAK,CAAC,EAAE;MACf,YAAY,IAAI,gBAAc,GAAG,UAAK,IAAI,gBAAa,CAAC;KACzD,MAAM;MACL,YAAY,IAAI,gBAAc,GAAG,UAAK,IAAI,UAAO,CAAC;KACnD;IACD,IAAI,KAAK,KAAK,CAAC,EAAE;MACjB,YAAc,IAAI,qDAAqD,CAAC;MACxE,YAAc,IAAI,qEAAqE,CAAC;MACxF,YAAc,IAAI,0JAA0J,CAAC;MAC7K,YAAc,IAAI,+BAA+B,CAAC;KACjD;IACH,YAAc,IAAI,iBAAiB,CAAC;IACpC,IAAM,CAAC,CAAC;IACN,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE;MACvC,IAAQ,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;;MAExB,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;;QAE1B,YAAY,IAAI,WAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,EAAC,OAAI,CAAC;QACnH,SAAS;OACV;MACH,IAAM,mBAAQ,CAAC;MACf,IAAM,4BAAiB,CAAC;;MAEtB,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE;QAC7B,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;QACvD,YAAY,IAAI,YAAU,QAAQ,UAAK,GAAG,OAAI,CAAC;OAChD;;MAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;QAC7B,IAAM,kBAAO,CAAC;QACZ,IAAI,GAAG,KAAK,OAAO,EAAE;UACnBE,IAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;UAClC,IAAM,aAAa,GAAG,UAAO,KAAK,GAAG,CAAC,CAAE,CAAC;UACvC,KAAKF,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;YACtC,aAAa,IAAI,WAAS,CAAC,CAAG;WAC/B;UACD,OAAO,GAAG,MAAI,aAAa,MAAG,CAAC;SAChC,MAAM;UACL,OAAO,GAAG,MAAI,GAAG,MAAG,CAAC;SACtB;QACH,IAAM,wBAAa,CAAC;QACpB,IAAM,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;UACzC,KAAO,CAAC,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;UACtF,aAAe,GAAG,IAAI,CAAC;SACtB;QACH,IAAM,aAAa,IAAI,KAAK,CAAC,UAAU,IAAI,gBAAgB,EAAE;UACzD,iBAAiB,GAAG,oBAAoB,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;UACzE,YAAc,IAAI,4BAAyB,aAAa,WAAO,KAAK,CAAC,WAAU,kBAAU,KAAK,CAAC,UAAU,GAAE,eAAU,GAAG,WAAK,iBAAiB,MAAQ,iBAAiB,UAAK,eAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAC,gBAAW,IAAI,qBAAe,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAC,oBAAc,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAC,+BAA0B,OAAO,QAAK,CAAC;SAClW,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;UACzC,MAAQ,IAAI,KAAK,qCAAgC,KAAK,CAAC,WAAU,SAAI,CAAC;SACrE,MAAM;UACL,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;UACtD,YAAY,IAAI,SAAO,QAAQ,QAAK,CAAC;UACrC,YAAY,IAAI,iBAAe,QAAQ,SAAM,CAAC;UAC9C,YAAY,IAAI,uCAAqC,GAAG,UAAK,QAAQ,iBAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAC,gBAAW,IAAI,qBAAe,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAC,oBAAc,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAC,+BAA0B,OAAO,QAAK,CAAC;UAChQ,YAAc,IAAI,SAAS,CAAC;UAC1B,YAAY,IAAI,uCAAqC,GAAG,UAAK,QAAQ,iBAAW,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,EAAC,gBAAW,IAAI,qBAAe,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAC,oBAAc,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,CAAC,EAAC,+BAA0B,OAAO,QAAK,CAAC;UAChQ,YAAc,IAAI,IAAI,CAAC;SACtB;OACF;KACF;IACH,YAAc,IAAI,eAAe,CAAC;;IAEhC,IAAI,KAAK,KAAK,CAAC,EAAE;;MAEjB,CAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC;MAChC,OAAO,CAAC,CAAC,QAAQ,CAAC;KACnB;IACH,OAAS,YAAY,CAAC;EACtB,EAAC;EACH,gBAAa,0BAAU;IACrB,OAAS,gBAAgB,CAAC;EAC1B,EAAC;EACH,gBAAa,2BAAW;IACtB,OAAS,iBAAiB,CAAC;EAC3B,EAAC;EACH,gBAAa,0BAAU;IACrB,OAAS,gBAAgB,CAAC;EAC1B,CAAC;;6DACF;;ECnHD,SAAS,SAAS,GAAU;;;;IAC1B;IAAiB,mBAAa;IAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;MACrBA,IAAI,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;MAC5CE,IAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;MAC1C,QAAQ,GAAG,IAAI,CAAC;MAChB,QAAQ,QAAQ,EAAE;KACnB;IACD,OAAO,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;GACrC;EACD,SAAS,CAAC,cAAc,GAAG,SAAS,cAAc,CAAC,IAAI,EAAE,EAAE,EAAE;IAC3D,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;GACnC,CAAC;EACF,SAAS,CAAC,gBAAgB,GAAG,SAAS,gBAAgB,CAAC,IAAI,EAAE;IAC3D,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACzC,OAAO,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;GACrC,CAAC;EACF,SAAS,CAAC,eAAe,GAAG,SAAS,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE;IACnE,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,YAAE,QAAQ,EAAE,CAAC;GAC9C,CAAC;EACF,SAAS,CAAC,iBAAiB,GAAG,SAAS,iBAAiB,CAAC,IAAI,EAAE;IAC7D,IAAI,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;MACjC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;MAC1C,OAAO,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;KACtC;GACF,CAAC;EACF,SAAS,CAAC,OAAO,GAAG,SAAS,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE;IACtDA,IAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,QAAQ,CAAC,OAAO,EAAE,CAAC;GAC3B,CAAC;;EAEF,SAAS,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;EAC3C,SAAS,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;EAC3C,SAAS,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,CAAC;;;;;;;;"}