@fluid-experimental/property-changeset 2.81.1 → 2.82.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"templateValidator.spec.js","sourceRoot":"","sources":["../../../src/test/validator/templateValidator.spec.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint no-unused-expressions: 0 */\n\n// Lint disable to avoid needing to place `async` on many test functions\n// as validity of testing is in general questionable and trying to avoid\n// changes.\n/* eslint-disable @typescript-eslint/promise-function-async */\n\n/**\n * @fileoverview In this file, we will test template validation.\n */\n\nimport { constants } from \"@fluid-experimental/property-common\";\nimport { expect } from \"chai\";\nimport semver from \"semver\";\n\nimport { TemplateValidator } from \"../../templateValidator.js\";\nimport type { SchemaValidationResult } from \"../../validationResultBuilder.js\";\nimport { SchemaValidator } from \"../schemaValidator.js\";\nimport {\n\tbadInvalidSemverInTypeid,\n\tbadMissingSemverInTypeid,\n\tbadPrimitiveTypeid,\n\tgoodPointId,\n\tgoodReservedTypes,\n\tgoodUIBorder,\n} from \"../schemas/index.js\";\n\n(function () {\n\tconst MSG = constants.MSG;\n\n\tconst performValidation = function (\n\t\tasync: boolean,\n\t\ttemplate,\n\t\ttemplatePrevious,\n\t\tskipSemver,\n\t\tasyncErrorMessage?,\n\t): Promise<SchemaValidationResult> {\n\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t// @ts-expect-error - per the catch and no throw below\n\t\treturn async\n\t\t\t? schemaValidator\n\t\t\t\t\t.validate(template, templatePrevious, async, skipSemver)\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\texpect(error.message).to.have.string(asyncErrorMessage);\n\t\t\t\t\t\t// This really should re-throw the error. As it stands this\n\t\t\t\t\t\t// catch returns `undefined` which is not SchemaValidationResult.\n\t\t\t\t\t\t// Throwing will cause \"fail: previous template: invalid semver\"\n\t\t\t\t\t\t// test case to fail with uncaught error.\n\t\t\t\t\t\t// This also has impact on the malformed validate function below.\n\t\t\t\t\t\t// throw error;\n\t\t\t\t\t})\n\t\t\t: // A better pattern is simply Promise.resolve(...). However without all callers\n\t\t\t\t// properly specifying they are `async` (lint disabled for file), they may fail.\n\t\t\t\t// In particular see test case\n\t\t\t\t// \"should fail if map with context key type typeid is not constant\"\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\tresolve(schemaValidator.validate(template, templatePrevious, async, skipSemver));\n\t\t\t\t});\n\t};\n\n\t// Performs both synchronous and asynchronous validation\n\tlet validate = function (\n\t\texpectations: (result: SchemaValidationResult) => SchemaValidationResult,\n\t\ttemplate?,\n\t\ttemplatePrevious?,\n\t\tskipSemver?,\n\t\tasyncErrorMessage?,\n\t) {\n\t\treturn performValidation(false, template, templatePrevious, skipSemver)\n\t\t\t.then(expectations)\n\t\t\t.then(\n\t\t\t\t// This patten is invalid. The `then` parameter is expected to be callable.\n\t\t\t\t// Instead performValidation is called and its result is is called. Or at least\n\t\t\t\t// should be. As set up the following .then is executed (apparently) on the\n\t\t\t\t// results of the prior performValidation. This could be address with this prefix:\n\t\t\t\t// async () =>\n\t\t\t\t// However doing so causes tests to fail. Testing coming through here appears\n\t\t\t\t// invalid.\n\t\t\t\t// @ts-expect-error\n\t\t\t\tperformValidation(true, template, templatePrevious, skipSemver, asyncErrorMessage),\n\t\t\t)\n\t\t\t.then(expectations);\n\t};\n\n\tdescribe(\"Template Validation\", function () {\n\t\t// --- INPUT ---\n\t\tdescribe(\"input validation\", function () {\n\t\t\tit(\"fail: empty template\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.NO_TEMPLATE);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations);\n\t\t\t});\n\n\t\t\tit(\"fail: template with no typeid\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MISSING_TYPE_ID);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, {});\n\t\t\t});\n\t\t});\n\n\t\t// --- TYPEID ---\n\t\tdescribe(\"typeid validation\", function () {\n\t\t\tit(\"pass: valid typeid\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: missing semver\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badMissingSemverInTypeid.templateSchema));\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\"'TeamLeoValidation2:PointID' is not valid\",\n\t\t\t\t\t);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 1\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 2\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-1.0.01\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.INVALID_VERSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: previous template: invalid semver\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet badTypeId = \"TeamLeoValidation2:PointID-1.0.0.1\";\n\t\t\t\ttemplatePrevious.typeid = badTypeId;\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(badTypeId);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(`'${badTypeId}' is not valid`);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(\n\t\t\t\t\texpectations,\n\t\t\t\t\ttemplate,\n\t\t\t\t\ttemplatePrevious,\n\t\t\t\t\tfalse,\n\t\t\t\t\t\"Invalid Version: 1.0.0.1\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// --- Template versioning ---\n\t\tdescribe(\"template versioning\", function () {\n\t\t\tit(\"fail: version regression: 1.0.0 -> 0.9.9\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tdescribe(\"same version\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'id'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented patch level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: unstable with major content change: 0.0.1 -> 0.0.2\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.typeid = \"TeamLeoValidation2:PointID-0.0.1\";\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.0.2\";\n\t\t\t\t\ttemplate.properties[1].typeid = \"TeamLeoValidation2:ColorID-9.0.0\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(2); // 1st for the delete and the 2nd for the add\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented minor level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented major level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"skip semver validation\", function () {\n\t\t\tit(\"pass: deep equal on scrambled arrays\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet tmp = template.properties[0].properties[0];\n\t\t\t\ttemplate.properties[0].properties[0] = template.properties[0].properties[2];\n\t\t\t\ttemplate.properties[0].properties[2] = tmp;\n\t\t\t\ttmp = template.properties[1];\n\t\t\t\ttemplate.properties[1] = template.properties[2];\n\t\t\t\ttemplate.properties[2] = tmp;\n\t\t\t\t// Skip semver validation to cause a deep compare\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: deep equal with version regression\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: preserves input templates\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet copies = [\n\t\t\t\t\tJSON.parse(JSON.stringify(templatePrevious)),\n\t\t\t\t\tJSON.parse(JSON.stringify(template)),\n\t\t\t\t];\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(templatePrevious).to.deep.equal(copies[0]);\n\t\t\t\t\texpect(template).to.deep.equal(copies[1]);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tit(\"fail: changed value\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"syntax validation\", function () {\n\t\t\tit(\"pass: validate a simple file\", function () {\n\t\t\t\tlet template = goodPointId.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid file\", function () {\n\t\t\t\tlet template = badPrimitiveTypeid.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass a schema with an empty array of properties\", function () {\n\t\t\t\tlet EmptyPropertySchema = {\n\t\t\t\t\ttypeid: \"Test:EmptyPropertySchema-1.0.0\",\n\t\t\t\t\tproperties: [],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, EmptyPropertySchema, null);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"bugs\", function () {\n\t\t\tdescribe(\"@bugfix Template validation with multiple inheritance\", function () {\n\t\t\t\tit(\"pass: deep equal with multiple inheritance\", function () {\n\t\t\t\t\tlet templateString =\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}';\n\t\t\t\t\tlet templatePrevious = JSON.parse(templateString);\n\t\t\t\t\tlet template = JSON.parse(templateString);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deep equal with out of order multiple inheritance\", function () {\n\t\t\t\t\tlet template = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}',\n\t\t\t\t\t);\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NodeProperty\",\"NamedProperty\"]}',\n\t\t\t\t\t);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"@bugfix Local templates with 'abstract' properties fail validation \" +\n\t\t\t\t\"with remote one.\", () => {\n\t\t\t\tdescribe(\"pass: deep equal between no properties and an empty properties array\", () => {\n\t\t\t\t\tlet templateArray = {\n\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\tproperties: [],\n\t\t\t\t\t};\n\t\t\t\t\tlet templateAbstract = {\n\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t};\n\n\t\t\t\t\tit(\"source is abstract and target is an empty properties array\", function () {\n\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn validate(expectations, templateAbstract, templateArray);\n\t\t\t\t\t});\n\n\t\t\t\t\tit(\"target is abstract and source is an empty properties array\", function () {\n\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\treturn validate(expectations, templateArray, templateAbstract);\n\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Constants\", function () {\n\t\t\tbefore(function () {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tnew TemplateValidator({\n\t\t\t\t\tskipSemver: true,\n\t\t\t\t\tinheritsFrom: schemaValidator.inheritsFrom as any,\n\t\t\t\t\thasSchema: schemaValidator.hasSchema as any,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet expectationsGenerator = function (msg) {\n\t\t\t\treturn function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\texpect(result.errors[0].message).to.equal(msg);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tit(\"should pass a valid template\", function () {\n\t\t\t\tlet ConstantValid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantValid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"valid\", typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantValid, null);\n\t\t\t});\n\n\t\t\tit(\"should fail if constants array has no elements\", function () {\n\t\t\t\tlet ConstantEmptyArray = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantEmptyArray-1.0.0\",\n\t\t\t\t\tconstants: [],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants must NOT have fewer than 1 items\"),\n\t\t\t\t\tConstantEmptyArray,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have an id\", function () {\n\t\t\t\tlet ConstantNoId = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoId-1.0.0\",\n\t\t\t\t\tconstants: [{ typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants/0 must have required property 'id'\"),\n\t\t\t\t\tConstantNoId,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have a typeid\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\t// console.log(result.errors);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(5);\n\t\t\t\t\t\texpect(result.errors[3].message).to.include(\n\t\t\t\t\t\t\t\"must have required property 'inherits'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\texpect(result.errors[4].message).to.include(\n\t\t\t\t\t\t\t\"/constants/0 must have required property 'typeid'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoTypeid,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant does not have a typeid but maybe inherits from elsewhere\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tinherits: \"ConstantTest:ConstantParentWithTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoTypeid, null);\n\t\t\t});\n\n\t\t\tit(\"should not fail if constant does not have a value or typedValue\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", typeid: \"String\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoValue, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant map with context key type typeid has typeids as keys\", function () {\n\t\t\t\tlet Constant = {\n\t\t\t\t\ttypeid: \"ConstantTest:Constant-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, Constant, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type that is not a valid value\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"badvalue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.include(\n\t\t\t\t\t\t\t\"should match one of the following: typeid,string\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoValue,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type typeid has invalid typeids as keys\", function () {\n\t\t\t\tlet ConstantMapWithBadKeys = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantMapWithBadKeys-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: { NotATypeId: 1, AlsoNotATypeId: -1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(2);\n\t\t\t\t\texpect(result.errors[0].message).to.include(MSG.KEY_MUST_BE_TYPEID + \"NotATypeId\");\n\t\t\t\t\texpect(result.errors[1].message).to.include(\n\t\t\t\t\t\tMSG.KEY_MUST_BE_TYPEID + \"AlsoNotATypeId\",\n\t\t\t\t\t);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantMapWithBadKeys, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if map with context key type typeid is not constant\", function () {\n\t\t\t\tlet ConstantMapWithProperty = {\n\t\t\t\t\ttypeid: \"ConstantTest:Outerprop-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\tthrow new Error(\"This should not be called\");\n\t\t\t\t};\n\t\t\t\tlet failExpectations = function (error) {\n\t\t\t\t\texpect(error.toString()).to.include(\n\t\t\t\t\t\t\"SV-013: A map with typeids as keys must be constant\",\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\treturn performValidation(false, ConstantMapWithProperty, null, true)\n\t\t\t\t\t.then(expectations)\n\t\t\t\t\t.catch(failExpectations);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Async validation\", function () {\n\t\t\tit(\"can perform context validation asynchronously\", function (done) {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tlet templateValidator = new TemplateValidator({\n\t\t\t\t\tinheritsFromAsync: schemaValidator.inheritsFromAsync as any,\n\t\t\t\t\thasSchemaAsync: schemaValidator.hasSchemaAsync as any,\n\t\t\t\t});\n\n\t\t\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\t\t\tlet grandParentSchema = {\n\t\t\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tlet parentSchema = {\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t\t\t};\n\n\t\t\t\tlet childSchema = {\n\t\t\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tschemaValidator.register(grandParentSchema);\n\t\t\t\tschemaValidator.register(parentSchema);\n\n\t\t\t\ttemplateValidator.validateAsync(childSchema as any).then(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t\t\t},\n\t\t\t\t\t(error) => {\n\t\t\t\t\t\texpect(error).to.exist;\n\t\t\t\t\t\tdone();\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n})();\n"]}
1
+ {"version":3,"file":"templateValidator.spec.js","sourceRoot":"","sources":["../../../src/test/validator/templateValidator.spec.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAEH,qCAAqC;AAErC,wEAAwE;AACxE,wEAAwE;AACxE,WAAW;AACX,8DAA8D;AAE9D;;GAEG;AAEH,yEAAgE;AAChE,+BAA8B;AAC9B,oDAA4B;AAE5B,qEAA+D;AAE/D,8DAAwD;AACxD,kDAO6B;AAE7B,CAAC;IACA,MAAM,GAAG,GAAG,2BAAS,CAAC,GAAG,CAAC;IAE1B,MAAM,iBAAiB,GAAG,UACzB,KAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,UAAU,EACV,iBAAkB;QAElB,IAAI,eAAe,GAAG,IAAI,oCAAe,EAAE,CAAC;QAE5C,sDAAsD;QACtD,OAAO,KAAK;YACX,CAAC,CAAC,eAAe;iBACd,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC;iBACvD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChB,IAAA,aAAM,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;gBACxD,2DAA2D;gBAC3D,iEAAiE;gBACjE,gEAAgE;gBAChE,yCAAyC;gBACzC,iEAAiE;gBACjE,eAAe;YAChB,CAAC,CAAC;YACJ,CAAC,CAAC,+EAA+E;gBAChF,gFAAgF;gBAChF,8BAA8B;gBAC9B,sEAAsE;gBACtE,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBACvB,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,QAAQ,EAAE,gBAAgB,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;IACN,CAAC,CAAC;IAEF,wDAAwD;IACxD,IAAI,QAAQ,GAAG,UACd,YAAwE,EACxE,QAAS,EACT,gBAAiB,EACjB,UAAW,EACX,iBAAkB;QAElB,OAAO,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,CAAC;aACrE,IAAI,CAAC,YAAY,CAAC;aAClB,IAAI;QACJ,2EAA2E;QAC3E,+EAA+E;QAC/E,2EAA2E;QAC3E,kFAAkF;QAClF,gBAAgB;QAChB,6EAA6E;QAC7E,WAAW;QACX,mBAAmB;QACnB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,iBAAiB,CAAC,CAClF;aACA,IAAI,CAAC,YAAY,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF,QAAQ,CAAC,qBAAqB,EAAE;QAC/B,gBAAgB;QAChB,QAAQ,CAAC,kBAAkB,EAAE;YAC5B,EAAE,CAAC,sBAAsB,EAAE;gBAC1B,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;oBACjE,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,+BAA+B,EAAE;gBACnC,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;oBACrE,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,QAAQ,CAAC,mBAAmB,EAAE;YAC7B,EAAE,CAAC,oBAAoB,EAAE;gBACxB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAEtE,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBACpC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sBAAsB,EAAE;gBAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,mCAAwB,CAAC,cAAc,CAAC,CAAC,CAAC;gBACnF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,2CAA2C,CAC3C,CAAC;oBACF,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC1D,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wBAAwB,EAAE;gBAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,mCAAwB,CAAC,cAAc,CAAC,CAAC,CAAC;gBAEnF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC1D,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wBAAwB,EAAE;gBAC5B,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,mCAAwB,CAAC,cAAc,CAAC,CAAC,CAAC;gBACnF,QAAQ,CAAC,MAAM,GAAG,mCAAmC,CAAC;gBACtD,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAChD,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;oBACvE,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,yCAAyC,EAAE;gBAC7C,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5D,IAAI,SAAS,GAAG,oCAAoC,CAAC;gBACrD,gBAAgB,CAAC,MAAM,GAAG,SAAS,CAAC;gBACpC,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,SAAS,gBAAgB,CAAC,CAAC;oBAC/E,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CACd,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,KAAK,EACL,0BAA0B,CAC1B,CAAC;YACH,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,8BAA8B;QAC9B,QAAQ,CAAC,qBAAqB,EAAE;YAC/B,EAAE,CAAC,0CAA0C,EAAE;gBAC9C,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5D,QAAQ,CAAC,MAAM,GAAG,kCAAkC,CAAC;gBACrD,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;oBAC1E,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,cAAc,EAAE;gBACxB,EAAE,CAAC,oBAAoB,EAAE;oBACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC;oBAC7C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,OAAO,QAAQ,CAAC,UAAU,CAAC;oBAE3B,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBAE9C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,uBAAuB,EAAE;oBAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAY,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC/E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;oBAEpD,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,oBAAoB,EAAE;oBACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;oBAE/C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;oBACpF,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,QAAQ,GAAG,uCAAuC,CAAC;oBAE5D,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,sBAAsB,EAAE;oBAC1B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,wBAAwB,EAAE;oBAC5B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;oBAExC,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAC9C,GAAG,CAAC,gCAAgC,CACpC,CAAC;wBACF,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,yBAAyB,EAAE;gBACnC,EAAE,CAAC,oBAAoB,EAAE;oBACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0DAA0D,EAAE;oBAC9D,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,MAAM,GAAG,kCAAkC,CAAC;oBAC7D,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,kCAAkC,CAAC;oBACrD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,kCAAkC,CAAC;oBAEnE,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC;oBAE7C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,OAAO,QAAQ,CAAC,UAAU,CAAC;oBAE3B,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBAE9C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,uBAAuB,EAAE;oBAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAY,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC/E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;oBAEpD,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,kCAAkC,EAAE;oBACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;oBAE/C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,6CAA6C;wBAC/F,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;oBACpF,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,QAAQ,GAAG,uCAAuC,CAAC;oBAE5D,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,sBAAsB,EAAE;oBAC1B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,wBAAwB,EAAE;oBAC5B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;oBAExC,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,yBAAyB,EAAE;gBACnC,EAAE,CAAC,oBAAoB,EAAE;oBACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC;oBAE7C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,OAAO,QAAQ,CAAC,UAAU,CAAC;oBAE3B,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBAE9C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,uBAAuB,EAAE;oBAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAY,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC/E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;oBAEpD,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,kCAAkC,EAAE;oBACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;oBAE/C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;oBACpF,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,QAAQ,GAAG,uCAAuC,CAAC;oBAE5D,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,sBAAsB,EAAE;oBAC1B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,wBAAwB,EAAE;oBAC5B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;oBAExC,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBACjD,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;wBACtE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,QAAQ,CAAC,yBAAyB,EAAE;gBACnC,EAAE,CAAC,oBAAoB,EAAE;oBACxB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC;oBAE7C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,4BAA4B,EAAE;oBAChC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,OAAO,QAAQ,CAAC,UAAU,CAAC;oBAE3B,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBAE9C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,uBAAuB,EAAE;oBAC3B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAY,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC/E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,sBAAsB,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACxE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;oBAEpD,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,kCAAkC,EAAE;oBACtC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC;oBAE/C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,0BAA0B,EAAE;oBAC9B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,4BAAiB,CAAC,cAAc,CAAC,CAAC,CAAC;oBACpF,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,QAAQ,GAAG,uCAAuC,CAAC;oBAE5D,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,sBAAsB,EAAE;oBAC1B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;oBAE/E,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,wBAAwB,EAAE;oBAC5B,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;oBAC9E,gBAAgB,CAAC,UAAU,GAAG,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;oBACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC5D,QAAQ,CAAC,MAAM,GAAG,6BAA6B,GAAG,gBAAM,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBAC/E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC;oBAExC,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;gBAC3D,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,wBAAwB,EAAE;YAClC,EAAE,CAAC,sCAAsC,EAAE;gBAC1C,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5D,IAAI,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC/C,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC5E,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBAC3C,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC7B,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;gBAChD,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;gBAC7B,iDAAiD;gBAEjD,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBACpC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,0CAA0C,EAAE;gBAC9C,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAE5D,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBACpC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iCAAiC,EAAE;gBACrC,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,sBAAW,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAE5D,IAAI,MAAM,GAAG;oBACZ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBACpC,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBACpC,IAAA,aAAM,EAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClD,IAAA,aAAM,EAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1C,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,qBAAqB,EAAE;gBACzB,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,uBAAY,CAAC,cAAc,CAAC,CAAC,CAAC;gBAC/E,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAC,CAAC;gBAC5D,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;gBAEpD,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;oBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;oBACpC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAC/C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;oBACzE,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,mBAAmB,EAAE;YAC7B,EAAE,CAAC,8BAA8B,EAAE;gBAClC,IAAI,QAAQ,GAAG,sBAAW,CAAC,cAAc,CAAC;gBAE1C,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,oBAAoB,EAAE;gBACxB,IAAI,QAAQ,GAAG,6BAAkB,CAAC,cAAc,CAAC;gBAEjD,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;oBAClD,IAAA,aAAM,EAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBAClD,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,wDAAwD,EAAE;gBAC5D,IAAI,mBAAmB,GAAG;oBACzB,MAAM,EAAE,gCAAgC;oBACxC,UAAU,EAAE,EAAE;iBACd,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,mBAAmB,EAAE,IAAI,CAAC,CAAC;YAC1D,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,EAAE;YAChB,QAAQ,CAAC,uDAAuD,EAAE;gBACjE,EAAE,CAAC,4CAA4C,EAAE;oBAChD,IAAI,cAAc,GACjB,qGAAqG,CAAC;oBACvG,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAClD,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAE1C,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;wBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;wBACpC,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;gBAEH,EAAE,CAAC,yDAAyD,EAAE;oBAC7D,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CACxB,yDAAyD;wBACxD,8CAA8C,CAC/C,CAAC;oBACF,IAAI,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAChC,yDAAyD;wBACxD,8CAA8C,CAC/C,CAAC;oBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;wBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;wBAC1C,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;wBAClD,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;wBACzE,OAAO,MAAM,CAAC;oBACf,CAAC,CAAC;oBACF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;gBACjE,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,QAAQ,CACP,qEAAqE;gBACpE,kBAAkB,EACnB,GAAG,EAAE;gBACJ,QAAQ,CAAC,sEAAsE,EAAE,GAAG,EAAE;oBACrF,IAAI,aAAa,GAAG;wBACnB,MAAM,EAAE,wBAAwB;wBAChC,UAAU,EAAE,EAAE;qBACd,CAAC;oBACF,IAAI,gBAAgB,GAAG;wBACtB,MAAM,EAAE,wBAAwB;qBAChC,CAAC;oBAEF,EAAE,CAAC,4DAA4D,EAAE;wBAChE,IAAI,YAAY,GAAG,UAAU,MAAM;4BAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;4BACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;4BAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;4BACpC,OAAO,MAAM,CAAC;wBACf,CAAC,CAAC;wBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;oBAEH,EAAE,CAAC,4DAA4D,EAAE;wBAChE,IAAI,YAAY,GAAG,UAAU,MAAM;4BAClC,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;4BACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;4BAClC,IAAA,aAAM,EAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;4BACpC,OAAO,MAAM,CAAC;wBACf,CAAC,CAAC;wBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,gBAAgB,CAAC,CAAC;oBAChE,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC;YACJ,CAAC,CACD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,WAAW,EAAE;YACrB,MAAM,CAAC;gBACN,IAAI,eAAe,GAAG,IAAI,oCAAe,EAAE,CAAC;gBAE5C,IAAI,wCAAiB,CAAC;oBACrB,UAAU,EAAE,IAAI;oBAChB,YAAY,EAAE,eAAe,CAAC,YAAmB;oBACjD,SAAS,EAAE,eAAe,CAAC,SAAgB;iBAC3C,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,IAAI,qBAAqB,GAAG,UAAU,GAAG;gBACxC,OAAO,UAAU,MAAM;oBACtB,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAE/C,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;YACH,CAAC,CAAC;YAEF,EAAE,CAAC,8BAA8B,EAAE;gBAClC,IAAI,aAAa,GAAG;oBACnB,MAAM,EAAE,kCAAkC;oBAC1C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;iBAC9D,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,aAAa,EAAE,IAAI,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE;gBACpD,IAAI,kBAAkB,GAAG;oBACxB,MAAM,EAAE,uCAAuC;oBAC/C,SAAS,EAAE,EAAE;iBACb,CAAC;gBAEF,OAAO,QAAQ,CACd,qBAAqB,CAAC,6CAA6C,CAAC,EACpE,kBAAkB,EAClB,IAAI,EACJ,IAAI,CACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6CAA6C,EAAE;gBACjD,IAAI,YAAY,GAAG;oBAClB,MAAM,EAAE,iCAAiC;oBACzC,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;iBACjD,CAAC;gBAEF,OAAO,QAAQ,CACd,qBAAqB,CAAC,+CAA+C,CAAC,EACtE,YAAY,EACZ,IAAI,EACJ,IAAI,CACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,gDAAgD,EAAE;gBACpD,IAAI,gBAAgB,GAAG;oBACtB,MAAM,EAAE,qCAAqC;oBAC7C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;iBACzC,CAAC;gBAEF,OAAO,QAAQ,CACd,UAAU,MAAM;oBACf,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,8BAA8B;oBAC9B,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC1C,wCAAwC,CACxC,CAAC;oBACF,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC1C,mDAAmD,CACnD,CAAC;oBACF,OAAO,MAAM,CAAC;gBACf,CAAC,EACD,gBAAgB,EAChB,IAAI,EACJ,IAAI,CACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,kFAAkF,EAAE;gBACtF,IAAI,gBAAgB,GAAG;oBACtB,MAAM,EAAE,qCAAqC;oBAC7C,QAAQ,EAAE,6CAA6C;oBACvD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;iBACzC,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE;gBACrE,IAAI,eAAe,GAAG;oBACrB,MAAM,EAAE,oCAAoC;oBAC5C,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;iBAC3C,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,eAAe,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,8EAA8E,EAAE;gBAClF,IAAI,QAAQ,GAAG;oBACd,MAAM,EAAE,6BAA6B;oBACrC,SAAS,EAAE;wBACV;4BACC,EAAE,EAAE,KAAK;4BACT,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,KAAK;4BACd,cAAc,EAAE,QAAQ;4BACxB,KAAK,EAAE;gCACN,oCAAoC,EAAE,CAAC;gCACvC,oCAAoC,EAAE,CAAC,CAAC;6BACxC;yBACD;qBACD;iBACD,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACtC,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,6EAA6E,EAAE;gBACjF,IAAI,eAAe,GAAG;oBACrB,MAAM,EAAE,oCAAoC;oBAC5C,SAAS,EAAE;wBACV;4BACC,EAAE,EAAE,KAAK;4BACT,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,KAAK;4BACd,cAAc,EAAE,UAAU;4BAC1B,KAAK,EAAE;gCACN,oCAAoC,EAAE,CAAC;gCACvC,oCAAoC,EAAE,CAAC,CAAC;6BACxC;yBACD;qBACD;iBACD,CAAC;gBAEF,OAAO,QAAQ,CACd,UAAU,MAAM;oBACf,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC1C,kDAAkD,CAClD,CAAC;oBACF,OAAO,MAAM,CAAC;gBACf,CAAC,EACD,eAAe,EACf,IAAI,EACJ,IAAI,CACJ,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,sFAAsF,EAAE;gBAC1F,IAAI,sBAAsB,GAAG;oBAC5B,MAAM,EAAE,2CAA2C;oBACnD,SAAS,EAAE;wBACV;4BACC,EAAE,EAAE,KAAK;4BACT,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,KAAK;4BACd,cAAc,EAAE,QAAQ;4BACxB,KAAK,EAAE,EAAE,UAAU,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC,EAAE;yBAC5C;qBACD;iBACD,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,IAAA,aAAM,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACvC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACzC,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,GAAG,YAAY,CAAC,CAAC;oBACnF,IAAA,aAAM,EAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAC1C,GAAG,CAAC,kBAAkB,GAAG,gBAAgB,CACzC,CAAC;oBAEF,OAAO,MAAM,CAAC;gBACf,CAAC,CAAC;gBAEF,OAAO,QAAQ,CAAC,YAAY,EAAE,sBAAsB,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,iEAAiE,EAAE;gBACrE,IAAI,uBAAuB,GAAG;oBAC7B,MAAM,EAAE,8BAA8B;oBACtC,UAAU,EAAE;wBACX;4BACC,EAAE,EAAE,KAAK;4BACT,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,KAAK;4BACd,cAAc,EAAE,QAAQ;4BACxB,KAAK,EAAE;gCACN,oCAAoC,EAAE,CAAC;gCACvC,oCAAoC,EAAE,CAAC,CAAC;6BACxC;yBACD;qBACD;iBACD,CAAC;gBAEF,IAAI,YAAY,GAAG,UAAU,MAAM;oBAClC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;gBAC9C,CAAC,CAAC;gBACF,IAAI,gBAAgB,GAAG,UAAU,KAAK;oBACrC,IAAA,aAAM,EAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,CAClC,qDAAqD,CACrD,CAAC;gBACH,CAAC,CAAC;gBACF,OAAO,iBAAiB,CAAC,KAAK,EAAE,uBAAuB,EAAE,IAAI,EAAE,IAAI,CAAC;qBAClE,IAAI,CAAC,YAAY,CAAC;qBAClB,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,kBAAkB,EAAE;YAC5B,EAAE,CAAC,+CAA+C,EAAE,UAAU,IAAI;gBACjE,IAAI,eAAe,GAAG,IAAI,oCAAe,EAAE,CAAC;gBAE5C,IAAI,iBAAiB,GAAG,IAAI,wCAAiB,CAAC;oBAC7C,iBAAiB,EAAE,eAAe,CAAC,iBAAwB;oBAC3D,cAAc,EAAE,eAAe,CAAC,cAAqB;iBACrD,CAAC,CAAC;gBAEH,4DAA4D;gBAC5D,IAAI,iBAAiB,GAAG;oBACvB,MAAM,EAAE,8BAA8B;iBACtC,CAAC;gBAEF,IAAI,YAAY,GAAG;oBAClB,MAAM,EAAE,yBAAyB;oBACjC,QAAQ,EAAE,CAAC,8BAA8B,CAAC;iBAC1C,CAAC;gBAEF,IAAI,WAAW,GAAG;oBACjB,MAAM,EAAE,uBAAuB;oBAC/B,UAAU,EAAE;wBACX;4BACC,EAAE,EAAE,KAAK;4BACT,MAAM,EAAE,yBAAyB;4BACjC,OAAO,EAAE,KAAK;yBACd;qBACD;iBACD,CAAC;gBAEF,eAAe,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;gBAC5C,eAAe,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAEvC,iBAAiB,CAAC,aAAa,CAAC,WAAkB,CAAC,CAAC,IAAI,CACvD,GAAG,EAAE;oBACJ,IAAI,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;gBACzC,CAAC,EACD,CAAC,KAAK,EAAE,EAAE;oBACT,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC;oBACvB,IAAI,EAAE,CAAC;gBACR,CAAC,CACD,CAAC;YACH,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;AACJ,CAAC,CAAC,EAAE,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\n/* eslint no-unused-expressions: 0 */\n\n// Lint disable to avoid needing to place `async` on many test functions\n// as validity of testing is in general questionable and trying to avoid\n// changes.\n/* eslint-disable @typescript-eslint/promise-function-async */\n\n/**\n * @fileoverview In this file, we will test template validation.\n */\n\nimport { constants } from \"@fluid-experimental/property-common\";\nimport { expect } from \"chai\";\nimport semver from \"semver\";\n\nimport { TemplateValidator } from \"../../templateValidator.js\";\nimport type { SchemaValidationResult } from \"../../validationResultBuilder.js\";\nimport { SchemaValidator } from \"../schemaValidator.js\";\nimport {\n\tbadInvalidSemverInTypeid,\n\tbadMissingSemverInTypeid,\n\tbadPrimitiveTypeid,\n\tgoodPointId,\n\tgoodReservedTypes,\n\tgoodUIBorder,\n} from \"../schemas/index.js\";\n\n(function () {\n\tconst MSG = constants.MSG;\n\n\tconst performValidation = function (\n\t\tasync: boolean,\n\t\ttemplate,\n\t\ttemplatePrevious,\n\t\tskipSemver,\n\t\tasyncErrorMessage?,\n\t): Promise<SchemaValidationResult> {\n\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t// @ts-expect-error - per the catch and no throw below\n\t\treturn async\n\t\t\t? schemaValidator\n\t\t\t\t\t.validate(template, templatePrevious, async, skipSemver)\n\t\t\t\t\t.catch((error) => {\n\t\t\t\t\t\texpect(error.message).to.have.string(asyncErrorMessage);\n\t\t\t\t\t\t// This really should re-throw the error. As it stands this\n\t\t\t\t\t\t// catch returns `undefined` which is not SchemaValidationResult.\n\t\t\t\t\t\t// Throwing will cause \"fail: previous template: invalid semver\"\n\t\t\t\t\t\t// test case to fail with uncaught error.\n\t\t\t\t\t\t// This also has impact on the malformed validate function below.\n\t\t\t\t\t\t// throw error;\n\t\t\t\t\t})\n\t\t\t: // A better pattern is simply Promise.resolve(...). However without all callers\n\t\t\t\t// properly specifying they are `async` (lint disabled for file), they may fail.\n\t\t\t\t// In particular see test case\n\t\t\t\t// \"should fail if map with context key type typeid is not constant\"\n\t\t\t\tnew Promise((resolve) => {\n\t\t\t\t\tresolve(schemaValidator.validate(template, templatePrevious, async, skipSemver));\n\t\t\t\t});\n\t};\n\n\t// Performs both synchronous and asynchronous validation\n\tlet validate = function (\n\t\texpectations: (result: SchemaValidationResult) => SchemaValidationResult,\n\t\ttemplate?,\n\t\ttemplatePrevious?,\n\t\tskipSemver?,\n\t\tasyncErrorMessage?,\n\t) {\n\t\treturn performValidation(false, template, templatePrevious, skipSemver)\n\t\t\t.then(expectations)\n\t\t\t.then(\n\t\t\t\t// This patten is invalid. The `then` parameter is expected to be callable.\n\t\t\t\t// Instead performValidation is called and its result is is called. Or at least\n\t\t\t\t// should be. As set up the following .then is executed (apparently) on the\n\t\t\t\t// results of the prior performValidation. This could be address with this prefix:\n\t\t\t\t// async () =>\n\t\t\t\t// However doing so causes tests to fail. Testing coming through here appears\n\t\t\t\t// invalid.\n\t\t\t\t// @ts-expect-error\n\t\t\t\tperformValidation(true, template, templatePrevious, skipSemver, asyncErrorMessage),\n\t\t\t)\n\t\t\t.then(expectations);\n\t};\n\n\tdescribe(\"Template Validation\", function () {\n\t\t// --- INPUT ---\n\t\tdescribe(\"input validation\", function () {\n\t\t\tit(\"fail: empty template\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.NO_TEMPLATE);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations);\n\t\t\t});\n\n\t\t\tit(\"fail: template with no typeid\", function () {\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MISSING_TYPE_ID);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, {});\n\t\t\t});\n\t\t});\n\n\t\t// --- TYPEID ---\n\t\tdescribe(\"typeid validation\", function () {\n\t\t\tit(\"pass: valid typeid\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: missing semver\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badMissingSemverInTypeid.templateSchema));\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\"'TeamLeoValidation2:PointID' is not valid\",\n\t\t\t\t\t);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 1\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].instancePath).to.equal(\"/typeid\");\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid semver 2\", function () {\n\t\t\t\tlet template = JSON.parse(JSON.stringify(badInvalidSemverInTypeid.templateSchema));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-1.0.01\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(template.typeid);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.INVALID_VERSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template);\n\t\t\t});\n\n\t\t\tit(\"fail: previous template: invalid semver\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet badTypeId = \"TeamLeoValidation2:PointID-1.0.0.1\";\n\t\t\t\ttemplatePrevious.typeid = badTypeId;\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.typeid).to.equal(badTypeId);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(`'${badTypeId}' is not valid`);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(\n\t\t\t\t\texpectations,\n\t\t\t\t\ttemplate,\n\t\t\t\t\ttemplatePrevious,\n\t\t\t\t\tfalse,\n\t\t\t\t\t\"Invalid Version: 1.0.0.1\",\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\n\t\t// --- Template versioning ---\n\t\tdescribe(\"template versioning\", function () {\n\t\t\tit(\"fail: version regression: 1.0.0 -> 0.9.9\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.9.9\";\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.VERSION_REGRESSION_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tdescribe(\"same version\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'id'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(\n\t\t\t\t\t\t\tMSG.MODIFIED_TEMPLATE_SAME_VERSION_1,\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented patch level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: unstable with major content change: 0.0.1 -> 0.0.2\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.typeid = \"TeamLeoValidation2:PointID-0.0.1\";\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-0.0.2\";\n\t\t\t\t\ttemplate.properties[1].typeid = \"TeamLeoValidation2:ColorID-9.0.0\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(2); // 1st for the delete and the 2nd for the add\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"patch\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented minor level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"warn: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"minor\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings.length).to.be.at.least(1);\n\t\t\t\t\t\texpect(result.warnings[0]).to.have.string(MSG.CHANGE_LEVEL_TOO_LOW_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\"incremented major level\", function () {\n\t\t\t\tit(\"pass: same content\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation.description = \"Changed!\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\tdelete template.annotation;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added 'annotation'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.annotation = { description: \"Test\" };\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'value'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"Adsk.Core:UI.Border-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'id' (delete, add)\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties[0].id = \"xx\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: changed 'inherits'\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodReservedTypes.templateSchema));\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:Example-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.inherits = \"Reference<Adsk.Core:Math.Color-1.0.0>\";\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: added property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.push({ id: \"newPropId\", typeid: \"Float32\" });\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\n\t\t\t\tit(\"pass: deleted property\", function () {\n\t\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\t\ttemplatePrevious.annotation = { description: \"Test\" };\n\t\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\t\ttemplate.typeid = \"TeamLeoValidation2:PointID-\" + semver.inc(\"1.0.0\", \"major\");\n\t\t\t\t\ttemplate.properties[0].properties.pop();\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t\t});\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"skip semver validation\", function () {\n\t\t\tit(\"pass: deep equal on scrambled arrays\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\tlet tmp = template.properties[0].properties[0];\n\t\t\t\ttemplate.properties[0].properties[0] = template.properties[0].properties[2];\n\t\t\t\ttemplate.properties[0].properties[2] = tmp;\n\t\t\t\ttmp = template.properties[1];\n\t\t\t\ttemplate.properties[1] = template.properties[2];\n\t\t\t\ttemplate.properties[2] = tmp;\n\t\t\t\t// Skip semver validation to cause a deep compare\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: deep equal with version regression\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\n\t\t\tit(\"pass: preserves input templates\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodPointId.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\n\t\t\t\tlet copies = [\n\t\t\t\t\tJSON.parse(JSON.stringify(templatePrevious)),\n\t\t\t\t\tJSON.parse(JSON.stringify(template)),\n\t\t\t\t];\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(templatePrevious).to.deep.equal(copies[0]);\n\t\t\t\t\texpect(template).to.deep.equal(copies[1]);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, templatePrevious);\n\t\t\t});\n\n\t\t\tit(\"fail: changed value\", function () {\n\t\t\t\tlet templatePrevious = JSON.parse(JSON.stringify(goodUIBorder.templateSchema));\n\t\t\t\tlet template = JSON.parse(JSON.stringify(templatePrevious));\n\t\t\t\ttemplate.properties[0].properties[0].value = 123456;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\texpect(result.errors.length).to.be.at.least(1);\n\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"syntax validation\", function () {\n\t\t\tit(\"pass: validate a simple file\", function () {\n\t\t\t\tlet template = goodPointId.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"fail: invalid file\", function () {\n\t\t\t\tlet template = badPrimitiveTypeid.templateSchema;\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\texpect(result.unresolvedTypes.length).to.equal(1);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, template, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass a schema with an empty array of properties\", function () {\n\t\t\t\tlet EmptyPropertySchema = {\n\t\t\t\t\ttypeid: \"Test:EmptyPropertySchema-1.0.0\",\n\t\t\t\t\tproperties: [],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t\treturn validate(expectations, EmptyPropertySchema, null);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"bugs\", function () {\n\t\t\tdescribe(\"@bugfix Template validation with multiple inheritance\", function () {\n\t\t\t\tit(\"pass: deep equal with multiple inheritance\", function () {\n\t\t\t\t\tlet templateString =\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}';\n\t\t\t\t\tlet templatePrevious = JSON.parse(templateString);\n\t\t\t\t\tlet template = JSON.parse(templateString);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\n\t\t\t\tit(\"fail: deep equal with out of order multiple inheritance\", function () {\n\t\t\t\t\tlet template = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NamedProperty\",\"NodeProperty\"]}',\n\t\t\t\t\t);\n\t\t\t\t\tlet templatePrevious = JSON.parse(\n\t\t\t\t\t\t'{\"typeid\":\"autodesk.core:translation.controller-1.0.0\",' +\n\t\t\t\t\t\t\t'\"inherits\":[\"NodeProperty\",\"NamedProperty\"]}',\n\t\t\t\t\t);\n\n\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\texpect(result).property(\"isValid\", false);\n\t\t\t\t\t\texpect(result.errors.length).to.be.greaterThan(0);\n\t\t\t\t\t\texpect(result.errors[0].message).to.have.string(MSG.MODIFIED_TEMPLATE_1);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t};\n\t\t\t\t\treturn validate(expectations, template, templatePrevious, true);\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tdescribe(\n\t\t\t\t\"@bugfix Local templates with 'abstract' properties fail validation \" +\n\t\t\t\t\t\"with remote one.\",\n\t\t\t\t() => {\n\t\t\t\t\tdescribe(\"pass: deep equal between no properties and an empty properties array\", () => {\n\t\t\t\t\t\tlet templateArray = {\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\t\tproperties: [],\n\t\t\t\t\t\t};\n\t\t\t\t\t\tlet templateAbstract = {\n\t\t\t\t\t\t\ttypeid: \"SimpleTest:Shape-1.0.0\",\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tit(\"source is abstract and target is an empty properties array\", function () {\n\t\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn validate(expectations, templateAbstract, templateArray);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tit(\"target is abstract and source is an empty properties array\", function () {\n\t\t\t\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\t\t\t\texpect(result).property(\"isValid\", true);\n\t\t\t\t\t\t\t\texpect(result.errors).to.be.empty;\n\t\t\t\t\t\t\t\texpect(result.warnings).to.be.empty;\n\t\t\t\t\t\t\t\treturn result;\n\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\treturn validate(expectations, templateArray, templateAbstract);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t},\n\t\t\t);\n\t\t});\n\n\t\tdescribe(\"Constants\", function () {\n\t\t\tbefore(function () {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tnew TemplateValidator({\n\t\t\t\t\tskipSemver: true,\n\t\t\t\t\tinheritsFrom: schemaValidator.inheritsFrom as any,\n\t\t\t\t\thasSchema: schemaValidator.hasSchema as any,\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tlet expectationsGenerator = function (msg) {\n\t\t\t\treturn function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\texpect(result.errors[0].message).to.equal(msg);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\t\t\t};\n\n\t\t\tit(\"should pass a valid template\", function () {\n\t\t\t\tlet ConstantValid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantValid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"valid\", typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantValid, null);\n\t\t\t});\n\n\t\t\tit(\"should fail if constants array has no elements\", function () {\n\t\t\t\tlet ConstantEmptyArray = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantEmptyArray-1.0.0\",\n\t\t\t\t\tconstants: [],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants must NOT have fewer than 1 items\"),\n\t\t\t\t\tConstantEmptyArray,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have an id\", function () {\n\t\t\t\tlet ConstantNoId = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoId-1.0.0\",\n\t\t\t\t\tconstants: [{ typeid: \"String\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\texpectationsGenerator(\"/constants/0 must have required property 'id'\"),\n\t\t\t\t\tConstantNoId,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant does not have a typeid\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\t// console.log(result.errors);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(5);\n\t\t\t\t\t\texpect(result.errors[3].message).to.include(\n\t\t\t\t\t\t\t\"must have required property 'inherits'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\texpect(result.errors[4].message).to.include(\n\t\t\t\t\t\t\t\"/constants/0 must have required property 'typeid'\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoTypeid,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant does not have a typeid but maybe inherits from elsewhere\", function () {\n\t\t\t\tlet ConstantNoTypeid = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoTypeid-1.0.0\",\n\t\t\t\t\tinherits: \"ConstantTest:ConstantParentWithTypeid-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", value: \"value\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoTypeid, null);\n\t\t\t});\n\n\t\t\tit(\"should not fail if constant does not have a value or typedValue\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [{ id: \"id\", typeid: \"String\" }],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantNoValue, null, true);\n\t\t\t});\n\n\t\t\tit(\"should pass if constant map with context key type typeid has typeids as keys\", function () {\n\t\t\t\tlet Constant = {\n\t\t\t\t\ttypeid: \"ConstantTest:Constant-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(true);\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, Constant, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type that is not a valid value\", function () {\n\t\t\t\tlet ConstantNoValue = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantNoValue-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"badvalue\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\treturn validate(\n\t\t\t\t\tfunction (result) {\n\t\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\t\texpect(result.errors.length).to.equal(1);\n\t\t\t\t\t\texpect(result.errors[0].message).to.include(\n\t\t\t\t\t\t\t\"should match one of the following: typeid,string\",\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t},\n\t\t\t\t\tConstantNoValue,\n\t\t\t\t\tnull,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tit(\"should fail if constant map with context key type typeid has invalid typeids as keys\", function () {\n\t\t\t\tlet ConstantMapWithBadKeys = {\n\t\t\t\t\ttypeid: \"ConstantTest:ConstantMapWithBadKeys-1.0.0\",\n\t\t\t\t\tconstants: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: { NotATypeId: 1, AlsoNotATypeId: -1 },\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\texpect(result.isValid).to.equal(false);\n\t\t\t\t\texpect(result.errors.length).to.equal(2);\n\t\t\t\t\texpect(result.errors[0].message).to.include(MSG.KEY_MUST_BE_TYPEID + \"NotATypeId\");\n\t\t\t\t\texpect(result.errors[1].message).to.include(\n\t\t\t\t\t\tMSG.KEY_MUST_BE_TYPEID + \"AlsoNotATypeId\",\n\t\t\t\t\t);\n\n\t\t\t\t\treturn result;\n\t\t\t\t};\n\n\t\t\t\treturn validate(expectations, ConstantMapWithBadKeys, null, true);\n\t\t\t});\n\n\t\t\tit(\"should fail if map with context key type typeid is not constant\", function () {\n\t\t\t\tlet ConstantMapWithProperty = {\n\t\t\t\t\ttypeid: \"ConstantTest:Outerprop-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"map\",\n\t\t\t\t\t\t\ttypeid: \"Int32\",\n\t\t\t\t\t\t\tcontext: \"map\",\n\t\t\t\t\t\t\tcontextKeyType: \"typeid\",\n\t\t\t\t\t\t\tvalue: {\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate1-1.0.0\": 1,\n\t\t\t\t\t\t\t\t\"SimpleTest:ConstantTemplate2-1.0.0\": -1,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tlet expectations = function (result) {\n\t\t\t\t\tthrow new Error(\"This should not be called\");\n\t\t\t\t};\n\t\t\t\tlet failExpectations = function (error) {\n\t\t\t\t\texpect(error.toString()).to.include(\n\t\t\t\t\t\t\"SV-013: A map with typeids as keys must be constant\",\n\t\t\t\t\t);\n\t\t\t\t};\n\t\t\t\treturn performValidation(false, ConstantMapWithProperty, null, true)\n\t\t\t\t\t.then(expectations)\n\t\t\t\t\t.catch(failExpectations);\n\t\t\t});\n\t\t});\n\n\t\tdescribe(\"Async validation\", function () {\n\t\t\tit(\"can perform context validation asynchronously\", function (done) {\n\t\t\t\tlet schemaValidator = new SchemaValidator();\n\n\t\t\t\tlet templateValidator = new TemplateValidator({\n\t\t\t\t\tinheritsFromAsync: schemaValidator.inheritsFromAsync as any,\n\t\t\t\t\thasSchemaAsync: schemaValidator.hasSchemaAsync as any,\n\t\t\t\t});\n\n\t\t\t\t// Doesn't inherit from 'NamedProperty'. Will cause an error\n\t\t\t\tlet grandParentSchema = {\n\t\t\t\t\ttypeid: \"test:grandparentschema-1.0.0\",\n\t\t\t\t};\n\n\t\t\t\tlet parentSchema = {\n\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\tinherits: [\"test:grandparentschema-1.0.0\"],\n\t\t\t\t};\n\n\t\t\t\tlet childSchema = {\n\t\t\t\t\ttypeid: \"test:childchema-1.0.0\",\n\t\t\t\t\tproperties: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tid: \"set\",\n\t\t\t\t\t\t\ttypeid: \"test:parentschema-1.0.0\",\n\t\t\t\t\t\t\tcontext: \"set\",\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\n\t\t\t\tschemaValidator.register(grandParentSchema);\n\t\t\t\tschemaValidator.register(parentSchema);\n\n\t\t\t\ttemplateValidator.validateAsync(childSchema as any).then(\n\t\t\t\t\t() => {\n\t\t\t\t\t\tdone(new Error(\"Should not be valid!\"));\n\t\t\t\t\t},\n\t\t\t\t\t(error) => {\n\t\t\t\t\t\texpect(error).to.exist;\n\t\t\t\t\t\tdone();\n\t\t\t\t\t},\n\t\t\t\t);\n\t\t\t});\n\t\t});\n\t});\n})();\n"]}
package/lib/rebase.d.ts CHANGED
@@ -3,6 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
  /**
6
+ * Rebases local changes against remote changes.
7
+ *
6
8
  * @internal
7
9
  */
8
10
  export declare function rebaseToRemoteChanges(change: any, getUnrebasedChange: any, getRebasedChanges: any, isAsync?: boolean): any;
@@ -1 +1 @@
1
- {"version":3,"file":"rebase.d.ts","sourceRoot":"","sources":["../src/rebase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmCH;;GAEG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,GAAG,EACvB,iBAAiB,EAAE,GAAG,EACtB,OAAO,GAAE,OAAe,OA4KxB"}
1
+ {"version":3,"file":"rebase.d.ts","sourceRoot":"","sources":["../src/rebase.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAmCH;;;;GAIG;AACH,wBAAgB,qBAAqB,CACpC,MAAM,EAAE,GAAG,EACX,kBAAkB,EAAE,GAAG,EACvB,iBAAiB,EAAE,GAAG,EACtB,OAAO,GAAE,OAAe,OA4KxB"}
package/lib/rebase.js CHANGED
@@ -24,6 +24,8 @@ const loop = (promise, fn, makePromise) => promise
24
24
  .then(fn)
25
25
  .then((result) => (result === null ? result : loop(makePromise(result), fn, makePromise)));
26
26
  /**
27
+ * Rebases local changes against remote changes.
28
+ *
27
29
  * @internal
28
30
  */
29
31
  export function rebaseToRemoteChanges(change, getUnrebasedChange, getRebasedChanges, isAsync = false) {
package/lib/rebase.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"rebase.js","sourceRoot":"","sources":["../src/rebase.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport cloneDeep from \"lodash/cloneDeep.js\";\nimport isEqual from \"lodash/isEqual.js\";\n\nimport { ChangeSet } from \"./changeset.js\";\n\nclass SyncPromise {\n\tvalue: any;\n\n\tconstructor(x: { value: any }) {\n\t\tif (!(this instanceof SyncPromise)) {\n\t\t\treturn new SyncPromise(x);\n\t\t}\n\t\tif (x instanceof SyncPromise) {\n\t\t\tx = x.value;\n\t\t}\n\t\tthis.value = x;\n\t}\n\n\tthen(fn: (arg0: any) => { value: any }): SyncPromise {\n\t\tthis.value = new SyncPromise(fn(this.value)).value;\n\t\treturn this;\n\t}\n}\n\nconst loop = (\n\tpromise: Promise<any>,\n\tfn: { (currentChange: any): any; (currentRebasedChange: any): any },\n\tmakePromise: (arg0: any) => any,\n) =>\n\tpromise\n\t\t.then(fn)\n\t\t.then((result) => (result === null ? result : loop(makePromise(result), fn, makePromise)));\n\n/**\n * @internal\n */\nexport function rebaseToRemoteChanges(\n\tchange: any,\n\tgetUnrebasedChange: any,\n\tgetRebasedChanges: any,\n\tisAsync: boolean = false,\n) {\n\tconst makePromise = isAsync ? Promise.resolve.bind(Promise) : (x) => new SyncPromise(x);\n\tlet mainPromise = makePromise();\n\n\tconst commitsOnOtherLocalBranch = {};\n\tlet rebaseBaseChangeSet = new ChangeSet({});\n\tconst changesOnOtherLocalBranch = [];\n\tif (change.referenceGuid !== change.remoteHeadGuid) {\n\t\t// Extract all changes between the remoteHeadGuid and the referenceGuid\n\t\tlet currentGuid = change.referenceGuid;\n\t\tmainPromise = loop(\n\t\t\tmakePromise(getUnrebasedChange(currentGuid)),\n\t\t\t(currentChange) => {\n\t\t\t\tif (currentChange === undefined) {\n\t\t\t\t\tthrow new Error(\"Received change that references a non-existing parent change\");\n\t\t\t\t}\n\t\t\t\tchangesOnOtherLocalBranch.unshift(currentChange);\n\t\t\t\tcommitsOnOtherLocalBranch[currentGuid] = currentChange;\n\t\t\t\tif (currentGuid === change.localBranchStart) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tcurrentGuid = currentChange.referenceGuid;\n\t\t\t\treturn getUnrebasedChange(currentGuid);\n\t\t\t},\n\t\t\tmakePromise,\n\t\t);\n\n\t\t// Now we extract all changes until we arrive at a change that is relative to a remote change\n\t\tconst alreadyRebasedChanges = [];\n\n\t\tmainPromise = mainPromise.then(() =>\n\t\t\tloop(\n\t\t\t\tmakePromise(getUnrebasedChange(change.localBranchStart)),\n\t\t\t\t(currentRebasedChange) => {\n\t\t\t\t\tif (currentRebasedChange.remoteHeadGuid === currentRebasedChange.referenceGuid) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn makePromise(getUnrebasedChange(currentRebasedChange.referenceGuid)).then(\n\t\t\t\t\t\t(rebaseChange) => {\n\t\t\t\t\t\t\talreadyRebasedChanges.unshift(rebaseChange);\n\t\t\t\t\t\t\tif (rebaseChange === undefined) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\"Received change that references a non-existing parent change\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rebaseChange;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmakePromise,\n\t\t\t),\n\t\t);\n\n\t\t// Compute the base Changeset to rebase the changes on the branch that was still the local branch\n\t\t// when the incoming change was created\n\n\t\tmainPromise = mainPromise\n\t\t\t.then(() => {\n\t\t\t\t// First invert all changes on the previous local branch\n\t\t\t\tconst startGuid =\n\t\t\t\t\talreadyRebasedChanges.length > 0\n\t\t\t\t\t\t? alreadyRebasedChanges[0].referenceGuid\n\t\t\t\t\t\t: changesOnOtherLocalBranch[0].referenceGuid;\n\n\t\t\t\t// Then apply all changes on the local remote branch\n\t\t\t\tconst endGuid = change.remoteHeadGuid;\n\t\t\t\treturn getRebasedChanges(startGuid, endGuid);\n\t\t\t})\n\t\t\t.then((relevantRemoteChanges) => {\n\t\t\t\tlet rebaseBaseChangeSetForAlreadyRebasedChanges = new ChangeSet({});\n\n\t\t\t\tif (relevantRemoteChanges.length > 0) {\n\t\t\t\t\tfor (const c of relevantRemoteChanges) {\n\t\t\t\t\t\tlet changeset = c.changeSet;\n\t\t\t\t\t\tlet applyAfterMetaInformation;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\talreadyRebasedChanges[0] !== undefined &&\n\t\t\t\t\t\t\talreadyRebasedChanges[0].guid === c.guid\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst invertedChange = new ChangeSet(\n\t\t\t\t\t\t\t\tcloneDeep(alreadyRebasedChanges[0].changeSet),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tinvertedChange.toInverseChangeSet();\n\t\t\t\t\t\t\tinvertedChange.applyChangeSet(rebaseBaseChangeSetForAlreadyRebasedChanges);\n\t\t\t\t\t\t\tapplyAfterMetaInformation = new Map();\n\t\t\t\t\t\t\tconst conflicts2 = [];\n\t\t\t\t\t\t\tchangeset = cloneDeep(alreadyRebasedChanges[0].changeSet);\n\t\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges._rebaseChangeSet(\n\t\t\t\t\t\t\t\tchangeset,\n\t\t\t\t\t\t\t\tconflicts2,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges = invertedChange;\n\t\t\t\t\t\t\talreadyRebasedChanges.shift();\n\t\t\t\t\t\t}\n\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges.applyChangeSet(changeset, {\n\t\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Now we have to rebase all changes from the remote local branch with respect to this base changeset\n\t\t\t\t\trebaseChangeArrays(\n\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges,\n\t\t\t\t\t\tchangesOnOtherLocalBranch,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Update the reference for the rebased changes to indicate that they are now with respect to the\n\t\t\t\t// new remoteHeadGuid\n\t\t\t\tif (changesOnOtherLocalBranch.length > 0) {\n\t\t\t\t\tchangesOnOtherLocalBranch[0].remoteHeadGuid = change.remoteHeadGuid;\n\t\t\t\t\tchangesOnOtherLocalBranch[0].referenceGuid = change.remoteHeadGuid;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\treturn mainPromise\n\t\t.then(() => makePromise(getRebasedChanges(change.remoteHeadGuid)))\n\t\t.then((remoteChanges) => {\n\t\t\tconst conflicts = [];\n\t\t\tif (\n\t\t\t\t!isEqual(\n\t\t\t\t\tchangesOnOtherLocalBranch.map((change) => change.guid),\n\t\t\t\t\tremoteChanges.map((change) => change.guid),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tfor (const remoteChange of remoteChanges) {\n\t\t\t\t\tlet applyAfterMetaInformation =\n\t\t\t\t\t\tcommitsOnOtherLocalBranch[remoteChange.guid] !== undefined\n\t\t\t\t\t\t\t? remoteChange.rebaseMetaInformation\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tlet changeset = remoteChange.changeSet;\n\t\t\t\t\tif (\n\t\t\t\t\t\tchangesOnOtherLocalBranch[0] !== undefined &&\n\t\t\t\t\t\tchangesOnOtherLocalBranch[0].guid === remoteChange.guid\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst invertedChange = new ChangeSet(\n\t\t\t\t\t\t\tcloneDeep(changesOnOtherLocalBranch[0].changeSet),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tinvertedChange.toInverseChangeSet();\n\t\t\t\t\t\tinvertedChange.applyChangeSet(rebaseBaseChangeSet);\n\n\t\t\t\t\t\tapplyAfterMetaInformation = new Map();\n\t\t\t\t\t\tchangeset = cloneDeep(changesOnOtherLocalBranch[0].changeSet);\n\t\t\t\t\t\trebaseBaseChangeSet._rebaseChangeSet(changeset, conflicts, {\n\t\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// This is disabled for performance reasons. Only used during debugging\n\t\t\t\t\t\t// assert(isEqual(changeset,this.remoteChanges[i].changeSet),\n\t\t\t\t\t\t// \"Failed Rebase in rebaseToRemoteChanges\");\n\t\t\t\t\t\trebaseBaseChangeSet = invertedChange;\n\t\t\t\t\t\tchangesOnOtherLocalBranch.shift();\n\t\t\t\t\t}\n\n\t\t\t\t\trebaseBaseChangeSet.applyChangeSet(changeset, {\n\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchange.rebaseMetaInformation = new Map();\n\t\t\trebaseBaseChangeSet._rebaseChangeSet(change.changeSet, conflicts, {\n\t\t\t\tapplyAfterMetaInformation: change.rebaseMetaInformation,\n\t\t\t});\n\t\t});\n}\n\nfunction rebaseChangeArrays(baseChangeSet, changesToRebase) {\n\tlet rebaseBaseChangeSet = baseChangeSet;\n\tfor (const change of changesToRebase) {\n\t\tconst copiedChangeSet = new ChangeSet(cloneDeep(change.changeSet));\n\t\tcopiedChangeSet.toInverseChangeSet();\n\n\t\tconst conflicts = [];\n\t\tchange.rebaseMetaInformation = new Map();\n\t\trebaseBaseChangeSet._rebaseChangeSet(change.changeSet, conflicts, {\n\t\t\tapplyAfterMetaInformation: change.rebaseMetaInformation,\n\t\t});\n\n\t\tcopiedChangeSet.applyChangeSet(rebaseBaseChangeSet);\n\t\tcopiedChangeSet.applyChangeSet(change.changeSet, {\n\t\t\tapplyAfterMetaInformation: change.rebaseMetaInformation,\n\t\t});\n\t\trebaseBaseChangeSet = copiedChangeSet;\n\t}\n}\n"]}
1
+ {"version":3,"file":"rebase.js","sourceRoot":"","sources":["../src/rebase.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport cloneDeep from \"lodash/cloneDeep.js\";\nimport isEqual from \"lodash/isEqual.js\";\n\nimport { ChangeSet } from \"./changeset.js\";\n\nclass SyncPromise {\n\tvalue: any;\n\n\tconstructor(x: { value: any }) {\n\t\tif (!(this instanceof SyncPromise)) {\n\t\t\treturn new SyncPromise(x);\n\t\t}\n\t\tif (x instanceof SyncPromise) {\n\t\t\tx = x.value;\n\t\t}\n\t\tthis.value = x;\n\t}\n\n\tthen(fn: (arg0: any) => { value: any }): SyncPromise {\n\t\tthis.value = new SyncPromise(fn(this.value)).value;\n\t\treturn this;\n\t}\n}\n\nconst loop = (\n\tpromise: Promise<any>,\n\tfn: { (currentChange: any): any; (currentRebasedChange: any): any },\n\tmakePromise: (arg0: any) => any,\n) =>\n\tpromise\n\t\t.then(fn)\n\t\t.then((result) => (result === null ? result : loop(makePromise(result), fn, makePromise)));\n\n/**\n * Rebases local changes against remote changes.\n *\n * @internal\n */\nexport function rebaseToRemoteChanges(\n\tchange: any,\n\tgetUnrebasedChange: any,\n\tgetRebasedChanges: any,\n\tisAsync: boolean = false,\n) {\n\tconst makePromise = isAsync ? Promise.resolve.bind(Promise) : (x) => new SyncPromise(x);\n\tlet mainPromise = makePromise();\n\n\tconst commitsOnOtherLocalBranch = {};\n\tlet rebaseBaseChangeSet = new ChangeSet({});\n\tconst changesOnOtherLocalBranch = [];\n\tif (change.referenceGuid !== change.remoteHeadGuid) {\n\t\t// Extract all changes between the remoteHeadGuid and the referenceGuid\n\t\tlet currentGuid = change.referenceGuid;\n\t\tmainPromise = loop(\n\t\t\tmakePromise(getUnrebasedChange(currentGuid)),\n\t\t\t(currentChange) => {\n\t\t\t\tif (currentChange === undefined) {\n\t\t\t\t\tthrow new Error(\"Received change that references a non-existing parent change\");\n\t\t\t\t}\n\t\t\t\tchangesOnOtherLocalBranch.unshift(currentChange);\n\t\t\t\tcommitsOnOtherLocalBranch[currentGuid] = currentChange;\n\t\t\t\tif (currentGuid === change.localBranchStart) {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tcurrentGuid = currentChange.referenceGuid;\n\t\t\t\treturn getUnrebasedChange(currentGuid);\n\t\t\t},\n\t\t\tmakePromise,\n\t\t);\n\n\t\t// Now we extract all changes until we arrive at a change that is relative to a remote change\n\t\tconst alreadyRebasedChanges = [];\n\n\t\tmainPromise = mainPromise.then(() =>\n\t\t\tloop(\n\t\t\t\tmakePromise(getUnrebasedChange(change.localBranchStart)),\n\t\t\t\t(currentRebasedChange) => {\n\t\t\t\t\tif (currentRebasedChange.remoteHeadGuid === currentRebasedChange.referenceGuid) {\n\t\t\t\t\t\treturn null;\n\t\t\t\t\t}\n\t\t\t\t\treturn makePromise(getUnrebasedChange(currentRebasedChange.referenceGuid)).then(\n\t\t\t\t\t\t(rebaseChange) => {\n\t\t\t\t\t\t\talreadyRebasedChanges.unshift(rebaseChange);\n\t\t\t\t\t\t\tif (rebaseChange === undefined) {\n\t\t\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t\t\t\"Received change that references a non-existing parent change\",\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn rebaseChange;\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tmakePromise,\n\t\t\t),\n\t\t);\n\n\t\t// Compute the base Changeset to rebase the changes on the branch that was still the local branch\n\t\t// when the incoming change was created\n\n\t\tmainPromise = mainPromise\n\t\t\t.then(() => {\n\t\t\t\t// First invert all changes on the previous local branch\n\t\t\t\tconst startGuid =\n\t\t\t\t\talreadyRebasedChanges.length > 0\n\t\t\t\t\t\t? alreadyRebasedChanges[0].referenceGuid\n\t\t\t\t\t\t: changesOnOtherLocalBranch[0].referenceGuid;\n\n\t\t\t\t// Then apply all changes on the local remote branch\n\t\t\t\tconst endGuid = change.remoteHeadGuid;\n\t\t\t\treturn getRebasedChanges(startGuid, endGuid);\n\t\t\t})\n\t\t\t.then((relevantRemoteChanges) => {\n\t\t\t\tlet rebaseBaseChangeSetForAlreadyRebasedChanges = new ChangeSet({});\n\n\t\t\t\tif (relevantRemoteChanges.length > 0) {\n\t\t\t\t\tfor (const c of relevantRemoteChanges) {\n\t\t\t\t\t\tlet changeset = c.changeSet;\n\t\t\t\t\t\tlet applyAfterMetaInformation;\n\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\talreadyRebasedChanges[0] !== undefined &&\n\t\t\t\t\t\t\talreadyRebasedChanges[0].guid === c.guid\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tconst invertedChange = new ChangeSet(\n\t\t\t\t\t\t\t\tcloneDeep(alreadyRebasedChanges[0].changeSet),\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\tinvertedChange.toInverseChangeSet();\n\t\t\t\t\t\t\tinvertedChange.applyChangeSet(rebaseBaseChangeSetForAlreadyRebasedChanges);\n\t\t\t\t\t\t\tapplyAfterMetaInformation = new Map();\n\t\t\t\t\t\t\tconst conflicts2 = [];\n\t\t\t\t\t\t\tchangeset = cloneDeep(alreadyRebasedChanges[0].changeSet);\n\t\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges._rebaseChangeSet(\n\t\t\t\t\t\t\t\tchangeset,\n\t\t\t\t\t\t\t\tconflicts2,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges = invertedChange;\n\t\t\t\t\t\t\talreadyRebasedChanges.shift();\n\t\t\t\t\t\t}\n\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges.applyChangeSet(changeset, {\n\t\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\t// Now we have to rebase all changes from the remote local branch with respect to this base changeset\n\t\t\t\t\trebaseChangeArrays(\n\t\t\t\t\t\trebaseBaseChangeSetForAlreadyRebasedChanges,\n\t\t\t\t\t\tchangesOnOtherLocalBranch,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Update the reference for the rebased changes to indicate that they are now with respect to the\n\t\t\t\t// new remoteHeadGuid\n\t\t\t\tif (changesOnOtherLocalBranch.length > 0) {\n\t\t\t\t\tchangesOnOtherLocalBranch[0].remoteHeadGuid = change.remoteHeadGuid;\n\t\t\t\t\tchangesOnOtherLocalBranch[0].referenceGuid = change.remoteHeadGuid;\n\t\t\t\t}\n\t\t\t});\n\t}\n\n\treturn mainPromise\n\t\t.then(() => makePromise(getRebasedChanges(change.remoteHeadGuid)))\n\t\t.then((remoteChanges) => {\n\t\t\tconst conflicts = [];\n\t\t\tif (\n\t\t\t\t!isEqual(\n\t\t\t\t\tchangesOnOtherLocalBranch.map((change) => change.guid),\n\t\t\t\t\tremoteChanges.map((change) => change.guid),\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\tfor (const remoteChange of remoteChanges) {\n\t\t\t\t\tlet applyAfterMetaInformation =\n\t\t\t\t\t\tcommitsOnOtherLocalBranch[remoteChange.guid] !== undefined\n\t\t\t\t\t\t\t? remoteChange.rebaseMetaInformation\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tlet changeset = remoteChange.changeSet;\n\t\t\t\t\tif (\n\t\t\t\t\t\tchangesOnOtherLocalBranch[0] !== undefined &&\n\t\t\t\t\t\tchangesOnOtherLocalBranch[0].guid === remoteChange.guid\n\t\t\t\t\t) {\n\t\t\t\t\t\tconst invertedChange = new ChangeSet(\n\t\t\t\t\t\t\tcloneDeep(changesOnOtherLocalBranch[0].changeSet),\n\t\t\t\t\t\t);\n\t\t\t\t\t\tinvertedChange.toInverseChangeSet();\n\t\t\t\t\t\tinvertedChange.applyChangeSet(rebaseBaseChangeSet);\n\n\t\t\t\t\t\tapplyAfterMetaInformation = new Map();\n\t\t\t\t\t\tchangeset = cloneDeep(changesOnOtherLocalBranch[0].changeSet);\n\t\t\t\t\t\trebaseBaseChangeSet._rebaseChangeSet(changeset, conflicts, {\n\t\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\t// This is disabled for performance reasons. Only used during debugging\n\t\t\t\t\t\t// assert(isEqual(changeset,this.remoteChanges[i].changeSet),\n\t\t\t\t\t\t// \"Failed Rebase in rebaseToRemoteChanges\");\n\t\t\t\t\t\trebaseBaseChangeSet = invertedChange;\n\t\t\t\t\t\tchangesOnOtherLocalBranch.shift();\n\t\t\t\t\t}\n\n\t\t\t\t\trebaseBaseChangeSet.applyChangeSet(changeset, {\n\t\t\t\t\t\tapplyAfterMetaInformation,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tchange.rebaseMetaInformation = new Map();\n\t\t\trebaseBaseChangeSet._rebaseChangeSet(change.changeSet, conflicts, {\n\t\t\t\tapplyAfterMetaInformation: change.rebaseMetaInformation,\n\t\t\t});\n\t\t});\n}\n\nfunction rebaseChangeArrays(baseChangeSet, changesToRebase) {\n\tlet rebaseBaseChangeSet = baseChangeSet;\n\tfor (const change of changesToRebase) {\n\t\tconst copiedChangeSet = new ChangeSet(cloneDeep(change.changeSet));\n\t\tcopiedChangeSet.toInverseChangeSet();\n\n\t\tconst conflicts = [];\n\t\tchange.rebaseMetaInformation = new Map();\n\t\trebaseBaseChangeSet._rebaseChangeSet(change.changeSet, conflicts, {\n\t\t\tapplyAfterMetaInformation: change.rebaseMetaInformation,\n\t\t});\n\n\t\tcopiedChangeSet.applyChangeSet(rebaseBaseChangeSet);\n\t\tcopiedChangeSet.applyChangeSet(change.changeSet, {\n\t\t\tapplyAfterMetaInformation: change.rebaseMetaInformation,\n\t\t});\n\t\trebaseBaseChangeSet = copiedChangeSet;\n\t}\n}\n"]}