Socket
Socket
Sign inDemoInstall

tsickle

Package Overview
Dependencies
Maintainers
2
Versions
65
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

tsickle - npm Package Compare versions

Comparing version 0.25.6 to 0.26.0

6

package.json
{
"name": "tsickle",
"version": "0.25.6",
"version": "0.26.0",
"description": "Transpile TypeScript code to JavaScript with Closure annotations.",

@@ -21,3 +21,3 @@ "main": "src/tsickle.js",

"peerDependencies": {
"typescript": ">=2.4.2 <2.6"
"typescript": ">=2.4.2 <2.7"
},

@@ -50,3 +50,3 @@ "devDependencies": {

"tslint": "^5.4.2",
"typescript": "~2.5.3"
"typescript": "^2.6.2"
},

@@ -53,0 +53,0 @@ "scripts": {

/// <amd-module name="tsickle/src/es5processor" />
import { ModulesManifest } from './modules_manifest';
import * as ts from './typescript';
export interface Es5ProcessorHost {

@@ -19,2 +20,4 @@ /**

es5Mode?: boolean;
/** expand "import 'foo';" to "import 'foo/index';" if it points to an index file. */
convertIndexImportShorthand?: boolean;
/**

@@ -24,2 +27,4 @@ * An additional prelude to insert in front of the emitted code, e.g. to import a shared library.

prelude?: string;
options: ts.CompilerOptions;
host: ts.ModuleResolutionHost;
}

@@ -32,2 +37,11 @@ /**

/**
* Convert from implicit `import {} from 'pkg'` to `import {} from 'pkg/index'.
* TypeScript supports the shorthand, but not all ES6 module loaders do.
* Workaround for https://github.com/Microsoft/TypeScript/issues/12597
*/
export declare function resolveIndexShorthand(host: {
options: ts.CompilerOptions;
host: ts.ModuleResolutionHost;
}, fileName: string, imported: string): string;
/**
* Converts TypeScript's JS+CommonJS output to Closure goog.module etc.

@@ -34,0 +48,0 @@ * For use as a postprocessing step *after* TypeScript emits JavaScript.

@@ -54,3 +54,3 @@ /**

function isClosureFileoverviewComment(text) {
var current = jsdoc.parseContents(text);
var current = jsdoc.parse(text);
return current !== null && current.tags.some(function (t) { return FILEOVERVIEW_COMMENT_MARKERS.has(t.tagName); });

@@ -127,2 +127,2 @@ }

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUFpQztJQUNqQyxpRUFBbUY7SUFDbkYsMkNBQW1DO0lBRW5DOzs7T0FHRztJQUNILElBQU0sNEJBQTRCLEdBQzlCLElBQUksR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFM0U7Ozs7O09BS0c7SUFDSCxzQ0FBNkMsSUFBWTtRQUN2RCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFDLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBM0MsQ0FBMkMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFIRCxvRUFHQztJQUVEOzs7T0FHRztJQUNILHNDQUE2QyxPQUFpQztRQUU1RSxNQUFNLENBQUMsVUFBQyxFQUFpQjtZQUN2QixJQUFJLFFBQVEsR0FBNEIsRUFBRSxDQUFDO1lBQzNDLDhGQUE4RjtZQUM5RixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDeEYsUUFBUSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FB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QUFrQixFQUFDO1lBQ25ELEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQztTQUNsRSxDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUF1QixHQUFHLDRDQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELHVCQUF1QixHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FDcEQsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLHVDQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxXQUFFLHVCQUF1QixHQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGpzZG9jIGZyb20gJy4vanNkb2MnO1xuaW1wb3J0IHtjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50LCB1cGRhdGVTb3VyY2VGaWxlTm9kZX0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQSBzZXQgb2YgSlNEb2MgdGFncyB0aGF0IG1hcmsgYSBjb21tZW50IGFzIGEgZmlsZW92ZXJ2aWV3IGNvbW1lbnQuIFRoZXNlIGFyZSByZWNvZ25pemVkIGJ5IG90aGVyXG4gKiBwaWVjZXMgb2YgaW5mcmFzdHJ1Y3R1cmUgKENsb3N1cmUgQ29tcGlsZXIsIG1vZHVsZSBzeXN0ZW0sIC4uLikuXG4gKi9cbmNvbnN0IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPVxuICAgIG5ldyBTZXQoWydmaWxlb3ZlcnZpZXcnLCAnZXh0ZXJucycsICdtb2ROYW1lJywgJ21vZHMnLCAncGludG9tb2R1bGUnXSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb21tZW50IGlzIGEgXFxAZmlsZW92ZXJ2aWV3IHN0eWxlIGNvbW1lbnQgaW4gdGhlIENsb3N1cmUgc2Vuc2UsIGkuZS4gYVxuICogY29tbWVudCB0aGF0IGhhcyBKU0RvYyB0YWdzIG1hcmtpbmcgaXQgYXMgYSBmaWxlb3ZlcnZpZXcgY29tbWVudC5cbiAqIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIFR5cGVTY3JpcHQncyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25jZXB0LCB3aGVyZSBhIGZpbGUgY29tbWVudFxuICogaXMgYSBjb21tZW50IHNlcGFyYXRlZCBmcm9tIHRoZSByZXN0IG9mIHRoZSBmaWxlIGJ5IGEgZG91YmxlIG5ld2xpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50KHRleHQ6IHN0cmluZykge1xuICBjb25zdCBjdXJyZW50ID0ganNkb2MucGFyc2VDb250ZW50cyh0ZXh0KTtcbiAgcmV0dXJuIGN1cnJlbnQgIT09IG51bGwgJiYgY3VycmVudC50YWdzLnNvbWUodCA9PiBGSUxFT1ZFUlZJRVdfQ09NTUVOVF9NQVJLRVJTLmhhcyh0LnRhZ05hbWUpKTtcbn1cblxuLyoqXG4gKiBBIHRyYW5zZm9ybWVyIHRoYXQgZW5zdXJlcyB0aGUgZW1pdHRlZCBKUyBmaWxlIGhhcyBhbiBcXEBmaWxlb3ZlcnZpZXcgY29tbWVudCB0aGF0IGNvbnRhaW5zIGFuXG4gKiBcXEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30gYW5ub3RhdGlvbiBieSBlaXRoZXIgYWRkaW5nIG9yIHVwZGF0aW5nIGFuIGV4aXN0aW5nIGNvbW1lbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmFuc2Zvcm1GaWxlb3ZlcnZpZXdDb21tZW50KGNvbnRleHQ6IHRzLlRyYW5zZm9ybWF0aW9uQ29udGV4dCk6XG4gICAgKHNmOiB0cy5Tb3VyY2VGaWxlKSA9PiB0cy5Tb3VyY2VGaWxlIHtcbiAgcmV0dXJuIChzZjogdHMuU291cmNlRmlsZSkgPT4ge1xuICAgIGxldCBjb21tZW50czogdHMuU3ludGhlc2l6ZWRDb21tZW50W10gPSBbXTtcbiAgICAvLyBVc2UgdHJhaWxpbmcgY29tbWVudHMgYmVjYXVzZSB0aGF0J3Mgd2hhdCB0cmFuc2Zvcm1lcl91dGlsLnRzIGNyZWF0ZXMgKGkuZS4gYnkgY29udmVudGlvbikuXG4gICAgaWYgKHNmLnN0YXRlbWVudHMubGVuZ3RoICYmIHNmLnN0YXRlbWVudHNbMF0ua2luZCA9PT0gdHMuU3ludGF4S2luZC5Ob3RFbWl0dGVkU3RhdGVtZW50KSB7XG4gICAgICBjb21tZW50cyA9IHRzLmdldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMoc2Yuc3RhdGVtZW50c1swXSkgfHwgW107XG4gICAgfVxuXG4gICAgbGV0IGZpbGVvdmVydmlld0lkeCA9IC0xO1xuICAgIGxldCBwYXJzZWQ6IHt0YWdzOiBqc2RvYy5UYWdbXX18bnVsbCA9IG51bGw7XG4gICAgZm9yIChsZXQgaSA9IGNvbW1lbnRzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICBjb25zdCBjdXJyZW50ID0ganNkb2MucGFyc2VDb250ZW50cyhjb21tZW50c1tpXS50ZXh0KTtcbiAgICAgIGlmIChjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQudGFncy5zb21lKHQgPT4gRklMRU9WRVJWSUVXX0NPTU1FTlRfTUFSS0VSUy5oYXModC50YWdOYW1lKSkpIHtcbiAgICAgICAgZmlsZW92ZXJ2aWV3SWR4ID0gaTtcbiAgICAgICAgcGFyc2VkID0gY3VycmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIEFkZCBhIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30gdGFnIHRvIGVhY2ggc291cmNlIGZpbGUncyBKU0RvYyBjb21tZW50LFxuICAgIC8vIGJlaW5nIGNhcmVmdWwgdG8gcmV0YWluIGV4aXN0aW5nIGNvbW1lbnRzIGFuZCB0aGVpciBAc3VwcHJlc3MnaW9ucy5cbiAgICAvLyBDbG9zdXJlIENvbXBpbGVyIGNvbnNpZGVycyB0aGUgKmxhc3QqIGNvbW1lbnQgd2l0aCBAZmlsZW92ZXJ2aWV3IChvciBAZXh0ZXJucyBvciBAbm9jb21waWxlKVxuICAgIC8vIHRoYXQgaGFzIG5vdCBiZWVuIGF0dGFjaGVkIHRvIHNvbWUgb3RoZXIgdHJlZSBub2RlIHRvIGJlIHRoZSBmaWxlIG92ZXJ2aWV3IGNvbW1lbnQsIGFuZFxuICAgIC8vIG9ubHkgYXBwbGllcyBAc3VwcHJlc3MgdGFncyBmcm9tIGl0LlxuICAgIC8vIEFKRCBjb25zaWRlcnMgKmFueSogY29tbWVudCBtZW50aW9uaW5nIEBmaWxlb3ZlcnZpZXcuXG4gICAgaWYgKCFwYXJzZWQpIHtcbiAgICAgIC8vIE5vIGV4aXN0aW5nIGNvbW1lbnQgdG8gbWVyZ2Ugd2l0aCwganVzdCBlbWl0IGEgbmV3IG9uZS5cbiAgICAgIHJldHVybiBhZGROZXdGaWxlb3ZlcnZpZXdDb21tZW50KHNmKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgQHN1cHByZXNzIHtjaGVja1R5cGVzfSwgb3IgYWRkIHRvIHRoZSBsaXN0IGluIGFuIGV4aXN0aW5nIEBzdXBwcmVzcyB0YWcuXG4gICAgLy8gQ2xvc3VyZSBjb21waWxlciBiYXJmcyBpZiB0aGVyZSdzIGEgZHVwbGljYXRlZCBAc3VwcHJlc3MgdGFnIGluIGEgZmlsZSwgc28gdGhlIHRhZyBtdXN0XG4gICAgLy8gb25seSBhcHBlYXIgb25jZSBhbmQgYmUgbWVyZ2VkLlxuICAgIGNvbnN0IHt0YWdzfSA9IHBhcnNlZDtcbiAgICBjb25zdCBzdXBwcmVzc1RhZyA9IHRhZ3MuZmluZCh0ID0+IHQudGFnTmFtZSA9PT0gJ3N1cHByZXNzJyk7XG4gICAgaWYgKHN1cHByZXNzVGFnKSB7XG4gICAgICBjb25zdCBzdXBwcmVzc2lvbnMgPSBzdXBwcmVzc1RhZy50eXBlIHx8ICcnO1xuICAgICAgY29uc3Qgc3VwcHJlc3Npb25zTGlzdCA9IHN1cHByZXNzaW9ucy5zcGxpdCgnLCcpLm1hcChzID0+IHMudHJpbSgpKTtcbiAgICAgIGlmIChzdXBwcmVzc2lvbnNMaXN0LmluZGV4T2YoJ2NoZWNrVHlwZXMnKSA9PT0gLTEpIHtcbiAgICAgICAgc3VwcHJlc3Npb25zTGlzdC5wdXNoKCdjaGVja1R5cGVzJyk7XG4gICAgICB9XG4gICAgICBzdXBwcmVzc1RhZy50eXBlID0gc3VwcHJlc3Npb25zTGlzdC5qb2luKCcsJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRhZ3MucHVzaCh7XG4gICAgICAgIHRhZ05hbWU6ICdzdXBwcmVzcycsXG4gICAgICAgIHR5cGU6ICdjaGVja1R5cGVzJyxcbiAgICAgICAgdGV4dDogJ2NoZWNrZWQgYnkgdHNjJyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCBjb21tZW50VGV4dCA9IGpzZG9jLnRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKHRhZ3MpO1xuICAgIGNvbW1lbnRzW2ZpbGVvdmVydmlld0lkeF0udGV4dCA9IGNvbW1lbnRUZXh0O1xuICAgIC8vIHNmIGRvZXMgbm90IG5lZWQgdG8gYmUgdXBkYXRlZCwgc3ludGhlc2l6ZWQgY29tbWVudHMgYXJlIG11dGFibGUuXG4gICAgcmV0dXJuIHNmO1xuICB9O1xufVxuXG5mdW5jdGlvbiBhZGROZXdGaWxlb3ZlcnZpZXdDb21tZW50KHNmOiB0cy5Tb3VyY2VGaWxlKTogdHMuU291cmNlRmlsZSB7XG4gIGNvbnN0IGNvbW1lbnRUZXh0ID0ganNkb2MudG9TdHJpbmdXaXRob3V0U3RhcnRFbmQoW1xuICAgIHt0YWdOYW1lOiAnZmlsZW92ZXJ2aWV3JywgdGV4dDogJ2FkZGVkIGJ5IHRzaWNrbGUnfSxcbiAgICB7dGFnTmFtZTogJ3N1cHByZXNzJywgdHlwZTogJ2NoZWNrVHlwZXMnLCB0ZXh0OiAnY2hlY2tlZCBieSB0c2MnfSxcbiAgXSk7XG4gIGxldCBzeW50aGV0aWNGaXJzdFN0YXRlbWVudCA9IGNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQoc2YpO1xuICBzeW50aGV0aWNGaXJzdFN0YXRlbWVudCA9IHRzLmFkZFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudChcbiAgICAgIHN5bnRoZXRpY0ZpcnN0U3RhdGVtZW50LCB0cy5TeW50YXhLaW5kLk11bHRpTGluZUNvbW1lbnRUcml2aWEsIGNvbW1lbnRUZXh0LCB0cnVlKTtcbiAgcmV0dXJuIHVwZGF0ZVNvdXJjZUZpbGVOb2RlKHNmLCB0cy5jcmVhdGVOb2RlQXJyYXkoW3N5bnRoZXRpY0ZpcnN0U3RhdGVtZW50LCAuLi5zZi5zdGF0ZW1lbnRzXSkpO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZmlsZW92ZXJ2aWV3X2NvbW1lbnRfdHJhbnNmb3JtZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUFpQztJQUNqQyxpRUFBbUY7SUFDbkYsMkNBQW1DO0lBRW5DOzs7T0FHRztJQUNILElBQU0sNEJBQTRCLEdBQzlCLElBQUksR0FBRyxDQUFDLENBQUMsY0FBYyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLGFBQWEsQ0FBQyxDQUFDLENBQUM7SUFFM0U7Ozs7O09BS0c7SUFDSCxzQ0FBNkMsSUFBWTtRQUN2RCxJQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2xDLE1BQU0sQ0FBQyxPQUFPLEtBQUssSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQUEsQ0FBQyxJQUFJLE9BQUEsNEJBQTRCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBM0MsQ0FBMkMsQ0FBQyxDQUFDO0lBQ2pHLENBQUM7SUFIRCxvRUFHQztJQUVEOzs7T0FHRztJQUNILHNDQUE2QyxPQUFpQztRQUU1RSxNQUFNLENBQUMsVUFBQyxFQUFpQjtZQUN2QixJQUFJLFFBQVEsR0FBNEIsRUFBRSxDQUFDO1lBQzNDLDhGQUE4RjtZQUM5RixFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsVUFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQztnQkFDeEYsUUFBUSxHQUFHLEVBQUUsQ0FBQyw0QkFBNEIsQ0FB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QUFrQixFQUFDO1lBQ25ELEVBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxnQkFBZ0IsRUFBQztTQUNsRSxDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUF1QixHQUFHLDRDQUF5QixDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzVELHVCQUF1QixHQUFHLEVBQUUsQ0FBQywyQkFBMkIsQ0FDcEQsdUJBQXVCLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxzQkFBc0IsRUFBRSxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEYsTUFBTSxDQUFDLHVDQUFvQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsZUFBZSxXQUFFLHVCQUF1QixHQUFLLEVBQUUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO0lBQ25HLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCAqIGFzIGpzZG9jIGZyb20gJy4vanNkb2MnO1xuaW1wb3J0IHtjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50LCB1cGRhdGVTb3VyY2VGaWxlTm9kZX0gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQSBzZXQgb2YgSlNEb2MgdGFncyB0aGF0IG1hcmsgYSBjb21tZW50IGFzIGEgZmlsZW92ZXJ2aWV3IGNvbW1lbnQuIFRoZXNlIGFyZSByZWNvZ25pemVkIGJ5IG90aGVyXG4gKiBwaWVjZXMgb2YgaW5mcmFzdHJ1Y3R1cmUgKENsb3N1cmUgQ29tcGlsZXIsIG1vZHVsZSBzeXN0ZW0sIC4uLikuXG4gKi9cbmNvbnN0IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlM6IFJlYWRvbmx5U2V0PHN0cmluZz4gPVxuICAgIG5ldyBTZXQoWydmaWxlb3ZlcnZpZXcnLCAnZXh0ZXJucycsICdtb2ROYW1lJywgJ21vZHMnLCAncGludG9tb2R1bGUnXSk7XG5cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBnaXZlbiBjb21tZW50IGlzIGEgXFxAZmlsZW92ZXJ2aWV3IHN0eWxlIGNvbW1lbnQgaW4gdGhlIENsb3N1cmUgc2Vuc2UsIGkuZS4gYVxuICogY29tbWVudCB0aGF0IGhhcyBKU0RvYyB0YWdzIG1hcmtpbmcgaXQgYXMgYSBmaWxlb3ZlcnZpZXcgY29tbWVudC5cbiAqIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIFR5cGVTY3JpcHQncyB1bmRlcnN0YW5kaW5nIG9mIHRoZSBjb25jZXB0LCB3aGVyZSBhIGZpbGUgY29tbWVudFxuICogaXMgYSBjb21tZW50IHNlcGFyYXRlZCBmcm9tIHRoZSByZXN0IG9mIHRoZSBmaWxlIGJ5IGEgZG91YmxlIG5ld2xpbmUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50KHRleHQ6IHN0cmluZykge1xuICBjb25zdCBjdXJyZW50ID0ganNkb2MucGFyc2UodGV4dCk7XG4gIHJldHVybiBjdXJyZW50ICE9PSBudWxsICYmIGN1cnJlbnQudGFncy5zb21lKHQgPT4gRklMRU9WRVJWSUVXX0NPTU1FTlRfTUFSS0VSUy5oYXModC50YWdOYW1lKSk7XG59XG5cbi8qKlxuICogQSB0cmFuc2Zvcm1lciB0aGF0IGVuc3VyZXMgdGhlIGVtaXR0ZWQgSlMgZmlsZSBoYXMgYW4gXFxAZmlsZW92ZXJ2aWV3IGNvbW1lbnQgdGhhdCBjb250YWlucyBhblxuICogXFxAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IGFubm90YXRpb24gYnkgZWl0aGVyIGFkZGluZyBvciB1cGRhdGluZyBhbiBleGlzdGluZyBjb21tZW50LlxuICovXG5leHBvcnQgZnVuY3Rpb24gdHJhbnNmb3JtRmlsZW92ZXJ2aWV3Q29tbWVudChjb250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpOlxuICAgIChzZjogdHMuU291cmNlRmlsZSkgPT4gdHMuU291cmNlRmlsZSB7XG4gIHJldHVybiAoc2Y6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICBsZXQgY29tbWVudHM6IHRzLlN5bnRoZXNpemVkQ29tbWVudFtdID0gW107XG4gICAgLy8gVXNlIHRyYWlsaW5nIGNvbW1lbnRzIGJlY2F1c2UgdGhhdCdzIHdoYXQgdHJhbnNmb3JtZXJfdXRpbC50cyBjcmVhdGVzIChpLmUuIGJ5IGNvbnZlbnRpb24pLlxuICAgIGlmIChzZi5zdGF0ZW1lbnRzLmxlbmd0aCAmJiBzZi5zdGF0ZW1lbnRzWzBdLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuTm90RW1pdHRlZFN0YXRlbWVudCkge1xuICAgICAgY29tbWVudHMgPSB0cy5nZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzKHNmLnN0YXRlbWVudHNbMF0pIHx8IFtdO1xuICAgIH1cblxuICAgIGxldCBmaWxlb3ZlcnZpZXdJZHggPSAtMTtcbiAgICBsZXQgcGFyc2VkOiB7dGFnczoganNkb2MuVGFnW119fG51bGwgPSBudWxsO1xuICAgIGZvciAobGV0IGkgPSBjb21tZW50cy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuICAgICAgY29uc3QgY3VycmVudCA9IGpzZG9jLnBhcnNlQ29udGVudHMoY29tbWVudHNbaV0udGV4dCk7XG4gICAgICBpZiAoY3VycmVudCAhPT0gbnVsbCAmJiBjdXJyZW50LnRhZ3Muc29tZSh0ID0+IEZJTEVPVkVSVklFV19DT01NRU5UX01BUktFUlMuaGFzKHQudGFnTmFtZSkpKSB7XG4gICAgICAgIGZpbGVvdmVydmlld0lkeCA9IGk7XG4gICAgICAgIHBhcnNlZCA9IGN1cnJlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBBZGQgYSBAc3VwcHJlc3Mge2NoZWNrVHlwZXN9IHRhZyB0byBlYWNoIHNvdXJjZSBmaWxlJ3MgSlNEb2MgY29tbWVudCxcbiAgICAvLyBiZWluZyBjYXJlZnVsIHRvIHJldGFpbiBleGlzdGluZyBjb21tZW50cyBhbmQgdGhlaXIgQHN1cHByZXNzJ2lvbnMuXG4gICAgLy8gQ2xvc3VyZSBDb21waWxlciBjb25zaWRlcnMgdGhlICpsYXN0KiBjb21tZW50IHdpdGggQGZpbGVvdmVydmlldyAob3IgQGV4dGVybnMgb3IgQG5vY29tcGlsZSlcbiAgICAvLyB0aGF0IGhhcyBub3QgYmVlbiBhdHRhY2hlZCB0byBzb21lIG90aGVyIHRyZWUgbm9kZSB0byBiZSB0aGUgZmlsZSBvdmVydmlldyBjb21tZW50LCBhbmRcbiAgICAvLyBvbmx5IGFwcGxpZXMgQHN1cHByZXNzIHRhZ3MgZnJvbSBpdC5cbiAgICAvLyBBSkQgY29uc2lkZXJzICphbnkqIGNvbW1lbnQgbWVudGlvbmluZyBAZmlsZW92ZXJ2aWV3LlxuICAgIGlmICghcGFyc2VkKSB7XG4gICAgICAvLyBObyBleGlzdGluZyBjb21tZW50IHRvIG1lcmdlIHdpdGgsIGp1c3QgZW1pdCBhIG5ldyBvbmUuXG4gICAgICByZXR1cm4gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZik7XG4gICAgfVxuXG4gICAgLy8gQWRkIEBzdXBwcmVzcyB7Y2hlY2tUeXBlc30sIG9yIGFkZCB0byB0aGUgbGlzdCBpbiBhbiBleGlzdGluZyBAc3VwcHJlc3MgdGFnLlxuICAgIC8vIENsb3N1cmUgY29tcGlsZXIgYmFyZnMgaWYgdGhlcmUncyBhIGR1cGxpY2F0ZWQgQHN1cHByZXNzIHRhZyBpbiBhIGZpbGUsIHNvIHRoZSB0YWcgbXVzdFxuICAgIC8vIG9ubHkgYXBwZWFyIG9uY2UgYW5kIGJlIG1lcmdlZC5cbiAgICBjb25zdCB7dGFnc30gPSBwYXJzZWQ7XG4gICAgY29uc3Qgc3VwcHJlc3NUYWcgPSB0YWdzLmZpbmQodCA9PiB0LnRhZ05hbWUgPT09ICdzdXBwcmVzcycpO1xuICAgIGlmIChzdXBwcmVzc1RhZykge1xuICAgICAgY29uc3Qgc3VwcHJlc3Npb25zID0gc3VwcHJlc3NUYWcudHlwZSB8fCAnJztcbiAgICAgIGNvbnN0IHN1cHByZXNzaW9uc0xpc3QgPSBzdXBwcmVzc2lvbnMuc3BsaXQoJywnKS5tYXAocyA9PiBzLnRyaW0oKSk7XG4gICAgICBpZiAoc3VwcHJlc3Npb25zTGlzdC5pbmRleE9mKCdjaGVja1R5cGVzJykgPT09IC0xKSB7XG4gICAgICAgIHN1cHByZXNzaW9uc0xpc3QucHVzaCgnY2hlY2tUeXBlcycpO1xuICAgICAgfVxuICAgICAgc3VwcHJlc3NUYWcudHlwZSA9IHN1cHByZXNzaW9uc0xpc3Quam9pbignLCcpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0YWdzLnB1c2goe1xuICAgICAgICB0YWdOYW1lOiAnc3VwcHJlc3MnLFxuICAgICAgICB0eXBlOiAnY2hlY2tUeXBlcycsXG4gICAgICAgIHRleHQ6ICdjaGVja2VkIGJ5IHRzYycsXG4gICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgY29tbWVudFRleHQgPSBqc2RvYy50b1N0cmluZ1dpdGhvdXRTdGFydEVuZCh0YWdzKTtcbiAgICBjb21tZW50c1tmaWxlb3ZlcnZpZXdJZHhdLnRleHQgPSBjb21tZW50VGV4dDtcbiAgICAvLyBzZiBkb2VzIG5vdCBuZWVkIHRvIGJlIHVwZGF0ZWQsIHN5bnRoZXNpemVkIGNvbW1lbnRzIGFyZSBtdXRhYmxlLlxuICAgIHJldHVybiBzZjtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWRkTmV3RmlsZW92ZXJ2aWV3Q29tbWVudChzZjogdHMuU291cmNlRmlsZSk6IHRzLlNvdXJjZUZpbGUge1xuICBjb25zdCBjb21tZW50VGV4dCA9IGpzZG9jLnRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKFtcbiAgICB7dGFnTmFtZTogJ2ZpbGVvdmVydmlldycsIHRleHQ6ICdhZGRlZCBieSB0c2lja2xlJ30sXG4gICAge3RhZ05hbWU6ICdzdXBwcmVzcycsIHR5cGU6ICdjaGVja1R5cGVzJywgdGV4dDogJ2NoZWNrZWQgYnkgdHNjJ30sXG4gIF0pO1xuICBsZXQgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSBjcmVhdGVOb3RFbWl0dGVkU3RhdGVtZW50KHNmKTtcbiAgc3ludGhldGljRmlyc3RTdGF0ZW1lbnQgPSB0cy5hZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQoXG4gICAgICBzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgdHMuU3ludGF4S2luZC5NdWx0aUxpbmVDb21tZW50VHJpdmlhLCBjb21tZW50VGV4dCwgdHJ1ZSk7XG4gIHJldHVybiB1cGRhdGVTb3VyY2VGaWxlTm9kZShzZiwgdHMuY3JlYXRlTm9kZUFycmF5KFtzeW50aGV0aWNGaXJzdFN0YXRlbWVudCwgLi4uc2Yuc3RhdGVtZW50c10pKTtcbn1cbiJdfQ==

@@ -364,6 +364,10 @@ /**

var tag = { tagName: tagName, parameterName: parameterName, type: type, text: text };
if (optional)
// Note: a param can either be optional or a rest param; if we merged an
// optional and rest param together, prefer marking it as a rest param.
if (restParam) {
tag.restParam = true;
}
else if (optional) {
tag.optional = true;
if (restParam)
tag.restParam = true;
}
return tag;

@@ -374,2 +378,2 @@ var e_3, _a;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvanNkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUE0QztJQXNDNUM7Ozs7OztPQU1HO0lBQ0gsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQyxVQUFVLEVBQU8sVUFBVTtRQUMzQixRQUFRLEVBQVMsdUJBQXVCO1FBQ3hDLE9BQU8sRUFBVSxVQUFVO1FBQzNCLGFBQWEsRUFBSSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxZQUFZO1FBQzdCLE1BQU0sRUFBVyxNQUFNO1FBQ3ZCLFVBQVUsRUFBTyxTQUFTO1FBQzFCLGFBQWEsRUFBSSxNQUFNO1FBQ3ZCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFNBQVMsRUFBUSxTQUFTO1FBQzFCLGNBQWMsRUFBRyxPQUFPO1FBQ3hCLGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMsUUFBUSxFQUFTLElBQUk7UUFDckIsYUFBYSxFQUFJLFFBQVE7UUFDekIsWUFBWSxFQUFLLGNBQWM7UUFDL0IsWUFBWSxFQUFLLFdBQVc7UUFDNUIsY0FBYyxFQUFHLGNBQWM7UUFDL0IsZUFBZSxFQUFFLHNCQUFzQjtRQUN2QyxPQUFPLEVBQVUsU0FBUztRQUMxQixNQUFNLEVBQVcsU0FBUztRQUMxQixVQUFVLEVBQU8sU0FBUztRQUMxQixNQUFNLEVBQVcsVUFBVTtRQUMzQixTQUFTLEVBQVEsWUFBWTtRQUM3QixXQUFXLEVBQU0sZUFBZTtRQUNoQyxVQUFVLEVBQU8sT0FBTztRQUN4QixTQUFTLEVBQVEsT0FBTztRQUN4QixhQUFhLEVBQUksaUJBQWlCO1FBQ2xDLFVBQVUsRUFBTyxhQUFhO1FBQzlCLFNBQVMsRUFBUSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFlBQVksRUFBSyxVQUFVO1FBQzNCLFFBQVEsRUFBUyxTQUFTO1FBQzFCLEtBQUssRUFBWSxtQkFBbUI7UUFDcEMsUUFBUSxFQUFTLFVBQVU7UUFDM0IsVUFBVSxFQUFPLE1BQU07UUFDdkIsUUFBUSxFQUFTLE1BQU07UUFDdkIsU0FBUyxFQUFRLGNBQWM7UUFDL0IsU0FBUyxFQUFRLFdBQVc7UUFDNUIsV0FBVztLQUNaLENBQUMsQ0FBQztJQUVIOzs7O09BSUc7SUFDSCxJQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxDQUFDO1FBQ25DLFVBQVUsRUFBRSxPQUFPLEVBQU8sWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQU8sU0FBUyxFQUFFLE9BQU87UUFDdEYsVUFBVSxFQUFFLFlBQVksRUFBRSxXQUFXLEVBQUcsT0FBTyxFQUFRLFdBQVcsRUFBRSxTQUFTLEVBQUUsUUFBUTtRQUN2RixRQUFRLEVBQUksUUFBUSxFQUFNLFVBQVUsRUFBSSxNQUFNLEVBQVMsTUFBTSxFQUFPLFNBQVM7S0FDOUUsQ0FBQyxDQUFDO0lBRUg7OztPQUdHO0lBQ0gsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNwQyxPQUFPO1FBQ1AsUUFBUTtRQUNSLE9BQU87UUFDUCxRQUFRO0tBQ1QsQ0FBQyxDQUFDO0lBWUg7OztPQUdHO0lBQ0gsb0dBQW9HO0lBQ3BHLGdHQUFnRztJQUNoRyw4RkFBOEY7SUFDOUYsNENBQTRDO0lBQzVDLGVBQXNCLE9BQWU7UUFDbkMsbUVBQW1FO1FBQ25FLE9BQU8sR0FBRywyQkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4QyxtRUFBbUU7UUFDbkUsaUVBQWlFO1FBQ2pFLGdFQUFnRTtRQUNoRSxJQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7UUFDdEQsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7WUFBQyxNQUFNLENBQUMsSUFBSSxDQUFDO1FBQ3hCLE1BQU0sQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQVRELHNCQVNDO0lBRUQ7Ozs7O09BS0c7SUFDSCx1QkFBOEIsV0FBbUI7UUFDL0MsbUVBQW1FO1FBQ25FLFdBQVcsR0FBRywyQkFBb0IsQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUNoRCx3REFBd0Q7UUFDeEQsV0FBVyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ3JELElBQU0sS0FBSyxHQUFHLFdBQVcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEMsSUFBTSxJQUFJLEdBQVUsRUFBRSxDQUFDO1FBQ3ZCLElBQU0sUUFBUSxHQUFhLEVBQUUsQ0FBQzs7WUFDOUIsR0FBRyxDQUFDLENBQWUsSUFBQSxVQUFBLFNBQUEsS0FBSyxDQUFBLDRCQUFBO2dCQUFuQixJQUFNLElBQUksa0JBQUE7Z0JBQ2IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDeEMsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDTixJQUFBLHFCQUEwQixFQUF6QixTQUFDLEVBQUUsZUFBTyxFQUFFLFlBQUksQ0FBVTtvQkFDL0IsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7d0JBQzFCLDBCQUEwQjt3QkFDMUIsT0FBTyxHQUFHLFFBQVEsQ0FBQztvQkFDckIsQ0FBQztvQkFDRCxJQUFJLElBQUksU0FBa0IsQ0FBQztvQkFDM0IsRUFBRSxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDdEMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFJLE9BQU8sMkRBQXdELENBQUMsQ0FBQzt3QkFDbkYsUUFBUSxDQUFDLENBQUUsNENBQTRDO29CQUN6RCxDQUFDO29CQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxxQkFBcUIsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pFLFFBQVEsQ0FBQyxJQUFJLENBQ1QsNkJBQTJCLE9BQU8sNkNBQTBDOzRCQUM1RSx1QkFBdUIsQ0FBQyxDQUFDO3dCQUM3QixRQUFRLENBQUM7b0JBQ1gsQ0FBQztvQkFBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLFVBQVUsQ0FBQyxDQUFDLENBQUM7d0JBQ2xDLElBQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQzt3QkFDbkQsRUFBRSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDOzRCQUNuQixRQUFRLENBQUMsSUFBSSxDQUFDLGdDQUE2QixJQUFJLE9BQUcsQ0FBQyxDQUFDO3dCQUN0RCxDQUFDO3dCQUFDLElBQUksQ0FBQyxDQUFDOzRCQUNOLDZCQUE4QixFQUEzQixZQUFJLEVBQUUsWUFBSSxDQUFrQjt3QkFDakMsQ0FBQztvQkFDSCxDQUFDO29CQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQzt3QkFDOUIsUUFBUSxDQUFDLElBQUksQ0FBQyw2REFBNkQsQ0FBQyxDQUFDO3dCQUM3RSxRQUFRLENBQUM7b0JBQ1gsQ0FBQztvQkFFRCw0Q0FBNEM7b0JBQzVDLElBQUksYUFBYSxTQUFrQixDQUFDO29CQUNwQyxFQUFFLENBQUMsQ0FBQyxPQUFPLEtBQUssT0FBTyxDQUFDLENBQUMsQ0FBQzt3QkFDeEIsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7d0JBQ25DLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQzs0QkFBQyxxQkFBZ0MsRUFBL0IsU0FBQyxFQUFFLHFCQUFhLEVBQUUsWUFBSSxDQUFVO29CQUM5QyxDQUFDO29CQUVELElBQU0sR0FBRyxHQUFRLEVBQUMsT0FBTyxTQUFBLEVBQUMsQ0FBQztvQkFDM0IsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDO3dCQUFDLEdBQUcsQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO29CQUNyRCxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7b0JBQzFCLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQzt3QkFBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDakIsQ0FBQztnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTiwrREFBK0Q7b0JBQy9ELHFEQUFxRDtvQkFDckQsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO3dCQUN0QixJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUMsT0FBTyxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFDLENBQUMsQ0FBQztvQkFDdkMsQ0FBQztvQkFBQyxJQUFJLENBQUMsQ0FBQzt3QkFDTixJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQzt3QkFDdEMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLElBQUksQ0FBQztvQkFDcEQsQ0FBQztnQkFDSCxDQUFDO2FBQ0Y7Ozs7Ozs7OztRQUNELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLENBQUMsRUFBQyxJQUFJLE1BQUEsRUFBRSxRQUFRLFVBQUEsRUFBQyxDQUFDO1FBQzFCLENBQUM7UUFDRCxNQUFNLENBQUMsRUFBQyxJQUFJLE1BQUEsRUFBQyxDQUFDOztJQUNoQixDQUFDO0lBaEVELHNDQWdFQztJQUVEOzs7T0FHRztJQUNILHFCQUFxQixHQUFRLEVBQUUsZUFBbUM7UUFBbkMsZ0NBQUEsRUFBQSxzQkFBc0IsR0FBRyxFQUFVO1FBQ2hFLElBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztRQUNiLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2hCLEVBQUUsQ0FBQyxDQUFDLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsSUFBSSxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQy9FLHFEQUFxRDtnQkFDckQsc0NBQXNDO2dCQUN0Qyw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0Qsd0NBQXdDO2dCQUN4QywrREFBK0Q7Z0JBQy9ELDZEQUE2RDtnQkFDN0QsNERBQTREO2dCQUM1RCw4REFBOEQ7Z0JBQzlELDZEQUE2RDtnQkFDN0QsaUNBQWlDO2dCQUNqQyxHQUFHLElBQUksU0FBTyxHQUFHLENBQUMsT0FBUyxDQUFDO1lBQzlCLENBQUM7WUFBQyxJQUFJLENBQUMsQ0FBQztnQkFDTixHQUFHLElBQUksT0FBSyxHQUFHLENBQUMsT0FBUyxDQUFDO1lBQzVCLENBQUM7UUFDSCxDQUFDO1FBQ0QsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7WUFDYixHQUFHLElBQUksSUFBSSxDQUFDO1lBQ1osRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xCLEdBQUcsSUFBSSxLQUFLLENBQUM7WUFDZixDQUFDO1lBQ0QsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUM7WUFDaEIsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7Z0JBQ2pCLEdBQUcsSUFBSSxHQUFHLENBQUM7WUFDYixDQUFDO1lBQ0QsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNiLENBQUM7UUFDRCxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztZQUN0QixHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFDakMsQ0FBQztRQUNELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2IsR0FBRyxJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0MsQ0FBQztRQUNELE1BQU0sQ0FBQyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQscUVBQXFFO0lBQ3JFLElBQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUUvQyxtR0FBbUc7SUFDbkcsaUNBQXdDLElBQVcsRUFBRSxlQUFtQztRQUFuQyxnQ0FBQSxFQUFBLHNCQUFzQixHQUFHLEVBQVU7UUFDdEYsTUFBTSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLGVBQWUsQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFGRCwwREFFQztJQUVELGtFQUFrRTtJQUNsRSxrQkFBeUIsSUFBVyxFQUFFLGVBQW1DO1FBQW5DLGdDQUFBLEVBQUEsc0JBQXNCLEdBQUcsRUFBVTtRQUN2RSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUZELDRCQUVDO0lBRUQsbUJBQ0ksSUFBVyxFQUFFLGVBQXdCLEVBQUUsZUFBbUM7UUFBbkMsZ0NBQUEsRUFBQSxzQkFBc0IsR0FBRyxFQUFVO1FBQzVFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUNqQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDdEIsSUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLE9BQU8sS0FBSyxNQUFNLElBQUksR0FBRyxDQUFDLE9BQU8sS0FBSyxZQUFZLENBQUM7Z0JBQ3hELENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pDLCtFQUErRTtnQkFDL0UsdUJBQXVCO2dCQUN2QixNQUFNLENBQUMsS0FBSyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsZUFBZSxDQUFDLEdBQUcsT0FBTyxDQUFDO1lBQzdELENBQUM7WUFDRCxvREFBb0Q7UUFDdEQsQ0FBQztRQUVELElBQUksR0FBRyxHQUFHLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDNUMsSUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQzs7WUFDbEMsR0FBRyxDQUFDLENBQWMsSUFBQSxTQUFBLFNBQUEsSUFBSSxDQUFBLDBCQUFBO2dCQUFqQixJQUFNLEdBQUcsaUJBQUE7Z0JBQ1osRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNoRSxRQUFRLENBQUM7Z0JBQ1gsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDekIsR0FBRyxJQUFJLElBQUksQ0FBQztnQkFDWiwrRUFBK0U7Z0JBQy9FLEdBQUcsSUFBSSxXQUFXLENBQUMsR0FBRyxFQUFFLGVBQWUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ25FLEdBQUcsSUFBSSxJQUFJLENBQUM7YUFDYjs7Ozs7Ozs7O1FBQ0QsR0FBRyxJQUFJLGVBQWUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7UUFDdkMsTUFBTSxDQUFDLEdBQUcsQ0FBQzs7SUFDYixDQUFDO0lBRUQsaUZBQWlGO0lBQ2pGLGVBQXNCLElBQVc7UUFDL0IsSUFBTSxRQUFRLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNuQyxJQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBQ3pDLElBQU0sS0FBSyxHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDaEMsSUFBTSxLQUFLLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUNoQyxpRkFBaUY7UUFDakYsSUFBSSxRQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLElBQUksU0FBUyxHQUFHLEtBQUssQ0FBQzs7WUFDdEIsR0FBRyxDQUFDLENBQWMsSUFBQSxTQUFBLFNBQUEsSUFBSSxDQUFBLDBCQUFBO2dCQUFqQixJQUFNLEtBQUcsaUJBQUE7Z0JBQ1osRUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLE9BQU8sQ0FBQztvQkFBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztnQkFDM0MsRUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLGFBQWEsQ0FBQztvQkFBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEtBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDN0QsRUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLElBQUksQ0FBQztvQkFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsRUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLElBQUksQ0FBQztvQkFBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDbEMsRUFBRSxDQUFDLENBQUMsS0FBRyxDQUFDLFFBQVEsQ0FBQztvQkFBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO2dCQUNsQyxFQUFFLENBQUMsQ0FBQyxLQUFHLENBQUMsU0FBUyxDQUFDO29CQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7YUFDckM7Ozs7Ozs7OztRQUVELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFnQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBRyxDQUFDLENBQUM7UUFDMUUsQ0FBQztRQUNELElBQU0sT0FBTyxHQUFHLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDL0MsSUFBTSxhQUFhLEdBQ2YsY0FBYyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDbEYsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDdEUsSUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFDeEUsSUFBTSxHQUFHLEdBQVEsRUFBQyxPQUFPLFNBQUEsRUFBRSxhQUFhLGVBQUEsRUFBRSxJQUFJLE1BQUEsRUFBRSxJQUFJLE1BQUEsRUFBQyxDQUFDO1FBQ3RELEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQztZQUFDLEdBQUcsQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO1FBQ2xDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQztZQUFDLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3BDLE1BQU0sQ0FBQyxHQUFHLENBQUM7O0lBQ2IsQ0FBQztJQTdCRCxzQkE2QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7bm9ybWFsaXplTGluZUVuZGluZ3N9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZVNjcmlwdCBoYXMgYW4gQVBJIGZvciBKU0RvYyBhbHJlYWR5LCBidXQgaXQncyBub3QgZXhwb3NlZC5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNzM5M1xuICogRm9yIG5vdyB3ZSBjcmVhdGUgdHlwZXMgdGhhdCBhcmUgc2ltaWxhciB0byB0aGVpcnMgc28gdGhhdCBtaWdyYXRpbmdcbiAqIHRvIHRoZWlyIEFQSSB3aWxsIGJlIGVhc2llci4gIFNlZSBlLmcuIHRzLkpTRG9jVGFnIGFuZCB0cy5KU0RvY0NvbW1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIHRhZ05hbWUgaXMgZS5nLiBcInBhcmFtXCIgaW4gYW4gQHBhcmFtIGRlY2xhcmF0aW9uLiAgSXQgaXMgdGhlIGVtcHR5IHN0cmluZ1xuICAgKiBmb3IgdGhlIHBsYWluIHRleHQgZG9jdW1lbnRhdGlvbiB0aGF0IG9jY3VycyBiZWZvcmUgYW55IEBmb28gbGluZXMuXG4gICAqL1xuICB0YWdOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBwYXJhbWV0ZXJOYW1lIGlzIHRoZSB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24gcGFyYW1ldGVyLCBlLmcuIFwiZm9vXCJcbiAgICogaW4gYFxcQHBhcmFtIGZvbyBUaGUgZm9vIHBhcmFtYFxuICAgKi9cbiAgcGFyYW1ldGVyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGEgSlNEb2MgXFxAcGFyYW0sIFxcQHR5cGUgZXRjIHRhZywgcmVuZGVyZWQgaW4gY3VybHkgYnJhY2VzLlxuICAgKiBDYW4gYWxzbyBob2xkIHRoZSB0eXBlIG9mIGFuIFxcQHN1cHByZXNzLlxuICAgKi9cbiAgdHlwZT86IHN0cmluZztcbiAgLyoqIG9wdGlvbmFsIGlzIHRydWUgZm9yIG9wdGlvbmFsIGZ1bmN0aW9uIHBhcmFtZXRlcnMuICovXG4gIG9wdGlvbmFsPzogYm9vbGVhbjtcbiAgLyoqIHJlc3RQYXJhbSBpcyB0cnVlIGZvciBcIi4uLng6IGZvb1tdXCIgZnVuY3Rpb24gcGFyYW1ldGVycy4gKi9cbiAgcmVzdFBhcmFtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIGRlc3RydWN0dXJpbmcgaXMgdHJ1ZSBmb3IgZGVzdHJ1Y3R1cmluZyBiaW5kIHBhcmFtZXRlcnMsIHdoaWNoIHJlcXVpcmVcbiAgICogbm9uLW51bGwgYXJndW1lbnRzIG9uIHRoZSBDbG9zdXJlIHNpZGUuICBDYW4gbGlrZWx5IHJlbW92ZSB0aGlzXG4gICAqIG9uY2UgVHlwZVNjcmlwdCBudWxsYWJsZSB0eXBlcyBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgZGVzdHJ1Y3R1cmluZz86IGJvb2xlYW47XG4gIC8qKiBBbnkgcmVtYWluaW5nIHRleHQgb24gdGhlIHRhZywgZS5nLiB0aGUgZGVzY3JpcHRpb24uICovXG4gIHRleHQ/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBsaXN0IG9mIGFsbCBKU0RvYyB0YWdzIGFsbG93ZWQgYnkgdGhlIENsb3N1cmUgY29tcGlsZXIuXG4gKiBUaGUgcHVibGljIENsb3N1cmUgZG9jcyBkb24ndCBsaXN0IGFsbCB0aGUgdGFncyBpdCBhbGxvd3M7IHRoaXMgbGlzdCBjb21lc1xuICogZnJvbSB0aGUgY29tcGlsZXIgc291cmNlIGl0c2VsZi5cbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvY2xvc3VyZS1jb21waWxlci9ibG9iL21hc3Rlci9zcmMvY29tL2dvb2dsZS9qYXZhc2NyaXB0L2pzY29tcC9wYXJzaW5nL0Fubm90YXRpb24uamF2YVxuICogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2Jsb2IvbWFzdGVyL3NyYy9jb20vZ29vZ2xlL2phdmFzY3JpcHQvanNjb21wL3BhcnNpbmcvUGFyc2VyQ29uZmlnLnByb3BlcnRpZXNcbiAqL1xuY29uc3QgSlNET0NfVEFHU19XSElURUxJU1QgPSBuZXcgU2V0KFtcbiAgJ2Fic3RyYWN0JywgICAgICAnYXJndW1lbnQnLFxuICAnYXV0aG9yJywgICAgICAgICdjb25zaXN0ZW50SWRHZW5lcmF0b3InLFxuICAnY29uc3QnLCAgICAgICAgICdjb25zdGFudCcsXG4gICdjb25zdHJ1Y3RvcicsICAgJ2NvcHlyaWdodCcsXG4gICdkZWZpbmUnLCAgICAgICAgJ2RlcHJlY2F0ZWQnLFxuICAnZGVzYycsICAgICAgICAgICdkaWN0JyxcbiAgJ2Rpc3Bvc2VzJywgICAgICAnZW5oYW5jZScsXG4gICdlbmhhbmNlYWJsZScsICAgJ2VudW0nLFxuICAnZXhwb3J0JywgICAgICAgICdleHBvc2UnLFxuICAnZXh0ZW5kcycsICAgICAgICdleHRlcm5zJyxcbiAgJ2ZpbGVvdmVydmlldycsICAnZmluYWwnLFxuICAnaGFzc295ZGVsY2FsbCcsICdoYXNzb3lkZWx0ZW1wbGF0ZScsXG4gICdoaWRkZW4nLCAgICAgICAgJ2lkJyxcbiAgJ2lkR2VuZXJhdG9yJywgICAnaWdub3JlJyxcbiAgJ2ltcGxlbWVudHMnLCAgICAnaW1wbGljaXRDYXN0JyxcbiAgJ2luaGVyaXREb2MnLCAgICAnaW50ZXJmYWNlJyxcbiAgJ2phZ2dlckluamVjdCcsICAnamFnZ2VyTW9kdWxlJyxcbiAgJ2phZ2dlclByb3ZpZGUnLCAnamFnZ2VyUHJvdmlkZVByb21pc2UnLFxuICAnbGVuZHMnLCAgICAgICAgICdsaWNlbnNlJyxcbiAgJ2xpbmsnLCAgICAgICAgICAnbWVhbmluZycsXG4gICdtb2RpZmllcycsICAgICAgJ21vZE5hbWUnLFxuICAnbW9kcycsICAgICAgICAgICduZ0luamVjdCcsXG4gICdub2FsaWFzJywgICAgICAgJ25vY29sbGFwc2UnLFxuICAnbm9jb21waWxlJywgICAgICdub3NpZGVlZmZlY3RzJyxcbiAgJ292ZXJyaWRlJywgICAgICAnb3duZXInLFxuICAncGFja2FnZScsICAgICAgICdwYXJhbScsXG4gICdwaW50b21vZHVsZScsICAgJ3BvbHltZXJCZWhhdmlvcicsXG4gICdwcmVzZXJ2ZScsICAgICAgJ3ByZXNlcnZlVHJ5JyxcbiAgJ3ByaXZhdGUnLCAgICAgICAncHJvdGVjdGVkJyxcbiAgJ3B1YmxpYycsICAgICAgICAncmVjb3JkJyxcbiAgJ3JlcXVpcmVjc3MnLCAgICAncmVxdWlyZXMnLFxuICAncmV0dXJuJywgICAgICAgICdyZXR1cm5zJyxcbiAgJ3NlZScsICAgICAgICAgICAnc3RhYmxlSWRHZW5lcmF0b3InLFxuICAnc3RydWN0JywgICAgICAgICdzdXBwcmVzcycsXG4gICd0ZW1wbGF0ZScsICAgICAgJ3RoaXMnLFxuICAndGhyb3dzJywgICAgICAgICd0eXBlJyxcbiAgJ3R5cGVkZWYnLCAgICAgICAndW5yZXN0cmljdGVkJyxcbiAgJ3ZlcnNpb24nLCAgICAgICAnd2l6YWN0aW9uJyxcbiAgJ3dpem1vZHVsZScsXG5dKTtcblxuLyoqXG4gKiBBIGxpc3Qgb2YgSlNEb2MgQHRhZ3MgdGhhdCBhcmUgbmV2ZXIgYWxsb3dlZCBpbiBUeXBlU2NyaXB0IHNvdXJjZS4gVGhlc2UgYXJlIENsb3N1cmUgdGFncyB0aGF0XG4gKiBjYW4gYmUgZXhwcmVzc2VkIGluIHRoZSBUeXBlU2NyaXB0IHN1cmZhY2Ugc3ludGF4LiBBcyB0c2lja2xlJ3MgZW1pdCB3aWxsIG1hbmdsZSB0eXBlIG5hbWVzLFxuICogdGhlc2Ugd2lsbCBjYXVzZSBDbG9zdXJlIENvbXBpbGVyIGlzc3VlcyBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLlxuICovXG5jb25zdCBKU0RPQ19UQUdTX0JMQUNLTElTVCA9IG5ldyBTZXQoW1xuICAnYXVnbWVudHMnLCAnY2xhc3MnLCAgICAgICdjb25zdHJ1Y3RzJywgJ2NvbnN0cnVjdG9yJywgJ2VudW0nLCAgICAgICdleHRlbmRzJywgJ2ZpZWxkJyxcbiAgJ2Z1bmN0aW9uJywgJ2ltcGxlbWVudHMnLCAnaW50ZXJmYWNlJywgICdsZW5kcycsICAgICAgICduYW1lc3BhY2UnLCAncHJpdmF0ZScsICdwdWJsaWMnLFxuICAncmVjb3JkJywgICAnc3RhdGljJywgICAgICd0ZW1wbGF0ZScsICAgJ3RoaXMnLCAgICAgICAgJ3R5cGUnLCAgICAgICd0eXBlZGVmJyxcbl0pO1xuXG4vKipcbiAqIEEgbGlzdCBvZiBKU0RvYyBAdGFncyB0aGF0IG1pZ2h0IGluY2x1ZGUgYSB7dHlwZX0gYWZ0ZXIgdGhlbS4gT25seSBiYW5uZWQgd2hlbiBhIHR5cGUgaXMgcGFzc2VkLlxuICogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgaW5jbHVkZSB0YWdzIHRoYXQgY2FycnkgYSBub24tdHlwZSBzeXN0ZW0gdHlwZSwgZS5nLiBcXEBzdXBwcmVzcy5cbiAqL1xuY29uc3QgSlNET0NfVEFHU19XSVRIX1RZUEVTID0gbmV3IFNldChbXG4gICdjb25zdCcsXG4gICdleHBvcnQnLFxuICAncGFyYW0nLFxuICAncmV0dXJuJyxcbl0pO1xuXG4vKipcbiAqIFJlc3VsdCBvZiBwYXJzaW5nIGEgSlNEb2MgY29tbWVudC4gU3VjaCBjb21tZW50cyBlc3NlbnRpYWxseSBhcmUgYnVpbHQgb2YgYSBsaXN0IG9mIHRhZ3MuXG4gKiBJbiBhZGRpdGlvbiB0byB0aGUgdGFncywgdGhpcyBtaWdodCBhbHNvIGNvbnRhaW4gd2FybmluZ3MgdG8gaW5kaWNhdGUgbm9uLWZhdGFsIHByb2JsZW1zXG4gKiB3aGlsZSBmaW5kaW5nIHRoZSB0YWdzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhcnNlZEpTRG9jQ29tbWVudCB7XG4gIHRhZ3M6IFRhZ1tdO1xuICB3YXJuaW5ncz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIHBhcnNlIHBhcnNlcyBKU0RvYyBvdXQgb2YgYSBjb21tZW50IHN0cmluZy5cbiAqIFJldHVybnMgbnVsbCBpZiBjb21tZW50IGlzIG5vdCBKU0RvYy5cbiAqL1xuLy8gVE9ETyhtYXJ0aW5wcm9ic3QpOiByZXByZXNlbnRpbmcgSlNEb2MgYXMgYSBsaXN0IG9mIHRhZ3MgaXMgdG9vIHNpbXBsaXN0aWMuIFdlIG5lZWQgZnVuY3Rpb25hbGl0eVxuLy8gc3VjaCBhcyBtZXJnaW5nIChiZWxvdyksIGRlLWR1cGxpY2F0aW5nIGNlcnRhaW4gdGFncyAoQGRlcHJlY2F0ZWQpLCBhbmQgc3BlY2lhbCB0cmVhdG1lbnQgZm9yXG4vLyBvdGhlcnMgKGUuZy4gQHN1cHByZXNzKS4gV2Ugc2hvdWxkIGludHJvZHVjZSBhIHByb3BlciBtb2RlbCBjbGFzcyB3aXRoIGEgbW9yZSBzdWl0YWJsZSBkYXRhXG4vLyBzdHJ1Y3VyZSAoZS5nLiBhIE1hcDxUYWdOYW1lLCBWYWx1ZXNbXT4pLlxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGNvbW1lbnQ6IHN0cmluZyk6IFBhcnNlZEpTRG9jQ29tbWVudHxudWxsIHtcbiAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgcHJvcGVyIGxpbmUgZW5kaW5ncyBiZWZvcmUgcGFyc2luZyBvbiBXaW5kb3dzLlxuICBjb21tZW50ID0gbm9ybWFsaXplTGluZUVuZGluZ3MoY29tbWVudCk7XG4gIC8vIFRPRE8oZXZhbm0pOiB0aGlzIGlzIGEgcGlsZSBvZiBoYWNreSByZWdleGVzIGZvciBub3csIGJlY2F1c2Ugd2VcbiAgLy8gd291bGQgcmF0aGVyIHVzZSB0aGUgYmV0dGVyIFR5cGVTY3JpcHQgaW1wbGVtZW50YXRpb24gb2YgSlNEb2NcbiAgLy8gcGFyc2luZy4gIGh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvVHlwZVNjcmlwdC9pc3N1ZXMvNzM5M1xuICBjb25zdCBtYXRjaCA9IGNvbW1lbnQubWF0Y2goL15cXC9cXCpcXCooW1xcc1xcU10qPylcXCpcXC8kLyk7XG4gIGlmICghbWF0Y2gpIHJldHVybiBudWxsO1xuICByZXR1cm4gcGFyc2VDb250ZW50cyhtYXRjaFsxXS50cmltKCkpO1xufVxuXG4vKipcbiAqIHBhcnNlQ29udGVudHMgcGFyc2VzIEpTRG9jIG91dCBvZiBhIGNvbW1lbnQgdGV4dC5cbiAqIFJldHVybnMgbnVsbCBpZiBjb21tZW50IGlzIG5vdCBKU0RvYy5cbiAqXG4gKiBAcGFyYW0gY29tbWVudFRleHQgYSBjb21tZW50J3MgdGV4dCBjb250ZW50LCBpLmUuIHRoZSBjb21tZW50IHcvbyAvKiBhbmQgKiAvLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VDb250ZW50cyhjb21tZW50VGV4dDogc3RyaW5nKToge3RhZ3M6IFRhZ1tdLCB3YXJuaW5ncz86IHN0cmluZ1tdfXxudWxsIHtcbiAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgcHJvcGVyIGxpbmUgZW5kaW5ncyBiZWZvcmUgcGFyc2luZyBvbiBXaW5kb3dzLlxuICBjb21tZW50VGV4dCA9IG5vcm1hbGl6ZUxpbmVFbmRpbmdzKGNvbW1lbnRUZXh0KTtcbiAgLy8gU3RyaXAgYWxsIHRoZSBcIiAqIFwiIGJpdHMgZnJvbSB0aGUgZnJvbnQgb2YgZWFjaCBsaW5lLlxuICBjb21tZW50VGV4dCA9IGNvbW1lbnRUZXh0LnJlcGxhY2UoL15cXHMqXFwqPyA/L2dtLCAnJyk7XG4gIGNvbnN0IGxpbmVzID0gY29tbWVudFRleHQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCB0YWdzOiBUYWdbXSA9IFtdO1xuICBjb25zdCB3YXJuaW5nczogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgbGV0IG1hdGNoID0gbGluZS5tYXRjaCgvXkAoXFxTKykgKiguKikvKTtcbiAgICBpZiAobWF0Y2gpIHtcbiAgICAgIGxldCBbXywgdGFnTmFtZSwgdGV4dF0gPSBtYXRjaDtcbiAgICAgIGlmICh0YWdOYW1lID09PSAncmV0dXJucycpIHtcbiAgICAgICAgLy8gQSBzeW5vbnltIGZvciAncmV0dXJuJy5cbiAgICAgICAgdGFnTmFtZSA9ICdyZXR1cm4nO1xuICAgICAgfVxuICAgICAgbGV0IHR5cGU6IHN0cmluZ3x1bmRlZmluZWQ7XG4gICAgICBpZiAoSlNET0NfVEFHU19CTEFDS0xJU1QuaGFzKHRhZ05hbWUpKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goYEAke3RhZ05hbWV9IGFubm90YXRpb25zIGFyZSByZWR1bmRhbnQgd2l0aCBUeXBlU2NyaXB0IGVxdWl2YWxlbnRzYCk7XG4gICAgICAgIGNvbnRpbnVlOyAgLy8gRHJvcCB0aGUgdGFnIHNvIENsb3N1cmUgd29uJ3QgcHJvY2VzcyBpdC5cbiAgICAgIH0gZWxzZSBpZiAoSlNET0NfVEFHU19XSVRIX1RZUEVTLmhhcyh0YWdOYW1lKSAmJiB0ZXh0WzBdID09PSAneycpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChcbiAgICAgICAgICAgIGB0aGUgdHlwZSBhbm5vdGF0aW9uIG9uIEAke3RhZ05hbWV9IGlzIHJlZHVuZGFudCB3aXRoIGl0cyBUeXBlU2NyaXB0IHR5cGUsIGAgK1xuICAgICAgICAgICAgYHJlbW92ZSB0aGUgey4uLn0gcGFydGApO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ3N1cHByZXNzJykge1xuICAgICAgICBjb25zdCBzdXBwcmVzc01hdGNoID0gdGV4dC5tYXRjaCgvXlxceyguKilcXH0oLiopJC8pO1xuICAgICAgICBpZiAoIXN1cHByZXNzTWF0Y2gpIHtcbiAgICAgICAgICB3YXJuaW5ncy5wdXNoKGBtYWxmb3JtZWQgQHN1cHByZXNzIHRhZzogXCIke3RleHR9XCJgKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBbLCB0eXBlLCB0ZXh0XSA9IHN1cHByZXNzTWF0Y2g7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodGFnTmFtZSA9PT0gJ2RpY3QnKSB7XG4gICAgICAgIHdhcm5pbmdzLnB1c2goJ3VzZSBpbmRleCBzaWduYXR1cmVzIChgW2s6IHN0cmluZ106IHR5cGVgKSBpbnN0ZWFkIG9mIEBkaWN0Jyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICAvLyBHcmFiIHRoZSBwYXJhbWV0ZXIgbmFtZSBmcm9tIEBwYXJhbSB0YWdzLlxuICAgICAgbGV0IHBhcmFtZXRlck5hbWU6IHN0cmluZ3x1bmRlZmluZWQ7XG4gICAgICBpZiAodGFnTmFtZSA9PT0gJ3BhcmFtJykge1xuICAgICAgICBtYXRjaCA9IHRleHQubWF0Y2goL14oXFxTKykgPyguKikvKTtcbiAgICAgICAgaWYgKG1hdGNoKSBbXywgcGFyYW1ldGVyTmFtZSwgdGV4dF0gPSBtYXRjaDtcbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFnOiBUYWcgPSB7dGFnTmFtZX07XG4gICAgICBpZiAocGFyYW1ldGVyTmFtZSkgdGFnLnBhcmFtZXRlck5hbWUgPSBwYXJhbWV0ZXJOYW1lO1xuICAgICAgaWYgKHRleHQpIHRhZy50ZXh0ID0gdGV4dDtcbiAgICAgIGlmICh0eXBlKSB0YWcudHlwZSA9IHR5cGU7XG4gICAgICB0YWdzLnB1c2godGFnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVGV4dCB3aXRob3V0IGEgcHJlY2VkaW5nIEB0YWcgb24gaXQgaXMgZWl0aGVyIHRoZSBwbGFpbiB0ZXh0XG4gICAgICAvLyBkb2N1bWVudGF0aW9uIG9yIGEgY29udGludWF0aW9uIG9mIGEgcHJldmlvdXMgdGFnLlxuICAgICAgaWYgKHRhZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRhZ3MucHVzaCh7dGFnTmFtZTogJycsIHRleHQ6IGxpbmV9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGxhc3RUYWcgPSB0YWdzW3RhZ3MubGVuZ3RoIC0gMV07XG4gICAgICAgIGxhc3RUYWcudGV4dCA9IChsYXN0VGFnLnRleHQgfHwgJycpICsgJ1xcbicgKyBsaW5lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAod2FybmluZ3MubGVuZ3RoID4gMCkge1xuICAgIHJldHVybiB7dGFncywgd2FybmluZ3N9O1xuICB9XG4gIHJldHVybiB7dGFnc307XG59XG5cbi8qKlxuICogU2VyaWFsaXplcyBhIFRhZyBpbnRvIGEgc3RyaW5nIHVzYWJsZSBpbiBhIGNvbW1lbnQuXG4gKiBSZXR1cm5zIGEgc3RyaW5nIGxpa2UgXCIgQGZvbyB7YmFyfSBiYXpcIiAobm90ZSB0aGUgd2hpdGVzcGFjZSkuXG4gKi9cbmZ1bmN0aW9uIHRhZ1RvU3RyaW5nKHRhZzogVGFnLCBlc2NhcGVFeHRyYVRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKSk6IHN0cmluZyB7XG4gIGxldCBvdXQgPSAnJztcbiAgaWYgKHRhZy50YWdOYW1lKSB7XG4gICAgaWYgKCFKU0RPQ19UQUdTX1dISVRFTElTVC5oYXModGFnLnRhZ05hbWUpIHx8IGVzY2FwZUV4dHJhVGFncy5oYXModGFnLnRhZ05hbWUpKSB7XG4gICAgICAvLyBFc2NhcGUgdGFncyB3ZSBkb24ndCB1bmRlcnN0YW5kLiAgVGhpcyBpcyBhIHN1YnRsZVxuICAgICAgLy8gY29tcHJvbWlzZSBiZXR3ZWVuIG11bHRpcGxlIGlzc3Vlcy5cbiAgICAgIC8vIDEpIElmIHdlIHBhc3MgdGhyb3VnaCB0aGVzZSBub24tQ2xvc3VyZSB0YWdzLCB0aGUgdXNlciB3aWxsXG4gICAgICAvLyAgICBnZXQgYSB3YXJuaW5nIGZyb20gQ2xvc3VyZSwgYW5kIHRoZSBwb2ludCBvZiB0c2lja2xlIGlzXG4gICAgICAvLyAgICB0byBpbnN1bGF0ZSB0aGUgdXNlciBmcm9tIENsb3N1cmUuXG4gICAgICAvLyAyKSBUaGUgb3V0cHV0IG9mIHRzaWNrbGUgaXMgZm9yIENsb3N1cmUgYnV0IGFsc28gbWF5IGJlIHJlYWRcbiAgICAgIC8vICAgIGJ5IGh1bWFucywgZm9yIGV4YW1wbGUgbm9uLVR5cGVTY3JpcHQgdXNlcnMgb2YgQW5ndWxhci5cbiAgICAgIC8vIDMpIEZpbmFsbHksIHdlIGRvbid0IHdhbnQgdG8gd2FybiBiZWNhdXNlIHVzZXJzIHNob3VsZCBiZVxuICAgICAgLy8gICAgZnJlZSB0byBhZGQgd2hpY2hldmVyIEpTRG9jIHRoZXkgZmVlbCBsaWtlLiAgSWYgdGhlIHVzZXJcbiAgICAgIC8vICAgIHdhbnRzIGhlbHAgZW5zdXJpbmcgdGhleSBkaWRuJ3QgdHlwbyBhIHRhZywgdGhhdCBpcyB0aGVcbiAgICAgIC8vICAgIHJlc3BvbnNpYmlsaXR5IG9mIGEgbGludGVyLlxuICAgICAgb3V0ICs9IGAgXFxcXEAke3RhZy50YWdOYW1lfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIG91dCArPSBgIEAke3RhZy50YWdOYW1lfWA7XG4gICAgfVxuICB9XG4gIGlmICh0YWcudHlwZSkge1xuICAgIG91dCArPSAnIHsnO1xuICAgIGlmICh0YWcucmVzdFBhcmFtKSB7XG4gICAgICBvdXQgKz0gJy4uLic7XG4gICAgfVxuICAgIG91dCArPSB0YWcudHlwZTtcbiAgICBpZiAodGFnLm9wdGlvbmFsKSB7XG4gICAgICBvdXQgKz0gJz0nO1xuICAgIH1cbiAgICBvdXQgKz0gJ30nO1xuICB9XG4gIGlmICh0YWcucGFyYW1ldGVyTmFtZSkge1xuICAgIG91dCArPSAnICcgKyB0YWcucGFyYW1ldGVyTmFtZTtcbiAgfVxuICBpZiAodGFnLnRleHQpIHtcbiAgICBvdXQgKz0gJyAnICsgdGFnLnRleHQucmVwbGFjZSgvQC9nLCAnXFxcXEAnKTtcbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG4vKiogVGFncyB0aGF0IG11c3Qgb25seSBvY2N1ciBvbmNlcyBpbiBhIGNvbW1lbnQgKGZpbHRlcmVkIGJlbG93KS4gKi9cbmNvbnN0IFNJTkdMRVRPTl9UQUdTID0gbmV3IFNldChbJ2RlcHJlY2F0ZWQnXSk7XG5cbi8qKiBTZXJpYWxpemVzIGEgQ29tbWVudCBvdXQgdG8gYSBzdHJpbmcsIGJ1dCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBzdGFydCBhbmQgZW5kIGNvbW1lbnQgdG9rZW5zLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nV2l0aG91dFN0YXJ0RW5kKHRhZ3M6IFRhZ1tdLCBlc2NhcGVFeHRyYVRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKSk6IHN0cmluZyB7XG4gIHJldHVybiBzZXJpYWxpemUodGFncywgZmFsc2UsIGVzY2FwZUV4dHJhVGFncyk7XG59XG5cbi8qKiBTZXJpYWxpemVzIGEgQ29tbWVudCBvdXQgdG8gYSBzdHJpbmcgdXNhYmxlIGluIHNvdXJjZSBjb2RlLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHRvU3RyaW5nKHRhZ3M6IFRhZ1tdLCBlc2NhcGVFeHRyYVRhZ3MgPSBuZXcgU2V0PHN0cmluZz4oKSk6IHN0cmluZyB7XG4gIHJldHVybiBzZXJpYWxpemUodGFncywgdHJ1ZSwgZXNjYXBlRXh0cmFUYWdzKTtcbn1cblxuZnVuY3Rpb24gc2VyaWFsaXplKFxuICAgIHRhZ3M6IFRhZ1tdLCBpbmNsdWRlU3RhcnRFbmQ6IGJvb2xlYW4sIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgaWYgKHRhZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIGlmICh0YWdzLmxlbmd0aCA9PT0gMSkge1xuICAgIGNvbnN0IHRhZyA9IHRhZ3NbMF07XG4gICAgaWYgKCh0YWcudGFnTmFtZSA9PT0gJ3R5cGUnIHx8IHRhZy50YWdOYW1lID09PSAnbm9jb2xsYXBzZScpICYmXG4gICAgICAgICghdGFnLnRleHQgfHwgIXRhZy50ZXh0Lm1hdGNoKCdcXG4nKSkpIHtcbiAgICAgIC8vIFNwZWNpYWwtY2FzZSBvbmUtbGluZXIgXCJ0eXBlXCIgYW5kIFwibm9jb2xsYXBzZVwiIHRhZ3MgdG8gZml0IG9uIG9uZSBsaW5lLCBlLmcuXG4gICAgICAvLyAgIC8qKiBAdHlwZSB7Zm9vfSAqL1xuICAgICAgcmV0dXJuICcvKionICsgdGFnVG9TdHJpbmcodGFnLCBlc2NhcGVFeHRyYVRhZ3MpICsgJyAqL1xcbic7XG4gICAgfVxuICAgIC8vIE90aGVyd2lzZSwgZmFsbCB0aHJvdWdoIHRvIHRoZSBtdWx0aS1saW5lIG91dHB1dC5cbiAgfVxuXG4gIGxldCBvdXQgPSBpbmNsdWRlU3RhcnRFbmQgPyAnLyoqXFxuJyA6ICcqXFxuJztcbiAgY29uc3QgZW1pdHRlZCA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBmb3IgKGNvbnN0IHRhZyBvZiB0YWdzKSB7XG4gICAgaWYgKGVtaXR0ZWQuaGFzKHRhZy50YWdOYW1lKSAmJiBTSU5HTEVUT05fVEFHUy5oYXModGFnLnRhZ05hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgZW1pdHRlZC5hZGQodGFnLnRhZ05hbWUpO1xuICAgIG91dCArPSAnIConO1xuICAgIC8vIElmIHRoZSB0YWdUb1N0cmluZyBpcyBtdWx0aS1saW5lLCBpbnNlcnQgXCIgKiBcIiBwcmVmaXhlcyBvbiBzdWJzZXF1ZW50IGxpbmVzLlxuICAgIG91dCArPSB0YWdUb1N0cmluZyh0YWcsIGVzY2FwZUV4dHJhVGFncykuc3BsaXQoJ1xcbicpLmpvaW4oJ1xcbiAqICcpO1xuICAgIG91dCArPSAnXFxuJztcbiAgfVxuICBvdXQgKz0gaW5jbHVkZVN0YXJ0RW5kID8gJyAqL1xcbicgOiAnICc7XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBNZXJnZXMgbXVsdGlwbGUgdGFncyAob2YgdGhlIHNhbWUgdGFnTmFtZSB0eXBlKSBpbnRvIGEgc2luZ2xlIHVuaWZpZWQgdGFnLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlKHRhZ3M6IFRhZ1tdKTogVGFnIHtcbiAgY29uc3QgdGFnTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgcGFyYW1ldGVyTmFtZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgdHlwZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgY29uc3QgdGV4dHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgLy8gSWYgYW55IG9mIHRoZSB0YWdzIGFyZSBvcHRpb25hbC9yZXN0LCB0aGVuIHRoZSBtZXJnZWQgb3V0cHV0IGlzIG9wdGlvbmFsL3Jlc3QuXG4gIGxldCBvcHRpb25hbCA9IGZhbHNlO1xuICBsZXQgcmVzdFBhcmFtID0gZmFsc2U7XG4gIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICBpZiAodGFnLnRhZ05hbWUpIHRhZ05hbWVzLmFkZCh0YWcudGFnTmFtZSk7XG4gICAgaWYgKHRhZy5wYXJhbWV0ZXJOYW1lKSBwYXJhbWV0ZXJOYW1lcy5hZGQodGFnLnBhcmFtZXRlck5hbWUpO1xuICAgIGlmICh0YWcudHlwZSkgdHlwZXMuYWRkKHRhZy50eXBlKTtcbiAgICBpZiAodGFnLnRleHQpIHRleHRzLmFkZCh0YWcudGV4dCk7XG4gICAgaWYgKHRhZy5vcHRpb25hbCkgb3B0aW9uYWwgPSB0cnVlO1xuICAgIGlmICh0YWcucmVzdFBhcmFtKSByZXN0UGFyYW0gPSB0cnVlO1xuICB9XG5cbiAgaWYgKHRhZ05hbWVzLnNpemUgIT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYGNhbm5vdCBtZXJnZSBkaWZmZXJpbmcgdGFnczogJHtKU09OLnN0cmluZ2lmeSh0YWdzKX1gKTtcbiAgfVxuICBjb25zdCB0YWdOYW1lID0gdGFnTmFtZXMudmFsdWVzKCkubmV4dCgpLnZhbHVlO1xuICBjb25zdCBwYXJhbWV0ZXJOYW1lID1cbiAgICAgIHBhcmFtZXRlck5hbWVzLnNpemUgPiAwID8gQXJyYXkuZnJvbShwYXJhbWV0ZXJOYW1lcykuam9pbignX29yXycpIDogdW5kZWZpbmVkO1xuICBjb25zdCB0eXBlID0gdHlwZXMuc2l6ZSA+IDAgPyBBcnJheS5mcm9tKHR5cGVzKS5qb2luKCd8JykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHRleHQgPSB0ZXh0cy5zaXplID4gMCA/IEFycmF5LmZyb20odGV4dHMpLmpvaW4oJyAvICcpIDogdW5kZWZpbmVkO1xuICBjb25zdCB0YWc6IFRhZyA9IHt0YWdOYW1lLCBwYXJhbWV0ZXJOYW1lLCB0eXBlLCB0ZXh0fTtcbiAgaWYgKG9wdGlvbmFsKSB0YWcub3B0aW9uYWwgPSB0cnVlO1xuICBpZiAocmVzdFBhcmFtKSB0YWcucmVzdFBhcmFtID0gdHJ1ZTtcbiAgcmV0dXJuIHRhZztcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoianNkb2MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvanNkb2MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILHlDQUE0QztJQXNDNUM7Ozs7OztPQU1HO0lBQ0gsSUFBTSxvQkFBb0IsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUNuQyxVQUFVLEVBQU8sVUFBVTtRQUMzQixRQUFRLEVBQVMsdUJBQXVCO1FBQ3hDLE9BQU8sRUFBVSxVQUFVO1FBQzNCLGFBQWEsRUFBSSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxZQUFZO1FBQzdCLE1BQU0sRUFBVyxNQUFNO1FBQ3ZCLFVBQVUsRUFBTyxTQUFTO1FBQzFCLGFBQWEsRUFBSSxNQUFNO1FBQ3ZCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFNBQVMsRUFBUSxTQUFTO1FBQzFCLGNBQWMsRUFBRyxPQUFPO1FBQ3hCLGVBQWUsRUFBRSxtQkFBbUI7UUFDcEMsUUFBUSxFQUFTLElBQUk7UUFDckIsYUFBYSxFQUFJLFFBQVE7UUFDekIsWUFBWSxFQUFLLGNBQWM7UUFDL0IsWUFBWSxFQUFLLFdBQVc7UUFDNUIsY0FBYyxFQUFHLGNBQWM7UUFDL0IsZUFBZSxFQUFFLHNCQUFzQjtRQUN2QyxPQUFPLEVBQVUsU0FBUztRQUMxQixNQUFNLEVBQVcsU0FBUztRQUMxQixVQUFVLEVBQU8sU0FBUztRQUMxQixNQUFNLEVBQVcsVUFBVTtRQUMzQixTQUFTLEVBQVEsWUFBWTtRQUM3QixXQUFXLEVBQU0sZUFBZTtRQUNoQyxVQUFVLEVBQU8sT0FBTztRQUN4QixTQUFTLEVBQVEsT0FBTztRQUN4QixhQUFhLEVBQUksaUJBQWlCO1FBQ2xDLFVBQVUsRUFBTyxhQUFhO1FBQzlCLFNBQVMsRUFBUSxXQUFXO1FBQzVCLFFBQVEsRUFBUyxRQUFRO1FBQ3pCLFlBQVksRUFBSyxVQUFVO1FBQzNCLFFBQVEsRUFB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Q0FBQztZQUNwQixHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztRQUN0QixDQUFDO1FBQ0QsTUFBTSxDQUFDLEdBQUcsQ0FBQzs7SUFDYixDQUFDO0lBbENELHNCQWtDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtub3JtYWxpemVMaW5lRW5kaW5nc30gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUeXBlU2NyaXB0IGhhcyBhbiBBUEkgZm9yIEpTRG9jIGFscmVhZHksIGJ1dCBpdCdzIG5vdCBleHBvc2VkLlxuICogaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MzkzXG4gKiBGb3Igbm93IHdlIGNyZWF0ZSB0eXBlcyB0aGF0IGFyZSBzaW1pbGFyIHRvIHRoZWlycyBzbyB0aGF0IG1pZ3JhdGluZ1xuICogdG8gdGhlaXIgQVBJIHdpbGwgYmUgZWFzaWVyLiAgU2VlIGUuZy4gdHMuSlNEb2NUYWcgYW5kIHRzLkpTRG9jQ29tbWVudC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYWcge1xuICAvKipcbiAgICogdGFnTmFtZSBpcyBlLmcuIFwicGFyYW1cIiBpbiBhbiBAcGFyYW0gZGVjbGFyYXRpb24uICBJdCBpcyB0aGUgZW1wdHkgc3RyaW5nXG4gICAqIGZvciB0aGUgcGxhaW4gdGV4dCBkb2N1bWVudGF0aW9uIHRoYXQgb2NjdXJzIGJlZm9yZSBhbnkgQGZvbyBsaW5lcy5cbiAgICovXG4gIHRhZ05hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIHBhcmFtZXRlck5hbWUgaXMgdGhlIHRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiBwYXJhbWV0ZXIsIGUuZy4gXCJmb29cIlxuICAgKiBpbiBgXFxAcGFyYW0gZm9vIFRoZSBmb28gcGFyYW1gXG4gICAqL1xuICBwYXJhbWV0ZXJOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgYSBKU0RvYyBcXEBwYXJhbSwgXFxAdHlwZSBldGMgdGFnLCByZW5kZXJlZCBpbiBjdXJseSBicmFjZXMuXG4gICAqIENhbiBhbHNvIGhvbGQgdGhlIHR5cGUgb2YgYW4gXFxAc3VwcHJlc3MuXG4gICAqL1xuICB0eXBlPzogc3RyaW5nO1xuICAvKiogb3B0aW9uYWwgaXMgdHJ1ZSBmb3Igb3B0aW9uYWwgZnVuY3Rpb24gcGFyYW1ldGVycy4gKi9cbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICAvKiogcmVzdFBhcmFtIGlzIHRydWUgZm9yIFwiLi4ueDogZm9vW11cIiBmdW5jdGlvbiBwYXJhbWV0ZXJzLiAqL1xuICByZXN0UGFyYW0/OiBib29sZWFuO1xuICAvKipcbiAgICogZGVzdHJ1Y3R1cmluZyBpcyB0cnVlIGZvciBkZXN0cnVjdHVyaW5nIGJpbmQgcGFyYW1ldGVycywgd2hpY2ggcmVxdWlyZVxuICAgKiBub24tbnVsbCBhcmd1bWVudHMgb24gdGhlIENsb3N1cmUgc2lkZS4gIENhbiBsaWtlbHkgcmVtb3ZlIHRoaXNcbiAgICogb25jZSBUeXBlU2NyaXB0IG51bGxhYmxlIHR5cGVzIGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICBkZXN0cnVjdHVyaW5nPzogYm9vbGVhbjtcbiAgLyoqIEFueSByZW1haW5pbmcgdGV4dCBvbiB0aGUgdGFnLCBlLmcuIHRoZSBkZXNjcmlwdGlvbi4gKi9cbiAgdGV4dD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2YgYWxsIEpTRG9jIHRhZ3MgYWxsb3dlZCBieSB0aGUgQ2xvc3VyZSBjb21waWxlci5cbiAqIFRoZSBwdWJsaWMgQ2xvc3VyZSBkb2NzIGRvbid0IGxpc3QgYWxsIHRoZSB0YWdzIGl0IGFsbG93czsgdGhpcyBsaXN0IGNvbWVzXG4gKiBmcm9tIHRoZSBjb21waWxlciBzb3VyY2UgaXRzZWxmLlxuICogaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9jbG9zdXJlLWNvbXBpbGVyL2Jsb2IvbWFzdGVyL3NyYy9jb20vZ29vZ2xlL2phdmFzY3JpcHQvanNjb21wL3BhcnNpbmcvQW5ub3RhdGlvbi5qYXZhXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Nsb3N1cmUtY29tcGlsZXIvYmxvYi9tYXN0ZXIvc3JjL2NvbS9nb29nbGUvamF2YXNjcmlwdC9qc2NvbXAvcGFyc2luZy9QYXJzZXJDb25maWcucHJvcGVydGllc1xuICovXG5jb25zdCBKU0RPQ19UQUdTX1dISVRFTElTVCA9IG5ldyBTZXQoW1xuICAnYWJzdHJhY3QnLCAgICAgICdhcmd1bWVudCcsXG4gICdhdXRob3InLCAgICAgICAgJ2NvbnNpc3RlbnRJZEdlbmVyYXRvcicsXG4gICdjb25zdCcsICAgICAgICAgJ2NvbnN0YW50JyxcbiAgJ2NvbnN0cnVjdG9yJywgICAnY29weXJpZ2h0JyxcbiAgJ2RlZmluZScsICAgICAgICAnZGVwcmVjYXRlZCcsXG4gICdkZXNjJywgICAgICAgICAgJ2RpY3QnLFxuICAnZGlzcG9zZXMnLCAgICAgICdlbmhhbmNlJyxcbiAgJ2VuaGFuY2VhYmxlJywgICAnZW51bScsXG4gICdleHBvcnQnLCAgICAgICAgJ2V4cG9zZScsXG4gICdleHRlbmRzJywgICAgICAgJ2V4dGVybnMnLFxuICAnZmlsZW92ZXJ2aWV3JywgICdmaW5hbCcsXG4gICdoYXNzb3lkZWxjYWxsJywgJ2hhc3NveWRlbHRlbXBsYXRlJyxcbiAgJ2hpZGRlbicsICAgICAgICAnaWQnLFxuICAnaWRHZW5lcmF0b3InLCAgICdpZ25vcmUnLFxuICAnaW1wbGVtZW50cycsICAgICdpbXBsaWNpdENhc3QnLFxuICAnaW5oZXJpdERvYycsICAgICdpbnRlcmZhY2UnLFxuICAnamFnZ2VySW5qZWN0JywgICdqYWdnZXJNb2R1bGUnLFxuICAnamFnZ2VyUHJvdmlkZScsICdqYWdnZXJQcm92aWRlUHJvbWlzZScsXG4gICdsZW5kcycsICAgICAgICAgJ2xpY2Vuc2UnLFxuICAnbGluaycsICAgICAgICAgICdtZWFuaW5nJyxcbiAgJ21vZGlmaWVzJywgICAgICAnbW9kTmFtZScsXG4gICdtb2RzJywgICAgICAgICAgJ25nSW5qZWN0JyxcbiAgJ25vYWxpYXMnLCAgICAgICAnbm9jb2xsYXBzZScsXG4gICdub2NvbXBpbGUnLCAgICAgJ25vc2lkZWVmZmVjdHMnLFxuICAnb3ZlcnJpZGUnLCAgICAgICdvd25lcicsXG4gICdwYWNrYWdlJywgICAgICAgJ3BhcmFtJyxcbiAgJ3BpbnRvbW9kdWxlJywgICAncG9seW1lckJlaGF2aW9yJyxcbiAgJ3ByZXNlcnZlJywgICAgICAncHJlc2VydmVUcnknLFxuICAncHJpdmF0ZScsICAgICAgICdwcm90ZWN0ZWQnLFxuICAncHVibGljJywgICAgICAgICdyZWNvcmQnLFxuICAncmVxdWlyZWNzcycsICAgICdyZXF1aXJlcycsXG4gICdyZXR1cm4nLCAgICAgICAgJ3JldHVybnMnLFxuICAnc2VlJywgICAgICAgICAgICdzdGFibGVJZEdlbmVyYXRvcicsXG4gICdzdHJ1Y3QnLCAgICAgICAgJ3N1cHByZXNzJyxcbiAgJ3RlbXBsYXRlJywgICAgICAndGhpcycsXG4gICd0aHJvd3MnLCAgICAgICAgJ3R5cGUnLFxuICAndHlwZWRlZicsICAgICAgICd1bnJlc3RyaWN0ZWQnLFxuICAndmVyc2lvbicsICAgICAgICd3aXphY3Rpb24nLFxuICAnd2l6bW9kdWxlJyxcbl0pO1xuXG4vKipcbiAqIEEgbGlzdCBvZiBKU0RvYyBAdGFncyB0aGF0IGFyZSBuZXZlciBhbGxvd2VkIGluIFR5cGVTY3JpcHQgc291cmNlLiBUaGVzZSBhcmUgQ2xvc3VyZSB0YWdzIHRoYXRcbiAqIGNhbiBiZSBleHByZXNzZWQgaW4gdGhlIFR5cGVTY3JpcHQgc3VyZmFjZSBzeW50YXguIEFzIHRzaWNrbGUncyBlbWl0IHdpbGwgbWFuZ2xlIHR5cGUgbmFtZXMsXG4gKiB0aGVzZSB3aWxsIGNhdXNlIENsb3N1cmUgQ29tcGlsZXIgaXNzdWVzIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuXG4gKi9cbmNvbnN0IEpTRE9DX1RBR1NfQkxBQ0tMSVNUID0gbmV3IFNldChbXG4gICdhdWdtZW50cycsICdjbGFzcycsICAgICAgJ2NvbnN0cnVjdHMnLCAnY29uc3RydWN0b3InLCAnZW51bScsICAgICAgJ2V4dGVuZHMnLCAnZmllbGQnLFxuICAnZnVuY3Rpb24nLCAnaW1wbGVtZW50cycsICdpbnRlcmZhY2UnLCAgJ2xlbmRzJywgICAgICAgJ25hbWVzcGFjZScsICdwcml2YXRlJywgJ3B1YmxpYycsXG4gICdyZWNvcmQnLCAgICdzdGF0aWMnLCAgICAgJ3RlbXBsYXRlJywgICAndGhpcycsICAgICAgICAndHlwZScsICAgICAgJ3R5cGVkZWYnLFxuXSk7XG5cbi8qKlxuICogQSBsaXN0IG9mIEpTRG9jIEB0YWdzIHRoYXQgbWlnaHQgaW5jbHVkZSBhIHt0eXBlfSBhZnRlciB0aGVtLiBPbmx5IGJhbm5lZCB3aGVuIGEgdHlwZSBpcyBwYXNzZWQuXG4gKiBOb3RlIHRoYXQgdGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRhZ3MgdGhhdCBjYXJyeSBhIG5vbi10eXBlIHN5c3RlbSB0eXBlLCBlLmcuIFxcQHN1cHByZXNzLlxuICovXG5jb25zdCBKU0RPQ19UQUdTX1dJVEhfVFlQRVMgPSBuZXcgU2V0KFtcbiAgJ2NvbnN0JyxcbiAgJ2V4cG9ydCcsXG4gICdwYXJhbScsXG4gICdyZXR1cm4nLFxuXSk7XG5cbi8qKlxuICogUmVzdWx0IG9mIHBhcnNpbmcgYSBKU0RvYyBjb21tZW50LiBTdWNoIGNvbW1lbnRzIGVzc2VudGlhbGx5IGFyZSBidWlsdCBvZiBhIGxpc3Qgb2YgdGFncy5cbiAqIEluIGFkZGl0aW9uIHRvIHRoZSB0YWdzLCB0aGlzIG1pZ2h0IGFsc28gY29udGFpbiB3YXJuaW5ncyB0byBpbmRpY2F0ZSBub24tZmF0YWwgcHJvYmxlbXNcbiAqIHdoaWxlIGZpbmRpbmcgdGhlIHRhZ3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGFyc2VkSlNEb2NDb21tZW50IHtcbiAgdGFnczogVGFnW107XG4gIHdhcm5pbmdzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogcGFyc2UgcGFyc2VzIEpTRG9jIG91dCBvZiBhIGNvbW1lbnQgc3RyaW5nLlxuICogUmV0dXJucyBudWxsIGlmIGNvbW1lbnQgaXMgbm90IEpTRG9jLlxuICovXG4vLyBUT0RPKG1hcnRpbnByb2JzdCk6IHJlcHJlc2VudGluZyBKU0RvYyBhcyBhIGxpc3Qgb2YgdGFncyBpcyB0b28gc2ltcGxpc3RpYy4gV2UgbmVlZCBmdW5jdGlvbmFsaXR5XG4vLyBzdWNoIGFzIG1lcmdpbmcgKGJlbG93KSwgZGUtZHVwbGljYXRpbmcgY2VydGFpbiB0YWdzIChAZGVwcmVjYXRlZCksIGFuZCBzcGVjaWFsIHRyZWF0bWVudCBmb3Jcbi8vIG90aGVycyAoZS5nLiBAc3VwcHJlc3MpLiBXZSBzaG91bGQgaW50cm9kdWNlIGEgcHJvcGVyIG1vZGVsIGNsYXNzIHdpdGggYSBtb3JlIHN1aXRhYmxlIGRhdGFcbi8vIHN0cnVjdXJlIChlLmcuIGEgTWFwPFRhZ05hbWUsIFZhbHVlc1tdPikuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2UoY29tbWVudDogc3RyaW5nKTogUGFyc2VkSlNEb2NDb21tZW50fG51bGwge1xuICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBwcm9wZXIgbGluZSBlbmRpbmdzIGJlZm9yZSBwYXJzaW5nIG9uIFdpbmRvd3MuXG4gIGNvbW1lbnQgPSBub3JtYWxpemVMaW5lRW5kaW5ncyhjb21tZW50KTtcbiAgLy8gVE9ETyhldmFubSk6IHRoaXMgaXMgYSBwaWxlIG9mIGhhY2t5IHJlZ2V4ZXMgZm9yIG5vdywgYmVjYXVzZSB3ZVxuICAvLyB3b3VsZCByYXRoZXIgdXNlIHRoZSBiZXR0ZXIgVHlwZVNjcmlwdCBpbXBsZW1lbnRhdGlvbiBvZiBKU0RvY1xuICAvLyBwYXJzaW5nLiAgaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9UeXBlU2NyaXB0L2lzc3Vlcy83MzkzXG4gIGNvbnN0IG1hdGNoID0gY29tbWVudC5tYXRjaCgvXlxcL1xcKlxcKihbXFxzXFxTXSo/KVxcKlxcLyQvKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIG51bGw7XG4gIHJldHVybiBwYXJzZUNvbnRlbnRzKG1hdGNoWzFdLnRyaW0oKSk7XG59XG5cbi8qKlxuICogcGFyc2VDb250ZW50cyBwYXJzZXMgSlNEb2Mgb3V0IG9mIGEgY29tbWVudCB0ZXh0LlxuICogUmV0dXJucyBudWxsIGlmIGNvbW1lbnQgaXMgbm90IEpTRG9jLlxuICpcbiAqIEBwYXJhbSBjb21tZW50VGV4dCBhIGNvbW1lbnQncyB0ZXh0IGNvbnRlbnQsIGkuZS4gdGhlIGNvbW1lbnQgdy9vIC8qIGFuZCAqIC8uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUNvbnRlbnRzKGNvbW1lbnRUZXh0OiBzdHJpbmcpOiB7dGFnczogVGFnW10sIHdhcm5pbmdzPzogc3RyaW5nW119fG51bGwge1xuICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBwcm9wZXIgbGluZSBlbmRpbmdzIGJlZm9yZSBwYXJzaW5nIG9uIFdpbmRvd3MuXG4gIGNvbW1lbnRUZXh0ID0gbm9ybWFsaXplTGluZUVuZGluZ3MoY29tbWVudFRleHQpO1xuICAvLyBTdHJpcCBhbGwgdGhlIFwiICogXCIgYml0cyBmcm9tIHRoZSBmcm9udCBvZiBlYWNoIGxpbmUuXG4gIGNvbW1lbnRUZXh0ID0gY29tbWVudFRleHQucmVwbGFjZSgvXlxccypcXCo/ID8vZ20sICcnKTtcbiAgY29uc3QgbGluZXMgPSBjb21tZW50VGV4dC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHRhZ3M6IFRhZ1tdID0gW107XG4gIGNvbnN0IHdhcm5pbmdzOiBzdHJpbmdbXSA9IFtdO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBsZXQgbWF0Y2ggPSBsaW5lLm1hdGNoKC9eQChcXFMrKSAqKC4qKS8pO1xuICAgIGlmIChtYXRjaCkge1xuICAgICAgbGV0IFtfLCB0YWdOYW1lLCB0ZXh0XSA9IG1hdGNoO1xuICAgICAgaWYgKHRhZ05hbWUgPT09ICdyZXR1cm5zJykge1xuICAgICAgICAvLyBBIHN5bm9ueW0gZm9yICdyZXR1cm4nLlxuICAgICAgICB0YWdOYW1lID0gJ3JldHVybic7XG4gICAgICB9XG4gICAgICBsZXQgdHlwZTogc3RyaW5nfHVuZGVmaW5lZDtcbiAgICAgIGlmIChKU0RPQ19UQUdTX0JMQUNLTElTVC5oYXModGFnTmFtZSkpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaChgQCR7dGFnTmFtZX0gYW5ub3RhdGlvbnMgYXJlIHJlZHVuZGFudCB3aXRoIFR5cGVTY3JpcHQgZXF1aXZhbGVudHNgKTtcbiAgICAgICAgY29udGludWU7ICAvLyBEcm9wIHRoZSB0YWcgc28gQ2xvc3VyZSB3b24ndCBwcm9jZXNzIGl0LlxuICAgICAgfSBlbHNlIGlmIChKU0RPQ19UQUdTX1dJVEhfVFlQRVMuaGFzKHRhZ05hbWUpICYmIHRleHRbMF0gPT09ICd7Jykge1xuICAgICAgICB3YXJuaW5ncy5wdXNoKFxuICAgICAgICAgICAgYHRoZSB0eXBlIGFubm90YXRpb24gb24gQCR7dGFnTmFtZX0gaXMgcmVkdW5kYW50IHdpdGggaXRzIFR5cGVTY3JpcHQgdHlwZSwgYCArXG4gICAgICAgICAgICBgcmVtb3ZlIHRoZSB7Li4ufSBwYXJ0YCk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnc3VwcHJlc3MnKSB7XG4gICAgICAgIGNvbnN0IHN1cHByZXNzTWF0Y2ggPSB0ZXh0Lm1hdGNoKC9eXFx7KC4qKVxcfSguKikkLyk7XG4gICAgICAgIGlmICghc3VwcHJlc3NNYXRjaCkge1xuICAgICAgICAgIHdhcm5pbmdzLnB1c2goYG1hbGZvcm1lZCBAc3VwcHJlc3MgdGFnOiBcIiR7dGV4dH1cImApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIFssIHR5cGUsIHRleHRdID0gc3VwcHJlc3NNYXRjaDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICh0YWdOYW1lID09PSAnZGljdCcpIHtcbiAgICAgICAgd2FybmluZ3MucHVzaCgndXNlIGluZGV4IHNpZ25hdHVyZXMgKGBbazogc3RyaW5nXTogdHlwZWApIGluc3RlYWQgb2YgQGRpY3QnKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIEdyYWIgdGhlIHBhcmFtZXRlciBuYW1lIGZyb20gQHBhcmFtIHRhZ3MuXG4gICAgICBsZXQgcGFyYW1ldGVyTmFtZTogc3RyaW5nfHVuZGVmaW5lZDtcbiAgICAgIGlmICh0YWdOYW1lID09PSAncGFyYW0nKSB7XG4gICAgICAgIG1hdGNoID0gdGV4dC5tYXRjaCgvXihcXFMrKSA/KC4qKS8pO1xuICAgICAgICBpZiAobWF0Y2gpIFtfLCBwYXJhbWV0ZXJOYW1lLCB0ZXh0XSA9IG1hdGNoO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0YWc6IFRhZyA9IHt0YWdOYW1lfTtcbiAgICAgIGlmIChwYXJhbWV0ZXJOYW1lKSB0YWcucGFyYW1ldGVyTmFtZSA9IHBhcmFtZXRlck5hbWU7XG4gICAgICBpZiAodGV4dCkgdGFnLnRleHQgPSB0ZXh0O1xuICAgICAgaWYgKHR5cGUpIHRhZy50eXBlID0gdHlwZTtcbiAgICAgIHRhZ3MucHVzaCh0YWcpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUZXh0IHdpdGhvdXQgYSBwcmVjZWRpbmcgQHRhZyBvbiBpdCBpcyBlaXRoZXIgdGhlIHBsYWluIHRleHRcbiAgICAgIC8vIGRvY3VtZW50YXRpb24gb3IgYSBjb250aW51YXRpb24gb2YgYSBwcmV2aW91cyB0YWcuXG4gICAgICBpZiAodGFncy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGFncy5wdXNoKHt0YWdOYW1lOiAnJywgdGV4dDogbGluZX0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgbGFzdFRhZyA9IHRhZ3NbdGFncy5sZW5ndGggLSAxXTtcbiAgICAgICAgbGFzdFRhZy50ZXh0ID0gKGxhc3RUYWcudGV4dCB8fCAnJykgKyAnXFxuJyArIGxpbmU7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmICh3YXJuaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHt0YWdzLCB3YXJuaW5nc307XG4gIH1cbiAgcmV0dXJuIHt0YWdzfTtcbn1cblxuLyoqXG4gKiBTZXJpYWxpemVzIGEgVGFnIGludG8gYSBzdHJpbmcgdXNhYmxlIGluIGEgY29tbWVudC5cbiAqIFJldHVybnMgYSBzdHJpbmcgbGlrZSBcIiBAZm9vIHtiYXJ9IGJhelwiIChub3RlIHRoZSB3aGl0ZXNwYWNlKS5cbiAqL1xuZnVuY3Rpb24gdGFnVG9TdHJpbmcodGFnOiBUYWcsIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgbGV0IG91dCA9ICcnO1xuICBpZiAodGFnLnRhZ05hbWUpIHtcbiAgICBpZiAoIUpTRE9DX1RBR1NfV0hJVEVMSVNULmhhcyh0YWcudGFnTmFtZSkgfHwgZXNjYXBlRXh0cmFUYWdzLmhhcyh0YWcudGFnTmFtZSkpIHtcbiAgICAgIC8vIEVzY2FwZSB0YWdzIHdlIGRvbid0IHVuZGVyc3RhbmQuICBUaGlzIGlzIGEgc3VidGxlXG4gICAgICAvLyBjb21wcm9taXNlIGJldHdlZW4gbXVsdGlwbGUgaXNzdWVzLlxuICAgICAgLy8gMSkgSWYgd2UgcGFzcyB0aHJvdWdoIHRoZXNlIG5vbi1DbG9zdXJlIHRhZ3MsIHRoZSB1c2VyIHdpbGxcbiAgICAgIC8vICAgIGdldCBhIHdhcm5pbmcgZnJvbSBDbG9zdXJlLCBhbmQgdGhlIHBvaW50IG9mIHRzaWNrbGUgaXNcbiAgICAgIC8vICAgIHRvIGluc3VsYXRlIHRoZSB1c2VyIGZyb20gQ2xvc3VyZS5cbiAgICAgIC8vIDIpIFRoZSBvdXRwdXQgb2YgdHNpY2tsZSBpcyBmb3IgQ2xvc3VyZSBidXQgYWxzbyBtYXkgYmUgcmVhZFxuICAgICAgLy8gICAgYnkgaHVtYW5zLCBmb3IgZXhhbXBsZSBub24tVHlwZVNjcmlwdCB1c2VycyBvZiBBbmd1bGFyLlxuICAgICAgLy8gMykgRmluYWxseSwgd2UgZG9uJ3Qgd2FudCB0byB3YXJuIGJlY2F1c2UgdXNlcnMgc2hvdWxkIGJlXG4gICAgICAvLyAgICBmcmVlIHRvIGFkZCB3aGljaGV2ZXIgSlNEb2MgdGhleSBmZWVsIGxpa2UuICBJZiB0aGUgdXNlclxuICAgICAgLy8gICAgd2FudHMgaGVscCBlbnN1cmluZyB0aGV5IGRpZG4ndCB0eXBvIGEgdGFnLCB0aGF0IGlzIHRoZVxuICAgICAgLy8gICAgcmVzcG9uc2liaWxpdHkgb2YgYSBsaW50ZXIuXG4gICAgICBvdXQgKz0gYCBcXFxcQCR7dGFnLnRhZ05hbWV9YDtcbiAgICB9IGVsc2Uge1xuICAgICAgb3V0ICs9IGAgQCR7dGFnLnRhZ05hbWV9YDtcbiAgICB9XG4gIH1cbiAgaWYgKHRhZy50eXBlKSB7XG4gICAgb3V0ICs9ICcgeyc7XG4gICAgaWYgKHRhZy5yZXN0UGFyYW0pIHtcbiAgICAgIG91dCArPSAnLi4uJztcbiAgICB9XG4gICAgb3V0ICs9IHRhZy50eXBlO1xuICAgIGlmICh0YWcub3B0aW9uYWwpIHtcbiAgICAgIG91dCArPSAnPSc7XG4gICAgfVxuICAgIG91dCArPSAnfSc7XG4gIH1cbiAgaWYgKHRhZy5wYXJhbWV0ZXJOYW1lKSB7XG4gICAgb3V0ICs9ICcgJyArIHRhZy5wYXJhbWV0ZXJOYW1lO1xuICB9XG4gIGlmICh0YWcudGV4dCkge1xuICAgIG91dCArPSAnICcgKyB0YWcudGV4dC5yZXBsYWNlKC9AL2csICdcXFxcQCcpO1xuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbi8qKiBUYWdzIHRoYXQgbXVzdCBvbmx5IG9jY3VyIG9uY2VzIGluIGEgY29tbWVudCAoZmlsdGVyZWQgYmVsb3cpLiAqL1xuY29uc3QgU0lOR0xFVE9OX1RBR1MgPSBuZXcgU2V0KFsnZGVwcmVjYXRlZCddKTtcblxuLyoqIFNlcmlhbGl6ZXMgYSBDb21tZW50IG91dCB0byBhIHN0cmluZywgYnV0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHN0YXJ0IGFuZCBlbmQgY29tbWVudCB0b2tlbnMuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmdXaXRob3V0U3RhcnRFbmQodGFnczogVGFnW10sIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNlcmlhbGl6ZSh0YWdzLCBmYWxzZSwgZXNjYXBlRXh0cmFUYWdzKTtcbn1cblxuLyoqIFNlcmlhbGl6ZXMgYSBDb21tZW50IG91dCB0byBhIHN0cmluZyB1c2FibGUgaW4gc291cmNlIGNvZGUuICovXG5leHBvcnQgZnVuY3Rpb24gdG9TdHJpbmcodGFnczogVGFnW10sIGVzY2FwZUV4dHJhVGFncyA9IG5ldyBTZXQ8c3RyaW5nPigpKTogc3RyaW5nIHtcbiAgcmV0dXJuIHNlcmlhbGl6ZSh0YWdzLCB0cnVlLCBlc2NhcGVFeHRyYVRhZ3MpO1xufVxuXG5mdW5jdGlvbiBzZXJpYWxpemUoXG4gICAgdGFnczogVGFnW10sIGluY2x1ZGVTdGFydEVuZDogYm9vbGVhbiwgZXNjYXBlRXh0cmFUYWdzID0gbmV3IFNldDxzdHJpbmc+KCkpOiBzdHJpbmcge1xuICBpZiAodGFncy5sZW5ndGggPT09IDApIHJldHVybiAnJztcbiAgaWYgKHRhZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgY29uc3QgdGFnID0gdGFnc1swXTtcbiAgICBpZiAoKHRhZy50YWdOYW1lID09PSAndHlwZScgfHwgdGFnLnRhZ05hbWUgPT09ICdub2NvbGxhcHNlJykgJiZcbiAgICAgICAgKCF0YWcudGV4dCB8fCAhdGFnLnRleHQubWF0Y2goJ1xcbicpKSkge1xuICAgICAgLy8gU3BlY2lhbC1jYXNlIG9uZS1saW5lciBcInR5cGVcIiBhbmQgXCJub2NvbGxhcHNlXCIgdGFncyB0byBmaXQgb24gb25lIGxpbmUsIGUuZy5cbiAgICAgIC8vICAgLyoqIEB0eXBlIHtmb299ICovXG4gICAgICByZXR1cm4gJy8qKicgKyB0YWdUb1N0cmluZyh0YWcsIGVzY2FwZUV4dHJhVGFncykgKyAnICovXFxuJztcbiAgICB9XG4gICAgLy8gT3RoZXJ3aXNlLCBmYWxsIHRocm91Z2ggdG8gdGhlIG11bHRpLWxpbmUgb3V0cHV0LlxuICB9XG5cbiAgbGV0IG91dCA9IGluY2x1ZGVTdGFydEVuZCA/ICcvKipcXG4nIDogJypcXG4nO1xuICBjb25zdCBlbWl0dGVkID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgdGFnIG9mIHRhZ3MpIHtcbiAgICBpZiAoZW1pdHRlZC5oYXModGFnLnRhZ05hbWUpICYmIFNJTkdMRVRPTl9UQUdTLmhhcyh0YWcudGFnTmFtZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBlbWl0dGVkLmFkZCh0YWcudGFnTmFtZSk7XG4gICAgb3V0ICs9ICcgKic7XG4gICAgLy8gSWYgdGhlIHRhZ1RvU3RyaW5nIGlzIG11bHRpLWxpbmUsIGluc2VydCBcIiAqIFwiIHByZWZpeGVzIG9uIHN1YnNlcXVlbnQgbGluZXMuXG4gICAgb3V0ICs9IHRhZ1RvU3RyaW5nKHRhZywgZXNjYXBlRXh0cmFUYWdzKS5zcGxpdCgnXFxuJykuam9pbignXFxuICogJyk7XG4gICAgb3V0ICs9ICdcXG4nO1xuICB9XG4gIG91dCArPSBpbmNsdWRlU3RhcnRFbmQgPyAnICovXFxuJyA6ICcgJztcbiAgcmV0dXJuIG91dDtcbn1cblxuLyoqIE1lcmdlcyBtdWx0aXBsZSB0YWdzIChvZiB0aGUgc2FtZSB0YWdOYW1lIHR5cGUpIGludG8gYSBzaW5nbGUgdW5pZmllZCB0YWcuICovXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UodGFnczogVGFnW10pOiBUYWcge1xuICBjb25zdCB0YWdOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCBwYXJhbWV0ZXJOYW1lcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB0eXBlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBjb25zdCB0ZXh0cyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAvLyBJZiBhbnkgb2YgdGhlIHRhZ3MgYXJlIG9wdGlvbmFsL3Jlc3QsIHRoZW4gdGhlIG1lcmdlZCBvdXRwdXQgaXMgb3B0aW9uYWwvcmVzdC5cbiAgbGV0IG9wdGlvbmFsID0gZmFsc2U7XG4gIGxldCByZXN0UGFyYW0gPSBmYWxzZTtcbiAgZm9yIChjb25zdCB0YWcgb2YgdGFncykge1xuICAgIGlmICh0YWcudGFnTmFtZSkgdGFnTmFtZXMuYWRkKHRhZy50YWdOYW1lKTtcbiAgICBpZiAodGFnLnBhcmFtZXRlck5hbWUpIHBhcmFtZXRlck5hbWVzLmFkZCh0YWcucGFyYW1ldGVyTmFtZSk7XG4gICAgaWYgKHRhZy50eXBlKSB0eXBlcy5hZGQodGFnLnR5cGUpO1xuICAgIGlmICh0YWcudGV4dCkgdGV4dHMuYWRkKHRhZy50ZXh0KTtcbiAgICBpZiAodGFnLm9wdGlvbmFsKSBvcHRpb25hbCA9IHRydWU7XG4gICAgaWYgKHRhZy5yZXN0UGFyYW0pIHJlc3RQYXJhbSA9IHRydWU7XG4gIH1cblxuICBpZiAodGFnTmFtZXMuc2l6ZSAhPT0gMSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgY2Fubm90IG1lcmdlIGRpZmZlcmluZyB0YWdzOiAke0pTT04uc3RyaW5naWZ5KHRhZ3MpfWApO1xuICB9XG4gIGNvbnN0IHRhZ05hbWUgPSB0YWdOYW1lcy52YWx1ZXMoKS5uZXh0KCkudmFsdWU7XG4gIGNvbnN0IHBhcmFtZXRlck5hbWUgPVxuICAgICAgcGFyYW1ldGVyTmFtZXMuc2l6ZSA+IDAgPyBBcnJheS5mcm9tKHBhcmFtZXRlck5hbWVzKS5qb2luKCdfb3JfJykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHR5cGUgPSB0eXBlcy5zaXplID4gMCA/IEFycmF5LmZyb20odHlwZXMpLmpvaW4oJ3wnKSA6IHVuZGVmaW5lZDtcbiAgY29uc3QgdGV4dCA9IHRleHRzLnNpemUgPiAwID8gQXJyYXkuZnJvbSh0ZXh0cykuam9pbignIC8gJykgOiB1bmRlZmluZWQ7XG4gIGNvbnN0IHRhZzogVGFnID0ge3RhZ05hbWUsIHBhcmFtZXRlck5hbWUsIHR5cGUsIHRleHR9O1xuICAvLyBOb3RlOiBhIHBhcmFtIGNhbiBlaXRoZXIgYmUgb3B0aW9uYWwgb3IgYSByZXN0IHBhcmFtOyBpZiB3ZSBtZXJnZWQgYW5cbiAgLy8gb3B0aW9uYWwgYW5kIHJlc3QgcGFyYW0gdG9nZXRoZXIsIHByZWZlciBtYXJraW5nIGl0IGFzIGEgcmVzdCBwYXJhbS5cbiAgaWYgKHJlc3RQYXJhbSkge1xuICAgIHRhZy5yZXN0UGFyYW0gPSB0cnVlO1xuICB9IGVsc2UgaWYgKG9wdGlvbmFsKSB7XG4gICAgdGFnLm9wdGlvbmFsID0gdHJ1ZTtcbiAgfVxuICByZXR1cm4gdGFnO1xufVxuIl19

@@ -133,2 +133,4 @@ #!/usr/bin/env node

logWarning: function (warning) { return console.error(tsickle.formatDiagnostics([warning])); },
options: options,
host: compilerHost,
};

@@ -182,2 +184,2 @@ var diagnostics = ts.getPreEmitDiagnostics(program);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVQSx1QkFBeUI7SUFDekIsbUNBQXFDO0lBQ3JDLCtCQUFpQztJQUNqQywyQkFBNkI7SUFDN0IsMkNBQW1DO0lBRW5DLG9EQUE0QztJQUM1Qyw2Q0FBcUM7SUFDckMsK0NBQTBDO0lBZTFDO1FBQ0UsT0FBTyxDQUFDLEtBQUssQ0FBQywwU0FRZixDQUFDLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsOEJBQThCLElBQWM7UUFDMUMsSUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBQzlCLElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7WUFDbEMsR0FBRyxDQUFDLENBQWUsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxnQkFBQTtnQkFBckMsSUFBTSxJQUFJLFdBQUE7Z0JBQ2IsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDYixLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLE1BQU07d0JBQ1QsS0FBSyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDaEIsS0FBSyxDQUFDO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDeEMsS0FBSyxDQUFDO29CQUNSLEtBQUssT0FBTzt3QkFDVixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsS0FBSyxDQUFDO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsS0FBSyxDQUFDO29CQUNSLEtBQUssR0FBRzt3QkFDTixtRUFB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LENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBtaW5pbWlzdCBmcm9tICdtaW5pbWlzdCc7XG5pbXBvcnQgKiBhcyBta2RpcnAgZnJvbSAnbWtkaXJwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICcuL3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgKiBhcyBjbGlTdXBwb3J0IGZyb20gJy4vY2xpX3N1cHBvcnQnO1xuaW1wb3J0ICogYXMgdHNpY2tsZSBmcm9tICcuL3RzaWNrbGUnO1xuaW1wb3J0IHtNb2R1bGVzTWFuaWZlc3R9IGZyb20gJy4vdHNpY2tsZSc7XG5pbXBvcnQge2NyZWF0ZVNvdXJjZVJlcGxhY2luZ0NvbXBpbGVySG9zdH0gZnJvbSAnLi91dGlsJztcblxuLyoqIFRzaWNrbGUgc2V0dGluZ3MgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzIHtcbiAgLyoqIElmIHByb3ZpZGVkLCBwYXRoIHRvIHNhdmUgZXh0ZXJucyB0by4gKi9cbiAgZXh0ZXJuc1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIElmIHByb3ZpZGVkLCBhdHRlbXB0IHRvIHByb3ZpZGUgdHlwZXMgcmF0aGVyIHRoYW4gez99LiAqL1xuICBpc1R5cGVkPzogYm9vbGVhbjtcblxuICAvKiogSWYgdHJ1ZSwgbG9nIGludGVybmFsIGRlYnVnIHdhcm5pbmdzIHRvIHRoZSBjb25zb2xlLiAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gdXNhZ2UoKSB7XG4gIGNvbnNvbGUuZXJyb3IoYHVzYWdlOiB0c2lja2xlIFt0c2lja2xlIG9wdGlvbnNdIC0tIFt0c2Mgb3B0aW9uc11cblxuZXhhbXBsZTpcbiAgdHNpY2tsZSAtLWV4dGVybnM9Zm9vL2V4dGVybnMuanMgLS0gLXAgc3JjIC0tbm9JbXBsaWNpdEFueVxuXG50c2lja2xlIGZsYWdzIGFyZTpcbiAgLS1leHRlcm5zPVBBVEggICAgIHNhdmUgZ2VuZXJhdGVkIENsb3N1cmUgZXh0ZXJucy5qcyB0byBQQVRIXG4gIC0tdHlwZWQgICAgICAgICAgICBbZXhwZXJpbWVudGFsXSBhdHRlbXB0IHRvIHByb3ZpZGUgQ2xvc3VyZSB0eXBlcyBpbnN0ZWFkIG9mIHs/fVxuYCk7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBleHRyYWN0aW5nIHRoZSB0c2lja2xlIHNldHRpbmdzIGFuZFxuICogdGhlIGFyZ3VtZW50cyB0byBwYXNzIG9uIHRvIHRzYy5cbiAqL1xuZnVuY3Rpb24gbG9hZFNldHRpbmdzRnJvbUFyZ3MoYXJnczogc3RyaW5nW10pOiB7c2V0dGluZ3M6IFNldHRpbmdzLCB0c2NBcmdzOiBzdHJpbmdbXX0ge1xuICBjb25zdCBzZXR0aW5nczogU2V0dGluZ3MgPSB7fTtcbiAgY29uc3QgcGFyc2VkQXJncyA9IG1pbmltaXN0KGFyZ3MpO1xuICBmb3IgKGNvbnN0IGZsYWcgb2YgT2JqZWN0LmtleXMocGFyc2VkQXJncykpIHtcbiAgICBzd2l0Y2ggKGZsYWcpIHtcbiAgICAgIGNhc2UgJ2gnOlxuICAgICAgY2FzZSAnaGVscCc6XG4gICAgICAgIHVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHRlcm5zJzpcbiAgICAgICAgc2V0dGluZ3MuZXh0ZXJuc1BhdGggPSBwYXJzZWRBcmdzW2ZsYWddO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3R5cGVkJzpcbiAgICAgICAgc2V0dGluZ3MuaXNUeXBlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmVyYm9zZSc6XG4gICAgICAgIHNldHRpbmdzLnZlcmJvc2UgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ18nOlxuICAgICAgICAvLyBUaGlzIGlzIHBhcnQgb2YgdGhlIG1pbmltaXN0IEFQSSwgYW5kIGhvbGRzIGFyZ3MgYWZ0ZXIgdGhlICctLScuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5lcnJvcihgdW5rbm93biBmbGFnICctLSR7ZmxhZ30nYCk7XG4gICAgICAgIHVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbiAgLy8gQXJndW1lbnRzIGFmdGVyIHRoZSAnLS0nIGFyZyBhcmUgYXJndW1lbnRzIHRvIHRzYy5cbiAgY29uc3QgdHNjQXJncyA9IHBhcnNlZEFyZ3NbJ18nXTtcbiAgcmV0dXJuIHtzZXR0aW5ncywgdHNjQXJnc307XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIHRzY29uZmlnLmpzb24gZnJvbSBhIGRpcmVjdG9yeS5cbiAqXG4gKiBUT0RPKG1hcnRpbnByb2JzdCk6IHVzZSB0cy5maW5kQ29uZmlnRmlsZSB0byBtYXRjaCB0c2MgYmVoYXZpb3VyLlxuICpcbiAqIEBwYXJhbSBhcmdzIHRzYyBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlxuICovXG5mdW5jdGlvbiBsb2FkVHNjQ29uZmlnKGFyZ3M6IHN0cmluZ1tdKTpcbiAgICB7b3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLCBmaWxlTmFtZXM6IHN0cmluZ1tdLCBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXX0ge1xuICAvLyBHYXRoZXIgdHNjIG9wdGlvbnMvaW5wdXQgZmlsZXMgZnJvbSBjb21tYW5kIGxpbmUuXG4gIGxldCB7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnN9ID0gdHMucGFyc2VDb21tYW5kTGluZShhcmdzKTtcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzfTtcbiAgfVxuXG4gIC8vIFN0b3JlIGZpbGUgYXJndW1lbnRzXG4gIGNvbnN0IHRzRmlsZUFyZ3VtZW50cyA9IGZpbGVOYW1lcztcblxuICAvLyBSZWFkIGZ1cnRoZXIgc2V0dGluZ3MgZnJvbSB0c2NvbmZpZy5qc29uLlxuICBjb25zdCBwcm9qZWN0RGlyID0gb3B0aW9ucy5wcm9qZWN0IHx8ICcuJztcbiAgY29uc3QgY29uZmlnRmlsZU5hbWUgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgJ3RzY29uZmlnLmpzb24nKTtcbiAgY29uc3Qge2NvbmZpZzoganNvbiwgZXJyb3J9ID1cbiAgICAgIHRzLnJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGVOYW1lLCBwYXRoID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSk7XG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yczogW2Vycm9yXX07XG4gIH1cbiAgKHtvcHRpb25zLCBmaWxlTmFtZXMsIGVycm9yc30gPVxuICAgICAgIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGpzb24sIHRzLnN5cywgcHJvamVjdERpciwgb3B0aW9ucywgY29uZmlnRmlsZU5hbWUpKTtcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzfTtcbiAgfVxuXG4gIC8vIGlmIGZpbGUgYXJndW1lbnRzIHdlcmUgZ2l2ZW4gdG8gdGhlIHR5cGVzY3JpcHQgdHJhbnNwaWxlciB0aGVuIHRyYW5zcGlsZSBvbmx5IHRob3NlIGZpbGVzXG4gIGZpbGVOYW1lcyA9IHRzRmlsZUFyZ3VtZW50cy5sZW5ndGggPiAwID8gdHNGaWxlQXJndW1lbnRzIDogZmlsZU5hbWVzO1xuXG4gIHJldHVybiB7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnM6IFtdfTtcbn1cblxuLyoqXG4gKiBDb21waWxlcyBUeXBlU2NyaXB0IGNvZGUgaW50byBDbG9zdXJlLWNvbXBpbGVyLXJlYWR5IEpTLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DbG9zdXJlSlMoXG4gICAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLCBmaWxlTmFtZXM6IHN0cmluZ1tdLCBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgd3JpdGVGaWxlPzogdHMuV3JpdGVGaWxlQ2FsbGJhY2spOiB0c2lja2xlLkVtaXRSZXN1bHQge1xuICBjb25zdCBjb21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3Qob3B0aW9ucyk7XG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKGZpbGVOYW1lcywgb3B0aW9ucywgY29tcGlsZXJIb3N0KTtcbiAgY29uc3QgdHJhbnNmb3JtZXJIb3N0OiB0c2lja2xlLlRzaWNrbGVIb3N0ID0ge1xuICAgIHNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBmaWxlTmFtZXMuaW5kZXhPZihmaWxlTmFtZSkgPT09IC0xO1xuICAgIH0sXG4gICAgc2hvdWxkSWdub3JlV2FybmluZ3NGb3JQYXRoOiAoZmlsZU5hbWU6IHN0cmluZykgPT4gZmFsc2UsXG4gICAgcGF0aFRvTW9kdWxlTmFtZTogY2xpU3VwcG9ydC5wYXRoVG9Nb2R1bGVOYW1lLFxuICAgIGZpbGVOYW1lVG9Nb2R1bGVJZDogKGZpbGVOYW1lKSA9PiBmaWxlTmFtZSxcbiAgICBlczVNb2RlOiB0cnVlLFxuICAgIGdvb2dtb2R1bGU6IHRydWUsXG4gICAgcHJlbHVkZTogJycsXG4gICAgdHJhbnNmb3JtRGVjb3JhdG9yczogdHJ1ZSxcbiAgICB0cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZTogdHJ1ZSxcbiAgICB0eXBlQmxhY2tMaXN0UGF0aHM6IG5ldyBTZXQoKSxcbiAgICB1bnR5cGVkOiBmYWxzZSxcbiAgICBsb2dXYXJuaW5nOiAod2FybmluZykgPT4gY29uc29sZS5lcnJvcih0c2lja2xlLmZvcm1hdERpYWdub3N0aWNzKFt3YXJuaW5nXSkpLFxuICB9O1xuICBjb25zdCBkaWFnbm9zdGljcyA9IHRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlhZ25vc3RpY3MsXG4gICAgICBtb2R1bGVzTWFuaWZlc3Q6IG5ldyBNb2R1bGVzTWFuaWZlc3QoKSxcbiAgICAgIGV4dGVybnM6IHt9LFxuICAgICAgZW1pdFNraXBwZWQ6IHRydWUsXG4gICAgICBlbWl0dGVkRmlsZXM6IFtdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHRzaWNrbGUuZW1pdFdpdGhUc2lja2xlKFxuICAgICAgcHJvZ3JhbSwgdHJhbnNmb3JtZXJIb3N0LCBjb21waWxlckhvc3QsIG9wdGlvbnMsIHVuZGVmaW5lZCwgd3JpdGVGaWxlKTtcbn1cblxuZnVuY3Rpb24gbWFpbihhcmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gIGNvbnN0IHtzZXR0aW5ncywgdHNjQXJnc30gPSBsb2FkU2V0dGluZ3NGcm9tQXJncyhhcmdzKTtcbiAgY29uc3QgY29uZmlnID0gbG9hZFRzY0NvbmZpZyh0c2NBcmdzKTtcbiAgaWYgKGNvbmZpZy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcih0c2lja2xlLmZvcm1hdERpYWdub3N0aWNzKGNvbmZpZy5lcnJvcnMpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChjb25maWcub3B0aW9ucy5tb2R1bGUgIT09IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlMpIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhbiB1cHN0cmVhbSBUeXBlU2NyaXB0IGRpYWdub3N0aWMsIHRoZXJlZm9yZSBpdCBkb2VzIG5vdCBnb1xuICAgIC8vIHRocm91Z2ggdGhlIGRpYWdub3N0aWNzIGFycmF5IG1lY2hhbmlzbS5cbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAndHNpY2tsZSBjb252ZXJ0cyBUeXBlU2NyaXB0IG1vZHVsZXMgdG8gQ2xvc3VyZSBtb2R1bGVzIHZpYSBDb21tb25KUyBpbnRlcm5hbGx5LiAnICtcbiAgICAgICAgJ1NldCB0c2NvbmZpZy5qcyBcIm1vZHVsZVwiOiBcImNvbW1vbmpzXCInKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFJ1biB0c2lja2xlK1RTQyB0byBjb252ZXJ0IGlucHV0cyB0byBDbG9zdXJlIEpTIGZpbGVzLlxuICBjb25zdCByZXN1bHQgPSB0b0Nsb3N1cmVKUyhcbiAgICAgIGNvbmZpZy5vcHRpb25zLCBjb25maWcuZmlsZU5hbWVzLCBzZXR0aW5ncywgKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnRzLCB7ZW5jb2Rpbmc6ICd1dGYtOCd9KTtcbiAgICAgIH0pO1xuICBpZiAocmVzdWx0LmRpYWdub3N0aWNzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IodHNpY2tsZS5mb3JtYXREaWFnbm9zdGljcyhyZXN1bHQuZGlhZ25vc3RpY3MpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChzZXR0aW5ncy5leHRlcm5zUGF0aCkge1xuICAgIG1rZGlycC5zeW5jKHBhdGguZGlybmFtZShzZXR0aW5ncy5leHRlcm5zUGF0aCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoc2V0dGluZ3MuZXh0ZXJuc1BhdGgsIHRzaWNrbGUuZ2V0R2VuZXJhdGVkRXh0ZXJucyhyZXN1bHQuZXh0ZXJucykpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBDTEkgZW50cnkgcG9pbnRcbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3Yuc3BsaWNlKDIpKSk7XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFVQSx1QkFBeUI7SUFDekIsbUNBQXFDO0lBQ3JDLCtCQUFpQztJQUNqQywyQkFBNkI7SUFDN0IsMkNBQW1DO0lBRW5DLG9EQUE0QztJQUM1Qyw2Q0FBcUM7SUFDckMsK0NBQTBDO0lBZTFDO1FBQ0UsT0FBTyxDQUFDLEtBQUssQ0FBQywwU0FRZixDQUFDLENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsOEJBQThCLElBQWM7UUFDMUMsSUFBTSxRQUFRLEdBQWEsRUFBRSxDQUFDO1FBQzlCLElBQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQzs7WUFDbEMsR0FBRyxDQUFDLENBQWUsSUFBQSxLQUFBLFNBQUEsTUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQSxnQkFBQTtnQkFBckMsSUFBTSxJQUFJLFdBQUE7Z0JBQ2IsTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDYixLQUFLLEdBQUcsQ0FBQztvQkFDVCxLQUFLLE1BQU07d0JBQ1QsS0FBSyxFQUFFLENBQUM7d0JBQ1IsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQzt3QkFDaEIsS0FBSyxDQUFDO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsV0FBVyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDeEMsS0FBSyxDQUFDO29CQUNSLEtBQUssT0FBTzt3QkFDVixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsS0FBSyxDQUFDO29CQUNSLEtBQUssU0FBUzt3QkFDWixRQUFRLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzt3QkFDeEIsS0FBSyxDQUFDO29CQUNSLEtBQUssR0FBRzt3QkFDTixtRUFB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UUFBUSxDQUFDLFdBQVcsRUFBRSxPQUFPLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDdEYsQ0FBQztRQUNELE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztRQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuLyoqXG4gKiBAbGljZW5zZVxuICogQ29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBtaW5pbWlzdCBmcm9tICdtaW5pbWlzdCc7XG5pbXBvcnQgKiBhcyBta2RpcnAgZnJvbSAnbWtkaXJwJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyB0cyBmcm9tICcuL3R5cGVzY3JpcHQnO1xuXG5pbXBvcnQgKiBhcyBjbGlTdXBwb3J0IGZyb20gJy4vY2xpX3N1cHBvcnQnO1xuaW1wb3J0ICogYXMgdHNpY2tsZSBmcm9tICcuL3RzaWNrbGUnO1xuaW1wb3J0IHtNb2R1bGVzTWFuaWZlc3R9IGZyb20gJy4vdHNpY2tsZSc7XG5pbXBvcnQge2NyZWF0ZVNvdXJjZVJlcGxhY2luZ0NvbXBpbGVySG9zdH0gZnJvbSAnLi91dGlsJztcblxuLyoqIFRzaWNrbGUgc2V0dGluZ3MgcGFzc2VkIG9uIHRoZSBjb21tYW5kIGxpbmUuICovXG5leHBvcnQgaW50ZXJmYWNlIFNldHRpbmdzIHtcbiAgLyoqIElmIHByb3ZpZGVkLCBwYXRoIHRvIHNhdmUgZXh0ZXJucyB0by4gKi9cbiAgZXh0ZXJuc1BhdGg/OiBzdHJpbmc7XG5cbiAgLyoqIElmIHByb3ZpZGVkLCBhdHRlbXB0IHRvIHByb3ZpZGUgdHlwZXMgcmF0aGVyIHRoYW4gez99LiAqL1xuICBpc1R5cGVkPzogYm9vbGVhbjtcblxuICAvKiogSWYgdHJ1ZSwgbG9nIGludGVybmFsIGRlYnVnIHdhcm5pbmdzIHRvIHRoZSBjb25zb2xlLiAqL1xuICB2ZXJib3NlPzogYm9vbGVhbjtcbn1cblxuZnVuY3Rpb24gdXNhZ2UoKSB7XG4gIGNvbnNvbGUuZXJyb3IoYHVzYWdlOiB0c2lja2xlIFt0c2lja2xlIG9wdGlvbnNdIC0tIFt0c2Mgb3B0aW9uc11cblxuZXhhbXBsZTpcbiAgdHNpY2tsZSAtLWV4dGVybnM9Zm9vL2V4dGVybnMuanMgLS0gLXAgc3JjIC0tbm9JbXBsaWNpdEFueVxuXG50c2lja2xlIGZsYWdzIGFyZTpcbiAgLS1leHRlcm5zPVBBVEggICAgIHNhdmUgZ2VuZXJhdGVkIENsb3N1cmUgZXh0ZXJucy5qcyB0byBQQVRIXG4gIC0tdHlwZWQgICAgICAgICAgICBbZXhwZXJpbWVudGFsXSBhdHRlbXB0IHRvIHByb3ZpZGUgQ2xvc3VyZSB0eXBlcyBpbnN0ZWFkIG9mIHs/fVxuYCk7XG59XG5cbi8qKlxuICogUGFyc2VzIHRoZSBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBleHRyYWN0aW5nIHRoZSB0c2lja2xlIHNldHRpbmdzIGFuZFxuICogdGhlIGFyZ3VtZW50cyB0byBwYXNzIG9uIHRvIHRzYy5cbiAqL1xuZnVuY3Rpb24gbG9hZFNldHRpbmdzRnJvbUFyZ3MoYXJnczogc3RyaW5nW10pOiB7c2V0dGluZ3M6IFNldHRpbmdzLCB0c2NBcmdzOiBzdHJpbmdbXX0ge1xuICBjb25zdCBzZXR0aW5nczogU2V0dGluZ3MgPSB7fTtcbiAgY29uc3QgcGFyc2VkQXJncyA9IG1pbmltaXN0KGFyZ3MpO1xuICBmb3IgKGNvbnN0IGZsYWcgb2YgT2JqZWN0LmtleXMocGFyc2VkQXJncykpIHtcbiAgICBzd2l0Y2ggKGZsYWcpIHtcbiAgICAgIGNhc2UgJ2gnOlxuICAgICAgY2FzZSAnaGVscCc6XG4gICAgICAgIHVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdleHRlcm5zJzpcbiAgICAgICAgc2V0dGluZ3MuZXh0ZXJuc1BhdGggPSBwYXJzZWRBcmdzW2ZsYWddO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3R5cGVkJzpcbiAgICAgICAgc2V0dGluZ3MuaXNUeXBlZCA9IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndmVyYm9zZSc6XG4gICAgICAgIHNldHRpbmdzLnZlcmJvc2UgPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ18nOlxuICAgICAgICAvLyBUaGlzIGlzIHBhcnQgb2YgdGhlIG1pbmltaXN0IEFQSSwgYW5kIGhvbGRzIGFyZ3MgYWZ0ZXIgdGhlICctLScuXG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29uc29sZS5lcnJvcihgdW5rbm93biBmbGFnICctLSR7ZmxhZ30nYCk7XG4gICAgICAgIHVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4gIH1cbiAgLy8gQXJndW1lbnRzIGFmdGVyIHRoZSAnLS0nIGFyZyBhcmUgYXJndW1lbnRzIHRvIHRzYy5cbiAgY29uc3QgdHNjQXJncyA9IHBhcnNlZEFyZ3NbJ18nXTtcbiAgcmV0dXJuIHtzZXR0aW5ncywgdHNjQXJnc307XG59XG5cbi8qKlxuICogTG9hZHMgdGhlIHRzY29uZmlnLmpzb24gZnJvbSBhIGRpcmVjdG9yeS5cbiAqXG4gKiBUT0RPKG1hcnRpbnByb2JzdCk6IHVzZSB0cy5maW5kQ29uZmlnRmlsZSB0byBtYXRjaCB0c2MgYmVoYXZpb3VyLlxuICpcbiAqIEBwYXJhbSBhcmdzIHRzYyBjb21tYW5kLWxpbmUgYXJndW1lbnRzLlxuICovXG5mdW5jdGlvbiBsb2FkVHNjQ29uZmlnKGFyZ3M6IHN0cmluZ1tdKTpcbiAgICB7b3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLCBmaWxlTmFtZXM6IHN0cmluZ1tdLCBlcnJvcnM6IHRzLkRpYWdub3N0aWNbXX0ge1xuICAvLyBHYXRoZXIgdHNjIG9wdGlvbnMvaW5wdXQgZmlsZXMgZnJvbSBjb21tYW5kIGxpbmUuXG4gIGxldCB7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnN9ID0gdHMucGFyc2VDb21tYW5kTGluZShhcmdzKTtcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzfTtcbiAgfVxuXG4gIC8vIFN0b3JlIGZpbGUgYXJndW1lbnRzXG4gIGNvbnN0IHRzRmlsZUFyZ3VtZW50cyA9IGZpbGVOYW1lcztcblxuICAvLyBSZWFkIGZ1cnRoZXIgc2V0dGluZ3MgZnJvbSB0c2NvbmZpZy5qc29uLlxuICBjb25zdCBwcm9qZWN0RGlyID0gb3B0aW9ucy5wcm9qZWN0IHx8ICcuJztcbiAgY29uc3QgY29uZmlnRmlsZU5hbWUgPSBwYXRoLmpvaW4ocHJvamVjdERpciwgJ3RzY29uZmlnLmpzb24nKTtcbiAgY29uc3Qge2NvbmZpZzoganNvbiwgZXJyb3J9ID1cbiAgICAgIHRzLnJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGVOYW1lLCBwYXRoID0+IGZzLnJlYWRGaWxlU3luYyhwYXRoLCAndXRmLTgnKSk7XG4gIGlmIChlcnJvcikge1xuICAgIHJldHVybiB7b3B0aW9uczoge30sIGZpbGVOYW1lczogW10sIGVycm9yczogW2Vycm9yXX07XG4gIH1cbiAgKHtvcHRpb25zLCBmaWxlTmFtZXMsIGVycm9yc30gPVxuICAgICAgIHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KGpzb24sIHRzLnN5cywgcHJvamVjdERpciwgb3B0aW9ucywgY29uZmlnRmlsZU5hbWUpKTtcbiAgaWYgKGVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIHtvcHRpb25zOiB7fSwgZmlsZU5hbWVzOiBbXSwgZXJyb3JzfTtcbiAgfVxuXG4gIC8vIGlmIGZpbGUgYXJndW1lbnRzIHdlcmUgZ2l2ZW4gdG8gdGhlIHR5cGVzY3JpcHQgdHJhbnNwaWxlciB0aGVuIHRyYW5zcGlsZSBvbmx5IHRob3NlIGZpbGVzXG4gIGZpbGVOYW1lcyA9IHRzRmlsZUFyZ3VtZW50cy5sZW5ndGggPiAwID8gdHNGaWxlQXJndW1lbnRzIDogZmlsZU5hbWVzO1xuXG4gIHJldHVybiB7b3B0aW9ucywgZmlsZU5hbWVzLCBlcnJvcnM6IFtdfTtcbn1cblxuLyoqXG4gKiBDb21waWxlcyBUeXBlU2NyaXB0IGNvZGUgaW50byBDbG9zdXJlLWNvbXBpbGVyLXJlYWR5IEpTLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdG9DbG9zdXJlSlMoXG4gICAgb3B0aW9uczogdHMuQ29tcGlsZXJPcHRpb25zLCBmaWxlTmFtZXM6IHN0cmluZ1tdLCBzZXR0aW5nczogU2V0dGluZ3MsXG4gICAgd3JpdGVGaWxlPzogdHMuV3JpdGVGaWxlQ2FsbGJhY2spOiB0c2lja2xlLkVtaXRSZXN1bHQge1xuICBjb25zdCBjb21waWxlckhvc3QgPSB0cy5jcmVhdGVDb21waWxlckhvc3Qob3B0aW9ucyk7XG4gIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKGZpbGVOYW1lcywgb3B0aW9ucywgY29tcGlsZXJIb3N0KTtcbiAgY29uc3QgdHJhbnNmb3JtZXJIb3N0OiB0c2lja2xlLlRzaWNrbGVIb3N0ID0ge1xuICAgIHNob3VsZFNraXBUc2lja2xlUHJvY2Vzc2luZzogKGZpbGVOYW1lOiBzdHJpbmcpID0+IHtcbiAgICAgIHJldHVybiBmaWxlTmFtZXMuaW5kZXhPZihmaWxlTmFtZSkgPT09IC0xO1xuICAgIH0sXG4gICAgc2hvdWxkSWdub3JlV2FybmluZ3NGb3JQYXRoOiAoZmlsZU5hbWU6IHN0cmluZykgPT4gZmFsc2UsXG4gICAgcGF0aFRvTW9kdWxlTmFtZTogY2xpU3VwcG9ydC5wYXRoVG9Nb2R1bGVOYW1lLFxuICAgIGZpbGVOYW1lVG9Nb2R1bGVJZDogKGZpbGVOYW1lKSA9PiBmaWxlTmFtZSxcbiAgICBlczVNb2RlOiB0cnVlLFxuICAgIGdvb2dtb2R1bGU6IHRydWUsXG4gICAgcHJlbHVkZTogJycsXG4gICAgdHJhbnNmb3JtRGVjb3JhdG9yczogdHJ1ZSxcbiAgICB0cmFuc2Zvcm1UeXBlc1RvQ2xvc3VyZTogdHJ1ZSxcbiAgICB0eXBlQmxhY2tMaXN0UGF0aHM6IG5ldyBTZXQoKSxcbiAgICB1bnR5cGVkOiBmYWxzZSxcbiAgICBsb2dXYXJuaW5nOiAod2FybmluZykgPT4gY29uc29sZS5lcnJvcih0c2lja2xlLmZvcm1hdERpYWdub3N0aWNzKFt3YXJuaW5nXSkpLFxuICAgIG9wdGlvbnMsXG4gICAgaG9zdDogY29tcGlsZXJIb3N0LFxuICB9O1xuICBjb25zdCBkaWFnbm9zdGljcyA9IHRzLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKTtcbiAgaWYgKGRpYWdub3N0aWNzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGlhZ25vc3RpY3MsXG4gICAgICBtb2R1bGVzTWFuaWZlc3Q6IG5ldyBNb2R1bGVzTWFuaWZlc3QoKSxcbiAgICAgIGV4dGVybnM6IHt9LFxuICAgICAgZW1pdFNraXBwZWQ6IHRydWUsXG4gICAgICBlbWl0dGVkRmlsZXM6IFtdLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHRzaWNrbGUuZW1pdFdpdGhUc2lja2xlKFxuICAgICAgcHJvZ3JhbSwgdHJhbnNmb3JtZXJIb3N0LCBjb21waWxlckhvc3QsIG9wdGlvbnMsIHVuZGVmaW5lZCwgd3JpdGVGaWxlKTtcbn1cblxuZnVuY3Rpb24gbWFpbihhcmdzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gIGNvbnN0IHtzZXR0aW5ncywgdHNjQXJnc30gPSBsb2FkU2V0dGluZ3NGcm9tQXJncyhhcmdzKTtcbiAgY29uc3QgY29uZmlnID0gbG9hZFRzY0NvbmZpZyh0c2NBcmdzKTtcbiAgaWYgKGNvbmZpZy5lcnJvcnMubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcih0c2lja2xlLmZvcm1hdERpYWdub3N0aWNzKGNvbmZpZy5lcnJvcnMpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChjb25maWcub3B0aW9ucy5tb2R1bGUgIT09IHRzLk1vZHVsZUtpbmQuQ29tbW9uSlMpIHtcbiAgICAvLyBUaGlzIGlzIG5vdCBhbiB1cHN0cmVhbSBUeXBlU2NyaXB0IGRpYWdub3N0aWMsIHRoZXJlZm9yZSBpdCBkb2VzIG5vdCBnb1xuICAgIC8vIHRocm91Z2ggdGhlIGRpYWdub3N0aWNzIGFycmF5IG1lY2hhbmlzbS5cbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAndHNpY2tsZSBjb252ZXJ0cyBUeXBlU2NyaXB0IG1vZHVsZXMgdG8gQ2xvc3VyZSBtb2R1bGVzIHZpYSBDb21tb25KUyBpbnRlcm5hbGx5LiAnICtcbiAgICAgICAgJ1NldCB0c2NvbmZpZy5qcyBcIm1vZHVsZVwiOiBcImNvbW1vbmpzXCInKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIC8vIFJ1biB0c2lja2xlK1RTQyB0byBjb252ZXJ0IGlucHV0cyB0byBDbG9zdXJlIEpTIGZpbGVzLlxuICBjb25zdCByZXN1bHQgPSB0b0Nsb3N1cmVKUyhcbiAgICAgIGNvbmZpZy5vcHRpb25zLCBjb25maWcuZmlsZU5hbWVzLCBzZXR0aW5ncywgKGZpbGVQYXRoOiBzdHJpbmcsIGNvbnRlbnRzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgbWtkaXJwLnN5bmMocGF0aC5kaXJuYW1lKGZpbGVQYXRoKSk7XG4gICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZmlsZVBhdGgsIGNvbnRlbnRzLCB7ZW5jb2Rpbmc6ICd1dGYtOCd9KTtcbiAgICAgIH0pO1xuICBpZiAocmVzdWx0LmRpYWdub3N0aWNzLmxlbmd0aCkge1xuICAgIGNvbnNvbGUuZXJyb3IodHNpY2tsZS5mb3JtYXREaWFnbm9zdGljcyhyZXN1bHQuZGlhZ25vc3RpY3MpKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIGlmIChzZXR0aW5ncy5leHRlcm5zUGF0aCkge1xuICAgIG1rZGlycC5zeW5jKHBhdGguZGlybmFtZShzZXR0aW5ncy5leHRlcm5zUGF0aCkpO1xuICAgIGZzLndyaXRlRmlsZVN5bmMoc2V0dGluZ3MuZXh0ZXJuc1BhdGgsIHRzaWNrbGUuZ2V0R2VuZXJhdGVkRXh0ZXJucyhyZXN1bHQuZXh0ZXJucykpO1xuICB9XG4gIHJldHVybiAwO1xufVxuXG4vLyBDTEkgZW50cnkgcG9pbnRcbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBwcm9jZXNzLmV4aXQobWFpbihwcm9jZXNzLmFyZ3Yuc3BsaWNlKDIpKSk7XG59XG4iXX0=
/// <amd-module name="tsickle/src/rewriter" />
/**
* @license
* Copyright Google Inc. All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import { SourceMapper } from './source_map_utils';

@@ -10,0 +3,0 @@ import * as ts from './typescript';

@@ -24,3 +24,3 @@ /**

else if (typeof define === "function" && define.amd) {
define("tsickle/src/rewriter", ["require", "exports", "tsickle/src/source_map_utils", "tsickle/src/typescript"], factory);
define("tsickle/src/rewriter", ["require", "exports", "tsickle/src/fileoverview_comment_transformer", "tsickle/src/source_map_utils", "tsickle/src/typescript"], factory);
}

@@ -30,2 +30,3 @@ })(function (require, exports) {

Object.defineProperty(exports, "__esModule", { value: true });
var fileoverview_comment_transformer_1 = require("tsickle/src/fileoverview_comment_transformer");
var source_map_utils_1 = require("tsickle/src/source_map_utils");

@@ -65,5 +66,26 @@ var ts = require("tsickle/src/typescript");

if (prefix) {
// Insert prefix after any leading trivia so that @fileoverview comments do not get broken.
var firstCode = this.file.getStart();
out = out.substring(0, firstCode) + prefix + out.substring(firstCode);
// Insert prefix after any leading @fileoverview comments, so they still come first in the
// file. This must not use file.getStart() (comment position in the input file), but rahter
// check comments in the new output, as those (in particular for comments) are unrelated.
var insertionIdx = 0;
try {
for (var _a = __values(ts.getLeadingCommentRanges(out, 0) || []), _b = _a.next(); !_b.done; _b = _a.next()) {
var cr = _b.value;
if (fileoverview_comment_transformer_1.isClosureFileoverviewComment(out.substring(cr.pos, cr.end))) {
insertionIdx = cr.end;
// Include space (in particular line breaks) after a @fileoverview comment; without the
// space seperating it, TypeScript might elide the emit.
while (insertionIdx < out.length && out[insertionIdx].match(/\s/))
insertionIdx++;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_b && !_b.done && (_c = _a.return)) _c.call(_a);
}
finally { if (e_1) throw e_1.error; }
}
out = out.substring(0, insertionIdx) + prefix + out.substring(insertionIdx);
this.sourceMapper.shiftByOffset(prefix.length);

@@ -75,2 +97,3 @@ }

};
var e_1, _c;
};

@@ -194,3 +217,3 @@ /**

}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {

@@ -200,6 +223,6 @@ try {

}
finally { if (e_1) throw e_1.error; }
finally { if (e_2) throw e_2.error; }
}
this.position.position += str.length;
var e_1, _a;
var e_2, _a;
};

@@ -264,2 +287,2 @@ /** Removes comment metacharacters from a string, to make it safe to embed in a comment. */

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV3cml0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmV3cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsaUVBQW9GO0lBQ3BGLDJDQUFtQztJQUVuQzs7OztPQUlHO0lBQ0g7UUFpQkUsa0JBQW1CLElBQW1CLEVBQVUsWUFBK0M7WUFBL0MsNkJBQUEsRUFBQSxlQUE2QixxQ0FBa0I7WUFBNUUsU0FBSSxHQUFKLElBQUksQ0FBZTtZQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFtQztZQWhCdkYsV0FBTSxHQUFhLEVBQUUsQ0FBQztZQUM5Qiw2Q0FBNkM7WUFDbkMsZ0JBQVcsR0FBb0IsRUFBRSxDQUFDO1lBQzVDLHNDQUFzQztZQUM5QixhQUFRLEdBQW1CLEVBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUMsQ0FBQztZQUNyRTs7O2VBR0c7WUFDSyxXQUFNLEdBQUcsQ0FBQyxDQUFDO1lBQ25COzs7ZUFHRztZQUNLLDJCQUFzQixHQUFHLENBQUMsQ0FBQyxDQUFDO1FBR3BDLENBQUM7UUFFRCw0QkFBUyxHQUFULFVBQVUsTUFBZTtZQUN2QixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBQ0QsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDL0IsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztnQkFDWCwyRkFBMkY7Z0JBQzNGLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3ZDLEdBQUcs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Q29weXJpZ2h0IEdvb2dsZSBJbmMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge05PT1BfU09VUkNFX01BUFBFUiwgU291cmNlTWFwcGVyLCBTb3VyY2VQb3NpdGlvbn0gZnJvbSAnLi9zb3VyY2VfbWFwX3V0aWxzJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQSBSZXdyaXRlciBtYW5hZ2VzIGl0ZXJhdGluZyB0aHJvdWdoIGEgdHMuU291cmNlRmlsZSwgY29weWluZyBpbnB1dFxuICogdG8gb3V0cHV0IHdoaWxlIGxldHRpbmcgdGhlIHN1YmNsYXNzIHBvdGVudGlhbGx5IGFsdGVyIHNvbWUgbm9kZXNcbiAqIGFsb25nIHRoZSB3YXkgYnkgaW1wbGVtZW50aW5nIG1heWJlUHJvY2VzcygpLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUmV3cml0ZXIge1xuICBwcml2YXRlIG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgLyoqIEVycm9ycyBmb3VuZCB3aGlsZSBleGFtaW5pbmcgdGhlIGNvZGUuICovXG4gIHByb3RlY3RlZCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdID0gW107XG4gIC8qKiBDdXJyZW50IHBvc2l0aW9uIGluIHRoZSBvdXRwdXQuICovXG4gIHByaXZhdGUgcG9zaXRpb246IFNvdXJjZVBvc2l0aW9uID0ge2xpbmU6IDAsIGNvbHVtbjogMCwgcG9zaXRpb246IDB9O1xuICAvKipcbiAgICogVGhlIGN1cnJlbnQgbGV2ZWwgb2YgcmVjdXJzaW9uIHRocm91Z2ggVHlwZVNjcmlwdCBOb2Rlcy4gIFVzZWQgaW4gZm9ybWF0dGluZyBpbnRlcm5hbCBkZWJ1Z1xuICAgKiBwcmludCBzdGF0ZW1lbnRzLlxuICAgKi9cbiAgcHJpdmF0ZSBpbmRlbnQgPSAwO1xuICAvKipcbiAgICogU2tpcCBlbWl0dGluZyBhbnkgY29kZSBiZWZvcmUgdGhlIGdpdmVuIG9mZnNldC4gRS5nLiB1c2VkIHRvIGF2b2lkIGVtaXR0aW5nIEBmaWxlb3ZlcnZpZXdcbiAgICogY29tbWVudHMgdHdpY2UuXG4gICAqL1xuICBwcml2YXRlIHNraXBDb21tZW50c1VwVG9PZmZzZXQgPSAtMTtcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZmlsZTogdHMuU291cmNlRmlsZSwgcHJpdmF0ZSBzb3VyY2VNYXBwZXI6IFNvdXJjZU1hcHBlciA9IE5PT1BfU09VUkNFX01BUFBFUikge1xuICB9XG5cbiAgZ2V0T3V0cHV0KHByZWZpeD86IHN0cmluZyk6IHtvdXRwdXQ6IHN0cmluZywgZGlhZ25vc3RpY3M6IHRzLkRpYWdub3N0aWNbXX0ge1xuICAgIGlmICh0aGlzLmluZGVudCAhPT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd2aXNpdCgpIGZhaWxlZCB0byB0cmFjayBuZXN0aW5nJyk7XG4gICAgfVxuICAgIGxldCBvdXQgPSB0aGlzLm91dHB1dC5qb2luKCcnKTtcbiAgICBpZiAocHJlZml4KSB7XG4gICAgICAvLyBJbnNlcnQgcHJlZml4IGFmdGVyIGFueSBsZWFkaW5nIHRyaXZpYSBzbyB0aGF0IEBmaWxlb3ZlcnZpZXcgY29tbWVudHMgZG8gbm90IGdldCBicm9rZW4uXG4gICAgICBjb25zdCBmaXJzdENvZGUgPSB0aGlzLmZpbGUuZ2V0U3RhcnQoKTtcbiAgICAgIG91dCA9IG91dC5zdWJzdHJpbmcoMCwgZmlyc3RDb2RlKSArIHByZWZpeCArIG91dC5zdWJzdHJpbmcoZmlyc3RDb2RlKTtcbiAgICAgIHRoaXMuc291cmNlTWFwcGVyLnNoaWZ0QnlPZmZzZXQocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvdXRwdXQ6IG91dCxcbiAgICAgIGRpYWdub3N0aWNzOiB0aGlzLmRpYWdub3N0aWNzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogdmlzaXQgdHJhdmVyc2VzIGEgTm9kZSwgcmVjdXJzaXZlbHkgd3JpdGluZyBhbGwgbm9kZXMgbm90IGhhbmRsZWQgYnkgdGhpcy5tYXliZVByb2Nlc3MuXG4gICAqL1xuICB2aXNpdChub2RlOiB0cy5Ob2RlKSB7XG4gICAgLy8gdGhpcy5sb2dXaXRoSW5kZW50KCdub2RlOiAnICsgdHMuU3ludGF4S2luZFtub2RlLmtpbmRdKTtcbiAgICB0aGlzLmluZGVudCsrO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMubWF5YmVQcm9jZXNzKG5vZGUpKSB7XG4gICAgICAgIHRoaXMud3JpdGVOb2RlKG5vZGUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghZS5tZXNzYWdlKSBlLm1lc3NhZ2UgPSAnVW5oYW5kbGVkIGVycm9yIGluIHRzaWNrbGUnO1xuICAgICAgZS5tZXNzYWdlICs9IGBcXG4gYXQgJHt0cy5TeW50YXhLaW5kW25vZGUua2luZF19IGluICR7dGhpcy5maWxlLmZpbGVOYW1lfTpgO1xuICAgICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPSB0aGlzLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTdGFydCgpKTtcbiAgICAgIGUubWVzc2FnZSArPSBgJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfWA7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmluZGVudC0tO1xuICB9XG5cbiAgLyoqXG4gICAqIG1heWJlUHJvY2VzcyBsZXRzIHN1YmNsYXNzZXMgb3B0aW9uYWxseSBwcm9jZXNzZXMgYSBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIG5vZGUgaGFzIGJlZW4gaGFuZGxlZCBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZDtcbiAgICogICAgZmFsc2UgdG8gaGF2ZSB0aGUgbm9kZSB3cml0dGVuIGFuZCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbHkgdmlzaXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBtYXliZVByb2Nlc3Mobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiB3cml0ZU5vZGUgd3JpdGVzIGEgdHMuTm9kZSwgY2FsbGluZyB0aGlzLnZpc2l0KCkgb24gaXRzIGNoaWxkcmVuLiAqL1xuICB3cml0ZU5vZGUobm9kZTogdHMuTm9kZSwgc2tpcENvbW1lbnRzID0gZmFsc2UsIG5ld0xpbmVJZkNvbW1lbnRzU3RyaXBwZWQgPSB0cnVlKSB7XG4gICAgbGV0IHBvcyA9IG5vZGUuZ2V0RnVsbFN0YXJ0KCk7XG4gICAgaWYgKHNraXBDb21tZW50cykge1xuICAgICAgLy8gVG8gc2tpcCBjb21tZW50cywgd2Ugc2tpcCBhbGwgd2hpdGVzcGFjZS9jb21tZW50cyBwcmVjZWRpbmdcbiAgICAgIC8vIHRoZSBub2RlLiAgQnV0IGlmIHRoZXJlIHdhcyBhbnl0aGluZyBza2lwcGVkIHdlIHNob3VsZCBlbWl0XG4gICAgICAvLyBhIG5ld2xpbmUgaW4gaXRzIHBsYWNlIHNvIHRoYXQgdGhlIG5vZGUgcmVtYWlucyBzZXBhcmF0ZWRcbiAgICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIG5vZGUuICBUT0RPOiBkb24ndCBza2lwIGFueXRoaW5nIGhlcmUgaWZcbiAgICAgIC8vIHRoZXJlIHdhc24ndCBhbnkgY29tbWVudC5cbiAgICAgIGlmIChuZXdMaW5lSWZDb21tZW50c1N0cmlwcGVkICYmIG5vZGUuZ2V0RnVsbFN0YXJ0KCkgPCBub2RlLmdldFN0YXJ0KCkpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHBvcyA9IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICB9XG4gICAgdGhpcy53cml0ZU5vZGVGcm9tKG5vZGUsIHBvcyk7XG4gIH1cblxuICB3cml0ZU5vZGVGcm9tKG5vZGU6IHRzLk5vZGUsIHBvczogbnVtYmVyLCBlbmQgPSBub2RlLmdldEVuZCgpKSB7XG4gICAgaWYgKGVuZCA8PSB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb2xkU2tpcENvbW1lbnRzVXBUb09mZnNldCA9IHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldDtcbiAgICB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQgPSBNYXRoLm1heCh0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQsIHBvcyk7XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIGNoaWxkID0+IHtcbiAgICAgIHRoaXMud3JpdGVSYW5nZShub2RlLCBwb3MsIGNoaWxkLmdldEZ1bGxTdGFydCgpKTtcbiAgICAgIHRoaXMudmlzaXQoY2hpbGQpO1xuICAgICAgcG9zID0gY2hpbGQuZ2V0RW5kKCk7XG4gICAgfSk7XG4gICAgdGhpcy53cml0ZVJhbmdlKG5vZGUsIHBvcywgZW5kKTtcbiAgICB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQgPSBvbGRTa2lwQ29tbWVudHNVcFRvT2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBhbGwgbGVhZGluZyB0cml2aWEgKHdoaXRlc3BhY2Ugb3IgY29tbWVudHMpIG9uIG5vZGUsIG9yIGFsbCB0cml2aWEgdXAgdG8gdGhlIGdpdmVuXG4gICAqIHBvc2l0aW9uLiBBbHNvIG1hcmtzIHRob3NlIHRyaXZpYSBhcyBcImFscmVhZHkgZW1pdHRlZFwiIGJ5IHNoaWZ0aW5nIHRoZSBza2lwQ29tbWVudHNVcFRvIG1hcmtlci5cbiAgICovXG4gIHdyaXRlTGVhZGluZ1RyaXZpYShub2RlOiB0cy5Ob2RlLCB1cFRvID0gMCkge1xuICAgIGNvbnN0IHVwVG9PZmZzZXQgPSB1cFRvIHx8IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgbm9kZS5nZXRGdWxsU3RhcnQoKSwgdXBUbyB8fCBub2RlLmdldFN0YXJ0KCkpO1xuICAgIHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IHVwVG9PZmZzZXQ7XG4gIH1cblxuICBhZGRTb3VyY2VNYXBwaW5nKG5vZGU6IHRzLk5vZGUpIHtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgbm9kZS5nZXRFbmQoKSwgbm9kZS5nZXRFbmQoKSk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBzcGFuIG9mIHRoZSBpbnB1dCBmaWxlIGFzIGV4cHJlc3NlZCBieSBhYnNvbHV0ZSBvZmZzZXRzLlxuICAgKiBUaGVzZSBvZmZzZXRzIGFyZSBmb3VuZCBpbiBhdHRyaWJ1dGVzIGxpa2Ugbm9kZS5nZXRGdWxsU3RhcnQoKSBhbmRcbiAgICogbm9kZS5nZXRFbmQoKS5cbiAgICovXG4gIHdyaXRlUmFuZ2Uobm9kZTogdHMuTm9kZSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgY29uc3QgZnVsbFN0YXJ0ID0gbm9kZS5nZXRGdWxsU3RhcnQoKTtcbiAgICBjb25zdCB0ZXh0U3RhcnQgPSBub2RlLmdldFN0YXJ0KCk7XG4gICAgaWYgKGZyb20gPj0gZnVsbFN0YXJ0ICYmIGZyb20gPCB0ZXh0U3RhcnQpIHtcbiAgICAgIGZyb20gPSBNYXRoLm1heChmcm9tLCB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQpO1xuICAgIH1cbiAgICAvLyBBZGQgYSBzb3VyY2UgbWFwcGluZy4gd3JpdGVSYW5nZShmcm9tLCB0bykgYWx3YXlzIGNvcnJlc3BvbmRzIHRvXG4gICAgLy8gb3JpZ2luYWwgc291cmNlIGNvZGUsIHNvIGFkZCBhIG1hcHBpbmcgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gdGhhdFxuICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBsb2NhdGlvbiBhdCBgZnJvbWAuIFRoZSBhZGRpdGlvbmFsIGNvZGUgZ2VuZXJhdGVkXG4gICAgLy8gYnkgdHNpY2tsZSB3aWxsIHRoZW4gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBsYXN0IG1hcHBlZCBjb2RlXG4gICAgLy8gc2VjdGlvbiBwcmVjZWRpbmcgaXQuIFRoYXQncyBhcmd1YWJseSBpbmNvcnJlY3QgKGUuZy4gZm9yIHRoZSBmYWtlXG4gICAgLy8gbWV0aG9kcyBkZWZpbmluZyBwcm9wZXJ0aWVzKSwgYnV0IGlzIGdvb2QgZW5vdWdoIGZvciBzdGFjayB0cmFjZXMuXG4gICAgY29uc3QgcG9zID0gdGhpcy5maWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGZyb20pO1xuICAgIHRoaXMuc291cmNlTWFwcGVyLmFkZE1hcHBpbmcoXG4gICAgICAgIG5vZGUsIHtsaW5lOiBwb3MubGluZSwgY29sdW1uOiBwb3MuY2hhcmFjdGVyLCBwb3NpdGlvbjogZnJvbX0sIHRoaXMucG9zaXRpb24sIHRvIC0gZnJvbSk7XG4gICAgLy8gZ2V0U291cmNlRmlsZSgpLmdldFRleHQoKSBpcyB3cm9uZyBoZXJlIGJlY2F1c2UgaXQgaGFzIHRoZSB0ZXh0IG9mXG4gICAgLy8gdGhlIFNvdXJjZUZpbGUgbm9kZSBvZiB0aGUgQVNULCB3aGljaCBkb2Vzbid0IGNvbnRhaW4gdGhlIGNvbW1lbnRzXG4gICAgLy8gcHJlY2VkaW5nIHRoYXQgbm9kZS4gIFNlbWFudGljYWxseSB0aGVzZSByYW5nZXMgYXJlIGp1c3Qgb2Zmc2V0c1xuICAgIC8vIGludG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRleHQsIHNvIHNsaWNlIGZyb20gdGhhdC5cbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5maWxlLnRleHQuc2xpY2UoZnJvbSwgdG8pO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0aGlzLmVtaXQodGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZW1pdChzdHI6IHN0cmluZykge1xuICAgIHRoaXMub3V0cHV0LnB1c2goc3RyKTtcbiAgICBmb3IgKGNvbnN0IGMgb2Ygc3RyKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLmNvbHVtbisrO1xuICAgICAgaWYgKGMgPT09ICdcXG4nKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24ubGluZSsrO1xuICAgICAgICB0aGlzLnBvc2l0aW9uLmNvbHVtbiA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucG9zaXRpb24ucG9zaXRpb24gKz0gc3RyLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGNvbW1lbnQgbWV0YWNoYXJhY3RlcnMgZnJvbSBhIHN0cmluZywgdG8gbWFrZSBpdCBzYWZlIHRvIGVtYmVkIGluIGEgY29tbWVudC4gKi9cbiAgZXNjYXBlRm9yQ29tbWVudChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXC9cXCovZywgJ19fJykucmVwbGFjZSgvXFwqXFwvL2csICdfXycpO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGU6IG5vLXVudXNlZC12YXJpYWJsZSAqL1xuICBsb2dXaXRoSW5kZW50KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIC8qIHRzbGludDplbmFibGU6IG5vLXVudXNlZC12YXJpYWJsZSAqL1xuICAgIGNvbnN0IHByZWZpeCA9IG5ldyBBcnJheSh0aGlzLmluZGVudCArIDEpLmpvaW4oJ3wgJyk7XG4gICAgY29uc29sZS5sb2cocHJlZml4ICsgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgYSBjb21waWxlciBlcnJvciB0aGF0IHJlZmVyZW5jZXMgdGhlIE5vZGUncyBraW5kLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHRoZSBcImVsc2VcIlxuICAgKiBicmFuY2ggb2YgY29kZSB0aGF0IGlzIGF0dGVtcHRpbmcgdG8gaGFuZGxlIGFsbCBwb3NzaWJsZSBpbnB1dCBOb2RlIHR5cGVzLCB0byBlbnN1cmUgYWxsIGNhc2VzXG4gICAqIGNvdmVyZWQuXG4gICAqL1xuICBlcnJvclVuaW1wbGVtZW50ZWRLaW5kKG5vZGU6IHRzLk5vZGUsIHdoZXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVycm9yKG5vZGUsIGAke3RzLlN5bnRheEtpbmRbbm9kZS5raW5kXX0gbm90IGltcGxlbWVudGVkIGluICR7d2hlcmV9YCk7XG4gIH1cblxuICBlcnJvcihub2RlOiB0cy5Ob2RlLCBtZXNzYWdlVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWFnbm9zdGljcy5wdXNoKHtcbiAgICAgIGZpbGU6IG5vZGUuZ2V0U291cmNlRmlsZSgpLFxuICAgICAgc3RhcnQ6IG5vZGUuZ2V0U3RhcnQoKSxcbiAgICAgIGxlbmd0aDogbm9kZS5nZXRFbmQoKSAtIG5vZGUuZ2V0U3RhcnQoKSxcbiAgICAgIG1lc3NhZ2VUZXh0LFxuICAgICAgY2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcbiAgICAgIGNvZGU6IDAsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdGhlIHN0cmluZyBjb250ZW50cyBvZiBhIHRzLklkZW50aWZpZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpZmllclRleHQoaWRlbnRpZmllcjogdHMuSWRlbnRpZmllcik6IHN0cmluZyB7XG4gIC8vIE5PVEU6IHRoZSAndGV4dCcgcHJvcGVydHkgb24gYW4gSWRlbnRpZmllciBtYXkgYmUgZXNjYXBlZCBpZiBpdCBzdGFydHNcbiAgLy8gd2l0aCAnX18nLCBzbyBqdXN0IHVzZSBnZXRUZXh0KCkuXG4gIHJldHVybiBpZGVudGlmaWVyLmdldFRleHQoKTtcbn1cblxuLyoqIFJldHVybnMgYSBkb3Qtam9pbmVkIHF1YWxpZmllZCBuYW1lIChmb28uYmFyLkJheikuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50aXR5TmFtZVRleHQobmFtZTogdHMuRW50aXR5TmFtZSk6IHN0cmluZyB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIobmFtZSkpIHtcbiAgICByZXR1cm4gZ2V0SWRlbnRpZmllclRleHQobmFtZSk7XG4gIH1cbiAgcmV0dXJuIGdldEVudGl0eU5hbWVUZXh0KG5hbWUubGVmdCkgKyAnLicgKyBnZXRJZGVudGlmaWVyVGV4dChuYW1lLnJpZ2h0KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBlc2NhcGVkIFR5cGVTY3JpcHQgbmFtZSBpbnRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgbmFtZS5cbiAqIFByZWZlciBnZXRJZGVudGlmaWVyVGV4dCgpIGluc3RlYWQgaWYgcG9zc2libGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU2VlIHRoZSBwcml2YXRlIGZ1bmN0aW9uIHVuZXNjYXBlSWRlbnRpZmllciBpbiBUeXBlU2NyaXB0J3MgdXRpbGl0aWVzLnRzLlxuICBpZiAobmFtZS5tYXRjaCgvXl9fXy8pKSByZXR1cm4gbmFtZS5zdWJzdHIoMSk7XG4gIHJldHVybiBuYW1lO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmV3cml0ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcmV3cml0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUgsaUdBQWdGO0lBQ2hGLGlFQUFvRjtJQUNwRiwyQ0FBbUM7SUFFbkM7Ozs7T0FJRztJQUNIO1FBaUJFLGtCQUFtQixJQUFtQixFQUFVLFlBQStDO1lBQS9DLDZCQUFBLEVBQUEsZUFBNkIscUNBQWtCO1lBQTVFLFNBQUksR0FBSixJQUFJLENBQWU7WUFBVSxpQkFBWSxHQUFaLFlBQVksQ0FBbUM7WUFoQnZGLFdBQU0sR0FBYSxFQUFFLENBQUM7WUFDOUIsNkNBQTZDO1lBQ25DLGdCQUFXLEdBQW9CLEVBQUUsQ0FBQztZQUM1QyxzQ0FBc0M7WUFDOUIsYUFBUSxHQUFtQixFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFDLENBQUM7WUFDckU7OztlQUdHO1lBQ0ssV0FBTSxHQUFHLENBQUMsQ0FBQztZQUNuQjs7O2VBR0c7WUFDSywyQkFBc0IsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUdwQyxDQUFDO1FBRUQsNEJBQVMsR0FBVCxVQUFVLE1BQWU7WUFDdkIsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUN0QixNQUFNLElBQUksS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7WUFDckQsQ0FBQztZQUNELElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQy9CLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0JBQ1gsMEZBQTBGO2dCQUMxRiwyRkFBMkY7Z0JBQzNGLHlGQUF5RjtnQkFDekYsSUFBSSxZQUFZLEdBQUcsQ0FBQyxD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Q0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsTUFBTSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFMRCw4Q0FLQztJQUVEOzs7T0FHRztJQUNILHNCQUE2QixJQUFZO1FBQ3ZDLDRFQUE0RTtRQUM1RSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDOUMsTUFBTSxDQUFDLElBQUksQ0FBQztJQUNkLENBQUM7SUFKRCxvQ0FJQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50fSBmcm9tICcuL2ZpbGVvdmVydmlld19jb21tZW50X3RyYW5zZm9ybWVyJztcbmltcG9ydCB7Tk9PUF9TT1VSQ0VfTUFQUEVSLCBTb3VyY2VNYXBwZXIsIFNvdXJjZVBvc2l0aW9ufSBmcm9tICcuL3NvdXJjZV9tYXBfdXRpbHMnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAnLi90eXBlc2NyaXB0JztcblxuLyoqXG4gKiBBIFJld3JpdGVyIG1hbmFnZXMgaXRlcmF0aW5nIHRocm91Z2ggYSB0cy5Tb3VyY2VGaWxlLCBjb3B5aW5nIGlucHV0XG4gKiB0byBvdXRwdXQgd2hpbGUgbGV0dGluZyB0aGUgc3ViY2xhc3MgcG90ZW50aWFsbHkgYWx0ZXIgc29tZSBub2Rlc1xuICogYWxvbmcgdGhlIHdheSBieSBpbXBsZW1lbnRpbmcgbWF5YmVQcm9jZXNzKCkuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXdyaXRlciB7XG4gIHByaXZhdGUgb3V0cHV0OiBzdHJpbmdbXSA9IFtdO1xuICAvKiogRXJyb3JzIGZvdW5kIHdoaWxlIGV4YW1pbmluZyB0aGUgY29kZS4gKi9cbiAgcHJvdGVjdGVkIGRpYWdub3N0aWNzOiB0cy5EaWFnbm9zdGljW10gPSBbXTtcbiAgLyoqIEN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIG91dHB1dC4gKi9cbiAgcHJpdmF0ZSBwb3NpdGlvbjogU291cmNlUG9zaXRpb24gPSB7bGluZTogMCwgY29sdW1uOiAwLCBwb3NpdGlvbjogMH07XG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCBsZXZlbCBvZiByZWN1cnNpb24gdGhyb3VnaCBUeXBlU2NyaXB0IE5vZGVzLiAgVXNlZCBpbiBmb3JtYXR0aW5nIGludGVybmFsIGRlYnVnXG4gICAqIHByaW50IHN0YXRlbWVudHMuXG4gICAqL1xuICBwcml2YXRlIGluZGVudCA9IDA7XG4gIC8qKlxuICAgKiBTa2lwIGVtaXR0aW5nIGFueSBjb2RlIGJlZm9yZSB0aGUgZ2l2ZW4gb2Zmc2V0LiBFLmcuIHVzZWQgdG8gYXZvaWQgZW1pdHRpbmcgQGZpbGVvdmVydmlld1xuICAgKiBjb21tZW50cyB0d2ljZS5cbiAgICovXG4gIHByaXZhdGUgc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IC0xO1xuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBmaWxlOiB0cy5Tb3VyY2VGaWxlLCBwcml2YXRlIHNvdXJjZU1hcHBlcjogU291cmNlTWFwcGVyID0gTk9PUF9TT1VSQ0VfTUFQUEVSKSB7XG4gIH1cblxuICBnZXRPdXRwdXQocHJlZml4Pzogc3RyaW5nKToge291dHB1dDogc3RyaW5nLCBkaWFnbm9zdGljczogdHMuRGlhZ25vc3RpY1tdfSB7XG4gICAgaWYgKHRoaXMuaW5kZW50ICE9PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Zpc2l0KCkgZmFpbGVkIHRvIHRyYWNrIG5lc3RpbmcnKTtcbiAgICB9XG4gICAgbGV0IG91dCA9IHRoaXMub3V0cHV0LmpvaW4oJycpO1xuICAgIGlmIChwcmVmaXgpIHtcbiAgICAgIC8vIEluc2VydCBwcmVmaXggYWZ0ZXIgYW55IGxlYWRpbmcgQGZpbGVvdmVydmlldyBjb21tZW50cywgc28gdGhleSBzdGlsbCBjb21lIGZpcnN0IGluIHRoZVxuICAgICAgLy8gZmlsZS4gVGhpcyBtdXN0IG5vdCB1c2UgZmlsZS5nZXRTdGFydCgpIChjb21tZW50IHBvc2l0aW9uIGluIHRoZSBpbnB1dCBmaWxlKSwgYnV0IHJhaHRlclxuICAgICAgLy8gY2hlY2sgY29tbWVudHMgaW4gdGhlIG5ldyBvdXRwdXQsIGFzIHRob3NlIChpbiBwYXJ0aWN1bGFyIGZvciBjb21tZW50cykgYXJlIHVucmVsYXRlZC5cbiAgICAgIGxldCBpbnNlcnRpb25JZHggPSAwO1xuICAgICAgZm9yIChjb25zdCBjciBvZiB0cy5nZXRMZWFkaW5nQ29tbWVudFJhbmdlcyhvdXQsIDApIHx8IFtdKSB7XG4gICAgICAgIGlmIChpc0Nsb3N1cmVGaWxlb3ZlcnZpZXdDb21tZW50KG91dC5zdWJzdHJpbmcoY3IucG9zLCBjci5lbmQpKSkge1xuICAgICAgICAgIGluc2VydGlvbklkeCA9IGNyLmVuZDtcbiAgICAgICAgICAvLyBJbmNsdWRlIHNwYWNlIChpbiBwYXJ0aWN1bGFyIGxpbmUgYnJlYWtzKSBhZnRlciBhIEBmaWxlb3ZlcnZpZXcgY29tbWVudDsgd2l0aG91dCB0aGVcbiAgICAgICAgICAvLyBzcGFjZSBzZXBlcmF0aW5nIGl0LCBUeXBlU2NyaXB0IG1pZ2h0IGVsaWRlIHRoZSBlbWl0LlxuICAgICAgICAgIHdoaWxlIChpbnNlcnRpb25JZHggPCBvdXQubGVuZ3RoICYmIG91dFtpbnNlcnRpb25JZHhdLm1hdGNoKC9cXHMvKSkgaW5zZXJ0aW9uSWR4Kys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG91dCA9IG91dC5zdWJzdHJpbmcoMCwgaW5zZXJ0aW9uSWR4KSArIHByZWZpeCArIG91dC5zdWJzdHJpbmcoaW5zZXJ0aW9uSWR4KTtcbiAgICAgIHRoaXMuc291cmNlTWFwcGVyLnNoaWZ0QnlPZmZzZXQocHJlZml4Lmxlbmd0aCk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBvdXRwdXQ6IG91dCxcbiAgICAgIGRpYWdub3N0aWNzOiB0aGlzLmRpYWdub3N0aWNzLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogdmlzaXQgdHJhdmVyc2VzIGEgTm9kZSwgcmVjdXJzaXZlbHkgd3JpdGluZyBhbGwgbm9kZXMgbm90IGhhbmRsZWQgYnkgdGhpcy5tYXliZVByb2Nlc3MuXG4gICAqL1xuICB2aXNpdChub2RlOiB0cy5Ob2RlKSB7XG4gICAgLy8gdGhpcy5sb2dXaXRoSW5kZW50KCdub2RlOiAnICsgdHMuU3ludGF4S2luZFtub2RlLmtpbmRdKTtcbiAgICB0aGlzLmluZGVudCsrO1xuICAgIHRyeSB7XG4gICAgICBpZiAoIXRoaXMubWF5YmVQcm9jZXNzKG5vZGUpKSB7XG4gICAgICAgIHRoaXMud3JpdGVOb2RlKG5vZGUpO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICghZS5tZXNzYWdlKSBlLm1lc3NhZ2UgPSAnVW5oYW5kbGVkIGVycm9yIGluIHRzaWNrbGUnO1xuICAgICAgZS5tZXNzYWdlICs9IGBcXG4gYXQgJHt0cy5TeW50YXhLaW5kW25vZGUua2luZF19IGluICR7dGhpcy5maWxlLmZpbGVOYW1lfTpgO1xuICAgICAgY29uc3Qge2xpbmUsIGNoYXJhY3Rlcn0gPSB0aGlzLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24obm9kZS5nZXRTdGFydCgpKTtcbiAgICAgIGUubWVzc2FnZSArPSBgJHtsaW5lICsgMX06JHtjaGFyYWN0ZXIgKyAxfWA7XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmluZGVudC0tO1xuICB9XG5cbiAgLyoqXG4gICAqIG1heWJlUHJvY2VzcyBsZXRzIHN1YmNsYXNzZXMgb3B0aW9uYWxseSBwcm9jZXNzZXMgYSBub2RlLlxuICAgKlxuICAgKiBAcmV0dXJuIFRydWUgaWYgdGhlIG5vZGUgaGFzIGJlZW4gaGFuZGxlZCBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIHRyYXZlcnNlZDtcbiAgICogICAgZmFsc2UgdG8gaGF2ZSB0aGUgbm9kZSB3cml0dGVuIGFuZCBpdHMgY2hpbGRyZW4gcmVjdXJzaXZlbHkgdmlzaXRlZC5cbiAgICovXG4gIHByb3RlY3RlZCBtYXliZVByb2Nlc3Mobm9kZTogdHMuTm9kZSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiB3cml0ZU5vZGUgd3JpdGVzIGEgdHMuTm9kZSwgY2FsbGluZyB0aGlzLnZpc2l0KCkgb24gaXRzIGNoaWxkcmVuLiAqL1xuICB3cml0ZU5vZGUobm9kZTogdHMuTm9kZSwgc2tpcENvbW1lbnRzID0gZmFsc2UsIG5ld0xpbmVJZkNvbW1lbnRzU3RyaXBwZWQgPSB0cnVlKSB7XG4gICAgbGV0IHBvcyA9IG5vZGUuZ2V0RnVsbFN0YXJ0KCk7XG4gICAgaWYgKHNraXBDb21tZW50cykge1xuICAgICAgLy8gVG8gc2tpcCBjb21tZW50cywgd2Ugc2tpcCBhbGwgd2hpdGVzcGFjZS9jb21tZW50cyBwcmVjZWRpbmdcbiAgICAgIC8vIHRoZSBub2RlLiAgQnV0IGlmIHRoZXJlIHdhcyBhbnl0aGluZyBza2lwcGVkIHdlIHNob3VsZCBlbWl0XG4gICAgICAvLyBhIG5ld2xpbmUgaW4gaXRzIHBsYWNlIHNvIHRoYXQgdGhlIG5vZGUgcmVtYWlucyBzZXBhcmF0ZWRcbiAgICAgIC8vIGZyb20gdGhlIHByZXZpb3VzIG5vZGUuICBUT0RPOiBkb24ndCBza2lwIGFueXRoaW5nIGhlcmUgaWZcbiAgICAgIC8vIHRoZXJlIHdhc24ndCBhbnkgY29tbWVudC5cbiAgICAgIGlmIChuZXdMaW5lSWZDb21tZW50c1N0cmlwcGVkICYmIG5vZGUuZ2V0RnVsbFN0YXJ0KCkgPCBub2RlLmdldFN0YXJ0KCkpIHtcbiAgICAgICAgdGhpcy5lbWl0KCdcXG4nKTtcbiAgICAgIH1cbiAgICAgIHBvcyA9IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICB9XG4gICAgdGhpcy53cml0ZU5vZGVGcm9tKG5vZGUsIHBvcyk7XG4gIH1cblxuICB3cml0ZU5vZGVGcm9tKG5vZGU6IHRzLk5vZGUsIHBvczogbnVtYmVyLCBlbmQgPSBub2RlLmdldEVuZCgpKSB7XG4gICAgaWYgKGVuZCA8PSB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3Qgb2xkU2tpcENvbW1lbnRzVXBUb09mZnNldCA9IHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldDtcbiAgICB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQgPSBNYXRoLm1heCh0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQsIHBvcyk7XG4gICAgdHMuZm9yRWFjaENoaWxkKG5vZGUsIGNoaWxkID0+IHtcbiAgICAgIHRoaXMud3JpdGVSYW5nZShub2RlLCBwb3MsIGNoaWxkLmdldEZ1bGxTdGFydCgpKTtcbiAgICAgIHRoaXMudmlzaXQoY2hpbGQpO1xuICAgICAgcG9zID0gY2hpbGQuZ2V0RW5kKCk7XG4gICAgfSk7XG4gICAgdGhpcy53cml0ZVJhbmdlKG5vZGUsIHBvcywgZW5kKTtcbiAgICB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQgPSBvbGRTa2lwQ29tbWVudHNVcFRvT2Zmc2V0O1xuICB9XG5cbiAgLyoqXG4gICAqIFdyaXRlcyBhbGwgbGVhZGluZyB0cml2aWEgKHdoaXRlc3BhY2Ugb3IgY29tbWVudHMpIG9uIG5vZGUsIG9yIGFsbCB0cml2aWEgdXAgdG8gdGhlIGdpdmVuXG4gICAqIHBvc2l0aW9uLiBBbHNvIG1hcmtzIHRob3NlIHRyaXZpYSBhcyBcImFscmVhZHkgZW1pdHRlZFwiIGJ5IHNoaWZ0aW5nIHRoZSBza2lwQ29tbWVudHNVcFRvIG1hcmtlci5cbiAgICovXG4gIHdyaXRlTGVhZGluZ1RyaXZpYShub2RlOiB0cy5Ob2RlLCB1cFRvID0gMCkge1xuICAgIGNvbnN0IHVwVG9PZmZzZXQgPSB1cFRvIHx8IG5vZGUuZ2V0U3RhcnQoKTtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgbm9kZS5nZXRGdWxsU3RhcnQoKSwgdXBUbyB8fCBub2RlLmdldFN0YXJ0KCkpO1xuICAgIHRoaXMuc2tpcENvbW1lbnRzVXBUb09mZnNldCA9IHVwVG9PZmZzZXQ7XG4gIH1cblxuICBhZGRTb3VyY2VNYXBwaW5nKG5vZGU6IHRzLk5vZGUpIHtcbiAgICB0aGlzLndyaXRlUmFuZ2Uobm9kZSwgbm9kZS5nZXRFbmQoKSwgbm9kZS5nZXRFbmQoKSk7XG4gIH1cblxuICAvKipcbiAgICogV3JpdGUgYSBzcGFuIG9mIHRoZSBpbnB1dCBmaWxlIGFzIGV4cHJlc3NlZCBieSBhYnNvbHV0ZSBvZmZzZXRzLlxuICAgKiBUaGVzZSBvZmZzZXRzIGFyZSBmb3VuZCBpbiBhdHRyaWJ1dGVzIGxpa2Ugbm9kZS5nZXRGdWxsU3RhcnQoKSBhbmRcbiAgICogbm9kZS5nZXRFbmQoKS5cbiAgICovXG4gIHdyaXRlUmFuZ2Uobm9kZTogdHMuTm9kZSwgZnJvbTogbnVtYmVyLCB0bzogbnVtYmVyKSB7XG4gICAgY29uc3QgZnVsbFN0YXJ0ID0gbm9kZS5nZXRGdWxsU3RhcnQoKTtcbiAgICBjb25zdCB0ZXh0U3RhcnQgPSBub2RlLmdldFN0YXJ0KCk7XG4gICAgaWYgKGZyb20gPj0gZnVsbFN0YXJ0ICYmIGZyb20gPCB0ZXh0U3RhcnQpIHtcbiAgICAgIGZyb20gPSBNYXRoLm1heChmcm9tLCB0aGlzLnNraXBDb21tZW50c1VwVG9PZmZzZXQpO1xuICAgIH1cbiAgICAvLyBBZGQgYSBzb3VyY2UgbWFwcGluZy4gd3JpdGVSYW5nZShmcm9tLCB0bykgYWx3YXlzIGNvcnJlc3BvbmRzIHRvXG4gICAgLy8gb3JpZ2luYWwgc291cmNlIGNvZGUsIHNvIGFkZCBhIG1hcHBpbmcgYXQgdGhlIGN1cnJlbnQgbG9jYXRpb24gdGhhdFxuICAgIC8vIHBvaW50cyBiYWNrIHRvIHRoZSBsb2NhdGlvbiBhdCBgZnJvbWAuIFRoZSBhZGRpdGlvbmFsIGNvZGUgZ2VuZXJhdGVkXG4gICAgLy8gYnkgdHNpY2tsZSB3aWxsIHRoZW4gYmUgY29uc2lkZXJlZCBwYXJ0IG9mIHRoZSBsYXN0IG1hcHBlZCBjb2RlXG4gICAgLy8gc2VjdGlvbiBwcmVjZWRpbmcgaXQuIFRoYXQncyBhcmd1YWJseSBpbmNvcnJlY3QgKGUuZy4gZm9yIHRoZSBmYWtlXG4gICAgLy8gbWV0aG9kcyBkZWZpbmluZyBwcm9wZXJ0aWVzKSwgYnV0IGlzIGdvb2QgZW5vdWdoIGZvciBzdGFjayB0cmFjZXMuXG4gICAgY29uc3QgcG9zID0gdGhpcy5maWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGZyb20pO1xuICAgIHRoaXMuc291cmNlTWFwcGVyLmFkZE1hcHBpbmcoXG4gICAgICAgIG5vZGUsIHtsaW5lOiBwb3MubGluZSwgY29sdW1uOiBwb3MuY2hhcmFjdGVyLCBwb3NpdGlvbjogZnJvbX0sIHRoaXMucG9zaXRpb24sIHRvIC0gZnJvbSk7XG4gICAgLy8gZ2V0U291cmNlRmlsZSgpLmdldFRleHQoKSBpcyB3cm9uZyBoZXJlIGJlY2F1c2UgaXQgaGFzIHRoZSB0ZXh0IG9mXG4gICAgLy8gdGhlIFNvdXJjZUZpbGUgbm9kZSBvZiB0aGUgQVNULCB3aGljaCBkb2Vzbid0IGNvbnRhaW4gdGhlIGNvbW1lbnRzXG4gICAgLy8gcHJlY2VkaW5nIHRoYXQgbm9kZS4gIFNlbWFudGljYWxseSB0aGVzZSByYW5nZXMgYXJlIGp1c3Qgb2Zmc2V0c1xuICAgIC8vIGludG8gdGhlIG9yaWdpbmFsIHNvdXJjZSBmaWxlIHRleHQsIHNvIHNsaWNlIGZyb20gdGhhdC5cbiAgICBjb25zdCB0ZXh0ID0gdGhpcy5maWxlLnRleHQuc2xpY2UoZnJvbSwgdG8pO1xuICAgIGlmICh0ZXh0KSB7XG4gICAgICB0aGlzLmVtaXQodGV4dCk7XG4gICAgfVxuICB9XG5cbiAgZW1pdChzdHI6IHN0cmluZykge1xuICAgIHRoaXMub3V0cHV0LnB1c2goc3RyKTtcbiAgICBmb3IgKGNvbnN0IGMgb2Ygc3RyKSB7XG4gICAgICB0aGlzLnBvc2l0aW9uLmNvbHVtbisrO1xuICAgICAgaWYgKGMgPT09ICdcXG4nKSB7XG4gICAgICAgIHRoaXMucG9zaXRpb24ubGluZSsrO1xuICAgICAgICB0aGlzLnBvc2l0aW9uLmNvbHVtbiA9IDA7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMucG9zaXRpb24ucG9zaXRpb24gKz0gc3RyLmxlbmd0aDtcbiAgfVxuXG4gIC8qKiBSZW1vdmVzIGNvbW1lbnQgbWV0YWNoYXJhY3RlcnMgZnJvbSBhIHN0cmluZywgdG8gbWFrZSBpdCBzYWZlIHRvIGVtYmVkIGluIGEgY29tbWVudC4gKi9cbiAgZXNjYXBlRm9yQ29tbWVudChzdHI6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXC9cXCovZywgJ19fJykucmVwbGFjZSgvXFwqXFwvL2csICdfXycpO1xuICB9XG5cbiAgLyogdHNsaW50OmRpc2FibGU6IG5vLXVudXNlZC12YXJpYWJsZSAqL1xuICBsb2dXaXRoSW5kZW50KG1lc3NhZ2U6IHN0cmluZykge1xuICAgIC8qIHRzbGludDplbmFibGU6IG5vLXVudXNlZC12YXJpYWJsZSAqL1xuICAgIGNvbnN0IHByZWZpeCA9IG5ldyBBcnJheSh0aGlzLmluZGVudCArIDEpLmpvaW4oJ3wgJyk7XG4gICAgY29uc29sZS5sb2cocHJlZml4ICsgbWVzc2FnZSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvZHVjZXMgYSBjb21waWxlciBlcnJvciB0aGF0IHJlZmVyZW5jZXMgdGhlIE5vZGUncyBraW5kLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHRoZSBcImVsc2VcIlxuICAgKiBicmFuY2ggb2YgY29kZSB0aGF0IGlzIGF0dGVtcHRpbmcgdG8gaGFuZGxlIGFsbCBwb3NzaWJsZSBpbnB1dCBOb2RlIHR5cGVzLCB0byBlbnN1cmUgYWxsIGNhc2VzXG4gICAqIGNvdmVyZWQuXG4gICAqL1xuICBlcnJvclVuaW1wbGVtZW50ZWRLaW5kKG5vZGU6IHRzLk5vZGUsIHdoZXJlOiBzdHJpbmcpIHtcbiAgICB0aGlzLmVycm9yKG5vZGUsIGAke3RzLlN5bnRheEtpbmRbbm9kZS5raW5kXX0gbm90IGltcGxlbWVudGVkIGluICR7d2hlcmV9YCk7XG4gIH1cblxuICBlcnJvcihub2RlOiB0cy5Ob2RlLCBtZXNzYWdlVGV4dDogc3RyaW5nKSB7XG4gICAgdGhpcy5kaWFnbm9zdGljcy5wdXNoKHtcbiAgICAgIGZpbGU6IG5vZGUuZ2V0U291cmNlRmlsZSgpLFxuICAgICAgc3RhcnQ6IG5vZGUuZ2V0U3RhcnQoKSxcbiAgICAgIGxlbmd0aDogbm9kZS5nZXRFbmQoKSAtIG5vZGUuZ2V0U3RhcnQoKSxcbiAgICAgIG1lc3NhZ2VUZXh0LFxuICAgICAgY2F0ZWdvcnk6IHRzLkRpYWdub3N0aWNDYXRlZ29yeS5FcnJvcixcbiAgICAgIGNvZGU6IDAsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqIFJldHVybnMgdGhlIHN0cmluZyBjb250ZW50cyBvZiBhIHRzLklkZW50aWZpZXIuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0SWRlbnRpZmllclRleHQoaWRlbnRpZmllcjogdHMuSWRlbnRpZmllcik6IHN0cmluZyB7XG4gIC8vIE5PVEU6IHRoZSAndGV4dCcgcHJvcGVydHkgb24gYW4gSWRlbnRpZmllciBtYXkgYmUgZXNjYXBlZCBpZiBpdCBzdGFydHNcbiAgLy8gd2l0aCAnX18nLCBzbyBqdXN0IHVzZSBnZXRUZXh0KCkuXG4gIHJldHVybiBpZGVudGlmaWVyLmdldFRleHQoKTtcbn1cblxuLyoqIFJldHVybnMgYSBkb3Qtam9pbmVkIHF1YWxpZmllZCBuYW1lIChmb28uYmFyLkJheikuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RW50aXR5TmFtZVRleHQobmFtZTogdHMuRW50aXR5TmFtZSk6IHN0cmluZyB7XG4gIGlmICh0cy5pc0lkZW50aWZpZXIobmFtZSkpIHtcbiAgICByZXR1cm4gZ2V0SWRlbnRpZmllclRleHQobmFtZSk7XG4gIH1cbiAgcmV0dXJuIGdldEVudGl0eU5hbWVUZXh0KG5hbWUubGVmdCkgKyAnLicgKyBnZXRJZGVudGlmaWVyVGV4dChuYW1lLnJpZ2h0KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0cyBhbiBlc2NhcGVkIFR5cGVTY3JpcHQgbmFtZSBpbnRvIHRoZSBvcmlnaW5hbCBzb3VyY2UgbmFtZS5cbiAqIFByZWZlciBnZXRJZGVudGlmaWVyVGV4dCgpIGluc3RlYWQgaWYgcG9zc2libGUuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1bmVzY2FwZU5hbWUobmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgLy8gU2VlIHRoZSBwcml2YXRlIGZ1bmN0aW9uIHVuZXNjYXBlSWRlbnRpZmllciBpbiBUeXBlU2NyaXB0J3MgdXRpbGl0aWVzLnRzLlxuICBpZiAobmFtZS5tYXRjaCgvXl9fXy8pKSByZXR1cm4gbmFtZS5zdWJzdHIoMSk7XG4gIHJldHVybiBuYW1lO1xufVxuIl19

@@ -1,1 +0,1 @@

{"compilerOptions": {"target": "es5", "downlevelIteration": true, "skipDefaultLibCheck": true, "moduleResolution": "node", "outDir": "../../../../bazel-out/darwin-fastbuild/bin", "rootDir": "../../../..", "rootDirs": ["../../../..", "../../../../bazel-out/darwin-fastbuild/genfiles", "../../../../bazel-out/darwin-fastbuild/bin"], "baseUrl": "../../../..", "paths": {"*": ["./*", "bazel-out/darwin-fastbuild/genfiles/*", "bazel-out/darwin-fastbuild/bin/*", "node_modules/*"], "tsickle/*": ["./*", "bazel-out/darwin-fastbuild/genfiles/*", "bazel-out/darwin-fastbuild/bin/*"]}, "preserveConstEnums": false, "experimentalDecorators": true, "emitDecoratorMetadata": true, "jsx": "react", "jsxFactory": "React.createElement", "noEmitOnError": false, "declaration": true, "declarationDir": "../../../../bazel-out/darwin-fastbuild/bin", "stripInternal": true, "inlineSourceMap": true, "inlineSources": true, "sourceMap": false, "typeRoots": ["../../../../node_modules/@types"], "module": "umd"}, "bazelOptions": {"workspaceName": "tsickle", "target": "//src:src", "tsickle": false, "tsickleGenerateExterns": true, "tsickleExternsPath": "", "untyped": true, "typeBlackListPaths": [], "es5Mode": true, "manifest": "bazel-out/darwin-fastbuild/bin/src/src.es5.MF", "compilationTargetSrc": ["src/class_decorator_downlevel_transformer.ts", "src/cli_support.ts", "src/decorator-annotator.ts", "src/decorators.ts", "src/es5processor.ts", "src/fileoverview_comment_transformer.ts", "src/jsdoc.ts", "src/main.ts", "src/modules_manifest.ts", "src/rewriter.ts", "src/source_map_utils.ts", "src/transformer_sourcemap.ts", "src/transformer_util.ts", "src/tsickle.ts", "src/type-translator.ts", "src/typescript.ts", "src/util.ts", "bazel-out/darwin-fastbuild/genfiles/src/typescript-2.4.d.ts"], "addDtsClutzAliases": false, "expectedDiagnostics": [], "allowedStrictDeps": ["src/class_decorator_downlevel_transformer.ts", "src/cli_support.ts", "src/decorator-annotator.ts", "src/decorators.ts", "src/es5processor.ts", "src/fileoverview_comment_transformer.ts", "src/jsdoc.ts", "src/main.ts", "src/modules_manifest.ts", "src/rewriter.ts", "src/source_map_utils.ts", "src/transformer_sourcemap.ts", "src/transformer_util.ts", "src/tsickle.ts", "src/type-translator.ts", "src/typescript.ts", "src/util.ts", "bazel-out/darwin-fastbuild/genfiles/src/typescript-2.4.d.ts"], "nodeModulesPrefix": "node_modules"}, "files": ["../../../../bazel-out/darwin-fastbuild/genfiles/src/typescript-2.4.d.ts", "../../../../src/class_decorator_downlevel_transformer.ts", "../../../../src/cli_support.ts", "../../../../src/decorator-annotator.ts", "../../../../src/decorators.ts", "../../../../src/es5processor.ts", "../../../../src/fileoverview_comment_transformer.ts", "../../../../src/jsdoc.ts", "../../../../src/main.ts", "../../../../src/modules_manifest.ts", "../../../../src/rewriter.ts", "../../../../src/source_map_utils.ts", "../../../../src/transformer_sourcemap.ts", "../../../../src/transformer_util.ts", "../../../../src/tsickle.ts", "../../../../src/type-translator.ts", "../../../../src/typescript.ts", "../../../../src/util.ts"], "compileOnSave": false, "extends": "../../../../tsconfig"}
{"compilerOptions": {"target": "es5", "downlevelIteration": true, "skipDefaultLibCheck": true, "moduleResolution": "node", "outDir": "../../../../bazel-out/k8-fastbuild/bin", "rootDir": "../../../..", "rootDirs": ["../../../..", "../../../../bazel-out/k8-fastbuild/genfiles", "../../../../bazel-out/k8-fastbuild/bin"], "baseUrl": "../../../..", "paths": {"*": ["./*", "bazel-out/k8-fastbuild/genfiles/*", "bazel-out/k8-fastbuild/bin/*", "node_modules/*"], "tsickle/*": ["./*", "bazel-out/k8-fastbuild/genfiles/*", "bazel-out/k8-fastbuild/bin/*"]}, "preserveConstEnums": false, "experimentalDecorators": true, "emitDecoratorMetadata": true, "jsx": "react", "jsxFactory": "React.createElement", "noEmitOnError": false, "declaration": true, "declarationDir": "../../../../bazel-out/k8-fastbuild/bin", "stripInternal": true, "inlineSourceMap": true, "inlineSources": true, "sourceMap": false, "typeRoots": ["../../../../node_modules/@types"], "module": "umd"}, "bazelOptions": {"workspaceName": "tsickle", "target": "//src:src", "tsickle": false, "tsickleGenerateExterns": true, "tsickleExternsPath": "", "untyped": true, "typeBlackListPaths": [], "es5Mode": true, "manifest": "bazel-out/k8-fastbuild/bin/src/src.es5.MF", "compilationTargetSrc": ["src/class_decorator_downlevel_transformer.ts", "src/cli_support.ts", "src/decorator-annotator.ts", "src/decorators.ts", "src/es5processor.ts", "src/fileoverview_comment_transformer.ts", "src/jsdoc.ts", "src/main.ts", "src/modules_manifest.ts", "src/rewriter.ts", "src/source_map_utils.ts", "src/transformer_sourcemap.ts", "src/transformer_util.ts", "src/tsickle.ts", "src/type-translator.ts", "src/typescript.ts", "src/util.ts", "bazel-out/k8-fastbuild/genfiles/src/typescript-2.4.d.ts"], "addDtsClutzAliases": false, "expectedDiagnostics": [], "allowedStrictDeps": ["src/class_decorator_downlevel_transformer.ts", "src/cli_support.ts", "src/decorator-annotator.ts", "src/decorators.ts", "src/es5processor.ts", "src/fileoverview_comment_transformer.ts", "src/jsdoc.ts", "src/main.ts", "src/modules_manifest.ts", "src/rewriter.ts", "src/source_map_utils.ts", "src/transformer_sourcemap.ts", "src/transformer_util.ts", "src/tsickle.ts", "src/type-translator.ts", "src/typescript.ts", "src/util.ts", "bazel-out/k8-fastbuild/genfiles/src/typescript-2.4.d.ts"], "nodeModulesPrefix": "node_modules"}, "files": ["../../../../bazel-out/k8-fastbuild/genfiles/src/typescript-2.4.d.ts", "../../../../src/class_decorator_downlevel_transformer.ts", "../../../../src/cli_support.ts", "../../../../src/decorator-annotator.ts", "../../../../src/decorators.ts", "../../../../src/es5processor.ts", "../../../../src/fileoverview_comment_transformer.ts", "../../../../src/jsdoc.ts", "../../../../src/main.ts", "../../../../src/modules_manifest.ts", "../../../../src/rewriter.ts", "../../../../src/source_map_utils.ts", "../../../../src/transformer_sourcemap.ts", "../../../../src/transformer_util.ts", "../../../../src/tsickle.ts", "../../../../src/type-translator.ts", "../../../../src/typescript.ts", "../../../../src/util.ts"], "compileOnSave": false, "extends": "../../../../tsconfig"}

@@ -54,6 +54,29 @@ /**

// and it leads to errors with `extends` cases.
if (originalNode &&
(isLiteralKind(node.kind) || node.kind === ts.SyntaxKind.Identifier ||
transformer_util_1.isTypeNodeKind(node.kind) || node.kind === ts.SyntaxKind.IndexSignature)) {
return originalNode;
// - imports/exports: as TypeScript will only attempt to elide type only
// imports if the new node is identical to the original node.
if (originalNode) {
if (isLiteralKind(node.kind) || node.kind === ts.SyntaxKind.Identifier ||
transformer_util_1.isTypeNodeKind(node.kind) || node.kind === ts.SyntaxKind.IndexSignature) {
return originalNode;
}
if (node.kind === ts.SyntaxKind.ImportDeclaration ||
node.kind === ts.SyntaxKind.ImportEqualsDeclaration ||
node.kind === ts.SyntaxKind.ExportAssignment) {
return originalNode;
}
if (ts.isExportDeclaration(node)) {
// Return the original nodes for export declarations, unless they were expanded from an
// export * to specific exported symbols.
var originalExport = originalNode;
if (!node.moduleSpecifier) {
// export {a, b, c};
return originalNode;
}
if (!!originalExport.exportClause === !!node.exportClause) {
// This already was exported with symbols (export {...}) or was not expanded.
return originalNode;
}
// Rewrote export * -> export {...}, the export declaration must be emitted in the updated
// form.
}
}

@@ -177,2 +200,2 @@ node = ts.visitEachChild(node, visitNode, context);

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJfc291cmNlbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVyX3NvdXJjZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILGlFQUEwRztJQUMxRywyQ0FBbUM7SUFFbkM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCx3Q0FDSSxzQkFDVTtRQUNaLE1BQU0sQ0FBQyxVQUFDLE9BQU8sSUFBSyxPQUFBLFVBQUMsVUFBVTtZQUM3QixJQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsSUFBTSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0UsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUMvQixVQUFVLENBQUMsUUFBUSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsdUNBQW9CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUvRCxtQkFBc0MsSUFBTztnQkFDM0MsTUFBTSxDQUFDLG1EQUFnQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBTSxDQUFDO1lBQ3RGLENBQUM7WUFFRCx1QkFBdUIsSUFBYTtnQkFDbEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxJQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxD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LENBQUMsVUFBVSxDQUFDLFVBQVU7WUFDdkYsS0FBSyxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQztJQUM1QyxDQUFDO0lBRUQseUJBQXlCO0lBQ3pCLHVCQUF1QixJQUFtQjtRQUN4QyxNQUFNLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLENBQUM7SUFDM0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtTb3VyY2VNYXBwZXIsIFNvdXJjZVBvc2l0aW9ufSBmcm9tICcuL3NvdXJjZV9tYXBfdXRpbHMnO1xuaW1wb3J0IHtpc1R5cGVOb2RlS2luZCwgdXBkYXRlU291cmNlRmlsZU5vZGUsIHZpc2l0Tm9kZVdpdGhTeW50aGVzaXplZENvbW1lbnRzfSBmcm9tICcuL3RyYW5zZm9ybWVyX3V0aWwnO1xuaW1wb3J0ICogYXMgdHMgZnJvbSAnLi90eXBlc2NyaXB0JztcblxuLyoqXG4gKiBDcmVhdGVzIGEgVHlwZVNjcmlwdCB0cmFuc2Zvcm1lciBiYXNlZCBvbiBhIHNvdXJjZS0+dGV4dCB0cmFuc2Zvcm1hdGlvbi5cbiAqXG4gKiBUeXBlU2NyaXB0IHRyYW5zZm9ybWVycyBvcGVyYXRlIG9uIEFTVCBub2Rlcy4gTmV3bHkgY3JlYXRlZCBub2RlcyBtdXN0IGJlIG1hcmtlZCBhcyByZXBsYWNpbmcgYW5cbiAqIG9sZGVyIEFTVCBub2RlLiBUaGlzIHNoaW0gYWxsb3dzIHJ1bm5pbmcgYSB0cmFuc2Zvcm1hdGlvbiBzdGVwIHRoYXQncyBiYXNlZCBvbiBlbWl0dGluZyBuZXcgdGV4dFxuICogYXMgYSBub2RlIGJhc2VkIHRyYW5zZm9ybWVyLiBJdCBhY2hpZXZlcyB0aGF0IGJ5IHJ1bm5pbmcgdGhlIHRyYW5zZm9ybWF0aW9uLCBjb2xsZWN0aW5nIGEgc291cmNlXG4gKiBtYXBwaW5nIGluIHRoZSBwcm9jZXNzLCBhbmQgdGhlbiBhZnRlcndhcmRzIHBhcnNpbmcgdGhlIHNvdXJjZSB0ZXh0IGludG8gYSBuZXcgQVNUIGFuZCBtYXJraW5nXG4gKiB0aGUgbmV3IG5vZGVzIGFzIHJlcHJlc2VudGF0aW9ucyBvZiB0aGUgb2xkIG5vZGVzIGJhc2VkIG9uIHRoZWlyIHNvdXJjZSBtYXAgcG9zaXRpb25zLlxuICpcbiAqIFRoZSBwcm9jZXNzIG1hcmtzIGFsbCBub2RlcyBhcyBzeW50aGVzaXplZCBleGNlcHQgZm9yIGEgaGFuZGZ1bCBvZiBzcGVjaWFsIGNhc2VzIChpZGVudGlmaWVyc1xuICogZXRjKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVRyYW5zZm9ybWVyRnJvbVNvdXJjZU1hcChcbiAgICBzb3VyY2VCYXNlZFRyYW5zZm9ybWVyOiAoc291cmNlRmlsZTogdHMuU291cmNlRmlsZSwgc291cmNlTWFwcGVyOiBTb3VyY2VNYXBwZXIpID0+XG4gICAgICAgIHN0cmluZyk6IHRzLlRyYW5zZm9ybWVyRmFjdG9yeTx0cy5Tb3VyY2VGaWxlPiB7XG4gIHJldHVybiAoY29udGV4dCkgPT4gKHNvdXJjZUZpbGUpID0+IHtcbiAgICBjb25zdCBzb3VyY2VNYXBwZXIgPSBuZXcgTm9kZVNvdXJjZU1hcHBlcigpO1xuICAgIGNvbnN0IHRyYW5zZm9ybWVkU291cmNlVGV4dCA9IHNvdXJjZUJhc2VkVHJhbnNmb3JtZXIoc291cmNlRmlsZSwgc291cmNlTWFwcGVyKTtcbiAgICBjb25zdCBuZXdGaWxlID0gdHMuY3JlYXRlU291cmNlRmlsZShcbiAgICAgICAgc291cmNlRmlsZS5maWxlTmFtZSwgdHJhbnNmb3JtZWRTb3VyY2VUZXh0LCB0cy5TY3JpcHRUYXJnZXQuTGF0ZXN0LCB0cnVlKTtcbiAgICBjb25zdCBtYXBwZWRGaWxlID0gdmlzaXROb2RlKG5ld0ZpbGUpO1xuICAgIHJldHVybiB1cGRhdGVTb3VyY2VGaWxlTm9kZShzb3VyY2VGaWxlLCBtYXBwZWRGaWxlLnN0YXRlbWVudHMpO1xuXG4gICAgZnVuY3Rpb24gdmlzaXROb2RlPFQgZXh0ZW5kcyB0cy5Ob2RlPihub2RlOiBUKTogVCB7XG4gICAgICByZXR1cm4gdmlzaXROb2RlV2l0aFN5bnRoZXNpemVkQ29tbWVudHMoY29udGV4dCwgbmV3RmlsZSwgbm9kZSwgdmlzaXROb2RlSW1wbCkgYXMgVDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2aXNpdE5vZGVJbXBsKG5vZGU6IHRzLk5vZGUpIHtcbiAgICAgIGlmIChub2RlLmZsYWdzICYgdHMuTm9kZUZsYWdzLlN5bnRoZXNpemVkKSB7XG4gICAgICAgIHJldHVybiBub2RlO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3JpZ2luYWxOb2RlID0gc291cmNlTWFwcGVyLmdldE9yaWdpbmFsTm9kZShub2RlKTtcblxuICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbE5vZGUgZm9yOlxuICAgICAgLy8gLSBsaXRlcmFsczogYXMgZS5nLiB0eXBlc2NyaXB0IGRvZXMgbm90IHN1cHBvcnQgc3ludGhldGljIHJlZ2V4IGxpdGVyYWxzXG4gICAgICAvLyAtIGlkZW50aWZpZXJzOiBhcyB0aGV5IGRvbid0IGhhdmUgY2hpbGRyZW4gYW5kIGJlaGF2ZSB3ZWxsXG4gICAgICAvLyAgICByZWdhcmRpbmcgY29tbWVudCBzeW50aGVzaXphdGlvblxuICAgICAgLy8gLSB0eXBlczogYXMgdGhleSBhcmUgbm90IGVtaXRlZCBhbnl3YXlzXG4gICAgICAvLyAgICAgICAgICBhbmQgaXQgbGVhZHMgdG8gZXJyb3JzIHdpdGggYGV4dGVuZHNgIGNhc2VzLlxuICAgICAgaWYgKG9yaWdpbmFsTm9kZSAmJlxuICAgICAgICAgIChpc0xpdGVyYWxLaW5kKG5vZGUua2luZCkgfHwgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLklkZW50aWZpZXIgfHxcbiAgICAgICAgICAgaXNUeXBlTm9kZUtpbmQobm9kZS5raW5kKSB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSW5kZXhTaWduYXR1cmUpKSB7XG4gICAgICAgIHJldHVybiBvcmlnaW5hbE5vZGU7XG4gICAgICB9XG4gICAgICBub2RlID0gdHMudmlzaXRFYWNoQ2hpbGQobm9kZSwgdmlzaXROb2RlLCBjb250ZXh0KTtcblxuICAgICAgbm9kZS5mbGFncyB8PSB0cy5Ob2RlRmxhZ3MuU3ludGhlc2l6ZWQ7XG4gICAgICBub2RlLnBhcmVudCA9IHVuZGVmaW5lZDtcbiAgICAgIHRzLnNldFRleHRSYW5nZShub2RlLCBvcmlnaW5hbE5vZGUgPyBvcmlnaW5hbE5vZGUgOiB7cG9zOiAtMSwgZW5kOiAtMX0pO1xuICAgICAgdHMuc2V0T3JpZ2luYWxOb2RlKG5vZGUsIG9yaWdpbmFsTm9kZSk7XG5cbiAgICAgIC8vIExvb3Agb3ZlciBhbGwgbmVzdGVkIHRzLk5vZGVBcnJheXMgL1xuICAgICAgLy8gdHMuTm9kZXMgdGhhdCB3ZXJlIG5vdCB2aXNpdGVkIGFuZCBzZXQgdGhlaXJcbiAgICAgIC8vIHRleHQgcmFuZ2UgdG8gLTEgdG8gbm90IGVtaXQgdGhlaXIgd2hpdGVzcGFjZS5cbiAgICAgIC8vIFNhZGx5LCBUeXBlU2NyaXB0IGRvZXMgbm90IGhhdmUgYW4gQVBJIGZvciB0aGlzLi4uXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55IFRvIHJlYWQgYWxsIHByb3BlcnRpZXNcbiAgICAgIGNvbnN0IG5vZGVBbnkgPSBub2RlIGFzIHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSBUbyByZWFkIGFsbCBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBvcmlnaW5hbE5vZGVBbnkgPSBvcmlnaW5hbE5vZGUgYXMge1trZXk6IHN0cmluZ106IGFueX07XG4gICAgICBmb3IgKGNvbnN0IHByb3AgaW4gbm9kZUFueSkge1xuICAgICAgICBpZiAobm9kZUFueS5oYXNPd25Qcm9wZXJ0eShwcm9wKSkge1xuICAgICAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbiAgICAgICAgICBjb25zdCB2YWx1ZSA9IG5vZGVBbnlbcHJvcF07XG4gICAgICAgICAgaWYgKGlzTm9kZUFycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHBvcy9lbmQgb2YgYWxsIE5vZGVBcnJheXMgc28gdGhhdCB3ZSBkb24ndCBlbWl0IGNvbW1lbnRzXG4gICAgICAgICAgICAvLyBmcm9tIHRoZW0uXG4gICAgICAgICAgICB0cy5zZXRUZXh0UmFuZ2UodmFsdWUsIHtwb3M6IC0xLCBlbmQ6IC0xfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgaXNUb2tlbih2YWx1ZSkgJiYgISh2YWx1ZS5mbGFncyAmIHRzLk5vZGVGbGFncy5TeW50aGVzaXplZCkgJiZcbiAgICAgICAgICAgICAgdmFsdWUuZ2V0U291cmNlRmlsZSgpICE9PSBzb3VyY2VGaWxlKSB7XG4gICAgICAgICAgICAvLyBVc2UgdGhlIG9yaWdpbmFsIFRleHRSYW5nZSBmb3IgYWxsIG5vbiB2aXNpdGVkIHRva2VucyAoZS5nLiB0aGVcbiAgICAgICAgICAgIC8vIGBCaW5hcnlFeHByZXNzaW9uLm9wZXJhdG9yVG9rZW5gKSB0byBwcmVzZXJ2ZSB0aGUgZm9ybWF0dGluZ1xuICAgICAgICAgICAgY29uc3QgdGV4dFJhbmdlID0gb3JpZ2luYWxOb2RlID8gb3JpZ2luYWxOb2RlQW55W3Byb3BdIDoge3BvczogLTEsIGVuZDogLTF9O1xuICAgICAgICAgICAgdHMuc2V0VGV4dFJhbmdlKHZhbHVlLCB0ZXh0UmFuZ2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbm9kZTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogSW1wbGVtZW50YXRpb24gb2YgdGhlIGBTb3VyY2VNYXBwZXJgIHRoYXQgc3RvcmVzIGFuZCByZXRyaWV2ZXMgbWFwcGluZ3NcbiAqIHRvIG9yaWdpbmFsIG5vZGVzLlxuICovXG5jbGFzcyBOb2RlU291cmNlTWFwcGVyIGltcGxlbWVudHMgU291cmNlTWFwcGVyIHtcbiAgcHJpdmF0ZSBvcmlnaW5hbE5vZGVCeUdlbmVyYXRlZFJhbmdlID0gbmV3IE1hcDxzdHJpbmcsIHRzLk5vZGU+KCk7XG4gIHByaXZhdGUgZ2VuU3RhcnRQb3NpdGlvbnMgPSBuZXcgTWFwPHRzLk5vZGUsIG51bWJlcj4oKTtcbiAgLyoqIENvbmNlcHR1YWwgb2Zmc2V0IGZvciBhbGwgbm9kZXMgaW4gdGhpcyBtYXBwaW5nLiAqL1xuICBwcml2YXRlIG9mZnNldCA9IDA7XG5cbiAgcHJpdmF0ZSBhZGRGdWxsTm9kZVJhbmdlKG5vZGU6IHRzLk5vZGUsIGdlblN0YXJ0UG9zOiBudW1iZXIpIHtcbiAgICB0aGlzLm9yaWdpbmFsTm9kZUJ5R2VuZXJhdGVkUmFuZ2Uuc2V0KFxuICAgICAgICB0aGlzLm5vZGVDYWNoZUtleShub2RlLmtpbmQsIGdlblN0YXJ0UG9zLCBnZW5TdGFydFBvcyArIChub2RlLmdldEVuZCgpIC0gbm9kZS5nZXRTdGFydCgpKSksXG4gICAgICAgIG5vZGUpO1xuICAgIG5vZGUuZm9yRWFjaENoaWxkKFxuICAgICAgICBjaGlsZCA9PiB0aGlzLmFkZEZ1bGxOb2RlUmFuZ2UoY2hpbGQsIGdlblN0YXJ0UG9zICsgKGNoaWxkLmdldFN0YXJ0KCkgLSBub2RlLmdldFN0YXJ0KCkpKSk7XG4gIH1cblxuICBzaGlmdEJ5T2Zmc2V0KG9mZnNldDogbnVtYmVyKSB7XG4gICAgdGhpcy5vZmZzZXQgKz0gb2Zmc2V0O1xuICB9XG5cbiAgYWRkTWFwcGluZyhcbiAgICAgIG9yaWdpbmFsTm9kZTogdHMuTm9kZSwgb3JpZ2luYWw6IFNvdXJjZVBvc2l0aW9uLCBnZW5lcmF0ZWQ6IFNvdXJjZVBvc2l0aW9uLCBsZW5ndGg6IG51bWJlcikge1xuICAgIGxldCBvcmlnaW5hbFN0YXJ0UG9zID0gb3JpZ2luYWwucG9zaXRpb247XG4gICAgbGV0IGdlblN0YXJ0UG9zID0gZ2VuZXJhdGVkLnBvc2l0aW9uO1xuICAgIGlmIChvcmlnaW5hbFN0YXJ0UG9zID49IG9yaWdpbmFsTm9kZS5nZXRGdWxsU3RhcnQoKSAmJlxuICAgICAgICBvcmlnaW5hbFN0YXJ0UG9zIDw9IG9yaWdpbmFsTm9kZS5nZXRTdGFydCgpKSB7XG4gICAgICAvLyBhbHdheXMgdXNlIHRoZSBub2RlLmdldFN0YXJ0KCkgZm9yIHRoZSBpbmRleCxcbiAgICAgIC8vIGFzIGNvbW1lbnRzIGFuZCB3aGl0ZXNwYWNlcyBtaWdodCBkaWZmZXIgYmV0d2VlbiB0aGUgb3JpZ2luYWwgYW5kIHRyYW5zZm9ybWVkIGNvZGUuXG4gICAgICBjb25zdCBkaWZmVG9TdGFydCA9IG9yaWdpbmFsTm9kZS5nZXRTdGFydCgpIC0gb3JpZ2luYWxTdGFydFBvcztcbiAgICAgIG9yaWdpbmFsU3RhcnRQb3MgKz0gZGlmZlRvU3RhcnQ7XG4gICAgICBnZW5TdGFydFBvcyArPSBkaWZmVG9TdGFydDtcbiAgICAgIGxlbmd0aCAtPSBkaWZmVG9TdGFydDtcbiAgICAgIHRoaXMuZ2VuU3RhcnRQb3NpdGlvbnMuc2V0KG9yaWdpbmFsTm9kZSwgZ2VuU3RhcnRQb3MpO1xuICAgIH1cbiAgICBpZiAob3JpZ2luYWxTdGFydFBvcyArIGxlbmd0aCA9PT0gb3JpZ2luYWxOb2RlLmdldEVuZCgpKSB7XG4gICAgICB0aGlzLm9yaWdpbmFsTm9kZUJ5R2VuZXJhdGVkUmFuZ2Uuc2V0KFxuICAgICAgICAgIHRoaXMubm9kZUNhY2hlS2V5KFxuICAgICAgICAgICAgICBvcmlnaW5hbE5vZGUua2luZCwgdGhpcy5nZW5TdGFydFBvc2l0aW9ucy5nZXQob3JpZ2luYWxOb2RlKSEsIGdlblN0YXJ0UG9zICsgbGVuZ3RoKSxcbiAgICAgICAgICBvcmlnaW5hbE5vZGUpO1xuICAgIH1cbiAgICBvcmlnaW5hbE5vZGUuZm9yRWFjaENoaWxkKChjaGlsZCkgPT4ge1xuICAgICAgaWYgKGNoaWxkLmdldFN0YXJ0KCkgPj0gb3JpZ2luYWxTdGFydFBvcyAmJiBjaGlsZC5nZXRFbmQoKSA8PSBvcmlnaW5hbFN0YXJ0UG9zICsgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuYWRkRnVsbE5vZGVSYW5nZShjaGlsZCwgZ2VuU3RhcnRQb3MgKyAoY2hpbGQuZ2V0U3RhcnQoKSAtIG9yaWdpbmFsU3RhcnRQb3MpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKiBGb3IgdGhlIG5ld2x5IHBhcnNlZCBgbm9kZWAsIGZpbmQgd2hhdCBub2RlIGNvcnJlc3BvbmRlZCB0byBpdCBpbiB0aGUgb3JpZ2luYWwgc291cmNlIHRleHQuICovXG4gIGdldE9yaWdpbmFsTm9kZShub2RlOiB0cy5Ob2RlKTogdHMuTm9kZXx1bmRlZmluZWQge1xuICAgIC8vIEFwcGx5IHRoZSBvZmZzZXQ6IGlmIHRoZXJlIGlzIGFuIG9mZnNldCA+IDAsIGFsbCBub2RlcyBhcmUgY29uY2VwdHVhbGx5IHNoaWZ0ZWQgYnkgc28gbWFueVxuICAgIC8vIGNoYXJhY3RlcnMgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuXG4gICAgbGV0IHN0YXJ0ID0gbm9kZS5nZXRTdGFydCgpIC0gdGhpcy5vZmZzZXQ7XG4gICAgaWYgKHN0YXJ0IDwgMCkge1xuICAgICAgLy8gU3BlY2lhbCBjYXNlOiB0aGUgc291cmNlIGZpbGUgY29uY2VwdHVhbGx5IHNwYW5zIGFsbCBvZiB0aGUgZmlsZSwgaW5jbHVkaW5nIGFueSBhZGRlZFxuICAgICAgLy8gcHJlZml4IGFkZGVkIHRoYXQgY2F1c2VzIG9mZnNldCB0byBiZSBzZXQuXG4gICAgICBpZiAobm9kZS5raW5kICE9PSB0cy5TeW50YXhLaW5kLlNvdXJjZUZpbGUpIHtcbiAgICAgICAgLy8gTm9kZXMgd2l0aGluIFswLCBvZmZzZXRdIG9mIHRoZSBuZXcgZmlsZSAoc3RhcnQgPCAwKSBpcyB0aGUgYWRkaXRpb25hbCBwcmVmaXggdGhhdCBoYXMgbm9cbiAgICAgICAgLy8gY29ycmVzcG9uZGluZyBub2RlcyBpbiB0aGUgb3JpZ2luYWwgc291cmNlLCBzbyByZXR1cm4gdW5kZWZpbmVkLlxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RhcnQgPSAwO1xuICAgIH1cbiAgICBjb25zdCBlbmQgPSBub2RlLmdldEVuZCgpIC0gdGhpcy5vZmZzZXQ7XG4gICAgY29uc3Qga2V5ID0gdGhpcy5ub2RlQ2FjaGVLZXkobm9kZS5raW5kLCBzdGFydCwgZW5kKTtcbiAgICByZXR1cm4gdGhpcy5vcmlnaW5hbE5vZGVCeUdlbmVyYXRlZFJhbmdlLmdldChrZXkpO1xuICB9XG5cbiAgcHJpdmF0ZSBub2RlQ2FjaGVLZXkoa2luZDogdHMuU3ludGF4S2luZCwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtraW5kfSMke3N0YXJ0fSMke2VuZH1gO1xuICB9XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbmZ1bmN0aW9uIGlzTm9kZUFycmF5KHZhbHVlOiBhbnkpOiB2YWx1ZSBpcyB0cy5Ob2RlQXJyYXk8YW55PiB7XG4gIGNvbnN0IGFueVZhbHVlID0gdmFsdWU7XG4gIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBhbnlWYWx1ZS5wb3MgIT09IHVuZGVmaW5lZCAmJiBhbnlWYWx1ZS5lbmQgIT09IHVuZGVmaW5lZDtcbn1cblxuLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuZnVuY3Rpb24gaXNUb2tlbih2YWx1ZTogYW55KTogdmFsdWUgaXMgdHMuVG9rZW48YW55PiB7XG4gIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUua2luZCA+PSB0cy5TeW50YXhLaW5kLkZpcnN0VG9rZW4gJiZcbiAgICAgIHZhbHVlLmtpbmQgPD0gdHMuU3ludGF4S2luZC5MYXN0VG9rZW47XG59XG5cbi8vIENvcGllZCBmcm9tIFR5cGVTY3JpcHRcbmZ1bmN0aW9uIGlzTGl0ZXJhbEtpbmQoa2luZDogdHMuU3ludGF4S2luZCkge1xuICByZXR1cm4gdHMuU3ludGF4S2luZC5GaXJzdExpdGVyYWxUb2tlbiA8PSBraW5kICYmIGtpbmQgPD0gdHMuU3ludGF4S2luZC5MYXN0TGl0ZXJhbFRva2VuO1xufVxuIl19
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmb3JtZXJfc291cmNlbWFwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3RyYW5zZm9ybWVyX3NvdXJjZW1hcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUdILGlFQUEwRztJQUMxRywyQ0FBbUM7SUFFbkM7Ozs7Ozs7Ozs7O09BV0c7SUFDSCx3Q0FDSSxzQkFDVTtRQUNaLE1BQU0sQ0FBQyxVQUFDLE9BQU8sSUFBSyxPQUFBLFVBQUMsVUFBVTtZQUM3QixJQUFNLFlBQVksR0FBRyxJQUFJLGdCQUFnQixFQUFFLENBQUM7WUFDNUMsSUFBTSxxQkFBcUIsR0FBRyxzQkFBc0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7WUFDL0UsSUFBTSxPQUFPLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixDQUMvQixVQUFVLENBQUMsUUFBUSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQzlFLElBQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN0QyxNQUFNLENBQUMsdUNBQW9CLENBQUMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUUvRCxtQkFBc0MsSUFBTztnQkFDM0MsTUFBTSxDQUFDLG1EQUFnQyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGFBQWEsQ0FBTSxDQUFDO1lBQ3RGLENBQUM7WUFFRCx1QkFBdUIsSUFBYTtnQkFDbEMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQzFDLE1BQU0sQ0FBQyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQztnQkFDRCxJQUFNLFlBQVksR0FBRyxZQUFZLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxD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LENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDO0lBQzNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG5cbmltcG9ydCB7U291cmNlTWFwcGVyLCBTb3VyY2VQb3NpdGlvbn0gZnJvbSAnLi9zb3VyY2VfbWFwX3V0aWxzJztcbmltcG9ydCB7aXNUeXBlTm9kZUtpbmQsIHVwZGF0ZVNvdXJjZUZpbGVOb2RlLCB2aXNpdE5vZGVXaXRoU3ludGhlc2l6ZWRDb21tZW50c30gZnJvbSAnLi90cmFuc2Zvcm1lcl91dGlsJztcbmltcG9ydCAqIGFzIHRzIGZyb20gJy4vdHlwZXNjcmlwdCc7XG5cbi8qKlxuICogQ3JlYXRlcyBhIFR5cGVTY3JpcHQgdHJhbnNmb3JtZXIgYmFzZWQgb24gYSBzb3VyY2UtPnRleHQgdHJhbnNmb3JtYXRpb24uXG4gKlxuICogVHlwZVNjcmlwdCB0cmFuc2Zvcm1lcnMgb3BlcmF0ZSBvbiBBU1Qgbm9kZXMuIE5ld2x5IGNyZWF0ZWQgbm9kZXMgbXVzdCBiZSBtYXJrZWQgYXMgcmVwbGFjaW5nIGFuXG4gKiBvbGRlciBBU1Qgbm9kZS4gVGhpcyBzaGltIGFsbG93cyBydW5uaW5nIGEgdHJhbnNmb3JtYXRpb24gc3RlcCB0aGF0J3MgYmFzZWQgb24gZW1pdHRpbmcgbmV3IHRleHRcbiAqIGFzIGEgbm9kZSBiYXNlZCB0cmFuc2Zvcm1lci4gSXQgYWNoaWV2ZXMgdGhhdCBieSBydW5uaW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiwgY29sbGVjdGluZyBhIHNvdXJjZVxuICogbWFwcGluZyBpbiB0aGUgcHJvY2VzcywgYW5kIHRoZW4gYWZ0ZXJ3YXJkcyBwYXJzaW5nIHRoZSBzb3VyY2UgdGV4dCBpbnRvIGEgbmV3IEFTVCBhbmQgbWFya2luZ1xuICogdGhlIG5ldyBub2RlcyBhcyByZXByZXNlbnRhdGlvbnMgb2YgdGhlIG9sZCBub2RlcyBiYXNlZCBvbiB0aGVpciBzb3VyY2UgbWFwIHBvc2l0aW9ucy5cbiAqXG4gKiBUaGUgcHJvY2VzcyBtYXJrcyBhbGwgbm9kZXMgYXMgc3ludGhlc2l6ZWQgZXhjZXB0IGZvciBhIGhhbmRmdWwgb2Ygc3BlY2lhbCBjYXNlcyAoaWRlbnRpZmllcnNcbiAqIGV0YykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2Zvcm1lckZyb21Tb3VyY2VNYXAoXG4gICAgc291cmNlQmFzZWRUcmFuc2Zvcm1lcjogKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsIHNvdXJjZU1hcHBlcjogU291cmNlTWFwcGVyKSA9PlxuICAgICAgICBzdHJpbmcpOiB0cy5UcmFuc2Zvcm1lckZhY3Rvcnk8dHMuU291cmNlRmlsZT4ge1xuICByZXR1cm4gKGNvbnRleHQpID0+IChzb3VyY2VGaWxlKSA9PiB7XG4gICAgY29uc3Qgc291cmNlTWFwcGVyID0gbmV3IE5vZGVTb3VyY2VNYXBwZXIoKTtcbiAgICBjb25zdCB0cmFuc2Zvcm1lZFNvdXJjZVRleHQgPSBzb3VyY2VCYXNlZFRyYW5zZm9ybWVyKHNvdXJjZUZpbGUsIHNvdXJjZU1hcHBlcik7XG4gICAgY29uc3QgbmV3RmlsZSA9IHRzLmNyZWF0ZVNvdXJjZUZpbGUoXG4gICAgICAgIHNvdXJjZUZpbGUuZmlsZU5hbWUsIHRyYW5zZm9ybWVkU291cmNlVGV4dCwgdHMuU2NyaXB0VGFyZ2V0LkxhdGVzdCwgdHJ1ZSk7XG4gICAgY29uc3QgbWFwcGVkRmlsZSA9IHZpc2l0Tm9kZShuZXdGaWxlKTtcbiAgICByZXR1cm4gdXBkYXRlU291cmNlRmlsZU5vZGUoc291cmNlRmlsZSwgbWFwcGVkRmlsZS5zdGF0ZW1lbnRzKTtcblxuICAgIGZ1bmN0aW9uIHZpc2l0Tm9kZTxUIGV4dGVuZHMgdHMuTm9kZT4obm9kZTogVCk6IFQge1xuICAgICAgcmV0dXJuIHZpc2l0Tm9kZVdpdGhTeW50aGVzaXplZENvbW1lbnRzKGNvbnRleHQsIG5ld0ZpbGUsIG5vZGUsIHZpc2l0Tm9kZUltcGwpIGFzIFQ7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gdmlzaXROb2RlSW1wbChub2RlOiB0cy5Ob2RlKSB7XG4gICAgICBpZiAobm9kZS5mbGFncyAmIHRzLk5vZGVGbGFncy5TeW50aGVzaXplZCkge1xuICAgICAgICByZXR1cm4gbm9kZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yaWdpbmFsTm9kZSA9IHNvdXJjZU1hcHBlci5nZXRPcmlnaW5hbE5vZGUobm9kZSk7XG5cbiAgICAgIC8vIFVzZSB0aGUgb3JpZ2luYWxOb2RlIGZvcjpcbiAgICAgIC8vIC0gbGl0ZXJhbHM6IGFzIGUuZy4gdHlwZXNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0IHN5bnRoZXRpYyByZWdleCBsaXRlcmFsc1xuICAgICAgLy8gLSBpZGVudGlmaWVyczogYXMgdGhleSBkb24ndCBoYXZlIGNoaWxkcmVuIGFuZCBiZWhhdmUgd2VsbFxuICAgICAgLy8gICAgcmVnYXJkaW5nIGNvbW1lbnQgc3ludGhlc2l6YXRpb25cbiAgICAgIC8vIC0gdHlwZXM6IGFzIHRoZXkgYXJlIG5vdCBlbWl0ZWQgYW55d2F5c1xuICAgICAgLy8gICAgICAgICAgYW5kIGl0IGxlYWRzIHRvIGVycm9ycyB3aXRoIGBleHRlbmRzYCBjYXNlcy5cbiAgICAgIC8vIC0gaW1wb3J0cy9leHBvcnRzOiBhcyBUeXBlU2NyaXB0IHdpbGwgb25seSBhdHRlbXB0IHRvIGVsaWRlIHR5cGUgb25seVxuICAgICAgLy8gICAgICAgICAgICAgICAgICAgIGltcG9ydHMgaWYgdGhlIG5ldyBub2RlIGlzIGlkZW50aWNhbCB0byB0aGUgb3JpZ2luYWwgbm9kZS5cbiAgICAgIGlmIChvcmlnaW5hbE5vZGUpIHtcbiAgICAgICAgaWYgKGlzTGl0ZXJhbEtpbmQobm9kZS5raW5kKSB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSWRlbnRpZmllciB8fFxuICAgICAgICAgICAgaXNUeXBlTm9kZUtpbmQobm9kZS5raW5kKSB8fCBub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSW5kZXhTaWduYXR1cmUpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWxOb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChub2RlLmtpbmQgPT09IHRzLlN5bnRheEtpbmQuSW1wb3J0RGVjbGFyYXRpb24gfHxcbiAgICAgICAgICAgIG5vZGUua2luZCA9PT0gdHMuU3ludGF4S2luZC5JbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiB8fFxuICAgICAgICAgICAgbm9kZS5raW5kID09PSB0cy5TeW50YXhLaW5kLkV4cG9ydEFzc2lnbm1lbnQpIHtcbiAgICAgICAgICByZXR1cm4gb3JpZ2luYWxOb2RlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0cy5pc0V4cG9ydERlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgLy8gUmV0dXJuIHRoZSBvcmlnaW5hbCBub2RlcyBmb3IgZXhwb3J0IGRlY2xhcmF0aW9ucywgdW5sZXNzIHRoZXkgd2VyZSBleHBhbmRlZCBmcm9tIGFuXG4gICAgICAgICAgLy8gZXhwb3J0ICogdG8gc3BlY2lmaWMgZXhwb3J0ZWQgc3ltYm9scy5cbiAgICAgICAgICBjb25zdCBvcmlnaW5hbEV4cG9ydCA9IG9yaWdpbmFsTm9kZSBhcyB0cy5FeHBvcnREZWNsYXJhdGlvbjtcbiAgICAgICAgICBpZiAoIW5vZGUubW9kdWxlU3BlY2lmaWVyKSB7XG4gICAgICAgICAgICAvLyBleHBvcnQge2EsIGIsIGN9O1xuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCEhb3JpZ2luYWxFeHBvcnQuZXhwb3J0Q2xhdXNlID09PSAhIW5vZGUuZXhwb3J0Q2xhdXNlKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGFscmVhZHkgd2FzIGV4cG9ydGVkIHdpdGggc3ltYm9scyAoZXhwb3J0IHsuLi59KSBvciB3YXMgbm90IGV4cGFuZGVkLlxuICAgICAgICAgICAgcmV0dXJuIG9yaWdpbmFsTm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgLy8gUmV3cm90ZSBleHBvcnQgKiAtPiBleHBvcnQgey4uLn0sIHRoZSBleHBvcnQgZGVjbGFyYXRpb24gbXVzdCBiZSBlbWl0dGVkIGluIHRoZSB1cGRhdGVkXG4gICAgICAgICAgLy8gZm9ybS5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbm9kZSA9IHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSwgY29udGV4dCk7XG5cbiAgICAgIG5vZGUuZmxhZ3MgfD0gdHMuTm9kZUZsYWdzLlN5bnRoZXNpemVkO1xuICAgICAgbm9kZS5wYXJlbnQgPSB1bmRlZmluZWQ7XG4gICAgICB0cy5zZXRUZXh0UmFuZ2Uobm9kZSwgb3JpZ2luYWxOb2RlID8gb3JpZ2luYWxOb2RlIDoge3BvczogLTEsIGVuZDogLTF9KTtcbiAgICAgIHRzLnNldE9yaWdpbmFsTm9kZShub2RlLCBvcmlnaW5hbE5vZGUpO1xuXG4gICAgICAvLyBMb29wIG92ZXIgYWxsIG5lc3RlZCB0cy5Ob2RlQXJyYXlzIC9cbiAgICAgIC8vIHRzLk5vZGVzIHRoYXQgd2VyZSBub3QgdmlzaXRlZCBhbmQgc2V0IHRoZWlyXG4gICAgICAvLyB0ZXh0IHJhbmdlIHRvIC0xIHRvIG5vdCBlbWl0IHRoZWlyIHdoaXRlc3BhY2UuXG4gICAgICAvLyBTYWRseSwgVHlwZVNjcmlwdCBkb2VzIG5vdCBoYXZlIGFuIEFQSSBmb3IgdGhpcy4uLlxuICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueSBUbyByZWFkIGFsbCBwcm9wZXJ0aWVzXG4gICAgICBjb25zdCBub2RlQW55ID0gbm9kZSBhcyB7W2tleTogc3RyaW5nXTogYW55fTtcbiAgICAgIC8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnkgVG8gcmVhZCBhbGwgcHJvcGVydGllc1xuICAgICAgY29uc3Qgb3JpZ2luYWxOb2RlQW55ID0gb3JpZ2luYWxOb2RlIGFzIHtba2V5OiBzdHJpbmddOiBhbnl9O1xuICAgICAgZm9yIChjb25zdCBwcm9wIGluIG5vZGVBbnkpIHtcbiAgICAgICAgaWYgKG5vZGVBbnkuaGFzT3duUHJvcGVydHkocHJvcCkpIHtcbiAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgY29uc3QgdmFsdWUgPSBub2RlQW55W3Byb3BdO1xuICAgICAgICAgIGlmIChpc05vZGVBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIC8vIHJlc2V0IHRoZSBwb3MvZW5kIG9mIGFsbCBOb2RlQXJyYXlzIHNvIHRoYXQgd2UgZG9uJ3QgZW1pdCBjb21tZW50c1xuICAgICAgICAgICAgLy8gZnJvbSB0aGVtLlxuICAgICAgICAgICAgdHMuc2V0VGV4dFJhbmdlKHZhbHVlLCB7cG9zOiAtMSwgZW5kOiAtMX0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgICAgIGlzVG9rZW4odmFsdWUpICYmICEodmFsdWUuZmxhZ3MgJiB0cy5Ob2RlRmxhZ3MuU3ludGhlc2l6ZWQpICYmXG4gICAgICAgICAgICAgIHZhbHVlLmdldFNvdXJjZUZpbGUoKSAhPT0gc291cmNlRmlsZSkge1xuICAgICAgICAgICAgLy8gVXNlIHRoZSBvcmlnaW5hbCBUZXh0UmFuZ2UgZm9yIGFsbCBub24gdmlzaXRlZCB0b2tlbnMgKGUuZy4gdGhlXG4gICAgICAgICAgICAvLyBgQmluYXJ5RXhwcmVzc2lvbi5vcGVyYXRvclRva2VuYCkgdG8gcHJlc2VydmUgdGhlIGZvcm1hdHRpbmdcbiAgICAgICAgICAgIGNvbnN0IHRleHRSYW5nZSA9IG9yaWdpbmFsTm9kZSA/IG9yaWdpbmFsTm9kZUFueVtwcm9wXSA6IHtwb3M6IC0xLCBlbmQ6IC0xfTtcbiAgICAgICAgICAgIHRzLnNldFRleHRSYW5nZSh2YWx1ZSwgdGV4dFJhbmdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5vZGU7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIEltcGxlbWVudGF0aW9uIG9mIHRoZSBgU291cmNlTWFwcGVyYCB0aGF0IHN0b3JlcyBhbmQgcmV0cmlldmVzIG1hcHBpbmdzXG4gKiB0byBvcmlnaW5hbCBub2Rlcy5cbiAqL1xuY2xhc3MgTm9kZVNvdXJjZU1hcHBlciBpbXBsZW1lbnRzIFNvdXJjZU1hcHBlciB7XG4gIHByaXZhdGUgb3JpZ2luYWxOb2RlQnlHZW5lcmF0ZWRSYW5nZSA9IG5ldyBNYXA8c3RyaW5nLCB0cy5Ob2RlPigpO1xuICBwcml2YXRlIGdlblN0YXJ0UG9zaXRpb25zID0gbmV3IE1hcDx0cy5Ob2RlLCBudW1iZXI+KCk7XG4gIC8qKiBDb25jZXB0dWFsIG9mZnNldCBmb3IgYWxsIG5vZGVzIGluIHRoaXMgbWFwcGluZy4gKi9cbiAgcHJpdmF0ZSBvZmZzZXQgPSAwO1xuXG4gIHByaXZhdGUgYWRkRnVsbE5vZGVSYW5nZShub2RlOiB0cy5Ob2RlLCBnZW5TdGFydFBvczogbnVtYmVyKSB7XG4gICAgdGhpcy5vcmlnaW5hbE5vZGVCeUdlbmVyYXRlZFJhbmdlLnNldChcbiAgICAgICAgdGhpcy5ub2RlQ2FjaGVLZXkobm9kZS5raW5kLCBnZW5TdGFydFBvcywgZ2VuU3RhcnRQb3MgKyAobm9kZS5nZXRFbmQoKSAtIG5vZGUuZ2V0U3RhcnQoKSkpLFxuICAgICAgICBub2RlKTtcbiAgICBub2RlLmZvckVhY2hDaGlsZChcbiAgICAgICAgY2hpbGQgPT4gdGhpcy5hZGRGdWxsTm9kZVJhbmdlKGNoaWxkLCBnZW5TdGFydFBvcyArIChjaGlsZC5nZXRTdGFydCgpIC0gbm9kZS5nZXRTdGFydCgpKSkpO1xuICB9XG5cbiAgc2hpZnRCeU9mZnNldChvZmZzZXQ6IG51bWJlcikge1xuICAgIHRoaXMub2Zmc2V0ICs9IG9mZnNldDtcbiAgfVxuXG4gIGFkZE1hcHBpbmcoXG4gICAgICBvcmlnaW5hbE5vZGU6IHRzLk5vZGUsIG9yaWdpbmFsOiBTb3VyY2VQb3NpdGlvbiwgZ2VuZXJhdGVkOiBTb3VyY2VQb3NpdGlvbiwgbGVuZ3RoOiBudW1iZXIpIHtcbiAgICBsZXQgb3JpZ2luYWxTdGFydFBvcyA9IG9yaWdpbmFsLnBvc2l0aW9uO1xuICAgIGxldCBnZW5TdGFydFBvcyA9IGdlbmVyYXRlZC5wb3NpdGlvbjtcbiAgICBpZiAob3JpZ2luYWxTdGFydFBvcyA+PSBvcmlnaW5hbE5vZGUuZ2V0RnVsbFN0YXJ0KCkgJiZcbiAgICAgICAgb3JpZ2luYWxTdGFydFBvcyA8PSBvcmlnaW5hbE5vZGUuZ2V0U3RhcnQoKSkge1xuICAgICAgLy8gYWx3YXlzIHVzZSB0aGUgbm9kZS5nZXRTdGFydCgpIGZvciB0aGUgaW5kZXgsXG4gICAgICAvLyBhcyBjb21tZW50cyBhbmQgd2hpdGVzcGFjZXMgbWlnaHQgZGlmZmVyIGJldHdlZW4gdGhlIG9yaWdpbmFsIGFuZCB0cmFuc2Zvcm1lZCBjb2RlLlxuICAgICAgY29uc3QgZGlmZlRvU3RhcnQgPSBvcmlnaW5hbE5vZGUuZ2V0U3RhcnQoKSAtIG9yaWdpbmFsU3RhcnRQb3M7XG4gICAgICBvcmlnaW5hbFN0YXJ0UG9zICs9IGRpZmZUb1N0YXJ0O1xuICAgICAgZ2VuU3RhcnRQb3MgKz0gZGlmZlRvU3RhcnQ7XG4gICAgICBsZW5ndGggLT0gZGlmZlRvU3RhcnQ7XG4gICAgICB0aGlzLmdlblN0YXJ0UG9zaXRpb25zLnNldChvcmlnaW5hbE5vZGUsIGdlblN0YXJ0UG9zKTtcbiAgICB9XG4gICAgaWYgKG9yaWdpbmFsU3RhcnRQb3MgKyBsZW5ndGggPT09IG9yaWdpbmFsTm9kZS5nZXRFbmQoKSkge1xuICAgICAgdGhpcy5vcmlnaW5hbE5vZGVCeUdlbmVyYXRlZFJhbmdlLnNldChcbiAgICAgICAgICB0aGlzLm5vZGVDYWNoZUtleShcbiAgICAgICAgICAgICAgb3JpZ2luYWxOb2RlLmtpbmQsIHRoaXMuZ2VuU3RhcnRQb3NpdGlvbnMuZ2V0KG9yaWdpbmFsTm9kZSkhLCBnZW5TdGFydFBvcyArIGxlbmd0aCksXG4gICAgICAgICAgb3JpZ2luYWxOb2RlKTtcbiAgICB9XG4gICAgb3JpZ2luYWxOb2RlLmZvckVhY2hDaGlsZCgoY2hpbGQpID0+IHtcbiAgICAgIGlmIChjaGlsZC5nZXRTdGFydCgpID49IG9yaWdpbmFsU3RhcnRQb3MgJiYgY2hpbGQuZ2V0RW5kKCkgPD0gb3JpZ2luYWxTdGFydFBvcyArIGxlbmd0aCkge1xuICAgICAgICB0aGlzLmFkZEZ1bGxOb2RlUmFuZ2UoY2hpbGQsIGdlblN0YXJ0UG9zICsgKGNoaWxkLmdldFN0YXJ0KCkgLSBvcmlnaW5hbFN0YXJ0UG9zKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvKiogRm9yIHRoZSBuZXdseSBwYXJzZWQgYG5vZGVgLCBmaW5kIHdoYXQgbm9kZSBjb3JyZXNwb25kZWQgdG8gaXQgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSB0ZXh0LiAqL1xuICBnZXRPcmlnaW5hbE5vZGUobm9kZTogdHMuTm9kZSk6IHRzLk5vZGV8dW5kZWZpbmVkIHtcbiAgICAvLyBBcHBseSB0aGUgb2Zmc2V0OiBpZiB0aGVyZSBpcyBhbiBvZmZzZXQgPiAwLCBhbGwgbm9kZXMgYXJlIGNvbmNlcHR1YWxseSBzaGlmdGVkIGJ5IHNvIG1hbnlcbiAgICAvLyBjaGFyYWN0ZXJzIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLlxuICAgIGxldCBzdGFydCA9IG5vZGUuZ2V0U3RhcnQoKSAtIHRoaXMub2Zmc2V0O1xuICAgIGlmIChzdGFydCA8IDApIHtcbiAgICAgIC8vIFNwZWNpYWwgY2FzZTogdGhlIHNvdXJjZSBmaWxlIGNvbmNlcHR1YWxseSBzcGFucyBhbGwgb2YgdGhlIGZpbGUsIGluY2x1ZGluZyBhbnkgYWRkZWRcbiAgICAgIC8vIHByZWZpeCBhZGRlZCB0aGF0IGNhdXNlcyBvZmZzZXQgdG8gYmUgc2V0LlxuICAgICAgaWYgKG5vZGUua2luZCAhPT0gdHMuU3ludGF4S2luZC5Tb3VyY2VGaWxlKSB7XG4gICAgICAgIC8vIE5vZGVzIHdpdGhpbiBbMCwgb2Zmc2V0XSBvZiB0aGUgbmV3IGZpbGUgKHN0YXJ0IDwgMCkgaXMgdGhlIGFkZGl0aW9uYWwgcHJlZml4IHRoYXQgaGFzIG5vXG4gICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgbm9kZXMgaW4gdGhlIG9yaWdpbmFsIHNvdXJjZSwgc28gcmV0dXJuIHVuZGVmaW5lZC5cbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIHN0YXJ0ID0gMDtcbiAgICB9XG4gICAgY29uc3QgZW5kID0gbm9kZS5nZXRFbmQoKSAtIHRoaXMub2Zmc2V0O1xuICAgIGNvbnN0IGtleSA9IHRoaXMubm9kZUNhY2hlS2V5KG5vZGUua2luZCwgc3RhcnQsIGVuZCk7XG4gICAgcmV0dXJuIHRoaXMub3JpZ2luYWxOb2RlQnlHZW5lcmF0ZWRSYW5nZS5nZXQoa2V5KTtcbiAgfVxuXG4gIHByaXZhdGUgbm9kZUNhY2hlS2V5KGtpbmQ6IHRzLlN5bnRheEtpbmQsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7a2luZH0jJHtzdGFydH0jJHtlbmR9YDtcbiAgfVxufVxuXG4vLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG5mdW5jdGlvbiBpc05vZGVBcnJheSh2YWx1ZTogYW55KTogdmFsdWUgaXMgdHMuTm9kZUFycmF5PGFueT4ge1xuICBjb25zdCBhbnlWYWx1ZSA9IHZhbHVlO1xuICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgYW55VmFsdWUucG9zICE9PSB1bmRlZmluZWQgJiYgYW55VmFsdWUuZW5kICE9PSB1bmRlZmluZWQ7XG59XG5cbi8vIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1hbnlcbmZ1bmN0aW9uIGlzVG9rZW4odmFsdWU6IGFueSk6IHZhbHVlIGlzIHRzLlRva2VuPGFueT4ge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlLmtpbmQgPj0gdHMuU3ludGF4S2luZC5GaXJzdFRva2VuICYmXG4gICAgICB2YWx1ZS5raW5kIDw9IHRzLlN5bnRheEtpbmQuTGFzdFRva2VuO1xufVxuXG4vLyBDb3BpZWQgZnJvbSBUeXBlU2NyaXB0XG5mdW5jdGlvbiBpc0xpdGVyYWxLaW5kKGtpbmQ6IHRzLlN5bnRheEtpbmQpIHtcbiAgcmV0dXJuIHRzLlN5bnRheEtpbmQuRmlyc3RMaXRlcmFsVG9rZW4gPD0ga2luZCAmJiBraW5kIDw9IHRzLlN5bnRheEtpbmQuTGFzdExpdGVyYWxUb2tlbjtcbn1cbiJdfQ==

@@ -39,6 +39,6 @@ /// <amd-module name="tsickle/src/tsickle" />

export declare let closureExternsBlacklist: string[];
export declare function formatDiagnostics(diags: ts.Diagnostic[]): string;
export declare function formatDiagnostics(diags: ReadonlyArray<ts.Diagnostic>): string;
/** Returns a fileName:line:column string for the given position in the file. */
export declare function formatLocation(sf: ts.SourceFile, start: number | undefined): string;
export declare function annotate(typeChecker: ts.TypeChecker, file: ts.SourceFile, host: AnnotatorHost, tsHost?: ts.ModuleResolutionHost, tsOpts?: ts.CompilerOptions, sourceMapper?: SourceMapper): {
export declare function annotate(typeChecker: ts.TypeChecker, file: ts.SourceFile, host: AnnotatorHost, tsHost: ts.ModuleResolutionHost, tsOpts: ts.CompilerOptions, sourceMapper?: SourceMapper): {
output: string;

@@ -45,0 +45,0 @@ diagnostics: ts.Diagnostic[];

@@ -17,4 +17,4 @@ /// <amd-module name="tsickle/src/typescript" />

import * as ts from 'typescript';
export { __String, addSyntheticTrailingComment, AssertionExpression, Block, CallExpression, CancellationToken, ClassDeclaration, ClassElement, ClassLikeDeclaration, CommentRange, CompilerHost, CompilerOptions, ConstructorDeclaration, createArrayLiteral, createArrayTypeNode, createCompilerHost, createIdentifier, createKeywordTypeNode, createNodeArray, createNotEmittedStatement, createObjectLiteral, createProgram, createProperty, createPropertyAssignment, createPropertySignature, createSourceFile, createToken, createTypeLiteralNode, createTypeReferenceNode, CustomTransformers, Declaration, DeclarationStatement, DeclarationWithTypeParameters, Decorator, Diagnostic, DiagnosticCategory, ElementAccessExpression, EmitFlags, EmitResult, EntityName, EnumDeclaration, ExportDeclaration, ExportSpecifier, Expression, ExpressionStatement, flattenDiagnosticMessageText, forEachChild, FunctionDeclaration, FunctionLikeDeclaration, GetAccessorDeclaration, getCombinedModifierFlags, getLeadingCommentRanges, getLineAndCharacterOfPosition, getMutableClone, getOriginalNode, getPreEmitDiagnostics, getSyntheticLeadingComments, getSyntheticTrailingComments, getTrailingCommentRanges, Identifier, ImportDeclaration, ImportEqualsDeclaration, ImportSpecifier, InterfaceDeclaration, isIdentifier, MethodDeclaration, ModifierFlags, ModuleBlock, ModuleDeclaration, ModuleKind, ModuleResolutionHost, NamedDeclaration, NamedImports, Node, NodeArray, NodeFlags, NonNullExpression, NotEmittedStatement, ObjectLiteralElementLike, ObjectLiteralExpression, ParameterDeclaration, parseCommandLine, parseJsonConfigFileContent, Program, PropertyAccessExpression, PropertyAssignment, PropertyDeclaration, PropertyName, PropertySignature, readConfigFile, resolveModuleName, ScriptTarget, SetAccessorDeclaration, setEmitFlags, setOriginalNode, setSourceMapRange, setSyntheticLeadingComments, setSyntheticTrailingComments, setTextRange, SignatureDeclaration, SourceFile, Statement, StringLiteral, Symbol, SymbolFlags, SyntaxKind, SynthesizedComment, sys, Token, TransformationContext, Transformer, TransformerFactory, Type, TypeAliasDeclaration, TypeChecker, TypeElement, TypeFlags, TypeNode, TypeReference, UnionType, updateBlock, VariableDeclaration, VariableStatement, visitEachChild, visitLexicalEnvironment, Visitor, WriteFileCallback } from 'typescript';
export { __String, addSyntheticTrailingComment, AssertionExpression, Block, CallExpression, CancellationToken, ClassDeclaration, ClassElement, ClassLikeDeclaration, CommentRange, CompilerHost, CompilerOptions, ConstructorDeclaration, createArrayLiteral, createArrayTypeNode, createCompilerHost, createIdentifier, createKeywordTypeNode, createNodeArray, createNotEmittedStatement, createObjectLiteral, createProgram, createProperty, createPropertyAssignment, createPropertySignature, createSourceFile, createToken, createTypeLiteralNode, createTypeReferenceNode, CustomTransformers, Declaration, DeclarationStatement, DeclarationWithTypeParameters, Decorator, Diagnostic, DiagnosticCategory, ElementAccessExpression, EmitFlags, EmitResult, EntityName, EnumDeclaration, ExportDeclaration, ExportSpecifier, Expression, ExpressionStatement, flattenDiagnosticMessageText, forEachChild, FunctionDeclaration, FunctionLikeDeclaration, GetAccessorDeclaration, getCombinedModifierFlags, getLeadingCommentRanges, getLineAndCharacterOfPosition, getMutableClone, getOriginalNode, getPreEmitDiagnostics, getSyntheticLeadingComments, getSyntheticTrailingComments, getTrailingCommentRanges, Identifier, ImportDeclaration, ImportEqualsDeclaration, ImportSpecifier, InterfaceDeclaration, isExportDeclaration, isIdentifier, MethodDeclaration, ModifierFlags, ModuleBlock, ModuleDeclaration, ModuleKind, ModuleResolutionHost, NamedDeclaration, NamedImports, Node, NodeArray, NodeFlags, NonNullExpression, NotEmittedStatement, ObjectLiteralElementLike, ObjectLiteralExpression, ParameterDeclaration, parseCommandLine, parseJsonConfigFileContent, Program, PropertyAccessExpression, PropertyAssignment, PropertyDeclaration, PropertyName, PropertySignature, readConfigFile, resolveModuleName, ScriptTarget, SetAccessorDeclaration, setEmitFlags, setOriginalNode, setSourceMapRange, setSyntheticLeadingComments, setSyntheticTrailingComments, setTextRange, SignatureDeclaration, SourceFile, Statement, StringLiteral, Symbol, SymbolFlags, SyntaxKind, SynthesizedComment, sys, Token, TransformationContext, Transformer, TransformerFactory, Type, TypeAliasDeclaration, TypeChecker, TypeElement, TypeFlags, TypeNode, TypeReference, UnionType, updateBlock, VariableDeclaration, VariableStatement, visitEachChild, visitLexicalEnvironment, Visitor, WriteFileCallback } from 'typescript';
export declare function getEmitFlags(node: ts.Node): ts.EmitFlags | undefined;
export declare let updateProperty: typeof ts.updateProperty;

@@ -75,2 +75,3 @@ /**

exports.getTrailingCommentRanges = typescript_1.getTrailingCommentRanges;
exports.isExportDeclaration = typescript_1.isExportDeclaration;
exports.isIdentifier = typescript_1.isIdentifier;

@@ -116,2 +117,2 @@ exports.ModifierFlags = typescript_1.ModifierFlags;

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNIOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILCtFQUErRTtJQUUvRSwrQkFBaUM7SUFLakMseUNBQXl4RTtJQUF2d0UsbURBQUEsMkJBQTJCLENBQUE7SUFBNEwsMENBQUEsa0JBQWtCLENBQUE7SUFBRSwyQ0FBQSxtQkFBbUIsQ0FBQTtJQUFFLDBDQUFBLGtCQUFrQixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLHVDQUFBLGVBQWUsQ0FBQTtJQUFFLGlEQUFBLHlCQUF5QixDQUFBO0lBQUUsMkNBQUEsbUJBQW1CLENBQUE7SUFBRSxxQ0FBQSxhQUFhLENBQUE7SUFBRSxzQ0FBQSxjQUFjLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSxtQ0FBQSxXQUFXLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQStHLDBDQUFBLGtCQUFrQixDQUFBO0lBQTJCLGlDQUFBLFNBQVMsQ0FBQTtJQUFnSCxvREFBQSw0QkFBNEIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUF3RSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUscURBQUEsNkJBQTZCLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLG1EQUFBLDJCQUEyQixDQUFBO0lBQUUsb0RBQUEsNEJBQTRCLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFpRyxvQ0FBQSxZQUFZLENBQUE7SUFBcUIscUNBQUEsYUFBYSxDQUFBO0lBQWtDLGtDQUFBLFVBQVUsQ0FBQTtJQUF5RSxpQ0FBQSxTQUFTLENBQUE7SUFBbUgsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSxrREFBQSwwQkFBMEIsQ0FBQTtJQUErRyxzQ0FBQSxjQUFjLENBQUE7SUFBRSx5Q0FBQSxpQkFBaUIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUEwQixvQ0FBQSxZQUFZLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSx5Q0FBQSxpQkFBaUIsQ0FBQTtJQUFFLG1EQUFBLDJCQUEyQixDQUFBO0lBQUUsb0RBQUEsNEJBQTRCLENBQUE7SUFBRSxvQ0FBQSxZQUFZLENBQUE7SUFBc0UsbUNBQUEsV0FBVyxDQUFBO0lBQUUsa0NBQUEsVUFBVSxDQUFBO0lBQXNCLDJCQUFBLEdBQUcsQ0FBQTtJQUF1SCxpQ0FBQSxTQUFTLENBQUE7SUFBc0MsbUNBQUEsV0FBVyxDQUFBO0lBQTBDLHNDQUFBLGNBQWMsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBRXp1RSxrREFBa0Q7SUFDbEQsNkVBQTZFO0lBQzdFLHlCQUF5QjtJQUN6QixzQkFBNkIsSUFBYTtRQUN4QyxNQUFNLENBQUUsRUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRkQsb0NBRUM7SUFFRCw4RkFBOEY7SUFDOUYsY0FBYztJQUNILFFBQUEsY0FBYyxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUM7SUFFeEMsSUFBQSxxQ0FBc0MsRUFBckMsYUFBSyxFQUFFLGFBQUssQ0FBMEI7SUFDN0MsRUFBRSxDQUFDLENBQUMsS0FBSyxLQUFLLEdBQUcsSUFBSSxLQUFLLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNuQyxJQUFNLGtCQUFnQixHQUFHLEVBQUUsQ0FBQyxjQUFtRCxDQUFDO1FBQ2hGLHNCQUFjLEdBQUcsVUFBQyxJQUE0QixFQUFFLFVBQWlELEVBQy9FLFNBQStDLEVBQUUsSUFBNEIsRUFDN0UsYUFBeUMsRUFBRSxJQUEyQixFQUN0RSxXQUFvQztZQUNwRCxNQUFNLENBQUMsa0JBQWdCLENBQ1osSUFBdUMsRUFBRSxVQUFxQyxFQUM5RSxTQUFnQixFQUFFLElBQVcsRUFBRSxJQUFXLEVBQUUsV0FBa0IsQ0FBUSxDQUFDO1FBQ3BGLENBQUMsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqXG4gKiBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhbiBNSVQtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZVxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZSBhdCBodHRwczovL2FuZ3VsYXIuaW8vbGljZW5zZVxuICovXG4vKipcbiAqIEBmaWxlb3ZlcnZpZXcgQWJzdHJhY3Rpb24gb3ZlciB0aGUgVHlwZVNjcmlwdCBBUEkgdGhhdCBtYWtlcyBtdWx0aXBsZVxuICogdmVyc2lvbnMgb2YgVHlwZVNjcmlwdCBhcHBlYXIgdG8gYmUgaW50ZXJvcGVyYWJsZS4gQW55IHRpbWUgYSBicmVha2luZyBjaGFuZ2VcbiAqIGluIFR5cGVTY3JpcHQgYWZmZWN0cyBUc2lja2xlIGNvZGUsIHdlIHNob3VsZCBleHRlbmQgdGhpcyBzaGltIHRvIHByZXNlbnQgYW5cbiAqIHVuYnJva2VuIEFQSS5cbiAqIEFsbCBjb2RlIGluIHRzaWNrbGUgc2hvdWxkIGltcG9ydCBmcm9tIHRoaXMgbG9jYXRpb24sIG5vdCBmcm9tICd0eXBlc2NyaXB0Jy5cbiAqL1xuXG4vLyB0c2xpbnQ6ZGlzYWJsZTpuby1hbnkgV2UgbmVlZCB0byBkbyB2YXJpb3VzIHVuc2FmZSBjYXN0cyBiZXR3ZWVuIFRTIHZlcnNpb25zXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vLyBOb3RlLCB0aGlzIGltcG9ydCBkZXBlbmRzIG9uIGEgZ2VucnVsZSBjb3B5aW5nIHRoZSAuZC50cyBmaWxlIHRvIHRoaXMgcGFja2FnZVxuaW1wb3J0ICogYXMgdHMyNCBmcm9tICcuL3R5cGVzY3JpcHQtMi40JztcblxuZXhwb3J0IHtfX1N0cmluZywgYWRkU3ludGhldGljVHJhaWxpbmdDb21tZW50LCBBc3NlcnRpb25FeHByZXNzaW9uLCBCbG9jaywgQ2FsbEV4cHJlc3Npb24sIENhbmNlbGxhdGlvblRva2VuLCBDbGFzc0RlY2xhcmF0aW9uLCBDbGFzc0VsZW1lbnQsIENsYXNzTGlrZURlY2xhcmF0aW9uLCBDb21tZW50UmFuZ2UsIENvbXBpbGVySG9zdCwgQ29tcGlsZXJPcHRpb25zLCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLCBjcmVhdGVBcnJheUxpdGVyYWwsIGNyZWF0ZUFycmF5VHlwZU5vZGUsIGNyZWF0ZUNvbXBpbGVySG9zdCwgY3JlYXRlSWRlbnRpZmllciwgY3JlYXRlS2V5d29yZFR5cGVOb2RlLCBjcmVhdGVOb2RlQXJyYXksIGNyZWF0ZU5vdEVtaXR0ZWRTdGF0ZW1lbnQsIGNyZWF0ZU9iamVjdExpdGVyYWwsIGNyZWF0ZVByb2dyYW0sIGNyZWF0ZVByb3BlcnR5LCBjcmVhdGVQcm9wZXJ0eUFzc2lnbm1lbnQsIGNyZWF0ZVByb3BlcnR5U2lnbmF0dXJlLCBjcmVhdGVTb3VyY2VGaWxlLCBjcmVhdGVUb2tlbiwgY3JlYXRlVHlwZUxpdGVyYWxOb2RlLCBjcmVhdGVUeXBlUmVmZXJlbmNlTm9kZSwgQ3VzdG9tVHJhbnNmb3JtZXJzLCBEZWNsYXJhdGlvbiwgRGVjbGFyYXRpb25TdGF0ZW1lbnQsIERlY2xhcmF0aW9uV2l0aFR5cGVQYXJhbWV0ZXJzLCBEZWNvcmF0b3IsIERpYWdub3N0aWMsIERpYWdub3N0aWNDYXRlZ29yeSwgRWxlbWVudEFjY2Vzc0V4cHJlc3Npb24sIEVtaXRGbGFncywgRW1pdFJlc3VsdCwgRW50aXR5TmFtZSwgRW51bURlY2xhcmF0aW9uLCBFeHBvcnREZWNsYXJhdGlvbiwgRXhwb3J0U3BlY2lmaWVyLCBFeHByZXNzaW9uLCBFeHByZXNzaW9uU3RhdGVtZW50LCBmbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0LCBmb3JFYWNoQ2hpbGQsIEZ1bmN0aW9uRGVjbGFyYXRpb24sIEZ1bmN0aW9uTGlrZURlY2xhcmF0aW9uLCBHZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBnZXRDb21iaW5lZE1vZGlmaWVyRmxhZ3MsIGdldExlYWRpbmdDb21tZW50UmFuZ2VzLCBnZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbiwgZ2V0TXV0YWJsZUNsb25lLCBnZXRPcmlnaW5hbE5vZGUsIGdldFByZUVtaXREaWFnbm9zdGljcywgZ2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzLCBnZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzLCBnZXRUcmFpbGluZ0NvbW1lbnRSYW5nZXMsIElkZW50aWZpZXIsIEltcG9ydERlY2xhcmF0aW9uLCBJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiwgSW1wb3J0U3BlY2lmaWVyLCBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgaXNJZGVudGlmaWVyLCBNZXRob2REZWNsYXJhdGlvbiwgTW9kaWZpZXJGbGFncywgTW9kdWxlQmxvY2ssIE1vZHVsZURlY2xhcmF0aW9uLCBNb2R1bGVLaW5kLCBNb2R1bGVSZXNvbHV0aW9uSG9zdCwgTmFtZWREZWNsYXJhdGlvbiwgTmFtZWRJbXBvcnRzLCBOb2RlLCBOb2RlQXJyYXksIE5vZGVGbGFncywgTm9uTnVsbEV4cHJlc3Npb24sIE5vdEVtaXR0ZWRTdGF0ZW1lbnQsIE9iamVjdExpdGVyYWxFbGVtZW50TGlrZSwgT2JqZWN0TGl0ZXJhbEV4cHJlc3Npb24sIFBhcmFtZXRlckRlY2xhcmF0aW9uLCBwYXJzZUNvbW1hbmRMaW5lLCBwYXJzZUpzb25Db25maWdGaWxlQ29udGVudCwgUHJvZ3JhbSwgUHJvcGVydHlBY2Nlc3NFeHByZXNzaW9uLCBQcm9wZXJ0eUFzc2lnbm1lbnQsIFByb3BlcnR5RGVjbGFyYXRpb24sIFByb3BlcnR5TmFtZSwgUHJvcGVydHlTaWduYXR1cmUsIHJlYWRDb25maWdGaWxlLCByZXNvbHZlTW9kdWxlTmFtZSwgU2NyaXB0VGFyZ2V0LCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBzZXRFbWl0RmxhZ3MsIHNldE9yaWdpbmFsTm9kZSwgc2V0U291cmNlTWFwUmFuZ2UsIHNldFN5bnRoZXRpY0xlYWRpbmdDb21tZW50cywgc2V0U3ludGhldGljVHJhaWxpbmdDb21tZW50cywgc2V0VGV4dFJhbmdlLCBTaWduYXR1cmVEZWNsYXJhdGlvbiwgU291cmNlRmlsZSwgU3RhdGVtZW50LCBTdHJpbmdMaXRlcmFsLCBTeW1ib2wsIFN5bWJvbEZsYWdzLCBTeW50YXhLaW5kLCBTeW50aGVzaXplZENvbW1lbnQsIHN5cywgVG9rZW4sIFRyYW5zZm9ybWF0aW9uQ29udGV4dCwgVHJhbnNmb3JtZXIsIFRyYW5zZm9ybWVyRmFjdG9yeSwgVHlwZSwgVHlwZUFsaWFzRGVjbGFyYXRpb24sIFR5cGVDaGVja2VyLCBUeXBlRWxlbWVudCwgVHlwZUZsYWdzLCBUeXBlTm9kZSwgVHlwZVJlZmVyZW5jZSwgVW5pb25UeXBlLCB1cGRhdGVCbG9jaywgVmFyaWFibGVEZWNsYXJhdGlvbiwgVmFyaWFibGVTdGF0ZW1lbnQsIHZpc2l0RWFjaENoaWxkLCB2aXNpdExleGljYWxFbnZpcm9ubWVudCwgVmlzaXRvciwgV3JpdGVGaWxlQ2FsbGJhY2t9IGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vLyBnZXRFbWl0RmxhZ3MgaXMgbm93IHByaXZhdGUgc3RhcnRpbmcgaW4gVFMgMi41LlxuLy8gU28gd2UgZGVmaW5lIG91ciBvd24gbWV0aG9kIHRoYXQgY2FsbHMgdGhyb3VnaCB0byBUeXBlU2NyaXB0IHRvIGRlZmVhdCB0aGVcbi8vIHZpc2liaWxpdHkgY29uc3RyYWludC5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFbWl0RmxhZ3Mobm9kZTogdHMuTm9kZSk6IHRzLkVtaXRGbGFnc3x1bmRlZmluZWQge1xuICByZXR1cm4gKHRzIGFzIGFueSkuZ2V0RW1pdEZsYWdzKG5vZGUpO1xufVxuXG4vLyBCZXR3ZWVuIFR5cGVTY3JpcHQgMi40IGFuZCAyLjUgdXBkYXRlUHJvcGVydHkgd2FzIG1vZGlmaWVkLiBJZiBjYWxsZWQgd2l0aCAyLjQgcmUtb3JkZXIgdGhlXG4vLyBwYXJhbWV0ZXJzLlxuZXhwb3J0IGxldCB1cGRhdGVQcm9wZXJ0eSA9IHRzLnVwZGF0ZVByb3BlcnR5O1xuXG5jb25zdCBbbWFqb3IsIG1pbm9yXSA9IHRzLnZlcnNpb24uc3BsaXQoJy4nKTtcbmlmIChtYWpvciA9PT0gJzInICYmIG1pbm9yID09PSAnNCcpIHtcbiAgY29uc3QgdXBkYXRlUHJvcGVydHkyNCA9IHRzLnVwZGF0ZVByb3BlcnR5IGFzIGFueSBhcyB0eXBlb2YgdHMyNC51cGRhdGVQcm9wZXJ0eTtcbiAgdXBkYXRlUHJvcGVydHkgPSAobm9kZTogdHMuUHJvcGVydHlEZWNsYXJhdGlvbiwgZGVjb3JhdG9yczogUmVhZG9ubHlBcnJheTx0cy5EZWNvcmF0b3I+fHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgbW9kaWZpZXJzOiBSZWFkb25seUFycmF5PHRzLk1vZGlmaWVyPnx1bmRlZmluZWQsIG5hbWU6IHN0cmluZ3x0cy5Qcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uVG9rZW46IHRzLlF1ZXN0aW9uVG9rZW58dW5kZWZpbmVkLCB0eXBlOiB0cy5UeXBlTm9kZXx1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVyOiB0cy5FeHByZXNzaW9ufHVuZGVmaW5lZCk6IHRzLlByb3BlcnR5RGVjbGFyYXRpb24gPT4ge1xuICAgIHJldHVybiB1cGRhdGVQcm9wZXJ0eTI0KFxuICAgICAgICAgICAgICAgbm9kZSBhcyBhbnkgYXMgdHMyNC5Qcm9wZXJ0eURlY2xhcmF0aW9uLCBkZWNvcmF0b3JzIGFzIGFueSBhcyB0czI0LkRlY29yYXRvcltdLFxuICAgICAgICAgICAgICAgbW9kaWZpZXJzIGFzIGFueSwgbmFtZSBhcyBhbnksIHR5cGUgYXMgYW55LMKgaW5pdGlhbGl6ZXIgYXMgYW55KSBhcyBhbnk7XG4gIH07XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy90eXBlc2NyaXB0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRztBQUNIOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUVILCtFQUErRTtJQUUvRSwrQkFBaUM7SUFLakMseUNBQTh5RTtJQUE1eEUsbURBQUEsMkJBQTJCLENBQUE7SUFBNEwsMENBQUEsa0JBQWtCLENBQUE7SUFBRSwyQ0FBQSxtQkFBbUIsQ0FBQTtJQUFFLDBDQUFBLGtCQUFrQixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLHVDQUFBLGVBQWUsQ0FBQTtJQUFFLGlEQUFBLHlCQUF5QixDQUFBO0lBQUUsMkNBQUEsbUJBQW1CLENBQUE7SUFBRSxxQ0FBQSxhQUFhLENBQUE7SUFBRSxzQ0FBQSxjQUFjLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUsd0NBQUEsZ0JBQWdCLENBQUE7SUFBRSxtQ0FBQSxXQUFXLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQStHLDBDQUFBLGtCQUFrQixDQUFBO0lBQTJCLGlDQUFBLFNBQVMsQ0FBQTtJQUFnSCxvREFBQSw0QkFBNEIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUF3RSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFFLCtDQUFBLHVCQUF1QixDQUFBO0lBQUUscURBQUEsNkJBQTZCLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSx1Q0FBQSxlQUFlLENBQUE7SUFBRSw2Q0FBQSxxQkFBcUIsQ0FBQTtJQUFFLG1EQUFBLDJCQUEyQixDQUFBO0lBQUUsb0RBQUEsNEJBQTRCLENBQUE7SUFBRSxnREFBQSx3QkFBd0IsQ0FBQTtJQUFpRywyQ0FBQSxtQkFBbUIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUFxQixxQ0FBQSxhQUFhLENBQUE7SUFBa0Msa0NBQUEsVUFBVSxDQUFBO0lBQXlFLGlDQUFBLFNBQVMsQ0FBQTtJQUFtSCx3Q0FBQSxnQkFBZ0IsQ0FBQTtJQUFFLGtEQUFBLDBCQUEwQixDQUFBO0lBQStHLHNDQUFBLGNBQWMsQ0FBQTtJQUFFLHlDQUFBLGlCQUFpQixDQUFBO0lBQUUsb0NBQUEsWUFBWSxDQUFBO0lBQTBCLG9DQUFBLFlBQVksQ0FBQTtJQUFFLHVDQUFBLGVBQWUsQ0FBQTtJQUFFLHlDQUFBLGlCQUFpQixDQUFBO0lBQUUsbURBQUEsMkJBQTJCLENBQUE7SUFBRSxvREFBQSw0QkFBNEIsQ0FBQTtJQUFFLG9DQUFBLFlBQVksQ0FBQTtJQUFzRSxtQ0FBQSxXQUFXLENBQUE7SUFBRSxrQ0FBQSxVQUFVLENBQUE7SUFBc0IsMkJBQUEsR0FBRyxDQUFBO0lBQXVILGlDQUFBLFNBQVMsQ0FBQTtJQUFzQyxtQ0FBQSxXQUFXLENBQUE7SUFBMEMsc0NBQUEsY0FBYyxDQUFBO0lBQUUsK0NBQUEsdUJBQXVCLENBQUE7SUFFOXZFLGtEQUFrRDtJQUNsRCw2RUFBNkU7SUFDN0UseUJBQXlCO0lBQ3pCLHNCQUE2QixJQUFhO1FBQ3hDLE1BQU0sQ0FBRSxFQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFGRCxvQ0FFQztJQUVELDhGQUE4RjtJQUM5RixjQUFjO0lBQ0gsUUFBQSxjQUFjLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQztJQUV4QyxJQUFBLHFDQUFzQyxFQUFyQyxhQUFLLEVBQUUsYUFBSyxDQUEwQjtJQUM3QyxFQUFFLENBQUMsQ0FBQyxLQUFLLEtBQUssR0FBRyxJQUFJLEtBQUssS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ25DLElBQU0sa0JBQWdCLEdBQUcsRUFBRSxDQUFDLGNBQW1ELENBQUM7UUFDaEYsc0JBQWMsR0FBRyxVQUFDLElBQTRCLEVBQUUsVUFBaUQsRUFDL0UsU0FBK0MsRUFBRSxJQUE0QixFQUM3RSxhQUF5QyxFQUFFLElBQTJCLEVBQ3RFLFdBQW9DO1lBQ3BELE1BQU0sQ0FBQyxrQkFBZ0IsQ0FDWixJQUF1QyxFQUFFLFVBQXFDLEVBQzlFLFNBQWdCLEVBQUUsSUFBVyxFQUFFLElBQVcsRUFBRSxXQUFrQixDQUFRLENBQUM7UUFDcEYsQ0FBQyxDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cbi8qKlxuICogQGZpbGVvdmVydmlldyBBYnN0cmFjdGlvbiBvdmVyIHRoZSBUeXBlU2NyaXB0IEFQSSB0aGF0IG1ha2VzIG11bHRpcGxlXG4gKiB2ZXJzaW9ucyBvZiBUeXBlU2NyaXB0IGFwcGVhciB0byBiZSBpbnRlcm9wZXJhYmxlLiBBbnkgdGltZSBhIGJyZWFraW5nIGNoYW5nZVxuICogaW4gVHlwZVNjcmlwdCBhZmZlY3RzIFRzaWNrbGUgY29kZSwgd2Ugc2hvdWxkIGV4dGVuZCB0aGlzIHNoaW0gdG8gcHJlc2VudCBhblxuICogdW5icm9rZW4gQVBJLlxuICogQWxsIGNvZGUgaW4gdHNpY2tsZSBzaG91bGQgaW1wb3J0IGZyb20gdGhpcyBsb2NhdGlvbiwgbm90IGZyb20gJ3R5cGVzY3JpcHQnLlxuICovXG5cbi8vIHRzbGludDpkaXNhYmxlOm5vLWFueSBXZSBuZWVkIHRvIGRvIHZhcmlvdXMgdW5zYWZlIGNhc3RzIGJldHdlZW4gVFMgdmVyc2lvbnNcblxuaW1wb3J0ICogYXMgdHMgZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8vIE5vdGUsIHRoaXMgaW1wb3J0IGRlcGVuZHMgb24gYSBnZW5ydWxlIGNvcHlpbmcgdGhlIC5kLnRzIGZpbGUgdG8gdGhpcyBwYWNrYWdlXG5pbXBvcnQgKiBhcyB0czI0IGZyb20gJy4vdHlwZXNjcmlwdC0yLjQnO1xuXG5leHBvcnQge19fU3RyaW5nLCBhZGRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnQsIEFzc2VydGlvbkV4cHJlc3Npb24sIEJsb2NrLCBDYWxsRXhwcmVzc2lvbiwgQ2FuY2VsbGF0aW9uVG9rZW4sIENsYXNzRGVjbGFyYXRpb24sIENsYXNzRWxlbWVudCwgQ2xhc3NMaWtlRGVjbGFyYXRpb24sIENvbW1lbnRSYW5nZSwgQ29tcGlsZXJIb3N0LCBDb21waWxlck9wdGlvbnMsIENvbnN0cnVjdG9yRGVjbGFyYXRpb24sIGNyZWF0ZUFycmF5TGl0ZXJhbCwgY3JlYXRlQXJyYXlUeXBlTm9kZSwgY3JlYXRlQ29tcGlsZXJIb3N0LCBjcmVhdGVJZGVudGlmaWVyLCBjcmVhdGVLZXl3b3JkVHlwZU5vZGUsIGNyZWF0ZU5vZGVBcnJheSwgY3JlYXRlTm90RW1pdHRlZFN0YXRlbWVudCwgY3JlYXRlT2JqZWN0TGl0ZXJhbCwgY3JlYXRlUHJvZ3JhbSwgY3JlYXRlUHJvcGVydHksIGNyZWF0ZVByb3BlcnR5QXNzaWdubWVudCwgY3JlYXRlUHJvcGVydHlTaWduYXR1cmUsIGNyZWF0ZVNvdXJjZUZpbGUsIGNyZWF0ZVRva2VuLCBjcmVhdGVUeXBlTGl0ZXJhbE5vZGUsIGNyZWF0ZVR5cGVSZWZlcmVuY2VOb2RlLCBDdXN0b21UcmFuc2Zvcm1lcnMsIERlY2xhcmF0aW9uLCBEZWNsYXJhdGlvblN0YXRlbWVudCwgRGVjbGFyYXRpb25XaXRoVHlwZVBhcmFtZXRlcnMsIERlY29yYXRvciwgRGlhZ25vc3RpYywgRGlhZ25vc3RpY0NhdGVnb3J5LCBFbGVtZW50QWNjZXNzRXhwcmVzc2lvbiwgRW1pdEZsYWdzLCBFbWl0UmVzdWx0LCBFbnRpdHlOYW1lLCBFbnVtRGVjbGFyYXRpb24sIEV4cG9ydERlY2xhcmF0aW9uLCBFeHBvcnRTcGVjaWZpZXIsIEV4cHJlc3Npb24sIEV4cHJlc3Npb25TdGF0ZW1lbnQsIGZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQsIGZvckVhY2hDaGlsZCwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgRnVuY3Rpb25MaWtlRGVjbGFyYXRpb24sIEdldEFjY2Vzc29yRGVjbGFyYXRpb24sIGdldENvbWJpbmVkTW9kaWZpZXJGbGFncywgZ2V0TGVhZGluZ0NvbW1lbnRSYW5nZXMsIGdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uLCBnZXRNdXRhYmxlQ2xvbmUsIGdldE9yaWdpbmFsTm9kZSwgZ2V0UHJlRW1pdERpYWdub3N0aWNzLCBnZXRTeW50aGV0aWNMZWFkaW5nQ29tbWVudHMsIGdldFN5bnRoZXRpY1RyYWlsaW5nQ29tbWVudHMsIGdldFRyYWlsaW5nQ29tbWVudFJhbmdlcywgSWRlbnRpZmllciwgSW1wb3J0RGVjbGFyYXRpb24sIEltcG9ydEVxdWFsc0RlY2xhcmF0aW9uLCBJbXBvcnRTcGVjaWZpZXIsIEludGVyZmFjZURlY2xhcmF0aW9uLCBpc0V4cG9ydERlY2xhcmF0aW9uLCBpc0lkZW50aWZpZXIsIE1ldGhvZERlY2xhcmF0aW9uLCBNb2RpZmllckZsYWdzLCBNb2R1bGVCbG9jaywgTW9kdWxlRGVjbGFyYXRpb24sIE1vZHVsZUtpbmQsIE1vZHVsZVJlc29sdXRpb25Ib3N0LCBOYW1lZERlY2xhcmF0aW9uLCBOYW1lZEltcG9ydHMsIE5vZGUsIE5vZGVBcnJheSwgTm9kZUZsYWdzLCBOb25OdWxsRXhwcmVzc2lvbiwgTm90RW1pdHRlZFN0YXRlbWVudCwgT2JqZWN0TGl0ZXJhbEVsZW1lbnRMaWtlLCBPYmplY3RMaXRlcmFsRXhwcmVzc2lvbiwgUGFyYW1ldGVyRGVjbGFyYXRpb24sIHBhcnNlQ29tbWFuZExpbmUsIHBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50LCBQcm9ncmFtLCBQcm9wZXJ0eUFjY2Vzc0V4cHJlc3Npb24sIFByb3BlcnR5QXNzaWdubWVudCwgUHJvcGVydHlEZWNsYXJhdGlvbiwgUHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNpZ25hdHVyZSwgcmVhZENvbmZpZ0ZpbGUsIHJlc29sdmVNb2R1bGVOYW1lLCBTY3JpcHRUYXJnZXQsIFNldEFjY2Vzc29yRGVjbGFyYXRpb24sIHNldEVtaXRGbGFncywgc2V0T3JpZ2luYWxOb2RlLCBzZXRTb3VyY2VNYXBSYW5nZSwgc2V0U3ludGhldGljTGVhZGluZ0NvbW1lbnRzLCBzZXRTeW50aGV0aWNUcmFpbGluZ0NvbW1lbnRzLCBzZXRUZXh0UmFuZ2UsIFNpZ25hdHVyZURlY2xhcmF0aW9uLCBTb3VyY2VGaWxlLCBTdGF0ZW1lbnQsIFN0cmluZ0xpdGVyYWwsIFN5bWJvbCwgU3ltYm9sRmxhZ3MsIFN5bnRheEtpbmQsIFN5bnRoZXNpemVkQ29tbWVudCwgc3lzLCBUb2tlbiwgVHJhbnNmb3JtYXRpb25Db250ZXh0LCBUcmFuc2Zvcm1lciwgVHJhbnNmb3JtZXJGYWN0b3J5LCBUeXBlLCBUeXBlQWxpYXNEZWNsYXJhdGlvbiwgVHlwZUNoZWNrZXIsIFR5cGVFbGVtZW50LCBUeXBlRmxhZ3MsIFR5cGVOb2RlLCBUeXBlUmVmZXJlbmNlLCBVbmlvblR5cGUsIHVwZGF0ZUJsb2NrLCBWYXJpYWJsZURlY2xhcmF0aW9uLCBWYXJpYWJsZVN0YXRlbWVudCwgdmlzaXRFYWNoQ2hpbGQsIHZpc2l0TGV4aWNhbEVudmlyb25tZW50LCBWaXNpdG9yLCBXcml0ZUZpbGVDYWxsYmFja30gZnJvbSAndHlwZXNjcmlwdCc7XG5cbi8vIGdldEVtaXRGbGFncyBpcyBub3cgcHJpdmF0ZSBzdGFydGluZyBpbiBUUyAyLjUuXG4vLyBTbyB3ZSBkZWZpbmUgb3VyIG93biBtZXRob2QgdGhhdCBjYWxscyB0aHJvdWdoIHRvIFR5cGVTY3JpcHQgdG8gZGVmZWF0IHRoZVxuLy8gdmlzaWJpbGl0eSBjb25zdHJhaW50LlxuZXhwb3J0IGZ1bmN0aW9uIGdldEVtaXRGbGFncyhub2RlOiB0cy5Ob2RlKTogdHMuRW1pdEZsYWdzfHVuZGVmaW5lZCB7XG4gIHJldHVybiAodHMgYXMgYW55KS5nZXRFbWl0RmxhZ3Mobm9kZSk7XG59XG5cbi8vIEJldHdlZW4gVHlwZVNjcmlwdCAyLjQgYW5kIDIuNSB1cGRhdGVQcm9wZXJ0eSB3YXMgbW9kaWZpZWQuIElmIGNhbGxlZCB3aXRoIDIuNCByZS1vcmRlciB0aGVcbi8vIHBhcmFtZXRlcnMuXG5leHBvcnQgbGV0IHVwZGF0ZVByb3BlcnR5ID0gdHMudXBkYXRlUHJvcGVydHk7XG5cbmNvbnN0IFttYWpvciwgbWlub3JdID0gdHMudmVyc2lvbi5zcGxpdCgnLicpO1xuaWYgKG1ham9yID09PSAnMicgJiYgbWlub3IgPT09ICc0Jykge1xuICBjb25zdCB1cGRhdGVQcm9wZXJ0eTI0ID0gdHMudXBkYXRlUHJvcGVydHkgYXMgYW55IGFzIHR5cGVvZiB0czI0LnVwZGF0ZVByb3BlcnR5O1xuICB1cGRhdGVQcm9wZXJ0eSA9IChub2RlOiB0cy5Qcm9wZXJ0eURlY2xhcmF0aW9uLCBkZWNvcmF0b3JzOiBSZWFkb25seUFycmF5PHRzLkRlY29yYXRvcj58dW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICBtb2RpZmllcnM6IFJlYWRvbmx5QXJyYXk8dHMuTW9kaWZpZXI+fHVuZGVmaW5lZCwgbmFtZTogc3RyaW5nfHRzLlByb3BlcnR5TmFtZSxcbiAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25Ub2tlbjogdHMuUXVlc3Rpb25Ub2tlbnx1bmRlZmluZWQsIHR5cGU6IHRzLlR5cGVOb2RlfHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZXI6IHRzLkV4cHJlc3Npb258dW5kZWZpbmVkKTogdHMuUHJvcGVydHlEZWNsYXJhdGlvbiA9PiB7XG4gICAgcmV0dXJuIHVwZGF0ZVByb3BlcnR5MjQoXG4gICAgICAgICAgICAgICBub2RlIGFzIGFueSBhcyB0czI0LlByb3BlcnR5RGVjbGFyYXRpb24sIGRlY29yYXRvcnMgYXMgYW55IGFzIHRzMjQuRGVjb3JhdG9yW10sXG4gICAgICAgICAgICAgICBtb2RpZmllcnMgYXMgYW55LCBuYW1lIGFzIGFueSwgdHlwZSBhcyBhbnkswqBpbml0aWFsaXplciBhcyBhbnkpIGFzIGFueTtcbiAgfTtcbn1cbiJdfQ==

@@ -71,2 +71,2 @@ /**

});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXdEO0lBQ3hELDBEQUEwRDtJQUMxRCxnQ0FBZ0M7SUFFaEMsK0JBQWlDO0lBRWpDOzs7OztPQUtHO0lBQ0gsMkNBQ0ksZ0JBQXFDLEVBQUUsUUFBeUI7UUFDbEUsTUFBTSxDQUFDO1lBQ0wsYUFBYSxlQUFBO1lBQ2Isb0JBQW9CLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtZQUNuRCxxQkFBcUIsRUFBRSxRQUFRLENBQUMscUJBQXFCO1lBQ3JELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixtQkFBbUIsRUFBRSxRQUFRLENBQUMsbUJBQW1CO1lBQ2pELG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxvQkFBb0I7WUFDbkQseUJBQXlCLEVBQUUsUUFBUSxDQUFDLHlCQUF5QjtZQUM3RCxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDL0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixlQUFlLEVBQUUsUUFBUSxDQUFDLGVBQWU7WUFDekMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO1NBQ3hDLENBQUM7UUFFRix1QkFDSSxRQUFnQixFQUFFLGVBQWdDLEVBQ2xELE9BQW1DO1lBQ3JDLElBQU0sSUFBSSxHQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELElBQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBM0JELDhFQTJCQztJQUVEOztPQUVHO0lBQ0gsOEJBQXFDLEtBQWE7UUFDaEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFGRCxvREFFQztJQUVELGdFQUFnRTtJQUNoRSx5QkFBZ0MsSUFBYSxFQUFFLElBQXNCO1FBQ25FLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUZELDBDQUVDO0lBRUQsdUJBQThCLFFBQWdCO1FBQzVDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFGRCxzQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gdG9BcnJheSBpcyBhIHRlbXBvcmFyeSBmdW5jdGlvbiB0byBoZWxwIGluIHRoZSB1c2Ugb2Zcbi8vIEVTNiBtYXBzIGFuZCBzZXRzIHdoZW4gcnVubmluZyBvbiBub2RlIDQsIHdoaWNoIGRvZXNuJ3Rcbi8vIHN1cHBvcnQgSXRlcmF0b3JzIGNvbXBsZXRlbHkuXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgdHMuQ29tcGlsZXJIb3N0IHRoYXQgb3ZlcmxheXMgc291cmNlcyBpbiBzdWJzdGl0dXRlU291cmNlXG4gKiBvdmVyIGFub3RoZXIgdHMuQ29tcGlsZXJIb3N0LlxuICpcbiAqIEBwYXJhbSBzdWJzdGl0dXRlU291cmNlIEEgbWFwIG9mIHNvdXJjZSBmaWxlIG5hbWUgLT4gb3ZlcmxheSBzb3VyY2UgdGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNvdXJjZVJlcGxhY2luZ0NvbXBpbGVySG9zdChcbiAgICBzdWJzdGl0dXRlU291cmNlOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBkZWxlZ2F0ZTogdHMuQ29tcGlsZXJIb3N0KTogdHMuQ29tcGlsZXJIb3N0IHtcbiAgcmV0dXJuIHtcbiAgICBnZXRTb3VyY2VGaWxlLFxuICAgIGdldENhbmNlbGxhdGlvblRva2VuOiBkZWxlZ2F0ZS5nZXRDYW5jZWxsYXRpb25Ub2tlbixcbiAgICBnZXREZWZhdWx0TGliRmlsZU5hbWU6IGRlbGVnYXRlLmdldERlZmF1bHRMaWJGaWxlTmFtZSxcbiAgICB3cml0ZUZpbGU6IGRlbGVnYXRlLndyaXRlRmlsZSxcbiAgICBnZXRDdXJyZW50RGlyZWN0b3J5OiBkZWxlZ2F0ZS5nZXRDdXJyZW50RGlyZWN0b3J5LFxuICAgIGdldENhbm9uaWNhbEZpbGVOYW1lOiBkZWxlZ2F0ZS5nZXRDYW5vbmljYWxGaWxlTmFtZSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBkZWxlZ2F0ZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzLFxuICAgIGdldE5ld0xpbmU6IGRlbGVnYXRlLmdldE5ld0xpbmUsXG4gICAgZmlsZUV4aXN0czogZGVsZWdhdGUuZmlsZUV4aXN0cyxcbiAgICByZWFkRmlsZTogZGVsZWdhdGUucmVhZEZpbGUsXG4gICAgZGlyZWN0b3J5RXhpc3RzOiBkZWxlZ2F0ZS5kaXJlY3RvcnlFeGlzdHMsXG4gICAgZ2V0RGlyZWN0b3JpZXM6IGRlbGVnYXRlLmdldERpcmVjdG9yaWVzLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGdldFNvdXJjZUZpbGUoXG4gICAgICBmaWxlTmFtZTogc3RyaW5nLCBsYW5ndWFnZVZlcnNpb246IHRzLlNjcmlwdFRhcmdldCxcbiAgICAgIG9uRXJyb3I/OiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogdHMuU291cmNlRmlsZSB7XG4gICAgY29uc3QgcGF0aDogc3RyaW5nID0gdHMuc3lzLnJlc29sdmVQYXRoKGZpbGVOYW1lKTtcbiAgICBjb25zdCBzb3VyY2VUZXh0ID0gc3Vic3RpdHV0ZVNvdXJjZS5nZXQocGF0aCk7XG4gICAgaWYgKHNvdXJjZVRleHQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRzLmNyZWF0ZVNvdXJjZUZpbGUoZmlsZU5hbWUsIHNvdXJjZVRleHQsIGxhbmd1YWdlVmVyc2lvbik7XG4gICAgfVxuICAgIHJldHVybiBkZWxlZ2F0ZS5nZXRTb3VyY2VGaWxlKHBhdGgsIGxhbmd1YWdlVmVyc2lvbiwgb25FcnJvcik7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBpbnB1dCBzdHJpbmcgd2l0aCBsaW5lIGVuZGluZ3Mgbm9ybWFsaXplZCB0byAnXFxuJy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUxpbmVFbmRpbmdzKGlucHV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvXFxyXFxuL2csICdcXG4nKTtcbn1cblxuLyoqIEByZXR1cm4gdHJ1ZSBpZiBub2RlIGhhcyB0aGUgc3BlY2lmaWVkIG1vZGlmaWVyIGZsYWcgc2V0LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhc01vZGlmaWVyRmxhZyhub2RlOiB0cy5Ob2RlLCBmbGFnOiB0cy5Nb2RpZmllckZsYWdzKTogYm9vbGVhbiB7XG4gIHJldHVybiAodHMuZ2V0Q29tYmluZWRNb2RpZmllckZsYWdzKG5vZGUpICYgZmxhZykgIT09IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0R0c0ZpbGVOYW1lKGZpbGVOYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9cXC5kXFwudHMkLy50ZXN0KGZpbGVOYW1lKTtcbn1cbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7R0FNRzs7Ozs7Ozs7Ozs7O0lBRUgsd0RBQXdEO0lBQ3hELDBEQUEwRDtJQUMxRCxnQ0FBZ0M7SUFFaEMsK0JBQWlDO0lBRWpDOzs7OztPQUtHO0lBQ0gsMkNBQ0ksZ0JBQXFDLEVBQUUsUUFBeUI7UUFDbEUsTUFBTSxDQUFDO1lBQ0wsYUFBYSxlQUFBO1lBQ2Isb0JBQW9CLEVBQUUsUUFBUSxDQUFDLG9CQUFvQjtZQUNuRCxxQkFBcUIsRUFBRSxRQUFRLENBQUMscUJBQXFCO1lBQ3JELFNBQVMsRUFBRSxRQUFRLENBQUMsU0FBUztZQUM3QixtQkFBbUIsRUFBRSxRQUFRLENBQUMsbUJBQW1CO1lBQ2pELG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxvQkFBb0I7WUFDbkQseUJBQXlCLEVBQUUsUUFBUSxDQUFDLHlCQUF5QjtZQUM3RCxVQUFVLEVBQUUsUUFBUSxDQUFDLFVBQVU7WUFDL0IsVUFBVSxFQUFFLFFBQVEsQ0FBQyxVQUFVO1lBQy9CLFFBQVEsRUFBRSxRQUFRLENBQUMsUUFBUTtZQUMzQixlQUFlLEVBQUUsUUFBUSxDQUFDLGVBQWU7WUFDekMsY0FBYyxFQUFFLFFBQVEsQ0FBQyxjQUFjO1NBQ3hDLENBQUM7UUFFRix1QkFDSSxRQUFnQixFQUFFLGVBQWdDLEVBQ2xELE9BQW1DO1lBQ3JDLElBQU0sSUFBSSxHQUFXLEVBQUUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ2xELElBQU0sVUFBVSxHQUFHLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUM5QyxFQUFFLENBQUMsQ0FBQyxVQUFVLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQztnQkFDN0IsTUFBTSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1lBQ3BFLENBQUM7WUFDRCxNQUFNLENBQUMsUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ2hFLENBQUM7SUFDSCxDQUFDO0lBM0JELDhFQTJCQztJQUVEOztPQUVHO0lBQ0gsOEJBQXFDLEtBQWE7UUFDaEQsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFGRCxvREFFQztJQUVELGdFQUFnRTtJQUNoRSx5QkFBZ0MsSUFBYSxFQUFFLElBQXNCO1FBQ25FLE1BQU0sQ0FBQyxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDMUQsQ0FBQztJQUZELDBDQUVDO0lBRUQsdUJBQThCLFFBQWdCO1FBQzVDLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFGRCxzQ0FFQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gdG9BcnJheSBpcyBhIHRlbXBvcmFyeSBmdW5jdGlvbiB0byBoZWxwIGluIHRoZSB1c2Ugb2Zcbi8vIEVTNiBtYXBzIGFuZCBzZXRzIHdoZW4gcnVubmluZyBvbiBub2RlIDQsIHdoaWNoIGRvZXNuJ3Rcbi8vIHN1cHBvcnQgSXRlcmF0b3JzIGNvbXBsZXRlbHkuXG5cbmltcG9ydCAqIGFzIHRzIGZyb20gJ3R5cGVzY3JpcHQnO1xuXG4vKipcbiAqIENvbnN0cnVjdHMgYSBuZXcgdHMuQ29tcGlsZXJIb3N0IHRoYXQgb3ZlcmxheXMgc291cmNlcyBpbiBzdWJzdGl0dXRlU291cmNlXG4gKiBvdmVyIGFub3RoZXIgdHMuQ29tcGlsZXJIb3N0LlxuICpcbiAqIEBwYXJhbSBzdWJzdGl0dXRlU291cmNlIEEgbWFwIG9mIHNvdXJjZSBmaWxlIG5hbWUgLT4gb3ZlcmxheSBzb3VyY2UgdGV4dC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVNvdXJjZVJlcGxhY2luZ0NvbXBpbGVySG9zdChcbiAgICBzdWJzdGl0dXRlU291cmNlOiBNYXA8c3RyaW5nLCBzdHJpbmc+LCBkZWxlZ2F0ZTogdHMuQ29tcGlsZXJIb3N0KTogdHMuQ29tcGlsZXJIb3N0IHtcbiAgcmV0dXJuIHtcbiAgICBnZXRTb3VyY2VGaWxlLFxuICAgIGdldENhbmNlbGxhdGlvblRva2VuOiBkZWxlZ2F0ZS5nZXRDYW5jZWxsYXRpb25Ub2tlbixcbiAgICBnZXREZWZhdWx0TGliRmlsZU5hbWU6IGRlbGVnYXRlLmdldERlZmF1bHRMaWJGaWxlTmFtZSxcbiAgICB3cml0ZUZpbGU6IGRlbGVnYXRlLndyaXRlRmlsZSxcbiAgICBnZXRDdXJyZW50RGlyZWN0b3J5OiBkZWxlZ2F0ZS5nZXRDdXJyZW50RGlyZWN0b3J5LFxuICAgIGdldENhbm9uaWNhbEZpbGVOYW1lOiBkZWxlZ2F0ZS5nZXRDYW5vbmljYWxGaWxlTmFtZSxcbiAgICB1c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzOiBkZWxlZ2F0ZS51c2VDYXNlU2Vuc2l0aXZlRmlsZU5hbWVzLFxuICAgIGdldE5ld0xpbmU6IGRlbGVnYXRlLmdldE5ld0xpbmUsXG4gICAgZmlsZUV4aXN0czogZGVsZWdhdGUuZmlsZUV4aXN0cyxcbiAgICByZWFkRmlsZTogZGVsZWdhdGUucmVhZEZpbGUsXG4gICAgZGlyZWN0b3J5RXhpc3RzOiBkZWxlZ2F0ZS5kaXJlY3RvcnlFeGlzdHMsXG4gICAgZ2V0RGlyZWN0b3JpZXM6IGRlbGVnYXRlLmdldERpcmVjdG9yaWVzLFxuICB9O1xuXG4gIGZ1bmN0aW9uIGdldFNvdXJjZUZpbGUoXG4gICAgICBmaWxlTmFtZTogc3RyaW5nLCBsYW5ndWFnZVZlcnNpb246IHRzLlNjcmlwdFRhcmdldCxcbiAgICAgIG9uRXJyb3I/OiAobWVzc2FnZTogc3RyaW5nKSA9PiB2b2lkKTogdHMuU291cmNlRmlsZXx1bmRlZmluZWQge1xuICAgIGNvbnN0IHBhdGg6IHN0cmluZyA9IHRzLnN5cy5yZXNvbHZlUGF0aChmaWxlTmFtZSk7XG4gICAgY29uc3Qgc291cmNlVGV4dCA9IHN1YnN0aXR1dGVTb3VyY2UuZ2V0KHBhdGgpO1xuICAgIGlmIChzb3VyY2VUZXh0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0cy5jcmVhdGVTb3VyY2VGaWxlKGZpbGVOYW1lLCBzb3VyY2VUZXh0LCBsYW5ndWFnZVZlcnNpb24pO1xuICAgIH1cbiAgICByZXR1cm4gZGVsZWdhdGUuZ2V0U291cmNlRmlsZShwYXRoLCBsYW5ndWFnZVZlcnNpb24sIG9uRXJyb3IpO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgaW5wdXQgc3RyaW5nIHdpdGggbGluZSBlbmRpbmdzIG5vcm1hbGl6ZWQgdG8gJ1xcbicuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVMaW5lRW5kaW5ncyhpbnB1dDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGlucHV0LnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG59XG5cbi8qKiBAcmV0dXJuIHRydWUgaWYgbm9kZSBoYXMgdGhlIHNwZWNpZmllZCBtb2RpZmllciBmbGFnIHNldC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBoYXNNb2RpZmllckZsYWcobm9kZTogdHMuTm9kZSwgZmxhZzogdHMuTW9kaWZpZXJGbGFncyk6IGJvb2xlYW4ge1xuICByZXR1cm4gKHRzLmdldENvbWJpbmVkTW9kaWZpZXJGbGFncyhub2RlKSAmIGZsYWcpICE9PSAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNEdHNGaWxlTmFtZShmaWxlTmFtZTogc3RyaW5nKTogYm9vbGVhbiB7XG4gIHJldHVybiAvXFwuZFxcLnRzJC8udGVzdChmaWxlTmFtZSk7XG59XG4iXX0=

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc