mirror of
https://github.com/Sevichecc/Urara-Blog.git
synced 2025-05-02 21:39:30 +08:00
1 line
No EOL
240 KiB
Text
1 line
No EOL
240 KiB
Text
{"version":3,"sources":["webpack://vscodetextmate/webpack/universalModuleDefinition","webpack://vscodetextmate/webpack/bootstrap","webpack://vscodetextmate/./out/grammar.js","webpack://vscodetextmate/./out/utils.js","webpack://vscodetextmate/./out/debug.js","webpack://vscodetextmate/./out/main.js","webpack://vscodetextmate/./out/registry.js","webpack://vscodetextmate/./out/rule.js","webpack://vscodetextmate/./out/matcher.js","webpack://vscodetextmate/./node_modules/process/browser.js","webpack://vscodetextmate/./out/grammarReader.js","webpack://vscodetextmate/./out/plist.js","webpack://vscodetextmate/./out/json.js","webpack://vscodetextmate/./out/theme.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","utils_1","rule_1","matcher_1","debug_1","performanceNow","performance","Date","now","createGrammar","grammar","initialLanguage","embeddedLanguages","tokenTypes","grammarRepository","onigLib","Grammar","FullScopeDependency","scopeName","PartialScopeDependency","include","toKey","ScopeDependencyCollector","full","partial","visitedRule","Set","_seenFull","_seenPartial","add","dep","has","push","_extractIncludedScopesInPatterns","result","baseGrammar","selfGrammar","patterns","repository","_i","patterns_1","length","pattern","patternRepository","mergeObjects","Array","isArray","collectDependencies","charAt","collectSpecificDependencies","substring","sharpIndex","indexOf","includedName","injections","injection","scopesAreMatching","thisScopeName","len","substr","nameMatcher","identifers","scopes","lastIndex","every","identifier","collectInjections","selector","rule","ruleFactoryHelper","matchers","createMatchers","ruleId","RuleFactory","getCompiledRuleId","matchers_1","matcher","priority","ScopeMetadata","languageId","tokenType","themeData","ScopeMetadataProvider","themeProvider","_initialLanguage","_themeProvider","_cache","Map","_defaultMetaData","getDefaults","_embeddedLanguages","keys","scope","language","console","warn","escapedScopes","map","_escapeRegExpCharacters","_embeddedLanguagesRegex","sort","reverse","RegExp","join","onDidChangeTheme","getDefaultMetadata","replace","getMetadataForScope","_NULL_SCOPE_METADATA","_doGetMetadataForScope","set","_scopeToLanguage","standardTokenType","_toStandardTokenType","themeMatch","match","STANDARD_TOKEN_TYPE_REGEXP","Error","_scopeMetadataProvider","_onigLib","_rootId","_lastRuleId","_ruleId2desc","_includedGrammars","_grammarRepository","_grammar","initGrammar","_injections","_tokenTypeMatchers","_a","_b","matchers_2","type","dispose","createOnigScanner","sources","createOnigString","getInjections","_this","rawInjections","expression","injectionScopeNames","forEach","injectionScopeName","injectionGrammar","getExternalGrammar","injectionSelector","i1","i2","registerRule","id","getRule","patternId","rawIncludedGrammar","lookup","$base","tokenizeLine","lineText","prevState","_tokenize","tokens","lineTokens","getResult","ruleStack","lineLength","tokenizeLine2","getBinaryResult","emitBinaryTokens","isFirstLine","$self","StackElement","NULL","reset","rawDefaultMetadata","defaultTheme","defaultMetadata","StackElementMetadata","fontStyle","foreground","background","rootScopeName","getName","rawRootMetadata","rootMetadata","ScopeListElement","mergeMetadata","scopeList","onigLineText","content","LineTokens","nextState","_tokenizeString","disposeOnigString","str","base","clone","$vscodeTextmateLocation","handleCaptures","stack","captures","captureIndices","lineTextContent","Math","min","localStack","maxEnd","end","captureRule","captureIndex","start","endPos","produceFromScopes","pop","produce","retokenizeCapturedWithRuleId","nameScopesList","contentNameScopesList","contentName","getContentName","stackClone","onigSubStr","captureRuleScopeName","captureRuleScopesList","LocalStackElement","debugCompiledRuleToString","ruleScanner","rules","debugRegExps","matchRuleOrInjections","linePos","anchorPosition","matchResult","compile","endRule","perfStart","DebugFlags","InDebugMode","scanner","findNextMatchSync","elapsedMillis","debugName","log","index","matchedRuleId","matchRule","injectionResult","bestMatchRuleId","bestMatchRating","Number","MAX_VALUE","bestMatchCaptureIndices","bestMatchResultPriority","generateScopes","matchRating","priorityMatch","matchInjections","matchResultScore","injectionResultScore","checkWhileConditions","STOP","whileCheckResult","beginRuleCapturedEOL","whileRules","node","nodeRule","BeginWhileRule","whileRule","compileWhile","debugWhileRegExp","whileCaptures","_checkWhileConditions","scanNext","hasAdvanced","poppedRule","debugEndRegExp","setContentNameScopesList","endCaptures","popped","getAnchorPos","getEnterPos","error","_rule","beforePush","BeginEndRule","pushedRule","debugBeginRegExp","beginCaptures","endHasBackReferences","setEndRule","getEndWithResolvedBackReferences","hasSameRuleAs","whileHasBackReferences","getWhileWithResolvedBackReferences","matchingRule","debugMatchRegExp","safePop","toBinaryStr","metadata","toString","printMetadata","getLanguageId","getTokenType","getFontStyle","getForeground","getBackground","_languageId","_tokenType","_fontStyle","_foreground","_background","parent","_equals","a","b","equals","other","_matchesScope","selectorWithDot","_matches","target","parentScopes","scopesList","source","_push","rawMetadata","split","_generateScopes","resultLen","enterPos","anchorPos","depth","_enterPos","_anchorPos","_structuralEquals","_reset","el","_writeString","res","outIndex","tokenTypeOverrides","_emitBinaryTokens","_tokenTypeOverrides","_lineText","_tokens","_binaryTokens","_lastTokenEndIndex","endIndex","toTemporaryType","k","startIndex","Uint32Array","standardType","doClone","something","arr","cloneArray","obj","cloneObj","arguments","basename","path","idx","lastIndexOf","CAPTURING_REGEX_SOURCE","RegexSource","hasCaptures","regexSource","test","replaceCaptures","captureSource","commandIndex","command","capture","parseInt","toLowerCase","toUpperCase","process","env","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","next","e","rejected","done","then","apply","__generator","body","f","y","g","_","label","sent","trys","ops","verb","iterator","v","op","TypeError","registry_1","grammarReader","theme_1","grammar_1","Registry","options","_options","_syncRegistry","SyncRegistry","Theme","createFromRawTheme","theme","colorMap","_ensureGrammarCache","setTheme","getColorMap","loadGrammarWithEmbeddedLanguages","initialScopeName","loadGrammarWithConfiguration","configuration","_loadGrammar","loadGrammar","_doLoadSingleGrammar","undefined","addGrammar","_loadSingleGrammar","_collectDependenciesForDep","injections_1","seenFullScopeRequests","seenPartialScopeRequests","Q","q","deps","q_1","_c","_d","_e","all","request","grammarForScopeName","rawGrammar","INITIAL","parseRawGrammar","onigLibPromise","_theme","_grammars","_rawGrammars","_injectionGrammars","_onigLibPromise","targetScope","concat","extendStatics","__extends","setPrototypeOf","__proto__","__","constructor","HAS_BACK_REFERENCES","BACK_REFERENCING_END","CompiledRule","regExps","Rule","$location","_name","_nameIsCapturing","_contentName","_contentNameIsCapturing","location","filename","line","configurable","CaptureRule","_super","collectPatternsRecursive","out","isFirst","endRegexSource","allowA","allowG","RegExpSource","regExpSource","handleAnchors","lastPushedPos","output","hasAnchor","pos","nextCh","_anchorCache","_buildAnchorCache","hasBackReferences","setSource","newSource","resolveBackReferences","capturedValues","g1","ch","A0_G0_result","A0_G1_result","A1_G0_result","A1_G1_result","A0_G0","A0_G1","A1_G0","A1_G1","resolveAnchors","RegExpSourceList","_items","_hasAnchors","_cached","_disposeCaches","item","unshift","_resolveAnchors","MatchRule","_match","_cachedCompiledPatterns","IncludeOnlyRule","hasMissingPatterns","begin","applyEndPatternLast","_begin","_end","_while","_cachedCompiledWhilePatterns","createCaptureRule","helper","desc","_compileCaptures","_compilePatterns","while","maximumCaptureId","captureId","numericCaptureId","localIncludedRule","externalGrammarName","externalGrammarInclude","externalGrammar","externalIncludedRule","skipRule","isIdentifier","token","matchesName","input","regex","results","tokenizer","exec","parseConjunction","parseOperand","expressionToNegate_1","matcherInput","expressionInParents","some","parseInnerExpression","identifiers_1","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","setTimeout","clearTimeout","currentQueue","queue","draining","queueIndex","cleanUpNextTick","drainQueue","timeout","run","marker","runClearTimeout","Item","array","noop","nextTick","args","title","browser","argv","version","versions","on","addListener","once","off","removeListener","removeAllListeners","emit","prependListener","prependOnceListener","listeners","binding","cwd","chdir","dir","umask","plist","json_1","filePath","contents","parse","JSON","parseJSONGrammar","parseWithLocation","parsePLISTGrammar","_parse","locationKeyName","char","advancePosBy","by","charCodeAt","advancePosTo","to","skipWhitespace","chCode","advanceIfStartsWith","advanceUntil","nextOccurence","captureUntil","state","cur","stateStack","objStack","curKey","pushState","newState","newCur","popState","fail","msg","val","isClosed","dictState","newDict","newArr","arrState","leaveDict","leaveArray","acceptString","acceptReal","isNaN","acceptInteger","acceptDate","acceptData","acceptBool","parseTagValue","tag","m0","String","fromCodePoint","peekChCode","trim","parseFloat","doFail","streamState","withMetadata","JSONStreamState","JSONToken","nextJSONToken","toLocation","keyValue","offset","_state","_out","ParsedThemeRule","isValidHexColor","hex","parseTheme","settings","entry","j","lenJ","segments","slice","resolveParsedThemeRules","parsedThemeRules","_colorMap","strcmp","strArrCmp","defaultFontStyle","defaultForeground","defaultBackground","incomingDefaults","shift","ColorMap","defaults","ThemeTrieElementRule","getId","ThemeTrieElement","insert","_lastColorId","_id2color","_color2id","_isFrozen","color","_root","_defaults","createFromParsedTheme","len1","len2","scopeDepth","cloneArr","acceptOverwrite","mainRule","rulesWithParentScopes","children","_mainRule","_rulesWithParentScopes","_children","_sortBySpecificity","_cmpBySpecificity","aParentScopes","bParentScopes","aParentScopesLen","bParentScopesLen","aLen","bLen","head","tail","dotIndex","child","_doInsertHere"],"mappings":"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","file":"main.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"vscodetextmate\"] = factory();\n\telse\n\t\troot[\"vscodetextmate\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 3);\n","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar rule_1 = require(\"./rule\");\nvar matcher_1 = require(\"./matcher\");\nvar debug_1 = require(\"./debug\");\nvar performanceNow = (function () {\n if (typeof performance === 'undefined') {\n // performance.now() is not available in this environment, so use Date.now()\n return function () { return Date.now(); };\n }\n else {\n return function () { return performance.now(); };\n }\n})();\nfunction createGrammar(grammar, initialLanguage, embeddedLanguages, tokenTypes, grammarRepository, onigLib) {\n return new Grammar(grammar, initialLanguage, embeddedLanguages, tokenTypes, grammarRepository, onigLib); //TODO\n}\nexports.createGrammar = createGrammar;\nvar FullScopeDependency = /** @class */ (function () {\n function FullScopeDependency(scopeName) {\n this.scopeName = scopeName;\n }\n return FullScopeDependency;\n}());\nexports.FullScopeDependency = FullScopeDependency;\nvar PartialScopeDependency = /** @class */ (function () {\n function PartialScopeDependency(scopeName, include) {\n this.scopeName = scopeName;\n this.include = include;\n }\n PartialScopeDependency.prototype.toKey = function () {\n return this.scopeName + \"#\" + this.include;\n };\n return PartialScopeDependency;\n}());\nexports.PartialScopeDependency = PartialScopeDependency;\nvar ScopeDependencyCollector = /** @class */ (function () {\n function ScopeDependencyCollector() {\n this.full = [];\n this.partial = [];\n this.visitedRule = new Set();\n this._seenFull = new Set();\n this._seenPartial = new Set();\n }\n ScopeDependencyCollector.prototype.add = function (dep) {\n if (dep instanceof FullScopeDependency) {\n if (!this._seenFull.has(dep.scopeName)) {\n this._seenFull.add(dep.scopeName);\n this.full.push(dep);\n }\n }\n else {\n if (!this._seenPartial.has(dep.toKey())) {\n this._seenPartial.add(dep.toKey());\n this.partial.push(dep);\n }\n }\n };\n return ScopeDependencyCollector;\n}());\nexports.ScopeDependencyCollector = ScopeDependencyCollector;\n/**\n * Fill in `result` all external included scopes in `patterns`\n */\nfunction _extractIncludedScopesInPatterns(result, baseGrammar, selfGrammar, patterns, repository) {\n for (var _i = 0, patterns_1 = patterns; _i < patterns_1.length; _i++) {\n var pattern = patterns_1[_i];\n if (result.visitedRule.has(pattern)) {\n continue;\n }\n result.visitedRule.add(pattern);\n var patternRepository = (pattern.repository ? utils_1.mergeObjects({}, repository, pattern.repository) : repository);\n if (Array.isArray(pattern.patterns)) {\n _extractIncludedScopesInPatterns(result, baseGrammar, selfGrammar, pattern.patterns, patternRepository);\n }\n var include = pattern.include;\n if (!include) {\n continue;\n }\n if (include === '$base' || include === baseGrammar.scopeName) {\n collectDependencies(result, baseGrammar, baseGrammar);\n }\n else if (include === '$self' || include === selfGrammar.scopeName) {\n collectDependencies(result, baseGrammar, selfGrammar);\n }\n else if (include.charAt(0) === '#') {\n collectSpecificDependencies(result, baseGrammar, selfGrammar, include.substring(1), patternRepository);\n }\n else {\n var sharpIndex = include.indexOf('#');\n if (sharpIndex >= 0) {\n var scopeName = include.substring(0, sharpIndex);\n var includedName = include.substring(sharpIndex + 1);\n if (scopeName === baseGrammar.scopeName) {\n collectSpecificDependencies(result, baseGrammar, baseGrammar, includedName, patternRepository);\n }\n else if (scopeName === selfGrammar.scopeName) {\n collectSpecificDependencies(result, baseGrammar, selfGrammar, includedName, patternRepository);\n }\n else {\n result.add(new PartialScopeDependency(scopeName, include.substring(sharpIndex + 1)));\n }\n }\n else {\n result.add(new FullScopeDependency(include));\n }\n }\n }\n}\n/**\n * Collect a specific dependency from the grammar's repository\n */\nfunction collectSpecificDependencies(result, baseGrammar, selfGrammar, include, repository) {\n if (repository === void 0) { repository = selfGrammar.repository; }\n if (repository && repository[include]) {\n var rule = repository[include];\n _extractIncludedScopesInPatterns(result, baseGrammar, selfGrammar, [rule], repository);\n }\n}\nexports.collectSpecificDependencies = collectSpecificDependencies;\n/**\n * Collects the list of all external included scopes in `grammar`.\n */\nfunction collectDependencies(result, baseGrammar, selfGrammar) {\n if (selfGrammar.patterns && Array.isArray(selfGrammar.patterns)) {\n _extractIncludedScopesInPatterns(result, baseGrammar, selfGrammar, selfGrammar.patterns, selfGrammar.repository);\n }\n if (selfGrammar.injections) {\n var injections = [];\n for (var injection in selfGrammar.injections) {\n injections.push(selfGrammar.injections[injection]);\n }\n _extractIncludedScopesInPatterns(result, baseGrammar, selfGrammar, injections, selfGrammar.repository);\n }\n}\nexports.collectDependencies = collectDependencies;\nfunction scopesAreMatching(thisScopeName, scopeName) {\n if (!thisScopeName) {\n return false;\n }\n if (thisScopeName === scopeName) {\n return true;\n }\n var len = scopeName.length;\n return thisScopeName.length > len && thisScopeName.substr(0, len) === scopeName && thisScopeName[len] === '.';\n}\nfunction nameMatcher(identifers, scopes) {\n if (scopes.length < identifers.length) {\n return false;\n }\n var lastIndex = 0;\n return identifers.every(function (identifier) {\n for (var i = lastIndex; i < scopes.length; i++) {\n if (scopesAreMatching(scopes[i], identifier)) {\n lastIndex = i + 1;\n return true;\n }\n }\n return false;\n });\n}\nfunction collectInjections(result, selector, rule, ruleFactoryHelper, grammar) {\n var matchers = matcher_1.createMatchers(selector, nameMatcher);\n var ruleId = rule_1.RuleFactory.getCompiledRuleId(rule, ruleFactoryHelper, grammar.repository);\n for (var _i = 0, matchers_1 = matchers; _i < matchers_1.length; _i++) {\n var matcher = matchers_1[_i];\n result.push({\n matcher: matcher.matcher,\n ruleId: ruleId,\n grammar: grammar,\n priority: matcher.priority\n });\n }\n}\nvar ScopeMetadata = /** @class */ (function () {\n function ScopeMetadata(scopeName, languageId, tokenType, themeData) {\n this.scopeName = scopeName;\n this.languageId = languageId;\n this.tokenType = tokenType;\n this.themeData = themeData;\n }\n return ScopeMetadata;\n}());\nexports.ScopeMetadata = ScopeMetadata;\nvar ScopeMetadataProvider = /** @class */ (function () {\n function ScopeMetadataProvider(initialLanguage, themeProvider, embeddedLanguages) {\n this._initialLanguage = initialLanguage;\n this._themeProvider = themeProvider;\n this._cache = new Map();\n this._defaultMetaData = new ScopeMetadata('', this._initialLanguage, 0 /* Other */, [this._themeProvider.getDefaults()]);\n // embeddedLanguages handling\n this._embeddedLanguages = Object.create(null);\n if (embeddedLanguages) {\n // If embeddedLanguages are configured, fill in `this._embeddedLanguages`\n var scopes = Object.keys(embeddedLanguages);\n for (var i = 0, len = scopes.length; i < len; i++) {\n var scope = scopes[i];\n var language = embeddedLanguages[scope];\n if (typeof language !== 'number' || language === 0) {\n console.warn('Invalid embedded language found at scope ' + scope + ': <<' + language + '>>');\n // never hurts to be too careful\n continue;\n }\n this._embeddedLanguages[scope] = language;\n }\n }\n // create the regex\n var escapedScopes = Object.keys(this._embeddedLanguages).map(function (scopeName) { return ScopeMetadataProvider._escapeRegExpCharacters(scopeName); });\n if (escapedScopes.length === 0) {\n // no scopes registered\n this._embeddedLanguagesRegex = null;\n }\n else {\n escapedScopes.sort();\n escapedScopes.reverse();\n this._embeddedLanguagesRegex = new RegExp(\"^((\" + escapedScopes.join(')|(') + \"))($|\\\\.)\", '');\n }\n }\n ScopeMetadataProvider.prototype.onDidChangeTheme = function () {\n this._cache = new Map();\n this._defaultMetaData = new ScopeMetadata('', this._initialLanguage, 0 /* Other */, [this._themeProvider.getDefaults()]);\n };\n ScopeMetadataProvider.prototype.getDefaultMetadata = function () {\n return this._defaultMetaData;\n };\n /**\n * Escapes regular expression characters in a given string\n */\n ScopeMetadataProvider._escapeRegExpCharacters = function (value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&');\n };\n ScopeMetadataProvider.prototype.getMetadataForScope = function (scopeName) {\n if (scopeName === null) {\n return ScopeMetadataProvider._NULL_SCOPE_METADATA;\n }\n var value = this._cache.get(scopeName);\n if (value) {\n return value;\n }\n value = this._doGetMetadataForScope(scopeName);\n this._cache.set(scopeName, value);\n return value;\n };\n ScopeMetadataProvider.prototype._doGetMetadataForScope = function (scopeName) {\n var languageId = this._scopeToLanguage(scopeName);\n var standardTokenType = this._toStandardTokenType(scopeName);\n var themeData = this._themeProvider.themeMatch(scopeName);\n return new ScopeMetadata(scopeName, languageId, standardTokenType, themeData);\n };\n /**\n * Given a produced TM scope, return the language that token describes or null if unknown.\n * e.g. source.html => html, source.css.embedded.html => css, punctuation.definition.tag.html => null\n */\n ScopeMetadataProvider.prototype._scopeToLanguage = function (scope) {\n if (!scope) {\n return 0;\n }\n if (!this._embeddedLanguagesRegex) {\n // no scopes registered\n return 0;\n }\n var m = scope.match(this._embeddedLanguagesRegex);\n if (!m) {\n // no scopes matched\n return 0;\n }\n var language = this._embeddedLanguages[m[1]] || 0;\n if (!language) {\n return 0;\n }\n return language;\n };\n ScopeMetadataProvider.prototype._toStandardTokenType = function (tokenType) {\n var m = tokenType.match(ScopeMetadataProvider.STANDARD_TOKEN_TYPE_REGEXP);\n if (!m) {\n return 0 /* Other */;\n }\n switch (m[1]) {\n case 'comment':\n return 1 /* Comment */;\n case 'string':\n return 2 /* String */;\n case 'regex':\n return 4 /* RegEx */;\n case 'meta.embedded':\n return 8 /* MetaEmbedded */;\n }\n throw new Error('Unexpected match for standard token type!');\n };\n ScopeMetadataProvider._NULL_SCOPE_METADATA = new ScopeMetadata('', 0, 0, null);\n ScopeMetadataProvider.STANDARD_TOKEN_TYPE_REGEXP = /\\b(comment|string|regex|meta\\.embedded)\\b/;\n return ScopeMetadataProvider;\n}());\nvar Grammar = /** @class */ (function () {\n function Grammar(grammar, initialLanguage, embeddedLanguages, tokenTypes, grammarRepository, onigLib) {\n this._scopeMetadataProvider = new ScopeMetadataProvider(initialLanguage, grammarRepository, embeddedLanguages);\n this._onigLib = onigLib;\n this._rootId = -1;\n this._lastRuleId = 0;\n this._ruleId2desc = [null];\n this._includedGrammars = {};\n this._grammarRepository = grammarRepository;\n this._grammar = initGrammar(grammar, null);\n this._injections = null;\n this._tokenTypeMatchers = [];\n if (tokenTypes) {\n for (var _i = 0, _a = Object.keys(tokenTypes); _i < _a.length; _i++) {\n var selector = _a[_i];\n var matchers = matcher_1.createMatchers(selector, nameMatcher);\n for (var _b = 0, matchers_2 = matchers; _b < matchers_2.length; _b++) {\n var matcher = matchers_2[_b];\n this._tokenTypeMatchers.push({\n matcher: matcher.matcher,\n type: tokenTypes[selector]\n });\n }\n }\n }\n }\n Grammar.prototype.dispose = function () {\n for (var _i = 0, _a = this._ruleId2desc; _i < _a.length; _i++) {\n var rule = _a[_i];\n if (rule) {\n rule.dispose();\n }\n }\n };\n Grammar.prototype.createOnigScanner = function (sources) {\n return this._onigLib.createOnigScanner(sources);\n };\n Grammar.prototype.createOnigString = function (sources) {\n return this._onigLib.createOnigString(sources);\n };\n Grammar.prototype.onDidChangeTheme = function () {\n this._scopeMetadataProvider.onDidChangeTheme();\n };\n Grammar.prototype.getMetadataForScope = function (scope) {\n return this._scopeMetadataProvider.getMetadataForScope(scope);\n };\n Grammar.prototype.getInjections = function () {\n var _this = this;\n if (this._injections === null) {\n this._injections = [];\n // add injections from the current grammar\n var rawInjections = this._grammar.injections;\n if (rawInjections) {\n for (var expression in rawInjections) {\n collectInjections(this._injections, expression, rawInjections[expression], this, this._grammar);\n }\n }\n // add injection grammars contributed for the current scope\n if (this._grammarRepository) {\n var injectionScopeNames = this._grammarRepository.injections(this._grammar.scopeName);\n if (injectionScopeNames) {\n injectionScopeNames.forEach(function (injectionScopeName) {\n var injectionGrammar = _this.getExternalGrammar(injectionScopeName);\n if (injectionGrammar) {\n var selector = injectionGrammar.injectionSelector;\n if (selector) {\n collectInjections(_this._injections, selector, injectionGrammar, _this, injectionGrammar);\n }\n }\n });\n }\n }\n this._injections.sort(function (i1, i2) { return i1.priority - i2.priority; }); // sort by priority\n }\n return this._injections;\n };\n Grammar.prototype.registerRule = function (factory) {\n var id = (++this._lastRuleId);\n var result = factory(id);\n this._ruleId2desc[id] = result;\n return result;\n };\n Grammar.prototype.getRule = function (patternId) {\n return this._ruleId2desc[patternId];\n };\n Grammar.prototype.getExternalGrammar = function (scopeName, repository) {\n if (this._includedGrammars[scopeName]) {\n return this._includedGrammars[scopeName];\n }\n else if (this._grammarRepository) {\n var rawIncludedGrammar = this._grammarRepository.lookup(scopeName);\n if (rawIncludedGrammar) {\n // console.log('LOADED GRAMMAR ' + pattern.include);\n this._includedGrammars[scopeName] = initGrammar(rawIncludedGrammar, repository && repository.$base);\n return this._includedGrammars[scopeName];\n }\n }\n return null;\n };\n Grammar.prototype.tokenizeLine = function (lineText, prevState) {\n var r = this._tokenize(lineText, prevState, false);\n return {\n tokens: r.lineTokens.getResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack\n };\n };\n Grammar.prototype.tokenizeLine2 = function (lineText, prevState) {\n var r = this._tokenize(lineText, prevState, true);\n return {\n tokens: r.lineTokens.getBinaryResult(r.ruleStack, r.lineLength),\n ruleStack: r.ruleStack\n };\n };\n Grammar.prototype._tokenize = function (lineText, prevState, emitBinaryTokens) {\n if (this._rootId === -1) {\n this._rootId = rule_1.RuleFactory.getCompiledRuleId(this._grammar.repository.$self, this, this._grammar.repository);\n }\n var isFirstLine;\n if (!prevState || prevState === StackElement.NULL) {\n isFirstLine = true;\n var rawDefaultMetadata = this._scopeMetadataProvider.getDefaultMetadata();\n var defaultTheme = rawDefaultMetadata.themeData[0];\n var defaultMetadata = StackElementMetadata.set(0, rawDefaultMetadata.languageId, rawDefaultMetadata.tokenType, defaultTheme.fontStyle, defaultTheme.foreground, defaultTheme.background);\n var rootScopeName = this.getRule(this._rootId).getName(null, null);\n var rawRootMetadata = this._scopeMetadataProvider.getMetadataForScope(rootScopeName);\n var rootMetadata = ScopeListElement.mergeMetadata(defaultMetadata, null, rawRootMetadata);\n var scopeList = new ScopeListElement(null, rootScopeName === null ? 'unknown' : rootScopeName, rootMetadata);\n prevState = new StackElement(null, this._rootId, -1, -1, false, null, scopeList, scopeList);\n }\n else {\n isFirstLine = false;\n prevState.reset();\n }\n lineText = lineText + '\\n';\n var onigLineText = this.createOnigString(lineText);\n var lineLength = onigLineText.content.length;\n var lineTokens = new LineTokens(emitBinaryTokens, lineText, this._tokenTypeMatchers);\n var nextState = _tokenizeString(this, onigLineText, isFirstLine, 0, prevState, lineTokens, true);\n disposeOnigString(onigLineText);\n return {\n lineLength: lineLength,\n lineTokens: lineTokens,\n ruleStack: nextState\n };\n };\n return Grammar;\n}());\nexports.Grammar = Grammar;\nfunction disposeOnigString(str) {\n if (typeof str.dispose === 'function') {\n str.dispose();\n }\n}\nfunction initGrammar(grammar, base) {\n grammar = utils_1.clone(grammar);\n grammar.repository = grammar.repository || {};\n grammar.repository.$self = {\n $vscodeTextmateLocation: grammar.$vscodeTextmateLocation,\n patterns: grammar.patterns,\n name: grammar.scopeName\n };\n grammar.repository.$base = base || grammar.repository.$self;\n return grammar;\n}\nfunction handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, captures, captureIndices) {\n if (captures.length === 0) {\n return;\n }\n var lineTextContent = lineText.content;\n var len = Math.min(captures.length, captureIndices.length);\n var localStack = [];\n var maxEnd = captureIndices[0].end;\n for (var i = 0; i < len; i++) {\n var captureRule = captures[i];\n if (captureRule === null) {\n // Not interested\n continue;\n }\n var captureIndex = captureIndices[i];\n if (captureIndex.length === 0) {\n // Nothing really captured\n continue;\n }\n if (captureIndex.start > maxEnd) {\n // Capture going beyond consumed string\n break;\n }\n // pop captures while needed\n while (localStack.length > 0 && localStack[localStack.length - 1].endPos <= captureIndex.start) {\n // pop!\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n if (localStack.length > 0) {\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, captureIndex.start);\n }\n else {\n lineTokens.produce(stack, captureIndex.start);\n }\n if (captureRule.retokenizeCapturedWithRuleId) {\n // the capture requires additional matching\n var scopeName = captureRule.getName(lineTextContent, captureIndices);\n var nameScopesList = stack.contentNameScopesList.push(grammar, scopeName);\n var contentName = captureRule.getContentName(lineTextContent, captureIndices);\n var contentNameScopesList = nameScopesList.push(grammar, contentName);\n var stackClone = stack.push(captureRule.retokenizeCapturedWithRuleId, captureIndex.start, -1, false, null, nameScopesList, contentNameScopesList);\n var onigSubStr = grammar.createOnigString(lineTextContent.substring(0, captureIndex.end));\n _tokenizeString(grammar, onigSubStr, (isFirstLine && captureIndex.start === 0), captureIndex.start, stackClone, lineTokens, false);\n disposeOnigString(onigSubStr);\n continue;\n }\n var captureRuleScopeName = captureRule.getName(lineTextContent, captureIndices);\n if (captureRuleScopeName !== null) {\n // push\n var base = localStack.length > 0 ? localStack[localStack.length - 1].scopes : stack.contentNameScopesList;\n var captureRuleScopesList = base.push(grammar, captureRuleScopeName);\n localStack.push(new LocalStackElement(captureRuleScopesList, captureIndex.end));\n }\n }\n while (localStack.length > 0) {\n // pop!\n lineTokens.produceFromScopes(localStack[localStack.length - 1].scopes, localStack[localStack.length - 1].endPos);\n localStack.pop();\n }\n}\nfunction debugCompiledRuleToString(ruleScanner) {\n var r = [];\n for (var i = 0, len = ruleScanner.rules.length; i < len; i++) {\n r.push(' - ' + ruleScanner.rules[i] + ': ' + ruleScanner.debugRegExps[i]);\n }\n return r.join('\\n');\n}\nfunction matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n // The lower the better\n var bestMatchRating = Number.MAX_VALUE;\n var bestMatchCaptureIndices = null;\n var bestMatchRuleId;\n var bestMatchResultPriority = 0;\n var scopes = stack.contentNameScopesList.generateScopes();\n for (var i = 0, len = injections.length; i < len; i++) {\n var injection = injections[i];\n if (!injection.matcher(scopes)) {\n // injection selector doesn't match stack\n continue;\n }\n var ruleScanner = grammar.getRule(injection.ruleId).compile(grammar, null, isFirstLine, linePos === anchorPosition);\n var matchResult = ruleScanner.scanner.findNextMatchSync(lineText, linePos);\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' scanning for injections');\n console.log(debugCompiledRuleToString(ruleScanner));\n }\n if (!matchResult) {\n continue;\n }\n var matchRating = matchResult.captureIndices[0].start;\n if (matchRating >= bestMatchRating) {\n // Injections are sorted by priority, so the previous injection had a better or equal priority\n continue;\n }\n bestMatchRating = matchRating;\n bestMatchCaptureIndices = matchResult.captureIndices;\n bestMatchRuleId = ruleScanner.rules[matchResult.index];\n bestMatchResultPriority = injection.priority;\n if (bestMatchRating === linePos) {\n // No more need to look at the rest of the injections.\n break;\n }\n }\n if (bestMatchCaptureIndices) {\n return {\n priorityMatch: bestMatchResultPriority === -1,\n captureIndices: bestMatchCaptureIndices,\n matchedRuleId: bestMatchRuleId\n };\n }\n return null;\n}\nfunction matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n var rule = stack.getRule(grammar);\n var ruleScanner = rule.compile(grammar, stack.endRule, isFirstLine, linePos === anchorPosition);\n var perfStart = 0;\n if (debug_1.DebugFlags.InDebugMode) {\n perfStart = performanceNow();\n }\n var r = ruleScanner.scanner.findNextMatchSync(lineText, linePos);\n if (debug_1.DebugFlags.InDebugMode) {\n var elapsedMillis = performanceNow() - perfStart;\n if (elapsedMillis > 5) {\n console.warn(\"Rule \" + rule.debugName + \" (\" + rule.id + \") matching took \" + elapsedMillis + \" against '\" + lineText + \"'\");\n }\n // console.log(` scanning for (linePos: ${linePos}, anchorPosition: ${anchorPosition})`);\n // console.log(debugCompiledRuleToString(ruleScanner));\n if (r) {\n console.log(\"matched rule id: \" + ruleScanner.rules[r.index] + \" from \" + r.captureIndices[0].start + \" to \" + r.captureIndices[0].end);\n }\n }\n if (r) {\n return {\n captureIndices: r.captureIndices,\n matchedRuleId: ruleScanner.rules[r.index]\n };\n }\n return null;\n}\nfunction matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition) {\n // Look for normal grammar rule\n var matchResult = matchRule(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n // Look for injected rules\n var injections = grammar.getInjections();\n if (injections.length === 0) {\n // No injections whatsoever => early return\n return matchResult;\n }\n var injectionResult = matchInjections(injections, grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!injectionResult) {\n // No injections matched => early return\n return matchResult;\n }\n if (!matchResult) {\n // Only injections matched => early return\n return injectionResult;\n }\n // Decide if `matchResult` or `injectionResult` should win\n var matchResultScore = matchResult.captureIndices[0].start;\n var injectionResultScore = injectionResult.captureIndices[0].start;\n if (injectionResultScore < matchResultScore || (injectionResult.priorityMatch && injectionResultScore === matchResultScore)) {\n // injection won!\n return injectionResult;\n }\n return matchResult;\n}\n/**\n * Walk the stack from bottom to top, and check each while condition in this order.\n * If any fails, cut off the entire stack above the failed while condition. While conditions\n * may also advance the linePosition.\n */\nfunction _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens) {\n var anchorPosition = (stack.beginRuleCapturedEOL ? 0 : -1);\n var whileRules = [];\n for (var node = stack; node; node = node.pop()) {\n var nodeRule = node.getRule(grammar);\n if (nodeRule instanceof rule_1.BeginWhileRule) {\n whileRules.push({\n rule: nodeRule,\n stack: node\n });\n }\n }\n for (var whileRule = whileRules.pop(); whileRule; whileRule = whileRules.pop()) {\n var ruleScanner = whileRule.rule.compileWhile(grammar, whileRule.stack.endRule, isFirstLine, anchorPosition === linePos);\n var r = ruleScanner.scanner.findNextMatchSync(lineText, linePos);\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' scanning for while rule');\n console.log(debugCompiledRuleToString(ruleScanner));\n }\n if (r) {\n var matchedRuleId = ruleScanner.rules[r.index];\n if (matchedRuleId !== -2) {\n // we shouldn't end up here\n stack = whileRule.stack.pop();\n break;\n }\n if (r.captureIndices && r.captureIndices.length) {\n lineTokens.produce(whileRule.stack, r.captureIndices[0].start);\n handleCaptures(grammar, lineText, isFirstLine, whileRule.stack, lineTokens, whileRule.rule.whileCaptures, r.captureIndices);\n lineTokens.produce(whileRule.stack, r.captureIndices[0].end);\n anchorPosition = r.captureIndices[0].end;\n if (r.captureIndices[0].end > linePos) {\n linePos = r.captureIndices[0].end;\n isFirstLine = false;\n }\n }\n }\n else {\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' popping ' + whileRule.rule.debugName + ' - ' + whileRule.rule.debugWhileRegExp);\n }\n stack = whileRule.stack.pop();\n break;\n }\n }\n return { stack: stack, linePos: linePos, anchorPosition: anchorPosition, isFirstLine: isFirstLine };\n}\nfunction _tokenizeString(grammar, lineText, isFirstLine, linePos, stack, lineTokens, checkWhileConditions) {\n var lineLength = lineText.content.length;\n var STOP = false;\n var anchorPosition = -1;\n if (checkWhileConditions) {\n var whileCheckResult = _checkWhileConditions(grammar, lineText, isFirstLine, linePos, stack, lineTokens);\n stack = whileCheckResult.stack;\n linePos = whileCheckResult.linePos;\n isFirstLine = whileCheckResult.isFirstLine;\n anchorPosition = whileCheckResult.anchorPosition;\n }\n while (!STOP) {\n scanNext(); // potentially modifies linePos && anchorPosition\n }\n function scanNext() {\n if (debug_1.DebugFlags.InDebugMode) {\n console.log('');\n console.log(\"@@scanNext \" + linePos + \": |\" + lineText.content.substr(linePos).replace(/\\n$/, '\\\\n') + \"|\");\n }\n var r = matchRuleOrInjections(grammar, lineText, isFirstLine, linePos, stack, anchorPosition);\n if (!r) {\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' no more matches.');\n }\n // No match\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n var captureIndices = r.captureIndices;\n var matchedRuleId = r.matchedRuleId;\n var hasAdvanced = (captureIndices && captureIndices.length > 0) ? (captureIndices[0].end > linePos) : false;\n if (matchedRuleId === -1) {\n // We matched the `end` for this rule => pop it\n var poppedRule = stack.getRule(grammar);\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' popping ' + poppedRule.debugName + ' - ' + poppedRule.debugEndRegExp);\n }\n lineTokens.produce(stack, captureIndices[0].start);\n stack = stack.setContentNameScopesList(stack.nameScopesList);\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, poppedRule.endCaptures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n // pop\n var popped = stack;\n stack = stack.pop();\n anchorPosition = popped.getAnchorPos();\n if (!hasAdvanced && popped.getEnterPos() === linePos) {\n // Grammar pushed & popped a rule without advancing\n if (debug_1.DebugFlags.InDebugMode) {\n console.error('[1] - Grammar is in an endless loop - Grammar pushed & popped a rule without advancing');\n }\n // See https://github.com/Microsoft/vscode-textmate/issues/12\n // Let's assume this was a mistake by the grammar author and the intent was to continue in this state\n stack = popped;\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n else {\n // We matched a rule!\n var _rule = grammar.getRule(matchedRuleId);\n lineTokens.produce(stack, captureIndices[0].start);\n var beforePush = stack;\n // push it on the stack rule\n var scopeName = _rule.getName(lineText.content, captureIndices);\n var nameScopesList = stack.contentNameScopesList.push(grammar, scopeName);\n stack = stack.push(matchedRuleId, linePos, anchorPosition, captureIndices[0].end === lineLength, null, nameScopesList, nameScopesList);\n if (_rule instanceof rule_1.BeginEndRule) {\n var pushedRule = _rule;\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' pushing ' + pushedRule.debugName + ' - ' + pushedRule.debugBeginRegExp);\n }\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, pushedRule.beginCaptures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n var contentName = pushedRule.getContentName(lineText.content, captureIndices);\n var contentNameScopesList = nameScopesList.push(grammar, contentName);\n stack = stack.setContentNameScopesList(contentNameScopesList);\n if (pushedRule.endHasBackReferences) {\n stack = stack.setEndRule(pushedRule.getEndWithResolvedBackReferences(lineText.content, captureIndices));\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n // Grammar pushed the same rule without advancing\n if (debug_1.DebugFlags.InDebugMode) {\n console.error('[2] - Grammar is in an endless loop - Grammar pushed the same rule without advancing');\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n else if (_rule instanceof rule_1.BeginWhileRule) {\n var pushedRule = _rule;\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' pushing ' + pushedRule.debugName);\n }\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, pushedRule.beginCaptures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n anchorPosition = captureIndices[0].end;\n var contentName = pushedRule.getContentName(lineText.content, captureIndices);\n var contentNameScopesList = nameScopesList.push(grammar, contentName);\n stack = stack.setContentNameScopesList(contentNameScopesList);\n if (pushedRule.whileHasBackReferences) {\n stack = stack.setEndRule(pushedRule.getWhileWithResolvedBackReferences(lineText.content, captureIndices));\n }\n if (!hasAdvanced && beforePush.hasSameRuleAs(stack)) {\n // Grammar pushed the same rule without advancing\n if (debug_1.DebugFlags.InDebugMode) {\n console.error('[3] - Grammar is in an endless loop - Grammar pushed the same rule without advancing');\n }\n stack = stack.pop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n else {\n var matchingRule = _rule;\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' matched ' + matchingRule.debugName + ' - ' + matchingRule.debugMatchRegExp);\n }\n handleCaptures(grammar, lineText, isFirstLine, stack, lineTokens, matchingRule.captures, captureIndices);\n lineTokens.produce(stack, captureIndices[0].end);\n // pop rule immediately since it is a MatchRule\n stack = stack.pop();\n if (!hasAdvanced) {\n // Grammar is not advancing, nor is it pushing/popping\n if (debug_1.DebugFlags.InDebugMode) {\n console.error('[4] - Grammar is in an endless loop - Grammar is not advancing, nor is it pushing/popping');\n }\n stack = stack.safePop();\n lineTokens.produce(stack, lineLength);\n STOP = true;\n return;\n }\n }\n }\n if (captureIndices[0].end > linePos) {\n // Advance stream\n linePos = captureIndices[0].end;\n isFirstLine = false;\n }\n }\n return stack;\n}\nvar StackElementMetadata = /** @class */ (function () {\n function StackElementMetadata() {\n }\n StackElementMetadata.toBinaryStr = function (metadata) {\n var r = metadata.toString(2);\n while (r.length < 32) {\n r = '0' + r;\n }\n return r;\n };\n StackElementMetadata.printMetadata = function (metadata) {\n var languageId = StackElementMetadata.getLanguageId(metadata);\n var tokenType = StackElementMetadata.getTokenType(metadata);\n var fontStyle = StackElementMetadata.getFontStyle(metadata);\n var foreground = StackElementMetadata.getForeground(metadata);\n var background = StackElementMetadata.getBackground(metadata);\n console.log({\n languageId: languageId,\n tokenType: tokenType,\n fontStyle: fontStyle,\n foreground: foreground,\n background: background,\n });\n };\n StackElementMetadata.getLanguageId = function (metadata) {\n return (metadata & 255 /* LANGUAGEID_MASK */) >>> 0 /* LANGUAGEID_OFFSET */;\n };\n StackElementMetadata.getTokenType = function (metadata) {\n return (metadata & 1792 /* TOKEN_TYPE_MASK */) >>> 8 /* TOKEN_TYPE_OFFSET */;\n };\n StackElementMetadata.getFontStyle = function (metadata) {\n return (metadata & 14336 /* FONT_STYLE_MASK */) >>> 11 /* FONT_STYLE_OFFSET */;\n };\n StackElementMetadata.getForeground = function (metadata) {\n return (metadata & 8372224 /* FOREGROUND_MASK */) >>> 14 /* FOREGROUND_OFFSET */;\n };\n StackElementMetadata.getBackground = function (metadata) {\n return (metadata & 4286578688 /* BACKGROUND_MASK */) >>> 23 /* BACKGROUND_OFFSET */;\n };\n StackElementMetadata.set = function (metadata, languageId, tokenType, fontStyle, foreground, background) {\n var _languageId = StackElementMetadata.getLanguageId(metadata);\n var _tokenType = StackElementMetadata.getTokenType(metadata);\n var _fontStyle = StackElementMetadata.getFontStyle(metadata);\n var _foreground = StackElementMetadata.getForeground(metadata);\n var _background = StackElementMetadata.getBackground(metadata);\n if (languageId !== 0) {\n _languageId = languageId;\n }\n if (tokenType !== 0 /* Other */) {\n _tokenType = tokenType === 8 /* MetaEmbedded */ ? 0 /* Other */ : tokenType;\n }\n if (fontStyle !== -1 /* NotSet */) {\n _fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n _foreground = foreground;\n }\n if (background !== 0) {\n _background = background;\n }\n return ((_languageId << 0 /* LANGUAGEID_OFFSET */)\n | (_tokenType << 8 /* TOKEN_TYPE_OFFSET */)\n | (_fontStyle << 11 /* FONT_STYLE_OFFSET */)\n | (_foreground << 14 /* FOREGROUND_OFFSET */)\n | (_background << 23 /* BACKGROUND_OFFSET */)) >>> 0;\n };\n return StackElementMetadata;\n}());\nexports.StackElementMetadata = StackElementMetadata;\nvar ScopeListElement = /** @class */ (function () {\n function ScopeListElement(parent, scope, metadata) {\n this.parent = parent;\n this.scope = scope;\n this.metadata = metadata;\n }\n ScopeListElement._equals = function (a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n // End of list reached for both\n return true;\n }\n if (!a || !b) {\n // End of list reached only for one\n return false;\n }\n if (a.scope !== b.scope || a.metadata !== b.metadata) {\n return false;\n }\n // Go to previous pair\n a = a.parent;\n b = b.parent;\n } while (true);\n };\n ScopeListElement.prototype.equals = function (other) {\n return ScopeListElement._equals(this, other);\n };\n ScopeListElement._matchesScope = function (scope, selector, selectorWithDot) {\n return (selector === scope || scope.substring(0, selectorWithDot.length) === selectorWithDot);\n };\n ScopeListElement._matches = function (target, parentScopes) {\n if (parentScopes === null) {\n return true;\n }\n var len = parentScopes.length;\n var index = 0;\n var selector = parentScopes[index];\n var selectorWithDot = selector + '.';\n while (target) {\n if (this._matchesScope(target.scope, selector, selectorWithDot)) {\n index++;\n if (index === len) {\n return true;\n }\n selector = parentScopes[index];\n selectorWithDot = selector + '.';\n }\n target = target.parent;\n }\n return false;\n };\n ScopeListElement.mergeMetadata = function (metadata, scopesList, source) {\n if (source === null) {\n return metadata;\n }\n var fontStyle = -1 /* NotSet */;\n var foreground = 0;\n var background = 0;\n if (source.themeData !== null) {\n // Find the first themeData that matches\n for (var i = 0, len = source.themeData.length; i < len; i++) {\n var themeData = source.themeData[i];\n if (this._matches(scopesList, themeData.parentScopes)) {\n fontStyle = themeData.fontStyle;\n foreground = themeData.foreground;\n background = themeData.background;\n break;\n }\n }\n }\n return StackElementMetadata.set(metadata, source.languageId, source.tokenType, fontStyle, foreground, background);\n };\n ScopeListElement._push = function (target, grammar, scopes) {\n for (var i = 0, len = scopes.length; i < len; i++) {\n var scope = scopes[i];\n var rawMetadata = grammar.getMetadataForScope(scope);\n var metadata = ScopeListElement.mergeMetadata(target.metadata, target, rawMetadata);\n target = new ScopeListElement(target, scope, metadata);\n }\n return target;\n };\n ScopeListElement.prototype.push = function (grammar, scope) {\n if (scope === null) {\n return this;\n }\n if (scope.indexOf(' ') >= 0) {\n // there are multiple scopes to push\n return ScopeListElement._push(this, grammar, scope.split(/ /g));\n }\n // there is a single scope to push\n return ScopeListElement._push(this, grammar, [scope]);\n };\n ScopeListElement._generateScopes = function (scopesList) {\n var result = [];\n var resultLen = 0;\n while (scopesList) {\n result[resultLen++] = scopesList.scope;\n scopesList = scopesList.parent;\n }\n result.reverse();\n return result;\n };\n ScopeListElement.prototype.generateScopes = function () {\n return ScopeListElement._generateScopes(this);\n };\n return ScopeListElement;\n}());\nexports.ScopeListElement = ScopeListElement;\n/**\n * Represents a \"pushed\" state on the stack (as a linked list element).\n */\nvar StackElement = /** @class */ (function () {\n function StackElement(parent, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n this.parent = parent;\n this.depth = (this.parent ? this.parent.depth + 1 : 1);\n this.ruleId = ruleId;\n this._enterPos = enterPos;\n this._anchorPos = anchorPos;\n this.beginRuleCapturedEOL = beginRuleCapturedEOL;\n this.endRule = endRule;\n this.nameScopesList = nameScopesList;\n this.contentNameScopesList = contentNameScopesList;\n }\n /**\n * A structural equals check. Does not take into account `scopes`.\n */\n StackElement._structuralEquals = function (a, b) {\n do {\n if (a === b) {\n return true;\n }\n if (!a && !b) {\n // End of list reached for both\n return true;\n }\n if (!a || !b) {\n // End of list reached only for one\n return false;\n }\n if (a.depth !== b.depth || a.ruleId !== b.ruleId || a.endRule !== b.endRule) {\n return false;\n }\n // Go to previous pair\n a = a.parent;\n b = b.parent;\n } while (true);\n };\n StackElement._equals = function (a, b) {\n if (a === b) {\n return true;\n }\n if (!this._structuralEquals(a, b)) {\n return false;\n }\n return a.contentNameScopesList.equals(b.contentNameScopesList);\n };\n StackElement.prototype.clone = function () {\n return this;\n };\n StackElement.prototype.equals = function (other) {\n if (other === null) {\n return false;\n }\n return StackElement._equals(this, other);\n };\n StackElement._reset = function (el) {\n while (el) {\n el._enterPos = -1;\n el._anchorPos = -1;\n el = el.parent;\n }\n };\n StackElement.prototype.reset = function () {\n StackElement._reset(this);\n };\n StackElement.prototype.pop = function () {\n return this.parent;\n };\n StackElement.prototype.safePop = function () {\n if (this.parent) {\n return this.parent;\n }\n return this;\n };\n StackElement.prototype.push = function (ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList) {\n return new StackElement(this, ruleId, enterPos, anchorPos, beginRuleCapturedEOL, endRule, nameScopesList, contentNameScopesList);\n };\n StackElement.prototype.getEnterPos = function () {\n return this._enterPos;\n };\n StackElement.prototype.getAnchorPos = function () {\n return this._anchorPos;\n };\n StackElement.prototype.getRule = function (grammar) {\n return grammar.getRule(this.ruleId);\n };\n StackElement.prototype._writeString = function (res, outIndex) {\n if (this.parent) {\n outIndex = this.parent._writeString(res, outIndex);\n }\n res[outIndex++] = \"(\" + this.ruleId + \", TODO-\" + this.nameScopesList + \", TODO-\" + this.contentNameScopesList + \")\";\n return outIndex;\n };\n StackElement.prototype.toString = function () {\n var r = [];\n this._writeString(r, 0);\n return '[' + r.join(',') + ']';\n };\n StackElement.prototype.setContentNameScopesList = function (contentNameScopesList) {\n if (this.contentNameScopesList === contentNameScopesList) {\n return this;\n }\n return this.parent.push(this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, this.endRule, this.nameScopesList, contentNameScopesList);\n };\n StackElement.prototype.setEndRule = function (endRule) {\n if (this.endRule === endRule) {\n return this;\n }\n return new StackElement(this.parent, this.ruleId, this._enterPos, this._anchorPos, this.beginRuleCapturedEOL, endRule, this.nameScopesList, this.contentNameScopesList);\n };\n StackElement.prototype.hasSameRuleAs = function (other) {\n return this.ruleId === other.ruleId;\n };\n StackElement.NULL = new StackElement(null, 0, 0, 0, false, null, null, null);\n return StackElement;\n}());\nexports.StackElement = StackElement;\nvar LocalStackElement = /** @class */ (function () {\n function LocalStackElement(scopes, endPos) {\n this.scopes = scopes;\n this.endPos = endPos;\n }\n return LocalStackElement;\n}());\nexports.LocalStackElement = LocalStackElement;\nvar LineTokens = /** @class */ (function () {\n function LineTokens(emitBinaryTokens, lineText, tokenTypeOverrides) {\n this._emitBinaryTokens = emitBinaryTokens;\n this._tokenTypeOverrides = tokenTypeOverrides;\n if (debug_1.DebugFlags.InDebugMode) {\n this._lineText = lineText;\n }\n else {\n this._lineText = null;\n }\n this._tokens = [];\n this._binaryTokens = [];\n this._lastTokenEndIndex = 0;\n }\n LineTokens.prototype.produce = function (stack, endIndex) {\n this.produceFromScopes(stack.contentNameScopesList, endIndex);\n };\n LineTokens.prototype.produceFromScopes = function (scopesList, endIndex) {\n if (this._lastTokenEndIndex >= endIndex) {\n return;\n }\n if (this._emitBinaryTokens) {\n var metadata = scopesList.metadata;\n for (var _i = 0, _a = this._tokenTypeOverrides; _i < _a.length; _i++) {\n var tokenType = _a[_i];\n if (tokenType.matcher(scopesList.generateScopes())) {\n metadata = StackElementMetadata.set(metadata, 0, toTemporaryType(tokenType.type), -1 /* NotSet */, 0, 0);\n }\n }\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 1] === metadata) {\n // no need to push a token with the same metadata\n this._lastTokenEndIndex = endIndex;\n return;\n }\n this._binaryTokens.push(this._lastTokenEndIndex);\n this._binaryTokens.push(metadata);\n this._lastTokenEndIndex = endIndex;\n return;\n }\n var scopes = scopesList.generateScopes();\n if (debug_1.DebugFlags.InDebugMode) {\n console.log(' token: |' + this._lineText.substring(this._lastTokenEndIndex, endIndex).replace(/\\n$/, '\\\\n') + '|');\n for (var k = 0; k < scopes.length; k++) {\n console.log(' * ' + scopes[k]);\n }\n }\n this._tokens.push({\n startIndex: this._lastTokenEndIndex,\n endIndex: endIndex,\n // value: lineText.substring(lastTokenEndIndex, endIndex),\n scopes: scopes\n });\n this._lastTokenEndIndex = endIndex;\n };\n LineTokens.prototype.getResult = function (stack, lineLength) {\n if (this._tokens.length > 0 && this._tokens[this._tokens.length - 1].startIndex === lineLength - 1) {\n // pop produced token for newline\n this._tokens.pop();\n }\n if (this._tokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._tokens[this._tokens.length - 1].startIndex = 0;\n }\n return this._tokens;\n };\n LineTokens.prototype.getBinaryResult = function (stack, lineLength) {\n if (this._binaryTokens.length > 0 && this._binaryTokens[this._binaryTokens.length - 2] === lineLength - 1) {\n // pop produced token for newline\n this._binaryTokens.pop();\n this._binaryTokens.pop();\n }\n if (this._binaryTokens.length === 0) {\n this._lastTokenEndIndex = -1;\n this.produce(stack, lineLength);\n this._binaryTokens[this._binaryTokens.length - 2] = 0;\n }\n var result = new Uint32Array(this._binaryTokens.length);\n for (var i = 0, len = this._binaryTokens.length; i < len; i++) {\n result[i] = this._binaryTokens[i];\n }\n return result;\n };\n return LineTokens;\n}());\nfunction toTemporaryType(standardType) {\n switch (standardType) {\n case 4 /* RegEx */:\n return 4 /* RegEx */;\n case 2 /* String */:\n return 2 /* String */;\n case 1 /* Comment */:\n return 1 /* Comment */;\n case 0 /* Other */:\n default:\n // `MetaEmbedded` is the same scope as `Other`\n // but it overwrites existing token types in the stack.\n return 8 /* MetaEmbedded */;\n }\n}\n//# sourceMappingURL=grammar.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction clone(something) {\n return doClone(something);\n}\nexports.clone = clone;\nfunction doClone(something) {\n if (Array.isArray(something)) {\n return cloneArray(something);\n }\n if (typeof something === 'object') {\n return cloneObj(something);\n }\n return something;\n}\nfunction cloneArray(arr) {\n var r = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n r[i] = doClone(arr[i]);\n }\n return r;\n}\nfunction cloneObj(obj) {\n var r = {};\n for (var key in obj) {\n r[key] = doClone(obj[key]);\n }\n return r;\n}\nfunction mergeObjects(target) {\n var sources = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n sources[_i - 1] = arguments[_i];\n }\n sources.forEach(function (source) {\n for (var key in source) {\n target[key] = source[key];\n }\n });\n return target;\n}\nexports.mergeObjects = mergeObjects;\nfunction basename(path) {\n var idx = ~path.lastIndexOf('/') || ~path.lastIndexOf('\\\\');\n if (idx === 0) {\n return path;\n }\n else if (~idx === path.length - 1) {\n return basename(path.substring(0, path.length - 1));\n }\n else {\n return path.substr(~idx + 1);\n }\n}\nexports.basename = basename;\nvar CAPTURING_REGEX_SOURCE = /\\$(\\d+)|\\${(\\d+):\\/(downcase|upcase)}/;\nvar RegexSource = /** @class */ (function () {\n function RegexSource() {\n }\n RegexSource.hasCaptures = function (regexSource) {\n if (regexSource === null) {\n return false;\n }\n return CAPTURING_REGEX_SOURCE.test(regexSource);\n };\n RegexSource.replaceCaptures = function (regexSource, captureSource, captureIndices) {\n return regexSource.replace(CAPTURING_REGEX_SOURCE, function (match, index, commandIndex, command) {\n var capture = captureIndices[parseInt(index || commandIndex, 10)];\n if (capture) {\n var result = captureSource.substring(capture.start, capture.end);\n // Remove leading dots that would make the selector invalid\n while (result[0] === '.') {\n result = result.substring(1);\n }\n switch (command) {\n case 'downcase':\n return result.toLowerCase();\n case 'upcase':\n return result.toUpperCase();\n default:\n return result;\n }\n }\n else {\n return match;\n }\n });\n };\n return RegexSource;\n}());\nexports.RegexSource = RegexSource;\n//# sourceMappingURL=utils.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DebugFlags = {\n InDebugMode: (typeof process !== 'undefined' && !!process.env['VSCODE_TEXTMATE_DEBUG'])\n};\n//# sourceMappingURL=debug.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar registry_1 = require(\"./registry\");\nvar grammarReader = require(\"./grammarReader\");\nvar theme_1 = require(\"./theme\");\nvar grammar_1 = require(\"./grammar\");\n/**\n * The registry that will hold all grammars.\n */\nvar Registry = /** @class */ (function () {\n function Registry(options) {\n this._options = options;\n this._syncRegistry = new registry_1.SyncRegistry(theme_1.Theme.createFromRawTheme(options.theme, options.colorMap), options.onigLib);\n this._ensureGrammarCache = new Map();\n }\n Registry.prototype.dispose = function () {\n this._syncRegistry.dispose();\n };\n /**\n * Change the theme. Once called, no previous `ruleStack` should be used anymore.\n */\n Registry.prototype.setTheme = function (theme, colorMap) {\n this._syncRegistry.setTheme(theme_1.Theme.createFromRawTheme(theme, colorMap));\n };\n /**\n * Returns a lookup array for color ids.\n */\n Registry.prototype.getColorMap = function () {\n return this._syncRegistry.getColorMap();\n };\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n Registry.prototype.loadGrammarWithEmbeddedLanguages = function (initialScopeName, initialLanguage, embeddedLanguages) {\n return this.loadGrammarWithConfiguration(initialScopeName, initialLanguage, { embeddedLanguages: embeddedLanguages });\n };\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n * Please do not use language id 0.\n */\n Registry.prototype.loadGrammarWithConfiguration = function (initialScopeName, initialLanguage, configuration) {\n return this._loadGrammar(initialScopeName, initialLanguage, configuration.embeddedLanguages, configuration.tokenTypes);\n };\n /**\n * Load the grammar for `scopeName` and all referenced included grammars asynchronously.\n */\n Registry.prototype.loadGrammar = function (initialScopeName) {\n return this._loadGrammar(initialScopeName, 0, null, null);\n };\n Registry.prototype._doLoadSingleGrammar = function (scopeName) {\n return __awaiter(this, void 0, void 0, function () {\n var grammar, injections;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._options.loadGrammar(scopeName)];\n case 1:\n grammar = _a.sent();\n if (grammar) {\n injections = (typeof this._options.getInjections === 'function' ? this._options.getInjections(scopeName) : undefined);\n this._syncRegistry.addGrammar(grammar, injections);\n }\n return [2 /*return*/];\n }\n });\n });\n };\n Registry.prototype._loadSingleGrammar = function (scopeName) {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n if (!this._ensureGrammarCache.has(scopeName)) {\n this._ensureGrammarCache.set(scopeName, this._doLoadSingleGrammar(scopeName));\n }\n return [2 /*return*/, this._ensureGrammarCache.get(scopeName)];\n });\n });\n };\n Registry.prototype._collectDependenciesForDep = function (initialScopeName, result, dep) {\n var grammar = this._syncRegistry.lookup(dep.scopeName);\n if (!grammar) {\n if (dep.scopeName === initialScopeName) {\n throw new Error(\"No grammar provided for <\" + initialScopeName + \">\");\n }\n return;\n }\n if (dep instanceof grammar_1.FullScopeDependency) {\n grammar_1.collectDependencies(result, this._syncRegistry.lookup(initialScopeName), grammar);\n }\n else {\n grammar_1.collectSpecificDependencies(result, this._syncRegistry.lookup(initialScopeName), grammar, dep.include);\n }\n var injections = this._syncRegistry.injections(dep.scopeName);\n if (injections) {\n for (var _i = 0, injections_1 = injections; _i < injections_1.length; _i++) {\n var injection = injections_1[_i];\n result.add(new grammar_1.FullScopeDependency(injection));\n }\n }\n };\n Registry.prototype._loadGrammar = function (initialScopeName, initialLanguage, embeddedLanguages, tokenTypes) {\n return __awaiter(this, void 0, void 0, function () {\n var seenFullScopeRequests, seenPartialScopeRequests, Q, q, deps, _i, q_1, dep, _a, _b, dep, _c, _d, dep;\n var _this = this;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n seenFullScopeRequests = new Set();\n seenPartialScopeRequests = new Set();\n seenFullScopeRequests.add(initialScopeName);\n Q = [new grammar_1.FullScopeDependency(initialScopeName)];\n _e.label = 1;\n case 1:\n if (!(Q.length > 0)) return [3 /*break*/, 3];\n q = Q;\n Q = [];\n return [4 /*yield*/, Promise.all(q.map(function (request) { return _this._loadSingleGrammar(request.scopeName); }))];\n case 2:\n _e.sent();\n deps = new grammar_1.ScopeDependencyCollector();\n for (_i = 0, q_1 = q; _i < q_1.length; _i++) {\n dep = q_1[_i];\n this._collectDependenciesForDep(initialScopeName, deps, dep);\n }\n for (_a = 0, _b = deps.full; _a < _b.length; _a++) {\n dep = _b[_a];\n if (seenFullScopeRequests.has(dep.scopeName)) {\n // already processed\n continue;\n }\n seenFullScopeRequests.add(dep.scopeName);\n Q.push(dep);\n }\n for (_c = 0, _d = deps.partial; _c < _d.length; _c++) {\n dep = _d[_c];\n if (seenFullScopeRequests.has(dep.scopeName)) {\n // already processed in full\n continue;\n }\n if (seenPartialScopeRequests.has(dep.toKey())) {\n // already processed\n continue;\n }\n seenPartialScopeRequests.add(dep.toKey());\n Q.push(dep);\n }\n return [3 /*break*/, 1];\n case 3: return [2 /*return*/, this.grammarForScopeName(initialScopeName, initialLanguage, embeddedLanguages, tokenTypes)];\n }\n });\n });\n };\n /**\n * Adds a rawGrammar.\n */\n Registry.prototype.addGrammar = function (rawGrammar, injections, initialLanguage, embeddedLanguages) {\n if (injections === void 0) { injections = []; }\n if (initialLanguage === void 0) { initialLanguage = 0; }\n if (embeddedLanguages === void 0) { embeddedLanguages = null; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._syncRegistry.addGrammar(rawGrammar, injections);\n return [4 /*yield*/, this.grammarForScopeName(rawGrammar.scopeName, initialLanguage, embeddedLanguages)];\n case 1: return [2 /*return*/, (_a.sent())];\n }\n });\n });\n };\n /**\n * Get the grammar for `scopeName`. The grammar must first be created via `loadGrammar` or `addGrammar`.\n */\n Registry.prototype.grammarForScopeName = function (scopeName, initialLanguage, embeddedLanguages, tokenTypes) {\n if (initialLanguage === void 0) { initialLanguage = 0; }\n if (embeddedLanguages === void 0) { embeddedLanguages = null; }\n if (tokenTypes === void 0) { tokenTypes = null; }\n return this._syncRegistry.grammarForScopeName(scopeName, initialLanguage, embeddedLanguages, tokenTypes);\n };\n return Registry;\n}());\nexports.Registry = Registry;\nexports.INITIAL = grammar_1.StackElement.NULL;\nexports.parseRawGrammar = grammarReader.parseRawGrammar;\n//# sourceMappingURL=main.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar grammar_1 = require(\"./grammar\");\nvar SyncRegistry = /** @class */ (function () {\n function SyncRegistry(theme, onigLibPromise) {\n this._theme = theme;\n this._grammars = {};\n this._rawGrammars = {};\n this._injectionGrammars = {};\n this._onigLibPromise = onigLibPromise;\n }\n SyncRegistry.prototype.dispose = function () {\n for (var scopeName in this._grammars) {\n if (this._grammars.hasOwnProperty(scopeName)) {\n this._grammars[scopeName].dispose();\n }\n }\n };\n SyncRegistry.prototype.setTheme = function (theme) {\n var _this = this;\n this._theme = theme;\n Object.keys(this._grammars).forEach(function (scopeName) {\n var grammar = _this._grammars[scopeName];\n grammar.onDidChangeTheme();\n });\n };\n SyncRegistry.prototype.getColorMap = function () {\n return this._theme.getColorMap();\n };\n /**\n * Add `grammar` to registry and return a list of referenced scope names\n */\n SyncRegistry.prototype.addGrammar = function (grammar, injectionScopeNames) {\n this._rawGrammars[grammar.scopeName] = grammar;\n if (injectionScopeNames) {\n this._injectionGrammars[grammar.scopeName] = injectionScopeNames;\n }\n };\n /**\n * Lookup a raw grammar.\n */\n SyncRegistry.prototype.lookup = function (scopeName) {\n return this._rawGrammars[scopeName];\n };\n /**\n * Returns the injections for the given grammar\n */\n SyncRegistry.prototype.injections = function (targetScope) {\n return this._injectionGrammars[targetScope];\n };\n /**\n * Get the default theme settings\n */\n SyncRegistry.prototype.getDefaults = function () {\n return this._theme.getDefaults();\n };\n /**\n * Match a scope in the theme.\n */\n SyncRegistry.prototype.themeMatch = function (scopeName) {\n return this._theme.match(scopeName);\n };\n /**\n * Lookup a grammar.\n */\n SyncRegistry.prototype.grammarForScopeName = function (scopeName, initialLanguage, embeddedLanguages, tokenTypes) {\n return __awaiter(this, void 0, void 0, function () {\n var rawGrammar, _a, _b, _c, _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (!!this._grammars[scopeName]) return [3 /*break*/, 2];\n rawGrammar = this._rawGrammars[scopeName];\n if (!rawGrammar) {\n return [2 /*return*/, null];\n }\n _a = this._grammars;\n _b = scopeName;\n _c = grammar_1.createGrammar;\n _d = [rawGrammar, initialLanguage, embeddedLanguages, tokenTypes, this];\n return [4 /*yield*/, this._onigLibPromise];\n case 1:\n _a[_b] = _c.apply(void 0, _d.concat([_e.sent()]));\n _e.label = 2;\n case 2: return [2 /*return*/, this._grammars[scopeName]];\n }\n });\n });\n };\n return SyncRegistry;\n}());\nexports.SyncRegistry = SyncRegistry;\n//# sourceMappingURL=registry.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar utils_1 = require(\"./utils\");\nvar HAS_BACK_REFERENCES = /\\\\(\\d+)/;\nvar BACK_REFERENCING_END = /\\\\(\\d+)/g;\nvar CompiledRule = /** @class */ (function () {\n function CompiledRule(onigLib, regExps, rules) {\n this.debugRegExps = regExps;\n this.rules = rules;\n this.scanner = onigLib.createOnigScanner(regExps);\n }\n CompiledRule.prototype.dispose = function () {\n if (typeof this.scanner.dispose === 'function') {\n this.scanner.dispose();\n }\n };\n return CompiledRule;\n}());\nexports.CompiledRule = CompiledRule;\nvar Rule = /** @class */ (function () {\n function Rule($location, id, name, contentName) {\n this.$location = $location;\n this.id = id;\n this._name = name || null;\n this._nameIsCapturing = utils_1.RegexSource.hasCaptures(this._name);\n this._contentName = contentName || null;\n this._contentNameIsCapturing = utils_1.RegexSource.hasCaptures(this._contentName);\n }\n Object.defineProperty(Rule.prototype, \"debugName\", {\n get: function () {\n var location = this.$location ? utils_1.basename(this.$location.filename) + \":\" + this.$location.line : 'unknown';\n return this.constructor.name + \"#\" + this.id + \" @ \" + location;\n },\n enumerable: true,\n configurable: true\n });\n Rule.prototype.getName = function (lineText, captureIndices) {\n if (!this._nameIsCapturing || this._name === null || lineText === null || captureIndices === null) {\n return this._name;\n }\n return utils_1.RegexSource.replaceCaptures(this._name, lineText, captureIndices);\n };\n Rule.prototype.getContentName = function (lineText, captureIndices) {\n if (!this._contentNameIsCapturing || this._contentName === null) {\n return this._contentName;\n }\n return utils_1.RegexSource.replaceCaptures(this._contentName, lineText, captureIndices);\n };\n return Rule;\n}());\nexports.Rule = Rule;\nvar CaptureRule = /** @class */ (function (_super) {\n __extends(CaptureRule, _super);\n function CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId) {\n var _this = _super.call(this, $location, id, name, contentName) || this;\n _this.retokenizeCapturedWithRuleId = retokenizeCapturedWithRuleId;\n return _this;\n }\n CaptureRule.prototype.dispose = function () {\n // nothing to dispose\n };\n CaptureRule.prototype.collectPatternsRecursive = function (grammar, out, isFirst) {\n throw new Error('Not supported!');\n };\n CaptureRule.prototype.compile = function (grammar, endRegexSource, allowA, allowG) {\n throw new Error('Not supported!');\n };\n return CaptureRule;\n}(Rule));\nexports.CaptureRule = CaptureRule;\nvar RegExpSource = /** @class */ (function () {\n function RegExpSource(regExpSource, ruleId, handleAnchors) {\n if (handleAnchors === void 0) { handleAnchors = true; }\n if (handleAnchors) {\n if (regExpSource) {\n var len = regExpSource.length;\n var lastPushedPos = 0;\n var output = [];\n var hasAnchor = false;\n for (var pos = 0; pos < len; pos++) {\n var ch = regExpSource.charAt(pos);\n if (ch === '\\\\') {\n if (pos + 1 < len) {\n var nextCh = regExpSource.charAt(pos + 1);\n if (nextCh === 'z') {\n output.push(regExpSource.substring(lastPushedPos, pos));\n output.push('$(?!\\\\n)(?<!\\\\n)');\n lastPushedPos = pos + 2;\n }\n else if (nextCh === 'A' || nextCh === 'G') {\n hasAnchor = true;\n }\n pos++;\n }\n }\n }\n this.hasAnchor = hasAnchor;\n if (lastPushedPos === 0) {\n // No \\z hit\n this.source = regExpSource;\n }\n else {\n output.push(regExpSource.substring(lastPushedPos, len));\n this.source = output.join('');\n }\n }\n else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n }\n else {\n this.hasAnchor = false;\n this.source = regExpSource;\n }\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n else {\n this._anchorCache = null;\n }\n this.ruleId = ruleId;\n this.hasBackReferences = HAS_BACK_REFERENCES.test(this.source);\n // console.log('input: ' + regExpSource + ' => ' + this.source + ', ' + this.hasAnchor);\n }\n RegExpSource.prototype.clone = function () {\n return new RegExpSource(this.source, this.ruleId, true);\n };\n RegExpSource.prototype.setSource = function (newSource) {\n if (this.source === newSource) {\n return;\n }\n this.source = newSource;\n if (this.hasAnchor) {\n this._anchorCache = this._buildAnchorCache();\n }\n };\n RegExpSource.prototype.resolveBackReferences = function (lineText, captureIndices) {\n var capturedValues = captureIndices.map(function (capture) {\n return lineText.substring(capture.start, capture.end);\n });\n BACK_REFERENCING_END.lastIndex = 0;\n return this.source.replace(BACK_REFERENCING_END, function (match, g1) {\n return escapeRegExpCharacters(capturedValues[parseInt(g1, 10)] || '');\n });\n };\n RegExpSource.prototype._buildAnchorCache = function () {\n var A0_G0_result = [];\n var A0_G1_result = [];\n var A1_G0_result = [];\n var A1_G1_result = [];\n var pos, len, ch, nextCh;\n for (pos = 0, len = this.source.length; pos < len; pos++) {\n ch = this.source.charAt(pos);\n A0_G0_result[pos] = ch;\n A0_G1_result[pos] = ch;\n A1_G0_result[pos] = ch;\n A1_G1_result[pos] = ch;\n if (ch === '\\\\') {\n if (pos + 1 < len) {\n nextCh = this.source.charAt(pos + 1);\n if (nextCh === 'A') {\n A0_G0_result[pos + 1] = '\\uFFFF';\n A0_G1_result[pos + 1] = '\\uFFFF';\n A1_G0_result[pos + 1] = 'A';\n A1_G1_result[pos + 1] = 'A';\n }\n else if (nextCh === 'G') {\n A0_G0_result[pos + 1] = '\\uFFFF';\n A0_G1_result[pos + 1] = 'G';\n A1_G0_result[pos + 1] = '\\uFFFF';\n A1_G1_result[pos + 1] = 'G';\n }\n else {\n A0_G0_result[pos + 1] = nextCh;\n A0_G1_result[pos + 1] = nextCh;\n A1_G0_result[pos + 1] = nextCh;\n A1_G1_result[pos + 1] = nextCh;\n }\n pos++;\n }\n }\n }\n return {\n A0_G0: A0_G0_result.join(''),\n A0_G1: A0_G1_result.join(''),\n A1_G0: A1_G0_result.join(''),\n A1_G1: A1_G1_result.join('')\n };\n };\n RegExpSource.prototype.resolveAnchors = function (allowA, allowG) {\n if (!this.hasAnchor || !this._anchorCache) {\n return this.source;\n }\n if (allowA) {\n if (allowG) {\n return this._anchorCache.A1_G1;\n }\n else {\n return this._anchorCache.A1_G0;\n }\n }\n else {\n if (allowG) {\n return this._anchorCache.A0_G1;\n }\n else {\n return this._anchorCache.A0_G0;\n }\n }\n };\n return RegExpSource;\n}());\nexports.RegExpSource = RegExpSource;\nvar RegExpSourceList = /** @class */ (function () {\n function RegExpSourceList() {\n this._items = [];\n this._hasAnchors = false;\n this._cached = null;\n this._anchorCache = {\n A0_G0: null,\n A0_G1: null,\n A1_G0: null,\n A1_G1: null\n };\n }\n RegExpSourceList.prototype.dispose = function () {\n this._disposeCaches();\n };\n RegExpSourceList.prototype._disposeCaches = function () {\n if (this._cached) {\n this._cached.dispose();\n this._cached = null;\n }\n if (this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0.dispose();\n this._anchorCache.A0_G0 = null;\n }\n if (this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1.dispose();\n this._anchorCache.A0_G1 = null;\n }\n if (this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0.dispose();\n this._anchorCache.A1_G0 = null;\n }\n if (this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1.dispose();\n this._anchorCache.A1_G1 = null;\n }\n };\n RegExpSourceList.prototype.push = function (item) {\n this._items.push(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n };\n RegExpSourceList.prototype.unshift = function (item) {\n this._items.unshift(item);\n this._hasAnchors = this._hasAnchors || item.hasAnchor;\n };\n RegExpSourceList.prototype.length = function () {\n return this._items.length;\n };\n RegExpSourceList.prototype.setSource = function (index, newSource) {\n if (this._items[index].source !== newSource) {\n // bust the cache\n this._disposeCaches();\n this._items[index].setSource(newSource);\n }\n };\n RegExpSourceList.prototype.compile = function (onigLib, allowA, allowG) {\n if (!this._hasAnchors) {\n if (!this._cached) {\n var regExps = this._items.map(function (e) { return e.source; });\n this._cached = new CompiledRule(onigLib, regExps, this._items.map(function (e) { return e.ruleId; }));\n }\n return this._cached;\n }\n else {\n if (allowA) {\n if (allowG) {\n if (!this._anchorCache.A1_G1) {\n this._anchorCache.A1_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G1;\n }\n else {\n if (!this._anchorCache.A1_G0) {\n this._anchorCache.A1_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A1_G0;\n }\n }\n else {\n if (allowG) {\n if (!this._anchorCache.A0_G1) {\n this._anchorCache.A0_G1 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G1;\n }\n else {\n if (!this._anchorCache.A0_G0) {\n this._anchorCache.A0_G0 = this._resolveAnchors(onigLib, allowA, allowG);\n }\n return this._anchorCache.A0_G0;\n }\n }\n }\n };\n RegExpSourceList.prototype._resolveAnchors = function (onigLib, allowA, allowG) {\n var regExps = this._items.map(function (e) { return e.resolveAnchors(allowA, allowG); });\n return new CompiledRule(onigLib, regExps, this._items.map(function (e) { return e.ruleId; }));\n };\n return RegExpSourceList;\n}());\nexports.RegExpSourceList = RegExpSourceList;\nvar MatchRule = /** @class */ (function (_super) {\n __extends(MatchRule, _super);\n function MatchRule($location, id, name, match, captures) {\n var _this = _super.call(this, $location, id, name, null) || this;\n _this._match = new RegExpSource(match, _this.id);\n _this.captures = captures;\n _this._cachedCompiledPatterns = null;\n return _this;\n }\n MatchRule.prototype.dispose = function () {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n };\n Object.defineProperty(MatchRule.prototype, \"debugMatchRegExp\", {\n get: function () {\n return \"\" + this._match.source;\n },\n enumerable: true,\n configurable: true\n });\n MatchRule.prototype.collectPatternsRecursive = function (grammar, out, isFirst) {\n out.push(this._match);\n };\n MatchRule.prototype.compile = function (grammar, endRegexSource, allowA, allowG) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n }\n return this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n };\n return MatchRule;\n}(Rule));\nexports.MatchRule = MatchRule;\nvar IncludeOnlyRule = /** @class */ (function (_super) {\n __extends(IncludeOnlyRule, _super);\n function IncludeOnlyRule($location, id, name, contentName, patterns) {\n var _this = _super.call(this, $location, id, name, contentName) || this;\n _this.patterns = patterns.patterns;\n _this.hasMissingPatterns = patterns.hasMissingPatterns;\n _this._cachedCompiledPatterns = null;\n return _this;\n }\n IncludeOnlyRule.prototype.dispose = function () {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n };\n IncludeOnlyRule.prototype.collectPatternsRecursive = function (grammar, out, isFirst) {\n var i, len, rule;\n for (i = 0, len = this.patterns.length; i < len; i++) {\n rule = grammar.getRule(this.patterns[i]);\n rule.collectPatternsRecursive(grammar, out, false);\n }\n };\n IncludeOnlyRule.prototype.compile = function (grammar, endRegexSource, allowA, allowG) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n }\n return this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n };\n return IncludeOnlyRule;\n}(Rule));\nexports.IncludeOnlyRule = IncludeOnlyRule;\nfunction escapeRegExpCharacters(value) {\n return value.replace(/[\\-\\\\\\{\\}\\*\\+\\?\\|\\^\\$\\.\\,\\[\\]\\(\\)\\#\\s]/g, '\\\\$&');\n}\nvar BeginEndRule = /** @class */ (function (_super) {\n __extends(BeginEndRule, _super);\n function BeginEndRule($location, id, name, contentName, begin, beginCaptures, end, endCaptures, applyEndPatternLast, patterns) {\n var _this = _super.call(this, $location, id, name, contentName) || this;\n _this._begin = new RegExpSource(begin, _this.id);\n _this.beginCaptures = beginCaptures;\n _this._end = new RegExpSource(end ? end : '\\uFFFF', -1);\n _this.endHasBackReferences = _this._end.hasBackReferences;\n _this.endCaptures = endCaptures;\n _this.applyEndPatternLast = applyEndPatternLast || false;\n _this.patterns = patterns.patterns;\n _this.hasMissingPatterns = patterns.hasMissingPatterns;\n _this._cachedCompiledPatterns = null;\n return _this;\n }\n BeginEndRule.prototype.dispose = function () {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n };\n Object.defineProperty(BeginEndRule.prototype, \"debugBeginRegExp\", {\n get: function () {\n return \"\" + this._begin.source;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginEndRule.prototype, \"debugEndRegExp\", {\n get: function () {\n return \"\" + this._end.source;\n },\n enumerable: true,\n configurable: true\n });\n BeginEndRule.prototype.getEndWithResolvedBackReferences = function (lineText, captureIndices) {\n return this._end.resolveBackReferences(lineText, captureIndices);\n };\n BeginEndRule.prototype.collectPatternsRecursive = function (grammar, out, isFirst) {\n if (isFirst) {\n var i = void 0, len = void 0, rule = void 0;\n for (i = 0, len = this.patterns.length; i < len; i++) {\n rule = grammar.getRule(this.patterns[i]);\n rule.collectPatternsRecursive(grammar, out, false);\n }\n }\n else {\n out.push(this._begin);\n }\n };\n BeginEndRule.prototype.compile = function (grammar, endRegexSource, allowA, allowG) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.push(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n else {\n this._cachedCompiledPatterns.unshift(this._end.hasBackReferences ? this._end.clone() : this._end);\n }\n }\n if (this._end.hasBackReferences) {\n if (this.applyEndPatternLast) {\n this._cachedCompiledPatterns.setSource(this._cachedCompiledPatterns.length() - 1, endRegexSource);\n }\n else {\n this._cachedCompiledPatterns.setSource(0, endRegexSource);\n }\n }\n return this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n };\n return BeginEndRule;\n}(Rule));\nexports.BeginEndRule = BeginEndRule;\nvar BeginWhileRule = /** @class */ (function (_super) {\n __extends(BeginWhileRule, _super);\n function BeginWhileRule($location, id, name, contentName, begin, beginCaptures, _while, whileCaptures, patterns) {\n var _this = _super.call(this, $location, id, name, contentName) || this;\n _this._begin = new RegExpSource(begin, _this.id);\n _this.beginCaptures = beginCaptures;\n _this.whileCaptures = whileCaptures;\n _this._while = new RegExpSource(_while, -2);\n _this.whileHasBackReferences = _this._while.hasBackReferences;\n _this.patterns = patterns.patterns;\n _this.hasMissingPatterns = patterns.hasMissingPatterns;\n _this._cachedCompiledPatterns = null;\n _this._cachedCompiledWhilePatterns = null;\n return _this;\n }\n BeginWhileRule.prototype.dispose = function () {\n if (this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns.dispose();\n this._cachedCompiledPatterns = null;\n }\n if (this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns.dispose();\n this._cachedCompiledWhilePatterns = null;\n }\n };\n Object.defineProperty(BeginWhileRule.prototype, \"debugBeginRegExp\", {\n get: function () {\n return \"\" + this._begin.source;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginWhileRule.prototype, \"debugWhileRegExp\", {\n get: function () {\n return \"\" + this._while.source;\n },\n enumerable: true,\n configurable: true\n });\n BeginWhileRule.prototype.getWhileWithResolvedBackReferences = function (lineText, captureIndices) {\n return this._while.resolveBackReferences(lineText, captureIndices);\n };\n BeginWhileRule.prototype.collectPatternsRecursive = function (grammar, out, isFirst) {\n if (isFirst) {\n var i = void 0, len = void 0, rule = void 0;\n for (i = 0, len = this.patterns.length; i < len; i++) {\n rule = grammar.getRule(this.patterns[i]);\n rule.collectPatternsRecursive(grammar, out, false);\n }\n }\n else {\n out.push(this._begin);\n }\n };\n BeginWhileRule.prototype.compile = function (grammar, endRegexSource, allowA, allowG) {\n if (!this._cachedCompiledPatterns) {\n this._cachedCompiledPatterns = new RegExpSourceList();\n this.collectPatternsRecursive(grammar, this._cachedCompiledPatterns, true);\n }\n return this._cachedCompiledPatterns.compile(grammar, allowA, allowG);\n };\n BeginWhileRule.prototype.compileWhile = function (grammar, endRegexSource, allowA, allowG) {\n if (!this._cachedCompiledWhilePatterns) {\n this._cachedCompiledWhilePatterns = new RegExpSourceList();\n this._cachedCompiledWhilePatterns.push(this._while.hasBackReferences ? this._while.clone() : this._while);\n }\n if (this._while.hasBackReferences) {\n this._cachedCompiledWhilePatterns.setSource(0, endRegexSource ? endRegexSource : '\\uFFFF');\n }\n return this._cachedCompiledWhilePatterns.compile(grammar, allowA, allowG);\n };\n return BeginWhileRule;\n}(Rule));\nexports.BeginWhileRule = BeginWhileRule;\nvar RuleFactory = /** @class */ (function () {\n function RuleFactory() {\n }\n RuleFactory.createCaptureRule = function (helper, $location, name, contentName, retokenizeCapturedWithRuleId) {\n return helper.registerRule(function (id) {\n return new CaptureRule($location, id, name, contentName, retokenizeCapturedWithRuleId);\n });\n };\n RuleFactory.getCompiledRuleId = function (desc, helper, repository) {\n if (!desc.id) {\n helper.registerRule(function (id) {\n desc.id = id;\n if (desc.match) {\n return new MatchRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.match, RuleFactory._compileCaptures(desc.captures, helper, repository));\n }\n if (typeof desc.begin === 'undefined') {\n if (desc.repository) {\n repository = utils_1.mergeObjects({}, repository, desc.repository);\n }\n var patterns = desc.patterns;\n if (typeof patterns === 'undefined' && desc.include) {\n patterns = [{ include: desc.include }];\n }\n return new IncludeOnlyRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.contentName, RuleFactory._compilePatterns(patterns, helper, repository));\n }\n if (desc.while) {\n return new BeginWhileRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.contentName, desc.begin, RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository), desc.while, RuleFactory._compileCaptures(desc.whileCaptures || desc.captures, helper, repository), RuleFactory._compilePatterns(desc.patterns, helper, repository));\n }\n return new BeginEndRule(desc.$vscodeTextmateLocation, desc.id, desc.name, desc.contentName, desc.begin, RuleFactory._compileCaptures(desc.beginCaptures || desc.captures, helper, repository), desc.end, RuleFactory._compileCaptures(desc.endCaptures || desc.captures, helper, repository), desc.applyEndPatternLast, RuleFactory._compilePatterns(desc.patterns, helper, repository));\n });\n }\n return desc.id;\n };\n RuleFactory._compileCaptures = function (captures, helper, repository) {\n var r = [];\n if (captures) {\n // Find the maximum capture id\n var maximumCaptureId = 0;\n for (var captureId in captures) {\n if (captureId === '$vscodeTextmateLocation') {\n continue;\n }\n var numericCaptureId = parseInt(captureId, 10);\n if (numericCaptureId > maximumCaptureId) {\n maximumCaptureId = numericCaptureId;\n }\n }\n // Initialize result\n for (var i = 0; i <= maximumCaptureId; i++) {\n r[i] = null;\n }\n // Fill out result\n for (var captureId in captures) {\n if (captureId === '$vscodeTextmateLocation') {\n continue;\n }\n var numericCaptureId = parseInt(captureId, 10);\n var retokenizeCapturedWithRuleId = 0;\n if (captures[captureId].patterns) {\n retokenizeCapturedWithRuleId = RuleFactory.getCompiledRuleId(captures[captureId], helper, repository);\n }\n r[numericCaptureId] = RuleFactory.createCaptureRule(helper, captures[captureId].$vscodeTextmateLocation, captures[captureId].name, captures[captureId].contentName, retokenizeCapturedWithRuleId);\n }\n }\n return r;\n };\n RuleFactory._compilePatterns = function (patterns, helper, repository) {\n var r = [];\n if (patterns) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n var pattern = patterns[i];\n var patternId = -1;\n if (pattern.include) {\n if (pattern.include.charAt(0) === '#') {\n // Local include found in `repository`\n var localIncludedRule = repository[pattern.include.substr(1)];\n if (localIncludedRule) {\n patternId = RuleFactory.getCompiledRuleId(localIncludedRule, helper, repository);\n }\n else {\n // console.warn('CANNOT find rule for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n }\n }\n else if (pattern.include === '$base' || pattern.include === '$self') {\n // Special include also found in `repository`\n patternId = RuleFactory.getCompiledRuleId(repository[pattern.include], helper, repository);\n }\n else {\n var externalGrammarName = null;\n var externalGrammarInclude = null;\n var sharpIndex = pattern.include.indexOf('#');\n if (sharpIndex >= 0) {\n externalGrammarName = pattern.include.substring(0, sharpIndex);\n externalGrammarInclude = pattern.include.substring(sharpIndex + 1);\n }\n else {\n externalGrammarName = pattern.include;\n }\n // External include\n var externalGrammar = helper.getExternalGrammar(externalGrammarName, repository);\n if (externalGrammar) {\n if (externalGrammarInclude) {\n var externalIncludedRule = externalGrammar.repository[externalGrammarInclude];\n if (externalIncludedRule) {\n patternId = RuleFactory.getCompiledRuleId(externalIncludedRule, helper, externalGrammar.repository);\n }\n else {\n // console.warn('CANNOT find rule for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n }\n }\n else {\n patternId = RuleFactory.getCompiledRuleId(externalGrammar.repository.$self, helper, externalGrammar.repository);\n }\n }\n else {\n // console.warn('CANNOT find grammar for scopeName: ' + pattern.include + ', I am: ', repository['$base'].name);\n }\n }\n }\n else {\n patternId = RuleFactory.getCompiledRuleId(pattern, helper, repository);\n }\n if (patternId !== -1) {\n var rule = helper.getRule(patternId);\n var skipRule = false;\n if (rule instanceof IncludeOnlyRule || rule instanceof BeginEndRule || rule instanceof BeginWhileRule) {\n if (rule.hasMissingPatterns && rule.patterns.length === 0) {\n skipRule = true;\n }\n }\n if (skipRule) {\n // console.log('REMOVING RULE ENTIRELY DUE TO EMPTY PATTERNS THAT ARE MISSING');\n continue;\n }\n r.push(patternId);\n }\n }\n }\n return {\n patterns: r,\n hasMissingPatterns: ((patterns ? patterns.length : 0) !== r.length)\n };\n };\n return RuleFactory;\n}());\nexports.RuleFactory = RuleFactory;\n//# sourceMappingURL=rule.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction createMatchers(selector, matchesName) {\n var results = [];\n var tokenizer = newTokenizer(selector);\n var token = tokenizer.next();\n while (token !== null) {\n var priority = 0;\n if (token.length === 2 && token.charAt(1) === ':') {\n switch (token.charAt(0)) {\n case 'R':\n priority = 1;\n break;\n case 'L':\n priority = -1;\n break;\n default:\n console.log(\"Unknown priority \" + token + \" in scope selector\");\n }\n token = tokenizer.next();\n }\n var matcher = parseConjunction();\n results.push({ matcher: matcher, priority: priority });\n if (token !== ',') {\n break;\n }\n token = tokenizer.next();\n }\n return results;\n function parseOperand() {\n if (token === '-') {\n token = tokenizer.next();\n var expressionToNegate_1 = parseOperand();\n return function (matcherInput) { return !!expressionToNegate_1 && !expressionToNegate_1(matcherInput); };\n }\n if (token === '(') {\n token = tokenizer.next();\n var expressionInParents = parseInnerExpression();\n if (token === ')') {\n token = tokenizer.next();\n }\n return expressionInParents;\n }\n if (isIdentifier(token)) {\n var identifiers_1 = [];\n do {\n identifiers_1.push(token);\n token = tokenizer.next();\n } while (isIdentifier(token));\n return function (matcherInput) { return matchesName(identifiers_1, matcherInput); };\n }\n return null;\n }\n function parseConjunction() {\n var matchers = [];\n var matcher = parseOperand();\n while (matcher) {\n matchers.push(matcher);\n matcher = parseOperand();\n }\n return function (matcherInput) { return matchers.every(function (matcher) { return matcher(matcherInput); }); }; // and\n }\n function parseInnerExpression() {\n var matchers = [];\n var matcher = parseConjunction();\n while (matcher) {\n matchers.push(matcher);\n if (token === '|' || token === ',') {\n do {\n token = tokenizer.next();\n } while (token === '|' || token === ','); // ignore subsequent commas\n }\n else {\n break;\n }\n matcher = parseConjunction();\n }\n return function (matcherInput) { return matchers.some(function (matcher) { return matcher(matcherInput); }); }; // or\n }\n}\nexports.createMatchers = createMatchers;\nfunction isIdentifier(token) {\n return !!token && !!token.match(/[\\w\\.:]+/);\n}\nfunction newTokenizer(input) {\n var regex = /([LR]:|[\\w\\.:][\\w\\.:\\-]*|[\\,\\|\\-\\(\\)])/g;\n var match = regex.exec(input);\n return {\n next: function () {\n if (!match) {\n return null;\n }\n var res = match[0];\n match = regex.exec(input);\n return res;\n }\n };\n}\n//# sourceMappingURL=matcher.js.map","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar plist = require(\"./plist\");\nvar debug_1 = require(\"./debug\");\nvar json_1 = require(\"./json\");\nfunction parseRawGrammar(content, filePath) {\n if (filePath === void 0) { filePath = null; }\n if (filePath !== null && /\\.json$/.test(filePath)) {\n return parseJSONGrammar(content, filePath);\n }\n return parsePLISTGrammar(content, filePath);\n}\nexports.parseRawGrammar = parseRawGrammar;\nfunction parseJSONGrammar(contents, filename) {\n if (debug_1.DebugFlags.InDebugMode) {\n return json_1.parse(contents, filename, true);\n }\n return JSON.parse(contents);\n}\nfunction parsePLISTGrammar(contents, filename) {\n if (debug_1.DebugFlags.InDebugMode) {\n return plist.parseWithLocation(contents, filename, '$vscodeTextmateLocation');\n }\n return plist.parse(contents);\n}\n//# sourceMappingURL=grammarReader.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction parseWithLocation(content, filename, locationKeyName) {\n return _parse(content, filename, locationKeyName);\n}\nexports.parseWithLocation = parseWithLocation;\n/**\n * A very fast plist parser\n */\nfunction parse(content) {\n return _parse(content, null, null);\n}\nexports.parse = parse;\nfunction _parse(content, filename, locationKeyName) {\n var len = content.length;\n var pos = 0;\n var line = 1;\n var char = 0;\n // Skip UTF8 BOM\n if (len > 0 && content.charCodeAt(0) === 65279 /* BOM */) {\n pos = 1;\n }\n function advancePosBy(by) {\n if (locationKeyName === null) {\n pos = pos + by;\n }\n else {\n while (by > 0) {\n var chCode = content.charCodeAt(pos);\n if (chCode === 10 /* LINE_FEED */) {\n pos++;\n line++;\n char = 0;\n }\n else {\n pos++;\n char++;\n }\n by--;\n }\n }\n }\n function advancePosTo(to) {\n if (locationKeyName === null) {\n pos = to;\n }\n else {\n advancePosBy(to - pos);\n }\n }\n function skipWhitespace() {\n while (pos < len) {\n var chCode = content.charCodeAt(pos);\n if (chCode !== 32 /* SPACE */ && chCode !== 9 /* TAB */ && chCode !== 13 /* CARRIAGE_RETURN */ && chCode !== 10 /* LINE_FEED */) {\n break;\n }\n advancePosBy(1);\n }\n }\n function advanceIfStartsWith(str) {\n if (content.substr(pos, str.length) === str) {\n advancePosBy(str.length);\n return true;\n }\n return false;\n }\n function advanceUntil(str) {\n var nextOccurence = content.indexOf(str, pos);\n if (nextOccurence !== -1) {\n advancePosTo(nextOccurence + str.length);\n }\n else {\n // EOF\n advancePosTo(len);\n }\n }\n function captureUntil(str) {\n var nextOccurence = content.indexOf(str, pos);\n if (nextOccurence !== -1) {\n var r = content.substring(pos, nextOccurence);\n advancePosTo(nextOccurence + str.length);\n return r;\n }\n else {\n // EOF\n var r = content.substr(pos);\n advancePosTo(len);\n return r;\n }\n }\n var state = 0 /* ROOT_STATE */;\n var cur = null;\n var stateStack = [];\n var objStack = [];\n var curKey = null;\n function pushState(newState, newCur) {\n stateStack.push(state);\n objStack.push(cur);\n state = newState;\n cur = newCur;\n }\n function popState() {\n if (stateStack.length === 0) {\n return fail('illegal state stack');\n }\n state = stateStack.pop();\n cur = objStack.pop();\n }\n function fail(msg) {\n throw new Error('Near offset ' + pos + ': ' + msg + ' ~~~' + content.substr(pos, 50) + '~~~');\n }\n var dictState = {\n enterDict: function () {\n if (curKey === null) {\n return fail('missing <key>');\n }\n var newDict = {};\n if (locationKeyName !== null) {\n newDict[locationKeyName] = {\n filename: filename,\n line: line,\n char: char\n };\n }\n cur[curKey] = newDict;\n curKey = null;\n pushState(1 /* DICT_STATE */, newDict);\n },\n enterArray: function () {\n if (curKey === null) {\n return fail('missing <key>');\n }\n var newArr = [];\n cur[curKey] = newArr;\n curKey = null;\n pushState(2 /* ARR_STATE */, newArr);\n }\n };\n var arrState = {\n enterDict: function () {\n var newDict = {};\n if (locationKeyName !== null) {\n newDict[locationKeyName] = {\n filename: filename,\n line: line,\n char: char\n };\n }\n cur.push(newDict);\n pushState(1 /* DICT_STATE */, newDict);\n },\n enterArray: function () {\n var newArr = [];\n cur.push(newArr);\n pushState(2 /* ARR_STATE */, newArr);\n }\n };\n function enterDict() {\n if (state === 1 /* DICT_STATE */) {\n dictState.enterDict();\n }\n else if (state === 2 /* ARR_STATE */) {\n arrState.enterDict();\n }\n else { // ROOT_STATE\n cur = {};\n if (locationKeyName !== null) {\n cur[locationKeyName] = {\n filename: filename,\n line: line,\n char: char\n };\n }\n pushState(1 /* DICT_STATE */, cur);\n }\n }\n function leaveDict() {\n if (state === 1 /* DICT_STATE */) {\n popState();\n }\n else if (state === 2 /* ARR_STATE */) {\n return fail('unexpected </dict>');\n }\n else { // ROOT_STATE\n return fail('unexpected </dict>');\n }\n }\n function enterArray() {\n if (state === 1 /* DICT_STATE */) {\n dictState.enterArray();\n }\n else if (state === 2 /* ARR_STATE */) {\n arrState.enterArray();\n }\n else { // ROOT_STATE\n cur = [];\n pushState(2 /* ARR_STATE */, cur);\n }\n }\n function leaveArray() {\n if (state === 1 /* DICT_STATE */) {\n return fail('unexpected </array>');\n }\n else if (state === 2 /* ARR_STATE */) {\n popState();\n }\n else { // ROOT_STATE\n return fail('unexpected </array>');\n }\n }\n function acceptKey(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey !== null) {\n return fail('too many <key>');\n }\n curKey = val;\n }\n else if (state === 2 /* ARR_STATE */) {\n return fail('unexpected <key>');\n }\n else { // ROOT_STATE\n return fail('unexpected <key>');\n }\n }\n function acceptString(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptReal(val) {\n if (isNaN(val)) {\n return fail('cannot parse float');\n }\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptInteger(val) {\n if (isNaN(val)) {\n return fail('cannot parse integer');\n }\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptDate(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptData(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function acceptBool(val) {\n if (state === 1 /* DICT_STATE */) {\n if (curKey === null) {\n return fail('missing <key>');\n }\n cur[curKey] = val;\n curKey = null;\n }\n else if (state === 2 /* ARR_STATE */) {\n cur.push(val);\n }\n else { // ROOT_STATE\n cur = val;\n }\n }\n function escapeVal(str) {\n return str.replace(/&#([0-9]+);/g, function (_, m0) {\n return String.fromCodePoint(parseInt(m0, 10));\n }).replace(/&#x([0-9a-f]+);/g, function (_, m0) {\n return String.fromCodePoint(parseInt(m0, 16));\n }).replace(/&|<|>|"|'/g, function (_) {\n switch (_) {\n case '&': return '&';\n case '<': return '<';\n case '>': return '>';\n case '"': return '\"';\n case ''': return '\\'';\n }\n return _;\n });\n }\n function parseOpenTag() {\n var r = captureUntil('>');\n var isClosed = false;\n if (r.charCodeAt(r.length - 1) === 47 /* SLASH */) {\n isClosed = true;\n r = r.substring(0, r.length - 1);\n }\n return {\n name: r.trim(),\n isClosed: isClosed\n };\n }\n function parseTagValue(tag) {\n if (tag.isClosed) {\n return '';\n }\n var val = captureUntil('</');\n advanceUntil('>');\n return escapeVal(val);\n }\n while (pos < len) {\n skipWhitespace();\n if (pos >= len) {\n break;\n }\n var chCode = content.charCodeAt(pos);\n advancePosBy(1);\n if (chCode !== 60 /* LESS_THAN */) {\n return fail('expected <');\n }\n if (pos >= len) {\n return fail('unexpected end of input');\n }\n var peekChCode = content.charCodeAt(pos);\n if (peekChCode === 63 /* QUESTION_MARK */) {\n advancePosBy(1);\n advanceUntil('?>');\n continue;\n }\n if (peekChCode === 33 /* EXCLAMATION_MARK */) {\n advancePosBy(1);\n if (advanceIfStartsWith('--')) {\n advanceUntil('-->');\n continue;\n }\n advanceUntil('>');\n continue;\n }\n if (peekChCode === 47 /* SLASH */) {\n advancePosBy(1);\n skipWhitespace();\n if (advanceIfStartsWith('plist')) {\n advanceUntil('>');\n continue;\n }\n if (advanceIfStartsWith('dict')) {\n advanceUntil('>');\n leaveDict();\n continue;\n }\n if (advanceIfStartsWith('array')) {\n advanceUntil('>');\n leaveArray();\n continue;\n }\n return fail('unexpected closed tag');\n }\n var tag = parseOpenTag();\n switch (tag.name) {\n case 'dict':\n enterDict();\n if (tag.isClosed) {\n leaveDict();\n }\n continue;\n case 'array':\n enterArray();\n if (tag.isClosed) {\n leaveArray();\n }\n continue;\n case 'key':\n acceptKey(parseTagValue(tag));\n continue;\n case 'string':\n acceptString(parseTagValue(tag));\n continue;\n case 'real':\n acceptReal(parseFloat(parseTagValue(tag)));\n continue;\n case 'integer':\n acceptInteger(parseInt(parseTagValue(tag), 10));\n continue;\n case 'date':\n acceptDate(new Date(parseTagValue(tag)));\n continue;\n case 'data':\n acceptData(parseTagValue(tag));\n continue;\n case 'true':\n parseTagValue(tag);\n acceptBool(true);\n continue;\n case 'false':\n parseTagValue(tag);\n acceptBool(false);\n continue;\n }\n if (/^plist/.test(tag.name)) {\n continue;\n }\n return fail('unexpected opened tag ' + tag.name);\n }\n return cur;\n}\n//# sourceMappingURL=plist.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction doFail(streamState, msg) {\n // console.log('Near offset ' + streamState.pos + ': ' + msg + ' ~~~' + streamState.source.substr(streamState.pos, 50) + '~~~');\n throw new Error('Near offset ' + streamState.pos + ': ' + msg + ' ~~~' + streamState.source.substr(streamState.pos, 50) + '~~~');\n}\nfunction parse(source, filename, withMetadata) {\n var streamState = new JSONStreamState(source);\n var token = new JSONToken();\n var state = 0 /* ROOT_STATE */;\n var cur = null;\n var stateStack = [];\n var objStack = [];\n function pushState() {\n stateStack.push(state);\n objStack.push(cur);\n }\n function popState() {\n state = stateStack.pop();\n cur = objStack.pop();\n }\n function fail(msg) {\n doFail(streamState, msg);\n }\n while (nextJSONToken(streamState, token)) {\n if (state === 0 /* ROOT_STATE */) {\n if (cur !== null) {\n fail('too many constructs in root');\n }\n if (token.type === 3 /* LEFT_CURLY_BRACKET */) {\n cur = {};\n if (withMetadata) {\n cur.$vscodeTextmateLocation = token.toLocation(filename);\n }\n pushState();\n state = 1 /* DICT_STATE */;\n continue;\n }\n if (token.type === 2 /* LEFT_SQUARE_BRACKET */) {\n cur = [];\n pushState();\n state = 4 /* ARR_STATE */;\n continue;\n }\n fail('unexpected token in root');\n }\n if (state === 2 /* DICT_STATE_COMMA */) {\n if (token.type === 5 /* RIGHT_CURLY_BRACKET */) {\n popState();\n continue;\n }\n if (token.type === 7 /* COMMA */) {\n state = 3 /* DICT_STATE_NO_CLOSE */;\n continue;\n }\n fail('expected , or }');\n }\n if (state === 1 /* DICT_STATE */ || state === 3 /* DICT_STATE_NO_CLOSE */) {\n if (state === 1 /* DICT_STATE */ && token.type === 5 /* RIGHT_CURLY_BRACKET */) {\n popState();\n continue;\n }\n if (token.type === 1 /* STRING */) {\n var keyValue = token.value;\n if (!nextJSONToken(streamState, token) || token.type !== 6 /* COLON */) {\n fail('expected colon');\n }\n if (!nextJSONToken(streamState, token)) {\n fail('expected value');\n }\n state = 2 /* DICT_STATE_COMMA */;\n if (token.type === 1 /* STRING */) {\n cur[keyValue] = token.value;\n continue;\n }\n if (token.type === 8 /* NULL */) {\n cur[keyValue] = null;\n continue;\n }\n if (token.type === 9 /* TRUE */) {\n cur[keyValue] = true;\n continue;\n }\n if (token.type === 10 /* FALSE */) {\n cur[keyValue] = false;\n continue;\n }\n if (token.type === 11 /* NUMBER */) {\n cur[keyValue] = parseFloat(token.value);\n continue;\n }\n if (token.type === 2 /* LEFT_SQUARE_BRACKET */) {\n var newArr = [];\n cur[keyValue] = newArr;\n pushState();\n state = 4 /* ARR_STATE */;\n cur = newArr;\n continue;\n }\n if (token.type === 3 /* LEFT_CURLY_BRACKET */) {\n var newDict = {};\n if (withMetadata) {\n newDict.$vscodeTextmateLocation = token.toLocation(filename);\n }\n cur[keyValue] = newDict;\n pushState();\n state = 1 /* DICT_STATE */;\n cur = newDict;\n continue;\n }\n }\n fail('unexpected token in dict');\n }\n if (state === 5 /* ARR_STATE_COMMA */) {\n if (token.type === 4 /* RIGHT_SQUARE_BRACKET */) {\n popState();\n continue;\n }\n if (token.type === 7 /* COMMA */) {\n state = 6 /* ARR_STATE_NO_CLOSE */;\n continue;\n }\n fail('expected , or ]');\n }\n if (state === 4 /* ARR_STATE */ || state === 6 /* ARR_STATE_NO_CLOSE */) {\n if (state === 4 /* ARR_STATE */ && token.type === 4 /* RIGHT_SQUARE_BRACKET */) {\n popState();\n continue;\n }\n state = 5 /* ARR_STATE_COMMA */;\n if (token.type === 1 /* STRING */) {\n cur.push(token.value);\n continue;\n }\n if (token.type === 8 /* NULL */) {\n cur.push(null);\n continue;\n }\n if (token.type === 9 /* TRUE */) {\n cur.push(true);\n continue;\n }\n if (token.type === 10 /* FALSE */) {\n cur.push(false);\n continue;\n }\n if (token.type === 11 /* NUMBER */) {\n cur.push(parseFloat(token.value));\n continue;\n }\n if (token.type === 2 /* LEFT_SQUARE_BRACKET */) {\n var newArr = [];\n cur.push(newArr);\n pushState();\n state = 4 /* ARR_STATE */;\n cur = newArr;\n continue;\n }\n if (token.type === 3 /* LEFT_CURLY_BRACKET */) {\n var newDict = {};\n if (withMetadata) {\n newDict.$vscodeTextmateLocation = token.toLocation(filename);\n }\n cur.push(newDict);\n pushState();\n state = 1 /* DICT_STATE */;\n cur = newDict;\n continue;\n }\n fail('unexpected token in array');\n }\n fail('unknown state');\n }\n if (objStack.length !== 0) {\n fail('unclosed constructs');\n }\n return cur;\n}\nexports.parse = parse;\nvar JSONStreamState = /** @class */ (function () {\n function JSONStreamState(source) {\n this.source = source;\n this.pos = 0;\n this.len = source.length;\n this.line = 1;\n this.char = 0;\n }\n return JSONStreamState;\n}());\nvar JSONToken = /** @class */ (function () {\n function JSONToken() {\n this.value = null;\n this.type = 0 /* UNKNOWN */;\n this.offset = -1;\n this.len = -1;\n this.line = -1;\n this.char = -1;\n }\n JSONToken.prototype.toLocation = function (filename) {\n return {\n filename: filename,\n line: this.line,\n char: this.char\n };\n };\n return JSONToken;\n}());\n/**\n * precondition: the string is known to be valid JSON (https://www.ietf.org/rfc/rfc4627.txt)\n */\nfunction nextJSONToken(_state, _out) {\n _out.value = null;\n _out.type = 0 /* UNKNOWN */;\n _out.offset = -1;\n _out.len = -1;\n _out.line = -1;\n _out.char = -1;\n var source = _state.source;\n var pos = _state.pos;\n var len = _state.len;\n var line = _state.line;\n var char = _state.char;\n //------------------------ skip whitespace\n var chCode;\n do {\n if (pos >= len) {\n return false; /*EOS*/\n }\n chCode = source.charCodeAt(pos);\n if (chCode === 32 /* SPACE */ || chCode === 9 /* HORIZONTAL_TAB */ || chCode === 13 /* CARRIAGE_RETURN */) {\n // regular whitespace\n pos++;\n char++;\n continue;\n }\n if (chCode === 10 /* LINE_FEED */) {\n // newline\n pos++;\n line++;\n char = 0;\n continue;\n }\n // not whitespace\n break;\n } while (true);\n _out.offset = pos;\n _out.line = line;\n _out.char = char;\n if (chCode === 34 /* QUOTATION_MARK */) {\n //------------------------ strings\n _out.type = 1 /* STRING */;\n pos++;\n char++;\n do {\n if (pos >= len) {\n return false; /*EOS*/\n }\n chCode = source.charCodeAt(pos);\n pos++;\n char++;\n if (chCode === 92 /* BACKSLASH */) {\n // skip next char\n pos++;\n char++;\n continue;\n }\n if (chCode === 34 /* QUOTATION_MARK */) {\n // end of the string\n break;\n }\n } while (true);\n _out.value = source.substring(_out.offset + 1, pos - 1).replace(/\\\\u([0-9A-Fa-f]{4})/g, function (_, m0) {\n return String.fromCodePoint(parseInt(m0, 16));\n }).replace(/\\\\(.)/g, function (_, m0) {\n switch (m0) {\n case '\"': return '\"';\n case '\\\\': return '\\\\';\n case '/': return '/';\n case 'b': return '\\b';\n case 'f': return '\\f';\n case 'n': return '\\n';\n case 'r': return '\\r';\n case 't': return '\\t';\n default: doFail(_state, 'invalid escape sequence');\n }\n throw new Error('unreachable');\n });\n }\n else if (chCode === 91 /* LEFT_SQUARE_BRACKET */) {\n _out.type = 2 /* LEFT_SQUARE_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 123 /* LEFT_CURLY_BRACKET */) {\n _out.type = 3 /* LEFT_CURLY_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 93 /* RIGHT_SQUARE_BRACKET */) {\n _out.type = 4 /* RIGHT_SQUARE_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 125 /* RIGHT_CURLY_BRACKET */) {\n _out.type = 5 /* RIGHT_CURLY_BRACKET */;\n pos++;\n char++;\n }\n else if (chCode === 58 /* COLON */) {\n _out.type = 6 /* COLON */;\n pos++;\n char++;\n }\n else if (chCode === 44 /* COMMA */) {\n _out.type = 7 /* COMMA */;\n pos++;\n char++;\n }\n else if (chCode === 110 /* n */) {\n //------------------------ null\n _out.type = 8 /* NULL */;\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 117 /* u */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 108 /* l */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 108 /* l */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n }\n else if (chCode === 116 /* t */) {\n //------------------------ true\n _out.type = 9 /* TRUE */;\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 114 /* r */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 117 /* u */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 101 /* e */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n }\n else if (chCode === 102 /* f */) {\n //------------------------ false\n _out.type = 10 /* FALSE */;\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 97 /* a */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 108 /* l */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 115 /* s */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n chCode = source.charCodeAt(pos);\n if (chCode !== 101 /* e */) {\n return false; /* INVALID */\n }\n pos++;\n char++;\n }\n else {\n //------------------------ numbers\n _out.type = 11 /* NUMBER */;\n do {\n if (pos >= len) {\n return false; /*EOS*/\n }\n chCode = source.charCodeAt(pos);\n if (chCode === 46 /* DOT */\n || (chCode >= 48 /* D0 */ && chCode <= 57 /* D9 */)\n || (chCode === 101 /* e */ || chCode === 69 /* E */)\n || (chCode === 45 /* MINUS */ || chCode === 43 /* PLUS */)) {\n // looks like a piece of a number\n pos++;\n char++;\n continue;\n }\n // pos--; char--;\n break;\n } while (true);\n }\n _out.len = pos - _out.offset;\n if (_out.value === null) {\n _out.value = source.substr(_out.offset, _out.len);\n }\n _state.pos = pos;\n _state.line = line;\n _state.char = char;\n // console.log('PRODUCING TOKEN: ', _out.value, JSONTokenType[_out.type]);\n return true;\n}\n//# sourceMappingURL=json.js.map","\"use strict\";\n/*---------------------------------------------------------\n * Copyright (C) Microsoft Corporation. All rights reserved.\n *--------------------------------------------------------*/\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParsedThemeRule = /** @class */ (function () {\n function ParsedThemeRule(scope, parentScopes, index, fontStyle, foreground, background) {\n this.scope = scope;\n this.parentScopes = parentScopes;\n this.index = index;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n return ParsedThemeRule;\n}());\nexports.ParsedThemeRule = ParsedThemeRule;\nfunction isValidHexColor(hex) {\n if (/^#[0-9a-f]{6}$/i.test(hex)) {\n // #rrggbb\n return true;\n }\n if (/^#[0-9a-f]{8}$/i.test(hex)) {\n // #rrggbbaa\n return true;\n }\n if (/^#[0-9a-f]{3}$/i.test(hex)) {\n // #rgb\n return true;\n }\n if (/^#[0-9a-f]{4}$/i.test(hex)) {\n // #rgba\n return true;\n }\n return false;\n}\n/**\n * Parse a raw theme into rules.\n */\nfunction parseTheme(source) {\n if (!source) {\n return [];\n }\n if (!source.settings || !Array.isArray(source.settings)) {\n return [];\n }\n var settings = source.settings;\n var result = [], resultLen = 0;\n for (var i = 0, len = settings.length; i < len; i++) {\n var entry = settings[i];\n if (!entry.settings) {\n continue;\n }\n var scopes = void 0;\n if (typeof entry.scope === 'string') {\n var _scope = entry.scope;\n // remove leading commas\n _scope = _scope.replace(/^[,]+/, '');\n // remove trailing commans\n _scope = _scope.replace(/[,]+$/, '');\n scopes = _scope.split(',');\n }\n else if (Array.isArray(entry.scope)) {\n scopes = entry.scope;\n }\n else {\n scopes = [''];\n }\n var fontStyle = -1 /* NotSet */;\n if (typeof entry.settings.fontStyle === 'string') {\n fontStyle = 0 /* None */;\n var segments = entry.settings.fontStyle.split(' ');\n for (var j = 0, lenJ = segments.length; j < lenJ; j++) {\n var segment = segments[j];\n switch (segment) {\n case 'italic':\n fontStyle = fontStyle | 1 /* Italic */;\n break;\n case 'bold':\n fontStyle = fontStyle | 2 /* Bold */;\n break;\n case 'underline':\n fontStyle = fontStyle | 4 /* Underline */;\n break;\n }\n }\n }\n var foreground = null;\n if (typeof entry.settings.foreground === 'string' && isValidHexColor(entry.settings.foreground)) {\n foreground = entry.settings.foreground;\n }\n var background = null;\n if (typeof entry.settings.background === 'string' && isValidHexColor(entry.settings.background)) {\n background = entry.settings.background;\n }\n for (var j = 0, lenJ = scopes.length; j < lenJ; j++) {\n var _scope = scopes[j].trim();\n var segments = _scope.split(' ');\n var scope = segments[segments.length - 1];\n var parentScopes = null;\n if (segments.length > 1) {\n parentScopes = segments.slice(0, segments.length - 1);\n parentScopes.reverse();\n }\n result[resultLen++] = new ParsedThemeRule(scope, parentScopes, i, fontStyle, foreground, background);\n }\n }\n return result;\n}\nexports.parseTheme = parseTheme;\n/**\n * Resolve rules (i.e. inheritance).\n */\nfunction resolveParsedThemeRules(parsedThemeRules, _colorMap) {\n // Sort rules lexicographically, and then by index if necessary\n parsedThemeRules.sort(function (a, b) {\n var r = strcmp(a.scope, b.scope);\n if (r !== 0) {\n return r;\n }\n r = strArrCmp(a.parentScopes, b.parentScopes);\n if (r !== 0) {\n return r;\n }\n return a.index - b.index;\n });\n // Determine defaults\n var defaultFontStyle = 0 /* None */;\n var defaultForeground = '#000000';\n var defaultBackground = '#ffffff';\n while (parsedThemeRules.length >= 1 && parsedThemeRules[0].scope === '') {\n var incomingDefaults = parsedThemeRules.shift();\n if (incomingDefaults.fontStyle !== -1 /* NotSet */) {\n defaultFontStyle = incomingDefaults.fontStyle;\n }\n if (incomingDefaults.foreground !== null) {\n defaultForeground = incomingDefaults.foreground;\n }\n if (incomingDefaults.background !== null) {\n defaultBackground = incomingDefaults.background;\n }\n }\n var colorMap = new ColorMap(_colorMap);\n var defaults = new ThemeTrieElementRule(0, null, defaultFontStyle, colorMap.getId(defaultForeground), colorMap.getId(defaultBackground));\n var root = new ThemeTrieElement(new ThemeTrieElementRule(0, null, -1 /* NotSet */, 0, 0), []);\n for (var i = 0, len = parsedThemeRules.length; i < len; i++) {\n var rule = parsedThemeRules[i];\n root.insert(0, rule.scope, rule.parentScopes, rule.fontStyle, colorMap.getId(rule.foreground), colorMap.getId(rule.background));\n }\n return new Theme(colorMap, defaults, root);\n}\nvar ColorMap = /** @class */ (function () {\n function ColorMap(_colorMap) {\n this._lastColorId = 0;\n this._id2color = [];\n this._color2id = Object.create(null);\n if (Array.isArray(_colorMap)) {\n this._isFrozen = true;\n for (var i = 0, len = _colorMap.length; i < len; i++) {\n this._color2id[_colorMap[i]] = i;\n this._id2color[i] = _colorMap[i];\n }\n }\n else {\n this._isFrozen = false;\n }\n }\n ColorMap.prototype.getId = function (color) {\n if (color === null) {\n return 0;\n }\n color = color.toUpperCase();\n var value = this._color2id[color];\n if (value) {\n return value;\n }\n if (this._isFrozen) {\n throw new Error(\"Missing color in color map - \" + color);\n }\n value = ++this._lastColorId;\n this._color2id[color] = value;\n this._id2color[value] = color;\n return value;\n };\n ColorMap.prototype.getColorMap = function () {\n return this._id2color.slice(0);\n };\n return ColorMap;\n}());\nexports.ColorMap = ColorMap;\nvar Theme = /** @class */ (function () {\n function Theme(colorMap, defaults, root) {\n this._colorMap = colorMap;\n this._root = root;\n this._defaults = defaults;\n this._cache = {};\n }\n Theme.createFromRawTheme = function (source, colorMap) {\n return this.createFromParsedTheme(parseTheme(source), colorMap);\n };\n Theme.createFromParsedTheme = function (source, colorMap) {\n return resolveParsedThemeRules(source, colorMap);\n };\n Theme.prototype.getColorMap = function () {\n return this._colorMap.getColorMap();\n };\n Theme.prototype.getDefaults = function () {\n return this._defaults;\n };\n Theme.prototype.match = function (scopeName) {\n if (!this._cache.hasOwnProperty(scopeName)) {\n this._cache[scopeName] = this._root.match(scopeName);\n }\n return this._cache[scopeName];\n };\n return Theme;\n}());\nexports.Theme = Theme;\nfunction strcmp(a, b) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\nexports.strcmp = strcmp;\nfunction strArrCmp(a, b) {\n if (a === null && b === null) {\n return 0;\n }\n if (!a) {\n return -1;\n }\n if (!b) {\n return 1;\n }\n var len1 = a.length;\n var len2 = b.length;\n if (len1 === len2) {\n for (var i = 0; i < len1; i++) {\n var res = strcmp(a[i], b[i]);\n if (res !== 0) {\n return res;\n }\n }\n return 0;\n }\n return len1 - len2;\n}\nexports.strArrCmp = strArrCmp;\nvar ThemeTrieElementRule = /** @class */ (function () {\n function ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background) {\n this.scopeDepth = scopeDepth;\n this.parentScopes = parentScopes;\n this.fontStyle = fontStyle;\n this.foreground = foreground;\n this.background = background;\n }\n ThemeTrieElementRule.prototype.clone = function () {\n return new ThemeTrieElementRule(this.scopeDepth, this.parentScopes, this.fontStyle, this.foreground, this.background);\n };\n ThemeTrieElementRule.cloneArr = function (arr) {\n var r = [];\n for (var i = 0, len = arr.length; i < len; i++) {\n r[i] = arr[i].clone();\n }\n return r;\n };\n ThemeTrieElementRule.prototype.acceptOverwrite = function (scopeDepth, fontStyle, foreground, background) {\n if (this.scopeDepth > scopeDepth) {\n console.log('how did this happen?');\n }\n else {\n this.scopeDepth = scopeDepth;\n }\n // console.log('TODO -> my depth: ' + this.scopeDepth + ', overwriting depth: ' + scopeDepth);\n if (fontStyle !== -1 /* NotSet */) {\n this.fontStyle = fontStyle;\n }\n if (foreground !== 0) {\n this.foreground = foreground;\n }\n if (background !== 0) {\n this.background = background;\n }\n };\n return ThemeTrieElementRule;\n}());\nexports.ThemeTrieElementRule = ThemeTrieElementRule;\nvar ThemeTrieElement = /** @class */ (function () {\n function ThemeTrieElement(mainRule, rulesWithParentScopes, children) {\n if (rulesWithParentScopes === void 0) { rulesWithParentScopes = []; }\n if (children === void 0) { children = {}; }\n this._mainRule = mainRule;\n this._rulesWithParentScopes = rulesWithParentScopes;\n this._children = children;\n }\n ThemeTrieElement._sortBySpecificity = function (arr) {\n if (arr.length === 1) {\n return arr;\n }\n arr.sort(this._cmpBySpecificity);\n return arr;\n };\n ThemeTrieElement._cmpBySpecificity = function (a, b) {\n if (a.scopeDepth === b.scopeDepth) {\n var aParentScopes = a.parentScopes;\n var bParentScopes = b.parentScopes;\n var aParentScopesLen = aParentScopes === null ? 0 : aParentScopes.length;\n var bParentScopesLen = bParentScopes === null ? 0 : bParentScopes.length;\n if (aParentScopesLen === bParentScopesLen) {\n for (var i = 0; i < aParentScopesLen; i++) {\n var aLen = aParentScopes[i].length;\n var bLen = bParentScopes[i].length;\n if (aLen !== bLen) {\n return bLen - aLen;\n }\n }\n }\n return bParentScopesLen - aParentScopesLen;\n }\n return b.scopeDepth - a.scopeDepth;\n };\n ThemeTrieElement.prototype.match = function (scope) {\n if (scope === '') {\n return ThemeTrieElement._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n }\n var dotIndex = scope.indexOf('.');\n var head;\n var tail;\n if (dotIndex === -1) {\n head = scope;\n tail = '';\n }\n else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n if (this._children.hasOwnProperty(head)) {\n return this._children[head].match(tail);\n }\n return ThemeTrieElement._sortBySpecificity([].concat(this._mainRule).concat(this._rulesWithParentScopes));\n };\n ThemeTrieElement.prototype.insert = function (scopeDepth, scope, parentScopes, fontStyle, foreground, background) {\n if (scope === '') {\n this._doInsertHere(scopeDepth, parentScopes, fontStyle, foreground, background);\n return;\n }\n var dotIndex = scope.indexOf('.');\n var head;\n var tail;\n if (dotIndex === -1) {\n head = scope;\n tail = '';\n }\n else {\n head = scope.substring(0, dotIndex);\n tail = scope.substring(dotIndex + 1);\n }\n var child;\n if (this._children.hasOwnProperty(head)) {\n child = this._children[head];\n }\n else {\n child = new ThemeTrieElement(this._mainRule.clone(), ThemeTrieElementRule.cloneArr(this._rulesWithParentScopes));\n this._children[head] = child;\n }\n child.insert(scopeDepth + 1, tail, parentScopes, fontStyle, foreground, background);\n };\n ThemeTrieElement.prototype._doInsertHere = function (scopeDepth, parentScopes, fontStyle, foreground, background) {\n if (parentScopes === null) {\n // Merge into the main rule\n this._mainRule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n // Try to merge into existing rule\n for (var i = 0, len = this._rulesWithParentScopes.length; i < len; i++) {\n var rule = this._rulesWithParentScopes[i];\n if (strArrCmp(rule.parentScopes, parentScopes) === 0) {\n // bingo! => we get to merge this into an existing one\n rule.acceptOverwrite(scopeDepth, fontStyle, foreground, background);\n return;\n }\n }\n // Must add a new rule\n // Inherit from main rule\n if (fontStyle === -1 /* NotSet */) {\n fontStyle = this._mainRule.fontStyle;\n }\n if (foreground === 0) {\n foreground = this._mainRule.foreground;\n }\n if (background === 0) {\n background = this._mainRule.background;\n }\n this._rulesWithParentScopes.push(new ThemeTrieElementRule(scopeDepth, parentScopes, fontStyle, foreground, background));\n };\n return ThemeTrieElement;\n}());\nexports.ThemeTrieElement = ThemeTrieElement;\n//# sourceMappingURL=theme.js.map"],"sourceRoot":""} |