highmark-markdown 1.0.46 → 1.0.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/example.js +5 -8
- package/lib/example/importer.js +2 -2
- package/lib/node/markdown.js +1 -1
- package/lib/utilities/index.js +3 -6
- package/package.json +2 -2
- package/src/example/importer.js +1 -8
- package/src/utilities/index.js +4 -6
package/lib/example/importer.js
CHANGED
|
@@ -49,8 +49,8 @@ function classNameFromFilePath(filePath) {
|
|
|
49
49
|
}
|
|
50
50
|
var INDEX_PATH = "index.md", CONTENT_PATH = "content.md", CONTENTS_PATH = "contents.md", HALF_TITLE_PATH = "half-title.md", FRONT_MATTER_PATH = "front-matter.md", INTRODUCTION_PATH = "introduction.md", GETTING_STARTED_PATH = "getting-started.md", INSTALLING_THE_CLI_PATH = "installing-the-cli.md", GETTING_TO_GRIPS_WITH_THE_IDE_PATH = "getting-to-grips-with-the-ide.md";
|
|
51
51
|
var defaultContent = "@ignore\n\n@include ".concat(FRONT_MATTER_PATH, "\n@include ").concat(CONTENT_PATH, "\n@include ").concat(INDEX_PATH, "\n");
|
|
52
|
-
var indexContent = "## Index\n\n@index", contentContent = "@ignore\n\n@include ".concat(INTRODUCTION_PATH, "\n@include ").concat(GETTING_STARTED_PATH), contentsContent = "## Contents\n\n@contents", halfTitleContent = "# Occam", frontMatterContent = "@ignore\n\n@include ".concat(HALF_TITLE_PATH, "\n@include ").concat(CONTENTS_PATH), introductionContent = "# Introduction\n \
|
|
52
|
+
var indexContent = "## Index\n\n@index", contentContent = "@ignore\n\n@include ".concat(INTRODUCTION_PATH, "\n@include ").concat(GETTING_STARTED_PATH), contentsContent = "## Contents\n\n@contents", halfTitleContent = "# Occam", frontMatterContent = "@ignore\n\n@include ".concat(HALF_TITLE_PATH, "\n@include ").concat(CONTENTS_PATH), introductionContent = "# Introduction\n \nConstructor.\n\n@footnotes\n\n@pageNumber\n", gettingStartedContent = "# Getting started\n \nAnother short paragraph with a reference to a footnote[^occam].\n\n[^occam]: The word Occam is used somewhat nebulously here.\nIt is most often associated with Occam's IDE but in fact it encompasses a range of software and services.\nThis book explains these divers parts and there is a companion book, called The Foundations of Symbolic Reasoning, that covers the underlying theory.\n\n[^florence]: Occam was originally called Florence but the former seemed more apt.\n\n@footnotes\n\n@embed ".concat(INSTALLING_THE_CLI_PATH, "\n@embed ").concat(GETTING_TO_GRIPS_WITH_THE_IDE_PATH, "\n\n@pageNumber\n"), installingTheCLIContent = "## Installing the CLI\n", gettingToGripsWithTheIDEIContent = "## Getting to grips with the IDE\n \n* An unordered list to test...\n* ...the indexing.\n \n1. As well as an...\n2. ...ordered list.\n \n";
|
|
53
53
|
var _obj;
|
|
54
54
|
var contentMap = (_obj = {}, _define_property(_obj, INDEX_PATH, indexContent), _define_property(_obj, CONTENT_PATH, contentContent), _define_property(_obj, CONTENTS_PATH, contentsContent), _define_property(_obj, HALF_TITLE_PATH, halfTitleContent), _define_property(_obj, FRONT_MATTER_PATH, frontMatterContent), _define_property(_obj, INTRODUCTION_PATH, introductionContent), _define_property(_obj, GETTING_STARTED_PATH, gettingStartedContent), _define_property(_obj, INSTALLING_THE_CLI_PATH, installingTheCLIContent), _define_property(_obj, GETTING_TO_GRIPS_WITH_THE_IDE_PATH, gettingToGripsWithTheIDEIContent), _obj);
|
|
55
55
|
|
|
56
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
56
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leGFtcGxlL2ltcG9ydGVyLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBNYXJrZG93bkxleGVyLCBNYXJrZG93blBhcnNlciB9IGZyb20gXCIuLi9pbmRleFwiO1xuXG5pbXBvcnQgeyBFTVBUWV9TVFJJTkcgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcblxuY29uc3QgbWFya2Rvd25MZXhlciA9IE1hcmtkb3duTGV4ZXIuZnJvbU5vdGhpbmcoKSxcbiAgICAgIG1hcmtkb3duUGFyc2VyID0gTWFya2Rvd25QYXJzZXIuZnJvbU5vdGhpbmcoKTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gaW1wb3J0ZXIoZmlsZVBhdGgsIGNvbnRleHQpIHtcbiAgY29uc3QgY29udGVudCA9IGNvbnRlbnRNYXBbZmlsZVBhdGhdIHx8IG51bGw7XG5cbiAgaWYgKGNvbnRlbnQgIT09IG51bGwpIHtcbiAgICBjb25zdCBzdGFydE9mQ29udGVudCA9IHRydWUsXG4gICAgICAgICAgc3RhcnRSdWxlID0gbWFya2Rvd25QYXJzZXIuZ2V0U3RhcnRSdWxlKCksXG4gICAgICAgICAgdG9rZW5zID0gbWFya2Rvd25MZXhlci50b2tlbmlzZShjb250ZW50KSxcbiAgICAgICAgICBub2RlID0gbWFya2Rvd25QYXJzZXIucGFyc2UodG9rZW5zLCBzdGFydFJ1bGUsIHN0YXJ0T2ZDb250ZW50KSxcbiAgICAgICAgICBpbXBvcnRlZE5vZGUgPSBub2RlLCAgLy8vXG4gICAgICAgICAgaW1wb3J0ZWRUb2tlbnMgPSB0b2tlbnMsXG4gICAgICAgICAgaW1wb3J0ZWRDbGFzc05hbWUgPSBjbGFzc05hbWVGcm9tRmlsZVBhdGgoZmlsZVBhdGgpO1xuXG4gICAgT2JqZWN0LmFzc2lnbihjb250ZXh0LCB7XG4gICAgICBpbXBvcnRlZE5vZGUsXG4gICAgICBpbXBvcnRlZFRva2VucyxcbiAgICAgIGltcG9ydGVkQ2xhc3NOYW1lXG4gICAgfSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY2xhc3NOYW1lRnJvbUZpbGVQYXRoKGZpbGVQYXRoKSB7XG4gIGNvbnN0IGNsYXNzTmFtZSA9IGZpbGVQYXRoLnJlcGxhY2UoL1xcLm1kLywgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gY2xhc3NOYW1lO1xufVxuXG5jb25zdCBJTkRFWF9QQVRIID0gXCJpbmRleC5tZFwiLFxuICAgICAgQ09OVEVOVF9QQVRIID0gXCJjb250ZW50Lm1kXCIsXG4gICAgICBDT05URU5UU19QQVRIID0gXCJjb250ZW50cy5tZFwiLFxuICAgICAgSEFMRl9USVRMRV9QQVRIID0gXCJoYWxmLXRpdGxlLm1kXCIsXG4gICAgICBGUk9OVF9NQVRURVJfUEFUSCA9IFwiZnJvbnQtbWF0dGVyLm1kXCIsXG4gICAgICBJTlRST0RVQ1RJT05fUEFUSCA9IFwiaW50cm9kdWN0aW9uLm1kXCIsXG4gICAgICBHRVRUSU5HX1NUQVJURURfUEFUSCA9IFwiZ2V0dGluZy1zdGFydGVkLm1kXCIsXG4gICAgICBJTlNUQUxMSU5HX1RIRV9DTElfUEFUSCA9IFwiaW5zdGFsbGluZy10aGUtY2xpLm1kXCIsXG4gICAgICBHRVRUSU5HX1RPX0dSSVBTX1dJVEhfVEhFX0lERV9QQVRIID0gXCJnZXR0aW5nLXRvLWdyaXBzLXdpdGgtdGhlLWlkZS5tZFwiO1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdENvbnRlbnQgPSBgQGlnbm9yZVxuXG5AaW5jbHVkZSAke0ZST05UX01BVFRFUl9QQVRIfVxuQGluY2x1ZGUgJHtDT05URU5UX1BBVEh9XG5AaW5jbHVkZSAke0lOREVYX1BBVEh9XG5gO1xuXG5jb25zdCBpbmRleENvbnRlbnQgPSBgIyMgSW5kZXhcblxuQGluZGV4YCxcblxuICAgICAgY29udGVudENvbnRlbnQgPSBgQGlnbm9yZVxuXG5AaW5jbHVkZSAke0lOVFJPRFVDVElPTl9QQVRIfVxuQGluY2x1ZGUgJHtHRVRUSU5HX1NUQVJURURfUEFUSH1gLFxuXG4gICAgICBjb250ZW50c0NvbnRlbnQgPSBgIyMgQ29udGVudHNcblxuQGNvbnRlbnRzYCxcblxuICAgICAgaGFsZlRpdGxlQ29udGVudCA9IGAjIE9jY2FtYCxcblxuICAgICAgZnJvbnRNYXR0ZXJDb250ZW50ID0gYEBpZ25vcmVcblxuQGluY2x1ZGUgJHtIQUxGX1RJVExFX1BBVEh9XG5AaW5jbHVkZSAke0NPTlRFTlRTX1BBVEh9YCxcblxuICAgICAgaW50cm9kdWN0aW9uQ29udGVudCA9IGAjIEludHJvZHVjdGlvblxuICAgICAgXG5Db25zdHJ1Y3Rvci5cblxuQGZvb3Rub3Rlc1xuXG5AcGFnZU51bWJlclxuYCxcblxuICAgICAgZ2V0dGluZ1N0YXJ0ZWRDb250ZW50ID0gYCMgR2V0dGluZyBzdGFydGVkXG4gICAgICBcbkFub3RoZXIgc2hvcnQgcGFyYWdyYXBoIHdpdGggYSByZWZlcmVuY2UgdG8gYSBmb290bm90ZVteb2NjYW1dLlxuXG5bXm9jY2FtXTogVGhlIHdvcmQgT2NjYW0gaXMgdXNlZCBzb21ld2hhdCBuZWJ1bG91c2x5IGhlcmUuXG5JdCBpcyBtb3N0IG9mdGVuIGFzc29jaWF0ZWQgd2l0aCBPY2NhbSdzIElERSBidXQgaW4gZmFjdCBpdCBlbmNvbXBhc3NlcyBhIHJhbmdlIG9mIHNvZnR3YXJlIGFuZCBzZXJ2aWNlcy5cblRoaXMgYm9vayBleHBsYWlucyB0aGVzZSBkaXZlcnMgcGFydHMgYW5kIHRoZXJlIGlzIGEgY29tcGFuaW9uIGJvb2ssIGNhbGxlZCBUaGUgRm91bmRhdGlvbnMgb2YgU3ltYm9saWMgUmVhc29uaW5nLCB0aGF0IGNvdmVycyB0aGUgdW5kZXJseWluZyB0aGVvcnkuXG5cblteZmxvcmVuY2VdOiBPY2NhbSB3YXMgb3JpZ2luYWxseSBjYWxsZWQgRmxvcmVuY2UgYnV0IHRoZSBmb3JtZXIgc2VlbWVkIG1vcmUgYXB0LlxuXG5AZm9vdG5vdGVzXG5cbkBlbWJlZCAke0lOU1RBTExJTkdfVEhFX0NMSV9QQVRIfVxuQGVtYmVkICR7R0VUVElOR19UT19HUklQU19XSVRIX1RIRV9JREVfUEFUSH1cblxuQHBhZ2VOdW1iZXJcbmAsXG5cbiAgICAgIGluc3RhbGxpbmdUaGVDTElDb250ZW50ID0gYCMjIEluc3RhbGxpbmcgdGhlIENMSVxuYCxcblxuICAgICAgZ2V0dGluZ1RvR3JpcHNXaXRoVGhlSURFSUNvbnRlbnQgPSBgIyMgR2V0dGluZyB0byBncmlwcyB3aXRoIHRoZSBJREVcbiAgICAgICAgICAgIFxuKiBBbiB1bm9yZGVyZWQgbGlzdCB0byB0ZXN0Li4uXG4qIC4uLnRoZSBpbmRleGluZy5cbiAgICAgIFxuMS4gQXMgd2VsbCBhcyBhbi4uLlxuMi4gLi4ub3JkZXJlZCBsaXN0LlxuICAgICAgXG5gO1xuXG5jb25zdCBjb250ZW50TWFwID0ge1xuXG4gIFtJTkRFWF9QQVRIXTogaW5kZXhDb250ZW50LFxuICBbQ09OVEVOVF9QQVRIXTogY29udGVudENvbnRlbnQsXG4gIFtDT05URU5UU19QQVRIXTogY29udGVudHNDb250ZW50LFxuICBbSEFMRl9USVRMRV9QQVRIXTogaGFsZlRpdGxlQ29udGVudCxcbiAgW0ZST05UX01BVFRFUl9QQVRIXTogZnJvbnRNYXR0ZXJDb250ZW50LFxuICBbSU5UUk9EVUNUSU9OX1BBVEhdOiBpbnRyb2R1Y3Rpb25Db250ZW50LFxuICBbR0VUVElOR19TVEFSVEVEX1BBVEhdOiBnZXR0aW5nU3RhcnRlZENvbnRlbnQsXG4gIFtJTlNUQUxMSU5HX1RIRV9DTElfUEFUSF06IGluc3RhbGxpbmdUaGVDTElDb250ZW50LFxuICBbR0VUVElOR19UT19HUklQU19XSVRIX1RIRV9JREVfUEFUSF06IGdldHRpbmdUb0dyaXBzV2l0aFRoZUlERUlDb250ZW50XG5cbn07XG4iXSwibmFtZXMiOlsiaW1wb3J0ZXIiLCJkZWZhdWx0Q29udGVudCIsIm1hcmtkb3duTGV4ZXIiLCJNYXJrZG93bkxleGVyIiwiZnJvbU5vdGhpbmciLCJtYXJrZG93blBhcnNlciIsIk1hcmtkb3duUGFyc2VyIiwiZmlsZVBhdGgiLCJjb250ZXh0IiwiY29udGVudCIsImNvbnRlbnRNYXAiLCJzdGFydE9mQ29udGVudCIsInN0YXJ0UnVsZSIsImdldFN0YXJ0UnVsZSIsInRva2VucyIsInRva2VuaXNlIiwibm9kZSIsInBhcnNlIiwiaW1wb3J0ZWROb2RlIiwiaW1wb3J0ZWRUb2tlbnMiLCJpbXBvcnRlZENsYXNzTmFtZSIsImNsYXNzTmFtZUZyb21GaWxlUGF0aCIsIk9iamVjdCIsImFzc2lnbiIsImNsYXNzTmFtZSIsInJlcGxhY2UiLCJFTVBUWV9TVFJJTkciLCJJTkRFWF9QQVRIIiwiQ09OVEVOVF9QQVRIIiwiQ09OVEVOVFNfUEFUSCIsIkhBTEZfVElUTEVfUEFUSCIsIkZST05UX01BVFRFUl9QQVRIIiwiSU5UUk9EVUNUSU9OX1BBVEgiLCJHRVRUSU5HX1NUQVJURURfUEFUSCIsIklOU1RBTExJTkdfVEhFX0NMSV9QQVRIIiwiR0VUVElOR19UT19HUklQU19XSVRIX1RIRV9JREVfUEFUSCIsImluZGV4Q29udGVudCIsImNvbnRlbnRDb250ZW50IiwiY29udGVudHNDb250ZW50IiwiaGFsZlRpdGxlQ29udGVudCIsImZyb250TWF0dGVyQ29udGVudCIsImludHJvZHVjdGlvbkNvbnRlbnQiLCJnZXR0aW5nU3RhcnRlZENvbnRlbnQiLCJpbnN0YWxsaW5nVGhlQ0xJQ29udGVudCIsImdldHRpbmdUb0dyaXBzV2l0aFRoZUlERUlDb250ZW50Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7Ozs7SUFTQSxPQWtCQztlQWxCdUJBOztJQW9DWEMsY0FBYztlQUFkQTs7O3FCQTNDaUM7eUJBRWpCOzs7Ozs7Ozs7Ozs7OztBQUU3QixJQUFNQyxnQkFBZ0JDLG9CQUFhLENBQUNDLFdBQVcsSUFDekNDLGlCQUFpQkMscUJBQWMsQ0FBQ0YsV0FBVztBQUVsQyxTQUFTSixTQUFTTyxRQUFRLEVBQUVDLE9BQU87SUFDaEQsSUFBTUMsVUFBVUMsVUFBVSxDQUFDSCxTQUFTLElBQUk7SUFFeEMsSUFBSUUsWUFBWSxNQUFNO1FBQ3BCLElBQU1FLGlCQUFpQixNQUNqQkMsWUFBWVAsZUFBZVEsWUFBWSxJQUN2Q0MsU0FBU1osY0FBY2EsUUFBUSxDQUFDTixVQUNoQ08sT0FBT1gsZUFBZVksS0FBSyxDQUFDSCxRQUFRRixXQUFXRCxpQkFDL0NPLGVBQWVGLE1BQ2ZHLGlCQUFpQkwsUUFDakJNLG9CQUFvQkMsc0JBQXNCZDtRQUVoRGUsT0FBT0MsTUFBTSxDQUFDZixTQUFTO1lBQ3JCVSxjQUFBQTtZQUNBQyxnQkFBQUE7WUFDQUMsbUJBQUFBO1FBQ0Y7SUFDRjtBQUNGO0FBRUEsU0FBU0Msc0JBQXNCZCxRQUFRO0lBQ3JDLElBQU1pQixZQUFZakIsU0FBU2tCLE9BQU8sQ0FBQyxRQUFRQyx1QkFBWTtJQUV2RCxPQUFPRjtBQUNUO0FBRUEsSUFBTUcsYUFBYSxZQUNiQyxlQUFlLGNBQ2ZDLGdCQUFnQixlQUNoQkMsa0JBQWtCLGlCQUNsQkMsb0JBQW9CLG1CQUNwQkMsb0JBQW9CLG1CQUNwQkMsdUJBQXVCLHNCQUN2QkMsMEJBQTBCLHlCQUMxQkMscUNBQXFDO0FBRXBDLElBQU1sQyxpQkFBaUIsQUFBQyx1QkFHcEIyQixPQURBRyxtQkFBa0IsZUFFbEJKLE9BREFDLGNBQWEsZUFDRixPQUFYRCxZQUFXO0FBR3RCLElBQU1TLGVBQWdCLHNCQUloQkMsaUJBQWlCLEFBQUMsdUJBR2JKLE9BREFELG1CQUFrQixlQUNHLE9BQXJCQyx1QkFFTEssa0JBQW1CLDRCQUluQkMsbUJBQW9CLFdBRXBCQyxxQkFBcUIsQUFBQyx1QkFHakJYLE9BREFDLGlCQUFnQixlQUNGLE9BQWRELGdCQUVMWSxzQkFBdUIsdUVBU3ZCQyx3QkFBd0IsQUFBQywyZ0JBYXRCUCxPQURBRCx5QkFBd0IsYUFDVyxPQUFuQ0Msb0NBQW1DLHNCQUt0Q1EsMEJBQTJCLDJCQUczQkMsbUNBQW9DO0lBVXZCO0FBQW5CLElBQU1sQyxjQUFhLFdBRWpCLGlCQUZpQixNQUVoQmlCLFlBQWFTLGVBQ2QsaUJBSGlCLE1BR2hCUixjQUFlUyxpQkFDaEIsaUJBSmlCLE1BSWhCUixlQUFnQlMsa0JBQ2pCLGlCQUxpQixNQUtoQlIsaUJBQWtCUyxtQkFDbkIsaUJBTmlCLE1BTWhCUixtQkFBb0JTLHFCQUNyQixpQkFQaUIsTUFPaEJSLG1CQUFvQlMsc0JBQ3JCLGlCQVJpQixNQVFoQlIsc0JBQXVCUyx3QkFDeEIsaUJBVGlCLE1BU2hCUix5QkFBMEJTLDBCQUMzQixpQkFWaUIsTUFVaEJSLG9DQUFxQ1MsbUNBVnJCIn0=
|
package/lib/node/markdown.js
CHANGED
|
@@ -438,4 +438,4 @@ Object.assign(MarkdownNode.prototype, _node.default);
|
|
|
438
438
|
Object.assign(MarkdownNode.prototype, _element.default);
|
|
439
439
|
var _default = MarkdownNode;
|
|
440
440
|
|
|
441
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL21hcmtkb3duLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwib2NjYW0tcGFyc2Vyc1wiO1xuXG5pbXBvcnQgZWxlbWVudE1hcCBmcm9tIFwiLi4vZWxlbWVudE1hcFwiO1xuaW1wb3J0IG5vZGVNaXhpbnMgZnJvbSBcIi4uL21peGlucy9ub2RlXCI7XG5pbXBvcnQgZWxlbWVudE1peGlucyBmcm9tIFwiLi4vbWl4aW5zL2VsZW1lbnRcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jbGFzcyBNYXJrZG93bk5vZGUgZXh0ZW5kcyBOb25UZXJtaW5hbE5vZGUge1xuICBjb25zdHJ1Y3RvcihydWxlTmFtZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgZG9tRWxlbWVudCkge1xuICAgIHN1cGVyKHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5KTtcblxuICAgIHRoaXMuZG9tRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gIH1cblxuICBnZXRET01FbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmRvbUVsZW1lbnQ7XG4gIH1cblxuICBzZXRET01FbGVtZW50KGRvbUVsZW1lbnQpIHtcbiAgICB0aGlzLmRvbUVsZW1lbnQgPSBkb21FbGVtZW50O1xuICB9XG5cbiAgdGFnTmFtZShjb250ZXh0KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRNYXBbdGhpcy5ydWxlTmFtZV07XG5cbiAgICBjb25zdCB7IHRhZ05hbWUgfSA9IGVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGFnTmFtZTtcbiAgfVxuXG4gIGNsYXNzTmFtZShjb250ZXh0KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRNYXBbdGhpcy5ydWxlTmFtZV07XG5cbiAgICBjb25zdCB7IGNsYXNzTmFtZSB9ID0gZWxlbWVudDtcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICBjbG9zaW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsb3NpbmdUYWcgPSBgPC8ke3RhZ05hbWV9PmA7XG5cbiAgICByZXR1cm4gY2xvc2luZ1RhZztcbiAgfVxuXG4gIHN0YXJ0aW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzSFRNTCA9IChjbGFzc05hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgICBhdHRyaWJ1dGVIVE1MID0gKChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSAmJiAoYXR0cmlidXRlVmFsdWUgIT09IG51bGwpKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgICR7YXR0cmlidXRlTmFtZX09XCIke2F0dHJpYnV0ZVZhbHVlfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgc3RhcnRpbmdUYWcgPSBgPCR7dGFnTmFtZX0ke2NsYXNzSFRNTH0ke2F0dHJpYnV0ZUhUTUx9PmA7XG5cbiAgICByZXR1cm4gc3RhcnRpbmdUYWc7XG4gIH1cblxuICBzZWxmQ2xvc2luZ1RhZyhjb250ZXh0KSB7XG4gICAgY29uc3QgdGFnTmFtZSA9IHRoaXMudGFnTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gdGhpcy5hdHRyaWJ1dGVOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5hdHRyaWJ1dGVWYWx1ZShjb250ZXh0KSxcbiAgICAgICAgICBjbGFzc0hUTUwgPSAoY2xhc3NOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAgY2xhc3M9XCIke2NsYXNzTmFtZX1cImAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgYXR0cmlidXRlSFRNTCA9ICgoYXR0cmlidXRlTmFtZSAhPT0gbnVsbCkgJiYgKGF0dHJpYnV0ZVZhbHVlICE9PSBudWxsKSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAke2F0dHJpYnV0ZU5hbWV9PVwiJHthdHRyaWJ1dGVWYWx1ZX1cImAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIHNlbGZDbG9zaW5nVGFnID0gYDwke3RhZ05hbWV9JHtjbGFzc0hUTUx9JHthdHRyaWJ1dGVIVE1MfS8+YDtcblxuICAgIHJldHVybiBzZWxmQ2xvc2luZ1RhZztcbiAgfVxuXG4gIGFkanVzdEluZGVudChpbmRlbnQpIHtcbiAgICBpZiAoaW5kZW50ICE9PSBudWxsKSB7XG4gICAgICBpbmRlbnQgPSBgICAke2luZGVudH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRlbnQ7XG4gIH1cblxuICBhdHRyaWJ1dGVOYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gbnVsbDtcblxuICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lO1xuICB9XG5cbiAgYXR0cmlidXRlVmFsdWUoY29udGV4dCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gbnVsbDtcblxuICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgfVxuXG4gIGlzRGl2aXNpb25NYXJrZG93bk5vZGUoKSB7XG4gICAgY29uc3QgZGl2aXNpb25NYXJrZG93bk5vZGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBkaXZpc2lvbk1hcmtkb3duTm9kZTtcbiAgfVxuXG4gIGlzUGxhaW5UZXh0TWFya2Rvd25Ob2RlKCkge1xuICAgIGNvbnN0IHBsYWluVGV4dE1hcmtkb3duTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHBsYWluVGV4dE1hcmtkb3duTm9kZTtcbiAgfVxuXG4gIGxpbmVzKGNvbnRleHQpIHtcbiAgICBsZXQgbGluZXM7XG5cbiAgICAoeyBsaW5lcyA9IG51bGwgfSA9IHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgaWYgKGxpbmVzID09PSBudWxsKSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgIGxpbmVzID0gY2hpbGROb2Rlcy5yZWR1Y2UoKGxpbmVzLCBjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZU1hcmtkb3duTm9kZSkge1xuICAgICAgICAgIGNvbnN0IG1hcmtkb3duTm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgbWFya2Rvd25Ob2RlTGluZXMgPSBtYXJrZG93bk5vZGUubGluZXMoY29udGV4dCk7XG5cbiAgICAgICAgICBsaW5lcyArPSBtYXJrZG93bk5vZGVMaW5lcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIG1vdW50KHBhcmVudERPTUVsZW1lbnQsIHNpYmxpbmdET01FbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdGhpcy5kb21FbGVtZW50ID0gdGhpcy5jcmVhdGVET01FbGVtZW50KGNvbnRleHQpO1xuXG4gICAgaWYgKHRoaXMuZG9tRWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgcGFyZW50RE9NRWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5kb21FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudClcblxuICAgICAgcGFyZW50RE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgLy8vXG5cbiAgICAgIHNpYmxpbmdET01FbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVNYXJrZG93bk5vZGUgPSAoY2hpbGROb2RlIGluc3RhbmNlb2YgTWFya2Rvd25Ob2RlKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZU1hcmtkb3duTm9kZSkge1xuICAgICAgICBjb25zdCBtYXJrZG93bk5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICAgIG1hcmtkb3duTm9kZS5tb3VudChwYXJlbnRET01FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudCwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1bm1vdW50KHBhcmVudERPTUVsZW1lbnQsIGNvbnRleHQpIHtcbiAgICBpZiAodGhpcy5kb21FbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBwYXJlbnRET01FbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZG9tRWxlbWVudCk7XG5cbiAgICAgIHBhcmVudERPTUVsZW1lbnQgPSB0aGlzLmRvbUVsZW1lbnQ7IC8vL1xuXG4gICAgICB0aGlzLmRvbUVsZW1lbnQgPSBudWxsO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgIGlmIChjaGlsZE5vZGVNYXJrZG93bk5vZGUpIHtcbiAgICAgICAgY2hpbGROb2RlLnVubW91bnQocGFyZW50RE9NRWxlbWVudCwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc01vdW50ZWQoKSB7XG4gICAgY29uc3QgbW91bnRlZCA9ICh0aGlzLmRvbUVsZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG1vdW50ZWQ7XG4gIH1cblxuICBjcmVhdGVET01FbGVtZW50KGNvbnRleHQpIHtcbiAgICBsZXQgZG9tRWxlbWVudCA9IG51bGw7XG5cbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpO1xuXG4gICAgaWYgKHRhZ05hbWUgIT09IG51bGwpIHtcbiAgICAgIGRvbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuXG4gICAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHRoaXMuYXR0cmlidXRlVmFsdWUoY29udGV4dCk7XG5cbiAgICAgIGlmIChjbGFzc05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoKGF0dHJpYnV0ZU5hbWUgIT09IG51bGwpICYmIChhdHRyaWJ1dGVWYWx1ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkb21FbGVtZW50O1xuICB9XG5cbiAgYXNIVE1MKGluZGVudCwgY29udGV4dCkge1xuICAgIGxldCBodG1sID0gbnVsbDtcblxuICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLnRhZ05hbWUoY29udGV4dCk7XG5cbiAgICBpZiAodGFnTmFtZSAhPT0gbnVsbCkge1xuICAgICAgaW5kZW50ID0gdGhpcy5hZGp1c3RJbmRlbnQoaW5kZW50KTtcblxuICAgICAgY29uc3QgY2hpbGROb2Rlc0hUTUwgPSB0aGlzLmNoaWxkTm9kZXNBc0hUTUwoaW5kZW50LCBjb250ZXh0KTtcblxuICAgICAgaWYgKGNoaWxkTm9kZXNIVE1MICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0aW5nVGFnID0gdGhpcy5zdGFydGluZ1RhZyhjb250ZXh0KSxcbiAgICAgICAgICAgICAgY2xvc2luZ1RhZyA9IHRoaXMuY2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgICBodG1sID0gKGluZGVudCA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHtzdGFydGluZ1RhZ30ke2NoaWxkTm9kZXNIVE1MfSR7Y2xvc2luZ1RhZ31gIDpcbiAgICAgICAgICAgICAgICAgICBgJHtpbmRlbnR9JHtzdGFydGluZ1RhZ31cbiR7Y2hpbGROb2Rlc0hUTUx9JHtpbmRlbnR9JHtjbG9zaW5nVGFnfVxuYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlbGZDbG9zaW5nVGFnID0gdGhpcy5zZWxmQ2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgICBodG1sID0gKGluZGVudCA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgIHNlbGZDbG9zaW5nVGFnIDogIC8vL1xuYCR7aW5kZW50fSR7c2VsZkNsb3NpbmdUYWd9XG5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodG1sO1xuICB9XG5cbiAgYXNQbGFpblRleHQoY29udGV4dCkge1xuICAgIGxldCBwbGFpblRleHQgPSBudWxsO1xuXG4gICAgY29uc3QgdGFnTmFtZSA9IHRoaXMudGFnTmFtZShjb250ZXh0KTtcblxuICAgIGlmICh0YWdOYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gdGhpcy5jaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCk7XG5cbiAgICAgIHBsYWluVGV4dCA9IGNoaWxkTm9kZXNQbGFpblRleHQ7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gcGxhaW5UZXh0O1xuICB9XG5cbiAgY2hpbGROb2Rlc0FzSFRNTChpbmRlbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGROb2Rlc0hUTUwgPSBjaGlsZE5vZGVzLnJlZHVjZSgoY2hpbGROb2Rlc0hUTUwsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXJrZG93bk5vZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgbWFya2Rvd25Ob2RlSFRNTCA9IG1hcmtkb3duTm9kZS5hc0hUTUwoaW5kZW50LCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICBpZiAobWFya2Rvd25Ob2RlSFRNTCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNIVE1MID0gKGNoaWxkTm9kZXNIVE1MID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duTm9kZUhUTUwgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtjaGlsZE5vZGVzSFRNTH0ke21hcmtkb3duTm9kZUhUTUx9YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2hpbGROb2Rlc0hUTUw7XG4gICAgICAgICAgfSwgbnVsbCk7XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc0hUTUw7XG4gIH1cblxuICBjaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gY2hpbGROb2Rlcy5yZWR1Y2UoKGNoaWxkTm9kZXNQbGFpblRleHQsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXJrZG93bk5vZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgbWFya2Rvd25Ob2RlUGxhaW5UZXh0ID0gbWFya2Rvd25Ob2RlLmFzUGxhaW5UZXh0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGlmIChtYXJrZG93bk5vZGVQbGFpblRleHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gKGNoaWxkTm9kZXNQbGFpblRleHQgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bk5vZGVQbGFpblRleHQgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2NoaWxkTm9kZXNQbGFpblRleHR9XG4ke21hcmtkb3duTm9kZVBsYWluVGV4dH1gO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjaGlsZE5vZGVzUGxhaW5UZXh0O1xuICAgICAgICAgIH0sIG51bGwpO1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZXNQbGFpblRleHQ7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHsgcmV0dXJuIHN1cGVyLmNsb25lKHRoaXMuZG9tRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTsgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSBudWxsLFxuICAgICAgICAgIG1hcmtkb3duTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIGRvbUVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gbWFya2Rvd25Ob2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oTWFya2Rvd25Ob2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5PYmplY3QuYXNzaWduKE1hcmtkb3duTm9kZS5wcm90b3R5cGUsIGVsZW1lbnRNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBNYXJrZG93bk5vZGU7XG4iXSwibmFtZXMiOlsiTWFya2Rvd25Ob2RlIiwicnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsIm9wYWNpdHkiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInNldERPTUVsZW1lbnQiLCJ0YWdOYW1lIiwiY29udGV4dCIsImVsZW1lbnQiLCJlbGVtZW50TWFwIiwiY2xhc3NOYW1lIiwiY2xvc2luZ1RhZyIsInN0YXJ0aW5nVGFnIiwiYXR0cmlidXRlTmFtZSIsImF0dHJpYnV0ZVZhbHVlIiwiY2xhc3NIVE1MIiwiRU1QVFlfU1RSSU5HIiwiYXR0cmlidXRlSFRNTCIsInNlbGZDbG9zaW5nVGFnIiwiYWRqdXN0SW5kZW50IiwiaW5kZW50IiwiaXNEaXZpc2lvbk1hcmtkb3duTm9kZSIsImRpdmlzaW9uTWFya2Rvd25Ob2RlIiwiaXNQbGFpblRleHRNYXJrZG93bk5vZGUiLCJwbGFpblRleHRNYXJrZG93bk5vZGUiLCJsaW5lcyIsImNvbnN0cnVjdG9yIiwiZ2V0Q2hpbGROb2RlcyIsInJlZHVjZSIsImNoaWxkTm9kZSIsImNoaWxkTm9kZU1hcmtkb3duTm9kZSIsIm1hcmtkb3duTm9kZSIsIm1hcmtkb3duTm9kZUxpbmVzIiwibW91bnQiLCJwYXJlbnRET01FbGVtZW50Iiwic2libGluZ0RPTUVsZW1lbnQiLCJjcmVhdGVET01FbGVtZW50IiwiaW5zZXJ0QmVmb3JlIiwiZm9yRWFjaCIsInVubW91bnQiLCJyZW1vdmVDaGlsZCIsImlzTW91bnRlZCIsIm1vdW50ZWQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRBdHRyaWJ1dGUiLCJhc0hUTUwiLCJodG1sIiwiY2hpbGROb2Rlc0hUTUwiLCJjaGlsZE5vZGVzQXNIVE1MIiwiYXNQbGFpblRleHQiLCJwbGFpblRleHQiLCJjaGlsZE5vZGVzUGxhaW5UZXh0IiwiY2hpbGROb2Rlc0FzUGxhaW5UZXh0IiwibWFya2Rvd25Ob2RlSFRNTCIsIm1hcmtkb3duTm9kZVBsYWluVGV4dCIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc0FuZE9wYWNpdHkiLCJDbGFzcyIsIk5vblRlcm1pbmFsTm9kZSIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMiLCJlbGVtZW50TWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyVEE7OztlQUFBOzs7NEJBelRnQztpRUFFVDsyREFDQTs4REFDRzt5QkFFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
|
441
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ub2RlL21hcmtkb3duLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBOb25UZXJtaW5hbE5vZGUgfSBmcm9tIFwib2NjYW0tcGFyc2Vyc1wiO1xuXG5pbXBvcnQgZWxlbWVudE1hcCBmcm9tIFwiLi4vZWxlbWVudE1hcFwiO1xuaW1wb3J0IG5vZGVNaXhpbnMgZnJvbSBcIi4uL21peGlucy9ub2RlXCI7XG5pbXBvcnQgZWxlbWVudE1peGlucyBmcm9tIFwiLi4vbWl4aW5zL2VsZW1lbnRcIjtcblxuaW1wb3J0IHsgRU1QVFlfU1RSSU5HIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuXG5jbGFzcyBNYXJrZG93bk5vZGUgZXh0ZW5kcyBOb25UZXJtaW5hbE5vZGUge1xuICBjb25zdHJ1Y3RvcihydWxlTmFtZSwgY2hpbGROb2RlcywgcHJlY2VkZW5jZSwgb3BhY2l0eSwgZG9tRWxlbWVudCkge1xuICAgIHN1cGVyKHJ1bGVOYW1lLCBjaGlsZE5vZGVzLCBwcmVjZWRlbmNlLCBvcGFjaXR5KTtcblxuICAgIHRoaXMuZG9tRWxlbWVudCA9IGRvbUVsZW1lbnQ7XG4gIH1cblxuICBnZXRET01FbGVtZW50KCkge1xuICAgIHJldHVybiB0aGlzLmRvbUVsZW1lbnQ7XG4gIH1cblxuICBzZXRET01FbGVtZW50KGRvbUVsZW1lbnQpIHtcbiAgICB0aGlzLmRvbUVsZW1lbnQgPSBkb21FbGVtZW50O1xuICB9XG5cbiAgdGFnTmFtZShjb250ZXh0KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRNYXBbdGhpcy5ydWxlTmFtZV07XG5cbiAgICBjb25zdCB7IHRhZ05hbWUgfSA9IGVsZW1lbnQ7XG5cbiAgICByZXR1cm4gdGFnTmFtZTtcbiAgfVxuXG4gIGNsYXNzTmFtZShjb250ZXh0KSB7XG4gICAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRNYXBbdGhpcy5ydWxlTmFtZV07XG5cbiAgICBjb25zdCB7IGNsYXNzTmFtZSB9ID0gZWxlbWVudDtcblxuICAgIHJldHVybiBjbGFzc05hbWU7XG4gIH1cblxuICBjbG9zaW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsb3NpbmdUYWcgPSBgPC8ke3RhZ05hbWV9PmA7XG5cbiAgICByZXR1cm4gY2xvc2luZ1RhZztcbiAgfVxuXG4gIHN0YXJ0aW5nVGFnKGNvbnRleHQpIHtcbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzTmFtZSA9IHRoaXMuY2xhc3NOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgYXR0cmlidXRlVmFsdWUgPSB0aGlzLmF0dHJpYnV0ZVZhbHVlKGNvbnRleHQpLFxuICAgICAgICAgIGNsYXNzSFRNTCA9IChjbGFzc05hbWUgIT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgYCBjbGFzcz1cIiR7Y2xhc3NOYW1lfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgIEVNUFRZX1NUUklORyxcbiAgICAgICAgICBhdHRyaWJ1dGVIVE1MID0gKChhdHRyaWJ1dGVOYW1lICE9PSBudWxsKSAmJiAoYXR0cmlidXRlVmFsdWUgIT09IG51bGwpKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgICR7YXR0cmlidXRlTmFtZX09XCIke2F0dHJpYnV0ZVZhbHVlfVwiYCA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgc3RhcnRpbmdUYWcgPSBgPCR7dGFnTmFtZX0ke2NsYXNzSFRNTH0ke2F0dHJpYnV0ZUhUTUx9PmA7XG5cbiAgICByZXR1cm4gc3RhcnRpbmdUYWc7XG4gIH1cblxuICBzZWxmQ2xvc2luZ1RhZyhjb250ZXh0KSB7XG4gICAgY29uc3QgdGFnTmFtZSA9IHRoaXMudGFnTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICBhdHRyaWJ1dGVOYW1lID0gdGhpcy5hdHRyaWJ1dGVOYW1lKGNvbnRleHQpLFxuICAgICAgICAgIGF0dHJpYnV0ZVZhbHVlID0gdGhpcy5hdHRyaWJ1dGVWYWx1ZShjb250ZXh0KSxcbiAgICAgICAgICBjbGFzc0hUTUwgPSAoY2xhc3NOYW1lICE9PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgIGAgY2xhc3M9XCIke2NsYXNzTmFtZX1cImAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICBFTVBUWV9TVFJJTkcsXG4gICAgICAgICAgYXR0cmlidXRlSFRNTCA9ICgoYXR0cmlidXRlTmFtZSAhPT0gbnVsbCkgJiYgKGF0dHJpYnV0ZVZhbHVlICE9PSBudWxsKSkgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYCAke2F0dHJpYnV0ZU5hbWV9PVwiJHthdHRyaWJ1dGVWYWx1ZX1cImAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU1QVFlfU1RSSU5HLFxuICAgICAgICAgIHNlbGZDbG9zaW5nVGFnID0gYDwke3RhZ05hbWV9JHtjbGFzc0hUTUx9JHthdHRyaWJ1dGVIVE1MfS8+YDtcblxuICAgIHJldHVybiBzZWxmQ2xvc2luZ1RhZztcbiAgfVxuXG4gIGFkanVzdEluZGVudChpbmRlbnQpIHtcbiAgICBpZiAoaW5kZW50ICE9PSBudWxsKSB7XG4gICAgICBpbmRlbnQgPSBgICAke2luZGVudH1gO1xuICAgIH1cblxuICAgIHJldHVybiBpbmRlbnQ7XG4gIH1cblxuICBhdHRyaWJ1dGVOYW1lKGNvbnRleHQpIHtcbiAgICBjb25zdCBhdHRyaWJ1dGVOYW1lID0gbnVsbDtcblxuICAgIHJldHVybiBhdHRyaWJ1dGVOYW1lO1xuICB9XG5cbiAgYXR0cmlidXRlVmFsdWUoY29udGV4dCkge1xuICAgIGNvbnN0IGF0dHJpYnV0ZVZhbHVlID0gbnVsbDtcblxuICAgIHJldHVybiBhdHRyaWJ1dGVWYWx1ZTtcbiAgfVxuXG4gIGlzRGl2aXNpb25NYXJrZG93bk5vZGUoKSB7XG4gICAgY29uc3QgZGl2aXNpb25NYXJrZG93bk5vZGUgPSBmYWxzZTtcblxuICAgIHJldHVybiBkaXZpc2lvbk1hcmtkb3duTm9kZTtcbiAgfVxuXG4gIGlzUGxhaW5UZXh0TWFya2Rvd25Ob2RlKCkge1xuICAgIGNvbnN0IHBsYWluVGV4dE1hcmtkb3duTm9kZSA9IGZhbHNlO1xuXG4gICAgcmV0dXJuIHBsYWluVGV4dE1hcmtkb3duTm9kZTtcbiAgfVxuXG4gIGxpbmVzKGNvbnRleHQpIHtcbiAgICBsZXQgbGluZXM7XG5cbiAgICAoeyBsaW5lcyA9IG51bGwgfSA9IHRoaXMuY29uc3RydWN0b3IpO1xuXG4gICAgaWYgKGxpbmVzID09PSBudWxsKSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCk7XG5cbiAgICAgIGxpbmVzID0gY2hpbGROb2Rlcy5yZWR1Y2UoKGxpbmVzLCBjaGlsZE5vZGUpID0+IHtcbiAgICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgICAgaWYgKGNoaWxkTm9kZU1hcmtkb3duTm9kZSkge1xuICAgICAgICAgIGNvbnN0IG1hcmtkb3duTm9kZSA9IGNoaWxkTm9kZSwgLy8vXG4gICAgICAgICAgICAgICAgbWFya2Rvd25Ob2RlTGluZXMgPSBtYXJrZG93bk5vZGUubGluZXMoY29udGV4dCk7XG5cbiAgICAgICAgICBsaW5lcyArPSBtYXJrZG93bk5vZGVMaW5lcztcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBsaW5lcztcbiAgICAgIH0sIDApO1xuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIG1vdW50KHBhcmVudERPTUVsZW1lbnQsIHNpYmxpbmdET01FbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdGhpcy5kb21FbGVtZW50ID0gdGhpcy5jcmVhdGVET01FbGVtZW50KGNvbnRleHQpO1xuXG4gICAgaWYgKHRoaXMuZG9tRWxlbWVudCAhPT0gbnVsbCkge1xuICAgICAgcGFyZW50RE9NRWxlbWVudC5pbnNlcnRCZWZvcmUodGhpcy5kb21FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudClcblxuICAgICAgcGFyZW50RE9NRWxlbWVudCA9IHRoaXMuZG9tRWxlbWVudDsgLy8vXG5cbiAgICAgIHNpYmxpbmdET01FbGVtZW50ID0gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlKSA9PiB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVNYXJrZG93bk5vZGUgPSAoY2hpbGROb2RlIGluc3RhbmNlb2YgTWFya2Rvd25Ob2RlKTtcblxuICAgICAgaWYgKGNoaWxkTm9kZU1hcmtkb3duTm9kZSkge1xuICAgICAgICBjb25zdCBtYXJrZG93bk5vZGUgPSBjaGlsZE5vZGU7IC8vL1xuXG4gICAgICAgIG1hcmtkb3duTm9kZS5tb3VudChwYXJlbnRET01FbGVtZW50LCBzaWJsaW5nRE9NRWxlbWVudCwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICB1bm1vdW50KHBhcmVudERPTUVsZW1lbnQsIGNvbnRleHQpIHtcbiAgICBpZiAodGhpcy5kb21FbGVtZW50ICE9PSBudWxsKSB7XG4gICAgICBwYXJlbnRET01FbGVtZW50LnJlbW92ZUNoaWxkKHRoaXMuZG9tRWxlbWVudCk7XG5cbiAgICAgIHBhcmVudERPTUVsZW1lbnQgPSB0aGlzLmRvbUVsZW1lbnQ7IC8vL1xuXG4gICAgICB0aGlzLmRvbUVsZW1lbnQgPSBudWxsO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jaGlsZE5vZGVzLmZvckVhY2goKGNoaWxkTm9kZSkgPT4ge1xuICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgIGlmIChjaGlsZE5vZGVNYXJrZG93bk5vZGUpIHtcbiAgICAgICAgY2hpbGROb2RlLnVubW91bnQocGFyZW50RE9NRWxlbWVudCwgY29udGV4dCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBpc01vdW50ZWQoKSB7XG4gICAgY29uc3QgbW91bnRlZCA9ICh0aGlzLmRvbUVsZW1lbnQgIT09IG51bGwpO1xuXG4gICAgcmV0dXJuIG1vdW50ZWQ7XG4gIH1cblxuICBjcmVhdGVET01FbGVtZW50KGNvbnRleHQpIHtcbiAgICBsZXQgZG9tRWxlbWVudCA9IG51bGw7XG5cbiAgICBjb25zdCB0YWdOYW1lID0gdGhpcy50YWdOYW1lKGNvbnRleHQpO1xuXG4gICAgaWYgKHRhZ05hbWUgIT09IG51bGwpIHtcbiAgICAgIGRvbUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZ05hbWUpO1xuXG4gICAgICBjb25zdCBjbGFzc05hbWUgPSB0aGlzLmNsYXNzTmFtZShjb250ZXh0KSxcbiAgICAgICAgICAgIGF0dHJpYnV0ZU5hbWUgPSB0aGlzLmF0dHJpYnV0ZU5hbWUoY29udGV4dCksXG4gICAgICAgICAgICBhdHRyaWJ1dGVWYWx1ZSA9IHRoaXMuYXR0cmlidXRlVmFsdWUoY29udGV4dCk7XG5cbiAgICAgIGlmIChjbGFzc05hbWUgIT09IG51bGwpIHtcbiAgICAgICAgT2JqZWN0LmFzc2lnbihkb21FbGVtZW50LCB7XG4gICAgICAgICAgY2xhc3NOYW1lXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoKGF0dHJpYnV0ZU5hbWUgIT09IG51bGwpICYmIChhdHRyaWJ1dGVWYWx1ZSAhPT0gbnVsbCkpIHtcbiAgICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYXR0cmlidXRlVmFsdWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBkb21FbGVtZW50O1xuICB9XG5cbiAgYXNIVE1MKGluZGVudCwgY29udGV4dCkge1xuICAgIGxldCBodG1sID0gbnVsbDtcblxuICAgIGNvbnN0IHRhZ05hbWUgPSB0aGlzLnRhZ05hbWUoY29udGV4dCk7XG5cbiAgICBpZiAodGFnTmFtZSAhPT0gbnVsbCkge1xuICAgICAgaW5kZW50ID0gdGhpcy5hZGp1c3RJbmRlbnQoaW5kZW50KTtcblxuICAgICAgY29uc3QgY2hpbGROb2Rlc0hUTUwgPSB0aGlzLmNoaWxkTm9kZXNBc0hUTUwoaW5kZW50LCBjb250ZXh0KTtcblxuICAgICAgaWYgKGNoaWxkTm9kZXNIVE1MICE9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0aW5nVGFnID0gdGhpcy5zdGFydGluZ1RhZyhjb250ZXh0KSxcbiAgICAgICAgICAgICAgY2xvc2luZ1RhZyA9IHRoaXMuY2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgICBodG1sID0gKGluZGVudCA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgICBgJHtzdGFydGluZ1RhZ30ke2NoaWxkTm9kZXNIVE1MfSR7Y2xvc2luZ1RhZ31gIDpcbiAgICAgICAgICAgICAgICAgICBgJHtpbmRlbnR9JHtzdGFydGluZ1RhZ31cbiR7Y2hpbGROb2Rlc0hUTUx9JHtpbmRlbnR9JHtjbG9zaW5nVGFnfVxuYDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHNlbGZDbG9zaW5nVGFnID0gdGhpcy5zZWxmQ2xvc2luZ1RhZyhjb250ZXh0KTtcblxuICAgICAgICBodG1sID0gKGluZGVudCA9PT0gbnVsbCkgP1xuICAgICAgICAgICAgICAgIHNlbGZDbG9zaW5nVGFnIDogIC8vL1xuYCR7aW5kZW50fSR7c2VsZkNsb3NpbmdUYWd9XG5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodG1sO1xuICB9XG5cbiAgYXNQbGFpblRleHQoY29udGV4dCkge1xuICAgIGxldCBwbGFpblRleHQgPSBudWxsO1xuXG4gICAgY29uc3QgdGFnTmFtZSA9IHRoaXMudGFnTmFtZShjb250ZXh0KTtcblxuICAgIGlmICh0YWdOYW1lICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gdGhpcy5jaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCk7XG5cbiAgICAgIHBsYWluVGV4dCA9IGNoaWxkTm9kZXNQbGFpblRleHQ7ICAvLy9cbiAgICB9XG5cbiAgICByZXR1cm4gcGxhaW5UZXh0O1xuICB9XG5cbiAgY2hpbGROb2Rlc0FzSFRNTChpbmRlbnQsIGNvbnRleHQpIHtcbiAgICBjb25zdCBjaGlsZE5vZGVzID0gdGhpcy5nZXRDaGlsZE5vZGVzKCksXG4gICAgICAgICAgY2hpbGROb2Rlc0hUTUwgPSBjaGlsZE5vZGVzLnJlZHVjZSgoY2hpbGROb2Rlc0hUTUwsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXJrZG93bk5vZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgbWFya2Rvd25Ob2RlSFRNTCA9IG1hcmtkb3duTm9kZS5hc0hUTUwoaW5kZW50LCBjb250ZXh0KTtcblxuICAgICAgICAgICAgICBpZiAobWFya2Rvd25Ob2RlSFRNTCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIGNoaWxkTm9kZXNIVE1MID0gKGNoaWxkTm9kZXNIVE1MID09PSBudWxsKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcmtkb3duTm9kZUhUTUwgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtjaGlsZE5vZGVzSFRNTH0ke21hcmtkb3duTm9kZUhUTUx9YDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gY2hpbGROb2Rlc0hUTUw7XG4gICAgICAgICAgfSwgbnVsbCk7XG5cbiAgICByZXR1cm4gY2hpbGROb2Rlc0hUTUw7XG4gIH1cblxuICBjaGlsZE5vZGVzQXNQbGFpblRleHQoY29udGV4dCkge1xuICAgIGNvbnN0IGNoaWxkTm9kZXMgPSB0aGlzLmdldENoaWxkTm9kZXMoKSxcbiAgICAgICAgICBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gY2hpbGROb2Rlcy5yZWR1Y2UoKGNoaWxkTm9kZXNQbGFpblRleHQsIGNoaWxkTm9kZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2hpbGROb2RlTWFya2Rvd25Ob2RlID0gKGNoaWxkTm9kZSBpbnN0YW5jZW9mIE1hcmtkb3duTm9kZSk7XG5cbiAgICAgICAgICAgIGlmIChjaGlsZE5vZGVNYXJrZG93bk5vZGUpIHtcbiAgICAgICAgICAgICAgY29uc3QgbWFya2Rvd25Ob2RlID0gY2hpbGROb2RlLCAvLy9cbiAgICAgICAgICAgICAgICAgICAgbWFya2Rvd25Ob2RlUGxhaW5UZXh0ID0gbWFya2Rvd25Ob2RlLmFzUGxhaW5UZXh0KGNvbnRleHQpO1xuXG4gICAgICAgICAgICAgIGlmIChtYXJrZG93bk5vZGVQbGFpblRleHQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBjaGlsZE5vZGVzUGxhaW5UZXh0ID0gKGNoaWxkTm9kZXNQbGFpblRleHQgPT09IG51bGwpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXJrZG93bk5vZGVQbGFpblRleHQgOiAgLy8vXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke2NoaWxkTm9kZXNQbGFpblRleHR9XG4ke21hcmtkb3duTm9kZVBsYWluVGV4dH1gO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBjaGlsZE5vZGVzUGxhaW5UZXh0O1xuICAgICAgICAgIH0sIG51bGwpO1xuXG4gICAgcmV0dXJuIGNoaWxkTm9kZXNQbGFpblRleHQ7XG4gIH1cblxuICBjbG9uZSguLi5yZW1haW5pbmdBcmd1bWVudHMpIHsgcmV0dXJuIHN1cGVyLmNsb25lKHRoaXMuZG9tRWxlbWVudCwgLi4ucmVtYWluaW5nQXJndW1lbnRzKTsgfVxuXG4gIHN0YXRpYyBmcm9tUnVsZU5hbWVDaGlsZE5vZGVzQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIC4uLnJlbWFpbmluZ0FyZ3VtZW50cykge1xuICAgIGNvbnN0IGRvbUVsZW1lbnQgPSBudWxsLFxuICAgICAgICAgIG1hcmtkb3duTm9kZSA9IE5vblRlcm1pbmFsTm9kZS5mcm9tUnVsZU5hbWVDaGlsZE5vZGVzQW5kT3BhY2l0eShDbGFzcywgcnVsZU5hbWUsIGNoaWxkTm9kZXMsIG9wYWNpdHksIGRvbUVsZW1lbnQsIC4uLnJlbWFpbmluZ0FyZ3VtZW50cyk7XG5cbiAgICByZXR1cm4gbWFya2Rvd25Ob2RlO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oTWFya2Rvd25Ob2RlLnByb3RvdHlwZSwgbm9kZU1peGlucyk7XG5PYmplY3QuYXNzaWduKE1hcmtkb3duTm9kZS5wcm90b3R5cGUsIGVsZW1lbnRNaXhpbnMpO1xuXG5leHBvcnQgZGVmYXVsdCBNYXJrZG93bk5vZGU7XG4iXSwibmFtZXMiOlsiTWFya2Rvd25Ob2RlIiwicnVsZU5hbWUiLCJjaGlsZE5vZGVzIiwicHJlY2VkZW5jZSIsIm9wYWNpdHkiLCJkb21FbGVtZW50IiwiZ2V0RE9NRWxlbWVudCIsInNldERPTUVsZW1lbnQiLCJ0YWdOYW1lIiwiY29udGV4dCIsImVsZW1lbnQiLCJlbGVtZW50TWFwIiwiY2xhc3NOYW1lIiwiY2xvc2luZ1RhZyIsInN0YXJ0aW5nVGFnIiwiYXR0cmlidXRlTmFtZSIsImF0dHJpYnV0ZVZhbHVlIiwiY2xhc3NIVE1MIiwiRU1QVFlfU1RSSU5HIiwiYXR0cmlidXRlSFRNTCIsInNlbGZDbG9zaW5nVGFnIiwiYWRqdXN0SW5kZW50IiwiaW5kZW50IiwiaXNEaXZpc2lvbk1hcmtkb3duTm9kZSIsImRpdmlzaW9uTWFya2Rvd25Ob2RlIiwiaXNQbGFpblRleHRNYXJrZG93bk5vZGUiLCJwbGFpblRleHRNYXJrZG93bk5vZGUiLCJsaW5lcyIsImNvbnN0cnVjdG9yIiwiZ2V0Q2hpbGROb2RlcyIsInJlZHVjZSIsImNoaWxkTm9kZSIsImNoaWxkTm9kZU1hcmtkb3duTm9kZSIsIm1hcmtkb3duTm9kZSIsIm1hcmtkb3duTm9kZUxpbmVzIiwibW91bnQiLCJwYXJlbnRET01FbGVtZW50Iiwic2libGluZ0RPTUVsZW1lbnQiLCJjcmVhdGVET01FbGVtZW50IiwiaW5zZXJ0QmVmb3JlIiwiZm9yRWFjaCIsInVubW91bnQiLCJyZW1vdmVDaGlsZCIsImlzTW91bnRlZCIsIm1vdW50ZWQiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJPYmplY3QiLCJhc3NpZ24iLCJzZXRBdHRyaWJ1dGUiLCJhc0hUTUwiLCJodG1sIiwiY2hpbGROb2Rlc0hUTUwiLCJjaGlsZE5vZGVzQXNIVE1MIiwiYXNQbGFpblRleHQiLCJwbGFpblRleHQiLCJjaGlsZE5vZGVzUGxhaW5UZXh0IiwiY2hpbGROb2Rlc0FzUGxhaW5UZXh0IiwibWFya2Rvd25Ob2RlSFRNTCIsIm1hcmtkb3duTm9kZVBsYWluVGV4dCIsImNsb25lIiwicmVtYWluaW5nQXJndW1lbnRzIiwiZnJvbVJ1bGVOYW1lQ2hpbGROb2Rlc0FuZE9wYWNpdHkiLCJDbGFzcyIsIk5vblRlcm1pbmFsTm9kZSIsInByb3RvdHlwZSIsIm5vZGVNaXhpbnMiLCJlbGVtZW50TWl4aW5zIl0sIm1hcHBpbmdzIjoiQUFBQTs7OzsrQkEyVEE7OztlQUFBOzs7NEJBelRnQztpRUFFVDsyREFDQTs4REFDRzt5QkFFRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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
|
package/lib/utilities/index.js
CHANGED
|
@@ -65,11 +65,8 @@ function createIndexMap(divisionMarkdownNodes, context) {
|
|
|
65
65
|
if (pageNumber !== null) {
|
|
66
66
|
var plainText = divisionMarkdownNode.asPlainText(context), wordsOrPhrases = wordsOrPhrasesFromPlainTextAndIndexMatches(plainText, indexMatches);
|
|
67
67
|
wordsOrPhrases.forEach(function(wordOrPhrase) {
|
|
68
|
-
var pageNumbers = indexMap[wordOrPhrase]
|
|
69
|
-
|
|
70
|
-
pageNumbers = [];
|
|
71
|
-
indexMap[wordOrPhrase] = pageNumbers;
|
|
72
|
-
}
|
|
68
|
+
var pageNumbers = indexMap.hasOwnProperty(wordOrPhrase) ? indexMap[wordOrPhrase] : [];
|
|
69
|
+
indexMap[wordOrPhrase] = pageNumbers;
|
|
73
70
|
pageNumbers.push(pageNumber);
|
|
74
71
|
});
|
|
75
72
|
}
|
|
@@ -258,4 +255,4 @@ function pluralToSingular(text) {
|
|
|
258
255
|
return text;
|
|
259
256
|
}
|
|
260
257
|
|
|
261
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgSW5kZXhNYXRjaCBmcm9tIFwiLi4vaW5kZXgvbWF0Y2hcIjtcblxuaW1wb3J0IHsgZm9yRWFjaCwgbWFwS2V5cywgbWFwVmFsdWVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9vYmplY3RcIjtcbmltcG9ydCB7IFlfU1RSSU5HLCBTX1NUUklORywgSUVTX1NUUklORywgRU1QVFlfU1RSSU5HLCBTSU5HTEVfU1BBQ0UsIFBBUkVOVEhFU0lTRURfU19TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgY29tcHJlc3MgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhNYXBGcm9tRGl2aXNpb25NYXJrZG93bk5vZGVzKGRpdmlzaW9uTWFya2Rvd25Ob2RlcywgY29udGV4dCkge1xuICBjb25zdCBpbmRleE1hcCA9IGNyZWF0ZUluZGV4TWFwKGRpdmlzaW9uTWFya2Rvd25Ob2RlcywgY29udGV4dCk7XG5cbiAgcmVtb3ZlSWdub3JlZFdvcmRzKGluZGV4TWFwLCBjb250ZXh0KTtcblxuICBhZGp1c3RNaXhlZFBsdXJhbHMoaW5kZXhNYXAsIGNvbnRleHQpO1xuXG4gIGFkanVzdFBsdXJhbFBsdXJhbHMoaW5kZXhNYXAsIGNvbnRleHQpO1xuXG4gIGFkanVzdFNpbmd1bGFyUGx1cmFscyhpbmRleE1hcCwgY29udGV4dCk7XG5cbiAgYWRqdXN0UHJvcGVyTm91bnMoaW5kZXhNYXAsIGNvbnRleHQpO1xuXG4gIGFkanVzdEFjcm9ueW1zKGluZGV4TWFwLCBjb250ZXh0KTtcblxuICBjb21wcmVzc1BhZ2VOdW1iZXJzKGluZGV4TWFwKTtcblxuICByZXR1cm4gaW5kZXhNYXA7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluZGV4TWFwKGRpdmlzaW9uTWFya2Rvd25Ob2RlcywgY29udGV4dCkge1xuICBjb25zdCBpbmRleE1hcCA9IHt9O1xuXG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IHBocmFzZXMgfSA9IGluZGV4T3B0aW9ucyxcbiAgICAgICAgaW5kZXhNYXRjaGVzID0gcGhyYXNlcy5tYXAoKHBocmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZGV4TWF0Y2ggPSBJbmRleE1hdGNoLmZyb21QaHJhc2UocGhyYXNlKTtcblxuICAgICAgICAgIHJldHVybiBpbmRleE1hdGNoO1xuICAgICAgICB9KTtcblxuICBkaXZpc2lvbk1hcmtkb3duTm9kZXMuZm9yRWFjaCgoZGl2aXNpb25NYXJrZG93bk5vZGUpID0+IHtcbiAgICBjb25zdCBwYWdlTnVtYmVyID0gZGl2aXNpb25NYXJrZG93bk5vZGUuZ2V0UGFnZU51bWJlcigpO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHBsYWluVGV4dCA9IGRpdmlzaW9uTWFya2Rvd25Ob2RlLmFzUGxhaW5UZXh0KGNvbnRleHQpLFxuICAgICAgICAgICAgd29yZHNPclBocmFzZXMgPSB3b3Jkc09yUGhyYXNlc0Zyb21QbGFpblRleHRBbmRJbmRleE1hdGNoZXMocGxhaW5UZXh0LCBpbmRleE1hdGNoZXMpO1xuXG4gICAgICB3b3Jkc09yUGhyYXNlcy5mb3JFYWNoKCh3b3JkT3JQaHJhc2UpID0+IHtcbiAgICAgICAgbGV0IHBhZ2VOdW1iZXJzID0gaW5kZXhNYXBbd29yZE9yUGhyYXNlXSB8fCBudWxsO1xuXG4gICAgICAgIGlmIChwYWdlTnVtYmVycyA9PT0gbnVsbCkge1xuICAgICAgICAgIHBhZ2VOdW1iZXJzID0gW107XG5cbiAgICAgICAgICBpbmRleE1hcFt3b3JkT3JQaHJhc2VdID0gcGFnZU51bWJlcnM7XG4gICAgICAgIH1cblxuICAgICAgICBwYWdlTnVtYmVycy5wdXNoKHBhZ2VOdW1iZXIpO1xuICAgICAgfSk7XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4gaW5kZXhNYXA7XG59XG5cbmZ1bmN0aW9uIHdvcmRzT3JQaHJhc2VzRnJvbVBsYWluVGV4dEFuZEluZGV4TWF0Y2hlcyhwbGFpblRleHQsIGluZGV4TWF0Y2hlcykge1xuICBsZXQgd29yZHNPclBocmFzZXM7XG5cbiAgcGxhaW5UZXh0ID0gcHJlcGFyZVBsYWluVGV4dChwbGFpblRleHQpOyAgLy8vXG5cbiAgaW5kZXhNYXRjaGVzLmZvckVhY2goKGluZGV4TWF0Y2gpID0+IHtcbiAgICBwbGFpblRleHQgPSBpbmRleE1hdGNoLnJlcGxhY2UocGxhaW5UZXh0KTtcbiAgfSk7XG5cbiAgd29yZHNPclBocmFzZXMgPSBwbGFpblRleHQuc3BsaXQoU0lOR0xFX1NQQUNFKTtcblxuICB3b3Jkc09yUGhyYXNlcyA9IHdvcmRzT3JQaHJhc2VzLm1hcCgod29yZE9yUGhyYXNlKSA9PiB7XG4gICAgd29yZE9yUGhyYXNlID0gSW5kZXhNYXRjaC5yZXZlcnQod29yZE9yUGhyYXNlKTsgIC8vL1xuXG4gICAgcmV0dXJuIHdvcmRPclBocmFzZTtcbiAgfSk7XG5cbiAgcmV0dXJuIHdvcmRzT3JQaHJhc2VzO1xufVxuXG5mdW5jdGlvbiBjb21wcmVzc1BhZ2VOdW1iZXJzKGluZGV4TWFwKSB7XG4gIG1hcFZhbHVlcyhpbmRleE1hcCwgKHdvcmRPclBocmFzZSwgcGFnZU51bWJlcnMpID0+IHtcbiAgICBjb21wcmVzcyhwYWdlTnVtYmVycywgKHBhZ2VOdW1iZXJBLCBwYWdlTnVtYmVyQikgPT4ge1xuICAgICAgaWYgKHBhZ2VOdW1iZXJBID09PSBwYWdlTnVtYmVyQikge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHBhZ2VOdW1iZXJzLnNvcnQoKHBhZ2VOdW1iZXJCLCBwYWdlTnVtYmVyQSkgPT4ge1xuICAgICAgcGFnZU51bWJlckEgPSBOdW1iZXIocGFnZU51bWJlckEpOyAgLy8vXG5cbiAgICAgIHBhZ2VOdW1iZXJCID0gTnVtYmVyKHBhZ2VOdW1iZXJCKTsgIC8vL1xuXG4gICAgICBjb25zdCBkaWZmZXJlbmNlID0gcGFnZU51bWJlckIgLSBwYWdlTnVtYmVyQTtcblxuICAgICAgcmV0dXJuIGRpZmZlcmVuY2U7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcGFnZU51bWJlcnM7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZW1vdmVJZ25vcmVkV29yZHMoaW5kZXhNYXAsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBpbmRleE9wdGlvbnMgfSA9IGNvbnRleHQsXG4gICAgICAgIHsgaWdub3JlZFdvcmRzIH0gPSBpbmRleE9wdGlvbnM7XG5cbiAgaWdub3JlZFdvcmRzLmZvckVhY2goKGlnbm9yZWRXb3JkKSA9PiB7XG4gICAgZGVsZXRlIGluZGV4TWFwW2lnbm9yZWRXb3JkXTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkanVzdFByb3Blck5vdW5zKGluZGV4TWFwLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IHByb3Blck5vdW5zIH0gPSBpbmRleE9wdGlvbnM7XG5cbiAgY29uc3QgbG93ZXJDYXNlUHJvcGVyTm91bnMgPSBwcm9wZXJOb3Vucy5tYXAoKHByb3Blck5vdW4pID0+IHtcbiAgICBjb25zdCBsb3dlckNhc2VQcm9wZXJOb3VuID0gcHJvcGVyTm91bi50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGxvd2VyQ2FzZVByb3Blck5vdW47XG4gIH0pO1xuXG4gIG1hcEtleXMoaW5kZXhNYXAsICh3b3JkT3JQaHJhc2UpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGxvd2VyQ2FzZVByb3Blck5vdW5zLmZpbmRJbmRleCgobG93ZXJDYXNlUHJvcGVyTm1hZSkgPT4ge1xuICAgICAgaWYgKGxvd2VyQ2FzZVByb3Blck5tYWUgPT09IHdvcmRPclBocmFzZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBwcm9wZXJOb3VuID0gcHJvcGVyTm91bnNbaW5kZXhdO1xuXG4gICAgICB3b3JkT3JQaHJhc2UgPSBwcm9wZXJOb3VuOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmRPclBocmFzZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHByZXBhcmVQbGFpblRleHQocGxhaW5UZXh0KSB7XG4gIHBsYWluVGV4dCA9IHBsYWluVGV4dC50b0xvd2VyQ2FzZSgpOyAgLy8vXG5cbiAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LnJlcGxhY2UoL1teYS16MC05XFwtIF0vZywgU0lOR0xFX1NQQUNFKTtcblxuICBwbGFpblRleHQgPSBwbGFpblRleHQucmVwbGFjZSgvXFxzKy9nLCBTSU5HTEVfU1BBQ0UpO1xuXG4gIHBsYWluVGV4dCA9IHBsYWluVGV4dC5yZXBsYWNlKC9eXFxzK3xcXHMrJC9nLCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiBwbGFpblRleHQ7XG59XG5cbmZ1bmN0aW9uIGFkanVzdEFjcm9ueW1zKGluZGV4TWFwLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IGFjcm9ueW1zIH0gPSBpbmRleE9wdGlvbnM7XG5cbiAgY29uc3QgbG93ZXJDYXNlQWNyb255bXMgPSBhY3Jvbnltcy5tYXAoKGFjcm9ueW0pID0+IHtcbiAgICBjb25zdCBsb3dlckNhc2VBY3JvbnltID0gYWNyb255bS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgcmV0dXJuIGxvd2VyQ2FzZUFjcm9ueW07XG4gIH0pO1xuXG4gIG1hcEtleXMoaW5kZXhNYXAsICh3b3JkT3JQaHJhc2UpID0+IHtcbiAgICBjb25zdCBpbmRleCA9IGxvd2VyQ2FzZUFjcm9ueW1zLmZpbmRJbmRleCgobG93ZXJDYXNlUHJvcGVyTm1hZSkgPT4ge1xuICAgICAgaWYgKGxvd2VyQ2FzZVByb3Blck5tYWUgPT09IHdvcmRPclBocmFzZSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICBjb25zdCBhY3JvbnltID0gYWNyb255bXNbaW5kZXhdO1xuXG4gICAgICB3b3JkT3JQaHJhc2UgPSBhY3JvbnltOyAgLy8vXG4gICAgfVxuXG4gICAgcmV0dXJuIHdvcmRPclBocmFzZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGFkanVzdE1peGVkUGx1cmFscyhpbmRleE1hcCwgY29udGV4dCkge1xuICBjb25zdCB7IGluZGV4T3B0aW9ucyB9ID0gY29udGV4dCxcbiAgICAgICAgeyBwbHVyYWxzIH0gPSBpbmRleE9wdGlvbnMsXG4gICAgICAgIG1peGVkUGx1cmFscyA9IHJlZHVjZVBsdXJhbHMocGx1cmFscywgaXNNaXhlZCksXG4gICAgICAgIHBsdXJhbFBsdXJhbHMgPSBtYXBQbHVyYWxzKG1peGVkUGx1cmFscywgbWl4ZWRUb1BsdXJhbCksXG4gICAgICAgIHNpbmd1bGFyUGx1cmFscyA9IG1hcFBsdXJhbHMobWl4ZWRQbHVyYWxzLCBtaXhlZFRvU2luZ3VsYXIpO1xuXG4gIGZvckVhY2goaW5kZXhNYXAsICh3b3JkT3JQaHJhc2UsIHBhZ2VOdW1iZXJzKSA9PiB7XG4gICAgY29uc3Qgc2luZ3VsYXJQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UgPSBzaW5ndWxhclBsdXJhbHMuaW5jbHVkZXMod29yZE9yUGhyYXNlKTtcblxuICAgIGlmIChzaW5ndWxhclBsdXJhbHNJbmNsdWRlc1dvcmRPclBocmFzZSkge1xuICAgICAgY29uc3Qgc2luZ3VsYXJXb3JkT3JQaHJhc2UgPSB3b3JkT3JQaHJhc2UsICAvLy9cbiAgICAgICAgICAgIHNpbmd1bGFyUGFnZU51bWJlcnMgPSBwYWdlTnVtYmVycywgIC8vL1xuICAgICAgICAgICAgbWl4ZWRXb3JkT3JQaHJhc2UgPSBzaW5ndWxhclRvTWl4ZWQoc2luZ3VsYXJXb3JkT3JQaHJhc2UpLFxuICAgICAgICAgICAgbWl4ZWRQYWdlTnVtYmVycyA9IGluZGV4TWFwW21peGVkV29yZE9yUGhyYXNlXSB8fCBbXTtcblxuICAgICAgcGFnZU51bWJlcnMgPSBbXG4gICAgICAgIC4uLnNpbmd1bGFyUGFnZU51bWJlcnMsXG4gICAgICAgIC4uLm1peGVkUGFnZU51bWJlcnNcbiAgICAgIF07XG5cbiAgICAgIGRlbGV0ZSBpbmRleE1hcFtzaW5ndWxhcldvcmRPclBocmFzZV07XG5cbiAgICAgIGluZGV4TWFwW21peGVkV29yZE9yUGhyYXNlXSA9IHBhZ2VOdW1iZXJzO1xuICAgIH1cblxuICAgIGNvbnN0IHBsdXJhbFBsdXJhbHNJbmNsdWRlc1dvcmRPclBocmFzZSA9IHBsdXJhbFBsdXJhbHMuaW5jbHVkZXMod29yZE9yUGhyYXNlKTtcblxuICAgIGlmIChwbHVyYWxQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UpIHtcbiAgICAgIGNvbnN0IHBsdXJhbFdvcmRPclBocmFzZSA9IHdvcmRPclBocmFzZSwgIC8vL1xuICAgICAgICAgICAgcGx1cmFsUGFnZU51bWJlcnMgPSBwYWdlTnVtYmVycywgIC8vL1xuICAgICAgICAgICAgbWl4ZWRXb3JkT3JQaHJhc2UgPSBwbHVyYWxUb01peGVkKHBsdXJhbFdvcmRPclBocmFzZSksXG4gICAgICAgICAgICBtaXhlZFBhZ2VOdW1iZXJzID0gaW5kZXhNYXBbbWl4ZWRXb3JkT3JQaHJhc2VdIHx8IFtdO1xuXG4gICAgICBwYWdlTnVtYmVycyA9IFtcbiAgICAgICAgLi4ucGx1cmFsUGFnZU51bWJlcnMsXG4gICAgICAgIC4uLm1peGVkUGFnZU51bWJlcnNcbiAgICAgIF07XG5cbiAgICAgIGRlbGV0ZSBpbmRleE1hcFtwbHVyYWxXb3JkT3JQaHJhc2VdO1xuXG4gICAgICBpbmRleE1hcFttaXhlZFdvcmRPclBocmFzZV0gPSBwYWdlTnVtYmVycztcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGp1c3RQbHVyYWxQbHVyYWxzKGluZGV4TWFwLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IHBsdXJhbHMgfSA9IGluZGV4T3B0aW9ucyxcbiAgICAgICAgcGx1cmFsUGx1cmFscyA9IHJlZHVjZVBsdXJhbHMocGx1cmFscywgaXNQbHVyYWwpLFxuICAgICAgICBzaW5ndWxhclBsdXJhbHMgPSBtYXBQbHVyYWxzKHBsdXJhbFBsdXJhbHMsIHBsdXJhbFRvU2luZ3VsYXIpO1xuXG4gIGZvckVhY2goaW5kZXhNYXAsICh3b3JkT3JQaHJhc2UsIHBhZ2VOdW1iZXJzKSA9PiB7XG4gICAgY29uc3Qgc2luZ3VsYXJQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UgPSBzaW5ndWxhclBsdXJhbHMuaW5jbHVkZXMod29yZE9yUGhyYXNlKTtcblxuICAgIGlmIChzaW5ndWxhclBsdXJhbHNJbmNsdWRlc1dvcmRPclBocmFzZSkge1xuICAgICAgY29uc3Qgc2luZ3VsYXJXb3JkT3JQaHJhc2UgPSB3b3JkT3JQaHJhc2UsICAvLy9cbiAgICAgICAgICAgIHNpbmd1bGFyUGFnZU51bWJlcnMgPSBwYWdlTnVtYmVycywgIC8vL1xuICAgICAgICAgICAgcGx1cmFsV29yZE9yUGhyYXNlID0gc2luZ3VsYXJUb1BsdXJhbCh3b3JkT3JQaHJhc2UpLFxuICAgICAgICAgICAgcGx1cmFsUGFnZU51bWJlcnMgPSBpbmRleE1hcFtwbHVyYWxXb3JkT3JQaHJhc2VdIHx8IFtdO1xuXG4gICAgICBwYWdlTnVtYmVycyA9IFtcbiAgICAgICAgLi4uc2luZ3VsYXJQYWdlTnVtYmVycyxcbiAgICAgICAgLi4ucGx1cmFsUGFnZU51bWJlcnNcbiAgICAgIF07XG5cbiAgICAgIGRlbGV0ZSBpbmRleE1hcFtzaW5ndWxhcldvcmRPclBocmFzZV07XG5cbiAgICAgIGluZGV4TWFwW3BsdXJhbFdvcmRPclBocmFzZV0gPSBwYWdlTnVtYmVycztcbiAgICB9XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGp1c3RTaW5ndWxhclBsdXJhbHMoaW5kZXhNYXAsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBpbmRleE9wdGlvbnMgfSA9IGNvbnRleHQsXG4gICAgICAgIHsgcGx1cmFscyB9ID0gaW5kZXhPcHRpb25zLFxuICAgICAgICBzaW5ndWxhclBsdXJhbHMgPSByZWR1Y2VQbHVyYWxzKHBsdXJhbHMsIGlzU2luZ3VsYXIpLFxuICAgICAgICBwbHVyYWxQbHVyYWxzID0gbWFwUGx1cmFscyhzaW5ndWxhclBsdXJhbHMsIHNpbmd1bGFyVG9QbHVyYWwpO1xuXG4gIGZvckVhY2goaW5kZXhNYXAsICh3b3JkT3JQaHJhc2UsIHBhZ2VOdW1iZXJzKSA9PiB7XG4gICAgICBjb25zdCBwbHVyYWxQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UgPSBwbHVyYWxQbHVyYWxzLmluY2x1ZGVzKHdvcmRPclBocmFzZSk7XG5cbiAgICAgIGlmIChwbHVyYWxQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UpIHtcbiAgICAgICAgY29uc3Qgc2luZ3VsYXJXb3JkT3JQaHJhc2UgPSBwbHVyYWxUb1Npbmd1bGFyKHdvcmRPclBocmFzZSksXG4gICAgICAgICAgICAgIHNpbmd1bGFyUGFnZU51bWJlcnMgPSBpbmRleE1hcFtzaW5ndWxhcldvcmRPclBocmFzZV0gfHwgW10sXG4gICAgICAgICAgICAgIHBsdXJhbFdvcmRPclBocmFzZSA9IHdvcmRPclBocmFzZSwgIC8vL1xuICAgICAgICAgICAgICBwbHVyYWxQYWdlTnVtYmVycyA9IHBhZ2VOdW1iZXJzOyAgLy8vXG5cbiAgICAgICAgcGFnZU51bWJlcnMgPSBbXG4gICAgICAgICAgLi4uc2luZ3VsYXJQYWdlTnVtYmVycyxcbiAgICAgICAgICAuLi5wbHVyYWxQYWdlTnVtYmVyc1xuICAgICAgICBdO1xuXG4gICAgICAgIGRlbGV0ZSBpbmRleE1hcFtwbHVyYWxXb3JkT3JQaHJhc2VdO1xuXG4gICAgICAgIGluZGV4TWFwW3Npbmd1bGFyV29yZE9yUGhyYXNlXSA9IHBhZ2VOdW1iZXJzO1xuICAgICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVkdWNlUGx1cmFscyhwbHVyYWxzLCBjYWxsYmFjaykge1xuICBwbHVyYWxzID0gcGx1cmFscy5yZWR1Y2UoKHBsdXJhbHMsIHBsdXJhbCkgPT4geyAvLy9cbiAgICBjb25zdCByZXN1bHQgPSBjYWxsYmFjayhwbHVyYWwpO1xuXG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgcGx1cmFscy5wdXNoKHBsdXJhbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsdXJhbHM7XG4gIH0sIFtdKTtcblxuICByZXR1cm4gcGx1cmFscztcbn1cblxuZnVuY3Rpb24gbWFwUGx1cmFscyhwbHVyYWxzLCBjYWxsYmFjaykge1xuICBwbHVyYWxzID0gcGx1cmFscy5tYXAoKHBsdXJhbCkgPT4geyAvLy9cbiAgICBwbHVyYWwgPSBjYWxsYmFjayhwbHVyYWwpO1xuXG4gICAgcmV0dXJuIHBsdXJhbDtcbiAgfSk7XG5cbiAgcmV0dXJuIHBsdXJhbHM7XG59XG5cbmZ1bmN0aW9uIGlzU2luZ3VsYXIodGV4dCkge1xuICBjb25zdCBpbmRleE1hdGNoZXMgPSAvW15zKV0kLy50ZXN0KHRleHQpLFxuICAgICAgICBzaW5ndWxhciA9IGluZGV4TWF0Y2hlczsgLy8vXG5cbiAgcmV0dXJuIHNpbmd1bGFyO1xufVxuXG5mdW5jdGlvbiBpc1BsdXJhbCh0ZXh0KSB7XG4gIGNvbnN0IGluZGV4TWF0Y2hlcyA9IC8oaWVzfHMpJC8udGVzdCh0ZXh0KSxcbiAgICAgICAgcGx1cmFsID0gaW5kZXhNYXRjaGVzOyAvLy9cblxuICByZXR1cm4gcGx1cmFsO1xufVxuXG5mdW5jdGlvbiBpc01peGVkKHRleHQpIHtcbiAgY29uc3QgaW5kZXhNYXRjaGVzID0gL1xcKHNcXCkkLy50ZXN0KHRleHQpLFxuICAgICAgICBtaXhlZCA9IGluZGV4TWF0Y2hlczsgLy8vXG5cbiAgcmV0dXJuIG1peGVkO1xufVxuXG5mdW5jdGlvbiBtaXhlZFRvUGx1cmFsKHRleHQpIHtcbiAgdGV4dCA9IHRleHQgLy8vXG4gICAgICAgICAgIC5yZXBsYWNlKC9cXChzXFwpJC8sIFNfU1RSSU5HKTtcblxuICByZXR1cm4gdGV4dDtcbn1cblxuZnVuY3Rpb24gcGx1cmFsVG9NaXhlZCh0ZXh0KSB7XG4gIHRleHQgPSB0ZXh0IC8vL1xuICAgICAgICAgICAucmVwbGFjZSgvcyQvLCBQQVJFTlRIRVNJU0VEX1NfU1RSSU5HKVxuXG4gIHJldHVybiB0ZXh0O1xufVxuXG5mdW5jdGlvbiBtaXhlZFRvU2luZ3VsYXIodGV4dCkge1xuICB0ZXh0ID0gdGV4dCAvLy9cbiAgICAgICAgICAucmVwbGFjZSgvXFwoc1xcKSQvLCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiB0ZXh0O1xufVxuXG5mdW5jdGlvbiBzaW5ndWxhclRvTWl4ZWQodGV4dCkge1xuICB0ZXh0ID0gYCR7dGV4dH0ocylgO1xuXG4gIHJldHVybiB0ZXh0O1xufVxuXG5mdW5jdGlvbiBzaW5ndWxhclRvUGx1cmFsKHRleHQpIHtcbiAgdGV4dCA9IGAke3RleHR9c2AgLy8vXG4gICAgICAgICAgIC5yZXBsYWNlKC95cyQvLCBJRVNfU1RSSU5HKTtcblxuICByZXR1cm4gdGV4dDtcbn1cblxuZnVuY3Rpb24gcGx1cmFsVG9TaW5ndWxhcih0ZXh0KSB7XG4gIHRleHQgPSB0ZXh0IC8vL1xuICAgICAgICAgICAucmVwbGFjZSgvaWVzJC8sIFlfU1RSSU5HKVxuICAgICAgICAgICAucmVwbGFjZSgvcyQvLCBFTVBUWV9TVFJJTkcpO1xuXG4gIHJldHVybiB0ZXh0O1xufVxuIl0sIm5hbWVzIjpbImluZGV4TWFwRnJvbURpdmlzaW9uTWFya2Rvd25Ob2RlcyIsImNvbXByZXNzIiwiYXJyYXlVdGlsaXRpZXMiLCJkaXZpc2lvbk1hcmtkb3duTm9kZXMiLCJjb250ZXh0IiwiaW5kZXhNYXAiLCJjcmVhdGVJbmRleE1hcCIsInJlbW92ZUlnbm9yZWRXb3JkcyIsImFkanVzdE1peGVkUGx1cmFscyIsImFkanVzdFBsdXJhbFBsdXJhbHMiLCJhZGp1c3RTaW5ndWxhclBsdXJhbHMiLCJhZGp1c3RQcm9wZXJOb3VucyIsImFkanVzdEFjcm9ueW1zIiwiY29tcHJlc3NQYWdlTnVtYmVycyIsImluZGV4T3B0aW9ucyIsInBocmFzZXMiLCJpbmRleE1hdGNoZXMiLCJtYXAiLCJwaHJhc2UiLCJpbmRleE1hdGNoIiwiSW5kZXhNYXRjaCIsImZyb21QaHJhc2UiLCJmb3JFYWNoIiwiZGl2aXNpb25NYXJrZG93bk5vZGUiLCJwYWdlTnVtYmVyIiwiZ2V0UGFnZU51bWJlciIsInBsYWluVGV4dCIsImFzUGxhaW5UZXh0Iiwid29yZHNPclBocmFzZXMiLCJ3b3Jkc09yUGhyYXNlc0Zyb21QbGFpblRleHRBbmRJbmRleE1hdGNoZXMiLCJ3b3JkT3JQaHJhc2UiLCJwYWdlTnVtYmVycyIsInB1c2giLCJwcmVwYXJlUGxhaW5UZXh0IiwicmVwbGFjZSIsInNwbGl0IiwiU0lOR0xFX1NQQUNFIiwicmV2ZXJ0IiwibWFwVmFsdWVzIiwicGFnZU51bWJlckEiLCJwYWdlTnVtYmVyQiIsInNvcnQiLCJOdW1iZXIiLCJkaWZmZXJlbmNlIiwiaWdub3JlZFdvcmRzIiwiaWdub3JlZFdvcmQiLCJwcm9wZXJOb3VucyIsImxvd2VyQ2FzZVByb3Blck5vdW5zIiwicHJvcGVyTm91biIsImxvd2VyQ2FzZVByb3Blck5vdW4iLCJ0b0xvd2VyQ2FzZSIsIm1hcEtleXMiLCJpbmRleCIsImZpbmRJbmRleCIsImxvd2VyQ2FzZVByb3Blck5tYWUiLCJFTVBUWV9TVFJJTkciLCJhY3JvbnltcyIsImxvd2VyQ2FzZUFjcm9ueW1zIiwiYWNyb255bSIsImxvd2VyQ2FzZUFjcm9ueW0iLCJwbHVyYWxzIiwibWl4ZWRQbHVyYWxzIiwicmVkdWNlUGx1cmFscyIsImlzTWl4ZWQiLCJwbHVyYWxQbHVyYWxzIiwibWFwUGx1cmFscyIsIm1peGVkVG9QbHVyYWwiLCJzaW5ndWxhclBsdXJhbHMiLCJtaXhlZFRvU2luZ3VsYXIiLCJzaW5ndWxhclBsdXJhbHNJbmNsdWRlc1dvcmRPclBocmFzZSIsImluY2x1ZGVzIiwic2luZ3VsYXJXb3JkT3JQaHJhc2UiLCJzaW5ndWxhclBhZ2VOdW1iZXJzIiwibWl4ZWRXb3JkT3JQaHJhc2UiLCJzaW5ndWxhclRvTWl4ZWQiLCJtaXhlZFBhZ2VOdW1iZXJzIiwicGx1cmFsUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlIiwicGx1cmFsV29yZE9yUGhyYXNlIiwicGx1cmFsUGFnZU51bWJlcnMiLCJwbHVyYWxUb01peGVkIiwiaXNQbHVyYWwiLCJwbHVyYWxUb1Npbmd1bGFyIiwic2luZ3VsYXJUb1BsdXJhbCIsImlzU2luZ3VsYXIiLCJjYWxsYmFjayIsInJlZHVjZSIsInBsdXJhbCIsInJlc3VsdCIsInRleHQiLCJ0ZXN0Iiwic2luZ3VsYXIiLCJtaXhlZCIsIlNfU1RSSU5HIiwiUEFSRU5USEVTSVNFRF9TX1NUUklORyIsIklFU19TVFJJTkciLCJZX1NUUklORyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV2dCQTs7O2VBQUFBOzs7eUJBVGU7NERBRVI7c0JBRXFCO3lCQUN1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuRyxJQUFNLEFBQUVDLFdBQWFDLHlCQUFjLENBQTNCRDtBQUVELFNBQVNELGtDQUFrQ0cscUJBQXFCLEVBQUVDLE9BQU87SUFDOUUsSUFBTUMsV0FBV0MsZUFBZUgsdUJBQXVCQztJQUV2REcsbUJBQW1CRixVQUFVRDtJQUU3QkksbUJBQW1CSCxVQUFVRDtJQUU3Qkssb0JBQW9CSixVQUFVRDtJQUU5Qk0sc0JBQXNCTCxVQUFVRDtJQUVoQ08sa0JBQWtCTixVQUFVRDtJQUU1QlEsZUFBZVAsVUFBVUQ7SUFFekJTLG9CQUFvQlI7SUFFcEIsT0FBT0E7QUFDVDtBQUVBLFNBQVNDLGVBQWVILHFCQUFxQixFQUFFQyxPQUFPO0lBQ3BELElBQU1DLFdBQVcsQ0FBQztJQUVsQixJQUFNLEFBQUVTLGVBQWlCVixRQUFqQlUsY0FDRixBQUFFQyxVQUFZRCxhQUFaQyxTQUNGQyxlQUFlRCxRQUFRRSxHQUFHLENBQUMsU0FBQ0M7UUFDMUIsSUFBTUMsYUFBYUMsY0FB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
|
|
258
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IGFycmF5VXRpbGl0aWVzIH0gZnJvbSBcIm5lY2Vzc2FyeVwiO1xuXG5pbXBvcnQgSW5kZXhNYXRjaCBmcm9tIFwiLi4vaW5kZXgvbWF0Y2hcIjtcblxuaW1wb3J0IHsgZm9yRWFjaCwgbWFwS2V5cywgbWFwVmFsdWVzIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9vYmplY3RcIjtcbmltcG9ydCB7IFlfU1RSSU5HLCBTX1NUUklORywgSUVTX1NUUklORywgRU1QVFlfU1RSSU5HLCBTSU5HTEVfU1BBQ0UsIFBBUkVOVEhFU0lTRURfU19TVFJJTkcgfSBmcm9tIFwiLi4vY29uc3RhbnRzXCI7XG5cbmNvbnN0IHsgY29tcHJlc3MgfSA9IGFycmF5VXRpbGl0aWVzO1xuXG5leHBvcnQgZnVuY3Rpb24gaW5kZXhNYXBGcm9tRGl2aXNpb25NYXJrZG93bk5vZGVzKGRpdmlzaW9uTWFya2Rvd25Ob2RlcywgY29udGV4dCkge1xuICBjb25zdCBpbmRleE1hcCA9IGNyZWF0ZUluZGV4TWFwKGRpdmlzaW9uTWFya2Rvd25Ob2RlcywgY29udGV4dCk7XG5cbiAgcmVtb3ZlSWdub3JlZFdvcmRzKGluZGV4TWFwLCBjb250ZXh0KTtcblxuICBhZGp1c3RNaXhlZFBsdXJhbHMoaW5kZXhNYXAsIGNvbnRleHQpO1xuXG4gIGFkanVzdFBsdXJhbFBsdXJhbHMoaW5kZXhNYXAsIGNvbnRleHQpO1xuXG4gIGFkanVzdFNpbmd1bGFyUGx1cmFscyhpbmRleE1hcCwgY29udGV4dCk7XG5cbiAgYWRqdXN0UHJvcGVyTm91bnMoaW5kZXhNYXAsIGNvbnRleHQpO1xuXG4gIGFkanVzdEFjcm9ueW1zKGluZGV4TWFwLCBjb250ZXh0KTtcblxuICBjb21wcmVzc1BhZ2VOdW1iZXJzKGluZGV4TWFwKTtcblxuICByZXR1cm4gaW5kZXhNYXA7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUluZGV4TWFwKGRpdmlzaW9uTWFya2Rvd25Ob2RlcywgY29udGV4dCkge1xuICBjb25zdCBpbmRleE1hcCA9IHt9O1xuXG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IHBocmFzZXMgfSA9IGluZGV4T3B0aW9ucyxcbiAgICAgICAgaW5kZXhNYXRjaGVzID0gcGhyYXNlcy5tYXAoKHBocmFzZSkgPT4ge1xuICAgICAgICAgIGNvbnN0IGluZGV4TWF0Y2ggPSBJbmRleE1hdGNoLmZyb21QaHJhc2UocGhyYXNlKTtcblxuICAgICAgICAgIHJldHVybiBpbmRleE1hdGNoO1xuICAgICAgICB9KTtcblxuICBkaXZpc2lvbk1hcmtkb3duTm9kZXMuZm9yRWFjaCgoZGl2aXNpb25NYXJrZG93bk5vZGUpID0+IHtcbiAgICBjb25zdCBwYWdlTnVtYmVyID0gZGl2aXNpb25NYXJrZG93bk5vZGUuZ2V0UGFnZU51bWJlcigpO1xuXG4gICAgaWYgKHBhZ2VOdW1iZXIgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IHBsYWluVGV4dCA9IGRpdmlzaW9uTWFya2Rvd25Ob2RlLmFzUGxhaW5UZXh0KGNvbnRleHQpLFxuICAgICAgICAgICAgd29yZHNPclBocmFzZXMgPSB3b3Jkc09yUGhyYXNlc0Zyb21QbGFpblRleHRBbmRJbmRleE1hdGNoZXMocGxhaW5UZXh0LCBpbmRleE1hdGNoZXMpO1xuXG4gICAgICB3b3Jkc09yUGhyYXNlcy5mb3JFYWNoKCh3b3JkT3JQaHJhc2UpID0+IHtcbiAgICAgICAgY29uc3QgcGFnZU51bWJlcnMgPSBpbmRleE1hcC5oYXNPd25Qcm9wZXJ0eSh3b3JkT3JQaHJhc2UpID9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4TWFwW3dvcmRPclBocmFzZV0gOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXTtcblxuICAgICAgICBpbmRleE1hcFt3b3JkT3JQaHJhc2VdID0gcGFnZU51bWJlcnM7XG5cbiAgICAgICAgcGFnZU51bWJlcnMucHVzaChwYWdlTnVtYmVyKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGluZGV4TWFwO1xufVxuXG5mdW5jdGlvbiB3b3Jkc09yUGhyYXNlc0Zyb21QbGFpblRleHRBbmRJbmRleE1hdGNoZXMocGxhaW5UZXh0LCBpbmRleE1hdGNoZXMpIHtcbiAgbGV0IHdvcmRzT3JQaHJhc2VzO1xuXG4gIHBsYWluVGV4dCA9IHByZXBhcmVQbGFpblRleHQocGxhaW5UZXh0KTsgIC8vL1xuXG4gIGluZGV4TWF0Y2hlcy5mb3JFYWNoKChpbmRleE1hdGNoKSA9PiB7XG4gICAgcGxhaW5UZXh0ID0gaW5kZXhNYXRjaC5yZXBsYWNlKHBsYWluVGV4dCk7XG4gIH0pO1xuXG4gIHdvcmRzT3JQaHJhc2VzID0gcGxhaW5UZXh0LnNwbGl0KFNJTkdMRV9TUEFDRSk7XG5cbiAgd29yZHNPclBocmFzZXMgPSB3b3Jkc09yUGhyYXNlcy5tYXAoKHdvcmRPclBocmFzZSkgPT4ge1xuICAgIHdvcmRPclBocmFzZSA9IEluZGV4TWF0Y2gucmV2ZXJ0KHdvcmRPclBocmFzZSk7ICAvLy9cblxuICAgIHJldHVybiB3b3JkT3JQaHJhc2U7XG4gIH0pO1xuXG4gIHJldHVybiB3b3Jkc09yUGhyYXNlcztcbn1cblxuZnVuY3Rpb24gY29tcHJlc3NQYWdlTnVtYmVycyhpbmRleE1hcCkge1xuICBtYXBWYWx1ZXMoaW5kZXhNYXAsICh3b3JkT3JQaHJhc2UsIHBhZ2VOdW1iZXJzKSA9PiB7XG4gICAgY29tcHJlc3MocGFnZU51bWJlcnMsIChwYWdlTnVtYmVyQSwgcGFnZU51bWJlckIpID0+IHtcbiAgICAgIGlmIChwYWdlTnVtYmVyQSA9PT0gcGFnZU51bWJlckIpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBwYWdlTnVtYmVycy5zb3J0KChwYWdlTnVtYmVyQiwgcGFnZU51bWJlckEpID0+IHtcbiAgICAgIHBhZ2VOdW1iZXJBID0gTnVtYmVyKHBhZ2VOdW1iZXJBKTsgIC8vL1xuXG4gICAgICBwYWdlTnVtYmVyQiA9IE51bWJlcihwYWdlTnVtYmVyQik7ICAvLy9cblxuICAgICAgY29uc3QgZGlmZmVyZW5jZSA9IHBhZ2VOdW1iZXJCIC0gcGFnZU51bWJlckE7XG5cbiAgICAgIHJldHVybiBkaWZmZXJlbmNlO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHBhZ2VOdW1iZXJzO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSWdub3JlZFdvcmRzKGluZGV4TWFwLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IGlnbm9yZWRXb3JkcyB9ID0gaW5kZXhPcHRpb25zO1xuXG4gIGlnbm9yZWRXb3Jkcy5mb3JFYWNoKChpZ25vcmVkV29yZCkgPT4ge1xuICAgIGRlbGV0ZSBpbmRleE1hcFtpZ25vcmVkV29yZF07XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGp1c3RQcm9wZXJOb3VucyhpbmRleE1hcCwgY29udGV4dCkge1xuICBjb25zdCB7IGluZGV4T3B0aW9ucyB9ID0gY29udGV4dCxcbiAgICAgICAgeyBwcm9wZXJOb3VucyB9ID0gaW5kZXhPcHRpb25zO1xuXG4gIGNvbnN0IGxvd2VyQ2FzZVByb3Blck5vdW5zID0gcHJvcGVyTm91bnMubWFwKChwcm9wZXJOb3VuKSA9PiB7XG4gICAgY29uc3QgbG93ZXJDYXNlUHJvcGVyTm91biA9IHByb3Blck5vdW4udG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiBsb3dlckNhc2VQcm9wZXJOb3VuO1xuICB9KTtcblxuICBtYXBLZXlzKGluZGV4TWFwLCAod29yZE9yUGhyYXNlKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBsb3dlckNhc2VQcm9wZXJOb3Vucy5maW5kSW5kZXgoKGxvd2VyQ2FzZVByb3Blck5tYWUpID0+IHtcbiAgICAgIGlmIChsb3dlckNhc2VQcm9wZXJObWFlID09PSB3b3JkT3JQaHJhc2UpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgcHJvcGVyTm91biA9IHByb3Blck5vdW5zW2luZGV4XTtcblxuICAgICAgd29yZE9yUGhyYXNlID0gcHJvcGVyTm91bjsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiB3b3JkT3JQaHJhc2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBwcmVwYXJlUGxhaW5UZXh0KHBsYWluVGV4dCkge1xuICBwbGFpblRleHQgPSBwbGFpblRleHQudG9Mb3dlckNhc2UoKTsgIC8vL1xuXG4gIHBsYWluVGV4dCA9IHBsYWluVGV4dC5yZXBsYWNlKC9bXmEtejAtOVxcLSBdL2csIFNJTkdMRV9TUEFDRSk7XG5cbiAgcGxhaW5UZXh0ID0gcGxhaW5UZXh0LnJlcGxhY2UoL1xccysvZywgU0lOR0xFX1NQQUNFKTtcblxuICBwbGFpblRleHQgPSBwbGFpblRleHQucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gcGxhaW5UZXh0O1xufVxuXG5mdW5jdGlvbiBhZGp1c3RBY3JvbnltcyhpbmRleE1hcCwgY29udGV4dCkge1xuICBjb25zdCB7IGluZGV4T3B0aW9ucyB9ID0gY29udGV4dCxcbiAgICAgICAgeyBhY3JvbnltcyB9ID0gaW5kZXhPcHRpb25zO1xuXG4gIGNvbnN0IGxvd2VyQ2FzZUFjcm9ueW1zID0gYWNyb255bXMubWFwKChhY3JvbnltKSA9PiB7XG4gICAgY29uc3QgbG93ZXJDYXNlQWNyb255bSA9IGFjcm9ueW0udG9Mb3dlckNhc2UoKTtcblxuICAgIHJldHVybiBsb3dlckNhc2VBY3JvbnltO1xuICB9KTtcblxuICBtYXBLZXlzKGluZGV4TWFwLCAod29yZE9yUGhyYXNlKSA9PiB7XG4gICAgY29uc3QgaW5kZXggPSBsb3dlckNhc2VBY3Jvbnltcy5maW5kSW5kZXgoKGxvd2VyQ2FzZVByb3Blck5tYWUpID0+IHtcbiAgICAgIGlmIChsb3dlckNhc2VQcm9wZXJObWFlID09PSB3b3JkT3JQaHJhc2UpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgY29uc3QgYWNyb255bSA9IGFjcm9ueW1zW2luZGV4XTtcblxuICAgICAgd29yZE9yUGhyYXNlID0gYWNyb255bTsgIC8vL1xuICAgIH1cblxuICAgIHJldHVybiB3b3JkT3JQaHJhc2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBhZGp1c3RNaXhlZFBsdXJhbHMoaW5kZXhNYXAsIGNvbnRleHQpIHtcbiAgY29uc3QgeyBpbmRleE9wdGlvbnMgfSA9IGNvbnRleHQsXG4gICAgICAgIHsgcGx1cmFscyB9ID0gaW5kZXhPcHRpb25zLFxuICAgICAgICBtaXhlZFBsdXJhbHMgPSByZWR1Y2VQbHVyYWxzKHBsdXJhbHMsIGlzTWl4ZWQpLFxuICAgICAgICBwbHVyYWxQbHVyYWxzID0gbWFwUGx1cmFscyhtaXhlZFBsdXJhbHMsIG1peGVkVG9QbHVyYWwpLFxuICAgICAgICBzaW5ndWxhclBsdXJhbHMgPSBtYXBQbHVyYWxzKG1peGVkUGx1cmFscywgbWl4ZWRUb1Npbmd1bGFyKTtcblxuICBmb3JFYWNoKGluZGV4TWFwLCAod29yZE9yUGhyYXNlLCBwYWdlTnVtYmVycykgPT4ge1xuICAgIGNvbnN0IHNpbmd1bGFyUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlID0gc2luZ3VsYXJQbHVyYWxzLmluY2x1ZGVzKHdvcmRPclBocmFzZSk7XG5cbiAgICBpZiAoc2luZ3VsYXJQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UpIHtcbiAgICAgIGNvbnN0IHNpbmd1bGFyV29yZE9yUGhyYXNlID0gd29yZE9yUGhyYXNlLCAgLy8vXG4gICAgICAgICAgICBzaW5ndWxhclBhZ2VOdW1iZXJzID0gcGFnZU51bWJlcnMsICAvLy9cbiAgICAgICAgICAgIG1peGVkV29yZE9yUGhyYXNlID0gc2luZ3VsYXJUb01peGVkKHNpbmd1bGFyV29yZE9yUGhyYXNlKSxcbiAgICAgICAgICAgIG1peGVkUGFnZU51bWJlcnMgPSBpbmRleE1hcFttaXhlZFdvcmRPclBocmFzZV0gfHwgW107XG5cbiAgICAgIHBhZ2VOdW1iZXJzID0gW1xuICAgICAgICAuLi5zaW5ndWxhclBhZ2VOdW1iZXJzLFxuICAgICAgICAuLi5taXhlZFBhZ2VOdW1iZXJzXG4gICAgICBdO1xuXG4gICAgICBkZWxldGUgaW5kZXhNYXBbc2luZ3VsYXJXb3JkT3JQaHJhc2VdO1xuXG4gICAgICBpbmRleE1hcFttaXhlZFdvcmRPclBocmFzZV0gPSBwYWdlTnVtYmVycztcbiAgICB9XG5cbiAgICBjb25zdCBwbHVyYWxQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UgPSBwbHVyYWxQbHVyYWxzLmluY2x1ZGVzKHdvcmRPclBocmFzZSk7XG5cbiAgICBpZiAocGx1cmFsUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlKSB7XG4gICAgICBjb25zdCBwbHVyYWxXb3JkT3JQaHJhc2UgPSB3b3JkT3JQaHJhc2UsICAvLy9cbiAgICAgICAgICAgIHBsdXJhbFBhZ2VOdW1iZXJzID0gcGFnZU51bWJlcnMsICAvLy9cbiAgICAgICAgICAgIG1peGVkV29yZE9yUGhyYXNlID0gcGx1cmFsVG9NaXhlZChwbHVyYWxXb3JkT3JQaHJhc2UpLFxuICAgICAgICAgICAgbWl4ZWRQYWdlTnVtYmVycyA9IGluZGV4TWFwW21peGVkV29yZE9yUGhyYXNlXSB8fCBbXTtcblxuICAgICAgcGFnZU51bWJlcnMgPSBbXG4gICAgICAgIC4uLnBsdXJhbFBhZ2VOdW1iZXJzLFxuICAgICAgICAuLi5taXhlZFBhZ2VOdW1iZXJzXG4gICAgICBdO1xuXG4gICAgICBkZWxldGUgaW5kZXhNYXBbcGx1cmFsV29yZE9yUGhyYXNlXTtcblxuICAgICAgaW5kZXhNYXBbbWl4ZWRXb3JkT3JQaHJhc2VdID0gcGFnZU51bWJlcnM7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRqdXN0UGx1cmFsUGx1cmFscyhpbmRleE1hcCwgY29udGV4dCkge1xuICBjb25zdCB7IGluZGV4T3B0aW9ucyB9ID0gY29udGV4dCxcbiAgICAgICAgeyBwbHVyYWxzIH0gPSBpbmRleE9wdGlvbnMsXG4gICAgICAgIHBsdXJhbFBsdXJhbHMgPSByZWR1Y2VQbHVyYWxzKHBsdXJhbHMsIGlzUGx1cmFsKSxcbiAgICAgICAgc2luZ3VsYXJQbHVyYWxzID0gbWFwUGx1cmFscyhwbHVyYWxQbHVyYWxzLCBwbHVyYWxUb1Npbmd1bGFyKTtcblxuICBmb3JFYWNoKGluZGV4TWFwLCAod29yZE9yUGhyYXNlLCBwYWdlTnVtYmVycykgPT4ge1xuICAgIGNvbnN0IHNpbmd1bGFyUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlID0gc2luZ3VsYXJQbHVyYWxzLmluY2x1ZGVzKHdvcmRPclBocmFzZSk7XG5cbiAgICBpZiAoc2luZ3VsYXJQbHVyYWxzSW5jbHVkZXNXb3JkT3JQaHJhc2UpIHtcbiAgICAgIGNvbnN0IHNpbmd1bGFyV29yZE9yUGhyYXNlID0gd29yZE9yUGhyYXNlLCAgLy8vXG4gICAgICAgICAgICBzaW5ndWxhclBhZ2VOdW1iZXJzID0gcGFnZU51bWJlcnMsICAvLy9cbiAgICAgICAgICAgIHBsdXJhbFdvcmRPclBocmFzZSA9IHNpbmd1bGFyVG9QbHVyYWwod29yZE9yUGhyYXNlKSxcbiAgICAgICAgICAgIHBsdXJhbFBhZ2VOdW1iZXJzID0gaW5kZXhNYXBbcGx1cmFsV29yZE9yUGhyYXNlXSB8fCBbXTtcblxuICAgICAgcGFnZU51bWJlcnMgPSBbXG4gICAgICAgIC4uLnNpbmd1bGFyUGFnZU51bWJlcnMsXG4gICAgICAgIC4uLnBsdXJhbFBhZ2VOdW1iZXJzXG4gICAgICBdO1xuXG4gICAgICBkZWxldGUgaW5kZXhNYXBbc2luZ3VsYXJXb3JkT3JQaHJhc2VdO1xuXG4gICAgICBpbmRleE1hcFtwbHVyYWxXb3JkT3JQaHJhc2VdID0gcGFnZU51bWJlcnM7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gYWRqdXN0U2luZ3VsYXJQbHVyYWxzKGluZGV4TWFwLCBjb250ZXh0KSB7XG4gIGNvbnN0IHsgaW5kZXhPcHRpb25zIH0gPSBjb250ZXh0LFxuICAgICAgICB7IHBsdXJhbHMgfSA9IGluZGV4T3B0aW9ucyxcbiAgICAgICAgc2luZ3VsYXJQbHVyYWxzID0gcmVkdWNlUGx1cmFscyhwbHVyYWxzLCBpc1Npbmd1bGFyKSxcbiAgICAgICAgcGx1cmFsUGx1cmFscyA9IG1hcFBsdXJhbHMoc2luZ3VsYXJQbHVyYWxzLCBzaW5ndWxhclRvUGx1cmFsKTtcblxuICBmb3JFYWNoKGluZGV4TWFwLCAod29yZE9yUGhyYXNlLCBwYWdlTnVtYmVycykgPT4ge1xuICAgICAgY29uc3QgcGx1cmFsUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlID0gcGx1cmFsUGx1cmFscy5pbmNsdWRlcyh3b3JkT3JQaHJhc2UpO1xuXG4gICAgICBpZiAocGx1cmFsUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlKSB7XG4gICAgICAgIGNvbnN0IHNpbmd1bGFyV29yZE9yUGhyYXNlID0gcGx1cmFsVG9TaW5ndWxhcih3b3JkT3JQaHJhc2UpLFxuICAgICAgICAgICAgICBzaW5ndWxhclBhZ2VOdW1iZXJzID0gaW5kZXhNYXBbc2luZ3VsYXJXb3JkT3JQaHJhc2VdIHx8IFtdLFxuICAgICAgICAgICAgICBwbHVyYWxXb3JkT3JQaHJhc2UgPSB3b3JkT3JQaHJhc2UsICAvLy9cbiAgICAgICAgICAgICAgcGx1cmFsUGFnZU51bWJlcnMgPSBwYWdlTnVtYmVyczsgIC8vL1xuXG4gICAgICAgIHBhZ2VOdW1iZXJzID0gW1xuICAgICAgICAgIC4uLnNpbmd1bGFyUGFnZU51bWJlcnMsXG4gICAgICAgICAgLi4ucGx1cmFsUGFnZU51bWJlcnNcbiAgICAgICAgXTtcblxuICAgICAgICBkZWxldGUgaW5kZXhNYXBbcGx1cmFsV29yZE9yUGhyYXNlXTtcblxuICAgICAgICBpbmRleE1hcFtzaW5ndWxhcldvcmRPclBocmFzZV0gPSBwYWdlTnVtYmVycztcbiAgICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZVBsdXJhbHMocGx1cmFscywgY2FsbGJhY2spIHtcbiAgcGx1cmFscyA9IHBsdXJhbHMucmVkdWNlKChwbHVyYWxzLCBwbHVyYWwpID0+IHsgLy8vXG4gICAgY29uc3QgcmVzdWx0ID0gY2FsbGJhY2socGx1cmFsKTtcblxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHBsdXJhbHMucHVzaChwbHVyYWwpO1xuICAgIH1cblxuICAgIHJldHVybiBwbHVyYWxzO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIHBsdXJhbHM7XG59XG5cbmZ1bmN0aW9uIG1hcFBsdXJhbHMocGx1cmFscywgY2FsbGJhY2spIHtcbiAgcGx1cmFscyA9IHBsdXJhbHMubWFwKChwbHVyYWwpID0+IHsgLy8vXG4gICAgcGx1cmFsID0gY2FsbGJhY2socGx1cmFsKTtcblxuICAgIHJldHVybiBwbHVyYWw7XG4gIH0pO1xuXG4gIHJldHVybiBwbHVyYWxzO1xufVxuXG5mdW5jdGlvbiBpc1Npbmd1bGFyKHRleHQpIHtcbiAgY29uc3QgaW5kZXhNYXRjaGVzID0gL1tecyldJC8udGVzdCh0ZXh0KSxcbiAgICAgICAgc2luZ3VsYXIgPSBpbmRleE1hdGNoZXM7IC8vL1xuXG4gIHJldHVybiBzaW5ndWxhcjtcbn1cblxuZnVuY3Rpb24gaXNQbHVyYWwodGV4dCkge1xuICBjb25zdCBpbmRleE1hdGNoZXMgPSAvKGllc3xzKSQvLnRlc3QodGV4dCksXG4gICAgICAgIHBsdXJhbCA9IGluZGV4TWF0Y2hlczsgLy8vXG5cbiAgcmV0dXJuIHBsdXJhbDtcbn1cblxuZnVuY3Rpb24gaXNNaXhlZCh0ZXh0KSB7XG4gIGNvbnN0IGluZGV4TWF0Y2hlcyA9IC9cXChzXFwpJC8udGVzdCh0ZXh0KSxcbiAgICAgICAgbWl4ZWQgPSBpbmRleE1hdGNoZXM7IC8vL1xuXG4gIHJldHVybiBtaXhlZDtcbn1cblxuZnVuY3Rpb24gbWl4ZWRUb1BsdXJhbCh0ZXh0KSB7XG4gIHRleHQgPSB0ZXh0IC8vL1xuICAgICAgICAgICAucmVwbGFjZSgvXFwoc1xcKSQvLCBTX1NUUklORyk7XG5cbiAgcmV0dXJuIHRleHQ7XG59XG5cbmZ1bmN0aW9uIHBsdXJhbFRvTWl4ZWQodGV4dCkge1xuICB0ZXh0ID0gdGV4dCAvLy9cbiAgICAgICAgICAgLnJlcGxhY2UoL3MkLywgUEFSRU5USEVTSVNFRF9TX1NUUklORylcblxuICByZXR1cm4gdGV4dDtcbn1cblxuZnVuY3Rpb24gbWl4ZWRUb1Npbmd1bGFyKHRleHQpIHtcbiAgdGV4dCA9IHRleHQgLy8vXG4gICAgICAgICAgLnJlcGxhY2UoL1xcKHNcXCkkLywgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gdGV4dDtcbn1cblxuZnVuY3Rpb24gc2luZ3VsYXJUb01peGVkKHRleHQpIHtcbiAgdGV4dCA9IGAke3RleHR9KHMpYDtcblxuICByZXR1cm4gdGV4dDtcbn1cblxuZnVuY3Rpb24gc2luZ3VsYXJUb1BsdXJhbCh0ZXh0KSB7XG4gIHRleHQgPSBgJHt0ZXh0fXNgIC8vL1xuICAgICAgICAgICAucmVwbGFjZSgveXMkLywgSUVTX1NUUklORyk7XG5cbiAgcmV0dXJuIHRleHQ7XG59XG5cbmZ1bmN0aW9uIHBsdXJhbFRvU2luZ3VsYXIodGV4dCkge1xuICB0ZXh0ID0gdGV4dCAvLy9cbiAgICAgICAgICAgLnJlcGxhY2UoL2llcyQvLCBZX1NUUklORylcbiAgICAgICAgICAgLnJlcGxhY2UoL3MkLywgRU1QVFlfU1RSSU5HKTtcblxuICByZXR1cm4gdGV4dDtcbn1cbiJdLCJuYW1lcyI6WyJpbmRleE1hcEZyb21EaXZpc2lvbk1hcmtkb3duTm9kZXMiLCJjb21wcmVzcyIsImFycmF5VXRpbGl0aWVzIiwiZGl2aXNpb25NYXJrZG93bk5vZGVzIiwiY29udGV4dCIsImluZGV4TWFwIiwiY3JlYXRlSW5kZXhNYXAiLCJyZW1vdmVJZ25vcmVkV29yZHMiLCJhZGp1c3RNaXhlZFBsdXJhbHMiLCJhZGp1c3RQbHVyYWxQbHVyYWxzIiwiYWRqdXN0U2luZ3VsYXJQbHVyYWxzIiwiYWRqdXN0UHJvcGVyTm91bnMiLCJhZGp1c3RBY3JvbnltcyIsImNvbXByZXNzUGFnZU51bWJlcnMiLCJpbmRleE9wdGlvbnMiLCJwaHJhc2VzIiwiaW5kZXhNYXRjaGVzIiwibWFwIiwicGhyYXNlIiwiaW5kZXhNYXRjaCIsIkluZGV4TWF0Y2giLCJmcm9tUGhyYXNlIiwiZm9yRWFjaCIsImRpdmlzaW9uTWFya2Rvd25Ob2RlIiwicGFnZU51bWJlciIsImdldFBhZ2VOdW1iZXIiLCJwbGFpblRleHQiLCJhc1BsYWluVGV4dCIsIndvcmRzT3JQaHJhc2VzIiwid29yZHNPclBocmFzZXNGcm9tUGxhaW5UZXh0QW5kSW5kZXhNYXRjaGVzIiwid29yZE9yUGhyYXNlIiwicGFnZU51bWJlcnMiLCJoYXNPd25Qcm9wZXJ0eSIsInB1c2giLCJwcmVwYXJlUGxhaW5UZXh0IiwicmVwbGFjZSIsInNwbGl0IiwiU0lOR0xFX1NQQUNFIiwicmV2ZXJ0IiwibWFwVmFsdWVzIiwicGFnZU51bWJlckEiLCJwYWdlTnVtYmVyQiIsInNvcnQiLCJOdW1iZXIiLCJkaWZmZXJlbmNlIiwiaWdub3JlZFdvcmRzIiwiaWdub3JlZFdvcmQiLCJwcm9wZXJOb3VucyIsImxvd2VyQ2FzZVByb3Blck5vdW5zIiwicHJvcGVyTm91biIsImxvd2VyQ2FzZVByb3Blck5vdW4iLCJ0b0xvd2VyQ2FzZSIsIm1hcEtleXMiLCJpbmRleCIsImZpbmRJbmRleCIsImxvd2VyQ2FzZVByb3Blck5tYWUiLCJFTVBUWV9TVFJJTkciLCJhY3JvbnltcyIsImxvd2VyQ2FzZUFjcm9ueW1zIiwiYWNyb255bSIsImxvd2VyQ2FzZUFjcm9ueW0iLCJwbHVyYWxzIiwibWl4ZWRQbHVyYWxzIiwicmVkdWNlUGx1cmFscyIsImlzTWl4ZWQiLCJwbHVyYWxQbHVyYWxzIiwibWFwUGx1cmFscyIsIm1peGVkVG9QbHVyYWwiLCJzaW5ndWxhclBsdXJhbHMiLCJtaXhlZFRvU2luZ3VsYXIiLCJzaW5ndWxhclBsdXJhbHNJbmNsdWRlc1dvcmRPclBocmFzZSIsImluY2x1ZGVzIiwic2luZ3VsYXJXb3JkT3JQaHJhc2UiLCJzaW5ndWxhclBhZ2VOdW1iZXJzIiwibWl4ZWRXb3JkT3JQaHJhc2UiLCJzaW5ndWxhclRvTWl4ZWQiLCJtaXhlZFBhZ2VOdW1iZXJzIiwicGx1cmFsUGx1cmFsc0luY2x1ZGVzV29yZE9yUGhyYXNlIiwicGx1cmFsV29yZE9yUGhyYXNlIiwicGx1cmFsUGFnZU51bWJlcnMiLCJwbHVyYWxUb01peGVkIiwiaXNQbHVyYWwiLCJwbHVyYWxUb1Npbmd1bGFyIiwic2luZ3VsYXJUb1BsdXJhbCIsImlzU2luZ3VsYXIiLCJjYWxsYmFjayIsInJlZHVjZSIsInBsdXJhbCIsInJlc3VsdCIsInRleHQiLCJ0ZXN0Iiwic2luZ3VsYXIiLCJtaXhlZCIsIlNfU1RSSU5HIiwiUEFSRU5USEVTSVNFRF9TX1NUUklORyIsIklFU19TVFJJTkciLCJZX1NUUklORyJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBV2dCQTs7O2VBQUFBOzs7eUJBVGU7NERBRVI7c0JBRXFCO3lCQUN1RDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVuRyxJQUFNLEFBQUVDLFdBQWFDLHlCQUFjLENBQTNCRDtBQUVELFNBQVNELGtDQUFrQ0cscUJBQXFCLEVBQUVDLE9BQU87SUFDOUUsSUFBTUMsV0FBV0MsZUFBZUgsdUJBQXVCQztJQUV2REcsbUJBQW1CRixVQUFVRDtJQUU3QkksbUJBQW1CSCxVQUFVRDtJQUU3Qkssb0JBQW9CSixVQUFVRDtJQUU5Qk0sc0JBQXNCTCxVQUFVRDtJQUVoQ08sa0JBQWtCTixVQUFVRDtJQUU1QlEsZUFBZVAsVUFBVUQ7SUFFekJTLG9CQUFvQlI7SUFFcEIsT0FBT0E7QUFDVDtBQUVBLFNBQVNDLGVBQWVILHFCQUFxQixFQUFFQyxPQUFPO0lBQ3BELElBQU1DLFdBQVcsQ0FBQztJQUVsQixJQUFNLEFBQUVTLGVBQWlCVixRQUFqQlUsY0FDRixBQUFFQyxVQUFZRCxhQUFaQyxTQUNGQyxlQUFlRCxRQUFR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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "highmark-markdown",
|
|
3
3
|
"author": "James Smith",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.48",
|
|
5
5
|
"license": "MIT, Anti-996",
|
|
6
6
|
"homepage": "https://github.com/djalbat/highmark-markdown",
|
|
7
7
|
"description": "Highmark's Markdown and Markdown Style languages.",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"necessary": "^14.0.1",
|
|
14
|
-
"occam-grammars": "^1.0.
|
|
14
|
+
"occam-grammars": "^1.0.673",
|
|
15
15
|
"occam-lexers": "^22.0.44",
|
|
16
16
|
"occam-parsers": "^22.0.72",
|
|
17
17
|
"occam-query": "^3.1.174"
|
package/src/example/importer.js
CHANGED
|
@@ -72,14 +72,7 @@ const indexContent = `## Index
|
|
|
72
72
|
|
|
73
73
|
introductionContent = `# Introduction
|
|
74
74
|
|
|
75
|
-
|
|
76
|
-
At the end of the day it is an expert system and some of its parts, not least the verifier, need detailed explanation.
|
|
77
|
-
It is the purpose of this book is to provide these explanations.
|
|
78
|
-
|
|
79
|
-
This book also goes into considerable detail on the subject of Occam's approach to language, which largely boils down to its use of grammars.
|
|
80
|
-
Occam has its own language, called Florence,[^florence] but it will also support controlled natural languages in the near future.
|
|
81
|
-
Indeed, the verifier cannot distinguish between these languages at all.
|
|
82
|
-
This book explains how this is possible.
|
|
75
|
+
Constructor.
|
|
83
76
|
|
|
84
77
|
@footnotes
|
|
85
78
|
|
package/src/utilities/index.js
CHANGED
|
@@ -48,13 +48,11 @@ function createIndexMap(divisionMarkdownNodes, context) {
|
|
|
48
48
|
wordsOrPhrases = wordsOrPhrasesFromPlainTextAndIndexMatches(plainText, indexMatches);
|
|
49
49
|
|
|
50
50
|
wordsOrPhrases.forEach((wordOrPhrase) => {
|
|
51
|
-
|
|
51
|
+
const pageNumbers = indexMap.hasOwnProperty(wordOrPhrase) ?
|
|
52
|
+
indexMap[wordOrPhrase] :
|
|
53
|
+
[];
|
|
52
54
|
|
|
53
|
-
|
|
54
|
-
pageNumbers = [];
|
|
55
|
-
|
|
56
|
-
indexMap[wordOrPhrase] = pageNumbers;
|
|
57
|
-
}
|
|
55
|
+
indexMap[wordOrPhrase] = pageNumbers;
|
|
58
56
|
|
|
59
57
|
pageNumbers.push(pageNumber);
|
|
60
58
|
});
|