123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.Parser = void 0;
- var _util = require("@glimmer/util");
- var _simpleHtmlTokenizer = require("simple-html-tokenizer");
- function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
- }
- function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
- }
- var Parser = /*#__PURE__*/function () {
- function Parser(source, entityParser, mode) {
- if (entityParser === void 0) {
- entityParser = new _simpleHtmlTokenizer.EntityParser(_simpleHtmlTokenizer.HTML5NamedCharRefs);
- }
- if (mode === void 0) {
- mode = 'precompile';
- }
- this.elementStack = [];
- this.currentAttribute = null;
- this.currentNode = null;
- this.source = source;
- this.lines = source.source.split(/(?:\r\n?|\n)/g);
- this.tokenizer = new _simpleHtmlTokenizer.EventedTokenizer(this, entityParser, mode);
- }
- var _proto = Parser.prototype;
- _proto.offset = function offset() {
- var _this$tokenizer = this.tokenizer,
- line = _this$tokenizer.line,
- column = _this$tokenizer.column;
- return this.source.offsetFor(line, column);
- };
- _proto.pos = function pos(_ref) {
- var line = _ref.line,
- column = _ref.column;
- return this.source.offsetFor(line, column);
- };
- _proto.finish = function finish(node) {
- return (0, _util.assign)({}, node, {
- loc: node.loc.until(this.offset())
- }); // node.loc = node.loc.withEnd(end);
- };
- _proto.acceptTemplate = function acceptTemplate(node) {
- return this[node.type](node);
- };
- _proto.acceptNode = function acceptNode(node) {
- return this[node.type](node);
- };
- _proto.currentElement = function currentElement() {
- return this.elementStack[this.elementStack.length - 1];
- };
- _proto.sourceForNode = function sourceForNode(node, endNode) {
- var firstLine = node.loc.start.line - 1;
- var currentLine = firstLine - 1;
- var firstColumn = node.loc.start.column;
- var string = [];
- var line;
- var lastLine;
- var lastColumn;
- if (endNode) {
- lastLine = endNode.loc.end.line - 1;
- lastColumn = endNode.loc.end.column;
- } else {
- lastLine = node.loc.end.line - 1;
- lastColumn = node.loc.end.column;
- }
- while (currentLine < lastLine) {
- currentLine++;
- line = this.lines[currentLine];
- if (currentLine === firstLine) {
- if (firstLine === lastLine) {
- string.push(line.slice(firstColumn, lastColumn));
- } else {
- string.push(line.slice(firstColumn));
- }
- } else if (currentLine === lastLine) {
- string.push(line.slice(0, lastColumn));
- } else {
- string.push(line);
- }
- }
- return string.join('\n');
- };
- _createClass(Parser, [{
- key: "currentAttr",
- get: function get() {
- return this.currentAttribute;
- }
- }, {
- key: "currentTag",
- get: function get() {
- var node = this.currentNode;
- false && (0, _util.assert)(node && (node.type === 'StartTag' || node.type === 'EndTag'), 'expected tag');
- return node;
- }
- }, {
- key: "currentStartTag",
- get: function get() {
- var node = this.currentNode;
- false && (0, _util.assert)(node && node.type === 'StartTag', 'expected start tag');
- return node;
- }
- }, {
- key: "currentEndTag",
- get: function get() {
- var node = this.currentNode;
- false && (0, _util.assert)(node && node.type === 'EndTag', 'expected end tag');
- return node;
- }
- }, {
- key: "currentComment",
- get: function get() {
- var node = this.currentNode;
- false && (0, _util.assert)(node && node.type === 'CommentStatement', 'expected a comment');
- return node;
- }
- }, {
- key: "currentData",
- get: function get() {
- var node = this.currentNode;
- false && (0, _util.assert)(node && node.type === 'TextNode', 'expected a text node');
- return node;
- }
- }]);
- return Parser;
- }();
- exports.Parser = Parser;
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL3N5bnRheC9saWIvcGFyc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBc0NBLElBQU0sTUFBTixHQUFBLGFBQUEsWUFBQTtBQWVFLFdBQUEsTUFBQSxDQUFBLE1BQUEsRUFBQSxZQUFBLEVBQUEsSUFBQSxFQUcrQztBQUFBLFFBRDdDLFlBQzZDLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFEN0MsTUFBQSxZQUM2QyxHQUQ5QixJQUFBLGlDQUFBLENBRmpCLHVDQUVpQixDQUFmO0FBQzZDOztBQUFBLFFBQTdDLElBQTZDLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBN0MsTUFBQSxJQUE2QyxHQUgvQyxZQUdFO0FBQTZDOztBQWpCckMsU0FBQSxZQUFBLEdBQUEsRUFBQTtBQUdILFNBQUEsZ0JBQUEsR0FBQSxJQUFBO0FBQ0EsU0FBQSxXQUFBLEdBQUEsSUFBQTtBQWVMLFNBQUEsTUFBQSxHQUFBLE1BQUE7QUFDQSxTQUFBLEtBQUEsR0FBYSxNQUFNLENBQU4sTUFBQSxDQUFBLEtBQUEsQ0FBYixlQUFhLENBQWI7QUFDQSxTQUFBLFNBQUEsR0FBaUIsSUFBQSxxQ0FBQSxDQUFBLElBQUEsRUFBQSxZQUFBLEVBQWpCLElBQWlCLENBQWpCO0FBQ0Q7O0FBdkJILE1BQUEsTUFBQSxHQUFBLE1BQUEsQ0FBQSxTQUFBOztBQUFBLEVBQUEsTUFBQSxDQUFBLE1BQUEsR0F5QkUsU0FBQSxNQUFBLEdBQU07QUFBQSxRQUFBLGVBQUEsR0FDbUIsS0FEbkIsU0FBQTtBQUFBLFFBQ0EsSUFEQSxHQUFBLGVBQUEsQ0FBQSxJQUFBO0FBQUEsUUFDUSxNQURSLEdBQUEsZUFBQSxDQUFBLE1BQUE7QUFFSixXQUFPLEtBQUEsTUFBQSxDQUFBLFNBQUEsQ0FBQSxJQUFBLEVBQVAsTUFBTyxDQUFQO0FBM0JKLEdBQUE7O0FBQUEsRUFBQSxNQUFBLENBQUEsR0FB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V0FBQTtBQURnQixlQUVoQixrQkFBTyxJQUFJLElBQUksSUFBSSxDQUFKLElBQUEsS0FBVCxrQkFBTixFQUZnQixvQkFFaEIsQ0FGZ0I7QUFHaEIsYUFBQSxJQUFBO0FBQ0Q7QUEzR0gsR0FBQSxFQUFBO0FBQUEsSUFBQSxHQUFBLEVBQUEsYUFBQTtBQUFBLElBQUEsR0FBQSxFQUFBLFNBQUEsR0FBQSxHQTZHaUI7QUFDYixVQUFJLElBQUksR0FBRyxLQUFYLFdBQUE7QUFEYSxlQUViLGtCQUFPLElBQUksSUFBSSxJQUFJLENBQUosSUFBQSxLQUFULFVBQU4sRUFGYSxzQkFFYixDQUZhO0FBR2IsYUFBQSxJQUFBO0FBQ0Q7QUFqSEgsR0FBQSxDQUFBLENBQUE7O0FBQUEsU0FBQSxNQUFBO0FBQUEsQ0FBQSxFQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSAnQGdsaW1tZXIvaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBhc3NlcnQsIGFzc2lnbiwgZXhwZWN0IH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQge1xuICBFbnRpdHlQYXJzZXIsXG4gIEV2ZW50ZWRUb2tlbml6ZXIsXG4gIEhUTUw1TmFtZWRDaGFyUmVmcyBhcyBuYW1lZENoYXJSZWZzLFxufSBmcm9tICdzaW1wbGUtaHRtbC10b2tlbml6ZXInO1xuXG5pbXBvcnQgeyBTb3VyY2VQb3NpdGlvbiB9IGZyb20gJy4vc291cmNlL2xvY2F0aW9uJztcbmltcG9ydCB7IFNvdXJjZSB9IGZyb20gJy4vc291cmNlL3NvdXJjZSc7XG5pbXBvcnQgeyBTb3VyY2VPZmZzZXQsIFNvdXJjZVNwYW4gfSBmcm9tICcuL3NvdXJjZS9zcGFuJztcbmltcG9ydCAqIGFzIEFTVHYxIGZyb20gJy4vdjEvYXBpJztcbmltcG9ydCAqIGFzIEhCUyBmcm9tICcuL3YxL2hhbmRsZWJhcnMtYXN0JztcblxuZXhwb3J0IHR5cGUgUGFyc2VyTm9kZUJ1aWxkZXI8TiBleHRlbmRzIHsgbG9jOiBTb3VyY2VTcGFuIH0+ID0gT21pdDxOLCAnbG9jJz4gJiB7XG4gIGxvYzogU291cmNlT2Zmc2V0O1xufTtcblxuZXhwb3J0IHR5cGUgRWxlbWVudCA9IEFTVHYxLlRlbXBsYXRlIHwgQVNUdjEuQmxvY2sgfCBBU1R2MS5FbGVtZW50Tm9kZTtcblxuZXhwb3J0IGludGVyZmFjZSBUYWc8VCBleHRlbmRzICdTdGFydFRhZycgfCAnRW5kVGFnJz4ge1xuICByZWFkb25seSB0eXBlOiBUO1xuICBuYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGF0dHJpYnV0ZXM6IEFTVHYxLkF0dHJOb2RlW107XG4gIHJlYWRvbmx5IG1vZGlmaWVyczogQVNUdjEuRWxlbWVudE1vZGlmaWVyU3RhdGVtZW50W107XG4gIHJlYWRvbmx5IGNvbW1lbnRzOiBBU1R2MS5NdXN0YWNoZUNvbW1lbnRTdGF0ZW1lbnRbXTtcbiAgc2VsZkNsb3Npbmc6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGxvYzogU291cmNlU3Bhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdHRyaWJ1dGUge1xuICBuYW1lOiBzdHJpbmc7XG4gIGN1cnJlbnRQYXJ0OiBBU1R2MS5UZXh0Tm9kZSB8IG51bGw7XG4gIHBhcnRzOiAoQVNUdjEuTXVzdGFjaGVTdGF0ZW1lbnQgfCBBU1R2MS5UZXh0Tm9kZSlbXTtcbiAgaXNRdW90ZWQ6IGJvb2xlYW47XG4gIGlzRHluYW1pYzogYm9vbGVhbjtcbiAgc3RhcnQ6IFNvdXJjZU9mZnNldDtcbiAgdmFsdWVTcGFuOiBTb3VyY2VTcGFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgUGFyc2VyIHtcbiAgcHJvdGVjdGVkIGVsZW1lbnRTdGFjazogRWxlbWVudFtdID0gW107XG4gIHByaXZhdGUgbGluZXM6IHN0cmluZ1tdO1xuICByZWFkb25seSBzb3VyY2U6IFNvdXJjZTtcbiAgcHVibGljIGN1cnJlbnRBdHRyaWJ1dGU6IE9wdGlvbjxBdHRyaWJ1dGU+ID0gbnVsbDtcbiAgcHVibGljIGN1cnJlbnROb2RlOiBPcHRpb248XG4gICAgUmVhZG9ubHk8XG4gICAgICB8IFBhcnNlck5vZGVCdWlsZGVyPEFTVHYxLkNvbW1lbnRTdGF0ZW1lbnQ+XG4gICAgICB8IEFTVHYxLlRleHROb2RlXG4gICAgICB8IFBhcnNlck5vZGVCdWlsZGVyPFRhZzwnU3RhcnRUYWcnPj5cbiAgICAgIHwgUGFyc2VyTm9kZUJ1aWxkZXI8VGFnPCdFbmRUYWcnPj5cbiAgICA+XG4gID4gPSBudWxsO1xuICBwdWJsaWMgdG9rZW5pemVyOiBFdmVudGVkVG9rZW5pemVyO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHNvdXJjZTogU291cmNlLFxuICAgIGVudGl0eVBhcnNlciA9IG5ldyBFbnRpdHlQYXJzZXIobmFtZWRDaGFyUmVmcyksXG4gICAgbW9kZTogJ3ByZWNvbXBpbGUnIHwgJ2NvZGVtb2QnID0gJ3ByZWNvbXBpbGUnXG4gICkge1xuICAgIHRoaXMuc291cmNlID0gc291cmNlO1xuICAgIHRoaXMubGluZXMgPSBzb3VyY2Uuc291cmNlLnNwbGl0KC8oPzpcXHJcXG4/fFxcbikvZyk7XG4gICAgdGhpcy50b2tlbml6ZXIgPSBuZXcgRXZlbnRlZFRva2VuaXplcih0aGlzLCBlbnRpdHlQYXJzZXIsIG1vZGUpO1xuICB9XG5cbiAgb2Zmc2V0KCk6IFNvdXJjZU9mZnNldCB7XG4gICAgbGV0IHsgbGluZSwgY29sdW1uIH0gPSB0aGlzLnRva2VuaXplcjtcbiAgICByZXR1cm4gdGhpcy5zb3VyY2Uub2Zmc2V0Rm9yKGxpbmUsIGNvbHVtbik7XG4gIH1cblxuICBwb3MoeyBsaW5lLCBjb2x1bW4gfTogU291cmNlUG9zaXRpb24pOiBTb3VyY2VPZmZzZXQge1xuICAgIHJldHVybiB0aGlzLnNvdXJjZS5vZmZzZXRGb3IobGluZSwgY29sdW1uKTtcbiAgfVxuXG4gIGZpbmlzaDxUIGV4dGVuZHMgeyBsb2M6IFNvdXJjZVNwYW4gfT4obm9kZTogUGFyc2VyTm9kZUJ1aWxkZXI8VD4pOiBUIHtcbiAgICByZXR1cm4gKGFzc2lnbih7fSwgbm9kZSwge1xuICAgICAgbG9jOiBub2RlLmxvYy51bnRpbCh0aGlzLm9mZnNldCgpKSxcbiAgICB9IGFzIGNvbnN0KSBhcyB1bmtub3duKSBhcyBUO1xuXG4gICAgLy8gbm9kZS5sb2MgPSBub2RlLmxvYy53aXRoRW5kKGVuZCk7XG4gIH1cblxuICBhYnN0cmFjdCBQcm9ncmFtKG5vZGU6IEhCUy5Qcm9ncmFtKTogSEJTLk91dHB1dDwnUHJvZ3JhbSc+O1xuICBhYnN0cmFjdCBNdXN0YWNoZVN0YXRlbWVudChub2RlOiBIQlMuTXVzdGFjaGVTdGF0ZW1lbnQpOiBIQlMuT3V0cHV0PCdNdXN0YWNoZVN0YXRlbWVudCc+O1xuICBhYnN0cmFjdCBEZWNvcmF0b3Iobm9kZTogSEJTLkRlY29yYXRvcik6IEhCUy5PdXRwdXQ8J0RlY29yYXRvcic+O1xuICBhYnN0cmFjdCBCbG9ja1N0YXRlbWVudChub2RlOiBIQlMuQmxvY2tTdGF0ZW1lbnQpOiBIQlMuT3V0cHV0PCdCbG9ja1N0YXRlbWVudCc+O1xuICBhYnN0cmFjdCBEZWNvcmF0b3JCbG9jayhub2RlOiBIQlMuRGVjb3JhdG9yQmxvY2spOiBIQlMuT3V0cHV0PCdEZWNvcmF0b3JCbG9jayc+O1xuICBhYnN0cmFjdCBQYXJ0aWFsU3RhdGVtZW50KG5vZGU6IEhCUy5QYXJ0aWFsU3RhdGVtZW50KTogSEJTLk91dHB1dDwnUGFydGlhbFN0YXRlbWVudCc+O1xuICBhYnN0cmFjdCBQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQoXG4gICAgbm9kZTogSEJTLlBhcnRpYWxCbG9ja1N0YXRlbWVudFxuICApOiBIQlMuT3V0cHV0PCdQYXJ0aWFsQmxvY2tTdGF0ZW1lbnQnPjtcbiAgYWJzdHJhY3QgQ29udGVudFN0YXRlbWVudChub2RlOiBIQlMuQ29udGVudFN0YXRlbWVudCk6IEhCUy5PdXRwdXQ8J0NvbnRlbnRTdGF0ZW1lbnQnPjtcbiAgYWJzdHJhY3QgQ29tbWVudFN0YXRlbWVudChub2RlOiBIQlMuQ29tbWVudFN0YXRlbWVudCk6IEhCUy5PdXRwdXQ8J0NvbW1lbnRTdGF0ZW1lbnQnPjtcbiAgYWJzdHJhY3QgU3ViRXhwcmVzc2lvbihub2RlOiBIQlMuU3ViRXhwcmVzc2lvbik6IEhCUy5PdXRwdXQ8J1N1YkV4cHJlc3Npb24nPjtcbiAgYWJzdHJhY3QgUGF0aEV4cHJlc3Npb24obm9kZTogSEJTLlBhdGhFeHByZXNzaW9uKTogSEJTLk91dHB1dDwnUGF0aEV4cHJlc3Npb24nPjtcbiAgYWJzdHJhY3QgU3RyaW5nTGl0ZXJhbChub2RlOiBIQlMuU3RyaW5nTGl0ZXJhbCk6IEhCUy5PdXRwdXQ8J1N0cmluZ0xpdGVyYWwnPjtcbiAgYWJzdHJhY3QgQm9vbGVhbkxpdGVyYWwobm9kZTogSEJTLkJvb2xlYW5MaXRlcmFsKTogSEJTLk91dHB1dDwnQm9vbGVhbkxpdGVyYWwnPjtcbiAgYWJzdHJhY3QgTnVtYmVyTGl0ZXJhbChub2RlOiBIQlMuTnVtYmVyTGl0ZXJhbCk6IEhCUy5PdXRwdXQ8J051bWJlckxpdGVyYWwnPjtcbiAgYWJzdHJhY3QgVW5kZWZpbmVkTGl0ZXJhbChub2RlOiBIQlMuVW5kZWZpbmVkTGl0ZXJhbCk6IEhCUy5PdXRwdXQ8J1VuZGVmaW5lZExpdGVyYWwnPjtcbiAgYWJzdHJhY3QgTnVsbExpdGVyYWwobm9kZTogSEJTLk51bGxMaXRlcmFsKTogSEJTLk91dHB1dDwnTnVsbExpdGVyYWwnPjtcblxuICBhYnN0cmFjdCByZXNldCgpOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hEYXRhKCk6IHZvaWQ7XG4gIGFic3RyYWN0IHRhZ09wZW4oKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5EYXRhKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGFwcGVuZFRvRGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpblN0YXJ0VGFnKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGFwcGVuZFRvVGFnTmFtZShjaGFyOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkF0dHJpYnV0ZSgpOiB2b2lkO1xuICBhYnN0cmFjdCBhcHBlbmRUb0F0dHJpYnV0ZU5hbWUoY2hhcjogc3RyaW5nKTogdm9pZDtcbiAgYWJzdHJhY3QgYmVnaW5BdHRyaWJ1dGVWYWx1ZShxdW90ZWQ6IGJvb2xlYW4pOiB2b2lkO1xuICBhYnN0cmFjdCBhcHBlbmRUb0F0dHJpYnV0ZVZhbHVlKGNoYXI6IHN0cmluZyk6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaEF0dHJpYnV0ZVZhbHVlKCk6IHZvaWQ7XG4gIGFic3RyYWN0IG1hcmtUYWdBc1NlbGZDbG9zaW5nKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGJlZ2luRW5kVGFnKCk6IHZvaWQ7XG4gIGFic3RyYWN0IGZpbmlzaFRhZygpOiB2b2lkO1xuICBhYnN0cmFjdCBiZWdpbkNvbW1lbnQoKTogdm9pZDtcbiAgYWJzdHJhY3QgYXBwZW5kVG9Db21tZW50RGF0YShjaGFyOiBzdHJpbmcpOiB2b2lkO1xuICBhYnN0cmFjdCBmaW5pc2hDb21tZW50KCk6IHZvaWQ7XG4gIGFic3RyYWN0IHJlcG9ydFN5bnRheEVycm9yKGVycm9yOiBzdHJpbmcpOiB2b2lkO1xuXG4gIGdldCBjdXJyZW50QXR0cigpOiBBdHRyaWJ1dGUge1xuICAgIHJldHVybiBleHBlY3QodGhpcy5jdXJyZW50QXR0cmlidXRlLCAnZXhwZWN0ZWQgYXR0cmlidXRlJyk7XG4gIH1cblxuICBnZXQgY3VycmVudFRhZygpOiBQYXJzZXJOb2RlQnVpbGRlcjxUYWc8J1N0YXJ0VGFnJyB8ICdFbmRUYWcnPj4ge1xuICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBhc3NlcnQobm9kZSAmJiAobm9kZS50eXBlID09PSAnU3RhcnRUYWcnIHx8IG5vZGUudHlwZSA9PT0gJ0VuZFRhZycpLCAnZXhwZWN0ZWQgdGFnJyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBnZXQgY3VycmVudFN0YXJ0VGFnKCk6IFBhcnNlck5vZGVCdWlsZGVyPFRhZzwnU3RhcnRUYWcnPj4ge1xuICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBhc3NlcnQobm9kZSAmJiBub2RlLnR5cGUgPT09ICdTdGFydFRhZycsICdleHBlY3RlZCBzdGFydCB0YWcnKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50RW5kVGFnKCk6IFBhcnNlck5vZGVCdWlsZGVyPFRhZzwnRW5kVGFnJz4+IHtcbiAgICBsZXQgbm9kZSA9IHRoaXMuY3VycmVudE5vZGU7XG4gICAgYXNzZXJ0KG5vZGUgJiYgbm9kZS50eXBlID09PSAnRW5kVGFnJywgJ2V4cGVjdGVkIGVuZCB0YWcnKTtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIGdldCBjdXJyZW50Q29tbWVudCgpOiBQYXJzZXJOb2RlQnVpbGRlcjxBU1R2MS5Db21tZW50U3RhdGVtZW50PiB7XG4gICAgbGV0IG5vZGUgPSB0aGlzLmN1cnJlbnROb2RlO1xuICAgIGFzc2VydChub2RlICYmIG5vZGUudHlwZSA9PT0gJ0NvbW1lbnRTdGF0ZW1lbnQnLCAnZXhwZWN0ZWQgYSBjb21tZW50Jyk7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cblxuICBnZXQgY3VycmVudERhdGEoKTogQVNUdjEuVGV4dE5vZGUge1xuICAgIGxldCBub2RlID0gdGhpcy5jdXJyZW50Tm9kZTtcbiAgICBhc3NlcnQobm9kZSAmJiBub2RlLnR5cGUgPT09ICdUZXh0Tm9kZScsICdleHBlY3RlZCBhIHRleHQgbm9kZScpO1xuICAgIHJldHVybiBub2RlO1xuICB9XG5cbiAgYWNjZXB0VGVtcGxhdGUobm9kZTogSEJTLlByb2dyYW0pOiBBU1R2MS5UZW1wbGF0ZSB7XG4gICAgcmV0dXJuIHRoaXNbbm9kZS50eXBlIGFzICdQcm9ncmFtJ10obm9kZSkgYXMgQVNUdjEuVGVtcGxhdGU7XG4gIH1cblxuICBhY2NlcHROb2RlKG5vZGU6IEhCUy5Qcm9ncmFtKTogQVNUdjEuQmxvY2sgfCBBU1R2MS5UZW1wbGF0ZTtcbiAgYWNjZXB0Tm9kZTxVIGV4dGVuZHMgSEJTLk5vZGUgfCBBU1R2MS5Ob2RlPihub2RlOiBIQlMuTm9kZSk6IFU7XG4gIGFjY2VwdE5vZGU8VCBleHRlbmRzIEhCUy5Ob2RlVHlwZT4obm9kZTogSEJTLk5vZGU8VD4pOiBIQlMuT3V0cHV0PFQ+IHtcbiAgICByZXR1cm4gKHRoaXNbbm9kZS50eXBlIGFzIFRdIGFzIChub2RlOiBIQlMuTm9kZTxUPikgPT4gSEJTLk91dHB1dDxUPikobm9kZSk7XG4gIH1cblxuICBjdXJyZW50RWxlbWVudCgpOiBFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50U3RhY2tbdGhpcy5lbGVtZW50U3RhY2subGVuZ3RoIC0gMV07XG4gIH1cblxuICBzb3VyY2VGb3JOb2RlKG5vZGU6IEhCUy5Ob2RlLCBlbmROb2RlPzogeyBsb2M6IEhCUy5Tb3VyY2VMb2NhdGlvbiB9KTogc3RyaW5nIHtcbiAgICBsZXQgZmlyc3RMaW5lID0gbm9kZS5sb2Muc3RhcnQubGluZSAtIDE7XG4gICAgbGV0IGN1cnJlbnRMaW5lID0gZmlyc3RMaW5lIC0gMTtcbiAgICBsZXQgZmlyc3RDb2x1bW4gPSBub2RlLmxvYy5zdGFydC5jb2x1bW47XG4gICAgbGV0IHN0cmluZyA9IFtdO1xuICAgIGxldCBsaW5lO1xuXG4gICAgbGV0IGxhc3RMaW5lOiBudW1iZXI7XG4gICAgbGV0IGxhc3RDb2x1bW46IG51bWJlcjtcblxuICAgIGlmIChlbmROb2RlKSB7XG4gICAgICBsYXN0TGluZSA9IGVuZE5vZGUubG9jLmVuZC5saW5lIC0gMTtcbiAgICAgIGxhc3RDb2x1bW4gPSBlbmROb2RlLmxvYy5lbmQuY29sdW1uO1xuICAgIH0gZWxzZSB7XG4gICAgICBsYXN0TGluZSA9IG5vZGUubG9jLmVuZC5saW5lIC0gMTtcbiAgICAgIGxhc3RDb2x1bW4gPSBub2RlLmxvYy5lbmQuY29sdW1uO1xuICAgIH1cblxuICAgIHdoaWxlIChjdXJyZW50TGluZSA8IGxhc3RMaW5lKSB7XG4gICAgICBjdXJyZW50TGluZSsrO1xuICAgICAgbGluZSA9IHRoaXMubGluZXNbY3VycmVudExpbmVdO1xuXG4gICAgICBpZiAoY3VycmVudExpbmUgPT09IGZpcnN0TGluZSkge1xuICAgICAgICBpZiAoZmlyc3RMaW5lID09PSBsYXN0TGluZSkge1xuICAgICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoZmlyc3RDb2x1bW4sIGxhc3RDb2x1bW4pKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHJpbmcucHVzaChsaW5lLnNsaWNlKGZpcnN0Q29sdW1uKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoY3VycmVudExpbmUgPT09IGxhc3RMaW5lKSB7XG4gICAgICAgIHN0cmluZy5wdXNoKGxpbmUuc2xpY2UoMCwgbGFzdENvbHVtbikpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc3RyaW5nLnB1c2gobGluZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0cmluZy5qb2luKCdcXG4nKTtcbiAgfVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==
|