Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@glimmer/runtime

Package Overview
Dependencies
Maintainers
10
Versions
289
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@glimmer/runtime - npm Package Compare versions

Comparing version 0.24.0-alpha.1 to 0.24.0-alpha.2

10

dist/commonjs/es2017/lib/compat/inner-html-fix.js

@@ -55,5 +55,5 @@ 'use strict';

return class DOMTreeConstructionWithInnerHTMLFix extends DOMTreeConstructionClass {
insertHTMLBefore(parent, html, reference) {
insertHTMLBefore(parent, referenceNode, html) {
if (html === null || html === '') {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, referenceNode, html);
}

@@ -63,5 +63,5 @@ let parentTag = parent.tagName.toLowerCase();

if (wrapper === undefined) {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, referenceNode, html);
}
return fixInnerHTML(parent, wrapper, div, html, reference);
return fixInnerHTML(parent, wrapper, div, html, referenceNode);
}

@@ -92,2 +92,2 @@ };

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiXSwibmFtZXMiOlsiZG9tQ2hhbmdlcyIsInRyZWVDb25zdHJ1Y3Rpb24iLCJpbm5lckhUTUxXcmFwcGVyIiwiY29sZ3JvdXAiLCJkZXB0aCIsImJlZm9yZSIsImFmdGVyIiwidGFibGUiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ciIsImRvY3VtZW50IiwiRE9NQ2hhbmdlc0NsYXNzIiwic2hvdWxkQXBwbHlGaXgiLCJkaXYiLCJjcmVhdGVFbGVtZW50IiwiRE9NQ2hhbmdlc1dpdGhJbm5lckhUTUxGaXgiLCJpbnNlcnRIVE1MQmVmb3JlIiwicGFyZW50IiwibmV4dFNpYmxpbmciLCJodG1sIiwicGFyZW50VGFnIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwid3JhcHBlciIsInVuZGVmaW5lZCIsImZpeElubmVySFRNTCIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25XaXRoSW5uZXJIVE1MRml4IiwicmVmZXJlbmNlIiwid3JhcHBlZEh0bWwiLCJpbm5lckhUTUwiLCJwYXJlbnROb2RlIiwiaSIsImNoaWxkTm9kZXMiLCJmaXJzdCIsImxhc3QiLCJlIiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7OztRQWlCZ0JBLFUsR0FBQUEsVTtRQW9CQUMsZ0IsR0FBQUEsZ0I7O0FBckNoQjs7QUFDQTs7QUFDQSxJQUFJQyxtQkFBbUI7QUFDbkJDLGNBQVUsRUFBRUMsT0FBTyxDQUFULEVBQVlDLFFBQVEsbUJBQXBCLEVBQXlDQyxPQUFPLHFCQUFoRCxFQURTO0FBRW5CQyxXQUFPLEVBQUVILE9BQU8sQ0FBVCxFQUFZQyxRQUFRLFNBQXBCLEVBQStCQyxPQUFPLFVBQXRDLEVBRlk7QUFHbkJFLFdBQU8sRUFBRUosT0FBTyxDQUFULEVBQVlDLFFBQVEsZ0JBQXBCLEVBQXNDQyxPQUFPLGtCQUE3QyxFQUhZO0FBSW5CRyxXQUFPLEVBQUVMLE9BQU8sQ0FBVCxFQUFZQyxR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Q0EsUUFBSUUsYUFBYWxCLEdBQWpCO0FBQ0EsU0FBSyxJQUFJbUIsSUFBSSxDQUFiLEVBQWdCQSxJQUFJVCxRQUFRckIsS0FBNUIsRUFBbUM4QixHQUFuQyxFQUF3QztBQUNwQ0QscUJBQWFBLFdBQVdFLFVBQVgsQ0FBc0IsQ0FBdEIsQ0FBYjtBQUNIO0FBQ0QsUUFBSSxDQUFDQyxLQUFELEVBQVFDLElBQVIsSUFBZ0IsNkJBQWdCSixVQUFoQixFQUE0QmQsTUFBNUIsRUFBb0NXLFNBQXBDLENBQXBCO0FBQ0EsV0FBTywyQkFBbUJYLE1BQW5CLEVBQTJCaUIsS0FBM0IsRUFBa0NDLElBQWxDLENBQVA7QUFDSDtBQUNELFNBQVN2QixjQUFULENBQXdCRixRQUF4QixFQUFrQztBQUM5QixRQUFJTCxRQUFRSyxTQUFTSSxhQUFULENBQXVCLE9BQXZCLENBQVo7QUFDQSxRQUFJO0FBQ0FULGNBQU15QixTQUFOLEdBQWtCLGlCQUFsQjtBQUNILEtBRkQsQ0FFRSxPQUFPTSxDQUFQLEVBQVUsQ0FBRSxDQUZkLFNBRXVCO0FBQ25CLFlBQUkvQixNQUFNNEIsVUFBTixDQUFpQkksTUFBakIsS0FBNEIsQ0FBaEMsRUFBbUM7QUFDL0I7QUFDQSxtQkFBTyxLQUFQO0FBQ0g7QUFDSjtBQUNELFdBQU8sSUFBUDtBQUNIIiwiZmlsZSI6ImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmxldCBpbm5lckhUTUxXcmFwcGVyID0ge1xuICAgIGNvbGdyb3VwOiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PGNvbGdyb3VwPicsIGFmdGVyOiAnPC9jb2xncm91cD48L3RhYmxlPicgfSxcbiAgICB0YWJsZTogeyBkZXB0aDogMSwgYmVmb3JlOiAnPHRhYmxlPicsIGFmdGVyOiAnPC90YWJsZT4nIH0sXG4gICAgdGJvZHk6IHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+JywgYWZ0ZXI6ICc8L3Rib2R5PjwvdGFibGU+JyB9LFxuICAgIHRmb290OiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRmb290PicsIGFmdGVyOiAnPC90Zm9vdD48L3RhYmxlPicgfSxcbiAgICB0aGVhZDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0aGVhZD4nLCBhZnRlcjogJzwvdGhlYWQ+PC90YWJsZT4nIH0sXG4gICAgdHI6IHsgZGVwdGg6IDMsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+PHRyPicsIGFmdGVyOiAnPC90cj48L3Rib2R5PjwvdGFibGU+JyB9XG59O1xuLy8gUGF0Y2g6ICAgIGlubmVySFRNTCBGaXhcbi8vIEJyb3dzZXJzOiBJRTlcbi8vIFJlYXNvbjogICBJRTkgZG9uJ3QgYWxsb3cgdXMgdG8gc2V0IGlubmVySFRNTCBvbiBjb2wsIGNvbGdyb3VwLCBmcmFtZXNldCxcbi8vICAgICAgICAgICBodG1sLCBzdHlsZSwgdGFibGUsIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRpdGxlLCB0ci5cbi8vIEZpeDogICAgICBXcmFwIHRoZSBpbm5lckhUTUwgd2UgYXJlIGFib3V0IHRvIHNldCBpbiBpdHMgcGFyZW50cywgYXBwbHkgdGhlXG4vLyAgICAgICAgICAgd3JhcHBlZCBpbm5lckhUTUwgb24gYSBkaXYsIHRoZW4gbW92ZSB0aGUgdW53cmFwcGVkIG5vZGVzIGludG8gdGhlXG4vLyAgICAgICAgICAgdGFyZ2V0IHBvc2l0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGRvbUNoYW5nZXMoZG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzcykge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXJlbnRUYWcgPSBwYXJlbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSBpbm5lckhUTUxXcmFwcGVyW3BhcmVudFRhZ107XG4gICAgICAgICAgICBpZiAod3JhcHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCBuZXh0U2libGluZyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQsIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcykge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01UcmVlQ29uc3RydWN0aW9uV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKSB7XG4gICAgbGV0IHdyYXBwZWRIdG1sID0gd3JhcHBlci5iZWZvcmUgKyBodG1sICsgd3JhcHBlci5hZnRlcjtcbiAgICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBkaXY7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3cmFwcGVyLmRlcHRoOyBpKyspIHtcbiAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1swXTtcbiAgICB9XG4gICAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUocGFyZW50Tm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCkge1xuICAgIGxldCB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgdHJ5IHtcbiAgICAgICAgdGFibGUuaW5uZXJIVE1MID0gJzx0Ym9keT48L3Rib2R5Pic7XG4gICAgfSBjYXRjaCAoZSkge30gZmluYWxseSB7XG4gICAgICAgIGlmICh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgLy8gSXQgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiXSwibmFtZXMiOlsiZG9tQ2hhbmdlcyIsInRyZWVDb25zdHJ1Y3Rpb24iLCJpbm5lckhUTUxXcmFwcGVyIiwiY29sZ3JvdXAiLCJkZXB0aCIsImJlZm9yZSIsImFmdGVyIiwidGFibGUiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ciIsImRvY3VtZW50IiwiRE9NQ2hhbmdlc0NsYXNzIiwic2hvdWxkQXBwbHlGaXgiLCJkaXYiLCJjcmVhdGVFbGVtZW50IiwiRE9NQ2hhbmdlc1dpdGhJbm5lckhUTUxGaXgiLCJpbnNlcnRIVE1MQmVmb3JlIiwicGFyZW50IiwibmV4dFNpYmxpbmciLCJodG1sIiwicGFyZW50VGFnIiwidGFnTmFtZSIsInRvTG93ZXJDYXNlIiwid3JhcHBlciIsInVuZGVmaW5lZCIsImZpeElubmVySFRNTCIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25XaXRoSW5uZXJIVE1MRml4IiwicmVmZXJlbmNlTm9kZSIsInJlZmVyZW5jZSIsIndyYXBwZWRIdG1sIiwiaW5uZXJIVE1MIiwicGFyZW50Tm9kZSIsImkiLCJjaGlsZE5vZGVzIiwiZmlyc3QiLCJsYXN0IiwiZSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFpQmdCQSxVLEdBQUFBLFU7UUFvQkFDLGdCLEdBQUFBLGdCOztBQXJDaEI7O0FBQ0E7O0FBQ0EsSUFBSUMsbUJBQW1CO0FBQ25CQyxjQUFVLEVBQUVDLE9BQU8sQ0FBVCxFQUFZQyxRQUFRLG1CQUFwQixFQUF5Q0MsT0FBTyxxQkFBaEQsRUFEUztBQUVuQkMsV0FBTyxFQUFFSCxPQUFPLENBQVQsRUFBWUMsUUFBUSxTQUFwQixFQUErQkMsT0FBTyxVQUF0QyxFQUZZO0FBR25CRSxXQUFPLEVBQUVKLE9BQU8sQ0FBVCxFQUFZQyxRQUFRLGdCQUFwQixFQUFzQ0MsT0FBTyxrQkFBN0MsRUFIWTtBQUluQkcsV0FBTyxFQUFFTCxP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LEdBQWdCRCxXQUFoQjtBQUNBLFFBQUlFLGFBQWFuQixHQUFqQjtBQUNBLFNBQUssSUFBSW9CLElBQUksQ0FBYixFQUFnQkEsSUFBSVYsUUFBUXJCLEtBQTVCLEVBQW1DK0IsR0FBbkMsRUFBd0M7QUFDcENELHFCQUFhQSxXQUFXRSxVQUFYLENBQXNCLENBQXRCLENBQWI7QUFDSDtBQUNELFFBQUksQ0FBQ0MsS0FBRCxFQUFRQyxJQUFSLElBQWdCLDZCQUFnQkosVUFBaEIsRUFBNEJmLE1BQTVCLEVBQW9DWSxTQUFwQyxDQUFwQjtBQUNBLFdBQU8sMkJBQW1CWixNQUFuQixFQUEyQmtCLEtBQTNCLEVBQWtDQyxJQUFsQyxDQUFQO0FBQ0g7QUFDRCxTQUFTeEIsY0FBVCxDQUF3QkYsUUFBeEIsRUFBa0M7QUFDOUIsUUFBSUwsUUFBUUssU0FBU0ksYUFBVCxDQUF1QixPQUF2QixDQUFaO0FBQ0EsUUFBSTtBQUNBVCxjQUFNMEIsU0FBTixHQUFrQixpQkFBbEI7QUFDSCxLQUZELENBRUUsT0FBT00sQ0FBUCxFQUFVLENBQUUsQ0FGZCxTQUV1QjtBQUNuQixZQUFJaEMsTUFBTTZCLFVBQU4sQ0FBaUJJLE1BQWpCLEtBQTRCLENBQWhDLEVBQW1DO0FBQy9CO0FBQ0EsbUJBQU8sS0FBUDtBQUNIO0FBQ0o7QUFDRCxXQUFPLElBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGF0L2lubmVyLWh0bWwtZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5sZXQgaW5uZXJIVE1MV3JhcHBlciA9IHtcbiAgICBjb2xncm91cDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjxjb2xncm91cD4nLCBhZnRlcjogJzwvY29sZ3JvdXA+PC90YWJsZT4nIH0sXG4gICAgdGFibGU6IHsgZGVwdGg6IDEsIGJlZm9yZTogJzx0YWJsZT4nLCBhZnRlcjogJzwvdGFibGU+JyB9LFxuICAgIHRib2R5OiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5PicsIGFmdGVyOiAnPC90Ym9keT48L3RhYmxlPicgfSxcbiAgICB0Zm9vdDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0Zm9vdD4nLCBhZnRlcjogJzwvdGZvb3Q+PC90YWJsZT4nIH0sXG4gICAgdGhlYWQ6IHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGhlYWQ+JywgYWZ0ZXI6ICc8L3RoZWFkPjwvdGFibGU+JyB9LFxuICAgIHRyOiB7IGRlcHRoOiAzLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5Pjx0cj4nLCBhZnRlcjogJzwvdHI+PC90Ym9keT48L3RhYmxlPicgfVxufTtcbi8vIFBhdGNoOiAgICBpbm5lckhUTUwgRml4XG4vLyBCcm93c2VyczogSUU5XG4vLyBSZWFzb246ICAgSUU5IGRvbid0IGFsbG93IHVzIHRvIHNldCBpbm5lckhUTUwgb24gY29sLCBjb2xncm91cCwgZnJhbWVzZXQsXG4vLyAgICAgICAgICAgaHRtbCwgc3R5bGUsIHRhYmxlLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0aXRsZSwgdHIuXG4vLyBGaXg6ICAgICAgV3JhcCB0aGUgaW5uZXJIVE1MIHdlIGFyZSBhYm91dCB0byBzZXQgaW4gaXRzIHBhcmVudHMsIGFwcGx5IHRoZVxuLy8gICAgICAgICAgIHdyYXBwZWQgaW5uZXJIVE1MIG9uIGEgZGl2LCB0aGVuIG1vdmUgdGhlIHVud3JhcHBlZCBub2RlcyBpbnRvIHRoZVxuLy8gICAgICAgICAgIHRhcmdldCBwb3NpdGlvbi5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFyZW50VGFnID0gcGFyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCB3cmFwcGVyID0gaW5uZXJIVE1MV3JhcHBlcltwYXJlbnRUYWddO1xuICAgICAgICAgICAgaWYgKHdyYXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXR1cm4gY2xhc3MgRE9NVHJlZUNvbnN0cnVjdGlvbldpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlTm9kZSwgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZU5vZGUsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZU5vZGUsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlTm9kZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICBsZXQgd3JhcHBlZEh0bWwgPSB3cmFwcGVyLmJlZm9yZSArIGh0bWwgKyB3cmFwcGVyLmFmdGVyO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IGRpdjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdyYXBwZXIuZGVwdGg7IGkrKykge1xuICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgIH1cbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShwYXJlbnROb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSB7XG4gICAgbGV0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICB0cnkge1xuICAgICAgICB0YWJsZS5pbm5lckhUTUwgPSAnPHRib2R5PjwvdGJvZHk+JztcbiAgICB9IGNhdGNoIChlKSB7fSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==

@@ -53,8 +53,8 @@ 'use strict';

return class TreeConstructionWithSVGInnerHTMLFix extends TreeConstructionClass {
insertHTMLBefore(parent, html, reference) {
insertHTMLBefore(parent, reference, html) {
if (html === null || html === '') {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, reference, html);
}
if (parent.namespaceURI !== svgNamespace) {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, reference, html);
}

@@ -89,2 +89,2 @@ return fixSVG(parent, div, html, reference);

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJ0cmVlQ29uc3RydWN0aW9uIiwiU1ZHX05BTUVTUEFDRSIsImRvY3VtZW50IiwiRE9NQ2hhbmdlc0NsYXNzIiwic3ZnTmFtZXNwYWNlIiwic2hvdWxkQXBwbHlGaXgiLCJkaXYiLCJjcmVhdGVFbGVtZW50IiwiRE9NQ2hhbmdlc1dpdGhTVkdJbm5lckhUTUxGaXgiLCJpbnNlcnRIVE1MQmVmb3JlIiwicGFyZW50IiwibmV4dFNpYmxpbmciLCJodG1sIiwibmFtZXNwYWNlVVJJIiwiZml4U1ZHIiwiVHJlZUNvbnN0cnVjdGlvbkNsYXNzIiwiVHJlZUNvbnN0cnVjdGlvbldpdGhTVkdJbm5lckhUTUxGaXgiLCJyZWZlcmVuY2UiLCJ3cmFwcGVkSHRtbCIsImlubmVySFRNTCIsImZpcnN0IiwibGFzdCIsImZpcnN0Q2hpbGQiLCJzdmciLCJjcmVhdGVFbGVtZW50TlMiLCJlIiwiY2hpbGROb2RlcyIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBZWdCQSxVLEdBQUFBLFU7UUFrQkFDLGdCLEdBQUFBLGdCOztBQWpDaEI7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUMsd0NBQWdCLDRCQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRixVQUFULENBQW9CRyxRQUFwQixFQUE4QkMsZUFBOUIsRUFBK0NDLFlBQS9DLEVBQTZEO0FBQ2hFLFFBQUksQ0FBQ0YsUUFBTCxFQUFlLE9BQU9DLGVBQVA7QUFDZixRQUFJLENBQUNFLGVBQWVILFFBQWYsRUFBeUJFLFlBQXpCLENBQUwsRUFBNkM7QUFDekMsZUFBT0QsZUFBUDtBQUNIO0FBQ0QsUUFBSUcsTUFBTUosU0FBU0ssYUFBVCxDQUF1QixLQUF2QixDQUFWO0FBQ0EsV0FBTyxNQUFNQyw2QkFBTixTQUE0Q0wsZUFBNUMsQ0FBNEQ7QUFDL0RNLHlCQUFpQkMsTUFBakIsRUFBeUJDLFdBQXpCLEVBQXNDQyxJQUF0QyxFQUE0QztBQUN4QyxnQkFBSUEsU0FBUyxJQUFULElBQWlCQSxTQUFTLEVBQTlCLEVBQWtDO0FBQzlCLHVCQUFPLE1BQU1ILGdCQUFOLENBQXVCQyxNQUF2QixFQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLENBQVA7QUFDSDtBQUNELGdCQUFJRixPQUFPRyxZQUFQLEtBQXdCVCxZQUE1QixFQUEwQztBQUN0Qyx1QkFBTyxNQUFNSyxnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFQO0FBQ0g7QUFDRCxtQkFBT0UsT0FBT0osTUFBUCxFQUFlSixHQUFmLEVBQW9CTSxJQUFwQixFQUEwQkQsV0FBMUIsQ0FBUDtBQUNIO0FBVDhELEtBQW5FO0FBV0g7QUFDTSxTQUFTWCxnQkFBVCxDQUEwQkUsUUFBMUIsRUFBb0NhLHFCQUFwQyxFQUEyRFgsWUFBM0QsRUFBeUU7QUFDNUUsUUFBSSxDQUFDRixRQUFMLEVBQWUsT0FBT2EscUJBQVA7QUFDZixRQUFJLENBQUNWLGVBQWVILFFBQWYsRUFBeUJFLFlBQXpCLENBQUwsRUFBNkM7QUFDekMsZUFBT1cscUJBQVA7QUFDSDtBQUNELFFBQUlULE1BQU1KLFNBQVNLLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBVjtBQUNBLFdBQU8sTUFBTVMsbUNBQU4sU0FBa0RELHFCQUFsRCxDQUF3RTtBQUMzRU4seUJBQWlCQyxNQUFqQixFQUF5QkUsSUFBekIsRUFBK0JLLFNBQS9CLEVBQTBDO0FBQ3RDLGdCQUFJTCxTQUFTLElBQVQsSUFBaUJBLFNBQVMsRUFBOUIsRUFBa0M7QUFDOUIsdUJBQU8sTUFBTUgsZ0JBQU4sQ0FBdUJDLE1BQXZCLEVBQStCRSxJQUEvQixFQUFxQ0ssU0FBckMsQ0FBUDtBQUNIO0FBQ0QsZ0JBQUlQLE9BQU9HLFlBQVAsS0FBd0JULFlBQTVCLEVBQTBDO0FBQ3RDLHVCQUFPLE1BQU1LLGdCQUFOLENBQXVCQyxNQUF2QixFQUErQkUsSUFBL0IsRUFBcUNLLFNBQXJDLENBQVA7QUFDSDtBQUNELG1CQUFPSCxPQUFPSixNQUFQLEVBQWVKLEdBQWYsRUFBb0JNLElBQXBCLEVBQTBCSyxTQUExQixDQUFQO0FBQ0g7QUFUMEUsS0FBL0U7QUFXSDtBQUNELFNBQVNILE1BQVQsQ0FBZ0JKLE1BQWhCLEVBQXdCSixHQUF4QixFQUE2Qk0sSUFBN0IsRUFBbUNLLFNBQW5DLEVBQThDO0FBQzFDO0FBQ0E7QUFDQSxRQUFJQyxjQUFjLFVBQVVOLElBQVYsR0FBaUIsUUFBbkM7QUFDQU4sUUFBSWEsU0FBSixHQUFnQkQsV0FBaEI7QUFDQSxRQUFJLENBQUNFLEtBQUQsRUFBUUMsSUFBUixJQUFnQiw2QkFBZ0JmLElBQUlnQixVQUFwQixFQUFnQ1osTUFBaEMsRUFBd0NPLFNBQXhDLENBQXBCO0FBQ0EsV0FBTywyQkFBbUJQLE1BQW5CLEVBQTJCVSxLQUEzQixFQUFrQ0MsSUFBbEMsQ0FBUDtBQUNIO0FBQ0QsU0FBU2hCLGNBQVQsQ0FBd0JILFFBQXhCLEVBQWtDRSxZQUFsQyxFQUFnRDtBQUM1QyxRQUFJbUIsTUFBTXJCLFNBQVNzQixlQUFULENBQXlCcEIsWUFBekIsRUFBdUMsS0FBdkMsQ0FBVjtBQUNBLFFBQUk7QUFDQW1CLFlBQUksb0JBQUosRUFBMEIsV0FBMUIsRUFBdUMsbUJBQXZDO0FBQ0gsS0FGRCxDQUVFLE9BQU9FLENBQVAsRUFBVTtBQUNSO0FBQ0E7QUFDSCxLQUxELFNBS1U7QUFDTjtBQUNBLFlBQUlGLElBQUlHLFVBQUosQ0FBZUMsTUFBZixLQUEwQixDQUExQixJQUErQixrQkFBT0osSUFBSUQsVUFBWCxFQUF1QlQsWUFBdkIsS0FBd0NaLGFBQTNFLEVBQTBGO0FBQ3RGO0FBQ0EsbUJBQU8sS0FBUDtBQUNIO0FBQ0QsZUFBTyxJQUFQO0FBQ0g7QUFDSiIsImZpbGUiOiJsaWIvY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IG1vdmVOb2Rlc0JlZm9yZSB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG4vLyBQYXRjaDogICAgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIFNWRyBGaXhcbi8vIEJyb3dzZXJzOiBTYWZhcmksIElFLCBFZGdlLCBGaXJlZm94IH4zMy0zNFxuLy8gUmVhc29uOiAgIGluc2VydEFkamFjZW50SFRNTCBkb2VzIG5vdCBleGlzdCBvbiBTVkcgZWxlbWVudHMgaW4gU2FmYXJpLiBJdCBpc1xuLy8gICAgICAgICAgIHByZXNlbnQgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gSUUgYW5kIEVkZ2UuIE9sZCB2ZXJzaW9ucyBvZlxuLy8gICAgICAgICAgIEZpcmVmb3ggY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLlxuLy8gRml4OiAgICAgIFNpbmNlIElFIGFuZCBFZGdlIHNpbGVudGx5IGZhaWwgdG8gY3JlYXRlIFNWRyBub2RlcyB1c2luZ1xuLy8gICAgICAgICAgIGlubmVySFRNTCwgYW5kIGJlY2F1c2UgRmlyZWZveCBtYXkgY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3Rcbi8vICAgICAgICAgICBuYW1lc3BhY2UgdXNpbmcgaW5uZXJIVE1MIG9uIFNWRyBlbGVtZW50cywgYW4gSFRNTC1zdHJpbmcgd3JhcHBpbmdcbi8vICAgICAgICAgICBhcHByb2FjaCBpcyB1c2VkLiBBIHByZS9wb3N0IFNWRyB0YWcgaXMgYWRkZWQgdG8gdGhlIHN0cmluZywgdGhlblxuLy8gICAgICAgICAgIHRoYXQgd2hvbGUgc3RyaW5nIGlzIGFkZGVkIHRvIGEgZGl2LiBUaGUgY3JlYXRlZCBub2RlcyBhcmUgcGx1Y2tlZFxuLy8gICAgICAgICAgIG91dCBhbmQgYXBwbGllZCB0byB0aGUgdGFyZ2V0IGxvY2F0aW9uIG9uIERPTS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MsIHN2Z05hbWVzcGFjZSkge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIH1cbiAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3MsIHN2Z05hbWVzcGFjZSkge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIH1cbiAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmV0dXJuIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb25XaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSkge1xuICAgIC8vIElFLCBFZGdlOiBhbHNvIGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB1c2luZyBgaW5uZXJIVE1MYCBvbiBTVkdcbiAgICAvLyBuYW1lc3BhY2VkIGVsZW1lbnRzLiBTbyBoZXJlIGEgd3JhcHBlciBpcyB1c2VkLlxuICAgIGxldCB3cmFwcGVkSHRtbCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG4gICAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuICAgIGxldCBbZmlyc3QsIGxhc3RdID0gbW92ZU5vZGVzQmVmb3JlKGRpdi5maXJzdENoaWxkLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpIHtcbiAgICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05hbWVzcGFjZSwgJ3N2ZycpO1xuICAgIHRyeSB7XG4gICAgICAgIHN2Z1snaW5zZXJ0QWRqYWNlbnRIVE1MJ10oJ2JlZm9yZUVuZCcsICc8Y2lyY2xlPjwvY2lyY2xlPicpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSUUsIEVkZ2U6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyB1bnN1cHBvcnRlZCBvbiBTVkdcbiAgICAgICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgICAgICBpZiAoc3ZnLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIHVud3JhcChzdmcuZmlyc3RDaGlsZCkubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAgICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJ0cmVlQ29uc3RydWN0aW9uIiwiU1ZHX05BTUVTUEFDRSIsImRvY3VtZW50IiwiRE9NQ2hhbmdlc0NsYXNzIiwic3ZnTmFtZXNwYWNlIiwic2hvdWxkQXBwbHlGaXgiLCJkaXYiLCJjcmVhdGVFbGVtZW50IiwiRE9NQ2hhbmdlc1dpdGhTVkdJbm5lckhUTUxGaXgiLCJpbnNlcnRIVE1MQmVmb3JlIiwicGFyZW50IiwibmV4dFNpYmxpbmciLCJodG1sIiwibmFtZXNwYWNlVVJJIiwiZml4U1ZHIiwiVHJlZUNvbnN0cnVjdGlvbkNsYXNzIiwiVHJlZUNvbnN0cnVjdGlvbldpdGhTVkdJbm5lckhUTUxGaXgiLCJyZWZlcmVuY2UiLCJ3cmFwcGVkSHRtbCIsImlubmVySFRNTCIsImZpcnN0IiwibGFzdCIsImZpcnN0Q2hpbGQiLCJzdmciLCJjcmVhdGVFbGVtZW50TlMiLCJlIiwiY2hpbGROb2RlcyIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBZWdCQSxVLEdBQUFBLFU7UUFrQkFDLGdCLEdBQUFBLGdCOztBQWpDaEI7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUMsd0NBQWdCLDRCQUF0QjtBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRixVQUFULENBQW9CRyxRQUFwQixFQUE4QkMsZUFBOUIsRUFBK0NDLFlBQS9DLEVBQTZEO0FBQ2hFLFFBQUksQ0FBQ0YsUUFBTCxFQUFlLE9BQU9DLGVBQVA7QUFDZixRQUFJLENBQUNFLGVBQWVILFFBQWYsRUFBeUJFLFlBQXpCLENBQUwsRUFBNkM7QUFDekMsZUFBT0QsZUFBUDtBQUNIO0FBQ0QsUUFBSUcsTUFBTUosU0FBU0ssYUFBVCxDQUF1QixLQUF2QixDQUFWO0FBQ0EsV0FBTyxNQUFNQyw2QkFBTixTQUE0Q0wsZUFBNUMsQ0FBNEQ7QUFDL0RNLHlCQUFpQkMsTUFBakIsRUFBeUJDLFdBQXpCLEVBQXNDQyxJQUF0QyxFQUE0QztBQUN4QyxnQkFBSUEsU0FBUyxJQUFULElBQWlCQSxTQUFTLEVBQTlCLEVBQWtDO0FBQzlCLHVCQUFPLE1BQU1ILGdCQUFOLENBQXVCQyxNQUF2QixFQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLENBQVA7QUFDSDtBQUNELGdCQUFJRixPQUFPRyxZQUFQLEtBQXdCVCxZQUE1QixFQUEwQztBQUN0Qyx1QkFBTyxNQUFNSyxnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFQO0FBQ0g7QUFDRCxtQkFBT0UsT0FBT0osTUFBUCxFQUFlSixHQUFmLEVBQW9CTSxJQUFwQixFQUEwQkQsV0FBMUIsQ0FBUDtBQUNIO0FBVDhELEtBQW5FO0FBV0g7QUFDTSxTQUFTWCxnQkFBVCxDQUEwQkUsUUFBMUIsRUFBb0NhLHFCQUFwQyxFQUEyRFgsWUFBM0QsRUFBeUU7QUFDNUUsUUFBSSxDQUFDRixRQUFMLEVBQWUsT0FBT2EscUJBQVA7QUFDZixRQUFJLENBQUNWLGVBQWVILFFBQWYsRUFBeUJFLFlBQXpCLENBQUwsRUFBNkM7QUFDekMsZUFBT1cscUJBQVA7QUFDSDtBQUNELFFBQUlULE1BQU1KLFNBQVNLLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBVjtBQUNBLFdBQU8sTUFBTVMsbUNBQU4sU0FBa0RELHFCQUFsRCxDQUF3RTtBQUMzRU4seUJBQWlCQyxNQUFqQixFQUF5Qk8sU0FBekIsRUFBb0NMLElBQXBDLEVBQTBDO0FBQ3RDLGdCQUFJQSxTQUFTLElBQVQsSUFBaUJBLFNBQVMsRUFBOUIsRUFBa0M7QUFDOUIsdUJBQU8sTUFBTUgsZ0JBQU4sQ0FBdUJDLE1BQXZCLEVBQStCTyxTQUEvQixFQUEwQ0wsSUFBMUMsQ0FBUDtBQUNIO0FBQ0QsZ0JBQUlGLE9BQU9HLFlBQVAsS0FBd0JULFlBQTVCLEVBQTBDO0FBQ3RDLHVCQUFPLE1BQU1LLGdCQUFOLENBQXVCQyxNQUF2QixFQUErQk8sU0FBL0IsRUFBMENMLElBQTFDLENBQVA7QUFDSDtBQUNELG1CQUFPRSxPQUFPSixNQUFQLEVBQWVKLEdBQWYsRUFBb0JNLElBQXBCLEVBQTBCSyxTQUExQixDQUFQO0FBQ0g7QUFUMEUsS0FBL0U7QUFXSDtBQUNELFNBQVNILE1BQVQsQ0FBZ0JKLE1BQWhCLEVBQXdCSixHQUF4QixFQUE2Qk0sSUFBN0IsRUFBbUNLLFNBQW5DLEVBQThDO0FBQzFDO0FBQ0E7QUFDQSxRQUFJQyxjQUFjLFVBQVVOLElBQVYsR0FBaUIsUUFBbkM7QUFDQU4sUUFBSWEsU0FBSixHQUFnQkQsV0FBaEI7QUFDQSxRQUFJLENBQUNFLEtBQUQsRUFBUUMsSUFBUixJQUFnQiw2QkFBZ0JmLElBQUlnQixVQUFwQixFQUFnQ1osTUFBaEMsRUFBd0NPLFNBQXhDLENBQXBCO0FBQ0EsV0FBTywyQkFBbUJQLE1BQW5CLEVBQTJCVSxLQUEzQixFQUFrQ0MsSUFBbEMsQ0FBUDtBQUNIO0FBQ0QsU0FBU2hCLGNBQVQsQ0FBd0JILFFBQXhCLEVBQWtDRSxZQUFsQyxFQUFnRDtBQUM1QyxRQUFJbUIsTUFBTXJCLFNBQVNzQixlQUFULENBQXlCcEIsWUFBekIsRUFBdUMsS0FBdkMsQ0FBVjtBQUNBLFFBQUk7QUFDQW1CLFlBQUksb0JBQUosRUFBMEIsV0FBMUIsRUFBdUMsbUJBQXZDO0FBQ0gsS0FGRCxDQUVFLE9BQU9FLENBQVAsRUFBVTtBQUNSO0FBQ0E7QUFDSCxLQUxELFNBS1U7QUFDTjtBQUNBLFlBQUlGLElBQUlHLFVBQUosQ0FBZUMsTUFBZixLQUEwQixDQUExQixJQUErQixrQkFBT0osSUFBSUQsVUFBWCxFQUF1QlQsWUFBdkIsS0FBd0NaLGFBQTNFLEVBQTBGO0FBQ3RGO0FBQ0EsbUJBQU8sS0FBUDtBQUNIO0FBQ0QsZUFBTyxJQUFQO0FBQ0g7QUFDSiIsImZpbGUiOiJsaWIvY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IG1vdmVOb2Rlc0JlZm9yZSB9IGZyb20gJy4uL2RvbS9oZWxwZXInO1xuaW1wb3J0IHsgdW53cmFwIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG4vLyBQYXRjaDogICAgaW5zZXJ0QWRqYWNlbnRIVE1MIG9uIFNWRyBGaXhcbi8vIEJyb3dzZXJzOiBTYWZhcmksIElFLCBFZGdlLCBGaXJlZm94IH4zMy0zNFxuLy8gUmVhc29uOiAgIGluc2VydEFkamFjZW50SFRNTCBkb2VzIG5vdCBleGlzdCBvbiBTVkcgZWxlbWVudHMgaW4gU2FmYXJpLiBJdCBpc1xuLy8gICAgICAgICAgIHByZXNlbnQgYnV0IHRocm93cyBhbiBleGNlcHRpb24gb24gSUUgYW5kIEVkZ2UuIE9sZCB2ZXJzaW9ucyBvZlxuLy8gICAgICAgICAgIEZpcmVmb3ggY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3QgbmFtZXNwYWNlLlxuLy8gRml4OiAgICAgIFNpbmNlIElFIGFuZCBFZGdlIHNpbGVudGx5IGZhaWwgdG8gY3JlYXRlIFNWRyBub2RlcyB1c2luZ1xuLy8gICAgICAgICAgIGlubmVySFRNTCwgYW5kIGJlY2F1c2UgRmlyZWZveCBtYXkgY3JlYXRlIG5vZGVzIGluIHRoZSBpbmNvcnJlY3Rcbi8vICAgICAgICAgICBuYW1lc3BhY2UgdXNpbmcgaW5uZXJIVE1MIG9uIFNWRyBlbGVtZW50cywgYW4gSFRNTC1zdHJpbmcgd3JhcHBpbmdcbi8vICAgICAgICAgICBhcHByb2FjaCBpcyB1c2VkLiBBIHByZS9wb3N0IFNWRyB0YWcgaXMgYWRkZWQgdG8gdGhlIHN0cmluZywgdGhlblxuLy8gICAgICAgICAgIHRoYXQgd2hvbGUgc3RyaW5nIGlzIGFkZGVkIHRvIGEgZGl2LiBUaGUgY3JlYXRlZCBub2RlcyBhcmUgcGx1Y2tlZFxuLy8gICAgICAgICAgIG91dCBhbmQgYXBwbGllZCB0byB0aGUgdGFyZ2V0IGxvY2F0aW9uIG9uIERPTS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MsIHN2Z05hbWVzcGFjZSkge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIH1cbiAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmV0dXJuIGNsYXNzIERPTUNoYW5nZXNXaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgRE9NQ2hhbmdlc0NsYXNzIHtcbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3MsIHN2Z05hbWVzcGFjZSkge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSkge1xuICAgICAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIH1cbiAgICBsZXQgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmV0dXJuIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb25XaXRoU1ZHSW5uZXJIVE1MRml4IGV4dGVuZHMgVHJlZUNvbnN0cnVjdGlvbkNsYXNzIHtcbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocGFyZW50Lm5hbWVzcGFjZVVSSSAhPT0gc3ZnTmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCByZWZlcmVuY2UsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeFNWRyhwYXJlbnQsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5mdW5jdGlvbiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSkge1xuICAgIC8vIElFLCBFZGdlOiBhbHNvIGRvIG5vdCBjb3JyZWN0bHkgc3VwcG9ydCB1c2luZyBgaW5uZXJIVE1MYCBvbiBTVkdcbiAgICAvLyBuYW1lc3BhY2VkIGVsZW1lbnRzLiBTbyBoZXJlIGEgd3JhcHBlciBpcyB1c2VkLlxuICAgIGxldCB3cmFwcGVkSHRtbCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG4gICAgZGl2LmlubmVySFRNTCA9IHdyYXBwZWRIdG1sO1xuICAgIGxldCBbZmlyc3QsIGxhc3RdID0gbW92ZU5vZGVzQmVmb3JlKGRpdi5maXJzdENoaWxkLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50LCBzdmdOYW1lc3BhY2UpIHtcbiAgICBsZXQgc3ZnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKHN2Z05hbWVzcGFjZSwgJ3N2ZycpO1xuICAgIHRyeSB7XG4gICAgICAgIHN2Z1snaW5zZXJ0QWRqYWNlbnRIVE1MJ10oJ2JlZm9yZUVuZCcsICc8Y2lyY2xlPjwvY2lyY2xlPicpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gSUUsIEVkZ2U6IFdpbGwgdGhyb3csIGluc2VydEFkamFjZW50SFRNTCBpcyB1bnN1cHBvcnRlZCBvbiBTVkdcbiAgICAgICAgLy8gU2FmYXJpOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgbm90IHByZXNlbnQgb24gU1ZHXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gRkY6IE9sZCB2ZXJzaW9ucyB3aWxsIGNyZWF0ZSBhIG5vZGUgaW4gdGhlIHdyb25nIG5hbWVzcGFjZVxuICAgICAgICBpZiAoc3ZnLmNoaWxkTm9kZXMubGVuZ3RoID09PSAxICYmIHVud3JhcChzdmcuZmlyc3RDaGlsZCkubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFKSB7XG4gICAgICAgICAgICAvLyBUaGUgdGVzdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbn0iXX0=

@@ -58,5 +58,5 @@ 'use strict';

}
insertHTMLBefore(parent, html, reference) {
insertHTMLBefore(parent, reference, html) {
if (html === null) {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, reference, html);
}

@@ -69,3 +69,3 @@ let didSetUselessComment = false;

}
let bounds = super.insertHTMLBefore(parent, html, reference);
let bounds = super.insertHTMLBefore(parent, reference, html);
if (didSetUselessComment) {

@@ -88,2 +88,2 @@ parent.removeChild(this.uselessComment);

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJ0cmVlQ29uc3RydWN0aW9uIiwiZG9jdW1lbnQiLCJET01DaGFuZ2VzQ2xhc3MiLCJzaG91bGRBcHBseUZpeCIsIkRPTUNoYW5nZXNXaXRoVGV4dE5vZGVNZXJnaW5nRml4IiwiY29uc3RydWN0b3IiLCJ1c2VsZXNzQ29tbWVudCIsImNyZWF0ZUNvbW1lbnQiLCJpbnNlcnRIVE1MQmVmb3JlIiwicGFyZW50IiwibmV4dFNpYmxpbmciLCJodG1sIiwiZGlkU2V0VXNlbGVzc0NvbW1lbnQiLCJuZXh0UHJldmlvdXMiLCJwcmV2aW91c1NpYmxpbmciLCJsYXN0Q2hpbGQiLCJUZXh0IiwiaW5zZXJ0QmVmb3JlIiwiYm91bmRzIiwicmVtb3ZlQ2hpbGQiLCJUcmVlQ29uc3RydWN0aW9uQ2xhc3MiLCJUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCIsInJlZmVyZW5jZSIsIm1lcmdpbmdUZXh0RGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50SFRNTCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWWdCQSxVLEdBQUFBLFU7UUE0QkFDLGdCLEdBQUFBLGdCO0FBeENoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRCxVQUFULENBQW9CRSxRQUFwQixFQUE4QkMsZUFBOUIsRUFBK0M7QUFDbEQsUUFBSSxDQUFDRCxRQUFMLEVBQWUsT0FBT0MsZUFBUDtBQUNmLFFBQUksQ0FBQ0MsZUFBZUYsUUFBZixDQUFMLEVBQStCO0FBQzNCLGVBQU9DLGVBQVA7QUFDSDtBQUNELFdBQU8sTUFBTUUsZ0NBQU4sU0FBK0NGLGVBQS9DLENBQStEO0FBQ2xFRyxvQkFBWUosUUFBWixFQUFzQjtBQUNsQixrQkFBTUEsUUFBTjtBQUNBLGlCQUFLSyxjQUFMLEdBQXNCTCxTQUFTTSxhQUFULENBQXVCLEVBQXZCLENBQXRCO0FBQ0g7QUFDREMseUJBQWlCQyxNQUFqQixFQUF5QkMsV0FBekIsRUFBc0NDLElBQXRDLEVBQTRDO0FBQ3hDLGdCQUFJQSxTQUFTLElBQWIsRUFBbUI7QUFDZix1QkFBTyxNQUFNSCxnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFQO0FBQ0g7QUFDRCxnQkFBSUMsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVILGNBQWNBLFlBQVlJLGVBQTFCLEdBQTRDTCxPQUFPTSxTQUF0RTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q0ksV0FBekM7QUFDSDtBQUNELGdCQUFJUSxTQUFTLE1BQU1WLGdCQUFOLENBQXVCQyxNQUF2QixFQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLENBQWI7QUFDQSxnQkFBSUMsb0JBQUosRUFBMEI7QUFDdEJILHVCQUFPVSxXQUFQLENBQW1CLEtBQUtiLGNBQXhCO0FBQ0g7QUFDRCxtQkFBT1ksTUFBUDtBQUNIO0FBcEJpRSxLQUF0RTtBQXNCSDtBQUNNLFNBQVNsQixnQkFBVCxDQUEwQkMsUUFBMUIsRUFBb0NtQixxQkFBcEMsRUFBMkQ7QUFDOUQsUUFBSSxDQUFDbkIsUUFBTCxFQUFlLE9BQU9tQixxQkFBUDtBQUNmLFFBQUksQ0FBQ2pCLGVBQWVGLFFBQWYsQ0FBTCxFQUErQjtBQUMzQixlQUFPbUIscUJBQVA7QUFDSDtBQUNELFdBQU8sTUFBTUMsc0NBQU4sU0FBcURELHFCQUFyRCxDQUEyRTtBQUM5RWYsb0JBQVlKLFFBQVosRUFBc0I7QUFDbEIsa0JBQU1BLFFBQU47QUFDQSxpQkFBS0ssY0FBTCxHQUFzQixLQUFLQyxhQUFMLENBQW1CLEVBQW5CLENBQXRCO0FBQ0g7QUFDREMseUJBQWlCQyxNQUFqQixFQUF5QkUsSUFBekIsRUFBK0JXLFNBQS9CLEVBQTBDO0FBQ3RDLGdCQUFJWCxTQUFTLElBQWIsRUFBbUI7QUFDZix1QkFBTyxNQUFNSCxnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JFLElBQS9CLEVBQXFDVyxTQUFyQyxDQUFQO0FBQ0g7QUFDRCxnQkFBSVYsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVTLFlBQVlBLFVBQVVSLGVBQXRCLEdBQXdDTCxPQUFPTSxTQUFsRTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q2dCLFNBQXpDO0FBQ0g7QUFDRCxnQkFBSUosU0FBUyxNQUFNVixnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JFLElBQS9CLEVBQXFDVyxTQUFyQyxDQUFiO0FBQ0EsZ0JBQUlWLG9CQUFKLEVBQTBCO0FBQ3RCSCx1QkFBT1UsV0FBUCxDQUFtQixLQUFLYixjQUF4QjtBQUNIO0FBQ0QsbUJBQU9ZLE1BQVA7QUFDSDtBQXBCNkUsS0FBbEY7QUFzQkg7QUFDRCxTQUFTZixjQUFULENBQXdCRixRQUF4QixFQUFrQztBQUM5QixRQUFJc0IsaUJBQWlCdEIsU0FBU3VCLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBckI7QUFDQUQsbUJBQWVFLFNBQWYsR0FBMkIsT0FBM0I7QUFDQUYsbUJBQWVHLGtCQUFmLENBQWtDLFdBQWxDLEVBQStDLFFBQS9DO0FBQ0EsUUFBSUgsZUFBZUksVUFBZixDQUEwQkMsTUFBMUIsS0FBcUMsQ0FBekMsRUFBNEM7QUFDeEM7QUFDQSxlQUFPLEtBQVA7QUFDSDtBQUNELFdBQU8sSUFBUDtBQUNIIiwiZmlsZSI6ImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUGF0Y2g6ICAgIEFkamFjZW50IHRleHQgbm9kZSBtZXJnaW5nIGZpeFxuLy8gQnJvd3NlcnM6IElFLCBFZGdlLCBGaXJlZm94IHcvbyBpbnNwZWN0b3Igb3BlblxuLy8gUmVhc29uOiAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlcy4gRm9yIGV4bWFwbGUgZ2l2ZW5cbi8vICAgICAgICAgICA8ZGl2PkhlbGxvPC9kaXY+IHdpdGggZGl2Lmluc2VydEFkamFjZW50SFRNTCgnIHdvcmxkJykgYnJvd3NlcnNcbi8vICAgICAgICAgICB3aXRoIHByb3BlciBiZWhhdmlvciB3aWxsIHBvcHVsYXRlIGRpdi5jaGlsZE5vZGVzIHdpdGggdHdvIGl0ZW1zLlxuLy8gICAgICAgICAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgcG9wdWxhdGUgaXQgd2l0aCBvbmUgbWVyZ2VkIG5vZGUgaW5zdGVhZC5cbi8vIEZpeDogICAgICBBZGQgdGhlc2Ugbm9kZXMgdG8gYSB3cmFwcGVyIGVsZW1lbnQsIHRoZW4gaXRlcmF0ZSB0aGUgY2hpbGROb2Rlc1xuLy8gICAgICAgICAgIG9mIHRoYXQgd3JhcHBlciBhbmQgbW92ZSB0aGUgbm9kZXMgdG8gdGhlaXIgdGFyZ2V0IGxvY2F0aW9uLiBOb3RlXG4vLyAgICAgICAgICAgdGhhdCBwb3RlbnRpYWwgU1ZHIGJ1Z3Mgd2lsbCBoYXZlIGJlZW4gaGFuZGxlZCBiZWZvcmUgdGhpcyBmaXguXG4vLyAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZml4IG11c3Qgb25seSBhcHBseSB0byB0aGUgcHJldmlvdXMgdGV4dCBub2RlLCBhc1xuLy8gICAgICAgICAgIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBpbnNlcnRIVE1MQmVmb3JlYCBhbHJlYWR5IGhhbmRsZXNcbi8vICAgICAgICAgICBmb2xsb3dpbmcgdGV4dCBub2RlcyBjb3JyZWN0bHkuXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudCwgRE9NQ2hhbmdlc0NsYXNzKSB7XG4gICAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSkge1xuICAgICAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhUZXh0Tm9kZU1lcmdpbmdGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgICAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICAgICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgICAgICAgICAgdGhpcy51c2VsZXNzQ29tbWVudCA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5leHRQcmV2aW91cyA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICAgICAgICAgIGlmIChuZXh0UHJldmlvdXMgJiYgbmV4dFByZXZpb3VzIGluc3RhbmNlb2YgVGV4dCkge1xuICAgICAgICAgICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMudXNlbGVzc0NvbW1lbnQsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgaWYgKGRpZFNldFVzZWxlc3NDb21tZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMudXNlbGVzc0NvbW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJvdW5kcztcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudCwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzKSB7XG4gICAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSkge1xuICAgICAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3MgVHJlZUNvbnN0cnVjdGlvbldpdGhUZXh0Tm9kZU1lcmdpbmdGaXggZXh0ZW5kcyBUcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgICAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICAgICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgICAgICAgICAgdGhpcy51c2VsZXNzQ29tbWVudCA9IHRoaXMuY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBuZXh0UHJldmlvdXMgPSByZWZlcmVuY2UgPyByZWZlcmVuY2UucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICAgICAgICAgIGlmIChuZXh0UHJldmlvdXMgJiYgbmV4dFByZXZpb3VzIGluc3RhbmNlb2YgVGV4dCkge1xuICAgICAgICAgICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMudXNlbGVzc0NvbW1lbnQsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgYm91bmRzID0gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSB7XG4gICAgbGV0IG1lcmdpbmdUZXh0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbWVyZ2luZ1RleHREaXYuaW5uZXJIVE1MID0gJ2ZpcnN0JztcbiAgICBtZXJnaW5nVGV4dERpdi5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUVuZCcsICdzZWNvbmQnKTtcbiAgICBpZiAobWVyZ2luZ1RleHREaXYuY2hpbGROb2Rlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgLy8gSXQgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJ0cmVlQ29uc3RydWN0aW9uIiwiZG9jdW1lbnQiLCJET01DaGFuZ2VzQ2xhc3MiLCJzaG91bGRBcHBseUZpeCIsIkRPTUNoYW5nZXNXaXRoVGV4dE5vZGVNZXJnaW5nRml4IiwiY29uc3RydWN0b3IiLCJ1c2VsZXNzQ29tbWVudCIsImNyZWF0ZUNvbW1lbnQiLCJpbnNlcnRIVE1MQmVmb3JlIiwicGFyZW50IiwibmV4dFNpYmxpbmciLCJodG1sIiwiZGlkU2V0VXNlbGVzc0NvbW1lbnQiLCJuZXh0UHJldmlvdXMiLCJwcmV2aW91c1NpYmxpbmciLCJsYXN0Q2hpbGQiLCJUZXh0IiwiaW5zZXJ0QmVmb3JlIiwiYm91bmRzIiwicmVtb3ZlQ2hpbGQiLCJUcmVlQ29uc3RydWN0aW9uQ2xhc3MiLCJUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCIsInJlZmVyZW5jZSIsIm1lcmdpbmdUZXh0RGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50SFRNTCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWWdCQSxVLEdBQUFBLFU7UUE0QkFDLGdCLEdBQUFBLGdCO0FBeENoQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTRCxVQUFULENBQW9CRSxRQUFwQixFQUE4QkMsZUFBOUIsRUFBK0M7QUFDbEQsUUFBSSxDQUFDRCxRQUFMLEVBQWUsT0FBT0MsZUFBUDtBQUNmLFFBQUksQ0FBQ0MsZUFBZUYsUUFBZixDQUFMLEVBQStCO0FBQzNCLGVBQU9DLGVBQVA7QUFDSDtBQUNELFdBQU8sTUFBTUUsZ0NBQU4sU0FBK0NGLGVBQS9DLENBQStEO0FBQ2xFRyxvQkFBWUosUUFBWixFQUFzQjtBQUNsQixrQkFBTUEsUUFBTjtBQUNBLGlCQUFLSyxjQUFMLEdBQXNCTCxTQUFTTSxhQUFULENBQXVCLEVBQXZCLENBQXRCO0FBQ0g7QUFDREMseUJBQWlCQyxNQUFqQixFQUF5QkMsV0FBekIsRUFBc0NDLElBQXRDLEVBQTRDO0FBQ3hDLGdCQUFJQSxTQUFTLElBQWIsRUFBbUI7QUFDZix1QkFBTyxNQUFNSCxnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFQO0FBQ0g7QUFDRCxnQkFBSUMsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVILGNBQWNBLFlBQVlJLGVBQTFCLEdBQTRDTCxPQUFPTSxTQUF0RTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q0ksV0FBekM7QUFDSDtBQUNELGdCQUFJUSxTQUFTLE1BQU1WLGdCQUFOLENBQXVCQyxNQUF2QixFQUErQkMsV0FBL0IsRUFBNENDLElBQTVDLENBQWI7QUFDQSxnQkFBSUMsb0JBQUosRUFBMEI7QUFDdEJILHVCQUFPVSxXQUFQLENBQW1CLEtBQUtiLGNBQXhCO0FBQ0g7QUFDRCxtQkFBT1ksTUFBUDtBQUNIO0FBcEJpRSxLQUF0RTtBQXNCSDtBQUNNLFNBQVNsQixnQkFBVCxDQUEwQkMsUUFBMUIsRUFBb0NtQixxQkFBcEMsRUFBMkQ7QUFDOUQsUUFBSSxDQUFDbkIsUUFBTCxFQUFlLE9BQU9tQixxQkFBUDtBQUNmLFFBQUksQ0FBQ2pCLGVBQWVGLFFBQWYsQ0FBTCxFQUErQjtBQUMzQixlQUFPbUIscUJBQVA7QUFDSDtBQUNELFdBQU8sTUFBTUMsc0NBQU4sU0FBcURELHFCQUFyRCxDQUEyRTtBQUM5RWYsb0JBQVlKLFFBQVosRUFBc0I7QUFDbEIsa0JBQU1BLFFBQU47QUFDQSxpQkFBS0ssY0FBTCxHQUFzQixLQUFLQyxhQUFMLENBQW1CLEVBQW5CLENBQXRCO0FBQ0g7QUFDREMseUJBQWlCQyxNQUFqQixFQUF5QmEsU0FBekIsRUFBb0NYLElBQXBDLEVBQTBDO0FBQ3RDLGdCQUFJQSxTQUFTLElBQWIsRUFBbUI7QUFDZix1QkFBTyxNQUFNSCxnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JhLFNBQS9CLEVBQTBDWCxJQUExQyxDQUFQO0FBQ0g7QUFDRCxnQkFBSUMsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVTLFlBQVlBLFVBQVVSLGVBQXRCLEdBQXdDTCxPQUFPTSxTQUFsRTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q2dCLFNBQXpDO0FBQ0g7QUFDRCxnQkFBSUosU0FBUyxNQUFNVixnQkFBTixDQUF1QkMsTUFBdkIsRUFBK0JhLFNBQS9CLEVBQTBDWCxJQUExQyxDQUFiO0FBQ0EsZ0JBQUlDLG9CQUFKLEVBQTBCO0FBQ3RCSCx1QkFBT1UsV0FBUCxDQUFtQixLQUFLYixjQUF4QjtBQUNIO0FBQ0QsbUJBQU9ZLE1BQVA7QUFDSDtBQXBCNkUsS0FBbEY7QUFzQkg7QUFDRCxTQUFTZixjQUFULENBQXdCRixRQUF4QixFQUFrQztBQUM5QixRQUFJc0IsaUJBQWlCdEIsU0FBU3VCLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBckI7QUFDQUQsbUJBQWVFLFNBQWYsR0FBMkIsT0FBM0I7QUFDQUYsbUJBQWVHLGtCQUFmLENBQWtDLFdBQWxDLEVBQStDLFFBQS9DO0FBQ0EsUUFBSUgsZUFBZUksVUFBZixDQUEwQkMsTUFBMUIsS0FBcUMsQ0FBekMsRUFBNEM7QUFDeEM7QUFDQSxlQUFPLEtBQVA7QUFDSDtBQUNELFdBQU8sSUFBUDtBQUNIIiwiZmlsZSI6ImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gUGF0Y2g6ICAgIEFkamFjZW50IHRleHQgbm9kZSBtZXJnaW5nIGZpeFxuLy8gQnJvd3NlcnM6IElFLCBFZGdlLCBGaXJlZm94IHcvbyBpbnNwZWN0b3Igb3BlblxuLy8gUmVhc29uOiAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgbWVyZ2UgYWRqYWNlbnQgdGV4dCBub2Rlcy4gRm9yIGV4bWFwbGUgZ2l2ZW5cbi8vICAgICAgICAgICA8ZGl2PkhlbGxvPC9kaXY+IHdpdGggZGl2Lmluc2VydEFkamFjZW50SFRNTCgnIHdvcmxkJykgYnJvd3NlcnNcbi8vICAgICAgICAgICB3aXRoIHByb3BlciBiZWhhdmlvciB3aWxsIHBvcHVsYXRlIGRpdi5jaGlsZE5vZGVzIHdpdGggdHdvIGl0ZW1zLlxuLy8gICAgICAgICAgIFRoZXNlIGJyb3dzZXJzIHdpbGwgcG9wdWxhdGUgaXQgd2l0aCBvbmUgbWVyZ2VkIG5vZGUgaW5zdGVhZC5cbi8vIEZpeDogICAgICBBZGQgdGhlc2Ugbm9kZXMgdG8gYSB3cmFwcGVyIGVsZW1lbnQsIHRoZW4gaXRlcmF0ZSB0aGUgY2hpbGROb2Rlc1xuLy8gICAgICAgICAgIG9mIHRoYXQgd3JhcHBlciBhbmQgbW92ZSB0aGUgbm9kZXMgdG8gdGhlaXIgdGFyZ2V0IGxvY2F0aW9uLiBOb3RlXG4vLyAgICAgICAgICAgdGhhdCBwb3RlbnRpYWwgU1ZHIGJ1Z3Mgd2lsbCBoYXZlIGJlZW4gaGFuZGxlZCBiZWZvcmUgdGhpcyBmaXguXG4vLyAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgZml4IG11c3Qgb25seSBhcHBseSB0byB0aGUgcHJldmlvdXMgdGV4dCBub2RlLCBhc1xuLy8gICAgICAgICAgIHRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBpbnNlcnRIVE1MQmVmb3JlYCBhbHJlYWR5IGhhbmRsZXNcbi8vICAgICAgICAgICBmb2xsb3dpbmcgdGV4dCBub2RlcyBjb3JyZWN0bHkuXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudCwgRE9NQ2hhbmdlc0NsYXNzKSB7XG4gICAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSkge1xuICAgICAgICByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhUZXh0Tm9kZU1lcmdpbmdGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgICAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICAgICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgICAgICAgICAgdGhpcy51c2VsZXNzQ29tbWVudCA9IGRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoJycpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5leHRQcmV2aW91cyA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICAgICAgICAgIGlmIChuZXh0UHJldmlvdXMgJiYgbmV4dFByZXZpb3VzIGluc3RhbmNlb2YgVGV4dCkge1xuICAgICAgICAgICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMudXNlbGVzc0NvbW1lbnQsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgaWYgKGRpZFNldFVzZWxlc3NDb21tZW50KSB7XG4gICAgICAgICAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHRoaXMudXNlbGVzc0NvbW1lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGJvdW5kcztcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudCwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzKSB7XG4gICAgaWYgKCFkb2N1bWVudCkgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICBpZiAoIXNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSkge1xuICAgICAgICByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIH1cbiAgICByZXR1cm4gY2xhc3MgVHJlZUNvbnN0cnVjdGlvbldpdGhUZXh0Tm9kZU1lcmdpbmdGaXggZXh0ZW5kcyBUcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgICAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICAgICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgICAgICAgICAgdGhpcy51c2VsZXNzQ29tbWVudCA9IHRoaXMuY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGxldCBuZXh0UHJldmlvdXMgPSByZWZlcmVuY2UgPyByZWZlcmVuY2UucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICAgICAgICAgIGlmIChuZXh0UHJldmlvdXMgJiYgbmV4dFByZXZpb3VzIGluc3RhbmNlb2YgVGV4dCkge1xuICAgICAgICAgICAgICAgIGRpZFNldFVzZWxlc3NDb21tZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHRoaXMudXNlbGVzc0NvbW1lbnQsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgYm91bmRzID0gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCk7XG4gICAgICAgICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSB7XG4gICAgbGV0IG1lcmdpbmdUZXh0RGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgbWVyZ2luZ1RleHREaXYuaW5uZXJIVE1MID0gJ2ZpcnN0JztcbiAgICBtZXJnaW5nVGV4dERpdi5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUVuZCcsICdzZWNvbmQnKTtcbiAgICBpZiAobWVyZ2luZ1RleHREaXYuY2hpbGROb2Rlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgLy8gSXQgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn0iXX0=

@@ -79,4 +79,4 @@ 'use strict';

// args
pushArgs(positional, synthetic) {
this.push(58 /* PushArgs */, positional, synthetic === true ? 1 : 0);
pushArgs(synthetic) {
this.push(58 /* PushArgs */, synthetic === true ? 1 : 0);
}

@@ -429,2 +429,3 @@ // helpers

}
this.pushImmediate(positional);
let names = _util.EMPTY_ARRAY;

@@ -439,3 +440,3 @@ if (hash) {

this.pushImmediate(names);
this.pushArgs(positional, synthetic);
this.pushArgs(synthetic);
}

@@ -476,3 +477,3 @@ compile(expr) {

}
invokeComponent(attrs, params, hash, block, inverse = null) {
invokeComponent(attrs, params, hash, block = null, inverse = null) {
this.initializeComponentState();

@@ -488,3 +489,3 @@ this.fetch(_opcodes.Register.s0);

this.pushDynamicScope();
this.createComponent(_opcodes.Register.s0, true, inverse === null);
this.createComponent(_opcodes.Register.s0, block !== null, inverse !== null);
this.registerComponentDestructor(_opcodes.Register.s0);

@@ -506,2 +507,2 @@ this.getComponentSelf(_opcodes.Register.s0);

exports.default = OpcodeBuilder;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiXSwibmFtZXMiOlsiY29udGVudCIsInZtIiwiTGFiZWxzIiwiY29uc3RydWN0b3IiLCJsYWJlbHMiLCJ0YXJnZXRzIiwibGFiZWwiLCJuYW1lIiwiaW5kZXgiLCJ0YXJnZXQiLCJhdCIsIlRhcmdldCIsInB1c2giLCJwYXRjaCIsIm9wY29kZXMiLCJzZXQiLCJCYXNpY09wY29kZUJ1aWxkZXIiLCJlbnYiLCJtZXRhIiwicHJvZ3JhbSIsImxhYmVsc1N0YWNrIiwiY29uc3RhbnRzIiwic3RhcnQiLCJuZXh0IiwicG9zIiwiY3VycmVudCIsIm5leHRQb3MiLCJ1cHZhcnMiLCJjb3VudCIsInJlc2VydmUiLCJvcDEiLCJvcDIiLCJvcDMiLCJmaW5hbGl6ZSIsInB1c2hBcmdzIiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsInN0YXJ0TGFiZWxzIiwic3RvcExhYmVscyIsInBvcCIsInB1c2hDb21wb25lbnRNYW5hZ2VyIiwiZGVmaW5pdGlvbiIsIm90aGVyIiwicHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyIiwiaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlIiwicHJlcGFyZUFyZ3MiLCJzdGF0ZSIsImNyZWF0ZUNvbXBvbmVudCIsImhhc0RlZmF1bHQiLCJoYXNJbnZlcnNlIiwiZmxhZyIsInJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciIsImJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24iLCJjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiIsInB1c2hDb21wb25lbnRPcGVyYXRpb25zIiwiZ2V0Q29tcG9uZW50U2VsZiIsImdldENvbXBvbmVudExheW91dCIsImRpZENyZWF0ZUVsZW1lbnQiLCJkaWRSZW5kZXJMYXlvdXQiLCJnZXRQYXJ0aWFsVGVtcGxhdGUiLCJyZXNvbHZlTWF5YmVMb2NhbCIsInN0cmluZyIsImRlYnVnZ2VyIiwic3ltYm9scyIsImV2YWxJbmZvIiwiYXJyYXkiLCJkeW5hbWljQ29udGVudCIsIk9wY29kZSIsImNhdXRpb3VzQXBwZW5kIiwiT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUiLCJ0cnVzdGluZ0FwcGVuZCIsIk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlIiwidGV4dCIsIm9wZW5QcmltaXRpdmVFbGVtZW50IiwidGFnIiwib3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyIsIm9wZW5EeW5hbWljRWxlbWVudCIsImZsdXNoRWxlbWVudCIsImNsb3NlRWxlbWVudCIsInN0YXRpY0F0dHIiLCJfbmFtZSIsIl9uYW1lc3BhY2UiLCJfdmFsdWUiLCJuYW1lc3BhY2UiLCJ2YWx1ZSIsImR5bmFtaWNBdHRyTlMiLCJ0cnVzdGluZyIsImR5bmFtaWNBdHRyIiwiY29tbWVudCIsIl9jb21tZW50IiwibW9kaWZpZXIiLCJfZGVmaW5pdGlvbiIsInB1dEl0ZXJhdG9yIiwiZW50ZXJMaXN0IiwiZXhpdExpc3QiLCJpdGVyYXRlIiwiYnJlYWtzIiwic2V0VmFyaWFibGUiLCJzeW1ib2wiLCJnZXRWYXJpYWJsZSIsImdldFByb3BlcnR5Iiwia2V5IiwiZ2V0QmxvY2siLCJoYXNCbG9jayIsImhhc0Jsb2NrUGFyYW1zIiwiY29uY2F0Iiwic2l6ZSIsImZ1bmN0aW9uIiwiZiIsImZ1bmMiLCJsb2FkIiwicmVnaXN0ZXIiLCJmZXRjaCIsImR1cCIsInNwIiwib2Zmc2V0IiwicHVzaFJlbW90ZUVsZW1lbnQiLCJwb3BSZW1vdGVFbGVtZW50IiwicHVzaFJvb3RTY29wZSIsImJpbmRDYWxsZXJTY29wZSIsInB1c2hDaGlsZFNjb3BlIiwicG9wU2NvcGUiLCJyZXR1cm5UbyIsInJhIiwicHVzaER5bmFtaWNTY29wZSIsInBvcER5bmFtaWNTY29wZSIsInB1c2hJbW1lZGlhdGUiLCJwcmltaXRpdmUiLCJfcHJpbWl0aXZlIiwiRXJyb3IiLCJoZWxwZXIiLCJwdXNoQmxvY2siLCJibG9jayIsImJpbmREeW5hbWljU2NvcGUiLCJfbmFtZXMiLCJuYW1lcyIsImVudGVyIiwiYXJncyIsImV4aXQiLCJyZXR1cm4iLCJwdXNoRnJhbWUiLCJwb3BGcmFtZSIsImNvbXBpbGVEeW5hbWljQmxvY2siLCJpbnZva2VEeW5hbWljIiwiaW52b2tlciIsImludm9rZVN0YXRpYyIsImNhbGxlckNvdW50IiwicGFyYW1ldGVycyIsInN5bWJvbFRhYmxlIiwiY2FsbGVlQ291bnQiLCJsZW5ndGgiLCJNYXRoIiwibWluIiwiaSIsImZwIiwiX2Jsb2NrIiwidGVzdCIsInRlc3RGdW5jIiwiX2Z1bmMiLCJDb25zdFRlc3QiLCJTaW1wbGVUZXN0IiwiRW52aXJvbm1lbnRUZXN0IiwianVtcCIsImp1bXBJZiIsImp1bXBVbmxlc3MiLCJfc3RyaW5nIiwibiIsImlzQ29tcGlsYWJsZUV4cHJlc3Npb24iLCJleHByIiwiY29tcGlsZSIsIk9wY29kZUJ1aWxkZXIiLCJjb21wb25lbnQiLCJjb21waWxlQXJncyIsInBhcmFtcyIsImhhc2giLCJ2YWwiLCJndWFyZGVkQXBwZW5kIiwiZXhwcmVzc2lvbiIsInJlZmVyZW5jZSIsImNyZWF0ZSIsImludm9rZUNvbXBvbmVudCIsImF0dHJzIiwiaW52ZXJzZSIsInMwIiwic2NhbiIsInRlbXBsYXRlIiwic3RhdGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7O0lBQVlBLE87O0FBQ1o7O0lBQVlDLEU7Ozs7OztBQUNaLE1BQU1DLE1BQU4sQ0FBYTtBQUNUQyxrQkFBYztBQUNWLGFBQUtDLE1BQUwsR0FBYyxpQkFBZDtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0g7QUFDREMsVUFBTUMsSUFBTixFQUFZQyxLQUFaLEVBQW1CO0FBQ2YsYUFBS0osTUFBTCxDQUFZRyxJQUFaLElBQW9CQyxLQUFwQjtBQUNIO0FBQ0RDLFdBQU9DLEVBQVAsRUFBV0MsTUFBWCxFQUFtQkYsTUFBbkIsRUFBMkI7QUFDdkIsYUFBS0osT0FBTCxDQUFhTyxJQUFiLENBQWtCLEVBQUVGLEVBQUYsRUFBTUMsTUFB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SzdFLGVBQUwsQ0FBcUIsa0JBQVN3SSxFQUE5QixFQUFrQyxJQUFsQyxFQUF3Q0QsWUFBWSxJQUFwRDtBQUNBLGFBQUtuSSwyQkFBTCxDQUFpQyxrQkFBU29JLEVBQTFDO0FBQ0EsYUFBS2hJLGdCQUFMLENBQXNCLGtCQUFTZ0ksRUFBL0I7QUFDQSxhQUFLL0gsa0JBQUwsQ0FBd0Isa0JBQVMrSCxFQUFqQztBQUNBLGFBQUt4QyxhQUFMLENBQW1CLG1DQUF3QnNDLFNBQVNBLE1BQU1HLElBQU4sRUFBakMsQ0FBbkI7QUFDQSxhQUFLM0MsUUFBTDtBQUNBLGFBQUtwQixRQUFMO0FBQ0EsYUFBS0ksZUFBTDtBQUNBLGFBQUt4RSwwQkFBTDtBQUNBLGFBQUt5RCxJQUFMLENBQVUsa0JBQVN5RSxFQUFuQjtBQUNIO0FBQ0RFLGFBQVNyRCxLQUFULEVBQWdCO0FBQ1osWUFBSSxDQUFDQSxLQUFMLEVBQVksT0FBTyxJQUFQO0FBQ1osZUFBTyx1QkFBbUIsS0FBS2xILElBQXhCLEVBQThCa0gsTUFBTXNELFVBQXBDLEVBQWdEdEQsTUFBTWUsVUFBdEQsQ0FBUDtBQUNIO0FBbkZ5RDtrQkFBekN1QixhIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBkaWN0LCBFTVBUWV9BUlJBWSwgZXhwZWN0LCBmaWxsTnVsbHMsIFN0YWNrIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBDb21wb25lbnRCdWlsZGVyIH0gZnJvbSAnLi4vLi4vY29tcGlsZXInO1xuaW1wb3J0IHsgUmVnaXN0ZXIgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCB7IGV4cHIsIEludm9rZUR5bmFtaWNMYXlvdXQgfSBmcm9tICcuLi8uLi9zeW50YXgvZnVuY3Rpb25zJztcbmltcG9ydCBSYXdJbmxpbmVCbG9jayBmcm9tICcuLi8uLi9zeW50YXgvcmF3LWJsb2NrJztcbmltcG9ydCB7IElzQ29tcG9uZW50RGVmaW5pdGlvblJlZmVyZW5jZSB9IGZyb20gJy4uL29wY29kZXMvY29udGVudCc7XG5pbXBvcnQgKiBhcyBjb250ZW50IGZyb20gJy4vY29udGVudCc7XG5pbXBvcnQgKiBhcyB2bSBmcm9tICcuL3ZtJztcbmNsYXNzIExhYmVscyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGFiZWxzID0gZGljdCgpO1xuICAgICAgICB0aGlzLnRhcmdldHMgPSBbXTtcbiAgICB9XG4gICAgbGFiZWwobmFtZSwgaW5kZXgpIHtcbiAgICAgICAgdGhpcy5sYWJlbHNbbmFtZV0gPSBpbmRleDtcbiAgICB9XG4gICAgdGFyZ2V0KGF0LCBUYXJnZXQsIHRhcmdldCkge1xuICAgICAgICB0aGlzLnRhcmdldHMucHVzaCh7IGF0LCBUYXJnZXQsIHRhcmdldCB9KTtcbiAgICB9XG4gICAgcGF0Y2gob3Bjb2Rlcykge1xuICAgICAgICBmb3IgKGxldCB7IGF0LCBUYXJnZXQsIHRhcmdldCB9IG9mIHRoaXMudGFyZ2V0cykge1xuICAgICAgICAgICAgb3Bjb2Rlcy5zZXQoYXQsIFRhcmdldCwgdGhpcy5sYWJlbHNbdGFyZ2V0XSk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY2xhc3MgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHByb2dyYW0pIHtcbiAgICAgICAgdGhpcy5lbnYgPSBlbnY7XG4gICAgICAgIHRoaXMubWV0YSA9IG1ldGE7XG4gICAgICAgIHRoaXMucHJvZ3JhbSA9IHByb2dyYW07XG4gICAgICAgIHRoaXMubGFiZWxzU3RhY2sgPSBuZXcgU3RhY2soKTtcbiAgICAgICAgdGhpcy5jb25zdGFudHMgPSBlbnYuY29uc3RhbnRzO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gcHJvZ3JhbS5uZXh0O1xuICAgIH1cbiAgICBnZXQgcG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmFtLmN1cnJlbnQ7XG4gICAgfVxuICAgIGdldCBuZXh0UG9zKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wcm9ncmFtLm5leHQ7XG4gICAgfVxuICAgIHVwdmFycyhjb3VudCkge1xuICAgICAgICByZXR1cm4gZmlsbE51bGxzKGNvdW50KTtcbiAgICB9XG4gICAgcmVzZXJ2ZShuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaChuYW1lLCAwLCAwLCAwKTtcbiAgICB9XG4gICAgcHVzaChuYW1lLCBvcDEgPSAwLCBvcDIgPSAwLCBvcDMgPSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0ucHVzaChuYW1lLCBvcDEsIG9wMiwgb3AzKTtcbiAgICB9XG4gICAgZmluYWxpemUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1c2goMjIgLyogUmV0dXJuICovKTtcbiAgICB9XG4gICAgLy8gYXJnc1xuICAgIHB1c2hBcmdzKHBvc2l0aW9uYWwsIHN5bnRoZXRpYykge1xuICAgICAgICB0aGlzLnB1c2goNTggLyogUHVzaEFyZ3MgKi8sIHBvc2l0aW9uYWwsIHN5bnRoZXRpYyA9PT0gdHJ1ZSA/IDEgOiAwKTtcbiAgICB9XG4gICAgLy8gaGVscGVyc1xuICAgIGdldCBsYWJlbHMoKSB7XG4gICAgICAgIHJldHVybiBleHBlY3QodGhpcy5sYWJlbHNTdGFjay5jdXJyZW50LCAnYnVnOiBub3QgaW4gYSBsYWJlbCBzdGFjaycpO1xuICAgIH1cbiAgICBzdGFydExhYmVscygpIHtcbiAgICAgICAgdGhpcy5sYWJlbHNTdGFjay5wdXNoKG5ldyBMYWJlbHMoKSk7XG4gICAgfVxuICAgIHN0b3BMYWJlbHMoKSB7XG4gICAgICAgIGxldCBsYWJlbCA9IGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLnBvcCgpLCAndW5iYWxhbmNlZCBwdXNoIGFuZCBwb3AgbGFiZWxzJyk7XG4gICAgICAgIGxhYmVsLnBhdGNoKHRoaXMucHJvZ3JhbSk7XG4gICAgfVxuICAgIC8vIGNvbXBvbmVudHNcbiAgICBwdXNoQ29tcG9uZW50TWFuYWdlcihkZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMucHVzaCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgdGhpcy5vdGhlcihkZWZpbml0aW9uKSk7XG4gICAgfVxuICAgIHB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLyk7XG4gICAgfVxuICAgIGluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLyk7XG4gICAgfVxuICAgIHByZXBhcmVBcmdzKHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg1OSAvKiBQcmVwYXJlQXJncyAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBjcmVhdGVDb21wb25lbnQoc3RhdGUsIGhhc0RlZmF1bHQsIGhhc0ludmVyc2UpIHtcbiAgICAgICAgbGV0IGZsYWcgPSAoaGFzRGVmYXVsdCA9PT0gdHJ1ZSA/IDEgOiAwKSB8IChoYXNJbnZlcnNlID09PSB0cnVlID8gMSA6IDApIDw8IDE7XG4gICAgICAgIHRoaXMucHVzaCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sIGZsYWcsIHN0YXRlKTtcbiAgICB9XG4gICAgcmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sIHN0YXRlKTtcbiAgICB9XG4gICAgYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8pO1xuICAgIH1cbiAgICBjb21taXRDb21wb25lbnRUcmFuc2FjdGlvbigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovKTtcbiAgICB9XG4gICAgcHVzaENvbXBvbmVudE9wZXJhdGlvbnMoKSB7XG4gICAgICAgIHRoaXMucHVzaCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLyk7XG4gICAgfVxuICAgIGdldENvbXBvbmVudFNlbGYoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sIHN0YXRlKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50TGF5b3V0KHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sIHN0YXRlKTtcbiAgICB9XG4gICAgZGlkQ3JlYXRlRWxlbWVudChzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBkaWRSZW5kZXJMYXlvdXQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICAvLyBwYXJ0aWFsXG4gICAgZ2V0UGFydGlhbFRlbXBsYXRlKCkge1xuICAgICAgICB0aGlzLnB1c2goNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovKTtcbiAgICB9XG4gICAgcmVzb2x2ZU1heWJlTG9jYWwobmFtZSkge1xuICAgICAgICB0aGlzLnB1c2goNzAgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi8sIHRoaXMuc3RyaW5nKG5hbWUpKTtcbiAgICB9XG4gICAgLy8gZGVidWdnZXJcbiAgICBkZWJ1Z2dlcihzeW1ib2xzLCBldmFsSW5mbykge1xuICAgICAgICB0aGlzLnB1c2goNzEgLyogRGVidWdnZXIgKi8sIHRoaXMuY29uc3RhbnRzLm90aGVyKHN5bWJvbHMpLCB0aGlzLmNvbnN0YW50cy5hcnJheShldmFsSW5mbykpO1xuICAgIH1cbiAgICAvLyBjb250ZW50XG4gICAgZHluYW1pY0NvbnRlbnQoT3Bjb2RlKSB7XG4gICAgICAgIHRoaXMucHVzaCgyNSAvKiBEeW5hbWljQ29udGVudCAqLywgdGhpcy5vdGhlcihPcGNvZGUpKTtcbiAgICB9XG4gICAgY2F1dGlvdXNBcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkQ2F1dGlvdXNBcHBlbmRPcGNvZGUoKSk7XG4gICAgfVxuICAgIHRydXN0aW5nQXBwZW5kKCkge1xuICAgICAgICB0aGlzLmR5bmFtaWNDb250ZW50KG5ldyBjb250ZW50Lk9wdGltaXplZFRydXN0aW5nQXBwZW5kT3Bjb2RlKCkpO1xuICAgIH1cbiAgICAvLyBkb21cbiAgICB0ZXh0KHRleHQpIHtcbiAgICAgICAgdGhpcy5wdXNoKDIzIC8qIFRleHQgKi8sIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0ZXh0KSk7XG4gICAgfVxuICAgIG9wZW5QcmltaXRpdmVFbGVtZW50KHRhZykge1xuICAgICAgICB0aGlzLnB1c2goMjYgLyogT3BlbkVsZW1lbnQgKi8sIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgICB9XG4gICAgb3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyh0YWcpIHtcbiAgICAgICAgdGhpcy5wdXNoKDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi8sIHRoaXMuY29uc3RhbnRzLnN0cmluZyh0YWcpKTtcbiAgICB9XG4gICAgb3BlbkR5bmFtaWNFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovKTtcbiAgICB9XG4gICAgZmx1c2hFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goMzIgLyogRmx1c2hFbGVtZW50ICovKTtcbiAgICB9XG4gICAgY2xvc2VFbGVtZW50KCkge1xuICAgICAgICB0aGlzLnB1c2goMzMgLyogQ2xvc2VFbGVtZW50ICovKTtcbiAgICB9XG4gICAgc3RhdGljQXR0cihfbmFtZSwgX25hbWVzcGFjZSwgX3ZhbHVlKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IF9uYW1lc3BhY2UgPyB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSkgOiAwO1xuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3ZhbHVlKTtcbiAgICAgICAgdGhpcy5wdXNoKDI5IC8qIFN0YXRpY0F0dHIgKi8sIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpO1xuICAgIH1cbiAgICBkeW5hbWljQXR0ck5TKF9uYW1lLCBfbmFtZXNwYWNlLCB0cnVzdGluZykge1xuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgICAgIGxldCBuYW1lc3BhY2UgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWVzcGFjZSk7XG4gICAgICAgIHRoaXMucHVzaCgzMSAvKiBEeW5hbWljQXR0ck5TICovLCBuYW1lLCBuYW1lc3BhY2UsIHRydXN0aW5nID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICBkeW5hbWljQXR0cihfbmFtZSwgdHJ1c3RpbmcpIHtcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgICAgICB0aGlzLnB1c2goMzAgLyogRHluYW1pY0F0dHIgKi8sIG5hbWUsIHRydXN0aW5nID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICBjb21tZW50KF9jb21tZW50KSB7XG4gICAgICAgIGxldCBjb21tZW50ID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9jb21tZW50KTtcbiAgICAgICAgdGhpcy5wdXNoKDI0IC8qIENvbW1lbnQgKi8sIGNvbW1lbnQpO1xuICAgIH1cbiAgICBtb2RpZmllcihfZGVmaW5pdGlvbikge1xuICAgICAgICB0aGlzLnB1c2goMzQgLyogTW9kaWZpZXIgKi8sIHRoaXMub3RoZXIoX2RlZmluaXRpb24pKTtcbiAgICB9XG4gICAgLy8gbGlzdHNcbiAgICBwdXRJdGVyYXRvcigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUzIC8qIFB1dEl0ZXJhdG9yICovKTtcbiAgICB9XG4gICAgZW50ZXJMaXN0KHN0YXJ0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg1MSAvKiBFbnRlckxpc3QgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDUxIC8qIEVudGVyTGlzdCAqLywgc3RhcnQpO1xuICAgIH1cbiAgICBleGl0TGlzdCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUyIC8qIEV4aXRMaXN0ICovKTtcbiAgICB9XG4gICAgaXRlcmF0ZShicmVha3MpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDU0IC8qIEl0ZXJhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDU0IC8qIEl0ZXJhdGUgKi8sIGJyZWFrcyk7XG4gICAgfVxuICAgIC8vIGV4cHJlc3Npb25zXG4gICAgc2V0VmFyaWFibGUoc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg0IC8qIFNldFZhcmlhYmxlICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBnZXRWYXJpYWJsZShzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDUgLyogR2V0VmFyaWFibGUgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGdldFByb3BlcnR5KGtleSkge1xuICAgICAgICB0aGlzLnB1c2goNiAvKiBHZXRQcm9wZXJ0eSAqLywgdGhpcy5zdHJpbmcoa2V5KSk7XG4gICAgfVxuICAgIGdldEJsb2NrKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goOCAvKiBHZXRCbG9jayAqLywgc3ltYm9sKTtcbiAgICB9XG4gICAgaGFzQmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg5IC8qIEhhc0Jsb2NrICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBoYXNCbG9ja1BhcmFtcyhzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBjb25jYXQoc2l6ZSkge1xuICAgICAgICB0aGlzLnB1c2goMTEgLyogQ29uY2F0ICovLCBzaXplKTtcbiAgICB9XG4gICAgZnVuY3Rpb24oZikge1xuICAgICAgICB0aGlzLnB1c2goMiAvKiBGdW5jdGlvbiAqLywgdGhpcy5mdW5jKGYpKTtcbiAgICB9XG4gICAgbG9hZChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnB1c2goMTcgLyogTG9hZCAqLywgcmVnaXN0ZXIpO1xuICAgIH1cbiAgICBmZXRjaChyZWdpc3Rlcikge1xuICAgICAgICB0aGlzLnB1c2goMTggLyogRmV0Y2ggKi8sIHJlZ2lzdGVyKTtcbiAgICB9XG4gICAgZHVwKHJlZ2lzdGVyID0gUmVnaXN0ZXIuc3AsIG9mZnNldCA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgxNSAvKiBEdXAgKi8sIHJlZ2lzdGVyLCBvZmZzZXQpO1xuICAgIH1cbiAgICBwb3AoY291bnQgPSAxKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnB1c2goMTYgLyogUG9wICovLCBjb3VudCk7XG4gICAgfVxuICAgIC8vIHZtXG4gICAgcHVzaFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLyk7XG4gICAgfVxuICAgIHBvcFJlbW90ZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovKTtcbiAgICB9XG4gICAgbGFiZWwobmFtZSkge1xuICAgICAgICB0aGlzLmxhYmVscy5sYWJlbChuYW1lLCB0aGlzLm5leHRQb3MpO1xuICAgIH1cbiAgICBwdXNoUm9vdFNjb3BlKHN5bWJvbHMsIGJpbmRDYWxsZXJTY29wZSkge1xuICAgICAgICB0aGlzLnB1c2goMTkgLyogUm9vdFNjb3BlICovLCBzeW1ib2xzLCBiaW5kQ2FsbGVyU2NvcGUgPyAxIDogMCk7XG4gICAgfVxuICAgIHB1c2hDaGlsZFNjb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMjAgLyogQ2hpbGRTY29wZSAqLyk7XG4gICAgfVxuICAgIHBvcFNjb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMjEgLyogUG9wU2NvcGUgKi8pO1xuICAgIH1cbiAgICByZXR1cm5UbyhsYWJlbCkge1xuICAgICAgICB0aGlzLnJlc2VydmUoMTIgLyogSW1tZWRpYXRlICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCAxMiAvKiBJbW1lZGlhdGUgKi8sIGxhYmVsKTtcbiAgICAgICAgdGhpcy5sb2FkKFJlZ2lzdGVyLnJhKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM4IC8qIFB1c2hEeW5hbWljU2NvcGUgKi8pO1xuICAgIH1cbiAgICBwb3BEeW5hbWljU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi8pO1xuICAgIH1cbiAgICBwdXNoSW1tZWRpYXRlKHZhbHVlKSB7XG4gICAgICAgIHRoaXMucHVzaCgxMyAvKiBDb25zdGFudCAqLywgdGhpcy5vdGhlcih2YWx1ZSkpO1xuICAgIH1cbiAgICBwcmltaXRpdmUoX3ByaW1pdGl2ZSkge1xuICAgICAgICBsZXQgZmxhZyA9IDA7XG4gICAgICAgIGxldCBwcmltaXRpdmU7XG4gICAgICAgIHN3aXRjaCAodHlwZW9mIF9wcmltaXRpdmUpIHtcbiAgICAgICAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlID0gX3ByaW1pdGl2ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICAgICAgICAgICAgcHJpbWl0aXZlID0gdGhpcy5zdHJpbmcoX3ByaW1pdGl2ZSk7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDE7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlIHwgMDtcbiAgICAgICAgICAgICAgICBmbGFnID0gMjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICAgICAgICAgICAgLy8gYXNzdW1lIG51bGxcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSAyO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAndW5kZWZpbmVkJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSAzO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0ludmFsaWQgcHJpbWl0aXZlIHBhc3NlZCB0byBwdXNoUHJpbWl0aXZlJyk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wdXNoKDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLywgZmxhZyA8PCAzMCB8IHByaW1pdGl2ZSk7XG4gICAgfVxuICAgIGhlbHBlcihmdW5jKSB7XG4gICAgICAgIHRoaXMucHVzaCgxIC8qIEhlbHBlciAqLywgdGhpcy5mdW5jKGZ1bmMpKTtcbiAgICB9XG4gICAgcHVzaEJsb2NrKGJsb2NrKSB7XG4gICAgICAgIHRoaXMucHVzaCg3IC8qIFB1c2hCbG9jayAqLywgdGhpcy5ibG9jayhibG9jaykpO1xuICAgIH1cbiAgICBiaW5kRHluYW1pY1Njb3BlKF9uYW1lcykge1xuICAgICAgICB0aGlzLnB1c2goMzcgLyogQmluZER5bmFtaWNTY29wZSAqLywgdGhpcy5uYW1lcyhfbmFtZXMpKTtcbiAgICB9XG4gICAgZW50ZXIoYXJncykge1xuICAgICAgICB0aGlzLnB1c2goNDggLyogRW50ZXIgKi8sIGFyZ3MpO1xuICAgIH1cbiAgICBleGl0KCkge1xuICAgICAgICB0aGlzLnB1c2goNDkgLyogRXhpdCAqLyk7XG4gICAgfVxuICAgIHJldHVybigpIHtcbiAgICAgICAgdGhpcy5wdXNoKDIyIC8qIFJldHVybiAqLyk7XG4gICAgfVxuICAgIHB1c2hGcmFtZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDQ2IC8qIFB1c2hGcmFtZSAqLyk7XG4gICAgfVxuICAgIHBvcEZyYW1lKCkge1xuICAgICAgICB0aGlzLnB1c2goNDcgLyogUG9wRnJhbWUgKi8pO1xuICAgIH1cbiAgICBjb21waWxlRHluYW1pY0Jsb2NrKCkge1xuICAgICAgICB0aGlzLnB1c2goNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLyk7XG4gICAgfVxuICAgIGludm9rZUR5bmFtaWMoaW52b2tlcikge1xuICAgICAgICB0aGlzLnB1c2goNDIgLyogSW52b2tlRHluYW1pYyAqLywgdGhpcy5vdGhlcihpbnZva2VyKSk7XG4gICAgfVxuICAgIGludm9rZVN0YXRpYyhibG9jaywgY2FsbGVyQ291bnQgPSAwKSB7XG4gICAgICAgIGxldCB7IHBhcmFtZXRlcnMgfSA9IGJsb2NrLnN5bWJvbFRhYmxlO1xuICAgICAgICBsZXQgY2FsbGVlQ291bnQgPSBwYXJhbWV0ZXJzLmxlbmd0aDtcbiAgICAgICAgbGV0IGNvdW50ID0gTWF0aC5taW4oY2FsbGVyQ291bnQsIGNhbGxlZUNvdW50KTtcbiAgICAgICAgdGhpcy5wdXNoRnJhbWUoKTtcbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnB1c2hDaGlsZFNjb3BlKCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHtcbiAgICAgICAgICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5mcCwgY2FsbGVyQ291bnQgLSBpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldFZhcmlhYmxlKHBhcmFtZXRlcnNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCBfYmxvY2sgPSB0aGlzLmNvbnN0YW50cy5ibG9jayhibG9jayk7XG4gICAgICAgIHRoaXMucHVzaCg0MSAvKiBJbnZva2VTdGF0aWMgKi8sIF9ibG9jayk7XG4gICAgICAgIGlmIChjb3VudCkge1xuICAgICAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICB9XG4gICAgdGVzdCh0ZXN0RnVuYykge1xuICAgICAgICBsZXQgX2Z1bmM7XG4gICAgICAgIGlmICh0ZXN0RnVuYyA9PT0gJ2NvbnN0Jykge1xuICAgICAgICAgICAgX2Z1bmMgPSB2bS5Db25zdFRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdzaW1wbGUnKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHZtLlNpbXBsZVRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodGVzdEZ1bmMgPT09ICdlbnZpcm9ubWVudCcpIHtcbiAgICAgICAgICAgIF9mdW5jID0gdm0uRW52aXJvbm1lbnRUZXN0O1xuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0ZXN0RnVuYyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgX2Z1bmMgPSB0ZXN0RnVuYztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigndW5yZWFjaGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuY29uc3RhbnRzLmZ1bmN0aW9uKF9mdW5jKTtcbiAgICAgICAgdGhpcy5wdXNoKDUwIC8qIFRlc3QgKi8sIGZ1bmMpO1xuICAgIH1cbiAgICBqdW1wKHRhcmdldCkge1xuICAgICAgICB0aGlzLnJlc2VydmUoNDMgLyogSnVtcCAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNDMgLyogSnVtcCAqLywgdGFyZ2V0KTtcbiAgICB9XG4gICAganVtcElmKHRhcmdldCkge1xuICAgICAgICB0aGlzLnJlc2VydmUoNDQgLyogSnVtcElmICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0NCAvKiBKdW1wSWYgKi8sIHRhcmdldCk7XG4gICAgfVxuICAgIGp1bXBVbmxlc3ModGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0NSAvKiBKdW1wVW5sZXNzICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0NSAvKiBKdW1wVW5sZXNzICovLCB0YXJnZXQpO1xuICAgIH1cbiAgICBzdHJpbmcoX3N0cmluZykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9zdHJpbmcpO1xuICAgIH1cbiAgICBuYW1lcyhfbmFtZXMpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgX25hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbiA9IF9uYW1lc1tpXTtcbiAgICAgICAgICAgIG5hbWVzW2ldID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKG4pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShuYW1lcyk7XG4gICAgfVxuICAgIHN5bWJvbHMoc3ltYm9scykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuYXJyYXkoc3ltYm9scyk7XG4gICAgfVxuICAgIG90aGVyKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5vdGhlcih2YWx1ZSk7XG4gICAgfVxuICAgIGJsb2NrKGJsb2NrKSB7XG4gICAgICAgIHJldHVybiBibG9jayA/IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKSA6IDA7XG4gICAgfVxuICAgIGZ1bmMoZnVuYykge1xuICAgICAgICByZXR1cm4gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oZnVuYyk7XG4gICAgfVxufVxuZnVuY3Rpb24gaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBleHByID09PSAnb2JqZWN0JyAmJiBleHByICE9PSBudWxsICYmIHR5cGVvZiBleHByLmNvbXBpbGUgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBPcGNvZGVCdWlsZGVyIGV4dGVuZHMgQmFzaWNPcGNvZGVCdWlsZGVyIHtcbiAgICBjb25zdHJ1Y3RvcihlbnYsIG1ldGEsIHByb2dyYW0gPSBlbnYucHJvZ3JhbSkge1xuICAgICAgICBzdXBlcihlbnYsIG1ldGEsIHByb2dyYW0pO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IG5ldyBDb21wb25lbnRCdWlsZGVyKHRoaXMpO1xuICAgIH1cbiAgICBjb21waWxlQXJncyhwYXJhbXMsIGhhc2gsIHN5bnRoZXRpYykge1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IDA7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFyYW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZXhwcihwYXJhbXNbaV0sIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcG9zaXRpb25hbCA9IHBhcmFtcy5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IG5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIGlmIChoYXNoKSB7XG4gICAgICAgICAgICBuYW1lcyA9IGhhc2hbMF07XG4gICAgICAgICAgICBsZXQgdmFsID0gaGFzaFsxXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgZXhwcih2YWxbaV0sIHRoaXMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMucHVzaEltbWVkaWF0ZShuYW1lcyk7XG4gICAgICAgIHRoaXMucHVzaEFyZ3MocG9zaXRpb25hbCwgc3ludGhldGljKTtcbiAgICB9XG4gICAgY29tcGlsZShleHByKSB7XG4gICAgICAgIGlmIChpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpKSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwci5jb21waWxlKHRoaXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ3VhcmRlZEFwcGVuZChleHByZXNzaW9uLCB0cnVzdGluZykge1xuICAgICAgICB0aGlzLnN0YXJ0TGFiZWxzKCk7XG4gICAgICAgIHRoaXMucHVzaEZyYW1lKCk7XG4gICAgICAgIHRoaXMucmV0dXJuVG8oJ0VORCcpO1xuICAgICAgICBleHByKGV4cHJlc3Npb24sIHRoaXMpO1xuICAgICAgICB0aGlzLmR1cCgpO1xuICAgICAgICB0aGlzLnRlc3QocmVmZXJlbmNlID0+IHtcbiAgICAgICAgICAgIHJldHVybiBJc0NvbXBvbmVudERlZmluaXRpb25SZWZlcmVuY2UuY3JlYXRlKHJlZmVyZW5jZSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmVudGVyKDIpO1xuICAgICAgICB0aGlzLmp1bXBVbmxlc3MoJ0VMU0UnKTtcbiAgICAgICAgdGhpcy5wdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIoKTtcbiAgICAgICAgdGhpcy5pbnZva2VDb21wb25lbnQobnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCk7XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLnJldHVybigpO1xuICAgICAgICB0aGlzLmxhYmVsKCdFTFNFJyk7XG4gICAgICAgIGlmICh0cnVzdGluZykge1xuICAgICAgICAgICAgdGhpcy50cnVzdGluZ0FwcGVuZCgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jYXV0aW91c0FwcGVuZCgpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMuZXhpdCgpO1xuICAgICAgICB0aGlzLnJldHVybigpO1xuICAgICAgICB0aGlzLmxhYmVsKCdFTkQnKTtcbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgICAgICB0aGlzLnN0b3BMYWJlbHMoKTtcbiAgICB9XG4gICAgaW52b2tlQ29tcG9uZW50KGF0dHJzLCBwYXJhbXMsIGhhc2gsIGJsb2NrLCBpbnZlcnNlID0gbnVsbCkge1xuICAgICAgICB0aGlzLmluaXRpYWxpemVDb21wb25lbnRTdGF0ZSgpO1xuICAgICAgICB0aGlzLmZldGNoKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5kdXAoUmVnaXN0ZXIuc3AsIDEpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLnB1c2hCbG9jayhibG9jayk7XG4gICAgICAgIHRoaXMucHVzaEJsb2NrKGludmVyc2UpO1xuICAgICAgICB0aGlzLmNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgZmFsc2UpO1xuICAgICAgICB0aGlzLnByZXBhcmVBcmdzKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5iZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNyZWF0ZUNvbXBvbmVudChSZWdpc3Rlci5zMCwgdHJ1ZSwgaW52ZXJzZSA9PT0gbnVsbCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgfVxuICAgIHRlbXBsYXRlKGJsb2NrKSB7XG4gICAgICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2J1aWxkZXIuanMiXSwibmFtZXMiOlsiY29udGVudCIsInZtIiwiTGFiZWxzIiwiY29uc3RydWN0b3IiLCJsYWJlbHMiLCJ0YXJnZXRzIiwibGFiZWwiLCJuYW1lIiwiaW5kZXgiLCJ0YXJnZXQiLCJhdCIsIlRhcmdldCIsInB1c2giLCJwYXRjaCIsIm9wY29kZXMiLCJzZXQiLCJCYXNpY09wY29kZUJ1aWxkZXIiLCJlbnYiLCJtZXRhIiwicHJvZ3JhbSIsImxhYmVsc1N0YWNrIiwiY29uc3RhbnRzIiwic3RhcnQiLCJuZXh0IiwicG9zIiwiY3VycmVudCIsIm5leHRQb3MiLCJ1cHZhcnMiLCJjb3VudCIsInJlc2VydmUiLCJvcDEiLCJvcDIiLCJvcDMiLCJmaW5hbGl6ZSIsInB1c2hBcmdzIiwic3ludGhldGljIiwic3RhcnRMYWJlbHMiLCJzdG9wTGFiZWxzIiwicG9wIiwicHVzaENvbXBvbmVudE1hbmFnZXIiLCJkZWZpbml0aW9uIiwib3RoZXIiLCJwdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIiLCJpbml0aWFsaXplQ29tcG9uZW50U3RhdGUiLCJwcmVwYXJlQXJncyIsInN0YXRlIiwiY3JlYXRlQ29tcG9uZW50IiwiaGFzRGVmYXVsdCIsImhhc0ludmVyc2UiLCJmbGFnIiwicmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yIiwiYmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiIsImNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uIiwicHVzaENvbXBvbmVudE9wZXJhdGlvbnMiLCJnZXRDb21wb25lbnRTZWxmIiwiZ2V0Q29tcG9uZW50TGF5b3V0IiwiZGlkQ3JlYXRlRWxlbWVudCIsImRpZFJlbmRlckxheW91dCIsImdldFBhcnRpYWxUZW1wbGF0ZSIsInJlc29sdmVNYXliZUxvY2FsIiwic3RyaW5nIiwiZGVidWdnZXIiLCJzeW1ib2xzIiwiZXZhbEluZm8iLCJhcnJheSIsImR5bmFtaWNDb250ZW50IiwiT3Bjb2RlIiwiY2F1dGlvdXNBcHBlbmQiLCJPcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSIsInRydXN0aW5nQXBwZW5kIiwiT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUiLCJ0ZXh0Iiwib3BlblByaW1pdGl2ZUVsZW1lbnQiLCJ0YWciLCJvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zIiwib3BlbkR5bmFtaWNFbGVtZW50IiwiZmx1c2hFbGVtZW50IiwiY2xvc2VFbGVtZW50Iiwic3RhdGljQXR0ciIsIl9uYW1lIiwiX25hbWVzcGFjZSIsIl92YWx1ZSIsIm5hbWVzcGFjZSIsInZhbHVlIiwiZHluYW1pY0F0dHJOUyIsInRydXN0aW5nIiwiZHluYW1pY0F0dHIiLCJjb21tZW50IiwiX2NvbW1lbnQiLCJtb2RpZmllciIsIl9kZWZpbml0aW9uIiwicHV0SXRlcmF0b3IiLCJlbnRlckxpc3QiLCJleGl0TGlzdCIsIml0ZXJhdGUiLCJicmVha3MiLCJzZXRWYXJpYWJsZSIsInN5bWJvbCIsImdldFZhcmlhYmxlIiwiZ2V0UHJvcGVydHkiLCJrZXkiLCJnZXRCbG9jayIsImhhc0Jsb2NrIiwiaGFzQmxvY2tQYXJhbXMiLCJjb25jYXQiLCJzaXplIiwiZnVuY3Rpb24iLCJmIiwiZnVuYyIsImxvYWQiLCJyZWdpc3RlciIsImZldGNoIiwiZHVwIiwic3AiLCJvZmZzZXQiLCJwdXNoUmVtb3RlRWxlbWVudCIsInBvcFJlbW90ZUVsZW1lbnQiLCJwdXNoUm9vdFNjb3BlIiwiYmluZENhbGxlclNjb3BlIiwicHVzaENoaWxkU2NvcGUiLCJwb3BTY29wZSIsInJldHVyblRvIiwicmEiLCJwdXNoRHluYW1pY1Njb3BlIiwicG9wRHluYW1pY1Njb3BlIiwicHVzaEltbWVkaWF0ZSIsInByaW1pdGl2ZSIsIl9wcmltaXRpdmUiLCJFcnJvciIsImhlbHBlciIsInB1c2hCbG9jayIsImJsb2NrIiwiYmluZER5bmFtaWNTY29wZSIsIl9uYW1lcyIsIm5hbWVzIiwiZW50ZXIiLCJhcmdzIiwiZXhpdCIsInJldHVybiIsInB1c2hGcmFtZSIsInBvcEZyYW1lIiwiY29tcGlsZUR5bmFtaWNCbG9jayIsImludm9rZUR5bmFtaWMiLCJpbnZva2VyIiwiaW52b2tlU3RhdGljIiwiY2FsbGVyQ291bnQiLCJwYXJhbWV0ZXJzIiwic3ltYm9sVGFibGUiLCJjYWxsZWVDb3VudCIsImxlbmd0aCIsIk1hdGgiLCJtaW4iLCJpIiwiZnAiLCJfYmxvY2siLCJ0ZXN0IiwidGVzdEZ1bmMiLCJfZnVuYyIsIkNvbnN0VGVzdCIsIlNpbXBsZVRlc3QiLCJFbnZpcm9ubWVudFRlc3QiLCJqdW1wIiwianVtcElmIiwianVtcFVubGVzcyIsIl9zdHJpbmciLCJuIiwiaXNDb21waWxhYmxlRXhwcmVzc2lvbiIsImV4cHIiLCJjb21waWxlIiwiT3Bjb2RlQnVpbGRlciIsImNvbXBvbmVudCIsImNvbXBpbGVBcmdzIiwicGFyYW1zIiwiaGFzaCIsInBvc2l0aW9uYWwiLCJ2YWwiLCJndWFyZGVkQXBwZW5kIiwiZXhwcmVzc2lvbiIsInJlZmVyZW5jZSIsImNyZWF0ZSIsImludm9rZUNvbXBvbmVudCIsImF0dHJzIiwiaW52ZXJzZSIsInMwIiwic2NhbiIsInRlbXBsYXRlIiwic3RhdGVtZW50cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7O0FBQ0E7O0FBQ0E7O0lBQVlBLE87O0FBQ1o7O0lBQVlDLEU7Ozs7OztBQUNaLE1BQU1DLE1BQU4sQ0FBYTtBQUNUQyxrQkFBYztBQUNWLGFBQUtDLE1BQUwsR0FBYyxpQkFBZDtBQUNBLGFBQUtDLE9BQUwsR0FBZSxFQUFmO0FBQ0g7QUFDREMsVUFBTUMsSUFBTixFQUFZQyxLQUFaLEVBQW1CO0FBQ2YsYUFBS0osTUFBTCxDQUFZRyxJQUFaLElBQW9CQyxLQUFwQjtBQUNIO0FBQ0RDLFdBQU9DLEVBQVAsRUFBV0MsTUFBWCxFQUFtQkYsTUFBbkIsRUFBMkI7QUFDdkIsYUFBS0osT0FBTCxDQUFhTyxJQUFiLENBQWtCLEVBQUVGLEVBQUYsRUFBTUMsTUFB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LGVBQUwsQ0FBcUIsa0JBQVN5SSxFQUE5QixFQUFrQ3BELFVBQVUsSUFBNUMsRUFBa0RtRCxZQUFZLElBQTlEO0FBQ0EsYUFBS3BJLDJCQUFMLENBQWlDLGtCQUFTcUksRUFBMUM7QUFDQSxhQUFLakksZ0JBQUwsQ0FBc0Isa0JBQVNpSSxFQUEvQjtBQUNBLGFBQUtoSSxrQkFBTCxDQUF3QixrQkFBU2dJLEVBQWpDO0FBQ0EsYUFBS3pDLGFBQUwsQ0FBbUIsbUNBQXdCdUMsU0FBU0EsTUFBTUcsSUFBTixFQUFqQyxDQUFuQjtBQUNBLGFBQUs1QyxRQUFMO0FBQ0EsYUFBS3BCLFFBQUw7QUFDQSxhQUFLSSxlQUFMO0FBQ0EsYUFBS3hFLDBCQUFMO0FBQ0EsYUFBS3lELElBQUwsQ0FBVSxrQkFBUzBFLEVBQW5CO0FBQ0g7QUFDREUsYUFBU3RELEtBQVQsRUFBZ0I7QUFDWixZQUFJLENBQUNBLEtBQUwsRUFBWSxPQUFPLElBQVA7QUFDWixlQUFPLHVCQUFtQixLQUFLakgsSUFBeEIsRUFBOEJpSCxNQUFNdUQsVUFBcEMsRUFBZ0R2RCxNQUFNZSxVQUF0RCxDQUFQO0FBQ0g7QUFwRnlEO2tCQUF6Q3VCLGEiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvYnVpbGRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZLCBleHBlY3QsIGZpbGxOdWxscywgU3RhY2sgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IENvbXBvbmVudEJ1aWxkZXIgfSBmcm9tICcuLi8uLi9jb21waWxlcic7XG5pbXBvcnQgeyBSZWdpc3RlciB9IGZyb20gJy4uLy4uL29wY29kZXMnO1xuaW1wb3J0IHsgZXhwciwgSW52b2tlRHluYW1pY0xheW91dCB9IGZyb20gJy4uLy4uL3N5bnRheC9mdW5jdGlvbnMnO1xuaW1wb3J0IFJhd0lubGluZUJsb2NrIGZyb20gJy4uLy4uL3N5bnRheC9yYXctYmxvY2snO1xuaW1wb3J0IHsgSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlIH0gZnJvbSAnLi4vb3Bjb2Rlcy9jb250ZW50JztcbmltcG9ydCAqIGFzIGNvbnRlbnQgZnJvbSAnLi9jb250ZW50JztcbmltcG9ydCAqIGFzIHZtIGZyb20gJy4vdm0nO1xuY2xhc3MgTGFiZWxzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sYWJlbHMgPSBkaWN0KCk7XG4gICAgICAgIHRoaXMudGFyZ2V0cyA9IFtdO1xuICAgIH1cbiAgICBsYWJlbChuYW1lLCBpbmRleCkge1xuICAgICAgICB0aGlzLmxhYmVsc1tuYW1lXSA9IGluZGV4O1xuICAgIH1cbiAgICB0YXJnZXQoYXQsIFRhcmdldCwgdGFyZ2V0KSB7XG4gICAgICAgIHRoaXMudGFyZ2V0cy5wdXNoKHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0pO1xuICAgIH1cbiAgICBwYXRjaChvcGNvZGVzKSB7XG4gICAgICAgIGZvciAobGV0IHsgYXQsIFRhcmdldCwgdGFyZ2V0IH0gb2YgdGhpcy50YXJnZXRzKSB7XG4gICAgICAgICAgICBvcGNvZGVzLnNldChhdCwgVGFyZ2V0LCB0aGlzLmxhYmVsc1t0YXJnZXRdKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgcHJvZ3JhbSkge1xuICAgICAgICB0aGlzLmVudiA9IGVudjtcbiAgICAgICAgdGhpcy5tZXRhID0gbWV0YTtcbiAgICAgICAgdGhpcy5wcm9ncmFtID0gcHJvZ3JhbTtcbiAgICAgICAgdGhpcy5sYWJlbHNTdGFjayA9IG5ldyBTdGFjaygpO1xuICAgICAgICB0aGlzLmNvbnN0YW50cyA9IGVudi5jb25zdGFudHM7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBwcm9ncmFtLm5leHQ7XG4gICAgfVxuICAgIGdldCBwb3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0uY3VycmVudDtcbiAgICB9XG4gICAgZ2V0IG5leHRQb3MoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnByb2dyYW0ubmV4dDtcbiAgICB9XG4gICAgdXB2YXJzKGNvdW50KSB7XG4gICAgICAgIHJldHVybiBmaWxsTnVsbHMoY291bnQpO1xuICAgIH1cbiAgICByZXNlcnZlKG5hbWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKG5hbWUsIDAsIDAsIDApO1xuICAgIH1cbiAgICBwdXNoKG5hbWUsIG9wMSA9IDAsIG9wMiA9IDAsIG9wMyA9IDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHJvZ3JhbS5wdXNoKG5hbWUsIG9wMSwgb3AyLCBvcDMpO1xuICAgIH1cbiAgICBmaW5hbGl6ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgyMiAvKiBSZXR1cm4gKi8pO1xuICAgIH1cbiAgICAvLyBhcmdzXG4gICAgcHVzaEFyZ3Moc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMucHVzaCg1OCAvKiBQdXNoQXJncyAqLywgc3ludGhldGljID09PSB0cnVlID8gMSA6IDApO1xuICAgIH1cbiAgICAvLyBoZWxwZXJzXG4gICAgZ2V0IGxhYmVscygpIHtcbiAgICAgICAgcmV0dXJuIGV4cGVjdCh0aGlzLmxhYmVsc1N0YWNrLmN1cnJlbnQsICdidWc6IG5vdCBpbiBhIGxhYmVsIHN0YWNrJyk7XG4gICAgfVxuICAgIHN0YXJ0TGFiZWxzKCkge1xuICAgICAgICB0aGlzLmxhYmVsc1N0YWNrLnB1c2gobmV3IExhYmVscygpKTtcbiAgICB9XG4gICAgc3RvcExhYmVscygpIHtcbiAgICAgICAgbGV0IGxhYmVsID0gZXhwZWN0KHRoaXMubGFiZWxzU3RhY2sucG9wKCksICd1bmJhbGFuY2VkIHB1c2ggYW5kIHBvcCBsYWJlbHMnKTtcbiAgICAgICAgbGFiZWwucGF0Y2godGhpcy5wcm9ncmFtKTtcbiAgICB9XG4gICAgLy8gY29tcG9uZW50c1xuICAgIHB1c2hDb21wb25lbnRNYW5hZ2VyKGRlZmluaXRpb24pIHtcbiAgICAgICAgdGhpcy5wdXNoKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCB0aGlzLm90aGVyKGRlZmluaXRpb24pKTtcbiAgICB9XG4gICAgcHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCkge1xuICAgICAgICB0aGlzLnB1c2goNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovKTtcbiAgICB9XG4gICAgaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCkge1xuICAgICAgICB0aGlzLnB1c2goNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovKTtcbiAgICB9XG4gICAgcHJlcGFyZUFyZ3Moc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDU5IC8qIFByZXBhcmVBcmdzICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGNyZWF0ZUNvbXBvbmVudChzdGF0ZSwgaGFzRGVmYXVsdCwgaGFzSW52ZXJzZSkge1xuICAgICAgICBsZXQgZmxhZyA9IChoYXNEZWZhdWx0ID09PSB0cnVlID8gMSA6IDApIHwgKGhhc0ludmVyc2UgPT09IHRydWUgPyAxIDogMCkgPDwgMTtcbiAgICAgICAgdGhpcy5wdXNoKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgZmxhZywgc3RhdGUpO1xuICAgIH1cbiAgICByZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3Ioc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBiZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLyk7XG4gICAgfVxuICAgIGNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCkge1xuICAgICAgICB0aGlzLnB1c2goNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8pO1xuICAgIH1cbiAgICBwdXNoQ29tcG9uZW50T3BlcmF0aW9ucygpIHtcbiAgICAgICAgdGhpcy5wdXNoKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovKTtcbiAgICB9XG4gICAgZ2V0Q29tcG9uZW50U2VsZihzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBnZXRDb21wb25lbnRMYXlvdXQoc3RhdGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgc3RhdGUpO1xuICAgIH1cbiAgICBkaWRDcmVhdGVFbGVtZW50KHN0YXRlKSB7XG4gICAgICAgIHRoaXMucHVzaCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIGRpZFJlbmRlckxheW91dChzdGF0ZSkge1xuICAgICAgICB0aGlzLnB1c2goNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCBzdGF0ZSk7XG4gICAgfVxuICAgIC8vIHBhcnRpYWxcbiAgICBnZXRQYXJ0aWFsVGVtcGxhdGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg2OSAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi8pO1xuICAgIH1cbiAgICByZXNvbHZlTWF5YmVMb2NhbChuYW1lKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLywgdGhpcy5zdHJpbmcobmFtZSkpO1xuICAgIH1cbiAgICAvLyBkZWJ1Z2dlclxuICAgIGRlYnVnZ2VyKHN5bWJvbHMsIGV2YWxJbmZvKSB7XG4gICAgICAgIHRoaXMucHVzaCg3MSAvKiBEZWJ1Z2dlciAqLywgdGhpcy5jb25zdGFudHMub3RoZXIoc3ltYm9scyksIHRoaXMuY29uc3RhbnRzLmFycmF5KGV2YWxJbmZvKSk7XG4gICAgfVxuICAgIC8vIGNvbnRlbnRcbiAgICBkeW5hbWljQ29udGVudChPcGNvZGUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDI1IC8qIER5bmFtaWNDb250ZW50ICovLCB0aGlzLm90aGVyKE9wY29kZSkpO1xuICAgIH1cbiAgICBjYXV0aW91c0FwcGVuZCgpIHtcbiAgICAgICAgdGhpcy5keW5hbWljQ29udGVudChuZXcgY29udGVudC5PcHRpbWl6ZWRDYXV0aW91c0FwcGVuZE9wY29kZSgpKTtcbiAgICB9XG4gICAgdHJ1c3RpbmdBcHBlbmQoKSB7XG4gICAgICAgIHRoaXMuZHluYW1pY0NvbnRlbnQobmV3IGNvbnRlbnQuT3B0aW1pemVkVHJ1c3RpbmdBcHBlbmRPcGNvZGUoKSk7XG4gICAgfVxuICAgIC8vIGRvbVxuICAgIHRleHQodGV4dCkge1xuICAgICAgICB0aGlzLnB1c2goMjMgLyogVGV4dCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRleHQpKTtcbiAgICB9XG4gICAgb3BlblByaW1pdGl2ZUVsZW1lbnQodGFnKSB7XG4gICAgICAgIHRoaXMucHVzaCgyNiAvKiBPcGVuRWxlbWVudCAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zKHRhZykge1xuICAgICAgICB0aGlzLnB1c2goMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLywgdGhpcy5jb25zdGFudHMuc3RyaW5nKHRhZykpO1xuICAgIH1cbiAgICBvcGVuRHluYW1pY0VsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBmbHVzaEVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMiAvKiBGbHVzaEVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBjbG9zZUVsZW1lbnQoKSB7XG4gICAgICAgIHRoaXMucHVzaCgzMyAvKiBDbG9zZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBzdGF0aWNBdHRyKF9uYW1lLCBfbmFtZXNwYWNlLCBfdmFsdWUpIHtcbiAgICAgICAgbGV0IG5hbWUgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX25hbWUpO1xuICAgICAgICBsZXQgbmFtZXNwYWNlID0gX25hbWVzcGFjZSA/IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKSA6IDA7XG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfdmFsdWUpO1xuICAgICAgICB0aGlzLnB1c2goMjkgLyogU3RhdGljQXR0ciAqLywgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyTlMoX25hbWUsIF9uYW1lc3BhY2UsIHRydXN0aW5nKSB7XG4gICAgICAgIGxldCBuYW1lID0gdGhpcy5jb25zdGFudHMuc3RyaW5nKF9uYW1lKTtcbiAgICAgICAgbGV0IG5hbWVzcGFjZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZXNwYWNlKTtcbiAgICAgICAgdGhpcy5wdXNoKDMxIC8qIER5bmFtaWNBdHRyTlMgKi8sIG5hbWUsIG5hbWVzcGFjZSwgdHJ1c3RpbmcgPT09IHRydWUgPyAxIDogMCk7XG4gICAgfVxuICAgIGR5bmFtaWNBdHRyKF9uYW1lLCB0cnVzdGluZykge1xuICAgICAgICBsZXQgbmFtZSA9IHRoaXMuY29uc3RhbnRzLnN0cmluZyhfbmFtZSk7XG4gICAgICAgIHRoaXMucHVzaCgzMCAvKiBEeW5hbWljQXR0ciAqLywgbmFtZSwgdHJ1c3RpbmcgPT09IHRydWUgPyAxIDogMCk7XG4gICAgfVxuICAgIGNvbW1lbnQoX2NvbW1lbnQpIHtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX2NvbW1lbnQpO1xuICAgICAgICB0aGlzLnB1c2goMjQgLyogQ29tbWVudCAqLywgY29tbWVudCk7XG4gICAgfVxuICAgIG1vZGlmaWVyKF9kZWZpbml0aW9uKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNCAvKiBNb2RpZmllciAqLywgdGhpcy5vdGhlcihfZGVmaW5pdGlvbikpO1xuICAgIH1cbiAgICAvLyBsaXN0c1xuICAgIHB1dEl0ZXJhdG9yKCkge1xuICAgICAgICB0aGlzLnB1c2goNTMgLyogUHV0SXRlcmF0b3IgKi8pO1xuICAgIH1cbiAgICBlbnRlckxpc3Qoc3RhcnQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDUxIC8qIEVudGVyTGlzdCAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNTEgLyogRW50ZXJMaXN0ICovLCBzdGFydCk7XG4gICAgfVxuICAgIGV4aXRMaXN0KCkge1xuICAgICAgICB0aGlzLnB1c2goNTIgLyogRXhpdExpc3QgKi8pO1xuICAgIH1cbiAgICBpdGVyYXRlKGJyZWFrcykge1xuICAgICAgICB0aGlzLnJlc2VydmUoNTQgLyogSXRlcmF0ZSAqLyk7XG4gICAgICAgIHRoaXMubGFiZWxzLnRhcmdldCh0aGlzLnBvcywgNTQgLyogSXRlcmF0ZSAqLywgYnJlYWtzKTtcbiAgICB9XG4gICAgLy8gZXhwcmVzc2lvbnNcbiAgICBzZXRWYXJpYWJsZShzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDQgLyogU2V0VmFyaWFibGUgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGdldFZhcmlhYmxlKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goNSAvKiBHZXRWYXJpYWJsZSAqLywgc3ltYm9sKTtcbiAgICB9XG4gICAgZ2V0UHJvcGVydHkoa2V5KSB7XG4gICAgICAgIHRoaXMucHVzaCg2IC8qIEdldFByb3BlcnR5ICovLCB0aGlzLnN0cmluZyhrZXkpKTtcbiAgICB9XG4gICAgZ2V0QmxvY2soc3ltYm9sKSB7XG4gICAgICAgIHRoaXMucHVzaCg4IC8qIEdldEJsb2NrICovLCBzeW1ib2wpO1xuICAgIH1cbiAgICBoYXNCbG9jayhzeW1ib2wpIHtcbiAgICAgICAgdGhpcy5wdXNoKDkgLyogSGFzQmxvY2sgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGhhc0Jsb2NrUGFyYW1zKHN5bWJvbCkge1xuICAgICAgICB0aGlzLnB1c2goMTAgLyogSGFzQmxvY2tQYXJhbXMgKi8sIHN5bWJvbCk7XG4gICAgfVxuICAgIGNvbmNhdChzaXplKSB7XG4gICAgICAgIHRoaXMucHVzaCgxMSAvKiBDb25jYXQgKi8sIHNpemUpO1xuICAgIH1cbiAgICBmdW5jdGlvbihmKSB7XG4gICAgICAgIHRoaXMucHVzaCgyIC8qIEZ1bmN0aW9uICovLCB0aGlzLmZ1bmMoZikpO1xuICAgIH1cbiAgICBsb2FkKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMucHVzaCgxNyAvKiBMb2FkICovLCByZWdpc3Rlcik7XG4gICAgfVxuICAgIGZldGNoKHJlZ2lzdGVyKSB7XG4gICAgICAgIHRoaXMucHVzaCgxOCAvKiBGZXRjaCAqLywgcmVnaXN0ZXIpO1xuICAgIH1cbiAgICBkdXAocmVnaXN0ZXIgPSBSZWdpc3Rlci5zcCwgb2Zmc2V0ID0gMCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wdXNoKDE1IC8qIER1cCAqLywgcmVnaXN0ZXIsIG9mZnNldCk7XG4gICAgfVxuICAgIHBvcChjb3VudCA9IDEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucHVzaCgxNiAvKiBQb3AgKi8sIGNvdW50KTtcbiAgICB9XG4gICAgLy8gdm1cbiAgICBwdXNoUmVtb3RlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovKTtcbiAgICB9XG4gICAgcG9wUmVtb3RlRWxlbWVudCgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi8pO1xuICAgIH1cbiAgICBsYWJlbChuYW1lKSB7XG4gICAgICAgIHRoaXMubGFiZWxzLmxhYmVsKG5hbWUsIHRoaXMubmV4dFBvcyk7XG4gICAgfVxuICAgIHB1c2hSb290U2NvcGUoc3ltYm9scywgYmluZENhbGxlclNjb3BlKSB7XG4gICAgICAgIHRoaXMucHVzaCgxOSAvKiBSb290U2NvcGUgKi8sIHN5bWJvbHMsIGJpbmRDYWxsZXJTY29wZSA/IDEgOiAwKTtcbiAgICB9XG4gICAgcHVzaENoaWxkU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMCAvKiBDaGlsZFNjb3BlICovKTtcbiAgICB9XG4gICAgcG9wU2NvcGUoKSB7XG4gICAgICAgIHRoaXMucHVzaCgyMSAvKiBQb3BTY29wZSAqLyk7XG4gICAgfVxuICAgIHJldHVyblRvKGxhYmVsKSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSgxMiAvKiBJbW1lZGlhdGUgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDEyIC8qIEltbWVkaWF0ZSAqLywgbGFiZWwpO1xuICAgICAgICB0aGlzLmxvYWQoUmVnaXN0ZXIucmEpO1xuICAgIH1cbiAgICBwdXNoRHluYW1pY1Njb3BlKCkge1xuICAgICAgICB0aGlzLnB1c2goMzggLyogUHVzaER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHBvcER5bmFtaWNTY29wZSgpIHtcbiAgICAgICAgdGhpcy5wdXNoKDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLyk7XG4gICAgfVxuICAgIHB1c2hJbW1lZGlhdGUodmFsdWUpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEzIC8qIENvbnN0YW50ICovLCB0aGlzLm90aGVyKHZhbHVlKSk7XG4gICAgfVxuICAgIHByaW1pdGl2ZShfcHJpbWl0aXZlKSB7XG4gICAgICAgIGxldCBmbGFnID0gMDtcbiAgICAgICAgbGV0IHByaW1pdGl2ZTtcbiAgICAgICAgc3dpdGNoICh0eXBlb2YgX3ByaW1pdGl2ZSkge1xuICAgICAgICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSBfcHJpbWl0aXZlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgICAgICAgICAgICBwcmltaXRpdmUgPSB0aGlzLnN0cmluZyhfcHJpbWl0aXZlKTtcbiAgICAgICAgICAgICAgICBmbGFnID0gMTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IF9wcmltaXRpdmUgfCAwO1xuICAgICAgICAgICAgICAgIGZsYWcgPSAyO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgICAgICAgICAvLyBhc3N1bWUgbnVsbFxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDI7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICd1bmRlZmluZWQnOlxuICAgICAgICAgICAgICAgIHByaW1pdGl2ZSA9IDM7XG4gICAgICAgICAgICAgICAgZmxhZyA9IDI7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBwcmltaXRpdmUgcGFzc2VkIHRvIHB1c2hQcmltaXRpdmUnKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2goMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovLCBmbGFnIDw8IDMwIHwgcHJpbWl0aXZlKTtcbiAgICB9XG4gICAgaGVscGVyKGZ1bmMpIHtcbiAgICAgICAgdGhpcy5wdXNoKDEgLyogSGVscGVyICovLCB0aGlzLmZ1bmMoZnVuYykpO1xuICAgIH1cbiAgICBwdXNoQmxvY2soYmxvY2spIHtcbiAgICAgICAgdGhpcy5wdXNoKDcgLyogUHVzaEJsb2NrICovLCB0aGlzLmJsb2NrKGJsb2NrKSk7XG4gICAgfVxuICAgIGJpbmREeW5hbWljU2NvcGUoX25hbWVzKSB7XG4gICAgICAgIHRoaXMucHVzaCgzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovLCB0aGlzLm5hbWVzKF9uYW1lcykpO1xuICAgIH1cbiAgICBlbnRlcihhcmdzKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OCAvKiBFbnRlciAqLywgYXJncyk7XG4gICAgfVxuICAgIGV4aXQoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0OSAvKiBFeGl0ICovKTtcbiAgICB9XG4gICAgcmV0dXJuKCkge1xuICAgICAgICB0aGlzLnB1c2goMjIgLyogUmV0dXJuICovKTtcbiAgICB9XG4gICAgcHVzaEZyYW1lKCkge1xuICAgICAgICB0aGlzLnB1c2goNDYgLyogUHVzaEZyYW1lICovKTtcbiAgICB9XG4gICAgcG9wRnJhbWUoKSB7XG4gICAgICAgIHRoaXMucHVzaCg0NyAvKiBQb3BGcmFtZSAqLyk7XG4gICAgfVxuICAgIGNvbXBpbGVEeW5hbWljQmxvY2soKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovKTtcbiAgICB9XG4gICAgaW52b2tlRHluYW1pYyhpbnZva2VyKSB7XG4gICAgICAgIHRoaXMucHVzaCg0MiAvKiBJbnZva2VEeW5hbWljICovLCB0aGlzLm90aGVyKGludm9rZXIpKTtcbiAgICB9XG4gICAgaW52b2tlU3RhdGljKGJsb2NrLCBjYWxsZXJDb3VudCA9IDApIHtcbiAgICAgICAgbGV0IHsgcGFyYW1ldGVycyB9ID0gYmxvY2suc3ltYm9sVGFibGU7XG4gICAgICAgIGxldCBjYWxsZWVDb3VudCA9IHBhcmFtZXRlcnMubGVuZ3RoO1xuICAgICAgICBsZXQgY291bnQgPSBNYXRoLm1pbihjYWxsZXJDb3VudCwgY2FsbGVlQ291bnQpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICBpZiAoY291bnQpIHtcbiAgICAgICAgICAgIHRoaXMucHVzaENoaWxkU2NvcGUoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY291bnQ7IGkrKykge1xuICAgICAgICAgICAgICAgIHRoaXMuZHVwKFJlZ2lzdGVyLmZwLCBjYWxsZXJDb3VudCAtIGkpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0VmFyaWFibGUocGFyYW1ldGVyc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IF9ibG9jayA9IHRoaXMuY29uc3RhbnRzLmJsb2NrKGJsb2NrKTtcbiAgICAgICAgdGhpcy5wdXNoKDQxIC8qIEludm9rZVN0YXRpYyAqLywgX2Jsb2NrKTtcbiAgICAgICAgaWYgKGNvdW50KSB7XG4gICAgICAgICAgICB0aGlzLnBvcFNjb3BlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5wb3BGcmFtZSgpO1xuICAgIH1cbiAgICB0ZXN0KHRlc3RGdW5jKSB7XG4gICAgICAgIGxldCBfZnVuYztcbiAgICAgICAgaWYgKHRlc3RGdW5jID09PSAnY29uc3QnKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHZtLkNvbnN0VGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ3NpbXBsZScpIHtcbiAgICAgICAgICAgIF9mdW5jID0gdm0uU2ltcGxlVGVzdDtcbiAgICAgICAgfSBlbHNlIGlmICh0ZXN0RnVuYyA9PT0gJ2Vudmlyb25tZW50Jykge1xuICAgICAgICAgICAgX2Z1bmMgPSB2bS5FbnZpcm9ubWVudFRlc3Q7XG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHRlc3RGdW5jID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBfZnVuYyA9IHRlc3RGdW5jO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgICAgICB9XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5jb25zdGFudHMuZnVuY3Rpb24oX2Z1bmMpO1xuICAgICAgICB0aGlzLnB1c2goNTAgLyogVGVzdCAqLywgZnVuYyk7XG4gICAgfVxuICAgIGp1bXAodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0MyAvKiBKdW1wICovKTtcbiAgICAgICAgdGhpcy5sYWJlbHMudGFyZ2V0KHRoaXMucG9zLCA0MyAvKiBKdW1wICovLCB0YXJnZXQpO1xuICAgIH1cbiAgICBqdW1wSWYodGFyZ2V0KSB7XG4gICAgICAgIHRoaXMucmVzZXJ2ZSg0NCAvKiBKdW1wSWYgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ0IC8qIEp1bXBJZiAqLywgdGFyZ2V0KTtcbiAgICB9XG4gICAganVtcFVubGVzcyh0YXJnZXQpIHtcbiAgICAgICAgdGhpcy5yZXNlcnZlKDQ1IC8qIEp1bXBVbmxlc3MgKi8pO1xuICAgICAgICB0aGlzLmxhYmVscy50YXJnZXQodGhpcy5wb3MsIDQ1IC8qIEp1bXBVbmxlc3MgKi8sIHRhcmdldCk7XG4gICAgfVxuICAgIHN0cmluZyhfc3RyaW5nKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5zdHJpbmcoX3N0cmluZyk7XG4gICAgfVxuICAgIG5hbWVzKF9uYW1lcykge1xuICAgICAgICBsZXQgbmFtZXMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBfbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuID0gX25hbWVzW2ldO1xuICAgICAgICAgICAgbmFtZXNbaV0gPSB0aGlzLmNvbnN0YW50cy5zdHJpbmcobik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLmFycmF5KG5hbWVzKTtcbiAgICB9XG4gICAgc3ltYm9scyhzeW1ib2xzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5hcnJheShzeW1ib2xzKTtcbiAgICB9XG4gICAgb3RoZXIodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uc3RhbnRzLm90aGVyKHZhbHVlKTtcbiAgICB9XG4gICAgYmxvY2soYmxvY2spIHtcbiAgICAgICAgcmV0dXJuIGJsb2NrID8gdGhpcy5jb25zdGFudHMuYmxvY2soYmxvY2spIDogMDtcbiAgICB9XG4gICAgZnVuYyhmdW5jKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbnN0YW50cy5mdW5jdGlvbihmdW5jKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpc0NvbXBpbGFibGVFeHByZXNzaW9uKGV4cHIpIHtcbiAgICByZXR1cm4gdHlwZW9mIGV4cHIgPT09ICdvYmplY3QnICYmIGV4cHIgIT09IG51bGwgJiYgdHlwZW9mIGV4cHIuY29tcGlsZSA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE9wY29kZUJ1aWxkZXIgZXh0ZW5kcyBCYXNpY09wY29kZUJ1aWxkZXIge1xuICAgIGNvbnN0cnVjdG9yKGVudiwgbWV0YSwgcHJvZ3JhbSA9IGVudi5wcm9ncmFtKSB7XG4gICAgICAgIHN1cGVyKGVudiwgbWV0YSwgcHJvZ3JhbSk7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gbmV3IENvbXBvbmVudEJ1aWxkZXIodGhpcyk7XG4gICAgfVxuICAgIGNvbXBpbGVBcmdzKHBhcmFtcywgaGFzaCwgc3ludGhldGljKSB7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gMDtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwYXJhbXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBleHByKHBhcmFtc1tpXSwgdGhpcyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwb3NpdGlvbmFsID0gcGFyYW1zLmxlbmd0aDtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUocG9zaXRpb25hbCk7XG4gICAgICAgIGxldCBuYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgICBpZiAoaGFzaCkge1xuICAgICAgICAgICAgbmFtZXMgPSBoYXNoWzBdO1xuICAgICAgICAgICAgbGV0IHZhbCA9IGhhc2hbMV07XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGV4cHIodmFsW2ldLCB0aGlzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aGlzLnB1c2hJbW1lZGlhdGUobmFtZXMpO1xuICAgICAgICB0aGlzLnB1c2hBcmdzKHN5bnRoZXRpYyk7XG4gICAgfVxuICAgIGNvbXBpbGUoZXhwcikge1xuICAgICAgICBpZiAoaXNDb21waWxhYmxlRXhwcmVzc2lvbihleHByKSkge1xuICAgICAgICAgICAgcmV0dXJuIGV4cHIuY29tcGlsZSh0aGlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBleHByO1xuICAgICAgICB9XG4gICAgfVxuICAgIGd1YXJkZWRBcHBlbmQoZXhwcmVzc2lvbiwgdHJ1c3RpbmcpIHtcbiAgICAgICAgdGhpcy5zdGFydExhYmVscygpO1xuICAgICAgICB0aGlzLnB1c2hGcmFtZSgpO1xuICAgICAgICB0aGlzLnJldHVyblRvKCdFTkQnKTtcbiAgICAgICAgZXhwcihleHByZXNzaW9uLCB0aGlzKTtcbiAgICAgICAgdGhpcy5kdXAoKTtcbiAgICAgICAgdGhpcy50ZXN0KHJlZmVyZW5jZSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gSXNDb21wb25lbnREZWZpbml0aW9uUmVmZXJlbmNlLmNyZWF0ZShyZWZlcmVuY2UpO1xuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5lbnRlcigyKTtcbiAgICAgICAgdGhpcy5qdW1wVW5sZXNzKCdFTFNFJyk7XG4gICAgICAgIHRoaXMucHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyKCk7XG4gICAgICAgIHRoaXMuaW52b2tlQ29tcG9uZW50KG51bGwsIG51bGwsIG51bGwsIG51bGwsIG51bGwpO1xuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRUxTRScpO1xuICAgICAgICBpZiAodHJ1c3RpbmcpIHtcbiAgICAgICAgICAgIHRoaXMudHJ1c3RpbmdBcHBlbmQoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuY2F1dGlvdXNBcHBlbmQoKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmV4aXQoKTtcbiAgICAgICAgdGhpcy5yZXR1cm4oKTtcbiAgICAgICAgdGhpcy5sYWJlbCgnRU5EJyk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5zdG9wTGFiZWxzKCk7XG4gICAgfVxuICAgIGludm9rZUNvbXBvbmVudChhdHRycywgcGFyYW1zLCBoYXNoLCBibG9jayA9IG51bGwsIGludmVyc2UgPSBudWxsKSB7XG4gICAgICAgIHRoaXMuaW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlKCk7XG4gICAgICAgIHRoaXMuZmV0Y2goUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmR1cChSZWdpc3Rlci5zcCwgMSk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgICAgIHRoaXMucHVzaEJsb2NrKGJsb2NrKTtcbiAgICAgICAgdGhpcy5wdXNoQmxvY2soaW52ZXJzZSk7XG4gICAgICAgIHRoaXMuY29tcGlsZUFyZ3MocGFyYW1zLCBoYXNoLCBmYWxzZSk7XG4gICAgICAgIHRoaXMucHJlcGFyZUFyZ3MoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24oKTtcbiAgICAgICAgdGhpcy5wdXNoRHluYW1pY1Njb3BlKCk7XG4gICAgICAgIHRoaXMuY3JlYXRlQ29tcG9uZW50KFJlZ2lzdGVyLnMwLCBibG9jayAhPT0gbnVsbCwgaW52ZXJzZSAhPT0gbnVsbCk7XG4gICAgICAgIHRoaXMucmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRTZWxmKFJlZ2lzdGVyLnMwKTtcbiAgICAgICAgdGhpcy5nZXRDb21wb25lbnRMYXlvdXQoUmVnaXN0ZXIuczApO1xuICAgICAgICB0aGlzLmludm9rZUR5bmFtaWMobmV3IEludm9rZUR5bmFtaWNMYXlvdXQoYXR0cnMgJiYgYXR0cnMuc2NhbigpKSk7XG4gICAgICAgIHRoaXMucG9wRnJhbWUoKTtcbiAgICAgICAgdGhpcy5wb3BTY29wZSgpO1xuICAgICAgICB0aGlzLnBvcER5bmFtaWNTY29wZSgpO1xuICAgICAgICB0aGlzLmNvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uKCk7XG4gICAgICAgIHRoaXMubG9hZChSZWdpc3Rlci5zMCk7XG4gICAgfVxuICAgIHRlbXBsYXRlKGJsb2NrKSB7XG4gICAgICAgIGlmICghYmxvY2spIHJldHVybiBudWxsO1xuICAgICAgICByZXR1cm4gbmV3IFJhd0lubGluZUJsb2NrKHRoaXMubWV0YSwgYmxvY2suc3RhdGVtZW50cywgYmxvY2sucGFyYW1ldGVycyk7XG4gICAgfVxufSJdfQ==

@@ -45,5 +45,5 @@ 'use strict';

});
_opcodes.APPEND_OPCODES.add(58 /* PushArgs */, (vm, { op1: positional, op2: synthetic }) => {
_opcodes.APPEND_OPCODES.add(58 /* PushArgs */, (vm, { op1: synthetic }) => {
let stack = vm.stack;
_arguments2.default.setup(stack, positional, !!synthetic);
_arguments2.default.setup(stack, !!synthetic);
stack.push(_arguments2.default);

@@ -63,2 +63,3 @@ });

}
stack.push(positionalCount);
let names = Object.keys(named);

@@ -70,3 +71,3 @@ let namedCount = names.length;

stack.push(names);
args.setup(stack, positionalCount, true);
args.setup(stack, true);
}

@@ -163,2 +164,2 @@ stack.push(args);

exports.DidUpdateLayoutOpcode = DidUpdateLayoutOpcode;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsIl9kZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsImNvbnN0YW50cyIsImdldE90aGVyIiwic3RhY2siLCJwdXNoIiwibWFuYWdlciIsInJlZmVyZW5jZSIsInBvcCIsImNhY2hlIiwidW5kZWZpbmVkIiwicGVlayIsInZhbHVlIiwidXBkYXRlV2l0aCIsImNvbXBvbmVudCIsInBvc2l0aW9uYWwiLCJvcDIiLCJzeW50aGV0aWMiLCJzZXR1cCIsIl9zdGF0ZSIsImZldGNoVmFsdWUiLCJhcmdzIiwicHJlcGFyZWRBcmdzIiwicHJlcGFyZUFyZ3MiLCJjbGVhciIsIm5hbWVkIiwicG9zaXRpb25hbENvdW50IiwibGVuZ3RoIiwiaSIsIm5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWVkQ291bnQiLCJmbGFncyIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsImNvbnN0cnVjdG9yIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1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LFNBQUwsR0FBaUJBLFNBQWpCO0FBQ0EsYUFBS3dDLE1BQUwsR0FBY0EsTUFBZDtBQUNBLGFBQUtPLElBQUwsR0FBWSxtQkFBWjtBQUNBLGFBQUtwQixHQUFMO0FBQ0g7QUFDRHVCLGFBQVNsRSxFQUFULEVBQWE7QUFDVCxZQUFJLEVBQUVRLE9BQUYsRUFBV1EsU0FBWCxFQUFzQndDLE1BQXRCLEtBQWlDLElBQXJDO0FBQ0FoRCxnQkFBUWtFLGVBQVIsQ0FBd0IxRCxTQUF4QixFQUFtQ3dDLE1BQW5DO0FBQ0F4RCxXQUFHd0MsR0FBSCxDQUFPbUMsU0FBUCxDQUFpQjNELFNBQWpCLEVBQTRCUixPQUE1QjtBQUNIO0FBYnFEO1FBQTdDb0QscUIsR0FBQUEscUIiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWwsICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICAgIH1cbiAgICBzdGFjay5wdXNoKGFyZ3MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovLCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uO1xuICAgIGxldCBtYW5hZ2VyO1xuICAgIGxldCBhcmdzID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBzdGF0ZSA9ICh7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKSk7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcbiAgICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAgIHN0YXRlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHtcbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi8sIHZtID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRTZWxmICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKHN0YXRlLm1hbmFnZXIuZ2V0U2VsZihzdGF0ZS5jb21wb25lbnQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBkZWZpbml0aW9uLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLWNvbXBvbmVudCc7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGlkLXVwZGF0ZS1sYXlvdXQnO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJhZGQiLCJ2bSIsIm9wMSIsIl9kZWZpbml0aW9uIiwiZGVmaW5pdGlvbiIsImNvbnN0YW50cyIsImdldE90aGVyIiwic3RhY2siLCJwdXNoIiwibWFuYWdlciIsInJlZmVyZW5jZSIsInBvcCIsImNhY2hlIiwidW5kZWZpbmVkIiwicGVlayIsInZhbHVlIiwidXBkYXRlV2l0aCIsImNvbXBvbmVudCIsInN5bnRoZXRpYyIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwicG9zaXRpb25hbCIsIm5hbWVkIiwicG9zaXRpb25hbENvdW50IiwibGVuZ3RoIiwiaSIsIm5hbWVzIiwiT2JqZWN0Iiwia2V5cyIsIm5hbWVkQ291bnQiLCJmbGFncyIsIm9wMiIsImR5bmFtaWNTY29wZSIsInN0YXRlIiwiaGFzRGVmYXVsdEJsb2NrIiwiY3JlYXRlIiwiZW52IiwiZ2V0U2VsZiIsIlVwZGF0ZUNvbXBvbmVudE9wY29kZSIsInRhZyIsIm5hbWUiLCJkZXN0cnVjdG9yIiwiZ2V0RGVzdHJ1Y3RvciIsIm5ld0Rlc3Ryb3lhYmxlIiwiYmVnaW5DYWNoZUdyb3VwIiwiZWxlbWVudHMiLCJwdXNoU2ltcGxlQmxvY2siLCJhY3Rpb24iLCJkaWRDcmVhdGVFbGVtZW50IiwiZXhwZWN0Q29uc3RydWN0aW5nIiwiZXhwZWN0T3BlcmF0aW9ucyIsImxheW91dEZvciIsImJvdW5kcyIsInBvcEJsb2NrIiwiZGlkUmVuZGVyTGF5b3V0IiwiZGlkQ3JlYXRlIiwiRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIiwiY29tbWl0Q2FjaGVHcm91cCIsImNvbnN0cnVjdG9yIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1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QUNBLGFBQUt3QyxNQUFMLEdBQWNBLE1BQWQ7QUFDQSxhQUFLTyxJQUFMLEdBQVksbUJBQVo7QUFDQSxhQUFLcEIsR0FBTDtBQUNIO0FBQ0R1QixhQUFTbEUsRUFBVCxFQUFhO0FBQ1QsWUFBSSxFQUFFUSxPQUFGLEVBQVdRLFNBQVgsRUFBc0J3QyxNQUF0QixLQUFpQyxJQUFyQztBQUNBaEQsZ0JBQVFrRSxlQUFSLENBQXdCMUQsU0FBeEIsRUFBbUN3QyxNQUFuQztBQUNBeEQsV0FBR3dDLEdBQUgsQ0FBT21DLFNBQVAsQ0FBaUIzRCxTQUFqQixFQUE0QlIsT0FBNUI7QUFDSDtBQWJxRDtRQUE3Q29ELHFCLEdBQUFBLHFCIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmUsIENPTlNUQU5UX1RBRywgaXNDb25zdCwgUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgQVJHUyBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbkFQUEVORF9PUENPREVTLmFkZCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9kZWZpbml0aW9uKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBtYW5hZ2VyID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHVzaEFyZ3MgKi8sICh2bSwgeyBvcDE6IHN5bnRoZXRpYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgQVJHUy5zZXR1cChzdGFjaywgISFzeW50aGV0aWMpO1xuICAgIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OSAvKiBQcmVwYXJlQXJncyAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcbiAgICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgICAgIGFyZ3MuY2xlYXIoKTtcbiAgICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcbiAgICAgICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVzID0gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lZENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICAgICAgYXJncy5zZXR1cChzdGFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIHN0YWNrLnB1c2goYXJncyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sICh2bSwgeyBvcDE6IGZsYWdzLCBvcDI6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb247XG4gICAgbGV0IG1hbmFnZXI7XG4gICAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IHN0YXRlID0gKHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpKTtcbiAgICBsZXQgaGFzRGVmYXVsdEJsb2NrID0gZmxhZ3MgJiAwYjAxO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZSh2bS5lbnYsIGRlZmluaXRpb24sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdm0uZ2V0U2VsZigpLCAhIWhhc0RlZmF1bHRCbG9jayk7XG4gICAgc3RhdGUuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZUNvbXBvbmVudE9wY29kZShhcmdzLnRhZywgZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4ge1xuICAgIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICAgIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLywgdm0gPT4ge1xuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICAgIG1hbmFnZXIuZGlkQ3JlYXRlRWxlbWVudChjb21wb25lbnQsIHZtLmVsZW1lbnRzKCkuZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtLmVsZW1lbnRzKCkuZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YXRlID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYm91bmRzID0gdm0uZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIG1hbmFnZXIuZGlkUmVuZGVyTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgICAgIHRoaXMudHlwZSA9ICd1cGRhdGUtY29tcG9uZW50JztcbiAgICAgICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGV2YWx1YXRlKF92bSkge1xuICAgICAgICBsZXQgeyBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5uYW1lKV0sXG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkaWQtdXBkYXRlLWxheW91dCc7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxufSJdfQ==

@@ -6,3 +6,3 @@ 'use strict';

});
exports.DOMTreeConstruction = exports.DOMChanges = exports.DOM = exports.BLACKLIST_TABLE = exports.SVG_NAMESPACE = undefined;
exports.DOMTreeConstruction = exports.DOMChanges = exports.DOM = exports.DOMOperations = exports.BLACKLIST_TABLE = exports.SVG_NAMESPACE = undefined;
exports.isWhitespace = isWhitespace;

@@ -46,33 +46,45 @@ exports.moveNodesBefore = moveNodesBefore;

}
var DOM = exports.DOM = undefined;
(function (DOM) {
class TreeConstruction {
constructor(document) {
this.document = document;
this.setupUselessElement();
class DOMOperations {
constructor(document) {
this.document = document;
this.uselessElement = this.document.createElement('div');
}
createElement(tag, context) {
let isElementInSVGNamespace, isHTMLIntegrationPoint;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
setupUselessElement() {
this.uselessElement = this.document.createElement('div');
}
createElement(tag, context) {
let isElementInSVGNamespace, isHTMLIntegrationPoint;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error(`Cannot create a ${tag} inside an SVG context`);
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error(`Cannot create a ${tag} inside an SVG context`);
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
}
insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
}
insertHTMLBefore(_parent, nextSibling, html) {
return insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
}
createTextNode(text) {
return this.document.createTextNode(text);
}
createComment(data) {
return this.document.createComment(data);
}
}
exports.DOMOperations = DOMOperations;
var DOM = exports.DOM = undefined;
(function (DOM) {
class TreeConstruction extends DOMOperations {
createElementNS(namespace, tag) {

@@ -88,14 +100,2 @@ return this.document.createElementNS(namespace, tag);

}
createTextNode(text) {
return this.document.createTextNode(text);
}
createComment(data) {
return this.document.createComment(data);
}
insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
}
insertHTMLBefore(parent, html, reference) {
return insertHTMLBefore(this.uselessElement, parent, reference, html);
}
}

@@ -109,7 +109,7 @@ DOM.TreeConstruction = TreeConstruction;

})(DOM || (exports.DOM = DOM = {}));
class DOMChanges {
class DOMChanges extends DOMOperations {
constructor(document) {
super(document);
this.document = document;
this.namespace = null;
this.uselessElement = this.document.createElement('div');
}

@@ -128,32 +128,2 @@ setAttribute(element, name, value) {

}
createTextNode(text) {
return this.document.createTextNode(text);
}
createComment(data) {
return this.document.createComment(data);
}
createElement(tag, context) {
let isElementInSVGNamespace, isHTMLIntegrationPoint;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error(`Cannot create a ${tag} inside an SVG context`);
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
}
insertHTMLBefore(_parent, nextSibling, html) {
return insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
}
insertNodeBefore(parent, node, reference) {

@@ -224,2 +194,2 @@ if (isDocumentFragment(node)) {

const DOMTreeConstruction = exports.DOMTreeConstruction = DOM.DOMTreeConstruction;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vaGVscGVyLmpzIl0sIm5hbWVzIjpbImlzV2hpdGVzcGFjZSIsIm1vdmVOb2Rlc0JlZm9yZSIsImluc2VydEhUTUxCZWZvcmUiLCJTVkdfTkFNRVNQQUNFIiwiU1ZHX0lOVEVHUkFUSU9OX1BPSU5UUyIsImZvcmVpZ25PYmplY3QiLCJkZXNjIiwidGl0bGUiLCJCTEFDS0xJU1RfVEFCTEUiLCJPYmplY3QiLCJjcmVhdGUiLCJmb3JFYWNoIiwidGFnIiwiV0hJVEVTUEFDRSIsImRvYyIsImRvY3VtZW50Iiwic3RyaW5nIiwidGVzdCIsInNvdXJjZSIsInRhcmdldCIsIm5leHRTaWJsaW5nIiwiZmlyc3QiLCJmaXJzdENoaWxkIiwibGFzdCIsImN1cnJlbnQiLCJpbnNlcnRCZWZvcmUiLCJET00iLCJUcmVlQ29uc3RydWN0aW9uIiwiY29uc3RydWN0b3IiLCJzZXR1cFVzZWxlc3NFbGVtZW50IiwidXNlbGVzc0VsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiY29udGV4dCIsImlzRWxlbWVudEluU1ZHTmFtZXNwYWNlIiwiaXNIVE1MSW50ZWdyYXRpb25Qb2ludCIsIm5hbWVzcGFjZVVSSSIsInRhZ05hbWUiLCJFcnJvciIsImNyZWF0ZUVsZW1lbnROUyIsIm5hbWVzcGFjZSIsInNldEF0dHJpYnV0ZSIsImVsZW1lbnQiLCJuYW1lIiwidmFsdWUiLCJzZXRBdHRyaWJ1dGVOUyIsImNyZWF0ZVRleHROb2RlIiwidGV4dCIsImNyZWF0ZUNvbW1lbnQiLCJkYXRhIiwicGFyZW50Iiwibm9kZSIsInJlZmVyZW5jZSIsImh0bWwiLCJhcHBsaWVkVHJlZUNvbnRydWN0aW9uIiwiRE9NVHJlZUNvbnN0cnVjdGlvbiIsIkRPTUNoYW5nZXMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsIl9wYXJlbnQiLCJpbnNlcnROb2RlQmVmb3JlIiwiaXNEb2N1bWVudEZyYWdtZW50IiwibGFzdENoaWxkIiwiaW5zZXJ0VGV4dEJlZm9yZSIsInRleHROb2RlIiwiaW5zZXJ0QWZ0ZXIiLCJfdXNlbGVzcyIsIl9uZXh0U2libGluZyIsInVzZWxlc3MiLCJwcmV2IiwicHJldmlvdXNTaWJsaW5nIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiSFRNTEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUiLCJoZWxwZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdCZ0JBLFksR0FBQUEsWTtRQUdBQyxlLEdBQUFBLGU7UUE4SUFDLGdCLEdBQUFBLGdCOztBQWpLaEI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUMsd0NBQWdCLDRCQUF0QjtBQUNQO0FBQ0EsTUFBTUMseUJBQXlCLEVBQUVDLGVBQWUsQ0FBakIsRUFBb0JDLE1BQU0sQ0FBMUIsRUFBNkJDLE9BQU8sQ0FBcEMsRUFBL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsNENBQWtCQyxPQUFPQyxNQUFQLENBQWMsSUFBZCxDQUF4QjtBQUNQLENBQUMsR0FBRCxFQUFNLEtBQU4sRUFBYSxZQUFiLEVBQTJCLE1BQTNCLEVBQW1DLElBQW5DLEVBQXlDLFFBQXpDLEVBQW1ELE1BQW5ELEVBQTJELElBQTNELEVBQWlFLEtBQWpFLEVBQXdFLElBQXhFLEVBQThFLElBQTlFLEVBQW9GLElBQXBGLEVBQTBGLE9BQTFGLEVBQW1HLElBQW5HLEVBQXlHLElBQXpHLEVBQStHLElBQS9HLEVBQXFILElBQXJILEVBQTJILElBQTNILEVBQWlJLElBQWpJLEVBQXVJLE1BQXZJLEVBQStJLElBQS9JLEVBQXFKLEdBQXJKLEVBQTBKLEtBQTFKLEVBQWlLLElBQWpLLEVBQXVLLFNBQXZLLEVBQWtMLE1BQWxMLEVBQTBMLE1BQTFMLEVBQWtNLE1BQWxNLEVBQTBNLElBQTFNLEVBQWdOLEdBQWhOLEVBQXFOLEtBQXJOLEVBQTROLE1BQTVOLEVBQW9PLEdBQXBPLEVBQXlPLE9BQXpPLEVBQWtQLE1BQWxQLEVBQTBQLFFBQTFQLEVBQW9RLFFB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QU80QyxRQUFRRSxlQUFmO0FBQ0FwQixlQUFPdUIsV0FBUCxDQUFtQkwsT0FBbkI7QUFDSDtBQUNELFFBQUk5QyxRQUFRK0MsT0FBT0EsS0FBS2hELFdBQVosR0FBMEI2QixPQUFPM0IsVUFBN0M7QUFDQSxXQUFPLDJCQUFtQjJCLE1BQW5CLEVBQTJCNUIsS0FBM0IsRUFBa0NFLElBQWxDLENBQVA7QUFDSDtBQUNELFNBQVNxQyxrQkFBVCxDQUE0QlYsSUFBNUIsRUFBa0M7QUFDOUIsV0FBT0EsS0FBS3VCLFFBQUwsS0FBa0JDLEtBQUtDLHNCQUE5QjtBQUNIO0FBQ0QsSUFBSUMsU0FBU3JCLFVBQWI7QUFDQXFCLFNBQVMsb0NBQXlCOUQsR0FBekIsRUFBOEI4RCxNQUE5QixDQUFUO0FBQ0FBLFNBQVMsOEJBQTBCOUQsR0FBMUIsRUFBK0I4RCxNQUEvQixDQUFUO0FBQ0FBLFNBQVMsaUNBQXdCOUQsR0FBeEIsRUFBNkI4RCxNQUE3QixFQUFxQ3pFLGFBQXJDLENBQVQ7a0JBQ2V5RSxNO0FBQ1IsTUFBTXRCLG9EQUFzQjVCLElBQUk0QixtQkFBaEMiLCJmaWxlIjoibGliL2RvbS9oZWxwZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcywgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBkb21DaGFuZ2VzIGFzIGRvbUNoYW5nZXNUYWJsZUVsZW1lbnRGaXgsIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvblRhYmxlRWxlbWVudEZpeCB9IGZyb20gJy4uL2NvbXBhdC9pbm5lci1odG1sLWZpeCc7XG5pbXBvcnQgeyBkb21DaGFuZ2VzIGFzIGRvbUNoYW5nZXNTdmdFbGVtZW50Rml4LCB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4IH0gZnJvbSAnLi4vY29tcGF0L3N2Zy1pbm5lci1odG1sLWZpeCc7XG5pbXBvcnQgeyBkb21DaGFuZ2VzIGFzIGRvbUNoYW5nZXNOb2RlTWVyZ2luZ0ZpeCwgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uTm9kZU1lcmdpbmdGaXggfSBmcm9tICcuLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4JztcbmV4cG9ydCBjb25zdCBTVkdfTkFNRVNQQUNFID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJztcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxuY29uc3QgU1ZHX0lOVEVHUkFUSU9OX1BPSU5UUyA9IHsgZm9yZWlnbk9iamVjdDogMSwgZGVzYzogMSwgdGl0bGU6IDEgfTtcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjYWRqdXN0LXN2Zy1hdHRyaWJ1dGVzXG4vLyBUT0RPOiBBZGp1c3QgU1ZHIGF0dHJpYnV0ZXNcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluZm9yZWlnblxuLy8gVE9ETzogQWRqdXN0IFNWRyBlbGVtZW50c1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG5leHBvcnQgY29uc3QgQkxBQ0tMSVNUX1RBQkxFID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbltcImJcIiwgXCJiaWdcIiwgXCJibG9ja3F1b3RlXCIsIFwiYm9keVwiLCBcImJyXCIsIFwiY2VudGVyXCIsIFwiY29kZVwiLCBcImRkXCIsIFwiZGl2XCIsIFwiZGxcIiwgXCJkdFwiLCBcImVtXCIsIFwiZW1iZWRcIiwgXCJoMVwiLCBcImgyXCIsIFwiaDNcIiwgXCJoNFwiLCBcImg1XCIsIFwiaDZcIiwgXCJoZWFkXCIsIFwiaHJcIiwgXCJpXCIsIFwiaW1nXCIsIFwibGlcIiwgXCJsaXN0aW5nXCIsIFwibWFpblwiLCBcIm1ldGFcIiwgXCJub2JyXCIsIFwib2xcIiwgXCJwXCIsIFwicHJlXCIsIFwicnVieVwiLCBcInNcIiwgXCJzbWFsbFwiLCBcInNwYW5cIiwgXCJzdHJvbmdcIiwgXCJzdHJpa2VcIiwgXCJzdWJcIiwgXCJzdXBcIiwgXCJ0YWJsZVwiLCBcInR0XCIsIFwidVwiLCBcInVsXCIsIFwidmFyXCJdLmZvckVhY2godGFnID0+IEJMQUNLTElTVF9UQUJMRVt0YWddID0gMSk7XG5jb25zdCBXSElURVNQQUNFID0gL1tcXHQtXFxyIFxceEEwXFx1MTY4MFxcdTE4MEVcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMFxcdUZFRkZdLztcbmxldCBkb2MgPSB0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IGRvY3VtZW50O1xuZXhwb3J0IGZ1bmN0aW9uIGlzV2hpdGVzcGFjZShzdHJpbmcpIHtcbiAgICByZXR1cm4gV0hJVEVTUEFDRS50ZXN0KHN0cmluZyk7XG59XG5leHBvcnQgZnVuY3Rpb24gbW92ZU5vZGVzQmVmb3JlKHNvdXJjZSwgdGFyZ2V0LCBuZXh0U2libGluZykge1xuICAgIGxldCBmaXJzdCA9IHNvdXJjZS5maXJzdENoaWxkO1xuICAgIGxldCBsYXN0ID0gbnVsbDtcbiAgICBsZXQgY3VycmVudCA9IGZpcnN0O1xuICAgIHdoaWxlIChjdXJyZW50KSB7XG4gICAgICAgIGxhc3QgPSBjdXJyZW50O1xuICAgICAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0U2libGluZztcbiAgICAgICAgdGFyZ2V0Lmluc2VydEJlZm9yZShsYXN0LCBuZXh0U2libGluZyk7XG4gICAgfVxuICAgIHJldHVybiBbZmlyc3QsIGxhc3RdO1xufVxuZXhwb3J0IHZhciBET007XG4oZnVuY3Rpb24gKERPTSkge1xuICAgIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb24ge1xuICAgICAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICAgICAgdGhpcy5zZXR1cFVzZWxlc3NFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0dXBVc2VsZXNzRWxlbWVudCgpIHtcbiAgICAgICAgICAgIHRoaXMudXNlbGVzc0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICB9XG4gICAgICAgIGNyZWF0ZUVsZW1lbnQodGFnLCBjb250ZXh0KSB7XG4gICAgICAgICAgICBsZXQgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UsIGlzSFRNTEludGVncmF0aW9uUG9pbnQ7XG4gICAgICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gY29udGV4dC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UgfHwgdGFnID09PSAnc3ZnJztcbiAgICAgICAgICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gU1ZHX0lOVEVHUkFUSU9OX1BPSU5UU1tjb250ZXh0LnRhZ05hbWVdO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlICYmICFpc0hUTUxJbnRlZ3JhdGlvblBvaW50KSB7XG4gICAgICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgcHJvcGVybHkgaGFuZGxlIDxmb250PiB3aXRoIGNvbG9yLCBmYWNlLCBvclxuICAgICAgICAgICAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAgICAgICAgICAgLy8gdGhpcy5cbiAgICAgICAgICAgICAgICBpZiAoQkxBQ0tMSVNUX1RBQkxFW3RhZ10pIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGEgJHt0YWd9IGluc2lkZSBhbiBTVkcgY29udGV4dGApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05BTUVTUEFDRSwgdGFnKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICAgICAgfVxuICAgICAgICBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgcmV0dXJuIGluc2VydEhUTUxCZWZvcmUodGhpcy51c2VsZXNzRWxlbWVudCwgcGFyZW50LCByZWZlcmVuY2UsIGh0bWwpO1xuICAgICAgICB9XG4gICAgfVxuICAgIERPTS5UcmVlQ29uc3RydWN0aW9uID0gVHJlZUNvbnN0cnVjdGlvbjtcbiAgICBsZXQgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG4gICAgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uVGFibGVFbGVtZW50Rml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbik7XG4gICAgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IHRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbiwgU1ZHX05BTUVTUEFDRSk7XG4gICAgRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb24gPSBhcHBsaWVkVHJlZUNvbnRydWN0aW9uO1xufSkoRE9NIHx8IChET00gPSB7fSkpO1xuZXhwb3J0IGNsYXNzIERPTUNoYW5nZXMge1xuICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBudWxsO1xuICAgICAgICB0aGlzLnVzZWxlc3NFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB9XG4gICAgc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgc2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9XG4gICAgcmVtb3ZlQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKTtcbiAgICB9XG4gICAgY3JlYXRlVGV4dE5vZGUodGV4dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICB9XG4gICAgY3JlYXRlQ29tbWVudChkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZGF0YSk7XG4gICAgfVxuICAgIGNyZWF0ZUVsZW1lbnQodGFnLCBjb250ZXh0KSB7XG4gICAgICAgIGxldCBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSwgaXNIVE1MSW50ZWdyYXRpb25Qb2ludDtcbiAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gY29udGV4dC5uYW1lc3BhY2VVUkkgPT09IFNWR19OQU1FU1BBQ0UgfHwgdGFnID09PSAnc3ZnJztcbiAgICAgICAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBTVkdfSU5URUdSQVRJT05fUE9JTlRTW2NvbnRleHQudGFnTmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlICYmICFpc0hUTUxJbnRlZ3JhdGlvblBvaW50KSB7XG4gICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgPGZvbnQ+IHdpdGggY29sb3IsIGZhY2UsIG9yXG4gICAgICAgICAgICAvLyBzaXplIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIGFsc28gZGlzYWxsb3dlZCBieSB0aGUgc3BlYy4gV2Ugc2hvdWxkIGZpeFxuICAgICAgICAgICAgLy8gdGhpcy5cbiAgICAgICAgICAgIGlmIChCTEFDS0xJU1RfVEFCTEVbdGFnXSkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBhICR7dGFnfSBpbnNpZGUgYW4gU1ZHIGNvbnRleHRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTkFNRVNQQUNFLCB0YWcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0YWcpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydEhUTUxCZWZvcmUoX3BhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpIHtcbiAgICAgICAgcmV0dXJuIGluc2VydEhUTUxCZWZvcmUodGhpcy51c2VsZXNzRWxlbWVudCwgX3BhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgIH1cbiAgICBpbnNlcnROb2RlQmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIGlmIChpc0RvY3VtZW50RnJhZ21lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIGxldCB7IGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCB9ID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdENoaWxkLCBsYXN0Q2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHBhcmVudCwgbm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCB0ZXh0KSB7XG4gICAgICAgIGxldCB0ZXh0Tm9kZSA9IHRoaXMuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgdGV4dE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIHRleHROb2RlO1xuICAgIH1cbiAgICBpbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIGluc2VydEFmdGVyKGVsZW1lbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICB0aGlzLmluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLCByZWZlcmVuY2UubmV4dFNpYmxpbmcpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRIVE1MQmVmb3JlKF91c2VsZXNzLCBfcGFyZW50LCBfbmV4dFNpYmxpbmcsIGh0bWwpIHtcbiAgICAvLyBUeXBlU2NyaXB0IHZlbmRvcmVkIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSBET00gc3BlYyB3aGVyZSBgaW5zZXJ0QWRqYWNlbnRIVE1MYFxuICAgIC8vIG9ubHkgZXhpc3RzIG9uIGBIVE1MRWxlbWVudGAgYnV0IG5vdCBvbiBgRWxlbWVudGAuIFdlIGFjdHVhbGx5IHdvcmsgd2l0aCB0aGVcbiAgICAvLyBuZXdlciB2ZXJzaW9uIG9mIHRoZSBET00gQVBJIGhlcmUgKGFuZCBtb25rZXktcGF0Y2ggdGhpcyBtZXRob2QgaW4gYC4vY29tcGF0YFxuICAgIC8vIHdoZW4gd2UgZGV0ZWN0IG9sZGVyIGJyb3dzZXJzKS4gVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgdGhpcyBsaW1pdGF0aW9uLlxuICAgIGxldCBwYXJlbnQgPSBfcGFyZW50O1xuICAgIGxldCB1c2VsZXNzID0gX3VzZWxlc3M7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gX25leHRTaWJsaW5nO1xuICAgIGxldCBwcmV2ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgIGxldCBsYXN0O1xuICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBudWxsLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKG5leHRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgIHBhcmVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUVuZCcsIGh0bWwpO1xuICAgICAgICBsYXN0ID0gcGFyZW50Lmxhc3RDaGlsZDtcbiAgICB9IGVsc2UgaWYgKG5leHRTaWJsaW5nIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgICAgICBsYXN0ID0gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vbi1lbGVtZW50IG5vZGVzIGRvIG5vdCBzdXBwb3J0IGluc2VydEFkamFjZW50SFRNTCwgc28gYWRkIGFuXG4gICAgICAgIC8vIGVsZW1lbnQgYW5kIGNhbGwgaXQgb24gdGhhdCBlbGVtZW50LiBUaGVuIHJlbW92ZSB0aGUgZWxlbWVudC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhpcyBhbHNvIHByb3RlY3RzIEVkZ2UsIElFIGFuZCBGaXJlZm94IHcvbyB0aGUgaW5zcGVjdG9yIG9wZW5cbiAgICAgICAgLy8gZnJvbSBtZXJnaW5nIGFkamFjZW50IHRleHQgbm9kZXMuIFNlZSAuL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgudHNcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh1c2VsZXNzLCBuZXh0U2libGluZyk7XG4gICAgICAgIHVzZWxlc3MuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgICAgICBsYXN0ID0gdXNlbGVzcy5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh1c2VsZXNzKTtcbiAgICB9XG4gICAgbGV0IGZpcnN0ID0gcHJldiA/IHByZXYubmV4dFNpYmxpbmcgOiBwYXJlbnQuZmlyc3RDaGlsZDtcbiAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuZnVuY3Rpb24gaXNEb2N1bWVudEZyYWdtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFO1xufVxubGV0IGhlbHBlciA9IERPTUNoYW5nZXM7XG5oZWxwZXIgPSBkb21DaGFuZ2VzTm9kZU1lcmdpbmdGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1RhYmxlRWxlbWVudEZpeChkb2MsIGhlbHBlcik7XG5oZWxwZXIgPSBkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeChkb2MsIGhlbHBlciwgU1ZHX05BTUVTUEFDRSk7XG5leHBvcnQgZGVmYXVsdCBoZWxwZXI7XG5leHBvcnQgY29uc3QgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IERPTS5ET01UcmVlQ29uc3RydWN0aW9uOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vaGVscGVyLmpzIl0sIm5hbWVzIjpbImlzV2hpdGVzcGFjZSIsIm1vdmVOb2Rlc0JlZm9yZSIsImluc2VydEhUTUxCZWZvcmUiLCJTVkdfTkFNRVNQQUNFIiwiU1ZHX0lOVEVHUkFUSU9OX1BPSU5UUyIsImZvcmVpZ25PYmplY3QiLCJkZXNjIiwidGl0bGUiLCJCTEFDS0xJU1RfVEFCTEUiLCJPYmplY3QiLCJjcmVhdGUiLCJmb3JFYWNoIiwidGFnIiwiV0hJVEVTUEFDRSIsImRvYyIsImRvY3VtZW50Iiwic3RyaW5nIiwidGVzdCIsInNvdXJjZSIsInRhcmdldCIsIm5leHRTaWJsaW5nIiwiZmlyc3QiLCJmaXJzdENoaWxkIiwibGFzdCIsImN1cnJlbnQiLCJpbnNlcnRCZWZvcmUiLCJET01PcGVyYXRpb25zIiwiY29uc3RydWN0b3IiLCJ1c2VsZXNzRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjb250ZXh0IiwiaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UiLCJpc0hUTUxJbnRlZ3JhdGlvblBvaW50IiwibmFtZXNwYWNlVVJJIiwidGFnTmFtZSIsIkVycm9yIiwiY3JlYXRlRWxlbWVudE5TIiwicGFyZW50Iiwibm9kZSIsInJlZmVyZW5jZSIsIl9wYXJlbnQiLCJodG1sIiwiY3JlYXRlVGV4dE5vZGUiLCJ0ZXh0IiwiY3JlYXRlQ29tbWVudCIsImRhdGEiLCJET00iLCJUcmVlQ29uc3RydWN0aW9uIiwibmFtZXNwYWNlIiwic2V0QXR0cmlidXRlIiwiZWxlbWVudCIsIm5hbWUiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZU5TIiwiYXBwbGllZFRyZWVDb250cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb24iLCJET01DaGFuZ2VzIiwicmVtb3ZlQXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJpbnNlcnROb2RlQmVmb3JlIiwiaXNEb2N1bWVudEZyYWdtZW50IiwibGFzdENoaWxkIiwiaW5zZXJ0VGV4dEJlZm9yZSIsInRleHROb2RlIiwiaW5zZXJ0QWZ0ZXIiLCJfdXNlbGVzcyIsIl9uZXh0U2libGluZyIsInVzZWxlc3MiLCJwcmV2IiwicHJldmlvdXNTaWJsaW5nIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiSFRNTEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUiLCJoZWxwZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdCZ0JBLFksR0FBQUEsWTtRQUdBQyxlLEdBQUFBLGU7UUErR0FDLGdCLEdBQUFBLGdCOztBQWxJaEI7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ08sTUFBTUMsd0NBQWdCLDRCQUF0QjtBQUNQO0FBQ0EsTUFBTUMseUJBQXlCLEVBQUVDLGVBQWUsQ0FBakIsRUFBb0JDLE1BQU0sQ0FBMUIsRUFBNkJDLE9BQU8sQ0FBcEMsRUFBL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ08sTUFBTUMsNENBQWtCQyxPQUFPQyxNQUFQLENBQWMsSUFBZCxDQUF4QjtBQUNQLENBQUMsR0FBRCxFQUFNLEtBQU4sRUFBYSxZQUFiLEVBQTJCLE1BQTNCLEVBQW1DLElBQW5DLEVBQXlDLFFBQXpDLEVBQW1ELE1BQW5ELEVBQTJELElBQTNELEVBQWlFLEtBQWpFLEVBQXdFLElBQXhFLEVBQThFLElBQTlFLEVBQW9GLElBQXBGLEVBQTBGLE9BQTFGLEVBQW1HLElBQW5HLEVBQXlHLElBQXpHLEVBQStHLElBQS9HLEVBQXFILElBQXJILEVBQTJILElBQTNILEVBQWlJLElBQWpJLEVBQXVJLE1BQXZJLEVBQStJLElBQS9JLEVBQXFKLEdBQXJKLEVBQTBKLEtBQTFKLEVBQWlLLElBQWpLLEVBQXVLLFNBQXZLLEVBQWtMLE1BQWxMLEVBQTBMLE1BQTFMLEVBQWtNLE1BQWxNLEVBQTBNLElBQTFNLEVBQWdOLEdBQWhOLEVBQXFOLEtBQXJOLEVBQTROLE1BQTVOLEVBQW9PLEdBQXBPLEVBQXlPLE9BQXpPLEVBQWtQLE1BQWxQLEVBQTBQLFFBQTFQLEVBQW9RLFFBQXBRLEVB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QUNBbEIsZUFBTzRDLFFBQVFFLGVBQWY7QUFDQWhDLGVBQU9tQyxXQUFQLENBQW1CTCxPQUFuQjtBQUNIO0FBQ0QsUUFBSTlDLFFBQVErQyxPQUFPQSxLQUFLaEQsV0FBWixHQUEwQmlCLE9BQU9mLFVBQTdDO0FBQ0EsV0FBTywyQkFBbUJlLE1BQW5CLEVBQTJCaEIsS0FBM0IsRUFBa0NFLElBQWxDLENBQVA7QUFDSDtBQUNELFNBQVNxQyxrQkFBVCxDQUE0QnRCLElBQTVCLEVBQWtDO0FBQzlCLFdBQU9BLEtBQUttQyxRQUFMLEtBQWtCQyxLQUFLQyxzQkFBOUI7QUFDSDtBQUNELElBQUlDLFNBQVNwQixVQUFiO0FBQ0FvQixTQUFTLG9DQUF5QjlELEdBQXpCLEVBQThCOEQsTUFBOUIsQ0FBVDtBQUNBQSxTQUFTLDhCQUEwQjlELEdBQTFCLEVBQStCOEQsTUFBL0IsQ0FBVDtBQUNBQSxTQUFTLGlDQUF3QjlELEdBQXhCLEVBQTZCOEQsTUFBN0IsRUFBcUN6RSxhQUFyQyxDQUFUO2tCQUNleUUsTTtBQUNSLE1BQU1yQixvREFBc0JULElBQUlTLG1CQUFoQyIsImZpbGUiOiJsaWIvZG9tL2hlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzLCBTaW5nbGVOb2RlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1RhYmxlRWxlbWVudEZpeCwgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uVGFibGVFbGVtZW50Rml4IH0gZnJvbSAnLi4vY29tcGF0L2lubmVyLWh0bWwtZml4JztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgsIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvblN2Z0VsZW1lbnRGaXggfSBmcm9tICcuLi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4JztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4LCB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeCB9IGZyb20gJy4uL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50XG5jb25zdCBTVkdfSU5URUdSQVRJT05fUE9JTlRTID0geyBmb3JlaWduT2JqZWN0OiAxLCBkZXNjOiAxLCB0aXRsZTogMSB9O1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNhZGp1c3Qtc3ZnLWF0dHJpYnV0ZXNcbi8vIFRPRE86IEFkanVzdCBTVkcgYXR0cmlidXRlc1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG4vLyBUT0RPOiBBZGp1c3QgU1ZHIGVsZW1lbnRzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbmV4cG9ydCBjb25zdCBCTEFDS0xJU1RfVEFCTEUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuW1wiYlwiLCBcImJpZ1wiLCBcImJsb2NrcXVvdGVcIiwgXCJib2R5XCIsIFwiYnJcIiwgXCJjZW50ZXJcIiwgXCJjb2RlXCIsIFwiZGRcIiwgXCJkaXZcIiwgXCJkbFwiLCBcImR0XCIsIFwiZW1cIiwgXCJlbWJlZFwiLCBcImgxXCIsIFwiaDJcIiwgXCJoM1wiLCBcImg0XCIsIFwiaDVcIiwgXCJoNlwiLCBcImhlYWRcIiwgXCJoclwiLCBcImlcIiwgXCJpbWdcIiwgXCJsaVwiLCBcImxpc3RpbmdcIiwgXCJtYWluXCIsIFwibWV0YVwiLCBcIm5vYnJcIiwgXCJvbFwiLCBcInBcIiwgXCJwcmVcIiwgXCJydWJ5XCIsIFwic1wiLCBcInNtYWxsXCIsIFwic3BhblwiLCBcInN0cm9uZ1wiLCBcInN0cmlrZVwiLCBcInN1YlwiLCBcInN1cFwiLCBcInRhYmxlXCIsIFwidHRcIiwgXCJ1XCIsIFwidWxcIiwgXCJ2YXJcIl0uZm9yRWFjaCh0YWcgPT4gQkxBQ0tMSVNUX1RBQkxFW3RhZ10gPSAxKTtcbmNvbnN0IFdISVRFU1BBQ0UgPSAvW1xcdC1cXHIgXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1RkVGRl0vO1xubGV0IGRvYyA9IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogZG9jdW1lbnQ7XG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKHN0cmluZykge1xuICAgIHJldHVybiBXSElURVNQQUNFLnRlc3Qoc3RyaW5nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlTm9kZXNCZWZvcmUoc291cmNlLCB0YXJnZXQsIG5leHRTaWJsaW5nKSB7XG4gICAgbGV0IGZpcnN0ID0gc291cmNlLmZpcnN0Q2hpbGQ7XG4gICAgbGV0IGxhc3QgPSBudWxsO1xuICAgIGxldCBjdXJyZW50ID0gZmlyc3Q7XG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgbGFzdCA9IGN1cnJlbnQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRTaWJsaW5nO1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKGxhc3QsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG59XG5leHBvcnQgY2xhc3MgRE9NT3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLnVzZWxlc3NFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB9XG4gICAgY3JlYXRlRWxlbWVudCh0YWcsIGNvbnRleHQpIHtcbiAgICAgICAgbGV0IGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlLCBpc0hUTUxJbnRlZ3JhdGlvblBvaW50O1xuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSBjb250ZXh0Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSB8fCB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IFNWR19JTlRFR1JBVElPTl9QT0lOVFNbY29udGV4dC50YWdOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gdGFnID09PSAnc3ZnJztcbiAgICAgICAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSA8Zm9udD4gd2l0aCBjb2xvciwgZmFjZSwgb3JcbiAgICAgICAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAgICAgICAvLyB0aGlzLlxuICAgICAgICAgICAgaWYgKEJMQUNLTElTVF9UQUJMRVt0YWddKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGEgJHt0YWd9IGluc2lkZSBhbiBTVkcgY29udGV4dGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UsIHRhZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmZXJlbmNlKTtcbiAgICB9XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShfcGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICByZXR1cm4gaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLnVzZWxlc3NFbGVtZW50LCBfcGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgfVxuICAgIGNyZWF0ZVRleHROb2RlKHRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgfVxuICAgIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICAgIH1cbn1cbmV4cG9ydCB2YXIgRE9NO1xuKGZ1bmN0aW9uIChET00pIHtcbiAgICBjbGFzcyBUcmVlQ29uc3RydWN0aW9uIGV4dGVuZHMgRE9NT3BlcmF0aW9ucyB7XG4gICAgICAgIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBET00uVHJlZUNvbnN0cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG4gICAgbGV0IGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uTm9kZU1lcmdpbmdGaXgoZG9jLCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uKTtcbiAgICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvblRhYmxlRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24sIFNWR19OQU1FU1BBQ0UpO1xuICAgIERPTS5ET01UcmVlQ29uc3RydWN0aW9uID0gYXBwbGllZFRyZWVDb250cnVjdGlvbjtcbn0pKERPTSB8fCAoRE9NID0ge30pKTtcbmV4cG9ydCBjbGFzcyBET01DaGFuZ2VzIGV4dGVuZHMgRE9NT3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbnVsbDtcbiAgICB9XG4gICAgc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgc2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9XG4gICAgcmVtb3ZlQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKTtcbiAgICB9XG4gICAgaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICBpZiAoaXNEb2N1bWVudEZyYWdtZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBsZXQgeyBmaXJzdENoaWxkLCBsYXN0Q2hpbGQgfSA9IG5vZGU7XG4gICAgICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3RDaGlsZCwgbGFzdENoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydFRleHRCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgdGV4dCkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIHRleHROb2RlLCBuZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiB0ZXh0Tm9kZTtcbiAgICB9XG4gICAgaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgICBpbnNlcnRBZnRlcihlbGVtZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0SFRNTEJlZm9yZShfdXNlbGVzcywgX3BhcmVudCwgX25leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgLy8gVHlwZVNjcmlwdCB2ZW5kb3JlZCBhbiBvbGQgdmVyc2lvbiBvZiB0aGUgRE9NIHNwZWMgd2hlcmUgYGluc2VydEFkamFjZW50SFRNTGBcbiAgICAvLyBvbmx5IGV4aXN0cyBvbiBgSFRNTEVsZW1lbnRgIGJ1dCBub3Qgb24gYEVsZW1lbnRgLiBXZSBhY3R1YWxseSB3b3JrIHdpdGggdGhlXG4gICAgLy8gbmV3ZXIgdmVyc2lvbiBvZiB0aGUgRE9NIEFQSSBoZXJlIChhbmQgbW9ua2V5LXBhdGNoIHRoaXMgbWV0aG9kIGluIGAuL2NvbXBhdGBcbiAgICAvLyB3aGVuIHdlIGRldGVjdCBvbGRlciBicm93c2VycykuIFRoaXMgaXMgYSBoYWNrIHRvIHdvcmsgYXJvdW5kIHRoaXMgbGltaXRhdGlvbi5cbiAgICBsZXQgcGFyZW50ID0gX3BhcmVudDtcbiAgICBsZXQgdXNlbGVzcyA9IF91c2VsZXNzO1xuICAgIGxldCBuZXh0U2libGluZyA9IF9uZXh0U2libGluZztcbiAgICBsZXQgcHJldiA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICBsZXQgbGFzdDtcbiAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGlmIChuZXh0U2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IHBhcmVudC5sYXN0Q2hpbGQ7XG4gICAgfSBlbHNlIGlmIChuZXh0U2libGluZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIG5leHRTaWJsaW5nLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IG5leHRTaWJsaW5nLnByZXZpb3VzU2libGluZztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb24tZWxlbWVudCBub2RlcyBkbyBub3Qgc3VwcG9ydCBpbnNlcnRBZGphY2VudEhUTUwsIHNvIGFkZCBhblxuICAgICAgICAvLyBlbGVtZW50IGFuZCBjYWxsIGl0IG9uIHRoYXQgZWxlbWVudC4gVGhlbiByZW1vdmUgdGhlIGVsZW1lbnQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoaXMgYWxzbyBwcm90ZWN0cyBFZGdlLCBJRSBhbmQgRmlyZWZveCB3L28gdGhlIGluc3BlY3RvciBvcGVuXG4gICAgICAgIC8vIGZyb20gbWVyZ2luZyBhZGphY2VudCB0ZXh0IG5vZGVzLiBTZWUgLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LnRzXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodXNlbGVzcywgbmV4dFNpYmxpbmcpO1xuICAgICAgICB1c2VsZXNzLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IHVzZWxlc3MucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodXNlbGVzcyk7XG4gICAgfVxuICAgIGxldCBmaXJzdCA9IHByZXYgPyBwcmV2Lm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIGlzRG9jdW1lbnRGcmFnbWVudChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERTtcbn1cbmxldCBoZWxwZXIgPSBET01DaGFuZ2VzO1xuaGVscGVyID0gZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGRvbUNoYW5nZXNUYWJsZUVsZW1lbnRGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgoZG9jLCBoZWxwZXIsIFNWR19OQU1FU1BBQ0UpO1xuZXhwb3J0IGRlZmF1bHQgaGVscGVyO1xuZXhwb3J0IGNvbnN0IERPTVRyZWVDb25zdHJ1Y3Rpb24gPSBET00uRE9NVHJlZUNvbnN0cnVjdGlvbjsiXX0=

@@ -71,3 +71,8 @@ "use strict";

}
let string = JSON.stringify(param);
let string;
try {
string = JSON.stringify(param);
} catch (e) {
return '<cannot generate JSON>';
}
if (string === undefined) {

@@ -208,3 +213,3 @@ return 'undefined';

case 58 /* PushArgs */:
return ['PushArgs', { positional: op1, synthetic: !!op2 }];
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:

@@ -329,2 +334,2 @@ return ['PrepareArgs', { state: Register[op1] }];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImRlYnVnU2xpY2UiLCJpbnNwZWN0IiwiUmVnaXN0ZXIiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIm9wY29kZSIsIm5hbWUiLCJwYXJhbXMiLCJkZWJ1ZyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsIkdsaW1tZXJEZWJ1ZyIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiY29uc3RydWN0b3IiLCJldmFsdWF0ZU9wY29kZSIsInNsaWNlIiwiYWRkIiwiZXZhbHVhdGUiLCJ2bSIsImZ1bmMiLCJzdGFjayIsInRvQXJyYXkiLCJzY29wZSIsInMiLCJlbGVtZW50cyIsIkFQUEVORF9PUENPREVTIiwiQWJzdHJhY3RPcGNvZGUiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJVcGRhdGluZ09wY29kZSIsImFyZ3VtZW50cyIsIm5leHQiLCJwcmV2Iiwib3Bjb2RlcyIsImJ1ZmZlciIsImZvckVhY2giLCJfaW5zcGVjdCIsImxldmVsIiwiaW5kZXgiLCJpbmRlbnRhdGlvbiIsInB1c2giLCJkZXRhaWxzIiwibGVuZ3RoIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztRQXlCZ0JBLFUsR0FBQUEsVTtRQTRQQUMsTyxHQUFBQSxPOztBQXJSaEI7O0FBRUE7Ozs7OztBQU1PLElBQUlDLHVDQUFKO0FBQ1AsQ0FBQyxVQUFVQSxRQUFWLEVBQW9CO0FBQ2pCO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0gsQ0FmRCxFQWVHQSxxQkFoQlFBLFFBZ0JSLEdBQWFBLFdBQVcsRUFBeEIsQ0FmSDtBQWdCTyxTQUFTRixVQUFULENBQW9CRyxHQUFwQixFQUF5QkMsS0FBekIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ3hDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQjtBQUNBLFlBQUksRUFBRUMsT0FBRixFQUFXQyxTQUFYLEtBQXlCSixHQUE3QjtBQUNBO0FBQ0EsWUFBSSxPQUFPSyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2hDO0FBQ0g7QUFDRDtBQUNB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LE9BQU9RLElBQVgsRUFBaUI7QUFDYnVFLG1CQUFPTSxJQUFQLENBQVlyRixPQUFPUSxJQUFQLENBQVlNLElBQVosQ0FBaUIsSUFBakIsQ0FBWjtBQUNIO0FBQ0QsWUFBSWQsT0FBT3NGLE9BQVgsRUFBb0I7QUFDaEIsZ0JBQUk1RSxPQUFPRCxPQUFPQyxJQUFQLENBQVlWLE9BQU9zRixPQUFuQixDQUFYO0FBQ0EsZ0JBQUk1RSxLQUFLNkUsTUFBVCxFQUFpQjtBQUNiLG9CQUFJdkYsT0FBT1EsSUFBUCxJQUFlUixPQUFPUSxJQUFQLENBQVkrRSxNQUEvQixFQUF1QztBQUNuQ1IsMkJBQU9NLElBQVAsQ0FBWSxJQUFaO0FBQ0g7QUFDRE4sdUJBQU9NLElBQVAsQ0FBWTNFLEtBQUtDLEdBQUwsQ0FBU2lCLE9BQVEsR0FBRUEsR0FBSSxJQUFHNUIsT0FBT3NGLE9BQVAsSUFBa0J0RixPQUFPc0YsT0FBUCxDQUFlMUQsR0FBZixDQUFvQixFQUFoRSxFQUFtRWQsSUFBbkUsQ0FBd0UsSUFBeEUsQ0FBWjtBQUNIO0FBQ0o7QUFDRGlFLGVBQU9NLElBQVAsQ0FBWSxHQUFaO0FBQ0g7QUFDRE4sV0FBT00sSUFBUCxDQUFZLElBQVo7QUFDQSxRQUFJckYsT0FBT3dGLFFBQVAsSUFBbUJ4RixPQUFPd0YsUUFBUCxDQUFnQkQsTUFBdkMsRUFBK0M7QUFDM0MsYUFBSyxJQUFJNUYsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSyxPQUFPd0YsUUFBUCxDQUFnQkQsTUFBcEMsRUFBNEM1RixHQUE1QyxFQUFpRDtBQUM3Q3NGLHFCQUFTakYsT0FBT3dGLFFBQVAsQ0FBZ0I3RixDQUFoQixDQUFULEVBQTZCb0YsTUFBN0IsRUFBcUNHLFFBQVEsQ0FBN0MsRUFBZ0R2RixDQUFoRDtBQUNIO0FBQ0o7QUFDSiIsImZpbGUiOiJsaWIvb3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluaXRpYWxpemVHdWlkLCBmaWxsTnVsbHMsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbi8qKlxuICogUmVnaXN0ZXJzXG4gKlxuICogRm9yIHRoZSBtb3N0IHBhcnQsIHRoZXNlIGZvbGxvd3MgTUlQUyBuYW1pbmcgY29udmVudGlvbnMsIGhvd2V2ZXIgdGhlXG4gKiByZWdpc3RlciBudW1iZXJzIGFyZSBkaWZmZXJlbnQuXG4gKi9cbmV4cG9ydCB2YXIgUmVnaXN0ZXI7XG4oZnVuY3Rpb24gKFJlZ2lzdGVyKSB7XG4gICAgLy8gJDAgb3IgJHBjIChwcm9ncmFtIGNvdW50ZXIpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgbmV4dCBpbnN0dXJjdGlvbjsgLTEgbWVhbnMgZXhpdFxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicGNcIl0gPSAwXSA9IFwicGNcIjtcbiAgICAvLyAkMSBvciAkcmEgKHJldHVybiBhZGRyZXNzKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIHJldHVyblxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicmFcIl0gPSAxXSA9IFwicmFcIjtcbiAgICAvLyAkMiBvciAkZnAgKGZyYW1lIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgYmFzZSBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcImZwXCJdID0gMl0gPSBcImZwXCI7XG4gICAgLy8gJDMgb3IgJHNwIChzdGFjayBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInNwXCJdID0gM10gPSBcInNwXCI7XG4gICAgLy8gJDQtJDUgb3IgJHMwLSRzMSAoc2F2ZWQpOiBjYWxsZWUgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczBcIl0gPSA0XSA9IFwiczBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMxXCJdID0gNV0gPSBcInMxXCI7XG4gICAgLy8gJDYtJDcgb3IgJHQwLSR0MSAodGVtcG9yYXJpZXMpOiBjYWxsZXIgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDBcIl0gPSA2XSA9IFwidDBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQxXCJdID0gN10gPSBcInQxXCI7XG59KShSZWdpc3RlciB8fCAoUmVnaXN0ZXIgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlICovXG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWNvbnNvbGUgKi9cbiAgICB9XG59XG5mdW5jdGlvbiBsb2dPcGNvZGUodHlwZSwgcGFyYW1zKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBsZXQgb3V0ID0gdHlwZTtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChwID0+IGAgJHtwfT0ke2pzb24ocGFyYW1zW3BdKX1gKS5qb2luKCcnKTtcbiAgICAgICAgICAgIG91dCArPSBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgKCR7b3V0fSlgO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGpzb24ocGFyYW0pIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnPGZ1bmN0aW9uPic7XG4gICAgfVxuICAgIGxldCBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgbGV0IGRlYnVnID0gSlNPTi5wYXJzZShzdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgZGVidWcgPT09ICdvYmplY3QnICYmIGRlYnVnICE9PSBudWxsICYmIGRlYnVnLkdsaW1tZXJEZWJ1ZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Zy5HbGltbWVyRGVidWc7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlJywge31dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgcG9zaXRpb25hbDogb3AxLCBzeW50aGV0aWM6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImRlYnVnU2xpY2UiLCJpbnNwZWN0IiwiUmVnaXN0ZXIiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsIm9wY29kZSIsIm5hbWUiLCJwYXJhbXMiLCJkZWJ1ZyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiY29uc3RydWN0b3IiLCJldmFsdWF0ZU9wY29kZSIsInNsaWNlIiwiYWRkIiwiZXZhbHVhdGUiLCJ2bSIsImZ1bmMiLCJzdGFjayIsInRvQXJyYXkiLCJzY29wZSIsInMiLCJlbGVtZW50cyIsIkFQUEVORF9PUENPREVTIiwiQWJzdHJhY3RPcGNvZGUiLCJ0b0pTT04iLCJndWlkIiwiX2d1aWQiLCJVcGRhdGluZ09wY29kZSIsImFyZ3VtZW50cyIsIm5leHQiLCJwcmV2Iiwib3Bjb2RlcyIsImJ1ZmZlciIsImZvckVhY2giLCJfaW5zcGVjdCIsImxldmVsIiwiaW5kZXgiLCJpbmRlbnRhdGlvbiIsInB1c2giLCJkZXRhaWxzIiwibGVuZ3RoIiwiY2hpbGRyZW4iXSwibWFwcGluZ3MiOiI7Ozs7OztRQXlCZ0JBLFUsR0FBQUEsVTtRQWlRQUMsTyxHQUFBQSxPOztBQTFSaEI7O0FBRUE7Ozs7OztBQU1PLElBQUlDLHVDQUFKO0FBQ1AsQ0FBQyxVQUFVQSxRQUFWLEVBQW9CO0FBQ2pCO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0gsQ0FmRCxFQWVHQSxxQkFoQlFBLFFBZ0JSLEdBQWFBLFdBQVcsRUFBeEIsQ0FmSDtBQWdCTyxTQUFTRixVQUFULENBQW9CRyxHQUFwQixFQUF5QkMsS0FBekIsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ3hDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQjtBQUNBLFlBQUksRUFBRUMsT0FBRixFQUFXQyxTQUFYLEtBQXlCSixHQUE3QjtBQUNBO0FBQ0EsWUFBSSxPQUFPSyxPQUFQLEtBQW1CLFdBQXZCLEVBQW9DO0FBQ2hDO0FBQ0g7QUFDRDtBQUNBLFlBQUksT0FB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QUFtQztBQUMvQlAsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDQSxZQUFJckYsT0FBT1EsSUFBWCxFQUFpQjtBQUNidUUsbUJBQU9NLElBQVAsQ0FBWXJGLE9BQU9RLElBQVAsQ0FBWU0sSUFBWixDQUFpQixJQUFqQixDQUFaO0FBQ0g7QUFDRCxZQUFJZCxPQUFPc0YsT0FBWCxFQUFvQjtBQUNoQixnQkFBSTVFLE9BQU9ELE9BQU9DLElBQVAsQ0FBWVYsT0FBT3NGLE9BQW5CLENBQVg7QUFDQSxnQkFBSTVFLEtBQUs2RSxNQUFULEVBQWlCO0FBQ2Isb0JBQUl2RixPQUFPUSxJQUFQLElBQWVSLE9BQU9RLElBQVAsQ0FBWStFLE1BQS9CLEVBQXVDO0FBQ25DUiwyQkFBT00sSUFBUCxDQUFZLElBQVo7QUFDSDtBQUNETix1QkFBT00sSUFBUCxDQUFZM0UsS0FBS0MsR0FBTCxDQUFTa0IsT0FBUSxHQUFFQSxHQUFJLElBQUc3QixPQUFPc0YsT0FBUCxJQUFrQnRGLE9BQU9zRixPQUFQLENBQWV6RCxHQUFmLENBQW9CLEVBQWhFLEVBQW1FZixJQUFuRSxDQUF3RSxJQUF4RSxDQUFaO0FBQ0g7QUFDSjtBQUNEaUUsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDSDtBQUNETixXQUFPTSxJQUFQLENBQVksSUFBWjtBQUNBLFFBQUlyRixPQUFPd0YsUUFBUCxJQUFtQnhGLE9BQU93RixRQUFQLENBQWdCRCxNQUF2QyxFQUErQztBQUMzQyxhQUFLLElBQUk1RixJQUFJLENBQWIsRUFBZ0JBLElBQUlLLE9BQU93RixRQUFQLENBQWdCRCxNQUFwQyxFQUE0QzVGLEdBQTVDLEVBQWlEO0FBQzdDc0YscUJBQVNqRixPQUFPd0YsUUFBUCxDQUFnQjdGLENBQWhCLENBQVQsRUFBNkJvRixNQUE3QixFQUFxQ0csUUFBUSxDQUE3QyxFQUFnRHZGLENBQWhEO0FBQ0g7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgICBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gJzxjYW5ub3QgZ2VuZXJhdGUgSlNPTj4nO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBzeW50aGV0aWM6ICEhb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=

@@ -75,3 +75,3 @@ 'use strict';

static insert(dom, cursor, value) {
let bounds = dom.insertHTMLBefore(cursor.element, value, cursor.nextSibling);
let bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, value);
return new HTMLUpsert(bounds);

@@ -98,3 +98,3 @@ }

let stringValue = value.toHTML();
let bounds = dom.insertHTMLBefore(cursor.element, stringValue, cursor.nextSibling);
let bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, stringValue);
return new SafeStringUpsert(bounds, stringValue);

@@ -135,2 +135,2 @@ }

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsiaXNTYWZlU3RyaW5nIiwiaXNOb2RlIiwiaXNTdHJpbmciLCJjYXV0aW91c0luc2VydCIsInRydXN0aW5nSW5zZXJ0IiwidmFsdWUiLCJ0b0hUTUwiLCJub2RlVHlwZSIsIlVwc2VydCIsImNvbnN0cnVjdG9yIiwiYm91bmRzIiwiZG9tIiwiY3Vyc29yIiwiVGV4dFVwc2VydCIsImluc2VydCIsIlNhZmVTdHJpbmdVcHNlcnQiLCJOb2RlVXBzZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVnQkEsWSxHQUFBQSxZO1FBR0FDLE0sR0FBQUEsTTtRQUdBQyxRLEdBQUFBLFE7UUFTQUMsYyxHQUFBQSxjO1FBWUFDLGMsR0FBQUEsYzs7QUE3QmhCOztBQUNBOztBQUNPLFNBQVNKLFlBQVQsQ0FBc0JLLEtBQXRCLEVBQTZCO0FBQ2hDLFdBQU8sT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsVUFBVSxJQUF2QyxJQUErQyxPQUFPQSxNQUFNQyxNQUFiLEtBQXdCLFVBQTlFO0FBQ0g7QUFDTSxTQUFTTCxNQUFULENBQWdCSSxLQUFoQixFQUF1QjtBQUMxQixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUUsUUFBYixLQUEwQixRQUFoRjtBQUNIO0FBQ00sU0FBU0wsUUFBVCxDQUFrQkcsS0FBbEIsRUFBeUI7QUFDNUIsV0FBTyxPQUFPQSxLQUFQLEtBQWlCLFFBQXhCO0FBQ0g7QUFDRCxNQUFN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bUJBQU8sS0FBUDtBQUNIO0FBQ0o7QUF4QmlDO0FBMEJ0QyxNQUFNYixVQUFOLFNBQXlCUixNQUF6QixDQUFnQztBQUM1QixXQUFPTSxNQUFQLENBQWNILEdBQWQsRUFBbUJDLE1BQW5CLEVBQTJCa0IsSUFBM0IsRUFBaUM7QUFDN0JuQixZQUFJUyxZQUFKLENBQWlCUixPQUFPUyxPQUF4QixFQUFpQ1MsSUFBakMsRUFBdUNsQixPQUFPVSxXQUE5QztBQUNBLGVBQU8sSUFBSU4sVUFBSixDQUFlLG9CQUFPSixPQUFPUyxPQUFkLEVBQXVCUyxJQUF2QixDQUFmLENBQVA7QUFDSDtBQUNEUCxXQUFPWixHQUFQLEVBQVlOLEtBQVosRUFBbUI7QUFDZixZQUFJSixPQUFPSSxLQUFQLENBQUosRUFBbUI7QUFDZixnQkFBSSxFQUFFSyxNQUFGLEtBQWEsSUFBakI7QUFDQSxnQkFBSWlCLGdCQUFnQmpCLE9BQU9pQixhQUFQLEVBQXBCO0FBQ0EsZ0JBQUlMLGNBQWMsbUJBQU1aLE1BQU4sQ0FBbEI7QUFDQSxpQkFBS0EsTUFBTCxHQUFjQyxJQUFJb0IsZ0JBQUosQ0FBcUJKLGFBQXJCLEVBQW9DdEIsS0FBcEMsRUFBMkNpQixXQUEzQyxDQUFkO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFNBTkQsTUFNTztBQUNILG1CQUFPLEtBQVA7QUFDSDtBQUNKO0FBZjJCIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2xlYXIsIHNpbmdsZSwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsiaXNTYWZlU3RyaW5nIiwiaXNOb2RlIiwiaXNTdHJpbmciLCJjYXV0aW91c0luc2VydCIsInRydXN0aW5nSW5zZXJ0IiwidmFsdWUiLCJ0b0hUTUwiLCJub2RlVHlwZSIsIlVwc2VydCIsImNvbnN0cnVjdG9yIiwiYm91bmRzIiwiZG9tIiwiY3Vyc29yIiwiVGV4dFVwc2VydCIsImluc2VydCIsIlNhZmVTdHJpbmdVcHNlcnQiLCJOb2RlVXBzZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVnQkEsWSxHQUFBQSxZO1FBR0FDLE0sR0FBQUEsTTtRQUdBQyxRLEdBQUFBLFE7UUFTQUMsYyxHQUFBQSxjO1FBWUFDLGMsR0FBQUEsYzs7QUE3QmhCOztBQUNBOztBQUNPLFNBQVNKLFlBQVQsQ0FBc0JLLEtBQXRCLEVBQTZCO0FBQ2hDLFdBQU8sT0FBT0EsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsVUFBVSxJQUF2QyxJQUErQyxPQUFPQSxNQUFNQyxNQUFiLEtBQXdCLFVBQTlFO0FBQ0g7QUFDTSxTQUFTTCxNQUFULENBQWdCSSxLQUFoQixFQUF1QjtBQUMxQixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUUsUUFBYixLQUEwQixRQUFoRjtBQUNIO0FBQ00sU0FBU0wsUUFBVCxDQUFrQkcsS0FBbEIsRUFBeUI7QUFDNUIsV0FBTyxPQUFPQSxLQUFQLEtBQWlCLFFBQXhCO0FBQ0g7QUFDRCxNQUFN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QkFBTyxLQUFQO0FBQ0g7QUFDSjtBQXhCaUM7QUEwQnRDLE1BQU1iLFVBQU4sU0FBeUJSLE1BQXpCLENBQWdDO0FBQzVCLFdBQU9NLE1BQVAsQ0FBY0gsR0FBZCxFQUFtQkMsTUFBbkIsRUFBMkJrQixJQUEzQixFQUFpQztBQUM3Qm5CLFlBQUlTLFlBQUosQ0FBaUJSLE9BQU9TLE9BQXhCLEVBQWlDUyxJQUFqQyxFQUF1Q2xCLE9BQU9VLFdBQTlDO0FBQ0EsZUFBTyxJQUFJTixVQUFKLENBQWUsb0JBQU9KLE9BQU9TLE9BQWQsRUFBdUJTLElBQXZCLENBQWYsQ0FBUDtBQUNIO0FBQ0RQLFdBQU9aLEdBQVAsRUFBWU4sS0FBWixFQUFtQjtBQUNmLFlBQUlKLE9BQU9JLEtBQVAsQ0FBSixFQUFtQjtBQUNmLGdCQUFJLEVBQUVLLE1BQUYsS0FBYSxJQUFqQjtBQUNBLGdCQUFJaUIsZ0JBQWdCakIsT0FBT2lCLGFBQVAsRUFBcEI7QUFDQSxnQkFBSUwsY0FBYyxtQkFBTVosTUFBTixDQUFsQjtBQUNBLGlCQUFLQSxNQUFMLEdBQWNDLElBQUlvQixnQkFBSixDQUFxQkosYUFBckIsRUFBb0N0QixLQUFwQyxFQUEyQ2lCLFdBQTNDLENBQWQ7QUFDQSxtQkFBTyxJQUFQO0FBQ0gsU0FORCxNQU1PO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0o7QUFmMkIiLCJmaWxlIjoibGliL3Vwc2VydC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjbGVhciwgc2luZ2xlLCBTaW5nbGVOb2RlQm91bmRzIH0gZnJvbSAnLi9ib3VuZHMnO1xuZXhwb3J0IGZ1bmN0aW9uIGlzU2FmZVN0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS50b0hUTUwgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNOb2RlKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlLm5vZGVUeXBlID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1N0cmluZyh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnO1xufVxuY2xhc3MgVXBzZXJ0IHtcbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMpIHtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgVXBzZXJ0O1xuZXhwb3J0IGZ1bmN0aW9uIGNhdXRpb3VzSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFRleHRVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBTYWZlU3RyaW5nVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cnVzdGluZ0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBIVE1MVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gTm9kZVVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbn1cbmNsYXNzIFRleHRVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCB0ZXh0Tm9kZSA9IGRvbS5jcmVhdGVUZXh0Tm9kZSh2YWx1ZSk7XG4gICAgICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICBsZXQgYm91bmRzID0gbmV3IFNpbmdsZU5vZGVCb3VuZHMoY3Vyc29yLmVsZW1lbnQsIHRleHROb2RlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBUZXh0VXBzZXJ0KGJvdW5kcywgdGV4dE5vZGUpO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMsIHRleHROb2RlKSB7XG4gICAgICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgICAgIHRoaXMudGV4dE5vZGUgPSB0ZXh0Tm9kZTtcbiAgICB9XG4gICAgdXBkYXRlKF9kb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IHRleHROb2RlIH0gPSB0aGlzO1xuICAgICAgICAgICAgdGV4dE5vZGUubm9kZVZhbHVlID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIEhUTUxVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgY3Vyc29yLm5leHRTaWJsaW5nLCB2YWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgSFRNTFVwc2VydChib3VuZHMpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBTYWZlU3RyaW5nVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBjb25zdHJ1Y3Rvcihib3VuZHMsIGxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IGxhc3RTdHJpbmdWYWx1ZTtcbiAgICB9XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgICAgIGxldCBib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShjdXJzb3IuZWxlbWVudCwgY3Vyc29yLm5leHRTaWJsaW5nLCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgU2FmZVN0cmluZ1Vwc2VydChib3VuZHMsIHN0cmluZ1ZhbHVlKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICAgICAgaWYgKHN0cmluZ1ZhbHVlICE9PSB0aGlzLmxhc3RTdHJpbmdWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQsIG5leHRTaWJsaW5nLCBzdHJpbmdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBzdHJpbmdWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgTm9kZVVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgbm9kZSkge1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCBub2RlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IE5vZGVVcHNlcnQoc2luZ2xlKGN1cnNvci5lbGVtZW50LCBub2RlKSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICBsZXQgcGFyZW50RWxlbWVudCA9IGJvdW5kcy5wYXJlbnRFbGVtZW50KCk7XG4gICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnRFbGVtZW50LCB2YWx1ZSwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -21,10 +21,11 @@ 'use strict';

empty() {
this.setup(null, 0, true);
this.setup(null, true);
return this;
}
setup(stack, positionalCount, synthetic) {
setup(stack, synthetic) {
this.stack = stack;
let names = stack.fromTop(0);
let namedCount = names.length;
let start = positionalCount + namedCount + 1;
let positionalCount = stack.fromTop(namedCount + 1);
let start = positionalCount + namedCount + 2;
let positional = this.positional;

@@ -57,6 +58,3 @@ positional.setup(stack, start, positionalCount);

let { stack, length } = this;
let pops = length + 1;
while (--pops >= 0) {
stack.pop();
}
stack.pop(length + 2);
}

@@ -255,2 +253,2 @@ }

exports.default = new Arguments();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiQXJndW1lbnRzIiwiY29uc3RydWN0b3IiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJ0YWciLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicmVmZXJlbmNlcyIsInBvc2l0aW9uIiwiQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwic2xpY2VOYW1lIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZSIsIl9tYXAiLCJvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDTyxNQUFNQSxTQUFOLENBQWdCO0FBQ25CQyxrQkFBYztBQUNWLGFBQUtDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixJQUFJQyxtQkFBSixFQUFsQjtBQUNBLGFBQUtDLEtBQUwsR0FBYSxJQUFJQyxjQUFKLEVBQWI7QUFDSDtBQUNEQyxZQUFRO0FBQ0osYUFBS0MsS0FBTCxDQUFXLElBQVgsRUFBaUIsQ0FBakIsRUFBb0IsSUFBcEI7QUFDQSxlQUFPLElBQVA7QUFDSDtBQUNEQSxVQUFNTixLQUFOLEVBQWFPLGVBQWIsRUFBOEJDLFNBQTlCLEVBQXlDO0FBQ3JDLGFBQUtSLEtBQUwsR0FBYUEsS0FBYjtBQUNBLFlBQUlTLFFB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QUFrQ2lCLEdBQWxDLEVBQXVDO0FBQ25DLGdCQUFJWCxPQUFPVCxNQUFNb0IsQ0FBTixDQUFYO0FBQ0FnQixnQkFBSTNCLElBQUosSUFBWU8sV0FBV0ksQ0FBWCxFQUFjQyxLQUFkLEVBQVo7QUFDSDtBQUNELGVBQU9lLEdBQVA7QUFDSDtBQXhDd0I7a0JBMENkLElBQUkvQyxTQUFKLEUiLCJmaWxlIjoibGliL3ZtL2FyZ3VtZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50cygpO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzKCk7XG4gICAgfVxuICAgIGVtcHR5KCkge1xuICAgICAgICB0aGlzLnNldHVwKG51bGwsIDAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWxDb3VudCwgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgbGV0IG5hbWVzID0gc3RhY2suZnJvbVRvcCgwKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBzdGFydCA9IHBvc2l0aW9uYWxDb3VudCArIG5hbWVkQ291bnQgKyAxO1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICAgICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgc3RhcnQsIHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgICAgIG5hbWVkLnNldHVwKHN0YWNrLCBuYW1lZENvdW50LCBuYW1lcywgc3ludGhldGljKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5hdChwb3MpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lZC5nZXQobmFtZSk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC5jYXB0dXJlKCksXG4gICAgICAgICAgICBuYW1lZDogdGhpcy5uYW1lZC5jYXB0dXJlKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGxldCBwb3BzID0gbGVuZ3RoICsgMTtcbiAgICAgICAgd2hpbGUgKC0tcG9wcyA+PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG4gICAgICAgIGlmICghdGFnKSB7XG4gICAgICAgICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgbGV0IHsgc3RhcnQsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy9cbiAgICAgICAgLy8gYXQoMCkgPT09IHBvczEgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIC8vIGF0KDEpID09PSBwb3MyID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBhdCgyKSA9PT0gcG9zMyA9PT0gdG9wIC0gKHN0YXJ0IC0gMilcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBzdGFydCAtIHBvc2l0aW9uIC0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHModGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgcmVmZXJlbmNlcywgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZU9mKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgfVxufVxuY2xhc3MgTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgbGVuZ3RoLCBuYW1lcywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICBpZiAoc3ludGhldGljKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBuYW1lcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgbmFtZXMoKSB7XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuICAgICAgICBpZiAoIW5hbWVzKSB7XG4gICAgICAgICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fcmVhbE5hbWVzLm1hcCh0aGlzLnNsaWNlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vIG5hbWVkRGljdDogeyBuYW1lZDE6IDEsIG5hbWVkMjogMCB9O1xuICAgICAgICAvL1xuICAgICAgICAvLyBnZXQoJ25hbWVkMScpID09PSBuYW1lZDEgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGdldCgnbmFtZWQyJykgPT09IG5hbWVkMiA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBsZW5ndGggLSBpZHg7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5nZXQobmFtZXNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbiAgICBzbGljZU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWVzLCByZWZlcmVuY2VzKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgbWFwKCkge1xuICAgICAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuICAgICAgICBpZiAoIW1hcCkge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgICAgICBtYXBbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiQXJndW1lbnRzIiwiY29uc3RydWN0b3IiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwicG9zaXRpb25hbENvdW50Iiwic3RhcnQiLCJ0YWciLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwiY2xlYXIiLCJwb3AiLCJfdGFnIiwiX3JlZmVyZW5jZXMiLCJyZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJBcnJheSIsImkiLCJ2YWx1ZSIsIm1hcCIsInZhbHVlT2YiLCJjcmVhdGUiLCJpZHgiLCJwYXJzZUludCIsInJlZmVyZW5jZSIsIl9uYW1lcyIsIl9yZWFsTmFtZXMiLCJzbGljZU5hbWUiLCJoYXMiLCJpbmRleE9mIiwiQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyIsInNsaWNlIiwiX21hcCIsIm91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNPLE1BQU1BLFNBQU4sQ0FBZ0I7QUFDbkJDLGtCQUFjO0FBQ1YsYUFBS0MsS0FBTCxHQUFhLElBQWI7QUFDQSxhQUFLQyxVQUFMLEdBQWtCLElBQUlDLG1CQUFKLEVBQWxCO0FBQ0EsYUFBS0MsS0FBTCxHQUFhLElBQUlDLGNBQUosRUFBYjtBQUNIO0FBQ0RDLFlBQVE7QUFDSixhQUFLQyxLQUFMLENBQVcsSUFBWCxFQUFpQixJQUFqQjtBQUNBLGVBQU8sSUFBUDtBQUNIO0FBQ0RBLFVBQU1OLEtBQU4sRUFBYU8sU0FBYixFQUF3QjtBQUNwQixhQUFLUCxLQUFMLEdBQWFBLEtBQWI7QUFDQSxZQUFJUSxRQUFRUixNQUFNUyxPQUFOLENBQWMsQ0FBZCxDQUFaO0FB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QU1vQixDQUFOLENBQVg7QUFDQWdCLGdCQUFJMUIsSUFBSixJQUFZTSxXQUFXSSxDQUFYLEVBQWNDLEtBQWQsRUFBWjtBQUNIO0FBQ0QsZUFBT2UsR0FBUDtBQUNIO0FBeEN3QjtrQkEwQ2QsSUFBSTlDLFNBQUosRSIsImZpbGUiOiJsaWIvdm0vYXJndW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHMoKTtcbiAgICB9XG4gICAgZW1wdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0dXAobnVsbCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgbGV0IG5hbWVzID0gc3RhY2suZnJvbVRvcCgwKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBzdGFjay5mcm9tVG9wKG5hbWVkQ291bnQgKyAxKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcG9zaXRpb25hbENvdW50ICsgbmFtZWRDb3VudCArIDI7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgICAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBzdGFydCwgcG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICAgICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQ291bnQsIG5hbWVzLCBzeW50aGV0aWMpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvcykge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0KHBvcyk7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVkLmdldChuYW1lKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZzogdGhpcy50YWcsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKSxcbiAgICAgICAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLmNhcHR1cmUoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgc3RhY2sucG9wKGxlbmd0aCArIDIpO1xuICAgIH1cbn1cbmNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG4gICAgICAgIGlmICghdGFnKSB7XG4gICAgICAgICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgbGV0IHsgc3RhcnQsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy9cbiAgICAgICAgLy8gYXQoMCkgPT09IHBvczEgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIC8vIGF0KDEpID09PSBwb3MyID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBhdCgyKSA9PT0gcG9zMyA9PT0gdG9wIC0gKHN0YXJ0IC0gMilcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBzdGFydCAtIHBvc2l0aW9uIC0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHModGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgcmVmZXJlbmNlcywgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZU9mKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgfVxufVxuY2xhc3MgTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgbGVuZ3RoLCBuYW1lcywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICBpZiAoc3ludGhldGljKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBuYW1lcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgbmFtZXMoKSB7XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuICAgICAgICBpZiAoIW5hbWVzKSB7XG4gICAgICAgICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fcmVhbE5hbWVzLm1hcCh0aGlzLnNsaWNlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vIG5hbWVkRGljdDogeyBuYW1lZDE6IDEsIG5hbWVkMjogMCB9O1xuICAgICAgICAvL1xuICAgICAgICAvLyBnZXQoJ25hbWVkMScpID09PSBuYW1lZDEgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGdldCgnbmFtZWQyJykgPT09IG5hbWVkMiA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBsZW5ndGggLSBpZHg7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5nZXQobmFtZXNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbiAgICBzbGljZU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWVzLCByZWZlcmVuY2VzKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgbWFwKCkge1xuICAgICAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuICAgICAgICBpZiAoIW1hcCkge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgICAgICBtYXBbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==

@@ -99,5 +99,5 @@ "use strict";

DOMTreeConstructionWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
DOMTreeConstructionWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, referenceNode, html) {
if (html === null || html === '') {
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, referenceNode, html);
}

@@ -107,5 +107,5 @@ var parentTag = parent.tagName.toLowerCase();

if (wrapper === undefined) {
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, referenceNode, html);
}
return fixInnerHTML(parent, wrapper, div, html, reference);
return fixInnerHTML(parent, wrapper, div, html, referenceNode);
};

@@ -142,2 +142,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiXSwibmFtZXMiOlsiQ29uY3JldGVCb3VuZHMiLCJtb3ZlTm9kZXNCZWZvcmUiLCJpbm5lckhUTUxXcmFwcGVyIiwiY29sZ3JvdXAiLCJkZXB0aCIsImJlZm9yZSIsImFmdGVyIiwidGFibGUiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ciIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJwYXJlbnRUYWciLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJ3cmFwcGVyIiwidW5kZWZpbmVkIiwiZml4SW5uZXJIVE1MIiwidHJlZUNvbnN0cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZSIsIndyYXBwZWRIdG1sIiwiaW5uZXJIVE1MIiwicGFyZW50Tm9kZSIsImkiLCJjaGlsZE5vZGVzIiwiZmlyc3QiLCJsYXN0IiwiZSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7UUFpQk8sQUFBUztRQW9CVCxBQUFTOztBQXJDaEIsQUFBUyxBQUFzQjs7QUFDL0IsQUFBUyxBQUF1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNoQyxJQUFJO2NBQ1UsRUFBRSxPQUFGLEFBQVMsR0FBRyxRQUFaLEFBQW9CLHFCQUFxQixPQURoQyxBQUNULEFBQWdELEFBQzFEO1dBQU8sRUFBRSxPQUFGLEFBQVMsR0FBRyxRQUFaLEFBQW9CLFdBQVcsT0FGbkIsQUFFWixBQUFzQyxBQUM3QztXQUFPLEVBQUUsT0FBRixBQUFTLEdBQUcsUUFBWixBQUFvQixrQkFBa0IsT0FIMUIsQUFHWixBQUE2QyxBQUNwRDtXQUFPLEVBQUUsT0FBRixBQUFTLEdBQUcsUUFBWixBQUFvQixrQkFBa0IsT0FKMUIsQUFJ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QUF4QixBQUFhLEFBQXNCLEFBQ3RDO0FBTndEOzsyQkFPckMsNkJBQUEsQUFBZ0IsWUFBaEIsQUFBNEIsUUFQUyxBQU9yQyxBQUFvQztRQVBDLEFBT3BELHlCQVBvRDtRQUFBLEFBTzdDLHdCQUNaOztXQUFPLEFBQUksMkJBQUosQUFBbUIsUUFBbkIsQUFBMkIsT0FBbEMsQUFBTyxBQUFrQyxBQUM1Qzs7QUFDRCxTQUFBLEFBQVMsZUFBVCxBQUF3QixVQUFVLEFBQzlCO1FBQUksUUFBUSxTQUFBLEFBQVMsY0FBckIsQUFBWSxBQUF1QixBQUNuQztRQUFJLEFBQ0E7Y0FBQSxBQUFNLFlBQU4sQUFBa0IsQUFDckI7QUFGRCxNQUVFLE9BQUEsQUFBTyxHQUFHLEFBQUUsQ0FGZCxVQUV1QixBQUNuQjtZQUFJLE1BQUEsQUFBTSxXQUFOLEFBQWlCLFdBQXJCLEFBQWdDLEdBQUcsQUFDL0I7QUFDQTttQkFBQSxBQUFPLEFBQ1Y7QUFDSjtBQUNEO1dBQUEsQUFBTyxBQUNWIiwiZmlsZSI6ImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmxldCBpbm5lckhUTUxXcmFwcGVyID0ge1xuICAgIGNvbGdyb3VwOiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PGNvbGdyb3VwPicsIGFmdGVyOiAnPC9jb2xncm91cD48L3RhYmxlPicgfSxcbiAgICB0YWJsZTogeyBkZXB0aDogMSwgYmVmb3JlOiAnPHRhYmxlPicsIGFmdGVyOiAnPC90YWJsZT4nIH0sXG4gICAgdGJvZHk6IHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+JywgYWZ0ZXI6ICc8L3Rib2R5PjwvdGFibGU+JyB9LFxuICAgIHRmb290OiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRmb290PicsIGFmdGVyOiAnPC90Zm9vdD48L3RhYmxlPicgfSxcbiAgICB0aGVhZDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0aGVhZD4nLCBhZnRlcjogJzwvdGhlYWQ+PC90YWJsZT4nIH0sXG4gICAgdHI6IHsgZGVwdGg6IDMsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+PHRyPicsIGFmdGVyOiAnPC90cj48L3Rib2R5PjwvdGFibGU+JyB9XG59O1xuLy8gUGF0Y2g6ICAgIGlubmVySFRNTCBGaXhcbi8vIEJyb3dzZXJzOiBJRTlcbi8vIFJlYXNvbjogICBJRTkgZG9uJ3QgYWxsb3cgdXMgdG8gc2V0IGlubmVySFRNTCBvbiBjb2wsIGNvbGdyb3VwLCBmcmFtZXNldCxcbi8vICAgICAgICAgICBodG1sLCBzdHlsZSwgdGFibGUsIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRpdGxlLCB0ci5cbi8vIEZpeDogICAgICBXcmFwIHRoZSBpbm5lckhUTUwgd2UgYXJlIGFib3V0IHRvIHNldCBpbiBpdHMgcGFyZW50cywgYXBwbHkgdGhlXG4vLyAgICAgICAgICAgd3JhcHBlZCBpbm5lckhUTUwgb24gYSBkaXYsIHRoZW4gbW92ZSB0aGUgdW53cmFwcGVkIG5vZGVzIGludG8gdGhlXG4vLyAgICAgICAgICAgdGFyZ2V0IHBvc2l0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGRvbUNoYW5nZXMoZG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzcykge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXJlbnRUYWcgPSBwYXJlbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSBpbm5lckhUTUxXcmFwcGVyW3BhcmVudFRhZ107XG4gICAgICAgICAgICBpZiAod3JhcHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCBuZXh0U2libGluZyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQsIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcykge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01UcmVlQ29uc3RydWN0aW9uV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKSB7XG4gICAgbGV0IHdyYXBwZWRIdG1sID0gd3JhcHBlci5iZWZvcmUgKyBodG1sICsgd3JhcHBlci5hZnRlcjtcbiAgICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBkaXY7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3cmFwcGVyLmRlcHRoOyBpKyspIHtcbiAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1swXTtcbiAgICB9XG4gICAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUocGFyZW50Tm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCkge1xuICAgIGxldCB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgdHJ5IHtcbiAgICAgICAgdGFibGUuaW5uZXJIVE1MID0gJzx0Ym9keT48L3Rib2R5Pic7XG4gICAgfSBjYXRjaCAoZSkge30gZmluYWxseSB7XG4gICAgICAgIGlmICh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgLy8gSXQgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiXSwibmFtZXMiOlsiQ29uY3JldGVCb3VuZHMiLCJtb3ZlTm9kZXNCZWZvcmUiLCJpbm5lckhUTUxXcmFwcGVyIiwiY29sZ3JvdXAiLCJkZXB0aCIsImJlZm9yZSIsImFmdGVyIiwidGFibGUiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ciIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJwYXJlbnRUYWciLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJ3cmFwcGVyIiwidW5kZWZpbmVkIiwiZml4SW5uZXJIVE1MIiwidHJlZUNvbnN0cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2UiLCJ3cmFwcGVkSHRtbCIsImlubmVySFRNTCIsInBhcmVudE5vZGUiLCJpIiwiY2hpbGROb2RlcyIsImZpcnN0IiwibGFzdCIsImUiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O1FBaUJPLEFBQVM7UUFvQlQsQUFBUzs7QUFyQ2hCLEFBQVMsQUFBc0I7O0FBQy9CLEFBQVMsQUFBdUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDaEMsSUFBSTtjQUNVLEVBQUUsT0FBRixBQUFTLEdBQUcsUUFBWixBQUFvQixxQkFBcUIsT0FEaEMsQUFDVCxBQUFnRCxBQUMxRDtXQUFPLEVBQUUsT0FBRixBQUFTLEdBQUcsUUFBWixBQUFvQixXQUFXLE9BRm5CLEFBRVosQUFBc0MsQUFDN0M7V0FBTyxFQUFFLE9BQUYsQUFBUyxHQUFHLFFBQVosQUFBb0Isa0JBQWtCLE9BSDFCLEFBR1osQUFBNkMsQUFDcEQ7V0FBTyxFQUFFLE9BQUYsQUFBUyxHQUFHLFFBQVosQUFBb0Is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QkFBYSxXQUFBLEFBQVcsV0FBeEIsQUFBYSxBQUFzQixBQUN0QztBQU53RDs7MkJBT3JDLDZCQUFBLEFBQWdCLFlBQWhCLEFBQTRCLFFBUFMsQUFPckMsQUFBb0M7UUFQQyxBQU9wRCx5QkFQb0Q7UUFBQSxBQU83Qyx3QkFDWjs7V0FBTyxBQUFJLDJCQUFKLEFBQW1CLFFBQW5CLEFBQTJCLE9BQWxDLEFBQU8sQUFBa0MsQUFDNUM7O0FBQ0QsU0FBQSxBQUFTLGVBQVQsQUFBd0IsVUFBVSxBQUM5QjtRQUFJLFFBQVEsU0FBQSxBQUFTLGNBQXJCLEFBQVksQUFBdUIsQUFDbkM7UUFBSSxBQUNBO2NBQUEsQUFBTSxZQUFOLEFBQWtCLEFBQ3JCO0FBRkQsTUFFRSxPQUFBLEFBQU8sR0FBRyxBQUFFLENBRmQsVUFFdUIsQUFDbkI7WUFBSSxNQUFBLEFBQU0sV0FBTixBQUFpQixXQUFyQixBQUFnQyxHQUFHLEFBQy9CO0FBQ0E7bUJBQUEsQUFBTyxBQUNWO0FBQ0o7QUFDRDtXQUFBLEFBQU8sQUFDViIsImZpbGUiOiJsaWIvY29tcGF0L2lubmVyLWh0bWwtZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5sZXQgaW5uZXJIVE1MV3JhcHBlciA9IHtcbiAgICBjb2xncm91cDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjxjb2xncm91cD4nLCBhZnRlcjogJzwvY29sZ3JvdXA+PC90YWJsZT4nIH0sXG4gICAgdGFibGU6IHsgZGVwdGg6IDEsIGJlZm9yZTogJzx0YWJsZT4nLCBhZnRlcjogJzwvdGFibGU+JyB9LFxuICAgIHRib2R5OiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5PicsIGFmdGVyOiAnPC90Ym9keT48L3RhYmxlPicgfSxcbiAgICB0Zm9vdDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0Zm9vdD4nLCBhZnRlcjogJzwvdGZvb3Q+PC90YWJsZT4nIH0sXG4gICAgdGhlYWQ6IHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGhlYWQ+JywgYWZ0ZXI6ICc8L3RoZWFkPjwvdGFibGU+JyB9LFxuICAgIHRyOiB7IGRlcHRoOiAzLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5Pjx0cj4nLCBhZnRlcjogJzwvdHI+PC90Ym9keT48L3RhYmxlPicgfVxufTtcbi8vIFBhdGNoOiAgICBpbm5lckhUTUwgRml4XG4vLyBCcm93c2VyczogSUU5XG4vLyBSZWFzb246ICAgSUU5IGRvbid0IGFsbG93IHVzIHRvIHNldCBpbm5lckhUTUwgb24gY29sLCBjb2xncm91cCwgZnJhbWVzZXQsXG4vLyAgICAgICAgICAgaHRtbCwgc3R5bGUsIHRhYmxlLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0aXRsZSwgdHIuXG4vLyBGaXg6ICAgICAgV3JhcCB0aGUgaW5uZXJIVE1MIHdlIGFyZSBhYm91dCB0byBzZXQgaW4gaXRzIHBhcmVudHMsIGFwcGx5IHRoZVxuLy8gICAgICAgICAgIHdyYXBwZWQgaW5uZXJIVE1MIG9uIGEgZGl2LCB0aGVuIG1vdmUgdGhlIHVud3JhcHBlZCBub2RlcyBpbnRvIHRoZVxuLy8gICAgICAgICAgIHRhcmdldCBwb3NpdGlvbi5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFyZW50VGFnID0gcGFyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCB3cmFwcGVyID0gaW5uZXJIVE1MV3JhcHBlcltwYXJlbnRUYWddO1xuICAgICAgICAgICAgaWYgKHdyYXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXR1cm4gY2xhc3MgRE9NVHJlZUNvbnN0cnVjdGlvbldpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlTm9kZSwgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZU5vZGUsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZU5vZGUsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlTm9kZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICBsZXQgd3JhcHBlZEh0bWwgPSB3cmFwcGVyLmJlZm9yZSArIGh0bWwgKyB3cmFwcGVyLmFmdGVyO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IGRpdjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdyYXBwZXIuZGVwdGg7IGkrKykge1xuICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgIH1cbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShwYXJlbnROb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSB7XG4gICAgbGV0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICB0cnkge1xuICAgICAgICB0YWJsZS5pbm5lckhUTUwgPSAnPHRib2R5PjwvdGJvZHk+JztcbiAgICB9IGNhdGNoIChlKSB7fSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==

@@ -95,8 +95,8 @@ "use strict";

TreeConstructionWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
TreeConstructionWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, reference, html) {
if (html === null || html === '') {
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
}
if (parent.namespaceURI !== svgNamespace) {
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
}

@@ -137,2 +137,2 @@ return fixSVG(parent, div, html, reference);

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4LmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwibW92ZU5vZGVzQmVmb3JlIiwiU1ZHX05BTUVTUEFDRSIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInN2Z05hbWVzcGFjZSIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJuYW1lc3BhY2VVUkkiLCJmaXhTVkciLCJ0cmVlQ29uc3RydWN0aW9uIiwiVHJlZUNvbnN0cnVjdGlvbkNsYXNzIiwicmVmZXJlbmNlIiwid3JhcHBlZEh0bWwiLCJpbm5lckhUTUwiLCJmaXJzdENoaWxkIiwiZmlyc3QiLCJsYXN0Iiwic3ZnIiwiY3JlYXRlRWxlbWVudE5TIiwiZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWVPLEFBQVM7UUFrQlQsQUFBUzs7QUFqQ2hCLEFBQVMsQUFBc0I7O0FBQy9CLEFBQVMsQUFBdUIsQUFFaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxJQUFNLHdDQUFOLEFBQXNCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUFDQTtBQUFPLG9CQUFBLEFBQW9CLFVBQXBCLEFBQThCLGlCQUE5QixBQUErQyxjQUFjLEFBQ2hFO1FBQUksQ0FBSixBQUFLLFVBQVUsT0FBQSxBQUFPLEFBQ3RCO1FBQUksQ0FBQyxlQUFBLEFBQWUsVUFBcEIsQUFBSyxBQUF5QixlQUFlLEFBQ3pDO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7UUFBSSxNQUFNLFNBQUEsQUFBUyxjQUFuQixBQUFVLEFBQXVCLEFBQ2pDO3VDQUFBO2lEQUFBOztpREFBQTtrQ0FBQTs7aUZBQUE7QUFBQTs7Z0RBQUEsQUFDSSw2Q0FESixBQUNxQixRQURyQixBQUM2QixhQUQ3QixBQUMwQyxNQUFNLEFBQ3hDO2dCQUFJLFNBQUEsQUFBUyxRQUFRLFNBQXJCLEFBQThCLElBQUksQUFDOUI7dUJBQU8sMkJBQUEsQUFBTSw0QkFBTixBQUF1QixRQUF2QixBQUErQixhQUF0QyxBQUFPLEFBQTRDLEFBQ3REO0FBQ0Q7Z0JBQUksT0FBQSxBQUFPLGlCQUFYLEFBQTRCLGNBQWMsQUFDdEM7dUJBQU8sMkJBQUEsQUFBTSw0QkFBTixBQUF1QixRQUF2QixBQUErQixhQUF0QyxBQUFPLEFBQTRDLEFBQ3REO0FBQ0Q7bUJBQU8sT0FBQSxBQUFPLFFBQVAsQUFBZSxLQUFmLEFBQW9CLE1BQTNCLEFBQU8sQUFBMEIsQUFDcEM7QUFUTDs7ZUFBQTtNQUFBLEFBQW1ELEFBV3REO0FBQ0Q7QUFBTywwQkFBQSxBQUEwQixVQUExQixBQUFvQyx1QkFBcEMsQUFBMkQsY0FBYyxBQUM1RTtRQUFJLENBQUosQUFBSyxVQUFVLE9BQUEsQUFBTyxBQUN0QjtRQUFJLENBQUMsZUFBQSxBQUFlLFVBQXBCLEFBQUssQUFBeUIsZUFBZSxBQUN6QztlQUFBLEFBQU8sQUFDVjtBQUNEO1FBQUksTUFBTSxTQUFBLEFBQVMsY0FBbkIsQUFBVSxBQUF1QixBQUNqQzs0Q0FBQTt1REFBQTs7dURBQUE7a0NBQUE7O3NGQUFBO0FBQUE7O3NEQUFBLEFBQ0ksNkNBREosQUFDcUIsUUFEckIsQUFDNkIsTUFEN0IsQUFDbUMsV0FBVyxBQUN0QztnQkFBSSxTQUFBLEFBQVMsUUFBUSxTQUFyQixBQUE4QixJQUFJLEFBQzlCO3VCQUFPLGdDQUFBLEFBQU0sNEJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsTUFBdEMsQUFBTyxBQUFxQyxBQUMvQztBQUNEO2dCQUFJLE9BQUEsQUFBTyxpQkFBWCxBQUE0QixjQUFjLEFBQ3RDO3VCQUFPLGdDQUFBLEFBQU0sNEJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsTUFBdEMsQUFBTyxBQUFxQyxBQUMvQztBQUNEO21CQUFPLE9BQUEsQUFBTyxRQUFQLEFBQWUsS0FBZixBQUFvQixNQUEzQixBQUFPLEFBQTBCLEFBQ3BDO0FBVEw7O2VBQUE7TUFBQSxBQUF5RCxBQVc1RDs7QUFDRCxTQUFBLEFBQVMsT0FBVCxBQUFnQixRQUFoQixBQUF3QixLQUF4QixBQUE2QixNQUE3QixBQUFtQyxXQUFXLEFBQzFDO0FBQ0E7QUFDQTtRQUFJLGNBQWMsVUFBQSxBQUFVLE9BQTVCLEFBQW1DLEFBQ25DO1FBQUEsQUFBSSxZQUpzQyxBQUkxQyxBQUFnQjs7MkJBQ0ksNkJBQWdCLElBQWhCLEFBQW9CLFlBQXBCLEFBQWdDLFFBTFYsQUFLdEIsQUFBd0M7UUFMbEIsQUFLckMseUJBTHFDO1FBQUEsQUFLOUIsd0JBQ1o7O1dBQU8sQUFBSSwyQkFBSixBQUFtQixRQUFuQixBQUEyQixPQUFsQyxBQUFPLEFBQWtDLEFBQzVDOztBQUNELFNBQUEsQUFBUyxlQUFULEFBQXdCLFVBQXhCLEFBQWtDLGNBQWMsQUFDNUM7UUFBSSxNQUFNLFNBQUEsQUFBUyxnQkFBVCxBQUF5QixjQUFuQyxBQUFVLEFBQXVDLEFBQ2pEO1FBQUksQUFDQTtZQUFBLEFBQUksc0JBQUosQUFBMEIsYUFBMUIsQUFBdUMsQUFDMUM7QUFGRCxNQUVFLE9BQUEsQUFBTyxHQUFHLEFBQ1I7QUFDQTtBQUNIO0FBTEQsY0FLVSxBQUNOO0FBQ0E7WUFBSSxJQUFBLEFBQUksV0FBSixBQUFlLFdBQWYsQUFBMEIsS0FBWSxJQUFQLEFBQVcsV0FBWCxBQUF1QixpQkFBMUQsQUFBMkUsZUFBZSxBQUN0RjtBQUNBO21CQUFBLEFBQU8sQUFDVjtBQUNEO2VBQUEsQUFBTyxBQUNWO0FBQ0oiLCJmaWxlIjoibGliL2NvbXBhdC9zdmctaW5uZXItaHRtbC1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IHVud3JhcCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudCwgRE9NQ2hhbmdlc0NsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudCwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gICAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSB7XG4gICAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcbiAgICB0cnkge1xuICAgICAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICAgICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiB1bndyYXAoc3ZnLmZpcnN0Q2hpbGQpLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSkge1xuICAgICAgICAgICAgLy8gVGhlIHRlc3Qgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4LmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwibW92ZU5vZGVzQmVmb3JlIiwiU1ZHX05BTUVTUEFDRSIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInN2Z05hbWVzcGFjZSIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJuYW1lc3BhY2VVUkkiLCJmaXhTVkciLCJ0cmVlQ29uc3RydWN0aW9uIiwiVHJlZUNvbnN0cnVjdGlvbkNsYXNzIiwicmVmZXJlbmNlIiwid3JhcHBlZEh0bWwiLCJpbm5lckhUTUwiLCJmaXJzdENoaWxkIiwiZmlyc3QiLCJsYXN0Iiwic3ZnIiwiY3JlYXRlRWxlbWVudE5TIiwiZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWVPLEFBQVM7UUFrQlQsQUFBUzs7QUFqQ2hCLEFBQVMsQUFBc0I7O0FBQy9CLEFBQVMsQUFBdUIsQUFFaEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxJQUFNLHdDQUFOLEFBQXNCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQUFDQTtBQUFPLG9CQUFBLEFBQW9CLFVBQXBCLEFBQThCLGlCQUE5QixBQUErQyxjQUFjLEFBQ2hFO1FBQUksQ0FBSixBQUFLLFVBQVUsT0FBQSxBQUFPLEFBQ3RCO1FBQUksQ0FBQyxlQUFBLEFBQWUsVUFBcEIsQUFBSyxBQUF5QixlQUFlLEFBQ3pDO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7UUFBSSxNQUFNLFNBQUEsQUFBUyxjQUFuQixBQUFVLEFBQXVCLEFBQ2pDO3VDQUFBO2lEQUFBOztpREFBQTtrQ0FBQTs7aUZBQUE7QUFBQTs7Z0RBQUEsQUFDSSw2Q0FESixBQUNxQixRQURyQixBQUM2QixhQUQ3QixBQUMwQyxNQUFNLEFBQ3hDO2dCQUFJLFNBQUEsQUFBUyxRQUFRLFNBQXJCLEFBQThCLElBQUksQUFDOUI7dUJBQU8sMkJBQUEsQUFBTSw0QkFBTixBQUF1QixRQUF2QixBQUErQixhQUF0QyxBQUFPLEFBQTRDLEFBQ3REO0FBQ0Q7Z0JBQUksT0FBQSxBQUFPLGlCQUFYLEFBQTRCLGNBQWMsQUFDdEM7dUJBQU8sMkJBQUEsQUFBTSw0QkFBTixBQUF1QixRQUF2QixBQUErQixhQUF0QyxBQUFPLEFBQTRDLEFBQ3REO0FBQ0Q7bUJBQU8sT0FBQSxBQUFPLFFBQVAsQUFBZSxLQUFmLEFBQW9CLE1BQTNCLEFBQU8sQUFBMEIsQUFDcEM7QUFUTDs7ZUFBQTtNQUFBLEFBQW1ELEFBV3REO0FBQ0Q7QUFBTywwQkFBQSxBQUEwQixVQUExQixBQUFvQyx1QkFBcEMsQUFBMkQsY0FBYyxBQUM1RTtRQUFJLENBQUosQUFBSyxVQUFVLE9BQUEsQUFBTyxBQUN0QjtRQUFJLENBQUMsZUFBQSxBQUFlLFVBQXBCLEFBQUssQUFBeUIsZUFBZSxBQUN6QztlQUFBLEFBQU8sQUFDVjtBQUNEO1FBQUksTUFBTSxTQUFBLEFBQVMsY0FBbkIsQUFBVSxBQUF1QixBQUNqQzs0Q0FBQTt1REFBQTs7dURBQUE7a0NBQUE7O3NGQUFBO0FBQUE7O3NEQUFBLEFBQ0ksNkNBREosQUFDcUIsUUFEckIsQUFDNkIsV0FEN0IsQUFDd0MsTUFBTSxBQUN0QztnQkFBSSxTQUFBLEFBQVMsUUFBUSxTQUFyQixBQUE4QixJQUFJLEFBQzlCO3VCQUFPLGdDQUFBLEFBQU0sNEJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsV0FBdEMsQUFBTyxBQUEwQyxBQUNwRDtBQUNEO2dCQUFJLE9BQUEsQUFBTyxpQkFBWCxBQUE0QixjQUFjLEFBQ3RDO3VCQUFPLGdDQUFBLEFBQU0sNEJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsV0FBdEMsQUFBTyxBQUEwQyxBQUNwRDtBQUNEO21CQUFPLE9BQUEsQUFBTyxRQUFQLEFBQWUsS0FBZixBQUFvQixNQUEzQixBQUFPLEFBQTBCLEFBQ3BDO0FBVEw7O2VBQUE7TUFBQSxBQUF5RCxBQVc1RDs7QUFDRCxTQUFBLEFBQVMsT0FBVCxBQUFnQixRQUFoQixBQUF3QixLQUF4QixBQUE2QixNQUE3QixBQUFtQyxXQUFXLEFBQzFDO0FBQ0E7QUFDQTtRQUFJLGNBQWMsVUFBQSxBQUFVLE9BQTVCLEFBQW1DLEFBQ25DO1FBQUEsQUFBSSxZQUpzQyxBQUkxQyxBQUFnQjs7MkJBQ0ksNkJBQWdCLElBQWhCLEFBQW9CLFlBQXBCLEFBQWdDLFFBTFYsQUFLdEIsQUFBd0M7UUFMbEIsQUFLckMseUJBTHFDO1FBQUEsQUFLOUIsd0JBQ1o7O1dBQU8sQUFBSSwyQkFBSixBQUFtQixRQUFuQixBQUEyQixPQUFsQyxBQUFPLEFBQWtDLEFBQzVDOztBQUNELFNBQUEsQUFBUyxlQUFULEFBQXdCLFVBQXhCLEFBQWtDLGNBQWMsQUFDNUM7UUFBSSxNQUFNLFNBQUEsQUFBUyxnQkFBVCxBQUF5QixjQUFuQyxBQUFVLEFBQXVDLEFBQ2pEO1FBQUksQUFDQTtZQUFBLEFBQUksc0JBQUosQUFBMEIsYUFBMUIsQUFBdUMsQUFDMUM7QUFGRCxNQUVFLE9BQUEsQUFBTyxHQUFHLEFBQ1I7QUFDQTtBQUNIO0FBTEQsY0FLVSxBQUNOO0FBQ0E7WUFBSSxJQUFBLEFBQUksV0FBSixBQUFlLFdBQWYsQUFBMEIsS0FBWSxJQUFQLEFBQVcsV0FBWCxBQUF1QixpQkFBMUQsQUFBMkUsZUFBZSxBQUN0RjtBQUNBO21CQUFBLEFBQU8sQUFDVjtBQUNEO2VBQUEsQUFBTyxBQUNWO0FBQ0oiLCJmaWxlIjoibGliL2NvbXBhdC9zdmctaW5uZXItaHRtbC1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IHVud3JhcCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudCwgRE9NQ2hhbmdlc0NsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudCwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCByZWZlcmVuY2UsIGh0bWwpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCByZWZlcmVuY2UsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gICAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSB7XG4gICAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcbiAgICB0cnkge1xuICAgICAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICAgICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiB1bndyYXAoc3ZnLmZpcnN0Q2hpbGQpLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSkge1xuICAgICAgICAgICAgLy8gVGhlIHRlc3Qgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59Il19

@@ -100,5 +100,5 @@ "use strict";

TreeConstructionWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
TreeConstructionWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, reference, html) {
if (html === null) {
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
}

@@ -111,3 +111,3 @@ var didSetUselessComment = false;

}
var bounds = _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
var bounds = _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
if (didSetUselessComment) {

@@ -132,2 +132,2 @@ parent.removeChild(this.uselessComment);

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwidXNlbGVzc0NvbW1lbnQiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudCIsIm5leHRTaWJsaW5nIiwiaHRtbCIsImRpZFNldFVzZWxlc3NDb21tZW50IiwibmV4dFByZXZpb3VzIiwicHJldmlvdXNTaWJsaW5nIiwibGFzdENoaWxkIiwiVGV4dCIsImluc2VydEJlZm9yZSIsImJvdW5kcyIsInJlbW92ZUNoaWxkIiwidHJlZUNvbnN0cnVjdGlvbiIsIlRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZSIsIm1lcmdpbmdUZXh0RGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50SFRNTCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWU8sQUFBUztRQTRCVCxBQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF4Q2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQUNBO0FBQU8sb0JBQUEsQUFBb0IsVUFBcEIsQUFBOEIsaUJBQWlCLEFBQ2xEO1FBQUksQ0FBSixBQUFLLFVBQVUsT0FBQSxBQUFPLEFBQ3RCO1FBQUksQ0FBQyxlQUFMLEFBQUssQUFBZSxXQUFXLEFBQzNCO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7dUNBQUE7b0RBQ0k7O2tEQUFBLEFBQVksVUFBVTtrQ0FBQTs7eURBQ2xCLDRCQURrQixBQUNsQixBQUFNLEFBQ047O2tCQUFBLEFBQUssaUJBQWlCLFNBQUEsQUFBUyxjQUZiLEFBRWxCLEFBQXNCLEFBQXVCO21CQUNoRDtBQUpMOzttREFBQSxBQUtJLDZDQUxKLEFBS3FCLFFBTHJCLEFBSzZCLGFBTDdCLEFBSzBDLE1BQU0sQUFDeEM7Z0JBQUksU0FBSixBQUFhLE1BQU0sQUFDZjt1QkFBTywyQkFBQSxBQUFNLDRCQUFOLEFBQXVCLFFBQXZCLEFBQStCLGFBQXRDLEFBQU8sQUFBNEMsQUFDdEQ7QUFDRDtnQkFBSSx1QkFBSixBQUEyQixBQUMzQjtnQkFBSSxlQUFlLGNBQWMsWUFBZCxBQUEwQixrQkFBa0IsT0FBL0QsQUFBc0UsQUFDdEU7Z0JBQUksZ0JBQWdCLHdCQUFwQixBQUE0QyxNQUFNLEFBQzlDO3VDQUFBLEFBQXVCLEFBQ3ZCO3VCQUFBLEFBQU8sYUFBYSxLQUFwQixBQUF5QixnQkFBekIsQUFBeUMsQUFDNUM7QUFDRDtnQkFBSSxTQUFTLDJCQUFBLEFBQU0sNEJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsYUFBNUMsQUFBYSxBQUE0QyxBQUN6RDtnQkFBQSxBQUFJLHNCQUFzQixBQUN0Qjt1QkFBQSxBQUFPLFlBQVksS0FBbkIsQUFBd0IsQUFDM0I7QUFDRDttQkFBQSxBQUFPLEFBQ1Y7QUFwQkw7O2VBQUE7TUFBQSxBQUFzRCxBQXNCekQ7QUFDRDtBQUFPLDBCQUFBLEFBQTBCLFVBQTFCLEFBQW9DLHVCQUF1QixBQUM5RDtRQUFJLENBQUosQUFBSyxVQUFVLE9BQUEsQUFBTyxBQUN0QjtRQUFJLENBQUMsZUFBTCxBQUFLLEFBQWUsV0FBVyxBQUMzQjtlQUFBLEFBQU8sQUFDVjtBQUNEOzRDQUFBOzBEQUNJOzt3REFBQSxBQUFZLFVBQVU7a0NBQUE7OzBEQUNsQixpQ0FEa0IsQUFDbEIsQUFBTSxBQUNOOzttQkFBQSxBQUFLLGlCQUFpQixPQUFBLEFBQUssY0FGVCxBQUVsQixBQUFzQixBQUFtQjttQkFDNUM7QUFKTDs7eURBQUEsQUFLSSw2Q0FMSixBQUtxQixRQUxyQixBQUs2QixNQUw3QixBQUttQyxXQUFXLEFBQ3RDO2dCQUFJLFNBQUosQUFBYSxNQUFNLEFBQ2Y7dUJBQU8sZ0NBQUEsQUFBTSw0QkFBTixBQUF1QixRQUF2QixBQUErQixNQUF0QyxBQUFPLEFBQXFDLEFBQy9DO0FBQ0Q7Z0JBQUksdUJBQUosQUFBMkIsQUFDM0I7Z0JBQUksZUFBZSxZQUFZLFVBQVosQUFBc0Isa0JBQWtCLE9BQTNELEFBQWtFLEFBQ2xFO2dCQUFJLGdCQUFnQix3QkFBcEIsQUFBNEMsTUFBTSxBQUM5Qzt1Q0FBQSxBQUF1QixBQUN2Qjt1QkFBQSxBQUFPLGFBQWEsS0FBcEIsQUFBeUIsZ0JBQXpCLEFBQXlDLEFBQzVDO0FBQ0Q7Z0JBQUksU0FBUyxnQ0FBQSxBQUFNLDRCQUFOLEFBQXVCLFFBQXZCLEFBQStCLE1BQTVDLEFBQWEsQUFBcUMsQUFDbEQ7Z0JBQUEsQUFBSSxzQkFBc0IsQUFDdEI7dUJBQUEsQUFBTyxZQUFZLEtBQW5CLEFBQXdCLEFBQzNCO0FBQ0Q7bUJBQUEsQUFBTyxBQUNWO0FBcEJMOztlQUFBO01BQUEsQUFBNEQsQUFzQi9EOztBQUNELFNBQUEsQUFBUyxlQUFULEFBQXdCLFVBQVUsQUFDOUI7UUFBSSxpQkFBaUIsU0FBQSxBQUFTLGNBQTlCLEFBQXFCLEFBQXVCLEFBQzVDO21CQUFBLEFBQWUsWUFBZixBQUEyQixBQUMzQjttQkFBQSxBQUFlLG1CQUFmLEFBQWtDLGFBQWxDLEFBQStDLEFBQy9DO1FBQUksZUFBQSxBQUFlLFdBQWYsQUFBMEIsV0FBOUIsQUFBeUMsR0FBRyxBQUN4QztBQUNBO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7V0FBQSxBQUFPLEFBQ1YiLCJmaWxlIjoibGliL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXRjaDogICAgQWRqYWNlbnQgdGV4dCBub2RlIG1lcmdpbmcgZml4XG4vLyBCcm93c2VyczogSUUsIEVkZ2UsIEZpcmVmb3ggdy9vIGluc3BlY3RvciBvcGVuXG4vLyBSZWFzb246ICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzLiBGb3IgZXhtYXBsZSBnaXZlblxuLy8gICAgICAgICAgIDxkaXY+SGVsbG88L2Rpdj4gd2l0aCBkaXYuaW5zZXJ0QWRqYWNlbnRIVE1MKCcgd29ybGQnKSBicm93c2Vyc1xuLy8gICAgICAgICAgIHdpdGggcHJvcGVyIGJlaGF2aW9yIHdpbGwgcG9wdWxhdGUgZGl2LmNoaWxkTm9kZXMgd2l0aCB0d28gaXRlbXMuXG4vLyAgICAgICAgICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBwb3B1bGF0ZSBpdCB3aXRoIG9uZSBtZXJnZWQgbm9kZSBpbnN0ZWFkLlxuLy8gRml4OiAgICAgIEFkZCB0aGVzZSBub2RlcyB0byBhIHdyYXBwZXIgZWxlbWVudCwgdGhlbiBpdGVyYXRlIHRoZSBjaGlsZE5vZGVzXG4vLyAgICAgICAgICAgb2YgdGhhdCB3cmFwcGVyIGFuZCBtb3ZlIHRoZSBub2RlcyB0byB0aGVpciB0YXJnZXQgbG9jYXRpb24uIE5vdGVcbi8vICAgICAgICAgICB0aGF0IHBvdGVudGlhbCBTVkcgYnVncyB3aWxsIGhhdmUgYmVlbiBoYW5kbGVkIGJlZm9yZSB0aGlzIGZpeC5cbi8vICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBmaXggbXVzdCBvbmx5IGFwcGx5IHRvIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGUsIGFzXG4vLyAgICAgICAgICAgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGluc2VydEhUTUxCZWZvcmVgIGFscmVhZHkgaGFuZGxlc1xuLy8gICAgICAgICAgIGZvbGxvd2luZyB0ZXh0IG5vZGVzIGNvcnJlY3RseS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRpZFNldFVzZWxlc3NDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGJvdW5kcyA9IHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5leHRQcmV2aW91cyA9IHJlZmVyZW5jZSA/IHJlZmVyZW5jZS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIGlmIChkaWRTZXRVc2VsZXNzQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLnVzZWxlc3NDb21tZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBib3VuZHM7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpIHtcbiAgICBsZXQgbWVyZ2luZ1RleHREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtZXJnaW5nVGV4dERpdi5pbm5lckhUTUwgPSAnZmlyc3QnO1xuICAgIG1lcmdpbmdUZXh0RGl2Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgJ3NlY29uZCcpO1xuICAgIGlmIChtZXJnaW5nVGV4dERpdi5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwidXNlbGVzc0NvbW1lbnQiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudCIsIm5leHRTaWJsaW5nIiwiaHRtbCIsImRpZFNldFVzZWxlc3NDb21tZW50IiwibmV4dFByZXZpb3VzIiwicHJldmlvdXNTaWJsaW5nIiwibGFzdENoaWxkIiwiVGV4dCIsImluc2VydEJlZm9yZSIsImJvdW5kcyIsInJlbW92ZUNoaWxkIiwidHJlZUNvbnN0cnVjdGlvbiIsIlRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZSIsIm1lcmdpbmdUZXh0RGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50SFRNTCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7O1FBWU8sQUFBUztRQTRCVCxBQUFTOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF4Q2hCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQUNBO0FBQU8sb0JBQUEsQUFBb0IsVUFBcEIsQUFBOEIsaUJBQWlCLEFBQ2xEO1FBQUksQ0FBSixBQUFLLFVBQVUsT0FBQSxBQUFPLEFBQ3RCO1FBQUksQ0FBQyxlQUFMLEFBQUssQUFBZSxXQUFXLEFBQzNCO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7dUNBQUE7b0RBQ0k7O2tEQUFBLEFBQVksVUFBVTtrQ0FBQTs7eURBQ2xCLDRCQURrQixBQUNsQixBQUFNLEFBQ047O2tCQUFBLEFBQUssaUJBQWlCLFNBQUEsQUFBUyxjQUZiLEFBRWxCLEFBQXNCLEFBQXVCO21CQUNoRDtBQUpMOzttREFBQSxBQUtJLDZDQUxKLEFBS3FCLFFBTHJCLEFBSzZCLGFBTDdCLEFBSzBDLE1BQU0sQUFDeEM7Z0JBQUksU0FBSixBQUFhLE1BQU0sQUFDZjt1QkFBTywyQkFBQSxBQUFNLDRCQUFOLEFBQXVCLFFBQXZCLEFBQStCLGFBQXRDLEFBQU8sQUFBNEMsQUFDdEQ7QUFDRDtnQkFBSSx1QkFBSixBQUEyQixBQUMzQjtnQkFBSSxlQUFlLGNBQWMsWUFBZCxBQUEwQixrQkFBa0IsT0FBL0QsQUFBc0UsQUFDdEU7Z0JBQUksZ0JBQWdCLHdCQUFwQixBQUE0QyxNQUFNLEFBQzlDO3VDQUFBLEFBQXVCLEFBQ3ZCO3VCQUFBLEFBQU8sYUFBYSxLQUFwQixBQUF5QixnQkFBekIsQUFBeUMsQUFDNUM7QUFDRDtnQkFBSSxTQUFTLDJCQUFBLEFBQU0sNEJBQU4sQUFBdUIsUUFBdkIsQUFBK0IsYUFBNUMsQUFBYSxBQUE0QyxBQUN6RDtnQkFBQSxBQUFJLHNCQUFzQixBQUN0Qjt1QkFBQSxBQUFPLFlBQVksS0FBbkIsQUFBd0IsQUFDM0I7QUFDRDttQkFBQSxBQUFPLEFBQ1Y7QUFwQkw7O2VBQUE7TUFBQSxBQUFzRCxBQXNCekQ7QUFDRDtBQUFPLDBCQUFBLEFBQTBCLFVBQTFCLEFBQW9DLHVCQUF1QixBQUM5RDtRQUFJLENBQUosQUFBSyxVQUFVLE9BQUEsQUFBTyxBQUN0QjtRQUFJLENBQUMsZUFBTCxBQUFLLEFBQWUsV0FBVyxBQUMzQjtlQUFBLEFBQU8sQUFDVjtBQUNEOzRDQUFBOzBEQUNJOzt3REFBQSxBQUFZLFVBQVU7a0NBQUE7OzBEQUNsQixpQ0FEa0IsQUFDbEIsQUFBTSxBQUNOOzttQkFBQSxBQUFLLGlCQUFpQixPQUFBLEFBQUssY0FGVCxBQUVsQixBQUFzQixBQUFtQjttQkFDNUM7QUFKTDs7eURBQUEsQUFLSSw2Q0FMSixBQUtxQixRQUxyQixBQUs2QixXQUw3QixBQUt3QyxNQUFNLEFBQ3RDO2dCQUFJLFNBQUosQUFBYSxNQUFNLEFBQ2Y7dUJBQU8sZ0NBQUEsQUFBTSw0QkFBTixBQUF1QixRQUF2QixBQUErQixXQUF0QyxBQUFPLEFBQTBDLEFBQ3BEO0FBQ0Q7Z0JBQUksdUJBQUosQUFBMkIsQUFDM0I7Z0JBQUksZUFBZSxZQUFZLFVBQVosQUFBc0Isa0JBQWtCLE9BQTNELEFBQWtFLEFBQ2xFO2dCQUFJLGdCQUFnQix3QkFBcEIsQUFBNEMsTUFBTSxBQUM5Qzt1Q0FBQSxBQUF1QixBQUN2Qjt1QkFBQSxBQUFPLGFBQWEsS0FBcEIsQUFBeUIsZ0JBQXpCLEFBQXlDLEFBQzVDO0FBQ0Q7Z0JBQUksU0FBUyxnQ0FBQSxBQUFNLDRCQUFOLEFBQXVCLFFBQXZCLEFBQStCLFdBQTVDLEFBQWEsQUFBMEMsQUFDdkQ7Z0JBQUEsQUFBSSxzQkFBc0IsQUFDdEI7dUJBQUEsQUFBTyxZQUFZLEtBQW5CLEFBQXdCLEFBQzNCO0FBQ0Q7bUJBQUEsQUFBTyxBQUNWO0FBcEJMOztlQUFBO01BQUEsQUFBNEQsQUFzQi9EOztBQUNELFNBQUEsQUFBUyxlQUFULEFBQXdCLFVBQVUsQUFDOUI7UUFBSSxpQkFBaUIsU0FBQSxBQUFTLGNBQTlCLEFBQXFCLEFBQXVCLEFBQzVDO21CQUFBLEFBQWUsWUFBZixBQUEyQixBQUMzQjttQkFBQSxBQUFlLG1CQUFmLEFBQWtDLGFBQWxDLEFBQStDLEFBQy9DO1FBQUksZUFBQSxBQUFlLFdBQWYsQUFBMEIsV0FBOUIsQUFBeUMsR0FBRyxBQUN4QztBQUNBO2VBQUEsQUFBTyxBQUNWO0FBQ0Q7V0FBQSxBQUFPLEFBQ1YiLCJmaWxlIjoibGliL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXRjaDogICAgQWRqYWNlbnQgdGV4dCBub2RlIG1lcmdpbmcgZml4XG4vLyBCcm93c2VyczogSUUsIEVkZ2UsIEZpcmVmb3ggdy9vIGluc3BlY3RvciBvcGVuXG4vLyBSZWFzb246ICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzLiBGb3IgZXhtYXBsZSBnaXZlblxuLy8gICAgICAgICAgIDxkaXY+SGVsbG88L2Rpdj4gd2l0aCBkaXYuaW5zZXJ0QWRqYWNlbnRIVE1MKCcgd29ybGQnKSBicm93c2Vyc1xuLy8gICAgICAgICAgIHdpdGggcHJvcGVyIGJlaGF2aW9yIHdpbGwgcG9wdWxhdGUgZGl2LmNoaWxkTm9kZXMgd2l0aCB0d28gaXRlbXMuXG4vLyAgICAgICAgICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBwb3B1bGF0ZSBpdCB3aXRoIG9uZSBtZXJnZWQgbm9kZSBpbnN0ZWFkLlxuLy8gRml4OiAgICAgIEFkZCB0aGVzZSBub2RlcyB0byBhIHdyYXBwZXIgZWxlbWVudCwgdGhlbiBpdGVyYXRlIHRoZSBjaGlsZE5vZGVzXG4vLyAgICAgICAgICAgb2YgdGhhdCB3cmFwcGVyIGFuZCBtb3ZlIHRoZSBub2RlcyB0byB0aGVpciB0YXJnZXQgbG9jYXRpb24uIE5vdGVcbi8vICAgICAgICAgICB0aGF0IHBvdGVudGlhbCBTVkcgYnVncyB3aWxsIGhhdmUgYmVlbiBoYW5kbGVkIGJlZm9yZSB0aGlzIGZpeC5cbi8vICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBmaXggbXVzdCBvbmx5IGFwcGx5IHRvIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGUsIGFzXG4vLyAgICAgICAgICAgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGluc2VydEhUTUxCZWZvcmVgIGFscmVhZHkgaGFuZGxlc1xuLy8gICAgICAgICAgIGZvbGxvd2luZyB0ZXh0IG5vZGVzIGNvcnJlY3RseS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRpZFNldFVzZWxlc3NDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGJvdW5kcyA9IHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5leHRQcmV2aW91cyA9IHJlZmVyZW5jZSA/IHJlZmVyZW5jZS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgICAgIGlmIChkaWRTZXRVc2VsZXNzQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLnVzZWxlc3NDb21tZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBib3VuZHM7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpIHtcbiAgICBsZXQgbWVyZ2luZ1RleHREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtZXJnaW5nVGV4dERpdi5pbm5lckhUTUwgPSAnZmlyc3QnO1xuICAgIG1lcmdpbmdUZXh0RGl2Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgJ3NlY29uZCcpO1xuICAgIGlmIChtZXJnaW5nVGV4dERpdi5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==

@@ -74,7 +74,6 @@ "use strict";

_opcodes.APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) {
var positional = _ref2.op1,
synthetic = _ref2.op2;
var synthetic = _ref2.op1;
var stack = vm.stack;
_arguments2.default.setup(stack, positional, !!synthetic);
_arguments2.default.setup(stack, !!synthetic);
stack.push(_arguments2.default);

@@ -102,2 +101,3 @@ });

}
stack.push(positionalCount);
var names = Object.keys(named);

@@ -109,3 +109,3 @@ var namedCount = names.length;

stack.push(names);
args.setup(stack, positionalCount, true);
args.setup(stack, true);
}

@@ -255,2 +255,2 @@ stack.push(args);

}(_opcodes.UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50IiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsIm9wMiIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBUyxBQUFjLEFBQVMsQUFBc0I7O0FBQy9ELEFBQVMsQUFBZ0IsQUFBc0I7O0FBQy9DLEFBQU8sQUFBVTs7OztBQUNqQixBQUFTLEFBQWtDOztBQUMzQyxBQUFTLEFBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUN2Qix3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsNEJBQTRCLFVBQUEsQUFBQyxVQUE2QjtRQUFsQixBQUFrQixtQkFBdkIsQUFBdUIsQUFDNUU7O1FBQUksYUFBYSxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTlCLEFBQWlCLEFBQXNCLEFBQ3ZDO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtVQUFBLEFBQU0sS0FBTixBQUFXLEFBQ1g7VUFBQSxBQUFNLEtBQUssV0FBWCxBQUFzQixBQUN6QjtBQUxEO0FBTUEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLG1DQUFtQyxjQUFNLEFBQzNEO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLFlBQVksTUFBaEIsQUFBZ0IsQUFBTSxBQUN0QjtRQUFJLFFBQVEsd0JBQUEsQUFBUSxhQUFSLEFBQXFCLFlBQVksQUFBSSw4QkFBakQsQUFBNkMsQUFBbUIsQUFDaEU7UUFBSSxhQUFhLFFBQVEsTUFBUixBQUFRLEFBQU0sU0FBUyxVQUF4QyxBQUF3QyxBQUFVLEFBQ2xEO1VBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtVQUFBLEFBQU0sS0FBSyxXQUFYLEFBQXNCLEFBQ3RCO1FBQUEsQUFBSSxPQUFPLEFBQ1A7V0FBQSxBQUFHLFdBQVcsQUFBSSxnQkFBbEIsQUFB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QXJCLEFBQWdDLFFBQVE7OEJBQUE7O3NEQUNwQyxzQkFEb0MsQUFFcEM7O2VBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjtlQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjtlQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2Q7ZUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2VBTm9DLEFBTXBDLEFBQUssQUFBTTtlQUNkO0FBUkw7O29DQUFBLEFBU0ksNkJBVEosQUFTYSxJQUFJO1lBQUEsQUFDSCxVQURHLEFBQzRCLEtBRDVCLEFBQ0g7WUFERyxBQUNNLFlBRE4sQUFDNEIsS0FENUIsQUFDTTtZQUROLEFBQ2lCLFNBRGpCLEFBQzRCLEtBRDVCLEFBQ2lCLEFBQzFCOztnQkFBQSxBQUFRLGdCQUFSLEFBQXdCLFdBQXhCLEFBQW1DLEFBQ25DO1dBQUEsQUFBRyxJQUFILEFBQU8sVUFBUCxBQUFpQixXQUFqQixBQUE0QixBQUMvQjtBQWJMOztXQUFBO0FBQUEsQUFBMkMiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWwsICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICAgIH1cbiAgICBzdGFjay5wdXNoKGFyZ3MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovLCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uO1xuICAgIGxldCBtYW5hZ2VyO1xuICAgIGxldCBhcmdzID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBzdGF0ZSA9ICh7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKSk7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcbiAgICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAgIHN0YXRlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHtcbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi8sIHZtID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRTZWxmICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKHN0YXRlLm1hbmFnZXIuZ2V0U2VsZihzdGF0ZS5jb21wb25lbnQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBkZWZpbml0aW9uLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLWNvbXBvbmVudCc7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGlkLXVwZGF0ZS1sYXlvdXQnO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50Iiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwib3AyIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBUyxBQUFjLEFBQVMsQUFBc0I7O0FBQy9ELEFBQVMsQUFBZ0IsQUFBc0I7O0FBQy9DLEFBQU8sQUFBVTs7OztBQUNqQixBQUFTLEFBQWtDOztBQUMzQyxBQUFTLEFBQWM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUN2Qix3QkFBQSxBQUFlLElBQWYsQUFBbUIsR0FBbkIsQUFBc0IsNEJBQTRCLFVBQUEsQUFBQyxVQUE2QjtRQUFsQixBQUFrQixtQkFBdkIsQUFBdUIsQUFDNUU7O1FBQUksYUFBYSxHQUFBLEFBQUcsVUFBSCxBQUFhLFNBQTlCLEFBQWlCLEFBQXNCLEFBQ3ZDO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtVQUFBLEFBQU0sS0FBTixBQUFXLEFBQ1g7VUFBQSxBQUFNLEtBQUssV0FBWCxBQUFzQixBQUN6QjtBQUxEO0FBTUEsd0JBQUEsQUFBZSxJQUFmLEFBQW1CLEdBQW5CLEFBQXNCLG1DQUFtQyxjQUFNLEFBQzNEO1FBQUksUUFBUSxHQUFaLEFBQWUsQUFDZjtRQUFJLFlBQVksTUFBaEIsQUFBZ0IsQUFBTSxBQUN0QjtRQUFJLFFBQVEsd0JBQUEsQUFBUSxhQUFSLEFBQXFCLFlBQVksQUFBSSw4QkFBakQsQUFBNkMsQUFBbUIsQUFDaEU7UUFBSSxhQUFhLFFBQVEsTUFBUixBQUFRLEFBQU0sU0FBUyxVQUF4QyxBQUF3QyxBQUFVLEFBQ2xEO1VBQUEsQUFBTSxLQUFOLEFBQVcsQUFDWDtVQUFBLEFBQU0sS0FBSyxXQUFYLEFBQXNCLEFBQ3RCO1FBQUEsQUFBSSxPQUFPLEFBQ1A7V0FBQSxBQUFHLFdBQVcsQUFBSSxnQkFBbEIsQUFB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QUNwQyxzQkFEb0MsQUFFcEM7O2VBQUEsQUFBSyxVQUFMLEFBQWUsQUFDZjtlQUFBLEFBQUssWUFBTCxBQUFpQixBQUNqQjtlQUFBLEFBQUssU0FBTCxBQUFjLEFBQ2Q7ZUFBQSxBQUFLLE9BQUwsQUFBWSxBQUNaO2VBTm9DLEFBTXBDLEFBQUssQUFBTTtlQUNkO0FBUkw7O29DQUFBLEFBU0ksNkJBVEosQUFTYSxJQUFJO1lBQUEsQUFDSCxVQURHLEFBQzRCLEtBRDVCLEFBQ0g7WUFERyxBQUNNLFlBRE4sQUFDNEIsS0FENUIsQUFDTTtZQUROLEFBQ2lCLFNBRGpCLEFBQzRCLEtBRDVCLEFBQ2lCLEFBQzFCOztnQkFBQSxBQUFRLGdCQUFSLEFBQXdCLFdBQXhCLEFBQW1DLEFBQ25DO1dBQUEsQUFBRyxJQUFILEFBQU8sVUFBUCxBQUFpQixXQUFqQixBQUE0QixBQUMvQjtBQWJMOztXQUFBO0FBQUEsQUFBMkMiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogc3ludGhldGljIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBBUkdTLnNldHVwKHN0YWNrLCAhIXN5bnRoZXRpYyk7XG4gICAgc3RhY2sucHVzaChBUkdTKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU5IC8qIFByZXBhcmVBcmdzICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCB7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYXJncyA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBwcmVwYXJlZEFyZ3MgPSBtYW5hZ2VyLnByZXBhcmVBcmdzKGRlZmluaXRpb24sIGFyZ3MpO1xuICAgIGlmIChwcmVwYXJlZEFyZ3MpIHtcbiAgICAgICAgYXJncy5jbGVhcigpO1xuICAgICAgICBsZXQgeyBwb3NpdGlvbmFsLCBuYW1lZCB9ID0gcHJlcGFyZWRBcmdzO1xuICAgICAgICBsZXQgcG9zaXRpb25hbENvdW50ID0gcG9zaXRpb25hbC5sZW5ndGg7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9zaXRpb25hbENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbFtpXSk7XG4gICAgICAgIH1cbiAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsQ291bnQpO1xuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCB0cnVlKTtcbiAgICB9XG4gICAgc3RhY2sucHVzaChhcmdzKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLywgKHZtLCB7IG9wMTogZmxhZ3MsIG9wMjogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgZGVmaW5pdGlvbjtcbiAgICBsZXQgbWFuYWdlcjtcbiAgICBsZXQgYXJncyA9IHZtLnN0YWNrLnBvcCgpO1xuICAgIGxldCBkeW5hbWljU2NvcGUgPSB2bS5keW5hbWljU2NvcGUoKTtcbiAgICBsZXQgc3RhdGUgPSAoeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSkpO1xuICAgIGxldCBoYXNEZWZhdWx0QmxvY2sgPSBmbGFncyAmIDBiMDE7XG4gICAgbGV0IGNvbXBvbmVudCA9IG1hbmFnZXIuY3JlYXRlKHZtLmVudiwgZGVmaW5pdGlvbiwgYXJncywgZHluYW1pY1Njb3BlLCB2bS5nZXRTZWxmKCksICEhaGFzRGVmYXVsdEJsb2NrKTtcbiAgICBzdGF0ZS5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgVXBkYXRlQ29tcG9uZW50T3Bjb2RlKGFyZ3MudGFnLCBkZWZpbml0aW9uLm5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGRlc3RydWN0b3IgPSBtYW5hZ2VyLmdldERlc3RydWN0b3IoY29tcG9uZW50KTtcbiAgICBpZiAoZGVzdHJ1Y3Rvcikgdm0ubmV3RGVzdHJveWFibGUoZGVzdHJ1Y3Rvcik7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB7XG4gICAgdm0uYmVnaW5DYWNoZUdyb3VwKCk7XG4gICAgdm0uZWxlbWVudHMoKS5wdXNoU2ltcGxlQmxvY2soKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovLCB2bSA9PiB7XG4gICAgdm0uc3RhY2sucHVzaChuZXcgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnModm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhY3Rpb24gPSAnRGlkQ3JlYXRlRWxlbWVudE9wY29kZSNldmFsdWF0ZSc7XG4gICAgbWFuYWdlci5kaWRDcmVhdGVFbGVtZW50KGNvbXBvbmVudCwgdm0uZWxlbWVudHMoKS5leHBlY3RDb25zdHJ1Y3RpbmcoYWN0aW9uKSwgdm0uZWxlbWVudHMoKS5leHBlY3RPcGVyYXRpb25zKGFjdGlvbikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhdGUgPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChzdGF0ZS5tYW5hZ2VyLmdldFNlbGYoc3RhdGUuY29tcG9uZW50KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgZGVmaW5pdGlvbiwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgdm0uc3RhY2sucHVzaChtYW5hZ2VyLmxheW91dEZvcihkZWZpbml0aW9uLCBjb21wb25lbnQsIHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjggLyogRGlkUmVuZGVyTGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBib3VuZHMgPSB2bS5lbGVtZW50cygpLnBvcEJsb2NrKCk7XG4gICAgbWFuYWdlci5kaWRSZW5kZXJMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgIHZtLmVudi5kaWRDcmVhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovLCB2bSA9PiB2bS5jb21taXRDYWNoZUdyb3VwKCkpO1xuZXhwb3J0IGNsYXNzIFVwZGF0ZUNvbXBvbmVudE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWUsIGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmFtZSA9IG5hbWU7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmR5bmFtaWNTY29wZSA9IGR5bmFtaWNTY29wZTtcbiAgICAgICAgdGhpcy50eXBlID0gJ3VwZGF0ZS1jb21wb25lbnQnO1xuICAgICAgICBsZXQgY29tcG9uZW50VGFnID0gbWFuYWdlci5nZXRUYWcoY29tcG9uZW50KTtcbiAgICAgICAgaWYgKGNvbXBvbmVudFRhZykge1xuICAgICAgICAgICAgdGhpcy50YWcgPSBjb21iaW5lKFt0YWcsIGNvbXBvbmVudFRhZ10pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZXZhbHVhdGUoX3ZtKSB7XG4gICAgICAgIGxldCB7IGNvbXBvbmVudCwgbWFuYWdlciwgZHluYW1pY1Njb3BlIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLnVwZGF0ZShjb21wb25lbnQsIGR5bmFtaWNTY29wZSk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGFyZ3M6IFtKU09OLnN0cmluZ2lmeSh0aGlzLm5hbWUpXSxcbiAgICAgICAgICAgIGd1aWQ6IHRoaXMuX2d1aWQsXG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGVcbiAgICAgICAgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICAgICAgdGhpcy50eXBlID0gJ2RpZC11cGRhdGUtbGF5b3V0JztcbiAgICAgICAgdGhpcy50YWcgPSBDT05TVEFOVF9UQUc7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtKSB7XG4gICAgICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICBtYW5hZ2VyLmRpZFVwZGF0ZUxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgICAgIHZtLmVudi5kaWRVcGRhdGUoY29tcG9uZW50LCBtYW5hZ2VyKTtcbiAgICB9XG59Il19

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

'use strict';
"use strict";

@@ -6,13 +6,13 @@ Object.defineProperty(exports, "__esModule", {

});
exports.DOMTreeConstruction = exports.DOMChanges = exports.DOM = exports.BLACKLIST_TABLE = exports.SVG_NAMESPACE = exports.insertHTMLBefore = undefined;
exports.DOMTreeConstruction = exports.DOMChanges = exports.DOM = exports.DOMOperations = exports.BLACKLIST_TABLE = exports.SVG_NAMESPACE = exports.insertHTMLBefore = undefined;
exports.isWhitespace = isWhitespace;
exports.moveNodesBefore = moveNodesBefore;
var _bounds = require('../bounds');
var _bounds = require("../bounds");
var _innerHtmlFix = require('../compat/inner-html-fix');
var _innerHtmlFix = require("../compat/inner-html-fix");
var _svgInnerHtmlFix = require('../compat/svg-inner-html-fix');
var _svgInnerHtmlFix = require("../compat/svg-inner-html-fix");
var _textNodeMergingFix = require('../compat/text-node-merging-fix');
var _textNodeMergingFix = require("../compat/text-node-merging-fix");

@@ -22,2 +22,22 @@ exports.insertHTMLBefore = _insertHTMLBefore;

function _defaults(obj, defaults) {
var keys = Object.getOwnPropertyNames(defaults);for (var i = 0; i < keys.length; i++) {
var key = keys[i];var value = Object.getOwnPropertyDescriptor(defaults, key);if (value && value.configurable && obj[key] === undefined) {
Object.defineProperty(obj, key, value);
}
}return obj;
}
function _possibleConstructorReturn(self, call) {
if (!self) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}return call && (typeof call === "object" || typeof call === "function") ? call : self;
}
function _inherits(subClass, superClass) {
if (typeof superClass !== "function" && superClass !== null) {
throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
}subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } });if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass);
}
function _classCallCheck(instance, Constructor) {

@@ -57,39 +77,62 @@ if (!(instance instanceof Constructor)) {

}
var DOMOperations = exports.DOMOperations = function () {
function DOMOperations(document) {
_classCallCheck(this, DOMOperations);
this.document = document;
this.uselessElement = this.document.createElement('div');
}
DOMOperations.prototype.createElement = function createElement(tag, context) {
var isElementInSVGNamespace = void 0,
isHTMLIntegrationPoint = void 0;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error('Cannot create a ' + tag + ' inside an SVG context');
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
};
DOMOperations.prototype.insertBefore = function insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
};
DOMOperations.prototype.insertHTMLBefore = function insertHTMLBefore(_parent, nextSibling, html) {
return _insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
};
DOMOperations.prototype.createTextNode = function createTextNode(text) {
return this.document.createTextNode(text);
};
DOMOperations.prototype.createComment = function createComment(data) {
return this.document.createComment(data);
};
return DOMOperations;
}();
var DOM = exports.DOM = undefined;
(function (DOM) {
var TreeConstruction = function () {
function TreeConstruction(document) {
var TreeConstruction = function (_DOMOperations) {
_inherits(TreeConstruction, _DOMOperations);
function TreeConstruction() {
_classCallCheck(this, TreeConstruction);
this.document = document;
this.setupUselessElement();
return _possibleConstructorReturn(this, _DOMOperations.apply(this, arguments));
}
TreeConstruction.prototype.setupUselessElement = function setupUselessElement() {
this.uselessElement = this.document.createElement('div');
};
TreeConstruction.prototype.createElement = function createElement(tag, context) {
var isElementInSVGNamespace = void 0,
isHTMLIntegrationPoint = void 0;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error('Cannot create a ' + tag + ' inside an SVG context');
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
};
TreeConstruction.prototype.createElementNS = function createElementNS(namespace, tag) {

@@ -107,20 +150,4 @@ return this.document.createElementNS(namespace, tag);

TreeConstruction.prototype.createTextNode = function createTextNode(text) {
return this.document.createTextNode(text);
};
TreeConstruction.prototype.createComment = function createComment(data) {
return this.document.createComment(data);
};
TreeConstruction.prototype.insertBefore = function insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
};
TreeConstruction.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
return _insertHTMLBefore(this.uselessElement, parent, reference, html);
};
return TreeConstruction;
}();
}(DOMOperations);

@@ -134,9 +161,13 @@ DOM.TreeConstruction = TreeConstruction;

})(DOM || (exports.DOM = DOM = {}));
var DOMChanges = exports.DOMChanges = function () {
var DOMChanges = exports.DOMChanges = function (_DOMOperations2) {
_inherits(DOMChanges, _DOMOperations2);
function DOMChanges(document) {
_classCallCheck(this, DOMChanges);
this.document = document;
this.namespace = null;
this.uselessElement = this.document.createElement('div');
var _this2 = _possibleConstructorReturn(this, _DOMOperations2.call(this, document));
_this2.document = document;
_this2.namespace = null;
return _this2;
}

@@ -160,37 +191,2 @@

DOMChanges.prototype.createTextNode = function createTextNode(text) {
return this.document.createTextNode(text);
};
DOMChanges.prototype.createComment = function createComment(data) {
return this.document.createComment(data);
};
DOMChanges.prototype.createElement = function createElement(tag, context) {
var isElementInSVGNamespace = void 0,
isHTMLIntegrationPoint = void 0;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error('Cannot create a ' + tag + ' inside an SVG context');
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
};
DOMChanges.prototype.insertHTMLBefore = function insertHTMLBefore(_parent, nextSibling, html) {
return _insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
};
DOMChanges.prototype.insertNodeBefore = function insertNodeBefore(parent, node, reference) {

@@ -224,3 +220,3 @@ if (isDocumentFragment(node)) {

return DOMChanges;
}();
}(DOMOperations);
function _insertHTMLBefore(_useless, _parent, _nextSibling, html) {

@@ -268,2 +264,2 @@ // TypeScript vendored an old version of the DOM spec where `insertAdjacentHTML`

var DOMTreeConstruction = exports.DOMTreeConstruction = DOM.DOMTreeConstruction;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vaGVscGVyLmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwiU2luZ2xlTm9kZUJvdW5kcyIsImRvbUNoYW5nZXMiLCJkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4IiwidHJlZUNvbnN0cnVjdGlvbiIsInRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXgiLCJkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCIsInRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4IiwiZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4IiwidHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4IiwiU1ZHX05BTUVTUEFDRSIsIlNWR19JTlRFR1JBVElPTl9QT0lOVFMiLCJmb3JlaWduT2JqZWN0IiwiZGVzYyIsInRpdGxlIiwiQkxBQ0tMSVNUX1RBQkxFIiwiT2JqZWN0IiwiY3JlYXRlIiwiZm9yRWFjaCIsInRhZyIsIldISVRFU1BBQ0UiLCJkb2MiLCJkb2N1bWVudCIsImlzV2hpdGVzcGFjZSIsInN0cmluZyIsInRlc3QiLCJtb3ZlTm9kZXNCZWZvcmUiLCJzb3VyY2UiLCJ0YXJnZXQiLCJuZXh0U2libGluZyIsImZpcnN0IiwiZmlyc3RDaGlsZCIsImxhc3QiLCJjdXJyZW50IiwiaW5zZXJ0QmVmb3JlIiwiRE9NIiwiVHJlZUNvbnN0cnVjdGlvbiIsInNldHVwVXNlbGVzc0VsZW1lbnQiLCJ1c2VsZXNzRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjb250ZXh0IiwiaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UiLCJpc0hUTUxJbnRlZ3JhdGlvblBvaW50IiwibmFtZXNwYWNlVVJJIiwidGFnTmFtZSIsIkVycm9yIiwiY3JlYXRlRWxlbWVudE5TIiwibmFtZXNwYWNlIiwic2V0QXR0cmlidXRlIiwiZWxlbWVudCIsIm5hbWUiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZU5TIiwiY3JlYXRlVGV4dE5vZGUiLCJ0ZXh0IiwiY3JlYXRlQ29tbWVudCIsImRhdGEiLCJwYXJlbnQiLCJub2RlIiwicmVmZXJlbmNlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsImh0bWwiLCJhcHBsaWVkVHJlZUNvbnRydWN0aW9uIiwiRE9NVHJlZUNvbnN0cnVjdGlvbiIsIkRPTUNoYW5nZXMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsIl9wYXJlbnQiLCJpbnNlcnROb2RlQmVmb3JlIiwiaXNEb2N1bWVudEZyYWdtZW50IiwibGFzdENoaWxkIiwiaW5zZXJ0VGV4dEJlZm9yZSIsInRleHROb2RlIiwiaW5zZXJ0QWZ0ZXIiLCJfdXNlbGVzcyIsIl9uZXh0U2libGluZyIsInVzZWxlc3MiLCJwcmV2IiwicHJldmlvdXNTaWJsaW5nIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiSFRNTEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUiLCJoZWxwZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdCTyxBQUFTO1FBR1QsQUFBUzs7QUFuQmhCLEFBQVMsQUFBZ0IsQUFBd0I7O0FBQ2pELEFBQVMsQUFBYyxBQUEyQixBQUFvQixBQUF1Qzs7QUFDN0csQUFBUyxBQUFjLEFBQXlCLEFBQW9CLEFBQXFDOztBQUN6RyxBQUFTLEFBQWMsQUFBMEIsQUFBb0IsQUFBc0MsQUFDM0c7Ozs7Ozs7Ozs7O0FBQU8sSUFBTSx3Q0FBTixBQUFzQjtBQUM3QjtBQUNBLElBQU0seUJBQXlCLEVBQUUsZUFBRixBQUFpQixHQUFHLE1BQXBCLEFBQTBCLEdBQUcsT0FBNUQsQUFBK0IsQUFBb0M7QUFDbkU7QUFDQTtBQUNBO0FBQ0E7QUFDQSxBQUNBO0FBQU8sSUFBTSw0Q0FBa0IsT0FBQSxBQUFPLE9BQS9CLEFBQXdCLEFBQWM7QUFDN0MsQ0FBQSxBQUFDLEtBQUQsQUFBTSxPQUFOLEFBQWEsY0FBYixBQUEyQixRQUEzQixBQUFtQyxNQUFuQyxBQUF5QyxVQUF6QyxBQUFtRCxRQUFuRCxBQUEyRCxNQUEzRCxBQUFpRSxPQUFqRSxBQUF3RSxN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QUEvQixBQUE4QyxBQUM5QztlQUFPLFlBQVAsQUFBbUIsQUFDdEI7QUFITSxLQUFBLE1BR0EsQUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7ZUFBQSxBQUFPLGFBQVAsQUFBb0IsU0FBcEIsQUFBNkIsQUFDN0I7Z0JBQUEsQUFBUSxtQkFBUixBQUEyQixlQUEzQixBQUEwQyxBQUMxQztlQUFPLFFBQVAsQUFBZSxBQUNmO2VBQUEsQUFBTyxZQUFQLEFBQW1CLEFBQ3RCO0FBQ0Q7UUFBSSxRQUFRLE9BQU8sS0FBUCxBQUFZLGNBQWMsT0FBdEMsQUFBNkMsQUFDN0M7V0FBTyxBQUFJLDJCQUFKLEFBQW1CLFFBQW5CLEFBQTJCLE9BQWxDLEFBQU8sQUFBa0MsQUFDNUM7O0FBQ0QsU0FBQSxBQUFTLG1CQUFULEFBQTRCLE1BQU0sQUFDOUI7V0FBTyxLQUFBLEFBQUssYUFBYSxLQUF6QixBQUE4QixBQUNqQzs7QUFDRCxJQUFJLFNBQUosQUFBYTtBQUNiLFNBQVMsb0NBQUEsQUFBeUIsS0FBbEMsQUFBUyxBQUE4QjtBQUN2QyxTQUFTLDhCQUFBLEFBQTBCLEtBQW5DLEFBQVMsQUFBK0I7QUFDeEMsU0FBUyxpQ0FBQSxBQUF3QixLQUF4QixBQUE2QixRQUF0QyxBQUFTLEFBQXFDLEFBQzlDO2tCQUFBLEFBQWUsQUFDZjtBQUFPLElBQU0sb0RBQXNCLElBQTVCLEFBQWdDIiwiZmlsZSI6ImxpYi9kb20vaGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uY3JldGVCb3VuZHMsIFNpbmdsZU5vZGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4LCB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXggfSBmcm9tICcuLi9jb21wYXQvaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IHsgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCwgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeCB9IGZyb20gJy4uL2NvbXBhdC9zdmctaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IHsgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzTm9kZU1lcmdpbmdGaXgsIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4IH0gZnJvbSAnLi4vY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeCc7XG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbmNvbnN0IFNWR19JTlRFR1JBVElPTl9QT0lOVFMgPSB7IGZvcmVpZ25PYmplY3Q6IDEsIGRlc2M6IDEsIHRpdGxlOiAxIH07XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2FkanVzdC1zdmctYXR0cmlidXRlc1xuLy8gVE9ETzogQWRqdXN0IFNWRyBhdHRyaWJ1dGVzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbi8vIFRPRE86IEFkanVzdCBTVkcgZWxlbWVudHNcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluZm9yZWlnblxuZXhwb3J0IGNvbnN0IEJMQUNLTElTVF9UQUJMRSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5bXCJiXCIsIFwiYmlnXCIsIFwiYmxvY2txdW90ZVwiLCBcImJvZHlcIiwgXCJiclwiLCBcImNlbnRlclwiLCBcImNvZGVcIiwgXCJkZFwiLCBcImRpdlwiLCBcImRsXCIsIFwiZHRcIiwgXCJlbVwiLCBcImVtYmVkXCIsIFwiaDFcIiwgXCJoMlwiLCBcImgzXCIsIFwiaDRcIiwgXCJoNVwiLCBcImg2XCIsIFwiaGVhZFwiLCBcImhyXCIsIFwiaVwiLCBcImltZ1wiLCBcImxpXCIsIFwibGlzdGluZ1wiLCBcIm1haW5cIiwgXCJtZXRhXCIsIFwibm9iclwiLCBcIm9sXCIsIFwicFwiLCBcInByZVwiLCBcInJ1YnlcIiwgXCJzXCIsIFwic21hbGxcIiwgXCJzcGFuXCIsIFwic3Ryb25nXCIsIFwic3RyaWtlXCIsIFwic3ViXCIsIFwic3VwXCIsIFwidGFibGVcIiwgXCJ0dFwiLCBcInVcIiwgXCJ1bFwiLCBcInZhclwiXS5mb3JFYWNoKHRhZyA9PiBCTEFDS0xJU1RfVEFCTEVbdGFnXSA9IDEpO1xuY29uc3QgV0hJVEVTUEFDRSA9IC9bXFx0LVxcciBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHVGRUZGXS87XG5sZXQgZG9jID0gdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkb2N1bWVudDtcbmV4cG9ydCBmdW5jdGlvbiBpc1doaXRlc3BhY2Uoc3RyaW5nKSB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0UudGVzdChzdHJpbmcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVOb2Rlc0JlZm9yZShzb3VyY2UsIHRhcmdldCwgbmV4dFNpYmxpbmcpIHtcbiAgICBsZXQgZmlyc3QgPSBzb3VyY2UuZmlyc3RDaGlsZDtcbiAgICBsZXQgbGFzdCA9IG51bGw7XG4gICAgbGV0IGN1cnJlbnQgPSBmaXJzdDtcbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICBsYXN0ID0gY3VycmVudDtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG4gICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobGFzdCwgbmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgICByZXR1cm4gW2ZpcnN0LCBsYXN0XTtcbn1cbmV4cG9ydCB2YXIgRE9NO1xuKGZ1bmN0aW9uIChET00pIHtcbiAgICBjbGFzcyBUcmVlQ29uc3RydWN0aW9uIHtcbiAgICAgICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgICAgICAgICAgIHRoaXMuc2V0dXBVc2VsZXNzRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHNldHVwVXNlbGVzc0VsZW1lbnQoKSB7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgfVxuICAgICAgICBjcmVhdGVFbGVtZW50KHRhZywgY29udGV4dCkge1xuICAgICAgICAgICAgbGV0IGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlLCBpc0hUTUxJbnRlZ3JhdGlvblBvaW50O1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHtcbiAgICAgICAgICAgICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IGNvbnRleHQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFIHx8IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IFNWR19JTlRFR1JBVElPTl9QT0lOVFNbY29udGV4dC50YWdOYW1lXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChpc0VsZW1lbnRJblNWR05hbWVzcGFjZSAmJiAhaXNIVE1MSW50ZWdyYXRpb25Qb2ludCkge1xuICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSA8Zm9udD4gd2l0aCBjb2xvciwgZmFjZSwgb3JcbiAgICAgICAgICAgICAgICAvLyBzaXplIGF0dHJpYnV0ZXMsIHdoaWNoIGlzIGFsc28gZGlzYWxsb3dlZCBieSB0aGUgc3BlYy4gV2Ugc2hvdWxkIGZpeFxuICAgICAgICAgICAgICAgIC8vIHRoaXMuXG4gICAgICAgICAgICAgICAgaWYgKEJMQUNLTElTVF9UQUJMRVt0YWddKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGNyZWF0ZSBhICR7dGFnfSBpbnNpZGUgYW4gU1ZHIGNvbnRleHRgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UsIHRhZyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBjcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZyk7XG4gICAgICAgIH1cbiAgICAgICAgc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlLCBuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3JlYXRlVGV4dE5vZGUodGV4dCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgICAgIH1cbiAgICAgICAgY3JlYXRlQ29tbWVudChkYXRhKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHJldHVybiBpbnNlcnRIVE1MQmVmb3JlKHRoaXMudXNlbGVzc0VsZW1lbnQsIHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBET00uVHJlZUNvbnN0cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG4gICAgbGV0IGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uTm9kZU1lcmdpbmdGaXgoZG9jLCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uKTtcbiAgICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvblRhYmxlRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24sIFNWR19OQU1FU1BBQ0UpO1xuICAgIERPTS5ET01UcmVlQ29uc3RydWN0aW9uID0gYXBwbGllZFRyZWVDb250cnVjdGlvbjtcbn0pKERPTSB8fCAoRE9NID0ge30pKTtcbmV4cG9ydCBjbGFzcyBET01DaGFuZ2VzIHtcbiAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbnVsbDtcbiAgICAgICAgdGhpcy51c2VsZXNzRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgfVxuICAgIHNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICAgIHNldEF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgcmVtb3ZlQXR0cmlidXRlKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG4gICAgfVxuICAgIHJlbW92ZUF0dHJpYnV0ZU5TKGVsZW1lbnQsIG5hbWVzcGFjZSwgbmFtZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSk7XG4gICAgfVxuICAgIGNyZWF0ZVRleHROb2RlKHRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgfVxuICAgIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICAgIH1cbiAgICBjcmVhdGVFbGVtZW50KHRhZywgY29udGV4dCkge1xuICAgICAgICBsZXQgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UsIGlzSFRNTEludGVncmF0aW9uUG9pbnQ7XG4gICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IGNvbnRleHQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFIHx8IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gU1ZHX0lOVEVHUkFUSU9OX1BPSU5UU1tjb250ZXh0LnRhZ05hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VsZW1lbnRJblNWR05hbWVzcGFjZSAmJiAhaXNIVE1MSW50ZWdyYXRpb25Qb2ludCkge1xuICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgcHJvcGVybHkgaGFuZGxlIDxmb250PiB3aXRoIGNvbG9yLCBmYWNlLCBvclxuICAgICAgICAgICAgLy8gc2l6ZSBhdHRyaWJ1dGVzLCB3aGljaCBpcyBhbHNvIGRpc2FsbG93ZWQgYnkgdGhlIHNwZWMuIFdlIHNob3VsZCBmaXhcbiAgICAgICAgICAgIC8vIHRoaXMuXG4gICAgICAgICAgICBpZiAoQkxBQ0tMSVNUX1RBQkxFW3RhZ10pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgYSAke3RhZ30gaW5zaWRlIGFuIFNWRyBjb250ZXh0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05BTUVTUEFDRSwgdGFnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnNlcnRIVE1MQmVmb3JlKF9wYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgIHJldHVybiBpbnNlcnRIVE1MQmVmb3JlKHRoaXMudXNlbGVzc0VsZW1lbnQsIF9wYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICB9XG4gICAgaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICBpZiAoaXNEb2N1bWVudEZyYWdtZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBsZXQgeyBmaXJzdENoaWxkLCBsYXN0Q2hpbGQgfSA9IG5vZGU7XG4gICAgICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3RDaGlsZCwgbGFzdENoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydFRleHRCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgdGV4dCkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIHRleHROb2RlLCBuZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiB0ZXh0Tm9kZTtcbiAgICB9XG4gICAgaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgICBpbnNlcnRBZnRlcihlbGVtZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0SFRNTEJlZm9yZShfdXNlbGVzcywgX3BhcmVudCwgX25leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgLy8gVHlwZVNjcmlwdCB2ZW5kb3JlZCBhbiBvbGQgdmVyc2lvbiBvZiB0aGUgRE9NIHNwZWMgd2hlcmUgYGluc2VydEFkamFjZW50SFRNTGBcbiAgICAvLyBvbmx5IGV4aXN0cyBvbiBgSFRNTEVsZW1lbnRgIGJ1dCBub3Qgb24gYEVsZW1lbnRgLiBXZSBhY3R1YWxseSB3b3JrIHdpdGggdGhlXG4gICAgLy8gbmV3ZXIgdmVyc2lvbiBvZiB0aGUgRE9NIEFQSSBoZXJlIChhbmQgbW9ua2V5LXBhdGNoIHRoaXMgbWV0aG9kIGluIGAuL2NvbXBhdGBcbiAgICAvLyB3aGVuIHdlIGRldGVjdCBvbGRlciBicm93c2VycykuIFRoaXMgaXMgYSBoYWNrIHRvIHdvcmsgYXJvdW5kIHRoaXMgbGltaXRhdGlvbi5cbiAgICBsZXQgcGFyZW50ID0gX3BhcmVudDtcbiAgICBsZXQgdXNlbGVzcyA9IF91c2VsZXNzO1xuICAgIGxldCBuZXh0U2libGluZyA9IF9uZXh0U2libGluZztcbiAgICBsZXQgcHJldiA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICBsZXQgbGFzdDtcbiAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGlmIChuZXh0U2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IHBhcmVudC5sYXN0Q2hpbGQ7XG4gICAgfSBlbHNlIGlmIChuZXh0U2libGluZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIG5leHRTaWJsaW5nLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IG5leHRTaWJsaW5nLnByZXZpb3VzU2libGluZztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb24tZWxlbWVudCBub2RlcyBkbyBub3Qgc3VwcG9ydCBpbnNlcnRBZGphY2VudEhUTUwsIHNvIGFkZCBhblxuICAgICAgICAvLyBlbGVtZW50IGFuZCBjYWxsIGl0IG9uIHRoYXQgZWxlbWVudC4gVGhlbiByZW1vdmUgdGhlIGVsZW1lbnQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoaXMgYWxzbyBwcm90ZWN0cyBFZGdlLCBJRSBhbmQgRmlyZWZveCB3L28gdGhlIGluc3BlY3RvciBvcGVuXG4gICAgICAgIC8vIGZyb20gbWVyZ2luZyBhZGphY2VudCB0ZXh0IG5vZGVzLiBTZWUgLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LnRzXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodXNlbGVzcywgbmV4dFNpYmxpbmcpO1xuICAgICAgICB1c2VsZXNzLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IHVzZWxlc3MucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodXNlbGVzcyk7XG4gICAgfVxuICAgIGxldCBmaXJzdCA9IHByZXYgPyBwcmV2Lm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIGlzRG9jdW1lbnRGcmFnbWVudChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERTtcbn1cbmxldCBoZWxwZXIgPSBET01DaGFuZ2VzO1xuaGVscGVyID0gZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGRvbUNoYW5nZXNUYWJsZUVsZW1lbnRGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgoZG9jLCBoZWxwZXIsIFNWR19OQU1FU1BBQ0UpO1xuZXhwb3J0IGRlZmF1bHQgaGVscGVyO1xuZXhwb3J0IGNvbnN0IERPTVRyZWVDb25zdHJ1Y3Rpb24gPSBET00uRE9NVHJlZUNvbnN0cnVjdGlvbjsiXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vaGVscGVyLmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwiU2luZ2xlTm9kZUJvdW5kcyIsImRvbUNoYW5nZXMiLCJkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4IiwidHJlZUNvbnN0cnVjdGlvbiIsInRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXgiLCJkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCIsInRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4IiwiZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4IiwidHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4IiwiU1ZHX05BTUVTUEFDRSIsIlNWR19JTlRFR1JBVElPTl9QT0lOVFMiLCJmb3JlaWduT2JqZWN0IiwiZGVzYyIsInRpdGxlIiwiQkxBQ0tMSVNUX1RBQkxFIiwiT2JqZWN0IiwiY3JlYXRlIiwiZm9yRWFjaCIsInRhZyIsIldISVRFU1BBQ0UiLCJkb2MiLCJkb2N1bWVudCIsImlzV2hpdGVzcGFjZSIsInN0cmluZyIsInRlc3QiLCJtb3ZlTm9kZXNCZWZvcmUiLCJzb3VyY2UiLCJ0YXJnZXQiLCJuZXh0U2libGluZyIsImZpcnN0IiwiZmlyc3RDaGlsZCIsImxhc3QiLCJjdXJyZW50IiwiaW5zZXJ0QmVmb3JlIiwiRE9NT3BlcmF0aW9ucyIsInVzZWxlc3NFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNvbnRleHQiLCJpc0VsZW1lbnRJblNWR05hbWVzcGFjZSIsImlzSFRNTEludGVncmF0aW9uUG9pbnQiLCJuYW1lc3BhY2VVUkkiLCJ0YWdOYW1lIiwiRXJyb3IiLCJjcmVhdGVFbGVtZW50TlMiLCJwYXJlbnQiLCJub2RlIiwicmVmZXJlbmNlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsIl9wYXJlbnQiLCJodG1sIiwiY3JlYXRlVGV4dE5vZGUiLCJ0ZXh0IiwiY3JlYXRlQ29tbWVudCIsImRhdGEiLCJET00iLCJUcmVlQ29uc3RydWN0aW9uIiwibmFtZXNwYWNlIiwic2V0QXR0cmlidXRlIiwiZWxlbWVudCIsIm5hbWUiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZU5TIiwiYXBwbGllZFRyZWVDb250cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb24iLCJET01DaGFuZ2VzIiwicmVtb3ZlQXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJpbnNlcnROb2RlQmVmb3JlIiwiaXNEb2N1bWVudEZyYWdtZW50IiwibGFzdENoaWxkIiwiaW5zZXJ0VGV4dEJlZm9yZSIsInRleHROb2RlIiwiaW5zZXJ0QWZ0ZXIiLCJfdXNlbGVzcyIsIl9uZXh0U2libGluZyIsInVzZWxlc3MiLCJwcmV2IiwicHJldmlvdXNTaWJsaW5nIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiSFRNTEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUiLCJoZWxwZXIiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWdCTyxBQUFTO1FBR1QsQUFBUzs7QUFuQmhCLEFBQVMsQUFBZ0IsQUFBd0I7O0FBQ2pELEFBQVMsQUFBYyxBQUEyQixBQUFvQixBQUF1Qzs7QUFDN0csQUFBUyxBQUFjLEFBQXlCLEFBQW9CLEFBQXFDOztBQUN6RyxBQUFTLEFBQWMsQUFBMEIsQUFBb0IsQUFBc0MsQUFDM0c7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxJQUFNLHdDQUFOLEFBQXNCO0FBQzdCO0FBQ0EsSUFBTSx5QkFBeUIsRUFBRSxlQUFGLEFBQWlCLEdBQUcsTUFBcEIsQUFBMEIsR0FBRyxPQUE1RCxBQUErQixBQUFvQztBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEFBQ0E7QUFBTyxJQUFNLDRDQUFrQixPQUFBLEFBQU8sT0FBL0IsQUFBd0IsQUFBYztBQUM3QyxDQUFBLEFBQUMsS0FBRCxBQUFNLE9BQU4sQUFBYSxjQUFiLEFBQTJCLFFBQTNCLEFBQW1DLE1BQW5DLEFBQXlDLFVBQXpDLEFBQW1ELFFBQW5ELEFBQTJELE1BQTNELEFBQWlF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LEFBQ2pCO0FBSEQsZUFHVyx1QkFBSixBQUEyQixhQUFhLEFBQzNDO29CQUFBLEFBQVksbUJBQVosQUFBK0IsZUFBL0IsQUFBOEMsQUFDOUM7ZUFBTyxZQUFQLEFBQW1CLEFBQ3RCO0FBSE0sS0FBQSxNQUdBLEFBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO2VBQUEsQUFBTyxhQUFQLEFBQW9CLFNBQXBCLEFBQTZCLEFBQzdCO2dCQUFBLEFBQVEsbUJBQVIsQUFBMkIsZUFBM0IsQUFBMEMsQUFDMUM7ZUFBTyxRQUFQLEFBQWUsQUFDZjtlQUFBLEFBQU8sWUFBUCxBQUFtQixBQUN0QjtBQUNEO1FBQUksUUFBUSxPQUFPLEtBQVAsQUFBWSxjQUFjLE9BQXRDLEFBQTZDLEFBQzdDO1dBQU8sQUFBSSwyQkFBSixBQUFtQixRQUFuQixBQUEyQixPQUFsQyxBQUFPLEFBQWtDLEFBQzVDOztBQUNELFNBQUEsQUFBUyxtQkFBVCxBQUE0QixNQUFNLEFBQzlCO1dBQU8sS0FBQSxBQUFLLGFBQWEsS0FBekIsQUFBOEIsQUFDakM7O0FBQ0QsSUFBSSxTQUFKLEFBQWE7QUFDYixTQUFTLG9DQUFBLEFBQXlCLEtBQWxDLEFBQVMsQUFBOEI7QUFDdkMsU0FBUyw4QkFBQSxBQUEwQixLQUFuQyxBQUFTLEFBQStCO0FBQ3hDLFNBQVMsaUNBQUEsQUFBd0IsS0FBeEIsQUFBNkIsUUFBdEMsQUFBUyxBQUFxQyxBQUM5QztrQkFBQSxBQUFlLEFBQ2Y7QUFBTyxJQUFNLG9EQUFzQixJQUE1QixBQUFnQyIsImZpbGUiOiJsaWIvZG9tL2hlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzLCBTaW5nbGVOb2RlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1RhYmxlRWxlbWVudEZpeCwgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uVGFibGVFbGVtZW50Rml4IH0gZnJvbSAnLi4vY29tcGF0L2lubmVyLWh0bWwtZml4JztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgsIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvblN2Z0VsZW1lbnRGaXggfSBmcm9tICcuLi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4JztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4LCB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeCB9IGZyb20gJy4uL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50XG5jb25zdCBTVkdfSU5URUdSQVRJT05fUE9JTlRTID0geyBmb3JlaWduT2JqZWN0OiAxLCBkZXNjOiAxLCB0aXRsZTogMSB9O1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNhZGp1c3Qtc3ZnLWF0dHJpYnV0ZXNcbi8vIFRPRE86IEFkanVzdCBTVkcgYXR0cmlidXRlc1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG4vLyBUT0RPOiBBZGp1c3QgU1ZHIGVsZW1lbnRzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbmV4cG9ydCBjb25zdCBCTEFDS0xJU1RfVEFCTEUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuW1wiYlwiLCBcImJpZ1wiLCBcImJsb2NrcXVvdGVcIiwgXCJib2R5XCIsIFwiYnJcIiwgXCJjZW50ZXJcIiwgXCJjb2RlXCIsIFwiZGRcIiwgXCJkaXZcIiwgXCJkbFwiLCBcImR0XCIsIFwiZW1cIiwgXCJlbWJlZFwiLCBcImgxXCIsIFwiaDJcIiwgXCJoM1wiLCBcImg0XCIsIFwiaDVcIiwgXCJoNlwiLCBcImhlYWRcIiwgXCJoclwiLCBcImlcIiwgXCJpbWdcIiwgXCJsaVwiLCBcImxpc3RpbmdcIiwgXCJtYWluXCIsIFwibWV0YVwiLCBcIm5vYnJcIiwgXCJvbFwiLCBcInBcIiwgXCJwcmVcIiwgXCJydWJ5XCIsIFwic1wiLCBcInNtYWxsXCIsIFwic3BhblwiLCBcInN0cm9uZ1wiLCBcInN0cmlrZVwiLCBcInN1YlwiLCBcInN1cFwiLCBcInRhYmxlXCIsIFwidHRcIiwgXCJ1XCIsIFwidWxcIiwgXCJ2YXJcIl0uZm9yRWFjaCh0YWcgPT4gQkxBQ0tMSVNUX1RBQkxFW3RhZ10gPSAxKTtcbmNvbnN0IFdISVRFU1BBQ0UgPSAvW1xcdC1cXHIgXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1RkVGRl0vO1xubGV0IGRvYyA9IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogZG9jdW1lbnQ7XG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKHN0cmluZykge1xuICAgIHJldHVybiBXSElURVNQQUNFLnRlc3Qoc3RyaW5nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlTm9kZXNCZWZvcmUoc291cmNlLCB0YXJnZXQsIG5leHRTaWJsaW5nKSB7XG4gICAgbGV0IGZpcnN0ID0gc291cmNlLmZpcnN0Q2hpbGQ7XG4gICAgbGV0IGxhc3QgPSBudWxsO1xuICAgIGxldCBjdXJyZW50ID0gZmlyc3Q7XG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgbGFzdCA9IGN1cnJlbnQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRTaWJsaW5nO1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKGxhc3QsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG59XG5leHBvcnQgY2xhc3MgRE9NT3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLnVzZWxlc3NFbGVtZW50ID0gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICB9XG4gICAgY3JlYXRlRWxlbWVudCh0YWcsIGNvbnRleHQpIHtcbiAgICAgICAgbGV0IGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlLCBpc0hUTUxJbnRlZ3JhdGlvblBvaW50O1xuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSBjb250ZXh0Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSB8fCB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IFNWR19JTlRFR1JBVElPTl9QT0lOVFNbY29udGV4dC50YWdOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gdGFnID09PSAnc3ZnJztcbiAgICAgICAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSA8Zm9udD4gd2l0aCBjb2xvciwgZmFjZSwgb3JcbiAgICAgICAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAgICAgICAvLyB0aGlzLlxuICAgICAgICAgICAgaWYgKEJMQUNLTElTVF9UQUJMRVt0YWddKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGEgJHt0YWd9IGluc2lkZSBhbiBTVkcgY29udGV4dGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UsIHRhZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmZXJlbmNlKTtcbiAgICB9XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShfcGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICByZXR1cm4gaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLnVzZWxlc3NFbGVtZW50LCBfcGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgfVxuICAgIGNyZWF0ZVRleHROb2RlKHRleHQpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgfVxuICAgIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVDb21tZW50KGRhdGEpO1xuICAgIH1cbn1cbmV4cG9ydCB2YXIgRE9NO1xuKGZ1bmN0aW9uIChET00pIHtcbiAgICBjbGFzcyBUcmVlQ29uc3RydWN0aW9uIGV4dGVuZHMgRE9NT3BlcmF0aW9ucyB7XG4gICAgICAgIGNyZWF0ZUVsZW1lbnROUyhuYW1lc3BhY2UsIHRhZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnKTtcbiAgICAgICAgfVxuICAgICAgICBzZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUsIG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgaWYgKG5hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBET00uVHJlZUNvbnN0cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG4gICAgbGV0IGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uTm9kZU1lcmdpbmdGaXgoZG9jLCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uKTtcbiAgICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvblRhYmxlRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24sIFNWR19OQU1FU1BBQ0UpO1xuICAgIERPTS5ET01UcmVlQ29uc3RydWN0aW9uID0gYXBwbGllZFRyZWVDb250cnVjdGlvbjtcbn0pKERPTSB8fCAoRE9NID0ge30pKTtcbmV4cG9ydCBjbGFzcyBET01DaGFuZ2VzIGV4dGVuZHMgRE9NT3BlcmF0aW9ucyB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgICAgc3VwZXIoZG9jdW1lbnQpO1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMubmFtZXNwYWNlID0gbnVsbDtcbiAgICB9XG4gICAgc2V0QXR0cmlidXRlKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKG5hbWUsIHZhbHVlKTtcbiAgICB9XG4gICAgc2V0QXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICAgICAgICBlbGVtZW50LnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICByZW1vdmVBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSkge1xuICAgICAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9XG4gICAgcmVtb3ZlQXR0cmlidXRlTlMoZWxlbWVudCwgbmFtZXNwYWNlLCBuYW1lKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lKTtcbiAgICB9XG4gICAgaW5zZXJ0Tm9kZUJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICBpZiAoaXNEb2N1bWVudEZyYWdtZW50KG5vZGUpKSB7XG4gICAgICAgICAgICBsZXQgeyBmaXJzdENoaWxkLCBsYXN0Q2hpbGQgfSA9IG5vZGU7XG4gICAgICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3RDaGlsZCwgbGFzdENoaWxkKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlTm9kZUJvdW5kcyhwYXJlbnQsIG5vZGUpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGluc2VydFRleHRCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgdGV4dCkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSB0aGlzLmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIHRleHROb2RlLCBuZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiB0ZXh0Tm9kZTtcbiAgICB9XG4gICAgaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICBlbGVtZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgICBpbnNlcnRBZnRlcihlbGVtZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlLm5leHRTaWJsaW5nKTtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zZXJ0SFRNTEJlZm9yZShfdXNlbGVzcywgX3BhcmVudCwgX25leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgLy8gVHlwZVNjcmlwdCB2ZW5kb3JlZCBhbiBvbGQgdmVyc2lvbiBvZiB0aGUgRE9NIHNwZWMgd2hlcmUgYGluc2VydEFkamFjZW50SFRNTGBcbiAgICAvLyBvbmx5IGV4aXN0cyBvbiBgSFRNTEVsZW1lbnRgIGJ1dCBub3Qgb24gYEVsZW1lbnRgLiBXZSBhY3R1YWxseSB3b3JrIHdpdGggdGhlXG4gICAgLy8gbmV3ZXIgdmVyc2lvbiBvZiB0aGUgRE9NIEFQSSBoZXJlIChhbmQgbW9ua2V5LXBhdGNoIHRoaXMgbWV0aG9kIGluIGAuL2NvbXBhdGBcbiAgICAvLyB3aGVuIHdlIGRldGVjdCBvbGRlciBicm93c2VycykuIFRoaXMgaXMgYSBoYWNrIHRvIHdvcmsgYXJvdW5kIHRoaXMgbGltaXRhdGlvbi5cbiAgICBsZXQgcGFyZW50ID0gX3BhcmVudDtcbiAgICBsZXQgdXNlbGVzcyA9IF91c2VsZXNzO1xuICAgIGxldCBuZXh0U2libGluZyA9IF9uZXh0U2libGluZztcbiAgICBsZXQgcHJldiA9IG5leHRTaWJsaW5nID8gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nIDogcGFyZW50Lmxhc3RDaGlsZDtcbiAgICBsZXQgbGFzdDtcbiAgICBpZiAoaHRtbCA9PT0gbnVsbCB8fCBodG1sID09PSAnJykge1xuICAgICAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgbnVsbCwgbnVsbCk7XG4gICAgfVxuICAgIGlmIChuZXh0U2libGluZyA9PT0gbnVsbCkge1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVFbmQnLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IHBhcmVudC5sYXN0Q2hpbGQ7XG4gICAgfSBlbHNlIGlmIChuZXh0U2libGluZyBpbnN0YW5jZW9mIEhUTUxFbGVtZW50KSB7XG4gICAgICAgIG5leHRTaWJsaW5nLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IG5leHRTaWJsaW5nLnByZXZpb3VzU2libGluZztcbiAgICB9IGVsc2Uge1xuICAgICAgICAvLyBOb24tZWxlbWVudCBub2RlcyBkbyBub3Qgc3VwcG9ydCBpbnNlcnRBZGphY2VudEhUTUwsIHNvIGFkZCBhblxuICAgICAgICAvLyBlbGVtZW50IGFuZCBjYWxsIGl0IG9uIHRoYXQgZWxlbWVudC4gVGhlbiByZW1vdmUgdGhlIGVsZW1lbnQuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIFRoaXMgYWxzbyBwcm90ZWN0cyBFZGdlLCBJRSBhbmQgRmlyZWZveCB3L28gdGhlIGluc3BlY3RvciBvcGVuXG4gICAgICAgIC8vIGZyb20gbWVyZ2luZyBhZGphY2VudCB0ZXh0IG5vZGVzLiBTZWUgLi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LnRzXG4gICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodXNlbGVzcywgbmV4dFNpYmxpbmcpO1xuICAgICAgICB1c2VsZXNzLmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlQmVnaW4nLCBodG1sKTtcbiAgICAgICAgbGFzdCA9IHVzZWxlc3MucHJldmlvdXNTaWJsaW5nO1xuICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodXNlbGVzcyk7XG4gICAgfVxuICAgIGxldCBmaXJzdCA9IHByZXYgPyBwcmV2Lm5leHRTaWJsaW5nIDogcGFyZW50LmZpcnN0Q2hpbGQ7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIGlzRG9jdW1lbnRGcmFnbWVudChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERTtcbn1cbmxldCBoZWxwZXIgPSBET01DaGFuZ2VzO1xuaGVscGVyID0gZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGRvbUNoYW5nZXNUYWJsZUVsZW1lbnRGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgoZG9jLCBoZWxwZXIsIFNWR19OQU1FU1BBQ0UpO1xuZXhwb3J0IGRlZmF1bHQgaGVscGVyO1xuZXhwb3J0IGNvbnN0IERPTVRyZWVDb25zdHJ1Y3Rpb24gPSBET00uRE9NVHJlZUNvbnN0cnVjdGlvbjsiXX0=

@@ -109,3 +109,8 @@ "use strict";

}
var string = JSON.stringify(param);
var string = void 0;
try {
string = JSON.stringify(param);
} catch (e) {
return '<cannot generate JSON>';
}
if (string === undefined) {

@@ -246,3 +251,3 @@ return 'undefined';

case 58 /* PushArgs */:
return ['PushArgs', { positional: op1, synthetic: !!op2 }];
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:

@@ -390,2 +395,2 @@ return ['PrepareArgs', { state: Register[op1] }];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsIkdsaW1tZXJEZWJ1ZyIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBeUJPLEFBQVM7UUE0UFQsQUFBUzs7QUFyUmhCLEFBQVMsQUFBZ0IsQUFBVyxBQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RCxBQU1BOzs7Ozs7QUFBTyxJQUFBLEFBQUk7QUFDWCxDQUFDLFVBQUEsQUFBVSxVQUFVLEFBQ2pCO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQ2xDO0FBZkQsR0FlRyxnQ0FBYSxXQWZoQixBQWVHLEFBQXdCLEFBQzNCO0FBQU8sb0JBQUEsQUFBb0IsS0FBcEIsQUFBeUIsT0FBekIsQUFBZ0MsS0FBSyxBQUN4QztRQUFJLENBQUEsQUFBQyxTQUFMLEFBQWMsT0FBTyxBQUNqQjtBQURpQjtZQUFBLEFBRVgsVUFGVyxBQUVZLElBRlosQUFFWDtZQUZXLEFBRUYsWUFGRSxBQUVZLElBRlosQUFFRixBQUNmO0FBQ0E7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QUFDSjtBQUNEO2VBQUEsQUFBTyxLQUFQLEFBQVksQUFDZjtBQUNEO1dBQUEsQUFBTyxLQUFQLEFBQVksQUFDWjtRQUFJLE9BQUEsQUFBTyxZQUFZLE9BQUEsQUFBTyxTQUE5QixBQUF1QyxRQUFRLEFBQzNDO2FBQUssSUFBSSxLQUFULEFBQWEsR0FBRyxLQUFJLE9BQUEsQUFBTyxTQUEzQixBQUFvQyxRQUFwQyxBQUE0QyxNQUFLLEFBQzdDO3FCQUFTLE9BQUEsQUFBTyxTQUFoQixBQUFTLEFBQWdCLEtBQXpCLEFBQTZCLFFBQVEsUUFBckMsQUFBNkMsR0FBN0MsQUFBZ0QsQUFDbkQ7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZyA9IEpTT04uc3RyaW5naWZ5KHBhcmFtKTtcbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBwb3NpdGlvbmFsOiBvcDEsIHN5bnRoZXRpYzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDU5IC8qIFByZXBhcmVBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByZXBhcmVBcmdzJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NyZWF0ZUNvbXBvbmVudCcsIHsgZmxhZ3M6IG9wMSwgc3RhdGU6IFJlZ2lzdGVyW29wMl0gfV07XG4gICAgICAgICAgICBjYXNlIDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYyIC8qIFB1c2hDb21wb25lbnRPcGVyYXRpb25zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRPcGVyYXRpb25zJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MyAvKiBHZXRDb21wb25lbnRTZWxmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudFNlbGYnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NCAvKiBHZXRDb21wb25lbnRMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50TGF5b3V0JywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRDcmVhdGVFbGVtZW50JywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjggLyogRGlkUmVuZGVyTGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZFJlbmRlckxheW91dCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBQQVJUSUFMU1xuICAgICAgICAgICAgY2FzZSA2OSAvKiBHZXRQYXJ0aWFsVGVtcGxhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZVBhcnRpYWwnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDcwIC8qIFJlc29sdmVNYXliZUxvY2FsICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1Jlc29sdmVNYXliZUxvY2FsJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgLy8vIERFQlVHR0VSXG4gICAgICAgICAgICBjYXNlIDcxIC8qIERlYnVnZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RlYnVnZ2VyJywgeyBzeW1ib2xzOiBjLmdldE90aGVyKG9wMSksIGV2YWxJbmZvOiBjLmdldEFycmF5KG9wMikgfV07XG4gICAgICAgICAgICAvLy8gU1RBVEVNRU5UU1xuICAgICAgICAgICAgY2FzZSA3MiAvKiBTaXplICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICB9XG4gICAgcmV0dXJuIFsnJywge31dO1xufVxuZXhwb3J0IGNsYXNzIEFwcGVuZE9wY29kZXMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmV2YWx1YXRlT3Bjb2RlID0gZmlsbE51bGxzKDcyIC8qIFNpemUgKi8pLnNsaWNlKCk7XG4gICAgfVxuICAgIGFkZChuYW1lLCBldmFsdWF0ZSkge1xuICAgICAgICB0aGlzLmV2YWx1YXRlT3Bjb2RlW25hbWVdID0gZXZhbHVhdGU7XG4gICAgfVxuICAgIGV2YWx1YXRlKHZtLCBvcGNvZGUsIHR5cGUpIHtcbiAgICAgICAgbGV0IGZ1bmMgPSB0aGlzLmV2YWx1YXRlT3Bjb2RlW3R5cGVdO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgbGV0IFtuYW1lLCBwYXJhbXNdID0gZGVidWcodm0uY29uc3RhbnRzLCBvcGNvZGUudHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHt2bVsncGMnXSAtIDR9LiAke2xvZ09wY29kZShuYW1lLCBwYXJhbXMpfWApO1xuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coLi4uZGVidWcodm0uY29uc3RhbnRzLCB0eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICAgICAgZnVuYyh2bSwgb3Bjb2RlKTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBwYzogJWQsIHJhOiAlZCwgZnA6ICVkLCBzcDogJWQsIHMwOiAlTywgczE6ICVPLCB0MDogJU8sIHQxOiAlTycsICdjb2xvcjogb3JhbmdlJywgdm1bJ3BjJ10sIHZtWydyYSddLCB2bVsnZnAnXSwgdm1bJ3NwJ10sIHZtWydzMCddLCB2bVsnczEnXSwgdm1bJ3QwJ10sIHZtWyd0MSddKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBldmFsIHN0YWNrJywgJ2NvbG9yOiByZWQnLCB2bS5zdGFjay50b0FycmF5KCkpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHNjb3BlJywgJ2NvbG9yOiBncmVlbicsIHZtLnNjb3BlKClbJ3Nsb3RzJ10ubWFwKHMgPT4gcyAmJiBzWyd2YWx1ZSddID8gc1sndmFsdWUnXSgpIDogcykpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGVsZW1lbnRzJywgJ2NvbG9yOiBibHVlJywgdm0uZWxlbWVudHMoKVsnZWxlbWVudFN0YWNrJ10udG9BcnJheSgpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBBUFBFTkRfT1BDT0RFUyA9IG5ldyBBcHBlbmRPcGNvZGVzKCk7XG5leHBvcnQgY2xhc3MgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpbml0aWFsaXplR3VpZCh0aGlzKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4geyBndWlkOiB0aGlzLl9ndWlkLCB0eXBlOiB0aGlzLnR5cGUgfTtcbiAgICB9XG59XG5leHBvcnQgY2xhc3MgVXBkYXRpbmdPcGNvZGUgZXh0ZW5kcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgICAgIHRoaXMubmV4dCA9IG51bGw7XG4gICAgICAgIHRoaXMucHJldiA9IG51bGw7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGluc3BlY3Qob3Bjb2Rlcykge1xuICAgIGxldCBidWZmZXIgPSBbXTtcbiAgICBvcGNvZGVzLmZvckVhY2goKG9wY29kZSwgaSkgPT4ge1xuICAgICAgICBfaW5zcGVjdChvcGNvZGUudG9KU09OKCksIGJ1ZmZlciwgMCwgaSk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGJ1ZmZlci5qb2luKCcnKTtcbn1cbmZ1bmN0aW9uIF9pbnNwZWN0KG9wY29kZSwgYnVmZmVyLCBsZXZlbCwgaW5kZXgpIHtcbiAgICBsZXQgaW5kZW50YXRpb24gPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxldmVsOyBpKyspIHtcbiAgICAgICAgaW5kZW50YXRpb24ucHVzaCgnICAnKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goLi4uaW5kZW50YXRpb24pO1xuICAgIGJ1ZmZlci5wdXNoKGAke2luZGV4fS4gJHtvcGNvZGUudHlwZX1gKTtcbiAgICBpZiAob3Bjb2RlLmFyZ3MgfHwgb3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgICAgYnVmZmVyLnB1c2goJygnKTtcbiAgICAgICAgaWYgKG9wY29kZS5hcmdzKSB7XG4gICAgICAgICAgICBidWZmZXIucHVzaChvcGNvZGUuYXJncy5qb2luKCcsICcpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3Bjb2RlLmRldGFpbHMpIHtcbiAgICAgICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob3Bjb2RlLmRldGFpbHMpO1xuICAgICAgICAgICAgaWYgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgaWYgKG9wY29kZS5hcmdzICYmIG9wY29kZS5hcmdzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBidWZmZXIucHVzaCgnLCAnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goa2V5cy5tYXAoa2V5ID0+IGAke2tleX09JHtvcGNvZGUuZGV0YWlscyAmJiBvcGNvZGUuZGV0YWlsc1trZXldfWApLmpvaW4oJywgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcpJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKCdcXG4nKTtcbiAgICBpZiAob3Bjb2RlLmNoaWxkcmVuICYmIG9wY29kZS5jaGlsZHJlbi5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIF9pbnNwZWN0KG9wY29kZS5jaGlsZHJlbltpXSwgYnVmZmVyLCBsZXZlbCArIDEsIGkpO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBeUJPLEFBQVM7UUFpUVQsQUFBUzs7QUExUmhCLEFBQVMsQUFBZ0IsQUFBVyxBQUFtQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUV2RCxBQU1BOzs7Ozs7QUFBTyxJQUFBLEFBQUk7QUFDWCxDQUFDLFVBQUEsQUFBVSxVQUFVLEFBQ2pCO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO0FBQ0E7YUFBUyxTQUFBLEFBQVMsUUFBbEIsQUFBMEIsS0FBMUIsQUFBK0IsQUFDL0I7QUFDQTthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjthQUFTLFNBQUEsQUFBUyxRQUFsQixBQUEwQixLQUExQixBQUErQixBQUMvQjtBQUNBO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQy9CO2FBQVMsU0FBQSxBQUFTLFFBQWxCLEFBQTBCLEtBQTFCLEFBQStCLEFBQ2xDO0FBZkQsR0FlRyxnQ0FBYSxXQWZoQixBQWVHLEFBQXdCLEFBQzNCO0FBQU8sb0JBQUEsQUFBb0IsS0FBcEIsQUFBeUIsT0FBekIsQUFBZ0MsS0FBSyxBQUN4QztRQUFJLENBQUEsQUFBQyxTQUFMLEFBQWMsT0FBTyxBQUNqQjtBQURpQjtZQUFBLEFBRVgsVUFGVyxBQUVZLElBRlosQUFFWDtZQUZXLEFBRUYsWUFGRSxBQUVZLElBRlosQUFFRixBQUNmO0FBQ0E7O1lBQUksT0FB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QUEzRCxpQkFBQSxFQUFBLEFBQW1FLEtBQS9FLEFBQVksQUFBd0UsQUFDdkY7QUFDSjtBQUNEO2VBQUEsQUFBTyxLQUFQLEFBQVksQUFDZjtBQUNEO1dBQUEsQUFBTyxLQUFQLEFBQVksQUFDWjtRQUFJLE9BQUEsQUFBTyxZQUFZLE9BQUEsQUFBTyxTQUE5QixBQUF1QyxRQUFRLEFBQzNDO2FBQUssSUFBSSxLQUFULEFBQWEsR0FBRyxLQUFJLE9BQUEsQUFBTyxTQUEzQixBQUFvQyxRQUFwQyxBQUE0QyxNQUFLLEFBQzdDO3FCQUFTLE9BQUEsQUFBTyxTQUFoQixBQUFTLEFBQWdCLEtBQXpCLEFBQTZCLFFBQVEsUUFBckMsQUFBNkMsR0FBN0MsQUFBZ0QsQUFDbkQ7QUFDSjtBQUNKIiwiZmlsZSI6ImxpYi9vcGNvZGVzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaW5pdGlhbGl6ZUd1aWQsIGZpbGxOdWxscywgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcblxuLyoqXG4gKiBSZWdpc3RlcnNcbiAqXG4gKiBGb3IgdGhlIG1vc3QgcGFydCwgdGhlc2UgZm9sbG93cyBNSVBTIG5hbWluZyBjb252ZW50aW9ucywgaG93ZXZlciB0aGVcbiAqIHJlZ2lzdGVyIG51bWJlcnMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZXhwb3J0IHZhciBSZWdpc3RlcjtcbihmdW5jdGlvbiAoUmVnaXN0ZXIpIHtcbiAgICAvLyAkMCBvciAkcGMgKHByb2dyYW0gY291bnRlcik6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSBuZXh0IGluc3R1cmN0aW9uOyAtMSBtZWFucyBleGl0XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJwY1wiXSA9IDBdID0gXCJwY1wiO1xuICAgIC8vICQxIG9yICRyYSAocmV0dXJuIGFkZHJlc3MpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgcmV0dXJuXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJyYVwiXSA9IDFdID0gXCJyYVwiO1xuICAgIC8vICQyIG9yICRmcCAoZnJhbWUgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSBiYXNlIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiZnBcIl0gPSAyXSA9IFwiZnBcIjtcbiAgICAvLyAkMyBvciAkc3AgKHN0YWNrIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgdG9wIG9mIHRoZSBzdGFja1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wic3BcIl0gPSAzXSA9IFwic3BcIjtcbiAgICAvLyAkNC0kNSBvciAkczAtJHMxIChzYXZlZCk6IGNhbGxlZSBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMFwiXSA9IDRdID0gXCJzMFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczFcIl0gPSA1XSA9IFwiczFcIjtcbiAgICAvLyAkNi0kNyBvciAkdDAtJHQxICh0ZW1wb3Jhcmllcyk6IGNhbGxlciBzYXZlZCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MFwiXSA9IDZdID0gXCJ0MFwiO1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDFcIl0gPSA3XSA9IFwidDFcIjtcbn0pKFJlZ2lzdGVyIHx8IChSZWdpc3RlciA9IHt9KSk7XG5leHBvcnQgZnVuY3Rpb24gZGVidWdTbGljZShlbnYsIHN0YXJ0LCBlbmQpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIC8qIHRzbGludDpkaXNhYmxlOm5vLWNvbnNvbGUgKi9cbiAgICAgICAgbGV0IHsgcHJvZ3JhbSwgY29uc3RhbnRzIH0gPSBlbnY7XG4gICAgICAgIC8vIGNvbnNvbGUgaXMgbm90IGF2YWlsYWJsZSBpbiBJRTlcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIElFMTAgZG9lcyBub3QgaGF2ZSBgY29uc29sZS5ncm91cGBcbiAgICAgICAgaWYgKHR5cGVvZiBjb25zb2xlLmdyb3VwICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cChgJWMke3N0YXJ0fToke2VuZH1gLCAnY29sb3I6ICM5OTknKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IHN0YXJ0OyBpIDw9IGVuZDsgaSArPSA0KSB7XG4gICAgICAgICAgICBsZXQgeyB0eXBlLCBvcDEsIG9wMiwgb3AzIH0gPSBwcm9ncmFtLm9wY29kZShpKTtcbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKGNvbnN0YW50cywgdHlwZSwgb3AxLCBvcDIsIG9wMyk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtpfS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwRW5kKCk7XG4gICAgICAgIC8qIHRzbGludDplbmFibGU6bm8tY29uc29sZSAqL1xuICAgIH1cbn1cbmZ1bmN0aW9uIGxvZ09wY29kZSh0eXBlLCBwYXJhbXMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIGxldCBvdXQgPSB0eXBlO1xuICAgICAgICBpZiAocGFyYW1zKSB7XG4gICAgICAgICAgICBsZXQgYXJncyA9IE9iamVjdC5rZXlzKHBhcmFtcykubWFwKHAgPT4gYCAke3B9PSR7anNvbihwYXJhbXNbcF0pfWApLmpvaW4oJycpO1xuICAgICAgICAgICAgb3V0ICs9IGFyZ3M7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGAoJHtvdXR9KWA7XG4gICAgfVxufVxuZnVuY3Rpb24ganNvbihwYXJhbSkge1xuICAgIGlmICh0eXBlb2YgcGFyYW0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuICc8ZnVuY3Rpb24+JztcbiAgICB9XG4gICAgbGV0IHN0cmluZztcbiAgICB0cnkge1xuICAgICAgICBzdHJpbmcgPSBKU09OLnN0cmluZ2lmeShwYXJhbSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gJzxjYW5ub3QgZ2VuZXJhdGUgSlNPTj4nO1xuICAgIH1cbiAgICBpZiAoc3RyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuICd1bmRlZmluZWQnO1xuICAgIH1cbiAgICBsZXQgZGVidWcgPSBKU09OLnBhcnNlKHN0cmluZyk7XG4gICAgaWYgKHR5cGVvZiBkZWJ1ZyA9PT0gJ29iamVjdCcgJiYgZGVidWcgIT09IG51bGwgJiYgZGVidWcuR2xpbW1lckRlYnVnICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGRlYnVnLkdsaW1tZXJEZWJ1ZztcbiAgICB9XG4gICAgcmV0dXJuIHN0cmluZztcbn1cbmZ1bmN0aW9uIGRlYnVnKGMsIG9wLCBvcDEsIG9wMiwgb3AzKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBzd2l0Y2ggKG9wKSB7XG4gICAgICAgICAgICBjYXNlIDAgLyogQnVnICovOlxuICAgICAgICAgICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgICAgICAgICBjYXNlIDEgLyogSGVscGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hlbHBlcicsIHsgaGVscGVyOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDIgLyogRnVuY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRnVuY3Rpb24nLCB7IGZ1bmN0aW9uOiBjLmdldEZ1bmN0aW9uKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQgLyogU2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1IC8qIEdldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNiAvKiBHZXRQcm9wZXJ0eSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRQcm9wZXJ0eScsIHsga2V5OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA3IC8qIFB1c2hCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQmxvY2snLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDggLyogR2V0QmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0QmxvY2snLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA5IC8qIEhhc0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMCAvKiBIYXNCbG9ja1BhcmFtcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9ja1BhcmFtcycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTEgLyogQ29uY2F0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbmNhdCcsIHsgc2l6ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMiAvKiBJbW1lZGlhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW1tZWRpYXRlJywgeyB2YWx1ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMyAvKiBDb25zdGFudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25zdGFudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTQgLyogUHJpbWl0aXZlUmVmZXJlbmNlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1ByaW1pdGl2ZVJlZmVyZW5jZScsIHsgcHJpbWl0aXZlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE1IC8qIER1cCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEdXAnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdLCBvZmZzZXQ6IG9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMTYgLyogUG9wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcCcsIHsgY291bnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTcgLyogTG9hZCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydMb2FkJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTggLyogRmV0Y2ggKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmV0Y2gnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgLy8vIFBSRUxVREUgJiBFWElUXG4gICAgICAgICAgICBjYXNlIDE5IC8qIFJvb3RTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSb290U2NvcGUnLCB7IHN5bWJvbHM6IG9wMSwgYmluZENhbGxlclNjb3BlOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMjAgLyogQ2hpbGRTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDaGlsZFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMSAvKiBQb3BTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjIgLyogUmV0dXJuICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JldHVybicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBIVE1MXG4gICAgICAgICAgICBjYXNlIDIzIC8qIFRleHQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVGV4dCcsIHsgdGV4dDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjQgLyogQ29tbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21tZW50JywgeyBjb21tZW50OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNSAvKiBEeW5hbWljQ29udGVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQ29udGVudCcsIHsgdmFsdWU6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjYgLyogT3BlbkVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnQnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjcgLyogT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zJywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI4IC8qIE9wZW5EeW5hbWljRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRHluYW1pY0VsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDI5IC8qIFN0YXRpY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnU3RhdGljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdmFsdWU6IGMuZ2V0U3RyaW5nKG9wMiksIG5hbWVzcGFjZTogb3AzID8gYy5nZXRTdHJpbmcob3AzKSA6IG51bGwgfV07XG4gICAgICAgICAgICBjYXNlIDMwIC8qIER5bmFtaWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMxIC8qIER5bmFtaWNBdHRyTlMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHJOUycsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgbnM6IGMuZ2V0U3RyaW5nKG9wMiksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzIgLyogRmx1c2hFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZsdXNoRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzMgLyogQ2xvc2VFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Nsb3NlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBNT0RJRklFUlxuICAgICAgICAgICAgY2FzZSAzNCAvKiBNb2RpZmllciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydNb2RpZmllcicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBXT1JNSE9MRVxuICAgICAgICAgICAgY2FzZSAzNSAvKiBQdXNoUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzYgLyogUG9wUmVtb3RlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIERZTkFNSUMgU0NPUEVcbiAgICAgICAgICAgIGNhc2UgMzcgLyogQmluZER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydCaW5kRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOCAvKiBQdXNoRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM5IC8qIFBvcER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BEeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICAvLy8gVk1cbiAgICAgICAgICAgIGNhc2UgNDAgLyogQ29tcGlsZUR5bmFtaWNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlRHluYW1pY0Jsb2NrJywge31dO1xuICAgICAgICAgICAgY2FzZSA0MSAvKiBJbnZva2VTdGF0aWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlU3RhdGljJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MiAvKiBJbnZva2VEeW5hbWljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZUR5bmFtaWMnLCB7IGludm9rZXI6IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDMgLyogSnVtcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NCAvKiBKdW1wSWYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcElmJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NSAvKiBKdW1wVW5sZXNzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBVbmxlc3MnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ2IC8qIFB1c2hGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ3IC8qIFBvcEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0OCAvKiBFbnRlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlcicsIHsgYXJnczogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0OSAvKiBFeGl0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUwIC8qIFRlc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnVG9Cb29sZWFuJywge31dO1xuICAgICAgICAgICAgLy8vIExJU1RTXG4gICAgICAgICAgICBjYXNlIDUxIC8qIEVudGVyTGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFbnRlckxpc3QnLCB7IHN0YXJ0OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUyIC8qIEV4aXRMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0V4aXRMaXN0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MyAvKiBQdXRJdGVyYXRvciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXRJdGVyYXRvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTQgLyogSXRlcmF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJdGVyYXRlJywgeyBlbmQ6IG9wMSB9XTtcbiAgICAgICAgICAgIC8vLyBDT01QT05FTlRTXG4gICAgICAgICAgICBjYXNlIDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hDb21wb25lbnRNYW5hZ2VyJywgeyBkZWZpbml0aW9uOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXInLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbml0aWFsaXplQ29tcG9uZW50U3RhdGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU4IC8qIFB1c2hBcmdzICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hBcmdzJywgeyBzeW50aGV0aWM6ICEhb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1OSAvKiBQcmVwYXJlQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmVwYXJlQXJncycsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDYwIC8qIENyZWF0ZUNvbXBvbmVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDcmVhdGVDb21wb25lbnQnLCB7IGZsYWdzOiBvcDEsIHN0YXRlOiBSZWdpc3RlcltvcDJdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MSAvKiBSZWdpc3RlckNvbXBvbmVudERlc3RydWN0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50T3BlcmF0aW9ucycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjMgLyogR2V0Q29tcG9uZW50U2VsZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRTZWxmJywgeyBzdGF0ZTogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldENvbXBvbmVudExheW91dCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkQ3JlYXRlRWxlbWVudCcsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY4IC8qIERpZFJlbmRlckxheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEaWRSZW5kZXJMYXlvdXQnLCB7fV07XG4gICAgICAgICAgICAvLy8gUEFSVElBTFNcbiAgICAgICAgICAgIGNhc2UgNjkgLyogR2V0UGFydGlhbFRlbXBsYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVQYXJ0aWFsJywge31dO1xuICAgICAgICAgICAgY2FzZSA3MCAvKiBSZXNvbHZlTWF5YmVMb2NhbCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXNvbHZlTWF5YmVMb2NhbCcsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIC8vLyBERUJVR0dFUlxuICAgICAgICAgICAgY2FzZSA3MSAvKiBEZWJ1Z2dlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEZWJ1Z2dlcicsIHsgc3ltYm9sczogYy5nZXRPdGhlcihvcDEpLCBldmFsSW5mbzogYy5nZXRBcnJheShvcDIpIH1dO1xuICAgICAgICAgICAgLy8vIFNUQVRFTUVOVFNcbiAgICAgICAgICAgIGNhc2UgNzIgLyogU2l6ZSAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG4gICAgfVxuICAgIHJldHVybiBbJycsIHt9XTtcbn1cbmV4cG9ydCBjbGFzcyBBcHBlbmRPcGNvZGVzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZSA9IGZpbGxOdWxscyg3MiAvKiBTaXplICovKS5zbGljZSgpO1xuICAgIH1cbiAgICBhZGQobmFtZSwgZXZhbHVhdGUpIHtcbiAgICAgICAgdGhpcy5ldmFsdWF0ZU9wY29kZVtuYW1lXSA9IGV2YWx1YXRlO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSwgb3Bjb2RlLCB0eXBlKSB7XG4gICAgICAgIGxldCBmdW5jID0gdGhpcy5ldmFsdWF0ZU9wY29kZVt0eXBlXTtcbiAgICAgICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAgICAgLyogdHNsaW50OmRpc2FibGUgKi9cbiAgICAgICAgICAgIGxldCBbbmFtZSwgcGFyYW1zXSA9IGRlYnVnKHZtLmNvbnN0YW50cywgb3Bjb2RlLnR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7dm1bJ3BjJ10gLSA0fS4gJHtsb2dPcGNvZGUobmFtZSwgcGFyYW1zKX1gKTtcbiAgICAgICAgICAgIC8vIGNvbnNvbGUubG9nKC4uLmRlYnVnKHZtLmNvbnN0YW50cywgdHlwZSwgb3Bjb2RlLm9wMSwgb3Bjb2RlLm9wMiwgb3Bjb2RlLm9wMykpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgICAgIGZ1bmModm0sIG9wY29kZSk7XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gcGM6ICVkLCByYTogJWQsIGZwOiAlZCwgc3A6ICVkLCBzMDogJU8sIHMxOiAlTywgdDA6ICVPLCB0MTogJU8nLCAnY29sb3I6IG9yYW5nZScsIHZtWydwYyddLCB2bVsncmEnXSwgdm1bJ2ZwJ10sIHZtWydzcCddLCB2bVsnczAnXSwgdm1bJ3MxJ10sIHZtWyd0MCddLCB2bVsndDEnXSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZXZhbCBzdGFjaycsICdjb2xvcjogcmVkJywgdm0uc3RhY2sudG9BcnJheSgpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBzY29wZScsICdjb2xvcjogZ3JlZW4nLCB2bS5zY29wZSgpWydzbG90cyddLm1hcChzID0+IHMgJiYgc1sndmFsdWUnXSA/IHNbJ3ZhbHVlJ10oKSA6IHMpKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCclYyAtPiBlbGVtZW50cycsICdjb2xvcjogYmx1ZScsIHZtLmVsZW1lbnRzKClbJ2VsZW1lbnRTdGFjayddLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlICovXG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnQgY29uc3QgQVBQRU5EX09QQ09ERVMgPSBuZXcgQXBwZW5kT3Bjb2RlcygpO1xuZXhwb3J0IGNsYXNzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgaW5pdGlhbGl6ZUd1aWQodGhpcyk7XG4gICAgfVxuICAgIHRvSlNPTigpIHtcbiAgICAgICAgcmV0dXJuIHsgZ3VpZDogdGhpcy5fZ3VpZCwgdHlwZTogdGhpcy50eXBlIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIFVwZGF0aW5nT3Bjb2RlIGV4dGVuZHMgQWJzdHJhY3RPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlciguLi5hcmd1bWVudHMpO1xuICAgICAgICB0aGlzLm5leHQgPSBudWxsO1xuICAgICAgICB0aGlzLnByZXYgPSBudWxsO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNwZWN0KG9wY29kZXMpIHtcbiAgICBsZXQgYnVmZmVyID0gW107XG4gICAgb3Bjb2Rlcy5mb3JFYWNoKChvcGNvZGUsIGkpID0+IHtcbiAgICAgICAgX2luc3BlY3Qob3Bjb2RlLnRvSlNPTigpLCBidWZmZXIsIDAsIGkpO1xuICAgIH0pO1xuICAgIHJldHVybiBidWZmZXIuam9pbignJyk7XG59XG5mdW5jdGlvbiBfaW5zcGVjdChvcGNvZGUsIGJ1ZmZlciwgbGV2ZWwsIGluZGV4KSB7XG4gICAgbGV0IGluZGVudGF0aW9uID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZXZlbDsgaSsrKSB7XG4gICAgICAgIGluZGVudGF0aW9uLnB1c2goJyAgJyk7XG4gICAgfVxuICAgIGJ1ZmZlci5wdXNoKC4uLmluZGVudGF0aW9uKTtcbiAgICBidWZmZXIucHVzaChgJHtpbmRleH0uICR7b3Bjb2RlLnR5cGV9YCk7XG4gICAgaWYgKG9wY29kZS5hcmdzIHx8IG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgIGJ1ZmZlci5wdXNoKCcoJyk7XG4gICAgICAgIGlmIChvcGNvZGUuYXJncykge1xuICAgICAgICAgICAgYnVmZmVyLnB1c2gob3Bjb2RlLmFyZ3Muam9pbignLCAnKSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKG9wY29kZS5kZXRhaWxzKSB7XG4gICAgICAgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKG9wY29kZS5kZXRhaWxzKTtcbiAgICAgICAgICAgIGlmIChrZXlzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChvcGNvZGUuYXJncyAmJiBvcGNvZGUuYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgYnVmZmVyLnB1c2goJywgJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKGtleXMubWFwKGtleSA9PiBgJHtrZXl9PSR7b3Bjb2RlLmRldGFpbHMgJiYgb3Bjb2RlLmRldGFpbHNba2V5XX1gKS5qb2luKCcsICcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBidWZmZXIucHVzaCgnKScpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCgnXFxuJyk7XG4gICAgaWYgKG9wY29kZS5jaGlsZHJlbiAmJiBvcGNvZGUuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfaW5zcGVjdChvcGNvZGUuY2hpbGRyZW5baV0sIGJ1ZmZlciwgbGV2ZWwgKyAxLCBpKTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=

@@ -124,3 +124,3 @@ "use strict";

HTMLUpsert.insert = function insert(dom, cursor, value) {
var bounds = dom.insertHTMLBefore(cursor.element, value, cursor.nextSibling);
var bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, value);
return new HTMLUpsert(bounds);

@@ -159,3 +159,3 @@ };

var stringValue = value.toHTML();
var bounds = dom.insertHTMLBefore(cursor.element, stringValue, cursor.nextSibling);
var bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, stringValue);
return new SafeStringUpsert(bounds, stringValue);

@@ -213,2 +213,2 @@ };

}(Upsert);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJjbGVhciIsInNpbmdsZSIsIlNpbmdsZU5vZGVCb3VuZHMiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsInRvSFRNTCIsImlzTm9kZSIsIm5vZGVUeXBlIiwiaXNTdHJpbmciLCJVcHNlcnQiLCJib3VuZHMiLCJjYXV0aW91c0luc2VydCIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVPLEFBQVM7UUFHVCxBQUFTO1FBR1QsQUFBUztRQVNULEFBQVM7UUFZVCxBQUFTOztBQTdCaEIsQUFBUyxBQUFtQjs7QUFDNUIsQUFBUyxBQUFPLEFBQVEsQUFBd0IsQUFDaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxzQkFBQSxBQUFzQixPQUFPLEFBQ2hDO1dBQU8sT0FBQSxBQUFPLFVBQVAsQUFBaUIsWUFBWSxVQUE3QixBQUF1QyxRQUFRLE9BQU8sTUFBUCxBQUFhLFdBQW5FLEFBQThFLEFBQ2pGO0FBQ0Q7QUFBTyxnQkFBQSxBQUFnQixPQUFPLEFBQzFCO1dBQU8sT0FBQSxBQUFPLFVBQVAsQUFBaUIsWUFBWSxVQUE3QixBQUF1QyxRQUFRLE9BQU8sTUFBUCxBQUFhLGFBQW5FLEFBQWdGLEFBQ25GO0FBQ0Q7QUFBTyxrQkFBQSxBQUFrQixPQUFPLEFBQzVCO1dBQU8sT0FBQSxB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O3lCLEFBQ0QseUIsQUFBTyxLLEFBQUssT0FBTyxBQUNmO1lBQUksT0FBSixBQUFJLEFBQU8sUUFBUTtnQkFBQSxBQUNULFNBRFMsQUFDRSxLQURGLEFBQ1QsQUFDTjs7Z0JBQUksZ0JBQWdCLE9BQXBCLEFBQW9CLEFBQU8sQUFDM0I7Z0JBQUksY0FBYyxtQkFBbEIsQUFBa0IsQUFBTSxBQUN4QjtpQkFBQSxBQUFLLFNBQVMsSUFBQSxBQUFJLGlCQUFKLEFBQXFCLGVBQXJCLEFBQW9DLE9BQWxELEFBQWMsQUFBMkMsQUFDekQ7bUJBQUEsQUFBTyxBQUNWO0FBTkQsZUFNTyxBQUNIO21CQUFBLEFBQU8sQUFDVjtBQUNKO0E7OztFQWZvQixBIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2xlYXIsIHNpbmdsZSwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIHN0cmluZ1ZhbHVlLCBjdXJzb3IubmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJjbGVhciIsInNpbmdsZSIsIlNpbmdsZU5vZGVCb3VuZHMiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsInRvSFRNTCIsImlzTm9kZSIsIm5vZGVUeXBlIiwiaXNTdHJpbmciLCJVcHNlcnQiLCJib3VuZHMiLCJjYXV0aW91c0luc2VydCIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7OztRQUVPLEFBQVM7UUFHVCxBQUFTO1FBR1QsQUFBUztRQVNULEFBQVM7UUFZVCxBQUFTOztBQTdCaEIsQUFBUyxBQUFtQjs7QUFDNUIsQUFBUyxBQUFPLEFBQVEsQUFBd0IsQUFDaEQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBTyxzQkFBQSxBQUFzQixPQUFPLEFBQ2hDO1dBQU8sT0FBQSxBQUFPLFVBQVAsQUFBaUIsWUFBWSxVQUE3QixBQUF1QyxRQUFRLE9BQU8sTUFBUCxBQUFhLFdBQW5FLEFBQThFLEFBQ2pGO0FBQ0Q7QUFBTyxnQkFBQSxBQUFnQixPQUFPLEFBQzFCO1dBQU8sT0FBQSxBQUFPLFVBQVAsQUFBaUIsWUFBWSxVQUE3QixBQUF1QyxRQUFRLE9BQU8sTUFBUCxBQUFhLGFBQW5FLEFBQWdGLEFBQ25GO0FBQ0Q7QUFBTyxrQkFBQSxBQUFrQixPQUFPLEFBQzVCO1dBQU8sT0FBQSxB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O3lCLEFBQ0QseUIsQUFBTyxLLEFBQUssT0FBTyxBQUNmO1lBQUksT0FBSixBQUFJLEFBQU8sUUFBUTtnQkFBQSxBQUNULFNBRFMsQUFDRSxLQURGLEFBQ1QsQUFDTjs7Z0JBQUksZ0JBQWdCLE9BQXBCLEFBQW9CLEFBQU8sQUFDM0I7Z0JBQUksY0FBYyxtQkFBbEIsQUFBa0IsQUFBTSxBQUN4QjtpQkFBQSxBQUFLLFNBQVMsSUFBQSxBQUFJLGlCQUFKLEFBQXFCLGVBQXJCLEFBQW9DLE9BQWxELEFBQWMsQUFBMkMsQUFDekQ7bUJBQUEsQUFBTyxBQUNWO0FBTkQsZUFNTyxBQUNIO21CQUFBLEFBQU8sQUFDVjtBQUNKO0E7OztFQWZvQixBIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2xlYXIsIHNpbmdsZSwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZywgdmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==

@@ -40,11 +40,12 @@ "use strict";

Arguments.prototype.empty = function empty() {
this.setup(null, 0, true);
this.setup(null, true);
return this;
};
Arguments.prototype.setup = function setup(stack, positionalCount, synthetic) {
Arguments.prototype.setup = function setup(stack, synthetic) {
this.stack = stack;
var names = stack.fromTop(0);
var namedCount = names.length;
var start = positionalCount + namedCount + 1;
var positionalCount = stack.fromTop(namedCount + 1);
var start = positionalCount + namedCount + 2;
var positional = this.positional;

@@ -77,6 +78,3 @@ positional.setup(stack, start, positionalCount);

var pops = length + 1;
while (--pops >= 0) {
stack.pop();
}
stack.pop(length + 2);
};

@@ -359,2 +357,2 @@

exports.default = new Arguments();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJyZWZlcmVuY2VzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZU5hbWUiLCJzbGljZSIsIl9tYXAiLCJvdXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxBQUFTLEFBQU0sQUFBbUI7O0FBQ2xDLEFBQVMsQUFBcUI7O0FBQzlCLEFBQVMsQUFBb0IsQUFBMkIsQUFDeEQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUFBLEFBQWEsNENBQ1Q7eUJBQWM7OEJBQ1Y7O2FBQUEsQUFBSyxRQUFMLEFBQWEsQUFDYjthQUFBLEFBQUssYUFBYSxJQUFsQixBQUFrQixBQUFJLEFBQ3RCO2FBQUEsQUFBSyxRQUFRLElBQWIsQUFBYSxBQUFJLEFBQ3BCO0FBTEw7O3dCQUFBLEFBTUkseUJBQVEsQUFDSjthQUFBLEFBQUssTUFBTCxBQUFXLE1B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QjtxQkFBSyxJQUFJLElBQVQsQUFBYSxHQUFHLElBQUksTUFBcEIsQUFBMEIsUUFBMUIsQUFBa0MsS0FBSyxBQUNuQzt3QkFBSSxPQUFPLE1BQVgsQUFBVyxBQUFNLEFBQ2pCO3dCQUFBLEFBQUksUUFBUSxXQUFaLEFBQVksQUFBVyxBQUMxQjtBQUNKO0FBQ0Q7bUJBQUEsQUFBTyxBQUNWOzs7OztBQXVCTDs7a0JBQWUsSUFBZixBQUFlLEFBQUkiLCJmaWxlIjoibGliL3ZtL2FyZ3VtZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50cygpO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzKCk7XG4gICAgfVxuICAgIGVtcHR5KCkge1xuICAgICAgICB0aGlzLnNldHVwKG51bGwsIDAsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWxDb3VudCwgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgbGV0IG5hbWVzID0gc3RhY2suZnJvbVRvcCgwKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBzdGFydCA9IHBvc2l0aW9uYWxDb3VudCArIG5hbWVkQ291bnQgKyAxO1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICAgICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgc3RhcnQsIHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgICAgIG5hbWVkLnNldHVwKHN0YWNrLCBuYW1lZENvdW50LCBuYW1lcywgc3ludGhldGljKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5hdChwb3MpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lZC5nZXQobmFtZSk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC5jYXB0dXJlKCksXG4gICAgICAgICAgICBuYW1lZDogdGhpcy5uYW1lZC5jYXB0dXJlKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGxldCBwb3BzID0gbGVuZ3RoICsgMTtcbiAgICAgICAgd2hpbGUgKC0tcG9wcyA+PSAwKSB7XG4gICAgICAgICAgICBzdGFjay5wb3AoKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG4gICAgICAgIGlmICghdGFnKSB7XG4gICAgICAgICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgbGV0IHsgc3RhcnQsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy9cbiAgICAgICAgLy8gYXQoMCkgPT09IHBvczEgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIC8vIGF0KDEpID09PSBwb3MyID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBhdCgyKSA9PT0gcG9zMyA9PT0gdG9wIC0gKHN0YXJ0IC0gMilcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBzdGFydCAtIHBvc2l0aW9uIC0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHModGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgcmVmZXJlbmNlcywgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZU9mKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgfVxufVxuY2xhc3MgTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgbGVuZ3RoLCBuYW1lcywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICBpZiAoc3ludGhldGljKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBuYW1lcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgbmFtZXMoKSB7XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuICAgICAgICBpZiAoIW5hbWVzKSB7XG4gICAgICAgICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fcmVhbE5hbWVzLm1hcCh0aGlzLnNsaWNlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vIG5hbWVkRGljdDogeyBuYW1lZDE6IDEsIG5hbWVkMjogMCB9O1xuICAgICAgICAvL1xuICAgICAgICAvLyBnZXQoJ25hbWVkMScpID09PSBuYW1lZDEgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGdldCgnbmFtZWQyJykgPT09IG5hbWVkMiA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBsZW5ndGggLSBpZHg7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5nZXQobmFtZXNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbiAgICBzbGljZU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWVzLCByZWZlcmVuY2VzKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgbWFwKCkge1xuICAgICAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuICAgICAgICBpZiAoIW1hcCkge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgICAgICBtYXBbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwicG9zaXRpb25hbENvdW50Iiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3AiLCJfdGFnIiwiX3JlZmVyZW5jZXMiLCJwb3NpdGlvbiIsIkNhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyIsInJlZmVyZW5jZXMiLCJBcnJheSIsImkiLCJ2YWx1ZSIsIm1hcCIsInZhbHVlT2YiLCJjcmVhdGUiLCJpZHgiLCJwYXJzZUludCIsInJlZmVyZW5jZSIsIl9uYW1lcyIsIl9yZWFsTmFtZXMiLCJoYXMiLCJpbmRleE9mIiwiQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyIsInNsaWNlTmFtZSIsInNsaWNlIiwiX21hcCIsIm91dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLEFBQVMsQUFBTSxBQUFtQjs7QUFDbEMsQUFBUyxBQUFxQjs7QUFDOUIsQUFBUyxBQUFvQixBQUEyQixBQUN4RDs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBQUEsQUFBYSw0Q0FDVDt5QkFBYzs4QkFDVjs7YUFBQSxBQUFLLFFBQUwsQUFBYSxBQUNiO2FBQUEsQUFBSyxhQUFhLElBQWxCLEFBQWtCLEFBQUksQUFDdEI7YUFBQSxBQUFLLFFBQVEsSUFBYixBQUFhLEFBQUksQUFDcEI7QUFMTDs7d0JBQUEsQUFNSSx5QkFBUSxBQUNKO2FBQUEsQUFBSyxNQUFMLEFBQVcsTUFBWCxBQUFp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QUFwQixBQUEwQixRQUExQixBQUFrQyxLQUFLLEFBQ25DO3dCQUFJLE9BQU8sTUFBWCxBQUFXLEFBQU0sQUFDakI7d0JBQUEsQUFBSSxRQUFRLFdBQVosQUFBWSxBQUFXLEFBQzFCO0FBQ0o7QUFDRDttQkFBQSxBQUFPLEFBQ1Y7Ozs7O0FBdUJMOztrQkFBZSxJQUFmLEFBQWUsQUFBSSIsImZpbGUiOiJsaWIvdm0vYXJndW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHMoKTtcbiAgICB9XG4gICAgZW1wdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0dXAobnVsbCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgbGV0IG5hbWVzID0gc3RhY2suZnJvbVRvcCgwKTtcbiAgICAgICAgbGV0IG5hbWVkQ291bnQgPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBzdGFjay5mcm9tVG9wKG5hbWVkQ291bnQgKyAxKTtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcG9zaXRpb25hbENvdW50ICsgbmFtZWRDb3VudCArIDI7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgICAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBzdGFydCwgcG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICAgICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQ291bnQsIG5hbWVzLCBzeW50aGV0aWMpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvcykge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0KHBvcyk7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVkLmdldChuYW1lKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZzogdGhpcy50YWcsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKSxcbiAgICAgICAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLmNhcHR1cmUoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgc3RhY2sucG9wKGxlbmd0aCArIDIpO1xuICAgIH1cbn1cbmNsYXNzIFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBzdGFydCwgbGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5zdGFydCA9IHN0YXJ0O1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIGxldCB0YWcgPSB0aGlzLl90YWc7XG4gICAgICAgIGlmICghdGFnKSB7XG4gICAgICAgICAgICB0YWcgPSB0aGlzLl90YWcgPSBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRhZztcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgbGV0IHsgc3RhcnQsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKHBvc2l0aW9uIDwgMCB8fCBwb3NpdGlvbiA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy9cbiAgICAgICAgLy8gYXQoMCkgPT09IHBvczEgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIC8vIGF0KDEpID09PSBwb3MyID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBhdCgyKSA9PT0gcG9zMyA9PT0gdG9wIC0gKHN0YXJ0IC0gMilcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBzdGFydCAtIHBvc2l0aW9uIC0gMTtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHModGhpcy50YWcsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBuZXcgQXJyYXkobGVuZ3RoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5hdChpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgcmVmZXJlbmNlcywgbGVuZ3RoID0gcmVmZXJlbmNlcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzW3Bvc2l0aW9uXTtcbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXMubWFwKHRoaXMudmFsdWVPZik7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IHJlZmVyZW5jZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgaWYgKG5hbWUgPT09ICdsZW5ndGgnKSB7XG4gICAgICAgICAgICByZXR1cm4gUHJpbWl0aXZlUmVmZXJlbmNlLmNyZWF0ZShsZW5ndGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IGlkeCA9IHBhcnNlSW50KG5hbWUsIDEwKTtcbiAgICAgICAgICAgIGlmIChpZHggPCAwIHx8IGlkeCA+PSBsZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZU9mKHJlZmVyZW5jZSkge1xuICAgICAgICByZXR1cm4gcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgfVxufVxuY2xhc3MgTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICB0aGlzLmxlbmd0aCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgbGVuZ3RoLCBuYW1lcywgc3ludGhldGljKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBzdGFjaztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgICAgICBpZiAoc3ludGhldGljKSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG5hbWVzO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLl9uYW1lcyA9IG51bGw7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBuYW1lcztcbiAgICAgICAgfVxuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgbmFtZXMoKSB7XG4gICAgICAgIGxldCBuYW1lcyA9IHRoaXMuX25hbWVzO1xuICAgICAgICBpZiAoIW5hbWVzKSB7XG4gICAgICAgICAgICBuYW1lcyA9IHRoaXMuX25hbWVzID0gdGhpcy5fcmVhbE5hbWVzLm1hcCh0aGlzLnNsaWNlTmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5hbWVzO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vIG5hbWVkRGljdDogeyBuYW1lZDE6IDEsIG5hbWVkMjogMCB9O1xuICAgICAgICAvL1xuICAgICAgICAvLyBnZXQoJ25hbWVkMScpID09PSBuYW1lZDEgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGdldCgnbmFtZWQyJykgPT09IG5hbWVkMiA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgbGV0IGZyb21Ub3AgPSBsZW5ndGggLSBpZHg7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5uYW1lcywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICAgICAgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXMgPSBbXTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VzW2ldID0gdGhpcy5nZXQobmFtZXNbaV0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbiAgICBzbGljZU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gbmFtZS5zbGljZSgxKTtcbiAgICB9XG59XG5jbGFzcyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIG5hbWVzLCByZWZlcmVuY2VzKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLm5hbWVzID0gbmFtZXM7XG4gICAgICAgIHRoaXMucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXM7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICB0aGlzLl9tYXAgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgbWFwKCkge1xuICAgICAgICBsZXQgbWFwID0gdGhpcy5fbWFwO1xuICAgICAgICBpZiAoIW1hcCkge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgICAgICBtYXAgPSB0aGlzLl9tYXAgPSBkaWN0KCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgICAgICBtYXBbbmFtZV0gPSByZWZlcmVuY2VzW2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBtYXA7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IGlkeCA9IG5hbWVzLmluZGV4T2YobmFtZSk7XG4gICAgICAgIGlmIChpZHggPT09IC0xKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUoKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgb3V0ID0gZGljdCgpO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgb3V0W25hbWVdID0gcmVmZXJlbmNlc1tpXS52YWx1ZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBvdXQ7XG4gICAgfVxufVxuZXhwb3J0IGRlZmF1bHQgbmV3IEFyZ3VtZW50cygpOyJdfQ==

@@ -45,5 +45,5 @@ import { ConcreteBounds } from '../bounds';

return class DOMTreeConstructionWithInnerHTMLFix extends DOMTreeConstructionClass {
insertHTMLBefore(parent, html, reference) {
insertHTMLBefore(parent, referenceNode, html) {
if (html === null || html === '') {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, referenceNode, html);
}

@@ -53,5 +53,5 @@ let parentTag = parent.tagName.toLowerCase();

if (wrapper === undefined) {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, referenceNode, html);
}
return fixInnerHTML(parent, wrapper, div, html, reference);
return fixInnerHTML(parent, wrapper, div, html, referenceNode);
}

@@ -58,0 +58,0 @@ };

@@ -41,8 +41,8 @@ import { ConcreteBounds } from '../bounds';

return class TreeConstructionWithSVGInnerHTMLFix extends TreeConstructionClass {
insertHTMLBefore(parent, html, reference) {
insertHTMLBefore(parent, reference, html) {
if (html === null || html === '') {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, reference, html);
}
if (parent.namespaceURI !== svgNamespace) {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, reference, html);
}

@@ -49,0 +49,0 @@ return fixSVG(parent, div, html, reference);

@@ -51,5 +51,5 @@ // Patch: Adjacent text node merging fix

}
insertHTMLBefore(parent, html, reference) {
insertHTMLBefore(parent, reference, html) {
if (html === null) {
return super.insertHTMLBefore(parent, html, reference);
return super.insertHTMLBefore(parent, reference, html);
}

@@ -62,3 +62,3 @@ let didSetUselessComment = false;

}
let bounds = super.insertHTMLBefore(parent, html, reference);
let bounds = super.insertHTMLBefore(parent, reference, html);
if (didSetUselessComment) {

@@ -65,0 +65,0 @@ parent.removeChild(this.uselessComment);

@@ -54,4 +54,4 @@ import { dict, EMPTY_ARRAY, expect, fillNulls, Stack } from '@glimmer/util';

// args
pushArgs(positional, synthetic) {
this.push(58 /* PushArgs */, positional, synthetic === true ? 1 : 0);
pushArgs(synthetic) {
this.push(58 /* PushArgs */, synthetic === true ? 1 : 0);
}

@@ -403,2 +403,3 @@ // helpers

}
this.pushImmediate(positional);
let names = EMPTY_ARRAY;

@@ -413,3 +414,3 @@ if (hash) {

this.pushImmediate(names);
this.pushArgs(positional, synthetic);
this.pushArgs(synthetic);
}

@@ -450,3 +451,3 @@ compile(expr) {

}
invokeComponent(attrs, params, hash, block, inverse = null) {
invokeComponent(attrs, params, hash, block = null, inverse = null) {
this.initializeComponentState();

@@ -462,3 +463,3 @@ this.fetch(Register.s0);

this.pushDynamicScope();
this.createComponent(Register.s0, true, inverse === null);
this.createComponent(Register.s0, block !== null, inverse !== null);
this.registerComponentDestructor(Register.s0);

@@ -465,0 +466,0 @@ this.getComponentSelf(Register.s0);

@@ -29,5 +29,5 @@ import { combine, CONSTANT_TAG, isConst, ReferenceCache } from '@glimmer/reference';

});
APPEND_OPCODES.add(58 /* PushArgs */, (vm, { op1: positional, op2: synthetic }) => {
APPEND_OPCODES.add(58 /* PushArgs */, (vm, { op1: synthetic }) => {
let stack = vm.stack;
ARGS.setup(stack, positional, !!synthetic);
ARGS.setup(stack, !!synthetic);
stack.push(ARGS);

@@ -47,2 +47,3 @@ });

}
stack.push(positionalCount);
let names = Object.keys(named);

@@ -54,3 +55,3 @@ let namedCount = names.length;

stack.push(names);
args.setup(stack, positionalCount, true);
args.setup(stack, true);
}

@@ -57,0 +58,0 @@ stack.push(args);

@@ -31,33 +31,44 @@ import { ConcreteBounds, SingleNodeBounds } from '../bounds';

}
export var DOM;
(function (DOM) {
class TreeConstruction {
constructor(document) {
this.document = document;
this.setupUselessElement();
export class DOMOperations {
constructor(document) {
this.document = document;
this.uselessElement = this.document.createElement('div');
}
createElement(tag, context) {
let isElementInSVGNamespace, isHTMLIntegrationPoint;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
setupUselessElement() {
this.uselessElement = this.document.createElement('div');
}
createElement(tag, context) {
let isElementInSVGNamespace, isHTMLIntegrationPoint;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error(`Cannot create a ${tag} inside an SVG context`);
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error(`Cannot create a ${tag} inside an SVG context`);
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
}
insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
}
insertHTMLBefore(_parent, nextSibling, html) {
return insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
}
createTextNode(text) {
return this.document.createTextNode(text);
}
createComment(data) {
return this.document.createComment(data);
}
}
export var DOM;
(function (DOM) {
class TreeConstruction extends DOMOperations {
createElementNS(namespace, tag) {

@@ -73,14 +84,2 @@ return this.document.createElementNS(namespace, tag);

}
createTextNode(text) {
return this.document.createTextNode(text);
}
createComment(data) {
return this.document.createComment(data);
}
insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
}
insertHTMLBefore(parent, html, reference) {
return insertHTMLBefore(this.uselessElement, parent, reference, html);
}
}

@@ -94,7 +93,7 @@ DOM.TreeConstruction = TreeConstruction;

})(DOM || (DOM = {}));
export class DOMChanges {
export class DOMChanges extends DOMOperations {
constructor(document) {
super(document);
this.document = document;
this.namespace = null;
this.uselessElement = this.document.createElement('div');
}

@@ -113,32 +112,2 @@ setAttribute(element, name, value) {

}
createTextNode(text) {
return this.document.createTextNode(text);
}
createComment(data) {
return this.document.createComment(data);
}
createElement(tag, context) {
let isElementInSVGNamespace, isHTMLIntegrationPoint;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error(`Cannot create a ${tag} inside an SVG context`);
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
}
insertHTMLBefore(_parent, nextSibling, html) {
return insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
}
insertNodeBefore(parent, node, reference) {

@@ -145,0 +114,0 @@ if (isDocumentFragment(node)) {

@@ -62,3 +62,8 @@ import { initializeGuid, fillNulls, unreachable } from '@glimmer/util';

}
let string = JSON.stringify(param);
let string;
try {
string = JSON.stringify(param);
} catch (e) {
return '<cannot generate JSON>';
}
if (string === undefined) {

@@ -199,3 +204,3 @@ return 'undefined';

case 58 /* PushArgs */:
return ['PushArgs', { positional: op1, synthetic: !!op2 }];
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:

@@ -202,0 +207,0 @@ return ['PrepareArgs', { state: Register[op1] }];

@@ -135,2 +135,6 @@ import { map } from '@glimmer/reference';

}
let numPositionalArgs = stack.pop();
assert(typeof numPositionalArgs === 'number', '[BUG] Incorrect value of positional argument count found during invoke-dynamic-layout.');
// Currently we don't support accessing positional args in templates, so just throw them away
stack.pop(numPositionalArgs);
let inverseSymbol = symbols.indexOf('&inverse');

@@ -237,4 +241,5 @@ let inverse = stack.pop();

expr(name, builder);
builder.pushImmediate(1);
builder.pushImmediate(EMPTY_ARRAY);
builder.pushArgs(1, true);
builder.pushArgs(true);
builder.helper(helper);

@@ -241,0 +246,0 @@ builder.dup();

@@ -62,3 +62,3 @@ import { unreachable } from '@glimmer/util';

static insert(dom, cursor, value) {
let bounds = dom.insertHTMLBefore(cursor.element, value, cursor.nextSibling);
let bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, value);
return new HTMLUpsert(bounds);

@@ -85,3 +85,3 @@ }

let stringValue = value.toHTML();
let bounds = dom.insertHTMLBefore(cursor.element, stringValue, cursor.nextSibling);
let bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, stringValue);
return new SafeStringUpsert(bounds, stringValue);

@@ -88,0 +88,0 @@ }

@@ -11,10 +11,11 @@ import { dict, EMPTY_ARRAY } from '@glimmer/util';

empty() {
this.setup(null, 0, true);
this.setup(null, true);
return this;
}
setup(stack, positionalCount, synthetic) {
setup(stack, synthetic) {
this.stack = stack;
let names = stack.fromTop(0);
let namedCount = names.length;
let start = positionalCount + namedCount + 1;
let positionalCount = stack.fromTop(namedCount + 1);
let start = positionalCount + namedCount + 2;
let positional = this.positional;

@@ -47,6 +48,3 @@ positional.setup(stack, start, positionalCount);

let { stack, length } = this;
let pops = length + 1;
while (--pops >= 0) {
stack.pop();
}
stack.pop(length + 2);
}

@@ -53,0 +51,0 @@ }

@@ -71,5 +71,5 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

DOMTreeConstructionWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
DOMTreeConstructionWithInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, referenceNode, html) {
if (html === null || html === '') {
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, referenceNode, html);
}

@@ -79,5 +79,5 @@ var parentTag = parent.tagName.toLowerCase();

if (wrapper === undefined) {
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _DOMTreeConstructionC.prototype.insertHTMLBefore.call(this, parent, referenceNode, html);
}
return fixInnerHTML(parent, wrapper, div, html, reference);
return fixInnerHTML(parent, wrapper, div, html, referenceNode);
};

@@ -114,2 +114,2 @@

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiXSwibmFtZXMiOlsiQ29uY3JldGVCb3VuZHMiLCJtb3ZlTm9kZXNCZWZvcmUiLCJpbm5lckhUTUxXcmFwcGVyIiwiY29sZ3JvdXAiLCJkZXB0aCIsImJlZm9yZSIsImFmdGVyIiwidGFibGUiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ciIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJwYXJlbnRUYWciLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJ3cmFwcGVyIiwidW5kZWZpbmVkIiwiZml4SW5uZXJIVE1MIiwidHJlZUNvbnN0cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZSIsIndyYXBwZWRIdG1sIiwiaW5uZXJIVE1MIiwicGFyZW50Tm9kZSIsImkiLCJjaGlsZE5vZGVzIiwiZmlyc3QiLCJsYXN0IiwiZSIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULFFBQStCLFdBQS9CO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxlQUFoQztBQUNBLElBQUlDLG1CQUFtQjtBQUNuQkMsY0FBVSxFQUFFQyxPQUFPLENBQVQsRUFBWUMsUUFBUSxtQkFBcEIsRUFBeUNDLE9BQU8scUJBQWhELEVBRFM7QUFFbkJDLFdBQU8sRUFBRUgsT0FBTyxDQUFULEVBQVlDLFFBQVEsU0FBcEIsRUFBK0JDLE9BQU8sVUFBdEMsRUFGWTtBQUduQkUsV0FBTyxFQUFFSixPQUFPLENBQVQsRUFBWUMsUUFBUSxnQkFBcEIsRUFBc0NDLE9BQU8sa0JBQTdDLEVBSFk7QUFJbkJHLFdBQU8sRUFBRUwsT0FBTyxDQUFULEVBQVlDLFFBQVEsZ0JBQXBCLEVBQXNDQyxPQUFPLGtC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LFFBQUlnQixTQUFKLEdBQWdCRCxXQUFoQjtBQUNBLFFBQUlFLGFBQWFqQixHQUFqQjtBQUNBLFNBQUssSUFBSWtCLElBQUksQ0FBYixFQUFnQkEsSUFBSVQsUUFBUXJCLEtBQTVCLEVBQW1DOEIsR0FBbkMsRUFBd0M7QUFDcENELHFCQUFhQSxXQUFXRSxVQUFYLENBQXNCLENBQXRCLENBQWI7QUFDSDs7QUFOd0QsMkJBT3JDbEMsZ0JBQWdCZ0MsVUFBaEIsRUFBNEJkLE1BQTVCLEVBQW9DVyxTQUFwQyxDQVBxQztBQUFBLFFBT3BETSxLQVBvRDtBQUFBLFFBTzdDQyxJQVA2Qzs7QUFRekQsV0FBTyxJQUFJckMsY0FBSixDQUFtQm1CLE1BQW5CLEVBQTJCaUIsS0FBM0IsRUFBa0NDLElBQWxDLENBQVA7QUFDSDtBQUNELFNBQVN0QixjQUFULENBQXdCRixRQUF4QixFQUFrQztBQUM5QixRQUFJTixRQUFRTSxTQUFTSSxhQUFULENBQXVCLE9BQXZCLENBQVo7QUFDQSxRQUFJO0FBQ0FWLGNBQU15QixTQUFOLEdBQWtCLGlCQUFsQjtBQUNILEtBRkQsQ0FFRSxPQUFPTSxDQUFQLEVBQVUsQ0FBRSxDQUZkLFNBRXVCO0FBQ25CLFlBQUkvQixNQUFNNEIsVUFBTixDQUFpQkksTUFBakIsS0FBNEIsQ0FBaEMsRUFBbUM7QUFDL0I7QUFDQSxtQkFBTyxLQUFQO0FBQ0g7QUFDSjtBQUNELFdBQU8sSUFBUDtBQUNIIiwiZmlsZSI6ImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmxldCBpbm5lckhUTUxXcmFwcGVyID0ge1xuICAgIGNvbGdyb3VwOiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PGNvbGdyb3VwPicsIGFmdGVyOiAnPC9jb2xncm91cD48L3RhYmxlPicgfSxcbiAgICB0YWJsZTogeyBkZXB0aDogMSwgYmVmb3JlOiAnPHRhYmxlPicsIGFmdGVyOiAnPC90YWJsZT4nIH0sXG4gICAgdGJvZHk6IHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+JywgYWZ0ZXI6ICc8L3Rib2R5PjwvdGFibGU+JyB9LFxuICAgIHRmb290OiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRmb290PicsIGFmdGVyOiAnPC90Zm9vdD48L3RhYmxlPicgfSxcbiAgICB0aGVhZDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0aGVhZD4nLCBhZnRlcjogJzwvdGhlYWQ+PC90YWJsZT4nIH0sXG4gICAgdHI6IHsgZGVwdGg6IDMsIGJlZm9yZTogJzx0YWJsZT48dGJvZHk+PHRyPicsIGFmdGVyOiAnPC90cj48L3Rib2R5PjwvdGFibGU+JyB9XG59O1xuLy8gUGF0Y2g6ICAgIGlubmVySFRNTCBGaXhcbi8vIEJyb3dzZXJzOiBJRTlcbi8vIFJlYXNvbjogICBJRTkgZG9uJ3QgYWxsb3cgdXMgdG8gc2V0IGlubmVySFRNTCBvbiBjb2wsIGNvbGdyb3VwLCBmcmFtZXNldCxcbi8vICAgICAgICAgICBodG1sLCBzdHlsZSwgdGFibGUsIHRib2R5LCB0Zm9vdCwgdGhlYWQsIHRpdGxlLCB0ci5cbi8vIEZpeDogICAgICBXcmFwIHRoZSBpbm5lckhUTUwgd2UgYXJlIGFib3V0IHRvIHNldCBpbiBpdHMgcGFyZW50cywgYXBwbHkgdGhlXG4vLyAgICAgICAgICAgd3JhcHBlZCBpbm5lckhUTUwgb24gYSBkaXYsIHRoZW4gbW92ZSB0aGUgdW53cmFwcGVkIG5vZGVzIGludG8gdGhlXG4vLyAgICAgICAgICAgdGFyZ2V0IHBvc2l0aW9uLlxuZXhwb3J0IGZ1bmN0aW9uIGRvbUNoYW5nZXMoZG9jdW1lbnQsIERPTUNoYW5nZXNDbGFzcykge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBwYXJlbnRUYWcgPSBwYXJlbnQudGFnTmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgICAgICAgbGV0IHdyYXBwZXIgPSBpbm5lckhUTUxXcmFwcGVyW3BhcmVudFRhZ107XG4gICAgICAgICAgICBpZiAod3JhcHBlciA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCBuZXh0U2libGluZyk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRyZWVDb25zdHJ1Y3Rpb24oZG9jdW1lbnQsIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcykge1xuICAgIGlmICghZG9jdW1lbnQpIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgaWYgKCFzaG91bGRBcHBseUZpeChkb2N1bWVudCkpIHtcbiAgICAgICAgcmV0dXJuIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01UcmVlQ29uc3RydWN0aW9uV2l0aElubmVySFRNTEZpeCBleHRlbmRzIERPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmZ1bmN0aW9uIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlKSB7XG4gICAgbGV0IHdyYXBwZWRIdG1sID0gd3JhcHBlci5iZWZvcmUgKyBodG1sICsgd3JhcHBlci5hZnRlcjtcbiAgICBkaXYuaW5uZXJIVE1MID0gd3JhcHBlZEh0bWw7XG4gICAgbGV0IHBhcmVudE5vZGUgPSBkaXY7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3cmFwcGVyLmRlcHRoOyBpKyspIHtcbiAgICAgICAgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUuY2hpbGROb2Rlc1swXTtcbiAgICB9XG4gICAgbGV0IFtmaXJzdCwgbGFzdF0gPSBtb3ZlTm9kZXNCZWZvcmUocGFyZW50Tm9kZSwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCkge1xuICAgIGxldCB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RhYmxlJyk7XG4gICAgdHJ5IHtcbiAgICAgICAgdGFibGUuaW5uZXJIVE1MID0gJzx0Ym9keT48L3Rib2R5Pic7XG4gICAgfSBjYXRjaCAoZSkge30gZmluYWxseSB7XG4gICAgICAgIGlmICh0YWJsZS5jaGlsZE5vZGVzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICAgICAgLy8gSXQgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvaW5uZXItaHRtbC1maXguanMiXSwibmFtZXMiOlsiQ29uY3JldGVCb3VuZHMiLCJtb3ZlTm9kZXNCZWZvcmUiLCJpbm5lckhUTUxXcmFwcGVyIiwiY29sZ3JvdXAiLCJkZXB0aCIsImJlZm9yZSIsImFmdGVyIiwidGFibGUiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ciIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJwYXJlbnRUYWciLCJ0YWdOYW1lIiwidG9Mb3dlckNhc2UiLCJ3cmFwcGVyIiwidW5kZWZpbmVkIiwiZml4SW5uZXJIVE1MIiwidHJlZUNvbnN0cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZU5vZGUiLCJyZWZlcmVuY2UiLCJ3cmFwcGVkSHRtbCIsImlubmVySFRNTCIsInBhcmVudE5vZGUiLCJpIiwiY2hpbGROb2RlcyIsImZpcnN0IiwibGFzdCIsImUiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsY0FBVCxRQUErQixXQUEvQjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZUFBaEM7QUFDQSxJQUFJQyxtQkFBbUI7QUFDbkJDLGNBQVUsRUFBRUMsT0FBTyxDQUFULEVBQVlDLFFBQVEsbUJBQXBCLEVBQXlDQyxPQUFPLHFCQUFoRCxFQURTO0FBRW5CQyxXQUFPLEVBQUVILE9BQU8sQ0FBVCxFQUFZQyxRQUFRLFNBQXBCLEVBQStCQyxPQUFPLFVBQXRDLEVBRlk7QUFHbkJFLFdBQU8sRUFBRUosT0FBTyxDQUFULEVBQVlDLFFBQVEsZ0JBQXBCLEVBQXNDQyxPQUFPLGtCQUE3QyxFQUhZO0FBSW5CRyxXQUFPLEVBQUVMLE9BQU8sQ0FBVCxFQUFZQyxRQUFRLGdCQUFw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QVFuQixLQUFsRDtBQUNBVSxRQUFJaUIsU0FBSixHQUFnQkQsV0FBaEI7QUFDQSxRQUFJRSxhQUFhbEIsR0FBakI7QUFDQSxTQUFLLElBQUltQixJQUFJLENBQWIsRUFBZ0JBLElBQUlWLFFBQVFyQixLQUE1QixFQUFtQytCLEdBQW5DLEVBQXdDO0FBQ3BDRCxxQkFBYUEsV0FBV0UsVUFBWCxDQUFzQixDQUF0QixDQUFiO0FBQ0g7O0FBTndELDJCQU9yQ25DLGdCQUFnQmlDLFVBQWhCLEVBQTRCZixNQUE1QixFQUFvQ1ksU0FBcEMsQ0FQcUM7QUFBQSxRQU9wRE0sS0FQb0Q7QUFBQSxRQU83Q0MsSUFQNkM7O0FBUXpELFdBQU8sSUFBSXRDLGNBQUosQ0FBbUJtQixNQUFuQixFQUEyQmtCLEtBQTNCLEVBQWtDQyxJQUFsQyxDQUFQO0FBQ0g7QUFDRCxTQUFTdkIsY0FBVCxDQUF3QkYsUUFBeEIsRUFBa0M7QUFDOUIsUUFBSU4sUUFBUU0sU0FBU0ksYUFBVCxDQUF1QixPQUF2QixDQUFaO0FBQ0EsUUFBSTtBQUNBVixjQUFNMEIsU0FBTixHQUFrQixpQkFBbEI7QUFDSCxLQUZELENBRUUsT0FBT00sQ0FBUCxFQUFVLENBQUUsQ0FGZCxTQUV1QjtBQUNuQixZQUFJaEMsTUFBTTZCLFVBQU4sQ0FBaUJJLE1BQWpCLEtBQTRCLENBQWhDLEVBQW1DO0FBQy9CO0FBQ0EsbUJBQU8sS0FBUDtBQUNIO0FBQ0o7QUFDRCxXQUFPLElBQVA7QUFDSCIsImZpbGUiOiJsaWIvY29tcGF0L2lubmVyLWh0bWwtZml4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uY3JldGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgbW92ZU5vZGVzQmVmb3JlIH0gZnJvbSAnLi4vZG9tL2hlbHBlcic7XG5sZXQgaW5uZXJIVE1MV3JhcHBlciA9IHtcbiAgICBjb2xncm91cDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjxjb2xncm91cD4nLCBhZnRlcjogJzwvY29sZ3JvdXA+PC90YWJsZT4nIH0sXG4gICAgdGFibGU6IHsgZGVwdGg6IDEsIGJlZm9yZTogJzx0YWJsZT4nLCBhZnRlcjogJzwvdGFibGU+JyB9LFxuICAgIHRib2R5OiB7IGRlcHRoOiAyLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5PicsIGFmdGVyOiAnPC90Ym9keT48L3RhYmxlPicgfSxcbiAgICB0Zm9vdDogeyBkZXB0aDogMiwgYmVmb3JlOiAnPHRhYmxlPjx0Zm9vdD4nLCBhZnRlcjogJzwvdGZvb3Q+PC90YWJsZT4nIH0sXG4gICAgdGhlYWQ6IHsgZGVwdGg6IDIsIGJlZm9yZTogJzx0YWJsZT48dGhlYWQ+JywgYWZ0ZXI6ICc8L3RoZWFkPjwvdGFibGU+JyB9LFxuICAgIHRyOiB7IGRlcHRoOiAzLCBiZWZvcmU6ICc8dGFibGU+PHRib2R5Pjx0cj4nLCBhZnRlcjogJzwvdHI+PC90Ym9keT48L3RhYmxlPicgfVxufTtcbi8vIFBhdGNoOiAgICBpbm5lckhUTUwgRml4XG4vLyBCcm93c2VyczogSUU5XG4vLyBSZWFzb246ICAgSUU5IGRvbid0IGFsbG93IHVzIHRvIHNldCBpbm5lckhUTUwgb24gY29sLCBjb2xncm91cCwgZnJhbWVzZXQsXG4vLyAgICAgICAgICAgaHRtbCwgc3R5bGUsIHRhYmxlLCB0Ym9keSwgdGZvb3QsIHRoZWFkLCB0aXRsZSwgdHIuXG4vLyBGaXg6ICAgICAgV3JhcCB0aGUgaW5uZXJIVE1MIHdlIGFyZSBhYm91dCB0byBzZXQgaW4gaXRzIHBhcmVudHMsIGFwcGx5IHRoZVxuLy8gICAgICAgICAgIHdyYXBwZWQgaW5uZXJIVE1MIG9uIGEgZGl2LCB0aGVuIG1vdmUgdGhlIHVud3JhcHBlZCBub2RlcyBpbnRvIHRoZVxuLy8gICAgICAgICAgIHRhcmdldCBwb3NpdGlvbi5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXR1cm4gY2xhc3MgRE9NQ2hhbmdlc1dpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01DaGFuZ2VzQ2xhc3Mge1xuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBsZXQgcGFyZW50VGFnID0gcGFyZW50LnRhZ05hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgICAgIGxldCB3cmFwcGVyID0gaW5uZXJIVE1MV3JhcHBlcltwYXJlbnRUYWddO1xuICAgICAgICAgICAgaWYgKHdyYXBwZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIGxldCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZXR1cm4gY2xhc3MgRE9NVHJlZUNvbnN0cnVjdGlvbldpdGhJbm5lckhUTUxGaXggZXh0ZW5kcyBET01UcmVlQ29uc3RydWN0aW9uQ2xhc3Mge1xuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlTm9kZSwgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZU5vZGUsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IHBhcmVudFRhZyA9IHBhcmVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgICAgICBsZXQgd3JhcHBlciA9IGlubmVySFRNTFdyYXBwZXJbcGFyZW50VGFnXTtcbiAgICAgICAgICAgIGlmICh3cmFwcGVyID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIHJlZmVyZW5jZU5vZGUsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGZpeElubmVySFRNTChwYXJlbnQsIHdyYXBwZXIsIGRpdiwgaHRtbCwgcmVmZXJlbmNlTm9kZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4SW5uZXJIVE1MKHBhcmVudCwgd3JhcHBlciwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICBsZXQgd3JhcHBlZEh0bWwgPSB3cmFwcGVyLmJlZm9yZSArIGh0bWwgKyB3cmFwcGVyLmFmdGVyO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgcGFyZW50Tm9kZSA9IGRpdjtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdyYXBwZXIuZGVwdGg7IGkrKykge1xuICAgICAgICBwYXJlbnROb2RlID0gcGFyZW50Tm9kZS5jaGlsZE5vZGVzWzBdO1xuICAgIH1cbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShwYXJlbnROb2RlLCBwYXJlbnQsIHJlZmVyZW5jZSk7XG4gICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0LCBsYXN0KTtcbn1cbmZ1bmN0aW9uIHNob3VsZEFwcGx5Rml4KGRvY3VtZW50KSB7XG4gICAgbGV0IHRhYmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGFibGUnKTtcbiAgICB0cnkge1xuICAgICAgICB0YWJsZS5pbm5lckhUTUwgPSAnPHRib2R5PjwvdGJvZHk+JztcbiAgICB9IGNhdGNoIChlKSB7fSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHRhYmxlLmNoaWxkTm9kZXMubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==

@@ -67,8 +67,8 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

TreeConstructionWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
TreeConstructionWithSVGInnerHTMLFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, reference, html) {
if (html === null || html === '') {
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
}
if (parent.namespaceURI !== svgNamespace) {
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
}

@@ -109,2 +109,2 @@ return fixSVG(parent, div, html, reference);

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4LmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwibW92ZU5vZGVzQmVmb3JlIiwiU1ZHX05BTUVTUEFDRSIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInN2Z05hbWVzcGFjZSIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJuYW1lc3BhY2VVUkkiLCJmaXhTVkciLCJ0cmVlQ29uc3RydWN0aW9uIiwiVHJlZUNvbnN0cnVjdGlvbkNsYXNzIiwicmVmZXJlbmNlIiwid3JhcHBlZEh0bWwiLCJpbm5lckhUTUwiLCJmaXJzdENoaWxkIiwiZmlyc3QiLCJsYXN0Iiwic3ZnIiwiY3JlYXRlRWxlbWVudE5TIiwiZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsY0FBVCxRQUErQixXQUEvQjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZUFBaEM7O0FBRUEsT0FBTyxJQUFNQyxnQkFBZ0IsNEJBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsUUFBcEIsRUFBOEJDLGVBQTlCLEVBQStDQyxZQUEvQyxFQUE2RDtBQUNoRSxRQUFJLENBQUNGLFFBQUwsRUFBZSxPQUFPQyxlQUFQO0FBQ2YsUUFBSSxDQUFDRSxlQUFlSCxRQUFmLEVBQXlCRSxZQUF6QixDQUFMLEVBQTZDO0FBQ3pDLGVBQU9ELGVBQVA7QUFDSDtBQUNELFFBQUlHLE1BQU1KLFNBQVNLLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBVjtBQUNBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBLGdEQUNJQyxnQkFESiw2QkFDcUJDLE1BRHJCLEVB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WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IHVud3JhcCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudCwgRE9NQ2hhbmdlc0NsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudCwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBodG1sLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gICAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSB7XG4gICAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcbiAgICB0cnkge1xuICAgICAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICAgICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiB1bndyYXAoc3ZnLmZpcnN0Q2hpbGQpLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSkge1xuICAgICAgICAgICAgLy8gVGhlIHRlc3Qgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4LmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwibW92ZU5vZGVzQmVmb3JlIiwiU1ZHX05BTUVTUEFDRSIsImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInN2Z05hbWVzcGFjZSIsInNob3VsZEFwcGx5Rml4IiwiZGl2IiwiY3JlYXRlRWxlbWVudCIsImluc2VydEhUTUxCZWZvcmUiLCJwYXJlbnQiLCJuZXh0U2libGluZyIsImh0bWwiLCJuYW1lc3BhY2VVUkkiLCJmaXhTVkciLCJ0cmVlQ29uc3RydWN0aW9uIiwiVHJlZUNvbnN0cnVjdGlvbkNsYXNzIiwicmVmZXJlbmNlIiwid3JhcHBlZEh0bWwiLCJpbm5lckhUTUwiLCJmaXJzdENoaWxkIiwiZmlyc3QiLCJsYXN0Iiwic3ZnIiwiY3JlYXRlRWxlbWVudE5TIiwiZSIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsY0FBVCxRQUErQixXQUEvQjtBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZUFBaEM7O0FBRUEsT0FBTyxJQUFNQyxnQkFBZ0IsNEJBQXRCO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsUUFBcEIsRUFBOEJDLGVBQTlCLEVBQStDQyxZQUEvQyxFQUE2RDtBQUNoRSxRQUFJLENBQUNGLFFBQUwsRUFBZSxPQUFPQyxlQUFQO0FBQ2YsUUFBSSxDQUFDRSxlQUFlSCxRQUFmLEVBQXlCRSxZQUF6QixDQUFMLEVBQTZDO0FBQ3pDLGVBQU9ELGVBQVA7QUFDSDtBQUNELFFBQUlHLE1BQU1KLFNBQVNLLGFBQVQsQ0FBdUIsS0FBdkIsQ0FBVjtBQUNBO0FBQUE7O0FBQUE7QUFBQTs7QUFBQTtBQUFBOztBQUFBLGdEQUNJQyxnQkFESiw2QkFDcUJDLE1BRHJCLEVB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WyJpbXBvcnQgeyBDb25jcmV0ZUJvdW5kcyB9IGZyb20gJy4uL2JvdW5kcyc7XG5pbXBvcnQgeyBtb3ZlTm9kZXNCZWZvcmUgfSBmcm9tICcuLi9kb20vaGVscGVyJztcbmltcG9ydCB7IHVud3JhcCB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gUGF0Y2g6ICAgIGluc2VydEFkamFjZW50SFRNTCBvbiBTVkcgRml4XG4vLyBCcm93c2VyczogU2FmYXJpLCBJRSwgRWRnZSwgRmlyZWZveCB+MzMtMzRcbi8vIFJlYXNvbjogICBpbnNlcnRBZGphY2VudEhUTUwgZG9lcyBub3QgZXhpc3Qgb24gU1ZHIGVsZW1lbnRzIGluIFNhZmFyaS4gSXQgaXNcbi8vICAgICAgICAgICBwcmVzZW50IGJ1dCB0aHJvd3MgYW4gZXhjZXB0aW9uIG9uIElFIGFuZCBFZGdlLiBPbGQgdmVyc2lvbnMgb2Zcbi8vICAgICAgICAgICBGaXJlZm94IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0IG5hbWVzcGFjZS5cbi8vIEZpeDogICAgICBTaW5jZSBJRSBhbmQgRWRnZSBzaWxlbnRseSBmYWlsIHRvIGNyZWF0ZSBTVkcgbm9kZXMgdXNpbmdcbi8vICAgICAgICAgICBpbm5lckhUTUwsIGFuZCBiZWNhdXNlIEZpcmVmb3ggbWF5IGNyZWF0ZSBub2RlcyBpbiB0aGUgaW5jb3JyZWN0XG4vLyAgICAgICAgICAgbmFtZXNwYWNlIHVzaW5nIGlubmVySFRNTCBvbiBTVkcgZWxlbWVudHMsIGFuIEhUTUwtc3RyaW5nIHdyYXBwaW5nXG4vLyAgICAgICAgICAgYXBwcm9hY2ggaXMgdXNlZC4gQSBwcmUvcG9zdCBTVkcgdGFnIGlzIGFkZGVkIHRvIHRoZSBzdHJpbmcsIHRoZW5cbi8vICAgICAgICAgICB0aGF0IHdob2xlIHN0cmluZyBpcyBhZGRlZCB0byBhIGRpdi4gVGhlIGNyZWF0ZWQgbm9kZXMgYXJlIHBsdWNrZWRcbi8vICAgICAgICAgICBvdXQgYW5kIGFwcGxpZWQgdG8gdGhlIHRhcmdldCBsb2NhdGlvbiBvbiBET00uXG5leHBvcnQgZnVuY3Rpb24gZG9tQ2hhbmdlcyhkb2N1bWVudCwgRE9NQ2hhbmdlc0NsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIERPTUNoYW5nZXNDbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICAgICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwYXJlbnQubmFtZXNwYWNlVVJJICE9PSBzdmdOYW1lc3BhY2UpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgfVxuICAgIH07XG59XG5leHBvcnQgZnVuY3Rpb24gdHJlZUNvbnN0cnVjdGlvbihkb2N1bWVudCwgVHJlZUNvbnN0cnVjdGlvbkNsYXNzLCBzdmdOYW1lc3BhY2UpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQsIHN2Z05hbWVzcGFjZSkpIHtcbiAgICAgICAgcmV0dXJuIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcztcbiAgICB9XG4gICAgbGV0IGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFNWR0lubmVySFRNTEZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGluc2VydEhUTUxCZWZvcmUocGFyZW50LCByZWZlcmVuY2UsIGh0bWwpIHtcbiAgICAgICAgICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCByZWZlcmVuY2UsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhcmVudC5uYW1lc3BhY2VVUkkgIT09IHN2Z05hbWVzcGFjZSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBmaXhTVkcocGFyZW50LCBkaXYsIGh0bWwsIHJlZmVyZW5jZSk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gZml4U1ZHKHBhcmVudCwgZGl2LCBodG1sLCByZWZlcmVuY2UpIHtcbiAgICAvLyBJRSwgRWRnZTogYWxzbyBkbyBub3QgY29ycmVjdGx5IHN1cHBvcnQgdXNpbmcgYGlubmVySFRNTGAgb24gU1ZHXG4gICAgLy8gbmFtZXNwYWNlZCBlbGVtZW50cy4gU28gaGVyZSBhIHdyYXBwZXIgaXMgdXNlZC5cbiAgICBsZXQgd3JhcHBlZEh0bWwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xuICAgIGRpdi5pbm5lckhUTUwgPSB3cmFwcGVkSHRtbDtcbiAgICBsZXQgW2ZpcnN0LCBsYXN0XSA9IG1vdmVOb2Rlc0JlZm9yZShkaXYuZmlyc3RDaGlsZCwgcGFyZW50LCByZWZlcmVuY2UpO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBzaG91bGRBcHBseUZpeChkb2N1bWVudCwgc3ZnTmFtZXNwYWNlKSB7XG4gICAgbGV0IHN2ZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOYW1lc3BhY2UsICdzdmcnKTtcbiAgICB0cnkge1xuICAgICAgICBzdmdbJ2luc2VydEFkamFjZW50SFRNTCddKCdiZWZvcmVFbmQnLCAnPGNpcmNsZT48L2NpcmNsZT4nKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIElFLCBFZGdlOiBXaWxsIHRocm93LCBpbnNlcnRBZGphY2VudEhUTUwgaXMgdW5zdXBwb3J0ZWQgb24gU1ZHXG4gICAgICAgIC8vIFNhZmFyaTogV2lsbCB0aHJvdywgaW5zZXJ0QWRqYWNlbnRIVE1MIGlzIG5vdCBwcmVzZW50IG9uIFNWR1xuICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIEZGOiBPbGQgdmVyc2lvbnMgd2lsbCBjcmVhdGUgYSBub2RlIGluIHRoZSB3cm9uZyBuYW1lc3BhY2VcbiAgICAgICAgaWYgKHN2Zy5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMSAmJiB1bndyYXAoc3ZnLmZpcnN0Q2hpbGQpLm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSkge1xuICAgICAgICAgICAgLy8gVGhlIHRlc3Qgd29ya2VkIGFzIGV4cGVjdGVkLCBubyBmaXggcmVxdWlyZWRcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59Il19

@@ -75,5 +75,5 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

TreeConstructionWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
TreeConstructionWithTextNodeMergingFix.prototype.insertHTMLBefore = function insertHTMLBefore(parent, reference, html) {
if (html === null) {
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
return _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
}

@@ -86,3 +86,3 @@ var didSetUselessComment = false;

}
var bounds = _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, html, reference);
var bounds = _TreeConstructionClas.prototype.insertHTMLBefore.call(this, parent, reference, html);
if (didSetUselessComment) {

@@ -107,2 +107,2 @@ parent.removeChild(this.uselessComment);

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwidXNlbGVzc0NvbW1lbnQiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudCIsIm5leHRTaWJsaW5nIiwiaHRtbCIsImRpZFNldFVzZWxlc3NDb21tZW50IiwibmV4dFByZXZpb3VzIiwicHJldmlvdXNTaWJsaW5nIiwibGFzdENoaWxkIiwiVGV4dCIsImluc2VydEJlZm9yZSIsImJvdW5kcyIsInJlbW92ZUNoaWxkIiwidHJlZUNvbnN0cnVjdGlvbiIsIlRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZSIsIm1lcmdpbmdUZXh0RGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50SFRNTCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUE4QkMsZUFBOUIsRUFBK0M7QUFDbEQsUUFBSSxDQUFDRCxRQUFMLEVBQWUsT0FBT0MsZUFBUDtBQUNmLFFBQUksQ0FBQ0MsZUFBZUYsUUFBZixDQUFMLEVBQStCO0FBQzNCLGVBQU9DLGVBQVA7QUFDSDtBQUNEO0FBQUE7O0FBQ0ksa0RBQVlELFFBQVosRUFBc0I7QUFBQTs7QUFBQSx5REFDbEIsNEJBQU1BLFFBQU4sQ0FEa0I7O0FBRWxCLGtCQUFLRyxjQUFMLEdBQXNCSCxTQUFTSSxhQUFULENBQXVCLEVBQXZCLENBQXRCO0FBRmtCO0FBR3JCOztBQUpMLG1EQUtJQyxnQkFMSiw2QkFLcUJDLE1BTHJCLEVBSzZCQyxXQUw3QixFQUswQ0MsSUFMMUMsRUFLZ0Q7QUFDeEMsZ0JBQUlBLFNBQVMsSUFBYixFQUFtQjtBQUNmLHVCQUFPLDJCQUFNSCxnQkFBTixZQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFQO0FBQ0g7QUFDRCxnQkFBSUMsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVILGNBQWNBLFlBQVlJLGVBQTFCLEdBQTRDTCxPQUFPTSxTQUF0RTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q0ksV0FBekM7QUFDSDtBQUNELGdCQUFJUSxTQUFTLDJCQUFNVixnQkFBTixZQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFiO0FBQ0EsZ0JBQUlDLG9CQUFKLEVBQTBCO0FBQ3RCSCx1QkFBT1UsV0FBUCxDQUFtQixLQUFLYixjQUF4QjtBQUNIO0FBQ0QsbUJBQU9ZLE1BQVA7QUFDSCxTQXBCTDs7QUFBQTtBQUFBLE1BQXNEZCxlQUF0RDtBQXNCSDtBQUNELE9BQU8sU0FBU2dCLGdCQUFULENBQTBCakIsUUFBMUIsRUFBb0NrQixxQkFBcEMsRUFBMkQ7QUFDOUQsUUFBSSxDQUFDbEIsUUFBTCxFQUFlLE9BQU9rQixxQkFBUDtBQUNmLFFBQUksQ0FBQ2hCLGVBQWVGLFFBQWYsQ0FBTCxFQUErQjtBQUMzQixlQUFPa0IscUJBQVA7QUFDSDtBQUNEO0FBQUE7O0FBQ0ksd0RBQVlsQixRQUFaLEVBQXNCO0FBQUE7O0FBQUEsMERBQ2xCLGlDQUFNQSxRQUFOLENBRGtCOztBQUVsQixtQkFBS0csY0FBTCxHQUFzQixPQUFLQyxhQUFMLENBQW1CLEVBQW5CLENBQXRCO0FBRmtCO0FBR3JCOztBQUpMLHlEQUtJQyxnQkFMSiw2QkFLcUJDLE1BTHJCLEVBSzZCRSxJQUw3QixFQUttQ1csU0FMbkMsRUFLOEM7QUFDdEMsZ0JBQUlYLFNBQVMsSUFBYixFQUFtQjtBQUNmLHVCQUFPLGdDQUFNSCxnQkFBTixZQUF1QkMsTUFBdkIsRUFBK0JFLElBQS9CLEVBQXFDVyxTQUFyQyxDQUFQO0FBQ0g7QUFDRCxnQkFBSVYsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVTLFlBQVlBLFVBQVVSLGVBQXRCLEdBQXdDTCxPQUFPTSxTQUFsRTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q2dCLFNBQXpDO0FBQ0g7QUFDRCxnQkFBSUosU0FBUyxnQ0FBTVYsZ0JBQU4sWUFBdUJDLE1BQXZCLEVBQStCRSxJQUEvQixFQUFxQ1csU0FBckMsQ0FBYjtBQUNBLGdCQUFJVixvQkFBSixFQUEwQjtBQUN0QkgsdUJBQU9VLFdBQVAsQ0FBbUIsS0FBS2IsY0FBeEI7QUFDSDtBQUNELG1CQUFPWSxNQUFQO0FBQ0gsU0FwQkw7O0FBQUE7QUFBQSxNQUE0REcscUJBQTVEO0FBc0JIO0FBQ0QsU0FBU2hCLGNBQVQsQ0FBd0JGLFFBQXhCLEVBQWtDO0FBQzlCLFFBQUlvQixpQkFBaUJwQixTQUFTcUIsYUFBVCxDQUF1QixLQUF2QixDQUFyQjtBQUNBRCxtQkFBZUUsU0FBZixHQUEyQixPQUEzQjtBQUNBRixtQkFBZUcsa0JBQWYsQ0FBa0MsV0FBbEMsRUFBK0MsUUFBL0M7QUFDQSxRQUFJSCxlQUFlSSxVQUFmLENBQTBCQyxNQUExQixLQUFxQyxDQUF6QyxFQUE0QztBQUN4QztBQUNBLGVBQU8sS0FBUDtBQUNIO0FBQ0QsV0FBTyxJQUFQO0FBQ0giLCJmaWxlIjoibGliL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXRjaDogICAgQWRqYWNlbnQgdGV4dCBub2RlIG1lcmdpbmcgZml4XG4vLyBCcm93c2VyczogSUUsIEVkZ2UsIEZpcmVmb3ggdy9vIGluc3BlY3RvciBvcGVuXG4vLyBSZWFzb246ICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzLiBGb3IgZXhtYXBsZSBnaXZlblxuLy8gICAgICAgICAgIDxkaXY+SGVsbG88L2Rpdj4gd2l0aCBkaXYuaW5zZXJ0QWRqYWNlbnRIVE1MKCcgd29ybGQnKSBicm93c2Vyc1xuLy8gICAgICAgICAgIHdpdGggcHJvcGVyIGJlaGF2aW9yIHdpbGwgcG9wdWxhdGUgZGl2LmNoaWxkTm9kZXMgd2l0aCB0d28gaXRlbXMuXG4vLyAgICAgICAgICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBwb3B1bGF0ZSBpdCB3aXRoIG9uZSBtZXJnZWQgbm9kZSBpbnN0ZWFkLlxuLy8gRml4OiAgICAgIEFkZCB0aGVzZSBub2RlcyB0byBhIHdyYXBwZXIgZWxlbWVudCwgdGhlbiBpdGVyYXRlIHRoZSBjaGlsZE5vZGVzXG4vLyAgICAgICAgICAgb2YgdGhhdCB3cmFwcGVyIGFuZCBtb3ZlIHRoZSBub2RlcyB0byB0aGVpciB0YXJnZXQgbG9jYXRpb24uIE5vdGVcbi8vICAgICAgICAgICB0aGF0IHBvdGVudGlhbCBTVkcgYnVncyB3aWxsIGhhdmUgYmVlbiBoYW5kbGVkIGJlZm9yZSB0aGlzIGZpeC5cbi8vICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBmaXggbXVzdCBvbmx5IGFwcGx5IHRvIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGUsIGFzXG4vLyAgICAgICAgICAgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGluc2VydEhUTUxCZWZvcmVgIGFscmVhZHkgaGFuZGxlc1xuLy8gICAgICAgICAgIGZvbGxvd2luZyB0ZXh0IG5vZGVzIGNvcnJlY3RseS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRpZFNldFVzZWxlc3NDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGJvdW5kcyA9IHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5leHRQcmV2aW91cyA9IHJlZmVyZW5jZSA/IHJlZmVyZW5jZS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIGlmIChkaWRTZXRVc2VsZXNzQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLnVzZWxlc3NDb21tZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBib3VuZHM7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpIHtcbiAgICBsZXQgbWVyZ2luZ1RleHREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtZXJnaW5nVGV4dERpdi5pbm5lckhUTUwgPSAnZmlyc3QnO1xuICAgIG1lcmdpbmdUZXh0RGl2Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgJ3NlY29uZCcpO1xuICAgIGlmIChtZXJnaW5nVGV4dERpdi5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21wYXQvdGV4dC1ub2RlLW1lcmdpbmctZml4LmpzIl0sIm5hbWVzIjpbImRvbUNoYW5nZXMiLCJkb2N1bWVudCIsIkRPTUNoYW5nZXNDbGFzcyIsInNob3VsZEFwcGx5Rml4IiwidXNlbGVzc0NvbW1lbnQiLCJjcmVhdGVDb21tZW50IiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudCIsIm5leHRTaWJsaW5nIiwiaHRtbCIsImRpZFNldFVzZWxlc3NDb21tZW50IiwibmV4dFByZXZpb3VzIiwicHJldmlvdXNTaWJsaW5nIiwibGFzdENoaWxkIiwiVGV4dCIsImluc2VydEJlZm9yZSIsImJvdW5kcyIsInJlbW92ZUNoaWxkIiwidHJlZUNvbnN0cnVjdGlvbiIsIlRyZWVDb25zdHJ1Y3Rpb25DbGFzcyIsInJlZmVyZW5jZSIsIm1lcmdpbmdUZXh0RGl2IiwiY3JlYXRlRWxlbWVudCIsImlubmVySFRNTCIsImluc2VydEFkamFjZW50SFRNTCIsImNoaWxkTm9kZXMiLCJsZW5ndGgiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxTQUFTQSxVQUFULENBQW9CQyxRQUFwQixFQUE4QkMsZUFBOUIsRUFBK0M7QUFDbEQsUUFBSSxDQUFDRCxRQUFMLEVBQWUsT0FBT0MsZUFBUDtBQUNmLFFBQUksQ0FBQ0MsZUFBZUYsUUFBZixDQUFMLEVBQStCO0FBQzNCLGVBQU9DLGVBQVA7QUFDSDtBQUNEO0FBQUE7O0FBQ0ksa0RBQVlELFFBQVosRUFBc0I7QUFBQTs7QUFBQSx5REFDbEIsNEJBQU1BLFFBQU4sQ0FEa0I7O0FBRWxCLGtCQUFLRyxjQUFMLEdBQXNCSCxTQUFTSSxhQUFULENBQXVCLEVBQXZCLENBQXRCO0FBRmtCO0FBR3JCOztBQUpMLG1EQUtJQyxnQkFMSiw2QkFLcUJDLE1BTHJCLEVBSzZCQyxXQUw3QixFQUswQ0MsSUFMMUMsRUFLZ0Q7QUFDeEMsZ0JBQUlBLFNBQVMsSUFBYixFQUFtQjtBQUNmLHVCQUFPLDJCQUFNSCxnQkFBTixZQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFQO0FBQ0g7QUFDRCxnQkFBSUMsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVILGNBQWNBLFlBQVlJLGVBQTFCLEdBQTRDTCxPQUFPTSxTQUF0RTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q0ksV0FBekM7QUFDSDtBQUNELGdCQUFJUSxTQUFTLDJCQUFNVixnQkFBTixZQUF1QkMsTUFBdkIsRUFBK0JDLFdBQS9CLEVBQTRDQyxJQUE1QyxDQUFiO0FBQ0EsZ0JBQUlDLG9CQUFKLEVBQTBCO0FBQ3RCSCx1QkFBT1UsV0FBUCxDQUFtQixLQUFLYixjQUF4QjtBQUNIO0FBQ0QsbUJBQU9ZLE1BQVA7QUFDSCxTQXBCTDs7QUFBQTtBQUFBLE1BQXNEZCxlQUF0RDtBQXNCSDtBQUNELE9BQU8sU0FBU2dCLGdCQUFULENBQTBCakIsUUFBMUIsRUFBb0NrQixxQkFBcEMsRUFBMkQ7QUFDOUQsUUFBSSxDQUFDbEIsUUFBTCxFQUFlLE9BQU9rQixxQkFBUDtBQUNmLFFBQUksQ0FBQ2hCLGVBQWVGLFFBQWYsQ0FBTCxFQUErQjtBQUMzQixlQUFPa0IscUJBQVA7QUFDSDtBQUNEO0FBQUE7O0FBQ0ksd0RBQVlsQixRQUFaLEVBQXNCO0FBQUE7O0FBQUEsMERBQ2xCLGlDQUFNQSxRQUFOLENBRGtCOztBQUVsQixtQkFBS0csY0FBTCxHQUFzQixPQUFLQyxhQUFMLENBQW1CLEVBQW5CLENBQXRCO0FBRmtCO0FBR3JCOztBQUpMLHlEQUtJQyxnQkFMSiw2QkFLcUJDLE1BTHJCLEVBSzZCYSxTQUw3QixFQUt3Q1gsSUFMeEMsRUFLOEM7QUFDdEMsZ0JBQUlBLFNBQVMsSUFBYixFQUFtQjtBQUNmLHVCQUFPLGdDQUFNSCxnQkFBTixZQUF1QkMsTUFBdkIsRUFBK0JhLFNBQS9CLEVBQTBDWCxJQUExQyxDQUFQO0FBQ0g7QUFDRCxnQkFBSUMsdUJBQXVCLEtBQTNCO0FBQ0EsZ0JBQUlDLGVBQWVTLFlBQVlBLFVBQVVSLGVBQXRCLEdBQXdDTCxPQUFPTSxTQUFsRTtBQUNBLGdCQUFJRixnQkFBZ0JBLHdCQUF3QkcsSUFBNUMsRUFBa0Q7QUFDOUNKLHVDQUF1QixJQUF2QjtBQUNBSCx1QkFBT1EsWUFBUCxDQUFvQixLQUFLWCxjQUF6QixFQUF5Q2dCLFNBQXpDO0FBQ0g7QUFDRCxnQkFBSUosU0FBUyxnQ0FBTVYsZ0JBQU4sWUFBdUJDLE1BQXZCLEVBQStCYSxTQUEvQixFQUEwQ1gsSUFBMUMsQ0FBYjtBQUNBLGdCQUFJQyxvQkFBSixFQUEwQjtBQUN0QkgsdUJBQU9VLFdBQVAsQ0FBbUIsS0FBS2IsY0FBeEI7QUFDSDtBQUNELG1CQUFPWSxNQUFQO0FBQ0gsU0FwQkw7O0FBQUE7QUFBQSxNQUE0REcscUJBQTVEO0FBc0JIO0FBQ0QsU0FBU2hCLGNBQVQsQ0FBd0JGLFFBQXhCLEVBQWtDO0FBQzlCLFFBQUlvQixpQkFBaUJwQixTQUFTcUIsYUFBVCxDQUF1QixLQUF2QixDQUFyQjtBQUNBRCxtQkFBZUUsU0FBZixHQUEyQixPQUEzQjtBQUNBRixtQkFBZUcsa0JBQWYsQ0FBa0MsV0FBbEMsRUFBK0MsUUFBL0M7QUFDQSxRQUFJSCxlQUFlSSxVQUFmLENBQTBCQyxNQUExQixLQUFxQyxDQUF6QyxFQUE0QztBQUN4QztBQUNBLGVBQU8sS0FBUDtBQUNIO0FBQ0QsV0FBTyxJQUFQO0FBQ0giLCJmaWxlIjoibGliL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBQYXRjaDogICAgQWRqYWNlbnQgdGV4dCBub2RlIG1lcmdpbmcgZml4XG4vLyBCcm93c2VyczogSUUsIEVkZ2UsIEZpcmVmb3ggdy9vIGluc3BlY3RvciBvcGVuXG4vLyBSZWFzb246ICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBtZXJnZSBhZGphY2VudCB0ZXh0IG5vZGVzLiBGb3IgZXhtYXBsZSBnaXZlblxuLy8gICAgICAgICAgIDxkaXY+SGVsbG88L2Rpdj4gd2l0aCBkaXYuaW5zZXJ0QWRqYWNlbnRIVE1MKCcgd29ybGQnKSBicm93c2Vyc1xuLy8gICAgICAgICAgIHdpdGggcHJvcGVyIGJlaGF2aW9yIHdpbGwgcG9wdWxhdGUgZGl2LmNoaWxkTm9kZXMgd2l0aCB0d28gaXRlbXMuXG4vLyAgICAgICAgICAgVGhlc2UgYnJvd3NlcnMgd2lsbCBwb3B1bGF0ZSBpdCB3aXRoIG9uZSBtZXJnZWQgbm9kZSBpbnN0ZWFkLlxuLy8gRml4OiAgICAgIEFkZCB0aGVzZSBub2RlcyB0byBhIHdyYXBwZXIgZWxlbWVudCwgdGhlbiBpdGVyYXRlIHRoZSBjaGlsZE5vZGVzXG4vLyAgICAgICAgICAgb2YgdGhhdCB3cmFwcGVyIGFuZCBtb3ZlIHRoZSBub2RlcyB0byB0aGVpciB0YXJnZXQgbG9jYXRpb24uIE5vdGVcbi8vICAgICAgICAgICB0aGF0IHBvdGVudGlhbCBTVkcgYnVncyB3aWxsIGhhdmUgYmVlbiBoYW5kbGVkIGJlZm9yZSB0aGlzIGZpeC5cbi8vICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBmaXggbXVzdCBvbmx5IGFwcGx5IHRvIHRoZSBwcmV2aW91cyB0ZXh0IG5vZGUsIGFzXG4vLyAgICAgICAgICAgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb2YgYGluc2VydEhUTUxCZWZvcmVgIGFscmVhZHkgaGFuZGxlc1xuLy8gICAgICAgICAgIGZvbGxvd2luZyB0ZXh0IG5vZGVzIGNvcnJlY3RseS5cbmV4cG9ydCBmdW5jdGlvbiBkb21DaGFuZ2VzKGRvY3VtZW50LCBET01DaGFuZ2VzQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gRE9NQ2hhbmdlc0NsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBET01DaGFuZ2VzQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBET01DaGFuZ2VzV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIERPTUNoYW5nZXNDbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gZG9jdW1lbnQuY3JlYXRlQ29tbWVudCgnJyk7XG4gICAgICAgIH1cbiAgICAgICAgaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIGh0bWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGRpZFNldFVzZWxlc3NDb21tZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBsZXQgbmV4dFByZXZpb3VzID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgbmV4dFNpYmxpbmcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbGV0IGJvdW5kcyA9IHN1cGVyLmluc2VydEhUTUxCZWZvcmUocGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgICAgICAgICBpZiAoZGlkU2V0VXNlbGVzc0NvbW1lbnQpIHtcbiAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlQ2hpbGQodGhpcy51c2VsZXNzQ29tbWVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gYm91bmRzO1xuICAgICAgICB9XG4gICAgfTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB0cmVlQ29uc3RydWN0aW9uKGRvY3VtZW50LCBUcmVlQ29uc3RydWN0aW9uQ2xhc3MpIHtcbiAgICBpZiAoIWRvY3VtZW50KSByZXR1cm4gVHJlZUNvbnN0cnVjdGlvbkNsYXNzO1xuICAgIGlmICghc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpKSB7XG4gICAgICAgIHJldHVybiBUcmVlQ29uc3RydWN0aW9uQ2xhc3M7XG4gICAgfVxuICAgIHJldHVybiBjbGFzcyBUcmVlQ29uc3RydWN0aW9uV2l0aFRleHROb2RlTWVyZ2luZ0ZpeCBleHRlbmRzIFRyZWVDb25zdHJ1Y3Rpb25DbGFzcyB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgICAgICB0aGlzLnVzZWxlc3NDb21tZW50ID0gdGhpcy5jcmVhdGVDb21tZW50KCcnKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKSB7XG4gICAgICAgICAgICBpZiAoaHRtbCA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBkaWRTZXRVc2VsZXNzQ29tbWVudCA9IGZhbHNlO1xuICAgICAgICAgICAgbGV0IG5leHRQcmV2aW91cyA9IHJlZmVyZW5jZSA/IHJlZmVyZW5jZS5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgICAgICAgICAgaWYgKG5leHRQcmV2aW91cyAmJiBuZXh0UHJldmlvdXMgaW5zdGFuY2VvZiBUZXh0KSB7XG4gICAgICAgICAgICAgICAgZGlkU2V0VXNlbGVzc0NvbW1lbnQgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUodGhpcy51c2VsZXNzQ29tbWVudCwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxldCBib3VuZHMgPSBzdXBlci5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgcmVmZXJlbmNlLCBodG1sKTtcbiAgICAgICAgICAgIGlmIChkaWRTZXRVc2VsZXNzQ29tbWVudCkge1xuICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh0aGlzLnVzZWxlc3NDb21tZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBib3VuZHM7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gc2hvdWxkQXBwbHlGaXgoZG9jdW1lbnQpIHtcbiAgICBsZXQgbWVyZ2luZ1RleHREaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBtZXJnaW5nVGV4dERpdi5pbm5lckhUTUwgPSAnZmlyc3QnO1xuICAgIG1lcmdpbmdUZXh0RGl2Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgJ3NlY29uZCcpO1xuICAgIGlmIChtZXJnaW5nVGV4dERpdi5jaGlsZE5vZGVzLmxlbmd0aCA9PT0gMikge1xuICAgICAgICAvLyBJdCB3b3JrZWQgYXMgZXhwZWN0ZWQsIG5vIGZpeCByZXF1aXJlZFxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xufSJdfQ==

@@ -40,7 +40,6 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

APPEND_OPCODES.add(58 /* PushArgs */, function (vm, _ref2) {
var positional = _ref2.op1,
synthetic = _ref2.op2;
var synthetic = _ref2.op1;
var stack = vm.stack;
ARGS.setup(stack, positional, !!synthetic);
ARGS.setup(stack, !!synthetic);
stack.push(ARGS);

@@ -68,2 +67,3 @@ });

}
stack.push(positionalCount);
var names = Object.keys(named);

@@ -75,3 +75,3 @@ var namedCount = names.length;

stack.push(names);
args.setup(stack, positionalCount, true);
args.setup(stack, true);
}

@@ -221,2 +221,2 @@ stack.push(args);

}(UpdatingOpcode);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50IiwicG9zaXRpb25hbCIsInN5bnRoZXRpYyIsIm9wMiIsInNldHVwIiwiX3N0YXRlIiwiZmV0Y2hWYWx1ZSIsImFyZ3MiLCJwcmVwYXJlZEFyZ3MiLCJwcmVwYXJlQXJncyIsImNsZWFyIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxPQUFULEVBQWtCQyxZQUFsQixFQUFnQ0MsT0FBaEMsRUFBeUNDLGNBQXpDLFFBQStELG9CQUEvRDtBQUNBLFNBQVNDLGNBQVQsRUFBeUJDLGNBQXpCLFFBQStDLGVBQS9DO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixvQkFBakI7QUFDQSxTQUFTQywwQkFBVCxRQUEyQyxPQUEzQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsTUFBdkI7QUFDQUosZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQiwwQkFBdEIsRUFBa0QsVUFBQ0MsRUFBRCxRQUE4QjtBQUFBLFFBQWxCQyxXQUFrQixRQUF2QkMsR0FBdUI7O0FBQzVFLFFBQUlDLGFBQWFILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosV0FBdEIsQ0FBakI7QUFDQSxRQUFJSyxRQUFRTixHQUFHTSxLQUFmO0FBQ0FBLFVBQU1DLElBQU4sQ0FBV0osVUFBWDtBQUNBRyxVQUFNQyxJQUFOLENBQVdKLFdBQVdLLE9BQXRCO0FBQ0gsQ0FMRDtBQU1BZCxlQUFlSyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlDQUF0QixFQUF5RCxjQUFNO0FBQzNELFFBQUlPLFFBQVFOLEdBQUdNLEtBQWY7QUFDQSxRQUFJRyxZQUFZSCxNQUFNSSxHQUFOLEVBQWhCO0FBQ0EsUUFBSUMsUUFBUW5CLFFBQVFpQixTQUFSLElBQXFCRyxTQUFyQixHQUFpQyxJQUFJbkIsY0FBSixDQUFtQmdCLFNBQW5CLENBQTdDO0FBQ0EsUUFBSU4sYUFBYVEsUUFBUUEsTUFBTUUsSUFBTixFQUFSLEdBQXVCSixVQUFVSyxLQUFWLEVBQXhDO0FBQ0FSLFVB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bUJBQVo7QUFDQSxlQUFLbkIsR0FBTCxHQUFXcEQsWUFBWDtBQU5vQztBQU92Qzs7QUFSTCxvQ0FTSTBFLFFBVEoscUJBU2FqRSxFQVRiLEVBU2lCO0FBQUEsWUFDSFEsT0FERyxHQUM0QixJQUQ1QixDQUNIQSxPQURHO0FBQUEsWUFDTVEsU0FETixHQUM0QixJQUQ1QixDQUNNQSxTQUROO0FBQUEsWUFDaUJ3QyxNQURqQixHQUM0QixJQUQ1QixDQUNpQkEsTUFEakI7O0FBRVRoRCxnQkFBUWlFLGVBQVIsQ0FBd0J6RCxTQUF4QixFQUFtQ3dDLE1BQW5DO0FBQ0F4RCxXQUFHd0MsR0FBSCxDQUFPa0MsU0FBUCxDQUFpQjFELFNBQWpCLEVBQTRCUixPQUE1QjtBQUNILEtBYkw7O0FBQUE7QUFBQSxFQUEyQ2IsY0FBM0MiLCJmaWxlIjoibGliL2NvbXBpbGVkL29wY29kZXMvY29tcG9uZW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29tYmluZSwgQ09OU1RBTlRfVEFHLCBpc0NvbnN0LCBSZWZlcmVuY2VDYWNoZSB9IGZyb20gJ0BnbGltbWVyL3JlZmVyZW5jZSc7XG5pbXBvcnQgeyBBUFBFTkRfT1BDT0RFUywgVXBkYXRpbmdPcGNvZGUgfSBmcm9tICcuLi8uLi9vcGNvZGVzJztcbmltcG9ydCBBUkdTIGZyb20gJy4uLy4uL3ZtL2FyZ3VtZW50cyc7XG5pbXBvcnQgeyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyB9IGZyb20gJy4vZG9tJztcbmltcG9ydCB7IEFzc2VydCB9IGZyb20gJy4vdm0nO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU1IC8qIFB1c2hDb21wb25lbnRNYW5hZ2VyICovLCAodm0sIHsgb3AxOiBfZGVmaW5pdGlvbiB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb24gPSB2bS5jb25zdGFudHMuZ2V0T3RoZXIoX2RlZmluaXRpb24pO1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbik7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uLm1hbmFnZXIpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHJlZmVyZW5jZSA9IHN0YWNrLnBvcCgpO1xuICAgIGxldCBjYWNoZSA9IGlzQ29uc3QocmVmZXJlbmNlKSA/IHVuZGVmaW5lZCA6IG5ldyBSZWZlcmVuY2VDYWNoZShyZWZlcmVuY2UpO1xuICAgIGxldCBkZWZpbml0aW9uID0gY2FjaGUgPyBjYWNoZS5wZWVrKCkgOiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbiAgICBpZiAoY2FjaGUpIHtcbiAgICAgICAgdm0udXBkYXRlV2l0aChuZXcgQXNzZXJ0KGNhY2hlKSk7XG4gICAgfVxufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovLCB2bSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IG1hbmFnZXIgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IHN0YWNrLnBvcCgpO1xuICAgIHN0YWNrLnB1c2goeyBkZWZpbml0aW9uLCBtYW5hZ2VyLCBjb21wb25lbnQ6IG51bGwgfSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OCAvKiBQdXNoQXJncyAqLywgKHZtLCB7IG9wMTogcG9zaXRpb25hbCwgb3AyOiBzeW50aGV0aWMgfSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIEFSR1Muc2V0dXAoc3RhY2ssIHBvc2l0aW9uYWwsICEhc3ludGhldGljKTtcbiAgICBzdGFjay5wdXNoKEFSR1MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTkgLyogUHJlcGFyZUFyZ3MgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgbGV0IHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBhcmdzID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IHByZXBhcmVkQXJncyA9IG1hbmFnZXIucHJlcGFyZUFyZ3MoZGVmaW5pdGlvbiwgYXJncyk7XG4gICAgaWYgKHByZXBhcmVkQXJncykge1xuICAgICAgICBhcmdzLmNsZWFyKCk7XG4gICAgICAgIGxldCB7IHBvc2l0aW9uYWwsIG5hbWVkIH0gPSBwcmVwYXJlZEFyZ3M7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsQ291bnQgPSBwb3NpdGlvbmFsLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb3NpdGlvbmFsQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChwb3NpdGlvbmFsW2ldKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgbmFtZXMgPSBPYmplY3Qua2V5cyhuYW1lZCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG5hbWVkQ291bnQ7IGkrKykge1xuICAgICAgICAgICAgc3RhY2sucHVzaChuYW1lZFtuYW1lc1tpXV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gobmFtZXMpO1xuICAgICAgICBhcmdzLnNldHVwKHN0YWNrLCBwb3NpdGlvbmFsQ291bnQsIHRydWUpO1xuICAgIH1cbiAgICBzdGFjay5wdXNoKGFyZ3MpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjAgLyogQ3JlYXRlQ29tcG9uZW50ICovLCAodm0sIHsgb3AxOiBmbGFncywgb3AyOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uO1xuICAgIGxldCBtYW5hZ2VyO1xuICAgIGxldCBhcmdzID0gdm0uc3RhY2sucG9wKCk7XG4gICAgbGV0IGR5bmFtaWNTY29wZSA9IHZtLmR5bmFtaWNTY29wZSgpO1xuICAgIGxldCBzdGF0ZSA9ICh7IGRlZmluaXRpb24sIG1hbmFnZXIgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKSk7XG4gICAgbGV0IGhhc0RlZmF1bHRCbG9jayA9IGZsYWdzICYgMGIwMTtcbiAgICBsZXQgY29tcG9uZW50ID0gbWFuYWdlci5jcmVhdGUodm0uZW52LCBkZWZpbml0aW9uLCBhcmdzLCBkeW5hbWljU2NvcGUsIHZtLmdldFNlbGYoKSwgISFoYXNEZWZhdWx0QmxvY2spO1xuICAgIHN0YXRlLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICB2bS51cGRhdGVXaXRoKG5ldyBVcGRhdGVDb21wb25lbnRPcGNvZGUoYXJncy50YWcsIGRlZmluaXRpb24ubmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYxIC8qIFJlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvciAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgZGVzdHJ1Y3RvciA9IG1hbmFnZXIuZ2V0RGVzdHJ1Y3Rvcihjb21wb25lbnQpO1xuICAgIGlmIChkZXN0cnVjdG9yKSB2bS5uZXdEZXN0cm95YWJsZShkZXN0cnVjdG9yKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY1IC8qIEJlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHtcbiAgICB2bS5iZWdpbkNhY2hlR3JvdXAoKTtcbiAgICB2bS5lbGVtZW50cygpLnB1c2hTaW1wbGVCbG9jaygpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi8sIHZtID0+IHtcbiAgICB2bS5zdGFjay5wdXNoKG5ldyBDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyh2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY3IC8qIERpZENyZWF0ZUVsZW1lbnQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFjdGlvbiA9ICdEaWRDcmVhdGVFbGVtZW50T3Bjb2RlI2V2YWx1YXRlJztcbiAgICBtYW5hZ2VyLmRpZENyZWF0ZUVsZW1lbnQoY29tcG9uZW50LCB2bS5lbGVtZW50cygpLmV4cGVjdENvbnN0cnVjdGluZyhhY3Rpb24pLCB2bS5lbGVtZW50cygpLmV4cGVjdE9wZXJhdGlvbnMoYWN0aW9uKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MyAvKiBHZXRDb21wb25lbnRTZWxmICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCBzdGF0ZSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKHN0YXRlLm1hbmFnZXIuZ2V0U2VsZihzdGF0ZS5jb21wb25lbnQpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBkZWZpbml0aW9uLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICB2bS5zdGFjay5wdXNoKG1hbmFnZXIubGF5b3V0Rm9yKGRlZmluaXRpb24sIGNvbXBvbmVudCwgdm0uZW52KSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50IH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGJvdW5kcyA9IHZtLmVsZW1lbnRzKCkucG9wQmxvY2soKTtcbiAgICBtYW5hZ2VyLmRpZFJlbmRlckxheW91dChjb21wb25lbnQsIGJvdW5kcyk7XG4gICAgdm0uZW52LmRpZENyZWF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IERpZFVwZGF0ZUxheW91dE9wY29kZShtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjYgLyogQ29tbWl0Q29tcG9uZW50VHJhbnNhY3Rpb24gKi8sIHZtID0+IHZtLmNvbW1pdENhY2hlR3JvdXAoKSk7XG5leHBvcnQgY2xhc3MgVXBkYXRlQ29tcG9uZW50T3Bjb2RlIGV4dGVuZHMgVXBkYXRpbmdPcGNvZGUge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZSwgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5uYW1lID0gbmFtZTtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMubWFuYWdlciA9IG1hbmFnZXI7XG4gICAgICAgIHRoaXMuZHluYW1pY1Njb3BlID0gZHluYW1pY1Njb3BlO1xuICAgICAgICB0aGlzLnR5cGUgPSAndXBkYXRlLWNvbXBvbmVudCc7XG4gICAgICAgIGxldCBjb21wb25lbnRUYWcgPSBtYW5hZ2VyLmdldFRhZyhjb21wb25lbnQpO1xuICAgICAgICBpZiAoY29tcG9uZW50VGFnKSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IGNvbWJpbmUoW3RhZywgY29tcG9uZW50VGFnXSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgfVxuICAgIH1cbiAgICBldmFsdWF0ZShfdm0pIHtcbiAgICAgICAgbGV0IHsgY29tcG9uZW50LCBtYW5hZ2VyLCBkeW5hbWljU2NvcGUgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIudXBkYXRlKGNvbXBvbmVudCwgZHluYW1pY1Njb3BlKTtcbiAgICB9XG4gICAgdG9KU09OKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgYXJnczogW0pTT04uc3RyaW5naWZ5KHRoaXMubmFtZSldLFxuICAgICAgICAgICAgZ3VpZDogdGhpcy5fZ3VpZCxcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZVxuICAgICAgICB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBEaWRVcGRhdGVMYXlvdXRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IobWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5jb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgICAgICB0aGlzLnR5cGUgPSAnZGlkLXVwZGF0ZS1sYXlvdXQnO1xuICAgICAgICB0aGlzLnRhZyA9IENPTlNUQU5UX1RBRztcbiAgICB9XG4gICAgZXZhbHVhdGUodm0pIHtcbiAgICAgICAgbGV0IHsgbWFuYWdlciwgY29tcG9uZW50LCBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgIG1hbmFnZXIuZGlkVXBkYXRlTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICAgICAgdm0uZW52LmRpZFVwZGF0ZShjb21wb25lbnQsIG1hbmFnZXIpO1xuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyJdLCJuYW1lcyI6WyJjb21iaW5lIiwiQ09OU1RBTlRfVEFHIiwiaXNDb25zdCIsIlJlZmVyZW5jZUNhY2hlIiwiQVBQRU5EX09QQ09ERVMiLCJVcGRhdGluZ09wY29kZSIsIkFSR1MiLCJDb21wb25lbnRFbGVtZW50T3BlcmF0aW9ucyIsIkFzc2VydCIsImFkZCIsInZtIiwiX2RlZmluaXRpb24iLCJvcDEiLCJkZWZpbml0aW9uIiwiY29uc3RhbnRzIiwiZ2V0T3RoZXIiLCJzdGFjayIsInB1c2giLCJtYW5hZ2VyIiwicmVmZXJlbmNlIiwicG9wIiwiY2FjaGUiLCJ1bmRlZmluZWQiLCJwZWVrIiwidmFsdWUiLCJ1cGRhdGVXaXRoIiwiY29tcG9uZW50Iiwic3ludGhldGljIiwic2V0dXAiLCJfc3RhdGUiLCJmZXRjaFZhbHVlIiwiYXJncyIsInByZXBhcmVkQXJncyIsInByZXBhcmVBcmdzIiwiY2xlYXIiLCJwb3NpdGlvbmFsIiwibmFtZWQiLCJwb3NpdGlvbmFsQ291bnQiLCJsZW5ndGgiLCJpIiwibmFtZXMiLCJPYmplY3QiLCJrZXlzIiwibmFtZWRDb3VudCIsImZsYWdzIiwib3AyIiwiZHluYW1pY1Njb3BlIiwic3RhdGUiLCJoYXNEZWZhdWx0QmxvY2siLCJjcmVhdGUiLCJlbnYiLCJnZXRTZWxmIiwiVXBkYXRlQ29tcG9uZW50T3Bjb2RlIiwidGFnIiwibmFtZSIsImRlc3RydWN0b3IiLCJnZXREZXN0cnVjdG9yIiwibmV3RGVzdHJveWFibGUiLCJiZWdpbkNhY2hlR3JvdXAiLCJlbGVtZW50cyIsInB1c2hTaW1wbGVCbG9jayIsImFjdGlvbiIsImRpZENyZWF0ZUVsZW1lbnQiLCJleHBlY3RDb25zdHJ1Y3RpbmciLCJleHBlY3RPcGVyYXRpb25zIiwibGF5b3V0Rm9yIiwiYm91bmRzIiwicG9wQmxvY2siLCJkaWRSZW5kZXJMYXlvdXQiLCJkaWRDcmVhdGUiLCJEaWRVcGRhdGVMYXlvdXRPcGNvZGUiLCJjb21taXRDYWNoZUdyb3VwIiwidHlwZSIsImNvbXBvbmVudFRhZyIsImdldFRhZyIsImV2YWx1YXRlIiwiX3ZtIiwidXBkYXRlIiwidG9KU09OIiwiSlNPTiIsInN0cmluZ2lmeSIsImd1aWQiLCJfZ3VpZCIsImRpZFVwZGF0ZUxheW91dCIsImRpZFVwZGF0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxPQUFULEVBQWtCQyxZQUFsQixFQUFnQ0MsT0FBaEMsRUFBeUNDLGNBQXpDLFFBQStELG9CQUEvRDtBQUNBLFNBQVNDLGNBQVQsRUFBeUJDLGNBQXpCLFFBQStDLGVBQS9DO0FBQ0EsT0FBT0MsSUFBUCxNQUFpQixvQkFBakI7QUFDQSxTQUFTQywwQkFBVCxRQUEyQyxPQUEzQztBQUNBLFNBQVNDLE1BQVQsUUFBdUIsTUFBdkI7QUFDQUosZUFBZUssR0FBZixDQUFtQixFQUFuQixDQUFzQiwwQkFBdEIsRUFBa0QsVUFBQ0MsRUFBRCxRQUE4QjtBQUFBLFFBQWxCQyxXQUFrQixRQUF2QkMsR0FBdUI7O0FBQzVFLFFBQUlDLGFBQWFILEdBQUdJLFNBQUgsQ0FBYUMsUUFBYixDQUFzQkosV0FBdEIsQ0FBakI7QUFDQSxRQUFJSyxRQUFRTixHQUFHTSxLQUFmO0FBQ0FBLFVBQU1DLElBQU4sQ0FBV0osVUFBWDtBQUNBRyxVQUFNQyxJQUFOLENBQVdKLFdBQVdLLE9BQXRCO0FBQ0gsQ0FMRDtBQU1BZCxlQUFlSyxHQUFmLENBQW1CLEVBQW5CLENBQXNCLGlDQUF0QixFQUF5RCxjQUFNO0FBQzNELFFBQUlPLFFBQVFOLEdBQUdNLEtBQWY7QUFDQSxRQUFJRyxZQUFZSCxNQUFNSSxHQUFOLEVBQWhCO0FBQ0EsUUFBSUMsUUFBUW5CLFFBQVFpQixTQUFSLElBQXFCRyxTQUFyQixHQUFpQyxJQUFJbkIsY0FBSixDQUFtQmdCLFNBQW5CLENBQTdDO0FBQ0EsUUFBSU4sYUFBYVEsUUFBUUEsTUFBTUUsSUFBTixFQUFSLEdBQXVCSixVQUFVSyxLQUFWLEVBQXhDO0FBQ0FSLFVB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QVg7QUFOb0M7QUFPdkM7O0FBUkwsb0NBU0kwRSxRQVRKLHFCQVNhakUsRUFUYixFQVNpQjtBQUFBLFlBQ0hRLE9BREcsR0FDNEIsSUFENUIsQ0FDSEEsT0FERztBQUFBLFlBQ01RLFNBRE4sR0FDNEIsSUFENUIsQ0FDTUEsU0FETjtBQUFBLFlBQ2lCd0MsTUFEakIsR0FDNEIsSUFENUIsQ0FDaUJBLE1BRGpCOztBQUVUaEQsZ0JBQVFpRSxlQUFSLENBQXdCekQsU0FBeEIsRUFBbUN3QyxNQUFuQztBQUNBeEQsV0FBR3dDLEdBQUgsQ0FBT2tDLFNBQVAsQ0FBaUIxRCxTQUFqQixFQUE0QlIsT0FBNUI7QUFDSCxLQWJMOztBQUFBO0FBQUEsRUFBMkNiLGNBQTNDIiwiZmlsZSI6ImxpYi9jb21waWxlZC9vcGNvZGVzL2NvbXBvbmVudC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbWJpbmUsIENPTlNUQU5UX1RBRywgaXNDb25zdCwgUmVmZXJlbmNlQ2FjaGUgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgQVBQRU5EX09QQ09ERVMsIFVwZGF0aW5nT3Bjb2RlIH0gZnJvbSAnLi4vLi4vb3Bjb2Rlcyc7XG5pbXBvcnQgQVJHUyBmcm9tICcuLi8uLi92bS9hcmd1bWVudHMnO1xuaW1wb3J0IHsgQ29tcG9uZW50RWxlbWVudE9wZXJhdGlvbnMgfSBmcm9tICcuL2RvbSc7XG5pbXBvcnQgeyBBc3NlcnQgfSBmcm9tICcuL3ZtJztcbkFQUEVORF9PUENPREVTLmFkZCg1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLywgKHZtLCB7IG9wMTogX2RlZmluaXRpb24gfSkgPT4ge1xuICAgIGxldCBkZWZpbml0aW9uID0gdm0uY29uc3RhbnRzLmdldE90aGVyKF9kZWZpbml0aW9uKTtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24pO1xuICAgIHN0YWNrLnB1c2goZGVmaW5pdGlvbi5tYW5hZ2VyKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU2IC8qIFB1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlciAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCByZWZlcmVuY2UgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgY2FjaGUgPSBpc0NvbnN0KHJlZmVyZW5jZSkgPyB1bmRlZmluZWQgOiBuZXcgUmVmZXJlbmNlQ2FjaGUocmVmZXJlbmNlKTtcbiAgICBsZXQgZGVmaW5pdGlvbiA9IGNhY2hlID8gY2FjaGUucGVlaygpIDogcmVmZXJlbmNlLnZhbHVlKCk7XG4gICAgc3RhY2sucHVzaChkZWZpbml0aW9uKTtcbiAgICBzdGFjay5wdXNoKGRlZmluaXRpb24ubWFuYWdlcik7XG4gICAgaWYgKGNhY2hlKSB7XG4gICAgICAgIHZtLnVwZGF0ZVdpdGgobmV3IEFzc2VydChjYWNoZSkpO1xuICAgIH1cbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDU3IC8qIEluaXRpYWxpemVDb21wb25lbnRTdGF0ZSAqLywgdm0gPT4ge1xuICAgIGxldCBzdGFjayA9IHZtLnN0YWNrO1xuICAgIGxldCBtYW5hZ2VyID0gc3RhY2sucG9wKCk7XG4gICAgbGV0IGRlZmluaXRpb24gPSBzdGFjay5wb3AoKTtcbiAgICBzdGFjay5wdXNoKHsgZGVmaW5pdGlvbiwgbWFuYWdlciwgY29tcG9uZW50OiBudWxsIH0pO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNTggLyogUHVzaEFyZ3MgKi8sICh2bSwgeyBvcDE6IHN5bnRoZXRpYyB9KSA9PiB7XG4gICAgbGV0IHN0YWNrID0gdm0uc3RhY2s7XG4gICAgQVJHUy5zZXR1cChzdGFjaywgISFzeW50aGV0aWMpO1xuICAgIHN0YWNrLnB1c2goQVJHUyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg1OSAvKiBQcmVwYXJlQXJncyAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgc3RhY2sgPSB2bS5zdGFjaztcbiAgICBsZXQgeyBkZWZpbml0aW9uLCBtYW5hZ2VyIH0gPSB2bS5mZXRjaFZhbHVlKF9zdGF0ZSk7XG4gICAgbGV0IGFyZ3MgPSBzdGFjay5wb3AoKTtcbiAgICBsZXQgcHJlcGFyZWRBcmdzID0gbWFuYWdlci5wcmVwYXJlQXJncyhkZWZpbml0aW9uLCBhcmdzKTtcbiAgICBpZiAocHJlcGFyZWRBcmdzKSB7XG4gICAgICAgIGFyZ3MuY2xlYXIoKTtcbiAgICAgICAgbGV0IHsgcG9zaXRpb25hbCwgbmFtZWQgfSA9IHByZXBhcmVkQXJncztcbiAgICAgICAgbGV0IHBvc2l0aW9uYWxDb3VudCA9IHBvc2l0aW9uYWwubGVuZ3RoO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvc2l0aW9uYWxDb3VudDsgaSsrKSB7XG4gICAgICAgICAgICBzdGFjay5wdXNoKHBvc2l0aW9uYWxbaV0pO1xuICAgICAgICB9XG4gICAgICAgIHN0YWNrLnB1c2gocG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVzID0gT2JqZWN0LmtleXMobmFtZWQpO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lZENvdW50OyBpKyspIHtcbiAgICAgICAgICAgIHN0YWNrLnB1c2gobmFtZWRbbmFtZXNbaV1dKTtcbiAgICAgICAgfVxuICAgICAgICBzdGFjay5wdXNoKG5hbWVzKTtcbiAgICAgICAgYXJncy5zZXR1cChzdGFjaywgdHJ1ZSk7XG4gICAgfVxuICAgIHN0YWNrLnB1c2goYXJncyk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MCAvKiBDcmVhdGVDb21wb25lbnQgKi8sICh2bSwgeyBvcDE6IGZsYWdzLCBvcDI6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IGRlZmluaXRpb247XG4gICAgbGV0IG1hbmFnZXI7XG4gICAgbGV0IGFyZ3MgPSB2bS5zdGFjay5wb3AoKTtcbiAgICBsZXQgZHluYW1pY1Njb3BlID0gdm0uZHluYW1pY1Njb3BlKCk7XG4gICAgbGV0IHN0YXRlID0gKHsgZGVmaW5pdGlvbiwgbWFuYWdlciB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpKTtcbiAgICBsZXQgaGFzRGVmYXVsdEJsb2NrID0gZmxhZ3MgJiAwYjAxO1xuICAgIGxldCBjb21wb25lbnQgPSBtYW5hZ2VyLmNyZWF0ZSh2bS5lbnYsIGRlZmluaXRpb24sIGFyZ3MsIGR5bmFtaWNTY29wZSwgdm0uZ2V0U2VsZigpLCAhIWhhc0RlZmF1bHRCbG9jayk7XG4gICAgc3RhdGUuY29tcG9uZW50ID0gY29tcG9uZW50O1xuICAgIHZtLnVwZGF0ZVdpdGgobmV3IFVwZGF0ZUNvbXBvbmVudE9wY29kZShhcmdzLnRhZywgZGVmaW5pdGlvbi5uYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIGxldCBkZXN0cnVjdG9yID0gbWFuYWdlci5nZXREZXN0cnVjdG9yKGNvbXBvbmVudCk7XG4gICAgaWYgKGRlc3RydWN0b3IpIHZtLm5ld0Rlc3Ryb3lhYmxlKGRlc3RydWN0b3IpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjUgLyogQmVnaW5Db21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4ge1xuICAgIHZtLmJlZ2luQ2FjaGVHcm91cCgpO1xuICAgIHZtLmVsZW1lbnRzKCkucHVzaFNpbXBsZUJsb2NrKCk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2MiAvKiBQdXNoQ29tcG9uZW50T3BlcmF0aW9ucyAqLywgdm0gPT4ge1xuICAgIHZtLnN0YWNrLnB1c2gobmV3IENvbXBvbmVudEVsZW1lbnRPcGVyYXRpb25zKHZtLmVudikpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjcgLyogRGlkQ3JlYXRlRWxlbWVudCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYWN0aW9uID0gJ0RpZENyZWF0ZUVsZW1lbnRPcGNvZGUjZXZhbHVhdGUnO1xuICAgIG1hbmFnZXIuZGlkQ3JlYXRlRWxlbWVudChjb21wb25lbnQsIHZtLmVsZW1lbnRzKCkuZXhwZWN0Q29uc3RydWN0aW5nKGFjdGlvbiksIHZtLmVsZW1lbnRzKCkuZXhwZWN0T3BlcmF0aW9ucyhhY3Rpb24pKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi8sICh2bSwgeyBvcDE6IF9zdGF0ZSB9KSA9PiB7XG4gICAgbGV0IHN0YXRlID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2goc3RhdGUubWFuYWdlci5nZXRTZWxmKHN0YXRlLmNvbXBvbmVudCkpO1xufSk7XG5BUFBFTkRfT1BDT0RFUy5hZGQoNjQgLyogR2V0Q29tcG9uZW50TGF5b3V0ICovLCAodm0sIHsgb3AxOiBfc3RhdGUgfSkgPT4ge1xuICAgIGxldCB7IG1hbmFnZXIsIGRlZmluaXRpb24sIGNvbXBvbmVudCB9ID0gdm0uZmV0Y2hWYWx1ZShfc3RhdGUpO1xuICAgIHZtLnN0YWNrLnB1c2gobWFuYWdlci5sYXlvdXRGb3IoZGVmaW5pdGlvbiwgY29tcG9uZW50LCB2bS5lbnYpKTtcbn0pO1xuQVBQRU5EX09QQ09ERVMuYWRkKDY4IC8qIERpZFJlbmRlckxheW91dCAqLywgKHZtLCB7IG9wMTogX3N0YXRlIH0pID0+IHtcbiAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQgfSA9IHZtLmZldGNoVmFsdWUoX3N0YXRlKTtcbiAgICBsZXQgYm91bmRzID0gdm0uZWxlbWVudHMoKS5wb3BCbG9jaygpO1xuICAgIG1hbmFnZXIuZGlkUmVuZGVyTGF5b3V0KGNvbXBvbmVudCwgYm91bmRzKTtcbiAgICB2bS5lbnYuZGlkQ3JlYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgdm0udXBkYXRlV2l0aChuZXcgRGlkVXBkYXRlTGF5b3V0T3Bjb2RlKG1hbmFnZXIsIGNvbXBvbmVudCwgYm91bmRzKSk7XG59KTtcbkFQUEVORF9PUENPREVTLmFkZCg2NiAvKiBDb21taXRDb21wb25lbnRUcmFuc2FjdGlvbiAqLywgdm0gPT4gdm0uY29tbWl0Q2FjaGVHcm91cCgpKTtcbmV4cG9ydCBjbGFzcyBVcGRhdGVDb21wb25lbnRPcGNvZGUgZXh0ZW5kcyBVcGRhdGluZ09wY29kZSB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lLCBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5tYW5hZ2VyID0gbWFuYWdlcjtcbiAgICAgICAgdGhpcy5keW5hbWljU2NvcGUgPSBkeW5hbWljU2NvcGU7XG4gICAgICAgIHRoaXMudHlwZSA9ICd1cGRhdGUtY29tcG9uZW50JztcbiAgICAgICAgbGV0IGNvbXBvbmVudFRhZyA9IG1hbmFnZXIuZ2V0VGFnKGNvbXBvbmVudCk7XG4gICAgICAgIGlmIChjb21wb25lbnRUYWcpIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gY29tYmluZShbdGFnLCBjb21wb25lbnRUYWddKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB9XG4gICAgfVxuICAgIGV2YWx1YXRlKF92bSkge1xuICAgICAgICBsZXQgeyBjb21wb25lbnQsIG1hbmFnZXIsIGR5bmFtaWNTY29wZSB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci51cGRhdGUoY29tcG9uZW50LCBkeW5hbWljU2NvcGUpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBhcmdzOiBbSlNPTi5zdHJpbmdpZnkodGhpcy5uYW1lKV0sXG4gICAgICAgICAgICBndWlkOiB0aGlzLl9ndWlkLFxuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlXG4gICAgICAgIH07XG4gICAgfVxufVxuZXhwb3J0IGNsYXNzIERpZFVwZGF0ZUxheW91dE9wY29kZSBleHRlbmRzIFVwZGF0aW5nT3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcihtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcykge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm1hbmFnZXIgPSBtYW5hZ2VyO1xuICAgICAgICB0aGlzLmNvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgICAgdGhpcy5ib3VuZHMgPSBib3VuZHM7XG4gICAgICAgIHRoaXMudHlwZSA9ICdkaWQtdXBkYXRlLWxheW91dCc7XG4gICAgICAgIHRoaXMudGFnID0gQ09OU1RBTlRfVEFHO1xuICAgIH1cbiAgICBldmFsdWF0ZSh2bSkge1xuICAgICAgICBsZXQgeyBtYW5hZ2VyLCBjb21wb25lbnQsIGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgbWFuYWdlci5kaWRVcGRhdGVMYXlvdXQoY29tcG9uZW50LCBib3VuZHMpO1xuICAgICAgICB2bS5lbnYuZGlkVXBkYXRlKGNvbXBvbmVudCwgbWFuYWdlcik7XG4gICAgfVxufSJdfQ==
export { _insertHTMLBefore as insertHTMLBefore };
function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

@@ -37,39 +43,62 @@

}
export var DOMOperations = function () {
function DOMOperations(document) {
_classCallCheck(this, DOMOperations);
this.document = document;
this.uselessElement = this.document.createElement('div');
}
DOMOperations.prototype.createElement = function createElement(tag, context) {
var isElementInSVGNamespace = void 0,
isHTMLIntegrationPoint = void 0;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error('Cannot create a ' + tag + ' inside an SVG context');
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
};
DOMOperations.prototype.insertBefore = function insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
};
DOMOperations.prototype.insertHTMLBefore = function insertHTMLBefore(_parent, nextSibling, html) {
return _insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
};
DOMOperations.prototype.createTextNode = function createTextNode(text) {
return this.document.createTextNode(text);
};
DOMOperations.prototype.createComment = function createComment(data) {
return this.document.createComment(data);
};
return DOMOperations;
}();
export var DOM;
(function (DOM) {
var TreeConstruction = function () {
function TreeConstruction(document) {
var TreeConstruction = function (_DOMOperations) {
_inherits(TreeConstruction, _DOMOperations);
function TreeConstruction() {
_classCallCheck(this, TreeConstruction);
this.document = document;
this.setupUselessElement();
return _possibleConstructorReturn(this, _DOMOperations.apply(this, arguments));
}
TreeConstruction.prototype.setupUselessElement = function setupUselessElement() {
this.uselessElement = this.document.createElement('div');
};
TreeConstruction.prototype.createElement = function createElement(tag, context) {
var isElementInSVGNamespace = void 0,
isHTMLIntegrationPoint = void 0;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error('Cannot create a ' + tag + ' inside an SVG context');
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
};
TreeConstruction.prototype.createElementNS = function createElementNS(namespace, tag) {

@@ -87,20 +116,4 @@ return this.document.createElementNS(namespace, tag);

TreeConstruction.prototype.createTextNode = function createTextNode(text) {
return this.document.createTextNode(text);
};
TreeConstruction.prototype.createComment = function createComment(data) {
return this.document.createComment(data);
};
TreeConstruction.prototype.insertBefore = function insertBefore(parent, node, reference) {
parent.insertBefore(node, reference);
};
TreeConstruction.prototype.insertHTMLBefore = function insertHTMLBefore(parent, html, reference) {
return _insertHTMLBefore(this.uselessElement, parent, reference, html);
};
return TreeConstruction;
}();
}(DOMOperations);

@@ -114,9 +127,13 @@ DOM.TreeConstruction = TreeConstruction;

})(DOM || (DOM = {}));
export var DOMChanges = function () {
export var DOMChanges = function (_DOMOperations2) {
_inherits(DOMChanges, _DOMOperations2);
function DOMChanges(document) {
_classCallCheck(this, DOMChanges);
this.document = document;
this.namespace = null;
this.uselessElement = this.document.createElement('div');
var _this2 = _possibleConstructorReturn(this, _DOMOperations2.call(this, document));
_this2.document = document;
_this2.namespace = null;
return _this2;
}

@@ -140,37 +157,2 @@

DOMChanges.prototype.createTextNode = function createTextNode(text) {
return this.document.createTextNode(text);
};
DOMChanges.prototype.createComment = function createComment(data) {
return this.document.createComment(data);
};
DOMChanges.prototype.createElement = function createElement(tag, context) {
var isElementInSVGNamespace = void 0,
isHTMLIntegrationPoint = void 0;
if (context) {
isElementInSVGNamespace = context.namespaceURI === SVG_NAMESPACE || tag === 'svg';
isHTMLIntegrationPoint = SVG_INTEGRATION_POINTS[context.tagName];
} else {
isElementInSVGNamespace = tag === 'svg';
isHTMLIntegrationPoint = false;
}
if (isElementInSVGNamespace && !isHTMLIntegrationPoint) {
// FIXME: This does not properly handle <font> with color, face, or
// size attributes, which is also disallowed by the spec. We should fix
// this.
if (BLACKLIST_TABLE[tag]) {
throw new Error('Cannot create a ' + tag + ' inside an SVG context');
}
return this.document.createElementNS(SVG_NAMESPACE, tag);
} else {
return this.document.createElement(tag);
}
};
DOMChanges.prototype.insertHTMLBefore = function insertHTMLBefore(_parent, nextSibling, html) {
return _insertHTMLBefore(this.uselessElement, _parent, nextSibling, html);
};
DOMChanges.prototype.insertNodeBefore = function insertNodeBefore(parent, node, reference) {

@@ -204,3 +186,3 @@ if (isDocumentFragment(node)) {

return DOMChanges;
}();
}(DOMOperations);
function _insertHTMLBefore(_useless, _parent, _nextSibling, html) {

@@ -248,2 +230,2 @@ // TypeScript vendored an old version of the DOM spec where `insertAdjacentHTML`

export var DOMTreeConstruction = DOM.DOMTreeConstruction;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vaGVscGVyLmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwiU2luZ2xlTm9kZUJvdW5kcyIsImRvbUNoYW5nZXMiLCJkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4IiwidHJlZUNvbnN0cnVjdGlvbiIsInRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXgiLCJkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCIsInRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4IiwiZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4IiwidHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4IiwiU1ZHX05BTUVTUEFDRSIsIlNWR19JTlRFR1JBVElPTl9QT0lOVFMiLCJmb3JlaWduT2JqZWN0IiwiZGVzYyIsInRpdGxlIiwiQkxBQ0tMSVNUX1RBQkxFIiwiT2JqZWN0IiwiY3JlYXRlIiwiZm9yRWFjaCIsInRhZyIsIldISVRFU1BBQ0UiLCJkb2MiLCJkb2N1bWVudCIsImlzV2hpdGVzcGFjZSIsInN0cmluZyIsInRlc3QiLCJtb3ZlTm9kZXNCZWZvcmUiLCJzb3VyY2UiLCJ0YXJnZXQiLCJuZXh0U2libGluZyIsImZpcnN0IiwiZmlyc3RDaGlsZCIsImxhc3QiLCJjdXJyZW50IiwiaW5zZXJ0QmVmb3JlIiwiRE9NIiwiVHJlZUNvbnN0cnVjdGlvbiIsInNldHVwVXNlbGVzc0VsZW1lbnQiLCJ1c2VsZXNzRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJjb250ZXh0IiwiaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UiLCJpc0hUTUxJbnRlZ3JhdGlvblBvaW50IiwibmFtZXNwYWNlVVJJIiwidGFnTmFtZSIsIkVycm9yIiwiY3JlYXRlRWxlbWVudE5TIiwibmFtZXNwYWNlIiwic2V0QXR0cmlidXRlIiwiZWxlbWVudCIsIm5hbWUiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZU5TIiwiY3JlYXRlVGV4dE5vZGUiLCJ0ZXh0IiwiY3JlYXRlQ29tbWVudCIsImRhdGEiLCJwYXJlbnQiLCJub2RlIiwicmVmZXJlbmNlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsImh0bWwiLCJhcHBsaWVkVHJlZUNvbnRydWN0aW9uIiwiRE9NVHJlZUNvbnN0cnVjdGlvbiIsIkRPTUNoYW5nZXMiLCJyZW1vdmVBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGVOUyIsIl9wYXJlbnQiLCJpbnNlcnROb2RlQmVmb3JlIiwiaXNEb2N1bWVudEZyYWdtZW50IiwibGFzdENoaWxkIiwiaW5zZXJ0VGV4dEJlZm9yZSIsInRleHROb2RlIiwiaW5zZXJ0QWZ0ZXIiLCJfdXNlbGVzcyIsIl9uZXh0U2libGluZyIsInVzZWxlc3MiLCJwcmV2IiwicHJldmlvdXNTaWJsaW5nIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiSFRNTEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUiLCJoZWxwZXIiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxnQkFBekIsUUFBaUQsV0FBakQ7QUFDQSxTQUFTQyxjQUFjQyx5QkFBdkIsRUFBa0RDLG9CQUFvQkMsK0JBQXRFLFFBQTZHLDBCQUE3RztBQUNBLFNBQVNILGNBQWNJLHVCQUF2QixFQUFnREYsb0JBQW9CRyw2QkFBcEUsUUFBeUcsOEJBQXpHO0FBQ0EsU0FBU0wsY0FBY00sd0JBQXZCLEVBQWlESixvQkFBb0JLLDhCQUFyRSxRQUEyRyxpQ0FBM0c7QUFDQSxPQUFPLElBQU1DLGdCQUFnQiw0QkFBdEI7QUFDUDtBQUNBLElBQU1DLHlCQUF5QixFQUFFQyxlQUFlLENBQWpCLEVBQW9CQyxNQUFNLENBQTFCLEVBQTZCQyxPQUFPLENBQXBDLEVBQS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsa0JBQWtCQyxPQUFPQyxNQUFQLENBQWMsSUFBZCxDQUF4QjtBQUNQLENBQUMsR0FBRCxFQUFNLEtBQU4sRUFBYSxZQUFiLEVBQTJCLE1BQTNCLEVBQW1DLElBQW5D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MENsQixJQUExQztBQUNBN0IsZUFBTzRDLFFBQVFFLGVBQWY7QUFDQXJCLGVBQU93QixXQUFQLENBQW1CTCxPQUFuQjtBQUNIO0FBQ0QsUUFBSTlDLFFBQVErQyxPQUFPQSxLQUFLaEQsV0FBWixHQUEwQjRCLE9BQU8xQixVQUE3QztBQUNBLFdBQU8sSUFBSS9CLGNBQUosQ0FBbUJ5RCxNQUFuQixFQUEyQjNCLEtBQTNCLEVBQWtDRSxJQUFsQyxDQUFQO0FBQ0g7QUFDRCxTQUFTcUMsa0JBQVQsQ0FBNEJYLElBQTVCLEVBQWtDO0FBQzlCLFdBQU9BLEtBQUt3QixRQUFMLEtBQWtCQyxLQUFLQyxzQkFBOUI7QUFDSDtBQUNELElBQUlDLFNBQVNyQixVQUFiO0FBQ0FxQixTQUFTN0UseUJBQXlCYSxHQUF6QixFQUE4QmdFLE1BQTlCLENBQVQ7QUFDQUEsU0FBU2xGLDBCQUEwQmtCLEdBQTFCLEVBQStCZ0UsTUFBL0IsQ0FBVDtBQUNBQSxTQUFTL0Usd0JBQXdCZSxHQUF4QixFQUE2QmdFLE1BQTdCLEVBQXFDM0UsYUFBckMsQ0FBVDtBQUNBLGVBQWUyRSxNQUFmO0FBQ0EsT0FBTyxJQUFNdEIsc0JBQXNCNUIsSUFBSTRCLG1CQUFoQyIsImZpbGUiOiJsaWIvZG9tL2hlbHBlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbmNyZXRlQm91bmRzLCBTaW5nbGVOb2RlQm91bmRzIH0gZnJvbSAnLi4vYm91bmRzJztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1RhYmxlRWxlbWVudEZpeCwgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uVGFibGVFbGVtZW50Rml4IH0gZnJvbSAnLi4vY29tcGF0L2lubmVyLWh0bWwtZml4JztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc1N2Z0VsZW1lbnRGaXgsIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvblN2Z0VsZW1lbnRGaXggfSBmcm9tICcuLi9jb21wYXQvc3ZnLWlubmVyLWh0bWwtZml4JztcbmltcG9ydCB7IGRvbUNoYW5nZXMgYXMgZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4LCB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeCB9IGZyb20gJy4uL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgnO1xuZXhwb3J0IGNvbnN0IFNWR19OQU1FU1BBQ0UgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnO1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNodG1sLWludGVncmF0aW9uLXBvaW50XG5jb25zdCBTVkdfSU5URUdSQVRJT05fUE9JTlRTID0geyBmb3JlaWduT2JqZWN0OiAxLCBkZXNjOiAxLCB0aXRsZTogMSB9O1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNhZGp1c3Qtc3ZnLWF0dHJpYnV0ZXNcbi8vIFRPRE86IEFkanVzdCBTVkcgYXR0cmlidXRlc1xuLy8gaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5mb3JlaWduXG4vLyBUT0RPOiBBZGp1c3QgU1ZHIGVsZW1lbnRzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbmV4cG9ydCBjb25zdCBCTEFDS0xJU1RfVEFCTEUgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuW1wiYlwiLCBcImJpZ1wiLCBcImJsb2NrcXVvdGVcIiwgXCJib2R5XCIsIFwiYnJcIiwgXCJjZW50ZXJcIiwgXCJjb2RlXCIsIFwiZGRcIiwgXCJkaXZcIiwgXCJkbFwiLCBcImR0XCIsIFwiZW1cIiwgXCJlbWJlZFwiLCBcImgxXCIsIFwiaDJcIiwgXCJoM1wiLCBcImg0XCIsIFwiaDVcIiwgXCJoNlwiLCBcImhlYWRcIiwgXCJoclwiLCBcImlcIiwgXCJpbWdcIiwgXCJsaVwiLCBcImxpc3RpbmdcIiwgXCJtYWluXCIsIFwibWV0YVwiLCBcIm5vYnJcIiwgXCJvbFwiLCBcInBcIiwgXCJwcmVcIiwgXCJydWJ5XCIsIFwic1wiLCBcInNtYWxsXCIsIFwic3BhblwiLCBcInN0cm9uZ1wiLCBcInN0cmlrZVwiLCBcInN1YlwiLCBcInN1cFwiLCBcInRhYmxlXCIsIFwidHRcIiwgXCJ1XCIsIFwidWxcIiwgXCJ2YXJcIl0uZm9yRWFjaCh0YWcgPT4gQkxBQ0tMSVNUX1RBQkxFW3RhZ10gPSAxKTtcbmNvbnN0IFdISVRFU1BBQ0UgPSAvW1xcdC1cXHIgXFx4QTBcXHUxNjgwXFx1MTgwRVxcdTIwMDAtXFx1MjAwQVxcdTIwMjhcXHUyMDI5XFx1MjAyRlxcdTIwNUZcXHUzMDAwXFx1RkVGRl0vO1xubGV0IGRvYyA9IHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogZG9jdW1lbnQ7XG5leHBvcnQgZnVuY3Rpb24gaXNXaGl0ZXNwYWNlKHN0cmluZykge1xuICAgIHJldHVybiBXSElURVNQQUNFLnRlc3Qoc3RyaW5nKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlTm9kZXNCZWZvcmUoc291cmNlLCB0YXJnZXQsIG5leHRTaWJsaW5nKSB7XG4gICAgbGV0IGZpcnN0ID0gc291cmNlLmZpcnN0Q2hpbGQ7XG4gICAgbGV0IGxhc3QgPSBudWxsO1xuICAgIGxldCBjdXJyZW50ID0gZmlyc3Q7XG4gICAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICAgICAgbGFzdCA9IGN1cnJlbnQ7XG4gICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm5leHRTaWJsaW5nO1xuICAgICAgICB0YXJnZXQuaW5zZXJ0QmVmb3JlKGxhc3QsIG5leHRTaWJsaW5nKTtcbiAgICB9XG4gICAgcmV0dXJuIFtmaXJzdCwgbGFzdF07XG59XG5leHBvcnQgdmFyIERPTTtcbihmdW5jdGlvbiAoRE9NKSB7XG4gICAgY2xhc3MgVHJlZUNvbnN0cnVjdGlvbiB7XG4gICAgICAgIGNvbnN0cnVjdG9yKGRvY3VtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgICAgICB0aGlzLnNldHVwVXNlbGVzc0VsZW1lbnQoKTtcbiAgICAgICAgfVxuICAgICAgICBzZXR1cFVzZWxlc3NFbGVtZW50KCkge1xuICAgICAgICAgICAgdGhpcy51c2VsZXNzRWxlbWVudCA9IHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIH1cbiAgICAgICAgY3JlYXRlRWxlbWVudCh0YWcsIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGxldCBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSwgaXNIVE1MSW50ZWdyYXRpb25Qb2ludDtcbiAgICAgICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSBjb250ZXh0Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSB8fCB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBTVkdfSU5URUdSQVRJT05fUE9JTlRTW2NvbnRleHQudGFnTmFtZV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gdGFnID09PSAnc3ZnJztcbiAgICAgICAgICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBwcm9wZXJseSBoYW5kbGUgPGZvbnQ+IHdpdGggY29sb3IsIGZhY2UsIG9yXG4gICAgICAgICAgICAgICAgLy8gc2l6ZSBhdHRyaWJ1dGVzLCB3aGljaCBpcyBhbHNvIGRpc2FsbG93ZWQgYnkgdGhlIHNwZWMuIFdlIHNob3VsZCBmaXhcbiAgICAgICAgICAgICAgICAvLyB0aGlzLlxuICAgICAgICAgICAgICAgIGlmIChCTEFDS0xJU1RfVEFCTEVbdGFnXSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgYSAke3RhZ30gaW5zaWRlIGFuIFNWRyBjb250ZXh0YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhTVkdfTkFNRVNQQUNFLCB0YWcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWcpO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNyZWF0ZVRleHROb2RlKHRleHQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgICAgICB9XG4gICAgICAgIGNyZWF0ZUNvbW1lbnQoZGF0YSkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlQ29tbWVudChkYXRhKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgICAgIHBhcmVudC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgfVxuICAgICAgICBpbnNlcnRIVE1MQmVmb3JlKHBhcmVudCwgaHRtbCwgcmVmZXJlbmNlKSB7XG4gICAgICAgICAgICByZXR1cm4gaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLnVzZWxlc3NFbGVtZW50LCBwYXJlbnQsIHJlZmVyZW5jZSwgaHRtbCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgRE9NLlRyZWVDb25zdHJ1Y3Rpb24gPSBUcmVlQ29uc3RydWN0aW9uO1xuICAgIGxldCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gVHJlZUNvbnN0cnVjdGlvbjtcbiAgICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbik7XG4gICAgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IHRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXgoZG9jLCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uKTtcbiAgICBhcHBsaWVkVHJlZUNvbnRydWN0aW9uID0gdHJlZUNvbnN0cnVjdGlvblN2Z0VsZW1lbnRGaXgoZG9jLCBhcHBsaWVkVHJlZUNvbnRydWN0aW9uLCBTVkdfTkFNRVNQQUNFKTtcbiAgICBET00uRE9NVHJlZUNvbnN0cnVjdGlvbiA9IGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb247XG59KShET00gfHwgKERPTSA9IHt9KSk7XG5leHBvcnQgY2xhc3MgRE9NQ2hhbmdlcyB7XG4gICAgY29uc3RydWN0b3IoZG9jdW1lbnQpIHtcbiAgICAgICAgdGhpcy5kb2N1bWVudCA9IGRvY3VtZW50O1xuICAgICAgICB0aGlzLm5hbWVzcGFjZSA9IG51bGw7XG4gICAgICAgIHRoaXMudXNlbGVzc0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIH1cbiAgICBzZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICBzZXRBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCBuYW1lKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH1cbiAgICByZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpO1xuICAgIH1cbiAgICBjcmVhdGVUZXh0Tm9kZSh0ZXh0KSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQpO1xuICAgIH1cbiAgICBjcmVhdGVDb21tZW50KGRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlQ29tbWVudChkYXRhKTtcbiAgICB9XG4gICAgY3JlYXRlRWxlbWVudCh0YWcsIGNvbnRleHQpIHtcbiAgICAgICAgbGV0IGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlLCBpc0hUTUxJbnRlZ3JhdGlvblBvaW50O1xuICAgICAgICBpZiAoY29udGV4dCkge1xuICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSBjb250ZXh0Lm5hbWVzcGFjZVVSSSA9PT0gU1ZHX05BTUVTUEFDRSB8fCB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IFNWR19JTlRFR1JBVElPTl9QT0lOVFNbY29udGV4dC50YWdOYW1lXTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlzRWxlbWVudEluU1ZHTmFtZXNwYWNlID0gdGFnID09PSAnc3ZnJztcbiAgICAgICAgICAgIGlzSFRNTEludGVncmF0aW9uUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgJiYgIWlzSFRNTEludGVncmF0aW9uUG9pbnQpIHtcbiAgICAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IHByb3Blcmx5IGhhbmRsZSA8Zm9udD4gd2l0aCBjb2xvciwgZmFjZSwgb3JcbiAgICAgICAgICAgIC8vIHNpemUgYXR0cmlidXRlcywgd2hpY2ggaXMgYWxzbyBkaXNhbGxvd2VkIGJ5IHRoZSBzcGVjLiBXZSBzaG91bGQgZml4XG4gICAgICAgICAgICAvLyB0aGlzLlxuICAgICAgICAgICAgaWYgKEJMQUNLTElTVF9UQUJMRVt0YWddKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgY3JlYXRlIGEgJHt0YWd9IGluc2lkZSBhbiBTVkcgY29udGV4dGApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKFNWR19OQU1FU1BBQ0UsIHRhZyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHRhZyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zZXJ0SFRNTEJlZm9yZShfcGFyZW50LCBuZXh0U2libGluZywgaHRtbCkge1xuICAgICAgICByZXR1cm4gaW5zZXJ0SFRNTEJlZm9yZSh0aGlzLnVzZWxlc3NFbGVtZW50LCBfcGFyZW50LCBuZXh0U2libGluZywgaHRtbCk7XG4gICAgfVxuICAgIGluc2VydE5vZGVCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgaWYgKGlzRG9jdW1lbnRGcmFnbWVudChub2RlKSkge1xuICAgICAgICAgICAgbGV0IHsgZmlyc3RDaGlsZCwgbGFzdENoaWxkIH0gPSBub2RlO1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmluc2VydEJlZm9yZShwYXJlbnQsIG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZU5vZGVCb3VuZHMocGFyZW50LCBub2RlKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnNlcnRUZXh0QmVmb3JlKHBhcmVudCwgbmV4dFNpYmxpbmcsIHRleHQpIHtcbiAgICAgICAgbGV0IHRleHROb2RlID0gdGhpcy5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCB0ZXh0Tm9kZSwgbmV4dFNpYmxpbmcpO1xuICAgICAgICByZXR1cm4gdGV4dE5vZGU7XG4gICAgfVxuICAgIGluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgZWxlbWVudC5pbnNlcnRCZWZvcmUobm9kZSwgcmVmZXJlbmNlKTtcbiAgICB9XG4gICAgaW5zZXJ0QWZ0ZXIoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKGVsZW1lbnQsIG5vZGUsIHJlZmVyZW5jZS5uZXh0U2libGluZyk7XG4gICAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGluc2VydEhUTUxCZWZvcmUoX3VzZWxlc3MsIF9wYXJlbnQsIF9uZXh0U2libGluZywgaHRtbCkge1xuICAgIC8vIFR5cGVTY3JpcHQgdmVuZG9yZWQgYW4gb2xkIHZlcnNpb24gb2YgdGhlIERPTSBzcGVjIHdoZXJlIGBpbnNlcnRBZGphY2VudEhUTUxgXG4gICAgLy8gb25seSBleGlzdHMgb24gYEhUTUxFbGVtZW50YCBidXQgbm90IG9uIGBFbGVtZW50YC4gV2UgYWN0dWFsbHkgd29yayB3aXRoIHRoZVxuICAgIC8vIG5ld2VyIHZlcnNpb24gb2YgdGhlIERPTSBBUEkgaGVyZSAoYW5kIG1vbmtleS1wYXRjaCB0aGlzIG1ldGhvZCBpbiBgLi9jb21wYXRgXG4gICAgLy8gd2hlbiB3ZSBkZXRlY3Qgb2xkZXIgYnJvd3NlcnMpLiBUaGlzIGlzIGEgaGFjayB0byB3b3JrIGFyb3VuZCB0aGlzIGxpbWl0YXRpb24uXG4gICAgbGV0IHBhcmVudCA9IF9wYXJlbnQ7XG4gICAgbGV0IHVzZWxlc3MgPSBfdXNlbGVzcztcbiAgICBsZXQgbmV4dFNpYmxpbmcgPSBfbmV4dFNpYmxpbmc7XG4gICAgbGV0IHByZXYgPSBuZXh0U2libGluZyA/IG5leHRTaWJsaW5nLnByZXZpb3VzU2libGluZyA6IHBhcmVudC5sYXN0Q2hpbGQ7XG4gICAgbGV0IGxhc3Q7XG4gICAgaWYgKGh0bWwgPT09IG51bGwgfHwgaHRtbCA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb25jcmV0ZUJvdW5kcyhwYXJlbnQsIG51bGwsIG51bGwpO1xuICAgIH1cbiAgICBpZiAobmV4dFNpYmxpbmcgPT09IG51bGwpIHtcbiAgICAgICAgcGFyZW50Lmluc2VydEFkamFjZW50SFRNTCgnYmVmb3JlRW5kJywgaHRtbCk7XG4gICAgICAgIGxhc3QgPSBwYXJlbnQubGFzdENoaWxkO1xuICAgIH0gZWxzZSBpZiAobmV4dFNpYmxpbmcgaW5zdGFuY2VvZiBIVE1MRWxlbWVudCkge1xuICAgICAgICBuZXh0U2libGluZy5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUJlZ2luJywgaHRtbCk7XG4gICAgICAgIGxhc3QgPSBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmc7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTm9uLWVsZW1lbnQgbm9kZXMgZG8gbm90IHN1cHBvcnQgaW5zZXJ0QWRqYWNlbnRIVE1MLCBzbyBhZGQgYW5cbiAgICAgICAgLy8gZWxlbWVudCBhbmQgY2FsbCBpdCBvbiB0aGF0IGVsZW1lbnQuIFRoZW4gcmVtb3ZlIHRoZSBlbGVtZW50LlxuICAgICAgICAvL1xuICAgICAgICAvLyBUaGlzIGFsc28gcHJvdGVjdHMgRWRnZSwgSUUgYW5kIEZpcmVmb3ggdy9vIHRoZSBpbnNwZWN0b3Igb3BlblxuICAgICAgICAvLyBmcm9tIG1lcmdpbmcgYWRqYWNlbnQgdGV4dCBub2Rlcy4gU2VlIC4vY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeC50c1xuICAgICAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKHVzZWxlc3MsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgdXNlbGVzcy5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUJlZ2luJywgaHRtbCk7XG4gICAgICAgIGxhc3QgPSB1c2VsZXNzLnByZXZpb3VzU2libGluZztcbiAgICAgICAgcGFyZW50LnJlbW92ZUNoaWxkKHVzZWxlc3MpO1xuICAgIH1cbiAgICBsZXQgZmlyc3QgPSBwcmV2ID8gcHJldi5uZXh0U2libGluZyA6IHBhcmVudC5maXJzdENoaWxkO1xuICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdCwgbGFzdCk7XG59XG5mdW5jdGlvbiBpc0RvY3VtZW50RnJhZ21lbnQobm9kZSkge1xuICAgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSBOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREU7XG59XG5sZXQgaGVscGVyID0gRE9NQ2hhbmdlcztcbmhlbHBlciA9IGRvbUNoYW5nZXNOb2RlTWVyZ2luZ0ZpeChkb2MsIGhlbHBlcik7XG5oZWxwZXIgPSBkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4KGRvYywgaGVscGVyKTtcbmhlbHBlciA9IGRvbUNoYW5nZXNTdmdFbGVtZW50Rml4KGRvYywgaGVscGVyLCBTVkdfTkFNRVNQQUNFKTtcbmV4cG9ydCBkZWZhdWx0IGhlbHBlcjtcbmV4cG9ydCBjb25zdCBET01UcmVlQ29uc3RydWN0aW9uID0gRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb247Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kb20vaGVscGVyLmpzIl0sIm5hbWVzIjpbIkNvbmNyZXRlQm91bmRzIiwiU2luZ2xlTm9kZUJvdW5kcyIsImRvbUNoYW5nZXMiLCJkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4IiwidHJlZUNvbnN0cnVjdGlvbiIsInRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXgiLCJkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCIsInRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4IiwiZG9tQ2hhbmdlc05vZGVNZXJnaW5nRml4IiwidHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4IiwiU1ZHX05BTUVTUEFDRSIsIlNWR19JTlRFR1JBVElPTl9QT0lOVFMiLCJmb3JlaWduT2JqZWN0IiwiZGVzYyIsInRpdGxlIiwiQkxBQ0tMSVNUX1RBQkxFIiwiT2JqZWN0IiwiY3JlYXRlIiwiZm9yRWFjaCIsInRhZyIsIldISVRFU1BBQ0UiLCJkb2MiLCJkb2N1bWVudCIsImlzV2hpdGVzcGFjZSIsInN0cmluZyIsInRlc3QiLCJtb3ZlTm9kZXNCZWZvcmUiLCJzb3VyY2UiLCJ0YXJnZXQiLCJuZXh0U2libGluZyIsImZpcnN0IiwiZmlyc3RDaGlsZCIsImxhc3QiLCJjdXJyZW50IiwiaW5zZXJ0QmVmb3JlIiwiRE9NT3BlcmF0aW9ucyIsInVzZWxlc3NFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsImNvbnRleHQiLCJpc0VsZW1lbnRJblNWR05hbWVzcGFjZSIsImlzSFRNTEludGVncmF0aW9uUG9pbnQiLCJuYW1lc3BhY2VVUkkiLCJ0YWdOYW1lIiwiRXJyb3IiLCJjcmVhdGVFbGVtZW50TlMiLCJwYXJlbnQiLCJub2RlIiwicmVmZXJlbmNlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsIl9wYXJlbnQiLCJodG1sIiwiY3JlYXRlVGV4dE5vZGUiLCJ0ZXh0IiwiY3JlYXRlQ29tbWVudCIsImRhdGEiLCJET00iLCJUcmVlQ29uc3RydWN0aW9uIiwibmFtZXNwYWNlIiwic2V0QXR0cmlidXRlIiwiZWxlbWVudCIsIm5hbWUiLCJ2YWx1ZSIsInNldEF0dHJpYnV0ZU5TIiwiYXBwbGllZFRyZWVDb250cnVjdGlvbiIsIkRPTVRyZWVDb25zdHJ1Y3Rpb24iLCJET01DaGFuZ2VzIiwicmVtb3ZlQXR0cmlidXRlIiwicmVtb3ZlQXR0cmlidXRlTlMiLCJpbnNlcnROb2RlQmVmb3JlIiwiaXNEb2N1bWVudEZyYWdtZW50IiwibGFzdENoaWxkIiwiaW5zZXJ0VGV4dEJlZm9yZSIsInRleHROb2RlIiwiaW5zZXJ0QWZ0ZXIiLCJfdXNlbGVzcyIsIl9uZXh0U2libGluZyIsInVzZWxlc3MiLCJwcmV2IiwicHJldmlvdXNTaWJsaW5nIiwiaW5zZXJ0QWRqYWNlbnRIVE1MIiwiSFRNTEVsZW1lbnQiLCJyZW1vdmVDaGlsZCIsIm5vZGVUeXBlIiwiTm9kZSIsIkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUiLCJoZWxwZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxnQkFBekIsUUFBaUQsV0FBakQ7QUFDQSxTQUFTQyxjQUFjQyx5QkFBdkIsRUFBa0RDLG9CQUFvQkMsK0JBQXRFLFFBQTZHLDBCQUE3RztBQUNBLFNBQVNILGNBQWNJLHVCQUF2QixFQUFnREYsb0JBQW9CRyw2QkFBcEUsUUFBeUcsOEJBQXpHO0FBQ0EsU0FBU0wsY0FBY00sd0JBQXZCLEVBQWlESixvQkFBb0JLLDhCQUFyRSxRQUEyRyxpQ0FBM0c7QUFDQSxPQUFPLElBQU1DLGdCQUFnQiw0QkFBdEI7QUFDUDtBQUNBLElBQU1DLHlCQUF5QixFQUFFQyxlQUFlLENBQWpCLEVBQW9CQyxNQUFNLENBQTFCLEVBQTZCQyxPQUFPLENBQXBDLEVBQS9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsa0JBQWtCQyxPQUFPQyxNQUFQLENBQWMsSUFBZCxDQUF4QjtBQUNQLENBQUMsR0FBRCxFQUFNLEtBQU4sRUFBYSxZQUFiLEVBQTJCLE1BQTNCLEVBQW1DLElBQW5D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RCxRQUFJOUMsUUFBUStDLE9BQU9BLEtBQUtoRCxXQUFaLEdBQTBCZ0IsT0FBT2QsVUFBN0M7QUFDQSxXQUFPLElBQUkvQixjQUFKLENBQW1CNkMsTUFBbkIsRUFBMkJmLEtBQTNCLEVBQWtDRSxJQUFsQyxDQUFQO0FBQ0g7QUFDRCxTQUFTcUMsa0JBQVQsQ0FBNEJ2QixJQUE1QixFQUFrQztBQUM5QixXQUFPQSxLQUFLb0MsUUFBTCxLQUFrQkMsS0FBS0Msc0JBQTlCO0FBQ0g7QUFDRCxJQUFJQyxTQUFTcEIsVUFBYjtBQUNBb0IsU0FBUzdFLHlCQUF5QmEsR0FBekIsRUFBOEJnRSxNQUE5QixDQUFUO0FBQ0FBLFNBQVNsRiwwQkFBMEJrQixHQUExQixFQUErQmdFLE1BQS9CLENBQVQ7QUFDQUEsU0FBUy9FLHdCQUF3QmUsR0FBeEIsRUFBNkJnRSxNQUE3QixFQUFxQzNFLGFBQXJDLENBQVQ7QUFDQSxlQUFlMkUsTUFBZjtBQUNBLE9BQU8sSUFBTXJCLHNCQUFzQlQsSUFBSVMsbUJBQWhDIiwiZmlsZSI6ImxpYi9kb20vaGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uY3JldGVCb3VuZHMsIFNpbmdsZU5vZGVCb3VuZHMgfSBmcm9tICcuLi9ib3VuZHMnO1xuaW1wb3J0IHsgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzVGFibGVFbGVtZW50Rml4LCB0cmVlQ29uc3RydWN0aW9uIGFzIHRyZWVDb25zdHJ1Y3Rpb25UYWJsZUVsZW1lbnRGaXggfSBmcm9tICcuLi9jb21wYXQvaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IHsgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeCwgdHJlZUNvbnN0cnVjdGlvbiBhcyB0cmVlQ29uc3RydWN0aW9uU3ZnRWxlbWVudEZpeCB9IGZyb20gJy4uL2NvbXBhdC9zdmctaW5uZXItaHRtbC1maXgnO1xuaW1wb3J0IHsgZG9tQ2hhbmdlcyBhcyBkb21DaGFuZ2VzTm9kZU1lcmdpbmdGaXgsIHRyZWVDb25zdHJ1Y3Rpb24gYXMgdHJlZUNvbnN0cnVjdGlvbk5vZGVNZXJnaW5nRml4IH0gZnJvbSAnLi4vY29tcGF0L3RleHQtbm9kZS1tZXJnaW5nLWZpeCc7XG5leHBvcnQgY29uc3QgU1ZHX05BTUVTUEFDRSA9ICdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Zyc7XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbmNvbnN0IFNWR19JTlRFR1JBVElPTl9QT0lOVFMgPSB7IGZvcmVpZ25PYmplY3Q6IDEsIGRlc2M6IDEsIHRpdGxlOiAxIH07XG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI2FkanVzdC1zdmctYXR0cmlidXRlc1xuLy8gVE9ETzogQWRqdXN0IFNWRyBhdHRyaWJ1dGVzXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmZvcmVpZ25cbi8vIFRPRE86IEFkanVzdCBTVkcgZWxlbWVudHNcbi8vIGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWwvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluZm9yZWlnblxuZXhwb3J0IGNvbnN0IEJMQUNLTElTVF9UQUJMRSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5bXCJiXCIsIFwiYmlnXCIsIFwiYmxvY2txdW90ZVwiLCBcImJvZHlcIiwgXCJiclwiLCBcImNlbnRlclwiLCBcImNvZGVcIiwgXCJkZFwiLCBcImRpdlwiLCBcImRsXCIsIFwiZHRcIiwgXCJlbVwiLCBcImVtYmVkXCIsIFwiaDFcIiwgXCJoMlwiLCBcImgzXCIsIFwiaDRcIiwgXCJoNVwiLCBcImg2XCIsIFwiaGVhZFwiLCBcImhyXCIsIFwiaVwiLCBcImltZ1wiLCBcImxpXCIsIFwibGlzdGluZ1wiLCBcIm1haW5cIiwgXCJtZXRhXCIsIFwibm9iclwiLCBcIm9sXCIsIFwicFwiLCBcInByZVwiLCBcInJ1YnlcIiwgXCJzXCIsIFwic21hbGxcIiwgXCJzcGFuXCIsIFwic3Ryb25nXCIsIFwic3RyaWtlXCIsIFwic3ViXCIsIFwic3VwXCIsIFwidGFibGVcIiwgXCJ0dFwiLCBcInVcIiwgXCJ1bFwiLCBcInZhclwiXS5mb3JFYWNoKHRhZyA9PiBCTEFDS0xJU1RfVEFCTEVbdGFnXSA9IDEpO1xuY29uc3QgV0hJVEVTUEFDRSA9IC9bXFx0LVxcciBcXHhBMFxcdTE2ODBcXHUxODBFXFx1MjAwMC1cXHUyMDBBXFx1MjAyOFxcdTIwMjlcXHUyMDJGXFx1MjA1RlxcdTMwMDBcXHVGRUZGXS87XG5sZXQgZG9jID0gdHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiBkb2N1bWVudDtcbmV4cG9ydCBmdW5jdGlvbiBpc1doaXRlc3BhY2Uoc3RyaW5nKSB7XG4gICAgcmV0dXJuIFdISVRFU1BBQ0UudGVzdChzdHJpbmcpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG1vdmVOb2Rlc0JlZm9yZShzb3VyY2UsIHRhcmdldCwgbmV4dFNpYmxpbmcpIHtcbiAgICBsZXQgZmlyc3QgPSBzb3VyY2UuZmlyc3RDaGlsZDtcbiAgICBsZXQgbGFzdCA9IG51bGw7XG4gICAgbGV0IGN1cnJlbnQgPSBmaXJzdDtcbiAgICB3aGlsZSAoY3VycmVudCkge1xuICAgICAgICBsYXN0ID0gY3VycmVudDtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQubmV4dFNpYmxpbmc7XG4gICAgICAgIHRhcmdldC5pbnNlcnRCZWZvcmUobGFzdCwgbmV4dFNpYmxpbmcpO1xuICAgIH1cbiAgICByZXR1cm4gW2ZpcnN0LCBsYXN0XTtcbn1cbmV4cG9ydCBjbGFzcyBET01PcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICB0aGlzLmRvY3VtZW50ID0gZG9jdW1lbnQ7XG4gICAgICAgIHRoaXMudXNlbGVzc0VsZW1lbnQgPSB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIH1cbiAgICBjcmVhdGVFbGVtZW50KHRhZywgY29udGV4dCkge1xuICAgICAgICBsZXQgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UsIGlzSFRNTEludGVncmF0aW9uUG9pbnQ7XG4gICAgICAgIGlmIChjb250ZXh0KSB7XG4gICAgICAgICAgICBpc0VsZW1lbnRJblNWR05hbWVzcGFjZSA9IGNvbnRleHQubmFtZXNwYWNlVVJJID09PSBTVkdfTkFNRVNQQUNFIHx8IHRhZyA9PT0gJ3N2Zyc7XG4gICAgICAgICAgICBpc0hUTUxJbnRlZ3JhdGlvblBvaW50ID0gU1ZHX0lOVEVHUkFUSU9OX1BPSU5UU1tjb250ZXh0LnRhZ05hbWVdO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaXNFbGVtZW50SW5TVkdOYW1lc3BhY2UgPSB0YWcgPT09ICdzdmcnO1xuICAgICAgICAgICAgaXNIVE1MSW50ZWdyYXRpb25Qb2ludCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc0VsZW1lbnRJblNWR05hbWVzcGFjZSAmJiAhaXNIVE1MSW50ZWdyYXRpb25Qb2ludCkge1xuICAgICAgICAgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgcHJvcGVybHkgaGFuZGxlIDxmb250PiB3aXRoIGNvbG9yLCBmYWNlLCBvclxuICAgICAgICAgICAgLy8gc2l6ZSBhdHRyaWJ1dGVzLCB3aGljaCBpcyBhbHNvIGRpc2FsbG93ZWQgYnkgdGhlIHNwZWMuIFdlIHNob3VsZCBmaXhcbiAgICAgICAgICAgIC8vIHRoaXMuXG4gICAgICAgICAgICBpZiAoQkxBQ0tMSVNUX1RBQkxFW3RhZ10pIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBjcmVhdGUgYSAke3RhZ30gaW5zaWRlIGFuIFNWRyBjb250ZXh0YCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZHX05BTUVTUEFDRSwgdGFnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpIHtcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCByZWZlcmVuY2UpO1xuICAgIH1cbiAgICBpbnNlcnRIVE1MQmVmb3JlKF9wYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKSB7XG4gICAgICAgIHJldHVybiBpbnNlcnRIVE1MQmVmb3JlKHRoaXMudXNlbGVzc0VsZW1lbnQsIF9wYXJlbnQsIG5leHRTaWJsaW5nLCBodG1sKTtcbiAgICB9XG4gICAgY3JlYXRlVGV4dE5vZGUodGV4dCkge1xuICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTtcbiAgICB9XG4gICAgY3JlYXRlQ29tbWVudChkYXRhKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoZGF0YSk7XG4gICAgfVxufVxuZXhwb3J0IHZhciBET007XG4oZnVuY3Rpb24gKERPTSkge1xuICAgIGNsYXNzIFRyZWVDb25zdHJ1Y3Rpb24gZXh0ZW5kcyBET01PcGVyYXRpb25zIHtcbiAgICAgICAgY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZSwgdGFnKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlLCB0YWcpO1xuICAgICAgICB9XG4gICAgICAgIHNldEF0dHJpYnV0ZShlbGVtZW50LCBuYW1lLCB2YWx1ZSwgbmFtZXNwYWNlKSB7XG4gICAgICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIERPTS5UcmVlQ29uc3RydWN0aW9uID0gVHJlZUNvbnN0cnVjdGlvbjtcbiAgICBsZXQgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IFRyZWVDb25zdHJ1Y3Rpb247XG4gICAgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IHRyZWVDb25zdHJ1Y3Rpb25Ob2RlTWVyZ2luZ0ZpeChkb2MsIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24pO1xuICAgIGFwcGxpZWRUcmVlQ29udHJ1Y3Rpb24gPSB0cmVlQ29uc3RydWN0aW9uVGFibGVFbGVtZW50Rml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbik7XG4gICAgYXBwbGllZFRyZWVDb250cnVjdGlvbiA9IHRyZWVDb25zdHJ1Y3Rpb25TdmdFbGVtZW50Rml4KGRvYywgYXBwbGllZFRyZWVDb250cnVjdGlvbiwgU1ZHX05BTUVTUEFDRSk7XG4gICAgRE9NLkRPTVRyZWVDb25zdHJ1Y3Rpb24gPSBhcHBsaWVkVHJlZUNvbnRydWN0aW9uO1xufSkoRE9NIHx8IChET00gPSB7fSkpO1xuZXhwb3J0IGNsYXNzIERPTUNoYW5nZXMgZXh0ZW5kcyBET01PcGVyYXRpb25zIHtcbiAgICBjb25zdHJ1Y3Rvcihkb2N1bWVudCkge1xuICAgICAgICBzdXBlcihkb2N1bWVudCk7XG4gICAgICAgIHRoaXMuZG9jdW1lbnQgPSBkb2N1bWVudDtcbiAgICAgICAgdGhpcy5uYW1lc3BhY2UgPSBudWxsO1xuICAgIH1cbiAgICBzZXRBdHRyaWJ1dGUoZWxlbWVudCwgbmFtZSwgdmFsdWUpIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUpO1xuICAgIH1cbiAgICBzZXRBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUsIHZhbHVlKSB7XG4gICAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlTlMobmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSk7XG4gICAgfVxuICAgIHJlbW92ZUF0dHJpYnV0ZShlbGVtZW50LCBuYW1lKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH1cbiAgICByZW1vdmVBdHRyaWJ1dGVOUyhlbGVtZW50LCBuYW1lc3BhY2UsIG5hbWUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGVOUyhuYW1lc3BhY2UsIG5hbWUpO1xuICAgIH1cbiAgICBpbnNlcnROb2RlQmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIGlmIChpc0RvY3VtZW50RnJhZ21lbnQobm9kZSkpIHtcbiAgICAgICAgICAgIGxldCB7IGZpcnN0Q2hpbGQsIGxhc3RDaGlsZCB9ID0gbm9kZTtcbiAgICAgICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgbm9kZSwgcmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBmaXJzdENoaWxkLCBsYXN0Q2hpbGQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnNlcnRCZWZvcmUocGFyZW50LCBub2RlLCByZWZlcmVuY2UpO1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVOb2RlQm91bmRzKHBhcmVudCwgbm9kZSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaW5zZXJ0VGV4dEJlZm9yZShwYXJlbnQsIG5leHRTaWJsaW5nLCB0ZXh0KSB7XG4gICAgICAgIGxldCB0ZXh0Tm9kZSA9IHRoaXMuY3JlYXRlVGV4dE5vZGUodGV4dCk7XG4gICAgICAgIHRoaXMuaW5zZXJ0QmVmb3JlKHBhcmVudCwgdGV4dE5vZGUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIHRleHROb2RlO1xuICAgIH1cbiAgICBpbnNlcnRCZWZvcmUoZWxlbWVudCwgbm9kZSwgcmVmZXJlbmNlKSB7XG4gICAgICAgIGVsZW1lbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIHJlZmVyZW5jZSk7XG4gICAgfVxuICAgIGluc2VydEFmdGVyKGVsZW1lbnQsIG5vZGUsIHJlZmVyZW5jZSkge1xuICAgICAgICB0aGlzLmluc2VydEJlZm9yZShlbGVtZW50LCBub2RlLCByZWZlcmVuY2UubmV4dFNpYmxpbmcpO1xuICAgIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBpbnNlcnRIVE1MQmVmb3JlKF91c2VsZXNzLCBfcGFyZW50LCBfbmV4dFNpYmxpbmcsIGh0bWwpIHtcbiAgICAvLyBUeXBlU2NyaXB0IHZlbmRvcmVkIGFuIG9sZCB2ZXJzaW9uIG9mIHRoZSBET00gc3BlYyB3aGVyZSBgaW5zZXJ0QWRqYWNlbnRIVE1MYFxuICAgIC8vIG9ubHkgZXhpc3RzIG9uIGBIVE1MRWxlbWVudGAgYnV0IG5vdCBvbiBgRWxlbWVudGAuIFdlIGFjdHVhbGx5IHdvcmsgd2l0aCB0aGVcbiAgICAvLyBuZXdlciB2ZXJzaW9uIG9mIHRoZSBET00gQVBJIGhlcmUgKGFuZCBtb25rZXktcGF0Y2ggdGhpcyBtZXRob2QgaW4gYC4vY29tcGF0YFxuICAgIC8vIHdoZW4gd2UgZGV0ZWN0IG9sZGVyIGJyb3dzZXJzKS4gVGhpcyBpcyBhIGhhY2sgdG8gd29yayBhcm91bmQgdGhpcyBsaW1pdGF0aW9uLlxuICAgIGxldCBwYXJlbnQgPSBfcGFyZW50O1xuICAgIGxldCB1c2VsZXNzID0gX3VzZWxlc3M7XG4gICAgbGV0IG5leHRTaWJsaW5nID0gX25leHRTaWJsaW5nO1xuICAgIGxldCBwcmV2ID0gbmV4dFNpYmxpbmcgPyBuZXh0U2libGluZy5wcmV2aW91c1NpYmxpbmcgOiBwYXJlbnQubGFzdENoaWxkO1xuICAgIGxldCBsYXN0O1xuICAgIGlmIChodG1sID09PSBudWxsIHx8IGh0bWwgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ29uY3JldGVCb3VuZHMocGFyZW50LCBudWxsLCBudWxsKTtcbiAgICB9XG4gICAgaWYgKG5leHRTaWJsaW5nID09PSBudWxsKSB7XG4gICAgICAgIHBhcmVudC5pbnNlcnRBZGphY2VudEhUTUwoJ2JlZm9yZUVuZCcsIGh0bWwpO1xuICAgICAgICBsYXN0ID0gcGFyZW50Lmxhc3RDaGlsZDtcbiAgICB9IGVsc2UgaWYgKG5leHRTaWJsaW5nIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQpIHtcbiAgICAgICAgbmV4dFNpYmxpbmcuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgICAgICBsYXN0ID0gbmV4dFNpYmxpbmcucHJldmlvdXNTaWJsaW5nO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE5vbi1lbGVtZW50IG5vZGVzIGRvIG5vdCBzdXBwb3J0IGluc2VydEFkamFjZW50SFRNTCwgc28gYWRkIGFuXG4gICAgICAgIC8vIGVsZW1lbnQgYW5kIGNhbGwgaXQgb24gdGhhdCBlbGVtZW50LiBUaGVuIHJlbW92ZSB0aGUgZWxlbWVudC5cbiAgICAgICAgLy9cbiAgICAgICAgLy8gVGhpcyBhbHNvIHByb3RlY3RzIEVkZ2UsIElFIGFuZCBGaXJlZm94IHcvbyB0aGUgaW5zcGVjdG9yIG9wZW5cbiAgICAgICAgLy8gZnJvbSBtZXJnaW5nIGFkamFjZW50IHRleHQgbm9kZXMuIFNlZSAuL2NvbXBhdC90ZXh0LW5vZGUtbWVyZ2luZy1maXgudHNcbiAgICAgICAgcGFyZW50Lmluc2VydEJlZm9yZSh1c2VsZXNzLCBuZXh0U2libGluZyk7XG4gICAgICAgIHVzZWxlc3MuaW5zZXJ0QWRqYWNlbnRIVE1MKCdiZWZvcmVCZWdpbicsIGh0bWwpO1xuICAgICAgICBsYXN0ID0gdXNlbGVzcy5wcmV2aW91c1NpYmxpbmc7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZCh1c2VsZXNzKTtcbiAgICB9XG4gICAgbGV0IGZpcnN0ID0gcHJldiA/IHByZXYubmV4dFNpYmxpbmcgOiBwYXJlbnQuZmlyc3RDaGlsZDtcbiAgICByZXR1cm4gbmV3IENvbmNyZXRlQm91bmRzKHBhcmVudCwgZmlyc3QsIGxhc3QpO1xufVxuZnVuY3Rpb24gaXNEb2N1bWVudEZyYWdtZW50KG5vZGUpIHtcbiAgICByZXR1cm4gbm9kZS5ub2RlVHlwZSA9PT0gTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFO1xufVxubGV0IGhlbHBlciA9IERPTUNoYW5nZXM7XG5oZWxwZXIgPSBkb21DaGFuZ2VzTm9kZU1lcmdpbmdGaXgoZG9jLCBoZWxwZXIpO1xuaGVscGVyID0gZG9tQ2hhbmdlc1RhYmxlRWxlbWVudEZpeChkb2MsIGhlbHBlcik7XG5oZWxwZXIgPSBkb21DaGFuZ2VzU3ZnRWxlbWVudEZpeChkb2MsIGhlbHBlciwgU1ZHX05BTUVTUEFDRSk7XG5leHBvcnQgZGVmYXVsdCBoZWxwZXI7XG5leHBvcnQgY29uc3QgRE9NVHJlZUNvbnN0cnVjdGlvbiA9IERPTS5ET01UcmVlQ29uc3RydWN0aW9uOyJdfQ==

@@ -82,3 +82,8 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

}
var string = JSON.stringify(param);
var string = void 0;
try {
string = JSON.stringify(param);
} catch (e) {
return '<cannot generate JSON>';
}
if (string === undefined) {

@@ -219,3 +224,3 @@ return 'undefined';

case 58 /* PushArgs */:
return ['PushArgs', { positional: op1, synthetic: !!op2 }];
return ['PushArgs', { synthetic: !!op1 }];
case 59 /* PrepareArgs */:

@@ -363,2 +368,2 @@ return ['PrepareArgs', { state: Register[op1] }];

}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ1bmRlZmluZWQiLCJwYXJzZSIsIkdsaW1tZXJEZWJ1ZyIsImMiLCJvcCIsImhlbHBlciIsImdldEZ1bmN0aW9uIiwiZnVuY3Rpb24iLCJzeW1ib2wiLCJrZXkiLCJnZXRTdHJpbmciLCJibG9jayIsImdldEJsb2NrIiwic2l6ZSIsInZhbHVlIiwiZ2V0T3RoZXIiLCJwcmltaXRpdmUiLCJyZWdpc3RlciIsIm9mZnNldCIsImNvdW50Iiwic3ltYm9scyIsImJpbmRDYWxsZXJTY29wZSIsInRleHQiLCJjb21tZW50IiwidGFnIiwibmFtZXNwYWNlIiwidHJ1c3RpbmciLCJucyIsImludm9rZXIiLCJ0byIsImRlZmluaXRpb24iLCJwb3NpdGlvbmFsIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxTQUF6QixFQUFvQ0MsV0FBcEMsUUFBdUQsZUFBdkQ7O0FBRUE7Ozs7OztBQU1BLE9BQU8sSUFBSUMsUUFBSjtBQUNQLENBQUMsVUFBVUEsUUFBVixFQUFvQjtBQUNqQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0E7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNILENBZkQsRUFlR0EsYUFBYUEsV0FBVyxFQUF4QixDQWZIO0FBZ0JBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLEtBQXpCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUN4QyxRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakI7QUFEaUIsWUFFWEMsT0FGVyxHQUVZSCxHQUZaLENBRVhHLE9BRlc7QUFBQSxZQUVGQyxTQUZFLEdBRVlKLEdBRlosQ0FFRkks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aEIsQ0FBVCxFQUE2Qm9GLE1BQTdCLEVBQXFDRyxRQUFRLENBQTdDLEVBQWdEdkYsRUFBaEQ7QUFDSDtBQUNKO0FBQ0oiLCJmaWxlIjoibGliL29wY29kZXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbml0aWFsaXplR3VpZCwgZmlsbE51bGxzLCB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuXG4vKipcbiAqIFJlZ2lzdGVyc1xuICpcbiAqIEZvciB0aGUgbW9zdCBwYXJ0LCB0aGVzZSBmb2xsb3dzIE1JUFMgbmFtaW5nIGNvbnZlbnRpb25zLCBob3dldmVyIHRoZVxuICogcmVnaXN0ZXIgbnVtYmVycyBhcmUgZGlmZmVyZW50LlxuICovXG5leHBvcnQgdmFyIFJlZ2lzdGVyO1xuKGZ1bmN0aW9uIChSZWdpc3Rlcikge1xuICAgIC8vICQwIG9yICRwYyAocHJvZ3JhbSBjb3VudGVyKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIG5leHQgaW5zdHVyY3Rpb247IC0xIG1lYW5zIGV4aXRcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInBjXCJdID0gMF0gPSBcInBjXCI7XG4gICAgLy8gJDEgb3IgJHJhIChyZXR1cm4gYWRkcmVzcyk6IHBvaW50ZXIgaW50byBgcHJvZ3JhbWAgZm9yIHRoZSByZXR1cm5cbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInJhXCJdID0gMV0gPSBcInJhXCI7XG4gICAgLy8gJDIgb3IgJGZwIChmcmFtZSBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIGJhc2Ugb2YgdGhlIHN0YWNrXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJmcFwiXSA9IDJdID0gXCJmcFwiO1xuICAgIC8vICQzIG9yICRzcCAoc3RhY2sgcG9pbnRlcik6IHBvaW50ZXIgaW50byB0aGUgYGV2YWxTdGFja2AgZm9yIHRoZSB0b3Agb2YgdGhlIHN0YWNrXG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzcFwiXSA9IDNdID0gXCJzcFwiO1xuICAgIC8vICQ0LSQ1IG9yICRzMC0kczEgKHNhdmVkKTogY2FsbGVlIHNhdmVkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnNcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMwXCJdID0gNF0gPSBcInMwXCI7XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJzMVwiXSA9IDVdID0gXCJzMVwiO1xuICAgIC8vICQ2LSQ3IG9yICR0MC0kdDEgKHRlbXBvcmFyaWVzKTogY2FsbGVyIHNhdmVkIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnNcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQwXCJdID0gNl0gPSBcInQwXCI7XG4gICAgUmVnaXN0ZXJbUmVnaXN0ZXJbXCJ0MVwiXSA9IDddID0gXCJ0MVwiO1xufSkoUmVnaXN0ZXIgfHwgKFJlZ2lzdGVyID0ge30pKTtcbmV4cG9ydCBmdW5jdGlvbiBkZWJ1Z1NsaWNlKGVudiwgc3RhcnQsIGVuZCkge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgLyogdHNsaW50OmRpc2FibGU6bm8tY29uc29sZSAqL1xuICAgICAgICBsZXQgeyBwcm9ncmFtLCBjb25zdGFudHMgfSA9IGVudjtcbiAgICAgICAgLy8gY29uc29sZSBpcyBub3QgYXZhaWxhYmxlIGluIElFOVxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gSUUxMCBkb2VzIG5vdCBoYXZlIGBjb25zb2xlLmdyb3VwYFxuICAgICAgICBpZiAodHlwZW9mIGNvbnNvbGUuZ3JvdXAgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmdyb3VwKGAlYyR7c3RhcnR9OiR7ZW5kfWAsICdjb2xvcjogIzk5OScpO1xuICAgICAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gZW5kOyBpICs9IDQpIHtcbiAgICAgICAgICAgIGxldCB7IHR5cGUsIG9wMSwgb3AyLCBvcDMgfSA9IHByb2dyYW0ub3Bjb2RlKGkpO1xuICAgICAgICAgICAgbGV0IFtuYW1lLCBwYXJhbXNdID0gZGVidWcoY29uc3RhbnRzLCB0eXBlLCBvcDEsIG9wMiwgb3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2l9LiAke2xvZ09wY29kZShuYW1lLCBwYXJhbXMpfWApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXBFbmQoKTtcbiAgICAgICAgLyogdHNsaW50OmVuYWJsZTpuby1jb25zb2xlICovXG4gICAgfVxufVxuZnVuY3Rpb24gbG9nT3Bjb2RlKHR5cGUsIHBhcmFtcykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgbGV0IG91dCA9IHR5cGU7XG4gICAgICAgIGlmIChwYXJhbXMpIHtcbiAgICAgICAgICAgIGxldCBhcmdzID0gT2JqZWN0LmtleXMocGFyYW1zKS5tYXAocCA9PiBgICR7cH09JHtqc29uKHBhcmFtc1twXSl9YCkuam9pbignJyk7XG4gICAgICAgICAgICBvdXQgKz0gYXJncztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYCgke291dH0pYDtcbiAgICB9XG59XG5mdW5jdGlvbiBqc29uKHBhcmFtKSB7XG4gICAgaWYgKHR5cGVvZiBwYXJhbSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gJzxmdW5jdGlvbj4nO1xuICAgIH1cbiAgICBsZXQgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIGlmIChzdHJpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gJ3VuZGVmaW5lZCc7XG4gICAgfVxuICAgIGxldCBkZWJ1ZyA9IEpTT04ucGFyc2Uoc3RyaW5nKTtcbiAgICBpZiAodHlwZW9mIGRlYnVnID09PSAnb2JqZWN0JyAmJiBkZWJ1ZyAhPT0gbnVsbCAmJiBkZWJ1Zy5HbGltbWVyRGVidWcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZGVidWcuR2xpbW1lckRlYnVnO1xuICAgIH1cbiAgICByZXR1cm4gc3RyaW5nO1xufVxuZnVuY3Rpb24gZGVidWcoYywgb3AsIG9wMSwgb3AyLCBvcDMpIHtcbiAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgIHN3aXRjaCAob3ApIHtcbiAgICAgICAgICAgIGNhc2UgMCAvKiBCdWcgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgICAgIGNhc2UgMSAvKiBIZWxwZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGVscGVyJywgeyBoZWxwZXI6IGMuZ2V0RnVuY3Rpb24ob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMiAvKiBGdW5jdGlvbiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGdW5jdGlvbicsIHsgZnVuY3Rpb246IGMuZ2V0RnVuY3Rpb24ob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNCAvKiBTZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydTZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDUgLyogR2V0VmFyaWFibGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0VmFyaWFibGUnLCB7IHN5bWJvbDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA2IC8qIEdldFByb3BlcnR5ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldFByb3BlcnR5JywgeyBrZXk6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDcgLyogUHVzaEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hCbG9jaycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgOCAvKiBHZXRCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRCbG9jaycsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDkgLyogSGFzQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2snLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDEwIC8qIEhhc0Jsb2NrUGFyYW1zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0hhc0Jsb2NrUGFyYW1zJywgeyBibG9jazogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxMSAvKiBDb25jYXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uY2F0JywgeyBzaXplOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDEyIC8qIEltbWVkaWF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbW1lZGlhdGUnLCB7IHZhbHVlOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDEzIC8qIENvbnN0YW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbnN0YW50JywgeyB2YWx1ZTogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAxNCAvKiBQcmltaXRpdmVSZWZlcmVuY2UgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJpbWl0aXZlUmVmZXJlbmNlJywgeyBwcmltaXRpdmU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTUgLyogRHVwICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R1cCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0sIG9mZnNldDogb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAxNiAvKiBQb3AgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wJywgeyBjb3VudDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNyAvKiBMb2FkICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0xvYWQnLCB7IHJlZ2lzdGVyOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSAxOCAvKiBGZXRjaCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGZXRjaCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICAvLy8gUFJFTFVERSAmIEVYSVRcbiAgICAgICAgICAgIGNhc2UgMTkgLyogUm9vdFNjb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1Jvb3RTY29wZScsIHsgc3ltYm9sczogb3AxLCBiaW5kQ2FsbGVyU2NvcGU6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAyMCAvKiBDaGlsZFNjb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NoaWxkU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIxIC8qIFBvcFNjb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcFNjb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAyMiAvKiBSZXR1cm4gKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmV0dXJuJywge31dO1xuICAgICAgICAgICAgLy8vIEhUTUxcbiAgICAgICAgICAgIGNhc2UgMjMgLyogVGV4dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydUZXh0JywgeyB0ZXh0OiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNCAvKiBDb21tZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1lbnQnLCB7IGNvbW1lbnQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI1IC8qIER5bmFtaWNDb250ZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNDb250ZW50JywgeyB2YWx1ZTogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNiAvKiBPcGVuRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydPcGVuRWxlbWVudCcsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyNyAvKiBPcGVuRWxlbWVudFdpdGhPcGVyYXRpb25zICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMnLCB7IHRhZzogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjggLyogT3BlbkR5bmFtaWNFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5EeW5hbWljRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjkgLyogU3RhdGljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydTdGF0aWNBdHRyJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCB2YWx1ZTogYy5nZXRTdHJpbmcob3AyKSwgbmFtZXNwYWNlOiBvcDMgPyBjLmdldFN0cmluZyhvcDMpIDogbnVsbCB9XTtcbiAgICAgICAgICAgIGNhc2UgMzAgLyogRHluYW1pY0F0dHIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHRydXN0aW5nOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgMzEgLyogRHluYW1pY0F0dHJOUyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0ck5TJywgeyBuYW1lOiBjLmdldFN0cmluZyhvcDEpLCBuczogYy5nZXRTdHJpbmcob3AyKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMiAvKiBGbHVzaEVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRmx1c2hFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAzMyAvKiBDbG9zZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2xvc2VFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgLy8vIE1PRElGSUVSXG4gICAgICAgICAgICBjYXNlIDM0IC8qIE1vZGlmaWVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ01vZGlmaWVyJywge31dO1xuICAgICAgICAgICAgLy8vIFdPUk1IT0xFXG4gICAgICAgICAgICBjYXNlIDM1IC8qIFB1c2hSZW1vdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hSZW1vdGVFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAzNiAvKiBQb3BSZW1vdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gRFlOQU1JQyBTQ09QRVxuICAgICAgICAgICAgY2FzZSAzNyAvKiBCaW5kRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JpbmREeW5hbWljU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM4IC8qIFB1c2hEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzkgLyogUG9wRHluYW1pY1Njb3BlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1BvcER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIC8vLyBWTVxuICAgICAgICAgICAgY2FzZSA0MCAvKiBDb21waWxlRHluYW1pY0Jsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbXBpbGVEeW5hbWljQmxvY2snLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQxIC8qIEludm9rZVN0YXRpYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VTdGF0aWMnLCB7IGJsb2NrOiBjLmdldEJsb2NrKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQyIC8qIEludm9rZUR5bmFtaWMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW52b2tlRHluYW1pYycsIHsgaW52b2tlcjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0MyAvKiBKdW1wICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXAnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ0IC8qIEp1bXBJZiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wSWYnLCB7IHRvOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ1IC8qIEp1bXBVbmxlc3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcFVubGVzcycsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDYgLyogUHVzaEZyYW1lICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDcgLyogUG9wRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRnJhbWUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDQ4IC8qIEVudGVyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0VudGVyJywgeyBhcmdzOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDQ5IC8qIEV4aXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRXhpdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTAgLyogVGVzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydUb0Jvb2xlYW4nLCB7fV07XG4gICAgICAgICAgICAvLy8gTElTVFNcbiAgICAgICAgICAgIGNhc2UgNTEgLyogRW50ZXJMaXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0VudGVyTGlzdCcsIHsgc3RhcnQ6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNTIgLyogRXhpdExpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRXhpdExpc3QnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDUzIC8qIFB1dEl0ZXJhdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1dEl0ZXJhdG9yJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NCAvKiBJdGVyYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0l0ZXJhdGUnLCB7IGVuZDogb3AxIH1dO1xuICAgICAgICAgICAgLy8vIENPTVBPTkVOVFNcbiAgICAgICAgICAgIGNhc2UgNTUgLyogUHVzaENvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE1hbmFnZXInLCB7IGRlZmluaXRpb246IGMuZ2V0T3RoZXIob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNTYgLyogUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1B1c2hEeW5hbWljQ29tcG9uZW50TWFuYWdlcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTcgLyogSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0luaXRpYWxpemVDb21wb25lbnRTdGF0ZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTggLyogUHVzaEFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEFyZ3MnLCB7IHBvc2l0aW9uYWw6IG9wMSwgc3ludGhldGljOiAhIW9wMiB9XTtcbiAgICAgICAgICAgIGNhc2UgNTkgLyogUHJlcGFyZUFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJlcGFyZUFyZ3MnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MCAvKiBDcmVhdGVDb21wb25lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ3JlYXRlQ29tcG9uZW50JywgeyBmbGFnczogb3AxLCBzdGF0ZTogUmVnaXN0ZXJbb3AyXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE9wZXJhdGlvbnMnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50U2VsZicsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRMYXlvdXQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZENyZWF0ZUVsZW1lbnQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkUmVuZGVyTGF5b3V0Jywge31dO1xuICAgICAgICAgICAgLy8vIFBBUlRJQUxTXG4gICAgICAgICAgICBjYXNlIDY5IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlUGFydGlhbCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNzAgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVzb2x2ZU1heWJlTG9jYWwnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICAvLy8gREVCVUdHRVJcbiAgICAgICAgICAgIGNhc2UgNzEgLyogRGVidWdnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGVidWdnZXInLCB7IHN5bWJvbHM6IGMuZ2V0T3RoZXIob3AxKSwgZXZhbEluZm86IGMuZ2V0QXJyYXkob3AyKSB9XTtcbiAgICAgICAgICAgIC8vLyBTVEFURU1FTlRTXG4gICAgICAgICAgICBjYXNlIDcyIC8qIFNpemUgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gWycnLCB7fV07XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kT3Bjb2RlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGUgPSBmaWxsTnVsbHMoNzIgLyogU2l6ZSAqLykuc2xpY2UoKTtcbiAgICB9XG4gICAgYWRkKG5hbWUsIGV2YWx1YXRlKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGVbbmFtZV0gPSBldmFsdWF0ZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0sIG9wY29kZSwgdHlwZSkge1xuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuZXZhbHVhdGVPcGNvZGVbdHlwZV07XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9vcGNvZGVzLmpzIl0sIm5hbWVzIjpbImluaXRpYWxpemVHdWlkIiwiZmlsbE51bGxzIiwidW5yZWFjaGFibGUiLCJSZWdpc3RlciIsImRlYnVnU2xpY2UiLCJlbnYiLCJzdGFydCIsImVuZCIsInByb2dyYW0iLCJjb25zdGFudHMiLCJjb25zb2xlIiwiZ3JvdXAiLCJpIiwib3Bjb2RlIiwidHlwZSIsIm9wMSIsIm9wMiIsIm9wMyIsImRlYnVnIiwibmFtZSIsInBhcmFtcyIsImxvZyIsImxvZ09wY29kZSIsImdyb3VwRW5kIiwib3V0IiwiYXJncyIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJwIiwianNvbiIsImpvaW4iLCJwYXJhbSIsInN0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJlIiwidW5kZWZpbmVkIiwicGFyc2UiLCJHbGltbWVyRGVidWciLCJjIiwib3AiLCJoZWxwZXIiLCJnZXRGdW5jdGlvbiIsImZ1bmN0aW9uIiwic3ltYm9sIiwia2V5IiwiZ2V0U3RyaW5nIiwiYmxvY2siLCJnZXRCbG9jayIsInNpemUiLCJ2YWx1ZSIsImdldE90aGVyIiwicHJpbWl0aXZlIiwicmVnaXN0ZXIiLCJvZmZzZXQiLCJjb3VudCIsInN5bWJvbHMiLCJiaW5kQ2FsbGVyU2NvcGUiLCJ0ZXh0IiwiY29tbWVudCIsInRhZyIsIm5hbWVzcGFjZSIsInRydXN0aW5nIiwibnMiLCJpbnZva2VyIiwidG8iLCJkZWZpbml0aW9uIiwic3ludGhldGljIiwic3RhdGUiLCJmbGFncyIsImV2YWxJbmZvIiwiZ2V0QXJyYXkiLCJBcHBlbmRPcGNvZGVzIiwiZXZhbHVhdGVPcGNvZGUiLCJzbGljZSIsImFkZCIsImV2YWx1YXRlIiwidm0iLCJmdW5jIiwic3RhY2siLCJ0b0FycmF5Iiwic2NvcGUiLCJzIiwiZWxlbWVudHMiLCJBUFBFTkRfT1BDT0RFUyIsIkFic3RyYWN0T3Bjb2RlIiwidG9KU09OIiwiZ3VpZCIsIl9ndWlkIiwiVXBkYXRpbmdPcGNvZGUiLCJhcmd1bWVudHMiLCJuZXh0IiwicHJldiIsImluc3BlY3QiLCJvcGNvZGVzIiwiYnVmZmVyIiwiZm9yRWFjaCIsIl9pbnNwZWN0IiwibGV2ZWwiLCJpbmRleCIsImluZGVudGF0aW9uIiwicHVzaCIsImRldGFpbHMiLCJsZW5ndGgiLCJjaGlsZHJlbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSxTQUFTQSxjQUFULEVBQXlCQyxTQUF6QixFQUFvQ0MsV0FBcEMsUUFBdUQsZUFBdkQ7O0FBRUE7Ozs7OztBQU1BLE9BQU8sSUFBSUMsUUFBSjtBQUNQLENBQUMsVUFBVUEsUUFBVixFQUFvQjtBQUNqQjtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQTtBQUNBQSxhQUFTQSxTQUFTLElBQVQsSUFBaUIsQ0FBMUIsSUFBK0IsSUFBL0I7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0E7QUFDQUEsYUFBU0EsU0FBUyxJQUFULElBQWlCLENBQTFCLElBQStCLElBQS9CO0FBQ0FBLGFBQVNBLFNBQVMsSUFBVCxJQUFpQixDQUExQixJQUErQixJQUEvQjtBQUNILENBZkQsRUFlR0EsYUFBYUEsV0FBVyxFQUF4QixDQWZIO0FBZ0JBLE9BQU8sU0FBU0MsVUFBVCxDQUFvQkMsR0FBcEIsRUFBeUJDLEtBQXpCLEVBQWdDQyxHQUFoQyxFQUFxQztBQUN4QyxRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakI7QUFEaUIsWUFFWEMsT0FGVyxHQUVZSCxHQUZaLENBRVhHLE9BRlc7QUFBQSxZQUVGQyxTQUZFLEdBRVlKLEdBRlosQ0FFRkksU0FGRTtBQUdqQjs7QUFDQSxZQUFJLE9BQU9DLE9BQVAsS0FBbUIsV0FBdkIsRUFBb0M7QUFDaEM7QUFDSDtBQUNEO0FBQ0EsWUFBSSxPQUFPQSxRQUFRQyxLQUFmLEtBQXlCLFVBQTdCLEVBQXlDO0FBQ3JDO0FBQ0g7QUFDREQsZ0JBQVFDLEtBQVIsUUFBbUJMLEtBQW5CLFNBQTRCQyxHQUE1QixFQUFtQyxhQUFuQztBQUNBLGFBQUssSUFBSUssSUFBSU4sS0FBYixFQUFvQk0sS0FBS0wsR0FBekIsRUFBOEJLLEtBQUssQ0FBbkMsRUFBc0M7QUFBQSxrQ0FDSkosUUFBUUssTUFBUixDQUFlRCxDQUFmLENBREk7QUFBQSxnQkFDNUJFLElBRDRCLG1CQUM1QkEsSUFENEI7QUFBQSxnQkFDdEJDLEdBRHNCLG1CQUN0QkEsR0FEc0I7QUFBQSxnQkFDakJDLEdBRGlCLG1CQUNqQkEsR0FEaUI7QUFBQSxnQkFDWkMsR0FEWSxtQkFDWkEsR0FEWTs7QUFBQSx5QkFFYkMsTUFBTVQsU0FBTixFQUFpQkssSUFBakIsRUFBdUJDLEdBQXZCLEVBQTRCQyxHQUE1QixFQUFpQ0MsR0FBakMsQ0FGYTtBQUFBLGdCQUU3QkUsSUFGNkI7QUFBQSxnQkFFdkJDLE1BRnVCOztBQUdsQ1Ysb0JBQVFXLEdBQVIsQ0FBZVQsQ0FBZixVQUFxQlUsVUFBVUgsSUFBVixFQUFnQkMsTUFBaEIsQ0FBckI7QUFDSDtBQUNEVixnQkFBUWEsUUFBUjtBQUNBO0FBQ0g7QUFDSjtBQUNELFNBQVNELFNBQVQsQ0FBbUJSLElBQW5CLEVBQXlCTSxNQUF6QixFQUFpQztBQUM3QixRQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakIsWUFBSUksTUFBTVYsSUFBVjtBQUNBLFlBQUlNLE1BQUosRUFBWTtBQUNSLGdCQUFJSyxPQUFPQyxPQUFPQyxJQUFQLENBQVlQLE1BQVosRUFBb0JRLEdBQXBCLENBQXdCO0FBQUEsNkJBQVNDLENBQVQsU0FBY0MsS0FBS1YsT0FBT1MsQ0FBUCxDQUFMLENBQWQ7QUFBQSxhQUF4QixFQUF5REUsSUFBekQsQ0FBOEQsRUFBOUQsQ0FBWDtBQUNBUCxtQkFBT0MsSUFBUDtBQUNIO0FBQ0QscUJBQVdELEdBQVg7QUFDSDtBQUNKO0FBQ0QsU0FBU00sSUFBVCxDQUFjRSxLQUFkLEVBQXFCO0FBQ2pCLFFBQUksT0FBT0EsS0FBUCxLQUFpQixVQUFyQixFQUFpQztBQUM3QixlQUFPLFlBQVA7QUFDSDtBQUNELFFBQUlDLGVBQUo7QUFDQSxRQUFJO0FBQ0FBLGlCQUFTQyxLQUFLQyxTQUFMLENBQWVILEtBQWYsQ0FBVDtBQUNILEtBRkQsQ0FFRSxPQUFPSSxDQUFQLEVBQVU7QUFDUixlQUFPLHdCQUFQO0FBQ0g7QUFDRCxRQUFJSCxXQUFXSSxTQUFmLEVBQTBCO0FBQ3RCLGVBQU8sV0FBUDtBQUNIO0FBQ0QsUUFBSW5CLFFBQVFnQixLQUFLSSxLQUFMLENBQVdMLE1BQVgsQ0FBWjtBQUNBLFFBQUksT0FBT2YsS0FBUCxLQUFpQixRQUFqQixJQUE2QkEsVUFBVSxJQUF2QyxJQUErQ0EsTUFBTXFCLFlBQU4sS0FBdUJGLFNBQTFFLEVBQXFGO0FBQ2pGLGVBQU9uQixNQUFNcUIsWUFBYjtBQUNIO0FBQ0QsV0FBT04sTUFBUDtBQUNIO0FBQ0QsU0FBU2YsS0FBVCxDQUFlc0IsQ0FBZixFQUFrQkMsRUFBbEIsRUFBc0IxQixHQUF0QixFQUEyQkMsR0FBM0IsRUFBZ0NDLEdBQWhDLEVBQXFDO0FBQ2pDLFFBQUksQ0FBQyxLQUFELElBQVUsS0FBZCxFQUFxQjtBQUNqQixnQkFBUXdCLEVBQVI7QUFDSSxpQkFBSyxDQUFMLENBQU8sU0FBUDtBQUNJLHNCQUFNdkMsYUFBTjtBQUNKLGlCQUFLLENBQUwsQ0FBTyxZQUFQO0FBQ0ksdUJBQU8sQ0FBQyxRQUFELEVBQVcsRUFBRXdDLFFBQVFGLEVBQUVHLFdBQUYsQ0FBYzVCLEdBQWQsQ0FBVixFQUFYLENBQVA7QUFDSixpQkFBSyxDQUFMLENBQU8sY0FBUDtBQUNJLHVCQUFPLENBQUMsVUFBRCxFQUFhLEVBQUU2QixVQUFVSixFQUFFRyxXQUFGLENBQWM1QixHQUFkLENBQVosRUFBYixDQUFQO0FBQ0osaUJBQUssQ0FBTCxDQUFPLGlCQUFQO0FBQ0ksdUJBQU8sQ0FBQyxhQUFELEVBQWdCLEVBQUU4QixRQUFROUIsR0FBVixFQUFoQixDQUFQO0FBQ0osaUJBQUssQ0FBTCxDQUFPLGlCQUFQO0FBQ0ksdUJBQU8sQ0FBQyxhQUFELEVBQWdCLEVBQUU4QixRQUFROUIsR0FBVixFQUFoQixDQUFQO0FBQ0osaUJBQUssQ0FBTCxDQUFPLGlCQUFQO0FBQ0ksdUJBQU8sQ0FBQyxhQUFELEVBQWdCLEVBQUUrQixLQUFLTixFQUFFTyxTQUFGLENBQVloQyxHQUFaLENBQVAsRUFBaEIsQ0FBUDtBQUNKLGlCQUFLLENBQUwsQ0FBTyxlQUFQO0FBQ0ksdUJBQU8sQ0FBQyxXQUFELEVBQWMsRUFBRWlDLE9BQU9SLEVBQUVTLFFBQUYsQ0FBV2xDLEdBQVgsQ0FBVCxFQUFkLENBQVA7QUFDSixpQkFBSyxDQUFMLENBQU8sY0FBUDtBQUNJLHVCQUFPLENBQUMsVUFBRCxFQUFhLEVBQUU4QixRQUFROUIsR0FBVixFQUFiLENBQVA7QUFDSixpQkFBSyxDQUFMLENBQU8sY0FBUDtBQUNJLHVCQUFPLENBQUMsVUFBRCxFQUFhLEVBQUVpQyxPQUFPakMsR0FBVCxFQUFiLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsb0JBQVI7QUFDSSx1QkFBTyxDQUFDLGdCQUFELEVBQW1CLEVBQUVpQyxPQUFPakMsR0FBVCxFQUFuQixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLFlBQVI7QUFDSSx1QkFBTyxDQUFDLFFBQUQsRUFBVyxFQUFFbUMsTUFBTW5DLEdBQVIsRUFBWCxDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGVBQVI7QUFDSSx1QkFBTyxDQUFDLFdBQUQsRUFBYyxFQUFFb0MsT0FBT3BDLEdBQVQsRUFBZCxDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGNBQVI7QUFDSSx1QkFBTyxDQUFDLFVBQUQsRUFBYSxFQUFFb0MsT0FBT1gsRUFBRVksUUFBRixDQUFXckMsR0FBWCxDQUFULEVBQWIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSx3QkFBUjtBQUNJLHVCQUFPLENBQUMsb0JBQUQsRUFBdUIsRUFBRXNDLFdBQVd0QyxHQUFiLEVBQXZCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsU0FBUjtBQUNJLHVCQUFPLENBQUMsS0FBRCxFQUFRLEVBQUV1QyxVQUFVbkQsU0FBU1ksR0FBVCxDQUFaLEVBQTJCd0MsUUFBUXZDLEdBQW5DLEVBQVIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxTQUFSO0FBQ0ksdUJBQU8sQ0FBQyxLQUFELEVBQVEsRUFBRXdDLE9BQU96QyxHQUFULEVBQVIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxVQUFSO0FBQ0ksdUJBQU8sQ0FBQyxNQUFELEVBQVMsRUFBRXVDLFVBQVVuRCxTQUFTWSxHQUFULENBQVosRUFBVCxDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLFdBQVI7QUFDSSx1QkFBTyxDQUFDLE9BQUQsRUFBVSxFQUFFdUMsVUFBVW5ELFNBQVNZLEdBQVQsQ0FBWixFQUFWLENBQVA7QUFDSjtBQUNBLGlCQUFLLEVBQUwsQ0FBUSxlQUFSO0FBQ0ksdUJBQU8sQ0FBQyxXQUFELEVBQWMsRUFBRTBDLFNBQVMxQyxHQUFYLEVBQWdCMkMsaUJBQWlCLENBQUMsQ0FBQzFDLEdBQW5DLEVBQWQsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxnQkFBUjtBQUNJLHVCQUFPLENBQUMsWUFBRCxFQUFlLEVBQWYsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxjQUFSO0FBQ0ksdUJBQU8sQ0FBQyxVQUFELEVBQWEsRUFBYixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLFlBQVI7QUFDSSx1QkFBTyxDQUFDLFFBQUQsRUFBVyxFQUFYLENBQVA7QUFDSjtBQUNBLGlCQUFLLEVBQUwsQ0FBUSxVQUFSO0FBQ0ksdUJBQU8sQ0FBQyxNQUFELEVBQVMsRUFBRTJDLE1BQU1uQixFQUFFTyxTQUFGLENBQVloQyxHQUFaLENBQVIsRUFBVCxDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGFBQVI7QUFDSSx1QkFBTyxDQUFDLFNBQUQsRUFBWSxFQUFFNkMsU0FBU3BCLEVBQUVPLFNBQUYsQ0FBWWhDLEdBQVosQ0FBWCxFQUFaLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsb0JBQVI7QUFDSSx1QkFBTyxDQUFDLGdCQUFELEVBQW1CLEVBQUVvQyxPQUFPWCxFQUFFWSxRQUFGLENBQVdyQyxHQUFYLENBQVQsRUFBbkIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxpQkFBUjtBQUNJLHVCQUFPLENBQUMsYUFBRCxFQUFnQixFQUFFOEMsS0FBS3JCLEVBQUVPLFNBQUYsQ0FBWWhDLEdBQVosQ0FBUCxFQUFoQixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLCtCQUFSO0FBQ0ksdUJBQU8sQ0FBQywyQkFBRCxFQUE4QixFQUFFOEMsS0FBS3JCLEVBQUVPLFNBQUYsQ0FBWWhDLEdBQVosQ0FBUCxFQUE5QixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLHdCQUFSO0FBQ0ksdUJBQU8sQ0FBQyxvQkFBRCxFQUF1QixFQUF2QixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGdCQUFSO0FBQ0ksdUJBQU8sQ0FBQyxZQUFELEVBQWUsRUFBRUksTUFBTXFCLEVBQUVPLFNBQUYsQ0FBWWhDLEdBQVosQ0FBUixFQUEwQm9DLE9BQU9YLEVBQUVPLFNBQUYsQ0FBWS9CLEdBQVosQ0FBakMsRUFBbUQ4QyxXQUFXN0MsTUFBTXVCLEVBQUVPLFNBQUYsQ0FBWTlCLEdBQVosQ0FBTixHQUF5QixJQUF2RixFQUFmLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsaUJBQVI7QUFDSSx1QkFBTyxDQUFDLGFBQUQsRUFBZ0IsRUFBRUUsTUFBTXFCLEVBQUVPLFNBQUYsQ0FBWWhDLEdBQVosQ0FBUixFQUEwQmdELFVBQVUsQ0FBQyxDQUFDL0MsR0FBdEMsRUFBaEIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxtQkFBUjtBQUNJLHVCQUFPLENBQUMsZUFBRCxFQUFrQixFQUFFRyxNQUFNcUIsRUFBRU8sU0FBRixDQUFZaEMsR0FBWixDQUFSLEVBQTBCaUQsSUFBSXhCLEVBQUVPLFNBQUYsQ0FBWS9CLEdBQVosQ0FBOUIsRUFBZ0QrQyxVQUFVLENBQUMsQ0FBQy9DLEdBQTVELEVBQWxCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsa0JBQVI7QUFDSSx1QkFBTyxDQUFDLGNBQUQsRUFBaUIsRUFBakIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxrQkFBUjtBQUNJLHVCQUFPLENBQUMsY0FBRCxFQUFpQixFQUFqQixDQUFQO0FBQ0o7QUFDQSxpQkFBSyxFQUFMLENBQVEsY0FBUjtBQUNJLHVCQUFPLENBQUMsVUFBRCxFQUFhLEVBQWIsQ0FBUDtBQUNKO0FBQ0EsaUJBQUssRUFBTCxDQUFRLHVCQUFSO0FBQ0ksdUJBQU8sQ0FBQyxtQkFBRCxFQUFzQixFQUF0QixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLHNCQUFSO0FBQ0ksdUJBQU8sQ0FBQyxrQkFBRCxFQUFxQixFQUFyQixDQUFQO0FBQ0o7QUFDQSxpQkFBSyxFQUFMLENBQVEsc0JBQVI7QUFDSSx1QkFBTyxDQUFDLGtCQUFELEVBQXFCLEVBQXJCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsc0JBQVI7QUFDSSx1QkFBTyxDQUFDLGtCQUFELEVBQXFCLEVBQXJCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEscUJBQVI7QUFDSSx1QkFBTyxDQUFDLGlCQUFELEVBQW9CLEVBQXBCLENBQVA7QUFDSjtBQUNBLGlCQUFLLEVBQUwsQ0FBUSx5QkFBUjtBQUNJLHVCQUFPLENBQUMscUJBQUQsRUFBd0IsRUFBeEIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxrQkFBUjtBQUNJLHVCQUFPLENBQUMsY0FBRCxFQUFpQixFQUFFZ0MsT0FBT1IsRUFBRVMsUUFBRixDQUFXbEMsR0FBWCxDQUFULEVBQWpCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsbUJBQVI7QUFDSSx1QkFBTyxDQUFDLGVBQUQsRUFBa0IsRUFBRWtELFNBQVN6QixFQUFFWSxRQUFGLENBQVdyQyxHQUFYLENBQVgsRUFBbEIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxVQUFSO0FBQ0ksdUJBQU8sQ0FBQyxNQUFELEVBQVMsRUFBRW1ELElBQUluRCxHQUFOLEVBQVQsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxZQUFSO0FBQ0ksdUJBQU8sQ0FBQyxRQUFELEVBQVcsRUFBRW1ELElBQUluRCxHQUFOLEVBQVgsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxnQkFBUjtBQUNJLHVCQUFPLENBQUMsWUFBRCxFQUFlLEVBQUVtRCxJQUFJbkQsR0FBTixFQUFmLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsZUFBUjtBQUNJLHVCQUFPLENBQUMsV0FBRCxFQUFjLEVBQWQsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxjQUFSO0FBQ0ksdUJBQU8sQ0FBQyxVQUFELEVBQWEsRUFBYixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLFdBQVI7QUFDSSx1QkFBTyxDQUFDLE9BQUQsRUFBVSxFQUFFVSxNQUFNVixHQUFSLEVBQVYsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxVQUFSO0FBQ0ksdUJBQU8sQ0FBQyxNQUFELEVBQVMsRUFBVCxDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLFVBQVI7QUFDSSx1QkFBTyxDQUFDLFdBQUQsRUFBYyxFQUFkLENBQVA7QUFDSjtBQUNBLGlCQUFLLEVBQUwsQ0FBUSxlQUFSO0FBQ0ksdUJBQU8sQ0FBQyxXQUFELEVBQWMsRUFBRVQsT0FBT1MsR0FBVCxFQUFkLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsY0FBUjtBQUNJLHVCQUFPLENBQUMsVUFBRCxFQUFhLEVBQWIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxpQkFBUjtBQUNJLHVCQUFPLENBQUMsYUFBRCxFQUFnQixFQUFoQixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGFBQVI7QUFDSSx1QkFBTyxDQUFDLFNBQUQsRUFBWSxFQUFFUixLQUFLUSxHQUFQLEVBQVosQ0FBUDtBQUNKO0FBQ0EsaUJBQUssRUFBTCxDQUFRLDBCQUFSO0FBQ0ksdUJBQU8sQ0FBQyxzQkFBRCxFQUF5QixFQUFFb0QsWUFBWTNCLEVBQUVZLFFBQUYsQ0FBV3JDLEdBQVgsQ0FBZCxFQUF6QixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGlDQUFSO0FBQ0ksdUJBQU8sQ0FBQyw2QkFBRCxFQUFnQyxFQUFoQyxDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLDhCQUFSO0FBQ0ksdUJBQU8sQ0FBQywwQkFBRCxFQUE2QixFQUE3QixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLGNBQVI7QUFDSSx1QkFBTyxDQUFDLFVBQUQsRUFBYSxFQUFFcUQsV0FBVyxDQUFDLENBQUNyRCxHQUFmLEVBQWIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSxpQkFBUjtBQUNJLHVCQUFPLENBQUMsYUFBRCxFQUFnQixFQUFFc0QsT0FBT2xFLFNBQVNZLEdBQVQsQ0FBVCxFQUFoQixDQUFQO0FBQ0osaUJBQUssRUFBTCxDQUFRLHFCQUFSO0FBQ0ksdUJBQU8sQ0FBQyxpQkFBRCxFQUFvQixFQUFFdUQsT0FBT3ZELEdBQVQsRUFBY3NELE9BQU9sRSxTQUFTYSxHQUFULENBQXJCLEVBQXBCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsaUNBQVI7QUFDSSx1QkFBTyxDQUFDLDZCQUFELEVBQWdDLEVBQWhDLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsNkJBQVI7QUFDSSx1QkFBTyxDQUFDLHlCQUFELEVBQTRCLEVBQTVCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsc0JBQVI7QUFDSSx1QkFBTyxDQUFDLGtCQUFELEVBQXFCLEVBQUVxRCxPQUFPbEUsU0FBU1ksR0FBVCxDQUFULEVBQXJCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsd0JBQVI7QUFDSSx1QkFBTyxDQUFDLG9CQUFELEVBQXVCLEVBQUVzRCxPQUFPbEUsU0FBU1ksR0FBVCxDQUFULEVBQXZCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsK0JBQVI7QUFDSSx1QkFBTyxDQUFDLDJCQUFELEVBQThCLEVBQTlCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsZ0NBQVI7QUFDSSx1QkFBTyxDQUFDLDRCQUFELEVBQStCLEVBQS9CLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEsc0JBQVI7QUFDSSx1QkFBTyxDQUFDLGtCQUFELEVBQXFCLEVBQUVzRCxPQUFPbEUsU0FBU1ksR0FBVCxDQUFULEVBQXJCLENBQVA7QUFDSixpQkFBSyxFQUFMLENBQVEscUJBQVI7QUFDSSx1QkFBTyxDQUFDLGlCQUFELEVBQW9CLEVBQXBCLENBQVA7QUFDSjtBQUNBLGlCQUFLLEVBQUwsQ0FBUSx3QkFBUjtBQUNJLHVCQUFPLENBQUMsZ0JBQUQsRUFBbUIsRUFBbkIsQ0FBUDtBQUNKLGlCQUFLLEVBQUwsQ0FBUSx1QkFBUjtBQUNJLHVCQUFPLENBQUMsbUJBQUQsRUFBc0IsRUFBRUksTUFBTXFCLEVBQUVPLFNBQUYsQ0FBWWhDLEdBQVosQ0FBUixFQUF0QixDQUFQO0FBQ0o7QUFDQSxpQkFBSyxFQUFMLENBQVEsY0FBUjtBQUNJLHVCQUFPLENBQUMsVUFBRCxFQUFhLEVBQUUwQyxTQUFTakIsRUFBRVksUUFBRixDQUFXckMsR0FBWCxDQUFYLEVBQTRCd0QsVUFBVS9CLEVBQUVnQyxRQUFGLENBQVd4RCxHQUFYLENBQXRDLEVBQWIsQ0FBUDtBQUNKO0FBQ0EsaUJBQUssRUFBTCxDQUFRLFVBQVI7QUFDSSxzQkFBTWQsYUFBTjtBQTNKUjtBQTZKQSxjQUFNQSxhQUFOO0FBQ0g7QUFDRCxXQUFPLENBQUMsRUFBRCxFQUFLLEVBQUwsQ0FBUDtBQUNIO0FBQ0QsV0FBYXVFLGFBQWI7QUFDSSw2QkFBYztBQUFBOztBQUNWLGFBQUtDLGNBQUwsR0FBc0J6RSxVQUFVLEVBQVYsQ0FBYSxVQUFiLEVBQXlCMEUsS0FBekIsRUFBdEI7QUFDSDs7QUFITCw0QkFJSUMsR0FKSixnQkFJUXpELElBSlIsRUFJYzBELFFBSmQsRUFJd0I7QUFDaEIsYUFBS0gsY0FBTCxDQUFvQnZELElBQXBCLElBQTRCMEQsUUFBNUI7QUFDSCxLQU5MOztBQUFBLDRCQU9JQSxRQVBKLHFCQU9hQyxFQVBiLEVBT2lCakUsTUFQakIsRUFPeUJDLElBUHpCLEVBTytCO0FBQ3ZCLFlBQUlpRSxPQUFPLEtBQUtMLGNBQUwsQ0FBb0I1RCxJQUFwQixDQUFYO0FBQ0EsWUFBSSxDQUFDLEtBQUQsSUFBVSxLQUFkLEVBQXFCO0FBQ2pCO0FBRGlCLDBCQUVJSSxNQUFNNEQsR0FBR3JFLFNBQVQsRUFBb0JJLE9BQU9DLElBQTNCLEVBQWlDRCxPQUFPRSxHQUF4QyxFQUE2Q0YsT0FBT0csR0FBcEQsRUFBeURILE9BQU9JLEdBQWhFLENBRko7QUFBQSxnQkFFWkUsSUFGWTtBQUFBLGdCQUVOQyxNQUZNOztBQUdqQlYsb0JBQVFXLEdBQVIsQ0FBZXlELEdBQUcsSUFBSCxJQUFXLENBQTFCLFVBQWdDeEQsVUFBVUgsSUFBVixFQUFnQkMsTUFBaEIsQ0FBaEM7QUFDQTtBQUNBO0FBQ0g7QUFDRDJELGFBQUtELEVBQUwsRUFBU2pFLE1BQVQ7QUFDQSxZQUFJLENBQUMsS0FBRCxJQUFVLEtBQWQsRUFBcUI7QUFDakI7QUFDQUgsb0JBQVFXLEdBQVIsQ0FBWSxzRUFBWixFQUFvRixlQUFwRixFQUFxR3lELEdBQUcsSUFBSCxDQUFyRyxFQUErR0EsR0FBRyxJQUFILENBQS9HLEVBQXlIQSxHQUFHLElBQUgsQ0FBekgsRUFBbUlBLEdBQUcsSUFBSCxDQUFuSSxFQUE2SUEsR0FBRyxJQUFILENBQTdJLEVBQXVKQSxHQUFHLElBQUgsQ0FBdkosRUFBaUtBLEdBQUcsSUFBSCxDQUFqSyxFQUEyS0EsR0FBRyxJQUFILENBQTNLO0FBQ0FwRSxvQkFBUVcsR0FBUixDQUFZLGtCQUFaLEVBQWdDLFlBQWhDLEVBQThDeUQsR0FBR0UsS0FBSCxDQUFTQyxPQUFULEVBQTlDO0FBQ0F2RSxvQkFBUVcsR0FBUixDQUFZLGFBQVosRUFBMkIsY0FBM0IsRUFBMkN5RCxHQUFHSSxLQUFILEdBQVcsT0FBWCxFQUFvQnRELEdBQXBCLENBQXdCO0FBQUEsdUJBQUt1RCxLQUFLQSxFQUFFLE9BQUYsQ0FBTCxHQUFrQkEsRUFBRSxPQUFGLEdBQWxCLEdBQWlDQSxDQUF0QztBQUFBLGFBQXhCLENBQTNDO0FBQ0F6RSxvQkFBUVcsR0FBUixDQUFZLGdCQUFaLEVBQThCLGFBQTlCLEVBQTZDeUQsR0FBR00sUUFBSCxHQUFjLGNBQWQsRUFBOEJILE9BQTlCLEVBQTdDO0FBQ0E7QUFDSDtBQUNKLEtBekJMOztBQUFBO0FBQUE7QUEyQkEsT0FBTyxJQUFNSSxpQkFBaUIsSUFBSVosYUFBSixFQUF2QjtBQUNQLFdBQWFhLGNBQWI7QUFDSSw4QkFBYztBQUFBOztBQUNWdEYsdUJBQWUsSUFBZjtBQUNIOztBQUhMLDZCQUlJdUYsTUFKSixxQkFJYTtBQUNMLGVBQU8sRUFBRUMsTUFBTSxLQUFLQyxLQUFiLEVBQW9CM0UsTUFBTSxLQUFLQSxJQUEvQixFQUFQO0FBQ0gsS0FOTDs7QUFBQTtBQUFBO0FBUUEsV0FBYTRFLGNBQWI7QUFBQTs7QUFDSSw4QkFBYztBQUFBOztBQUFBLHFEQUNWLDRCQUFTQyxTQUFULENBRFU7O0FBRVYsY0FBS0MsSUFBTCxHQUFZLElBQVo7QUFDQSxjQUFLQyxJQUFMLEdBQVksSUFBWjtBQUhVO0FBSWI7O0FBTEw7QUFBQSxFQUFvQ1AsY0FBcEM7QUFPQSxPQUFPLFNBQVNRLE9BQVQsQ0FBaUJDLE9BQWpCLEVBQTBCO0FBQzdCLFFBQUlDLFNBQVMsRUFBYjtBQUNBRCxZQUFRRSxPQUFSLENBQWdCLFVBQUNwRixNQUFELEVBQVNELENBQVQsRUFBZTtBQUMzQnNGLGlCQUFTckYsT0FBTzBFLE1BQVAsRUFBVCxFQUEwQlMsTUFBMUIsRUFBa0MsQ0FBbEMsRUFBcUNwRixDQUFyQztBQUNILEtBRkQ7QUFHQSxXQUFPb0YsT0FBT2pFLElBQVAsQ0FBWSxFQUFaLENBQVA7QUFDSDtBQUNELFNBQVNtRSxRQUFULENBQWtCckYsTUFBbEIsRUFBMEJtRixNQUExQixFQUFrQ0csS0FBbEMsRUFBeUNDLEtBQXpDLEVBQWdEO0FBQzVDLFFBQUlDLGNBQWMsRUFBbEI7QUFDQSxTQUFLLElBQUl6RixJQUFJLENBQWIsRUFBZ0JBLElBQUl1RixLQUFwQixFQUEyQnZGLEdBQTNCLEVBQWdDO0FBQzVCeUYsb0JBQVlDLElBQVosQ0FBaUIsSUFBakI7QUFDSDtBQUNETixXQUFPTSxJQUFQLGVBQWVELFdBQWY7QUFDQUwsV0FBT00sSUFBUCxDQUFlRixLQUFmLFVBQXlCdkYsT0FBT0MsSUFBaEM7QUFDQSxRQUFJRCxPQUFPWSxJQUFQLElBQWVaLE9BQU8wRixPQUExQixFQUFtQztBQUMvQlAsZUFBT00sSUFBUCxDQUFZLEdBQVo7QUFDQSxZQUFJekYsT0FBT1ksSUFBWCxFQUFpQjtBQUNidUUsbUJBQU9NLElBQVAsQ0FBWXpGLE9BQU9ZLElBQVAsQ0FBWU0sSUFBWixDQUFpQixJQUFqQixDQUFaO0FBQ0g7QUFDRCxZQUFJbEIsT0FBTzBGLE9BQVgsRUFBb0I7QUFDaEIsZ0JBQUk1RSxPQUFPRCxPQUFPQyxJQUFQLENBQVlkLE9BQU8wRixPQUFuQixDQUFYO0FBQ0EsZ0JBQUk1RSxLQUFLNkUsTUFBVCxFQUFpQjtBQUNiLG9CQUFJM0YsT0FBT1ksSUFBUCxJQUFlWixPQUFPWSxJQUFQLENBQVkrRSxNQUEvQixFQUF1QztBQUNuQ1IsMkJBQU9NLElBQVAsQ0FBWSxJQUFaO0FBQ0g7QUFDRE4sdUJBQU9NLElBQVAsQ0FBWTNFLEtBQUtDLEdBQUwsQ0FBUztBQUFBLDJCQUFVa0IsR0FBVixVQUFpQmpDLE9BQU8wRixPQUFQLElBQWtCMUYsT0FBTzBGLE9BQVAsQ0FBZXpELEdBQWYsQ0FBbkM7QUFBQSxpQkFBVCxFQUFtRWYsSUFBbkUsQ0FBd0UsSUFBeEUsQ0FBWjtBQUNIO0FBQ0o7QUFDRGlFLGVBQU9NLElBQVAsQ0FBWSxHQUFaO0FBQ0g7QUFDRE4sV0FBT00sSUFBUCxDQUFZLElBQVo7QUFDQSxRQUFJekYsT0FBTzRGLFFBQVAsSUFBbUI1RixPQUFPNEYsUUFBUCxDQUFnQkQsTUFBdkMsRUFBK0M7QUFDM0MsYUFBSyxJQUFJNUYsS0FBSSxDQUFiLEVBQWdCQSxLQUFJQyxPQUFPNEYsUUFBUCxDQUFnQkQsTUFBcEMsRUFBNEM1RixJQUE1QyxFQUFpRDtBQUM3Q3NGLHFCQUFTckYsT0FBTzRGLFFBQVAsQ0FBZ0I3RixFQUFoQixDQUFULEVBQTZCb0YsTUFBN0IsRUFBcUNHLFFBQVEsQ0FBN0MsRUFBZ0R2RixFQUFoRDtBQUNIO0FBQ0o7QUFDSiIsImZpbGUiOiJsaWIvb3Bjb2Rlcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluaXRpYWxpemVHdWlkLCBmaWxsTnVsbHMsIHVucmVhY2hhYmxlIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5cbi8qKlxuICogUmVnaXN0ZXJzXG4gKlxuICogRm9yIHRoZSBtb3N0IHBhcnQsIHRoZXNlIGZvbGxvd3MgTUlQUyBuYW1pbmcgY29udmVudGlvbnMsIGhvd2V2ZXIgdGhlXG4gKiByZWdpc3RlciBudW1iZXJzIGFyZSBkaWZmZXJlbnQuXG4gKi9cbmV4cG9ydCB2YXIgUmVnaXN0ZXI7XG4oZnVuY3Rpb24gKFJlZ2lzdGVyKSB7XG4gICAgLy8gJDAgb3IgJHBjIChwcm9ncmFtIGNvdW50ZXIpOiBwb2ludGVyIGludG8gYHByb2dyYW1gIGZvciB0aGUgbmV4dCBpbnN0dXJjdGlvbjsgLTEgbWVhbnMgZXhpdFxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicGNcIl0gPSAwXSA9IFwicGNcIjtcbiAgICAvLyAkMSBvciAkcmEgKHJldHVybiBhZGRyZXNzKTogcG9pbnRlciBpbnRvIGBwcm9ncmFtYCBmb3IgdGhlIHJldHVyblxuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wicmFcIl0gPSAxXSA9IFwicmFcIjtcbiAgICAvLyAkMiBvciAkZnAgKGZyYW1lIHBvaW50ZXIpOiBwb2ludGVyIGludG8gdGhlIGBldmFsU3RhY2tgIGZvciB0aGUgYmFzZSBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcImZwXCJdID0gMl0gPSBcImZwXCI7XG4gICAgLy8gJDMgb3IgJHNwIChzdGFjayBwb2ludGVyKTogcG9pbnRlciBpbnRvIHRoZSBgZXZhbFN0YWNrYCBmb3IgdGhlIHRvcCBvZiB0aGUgc3RhY2tcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInNwXCJdID0gM10gPSBcInNwXCI7XG4gICAgLy8gJDQtJDUgb3IgJHMwLSRzMSAoc2F2ZWQpOiBjYWxsZWUgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1wiczBcIl0gPSA0XSA9IFwiczBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInMxXCJdID0gNV0gPSBcInMxXCI7XG4gICAgLy8gJDYtJDcgb3IgJHQwLSR0MSAodGVtcG9yYXJpZXMpOiBjYWxsZXIgc2F2ZWQgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyc1xuICAgIFJlZ2lzdGVyW1JlZ2lzdGVyW1widDBcIl0gPSA2XSA9IFwidDBcIjtcbiAgICBSZWdpc3RlcltSZWdpc3RlcltcInQxXCJdID0gN10gPSBcInQxXCI7XG59KShSZWdpc3RlciB8fCAoUmVnaXN0ZXIgPSB7fSkpO1xuZXhwb3J0IGZ1bmN0aW9uIGRlYnVnU2xpY2UoZW52LCBzdGFydCwgZW5kKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZTpuby1jb25zb2xlICovXG4gICAgICAgIGxldCB7IHByb2dyYW0sIGNvbnN0YW50cyB9ID0gZW52O1xuICAgICAgICAvLyBjb25zb2xlIGlzIG5vdCBhdmFpbGFibGUgaW4gSUU5XG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICAvLyBJRTEwIGRvZXMgbm90IGhhdmUgYGNvbnNvbGUuZ3JvdXBgXG4gICAgICAgIGlmICh0eXBlb2YgY29uc29sZS5ncm91cCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZ3JvdXAoYCVjJHtzdGFydH06JHtlbmR9YCwgJ2NvbG9yOiAjOTk5Jyk7XG4gICAgICAgIGZvciAobGV0IGkgPSBzdGFydDsgaSA8PSBlbmQ7IGkgKz0gNCkge1xuICAgICAgICAgICAgbGV0IHsgdHlwZSwgb3AxLCBvcDIsIG9wMyB9ID0gcHJvZ3JhbS5vcGNvZGUoaSk7XG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyhjb25zdGFudHMsIHR5cGUsIG9wMSwgb3AyLCBvcDMpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coYCR7aX0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5ncm91cEVuZCgpO1xuICAgICAgICAvKiB0c2xpbnQ6ZW5hYmxlOm5vLWNvbnNvbGUgKi9cbiAgICB9XG59XG5mdW5jdGlvbiBsb2dPcGNvZGUodHlwZSwgcGFyYW1zKSB7XG4gICAgaWYgKCFmYWxzZSAmJiBmYWxzZSkge1xuICAgICAgICBsZXQgb3V0ID0gdHlwZTtcbiAgICAgICAgaWYgKHBhcmFtcykge1xuICAgICAgICAgICAgbGV0IGFyZ3MgPSBPYmplY3Qua2V5cyhwYXJhbXMpLm1hcChwID0+IGAgJHtwfT0ke2pzb24ocGFyYW1zW3BdKX1gKS5qb2luKCcnKTtcbiAgICAgICAgICAgIG91dCArPSBhcmdzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBgKCR7b3V0fSlgO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGpzb24ocGFyYW0pIHtcbiAgICBpZiAodHlwZW9mIHBhcmFtID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiAnPGZ1bmN0aW9uPic7XG4gICAgfVxuICAgIGxldCBzdHJpbmc7XG4gICAgdHJ5IHtcbiAgICAgICAgc3RyaW5nID0gSlNPTi5zdHJpbmdpZnkocGFyYW0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuICc8Y2Fubm90IGdlbmVyYXRlIEpTT04+JztcbiAgICB9XG4gICAgaWYgKHN0cmluZyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiAndW5kZWZpbmVkJztcbiAgICB9XG4gICAgbGV0IGRlYnVnID0gSlNPTi5wYXJzZShzdHJpbmcpO1xuICAgIGlmICh0eXBlb2YgZGVidWcgPT09ICdvYmplY3QnICYmIGRlYnVnICE9PSBudWxsICYmIGRlYnVnLkdsaW1tZXJEZWJ1ZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBkZWJ1Zy5HbGltbWVyRGVidWc7XG4gICAgfVxuICAgIHJldHVybiBzdHJpbmc7XG59XG5mdW5jdGlvbiBkZWJ1ZyhjLCBvcCwgb3AxLCBvcDIsIG9wMykge1xuICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgc3dpdGNoIChvcCkge1xuICAgICAgICAgICAgY2FzZSAwIC8qIEJ1ZyAqLzpcbiAgICAgICAgICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgICAgICAgICAgY2FzZSAxIC8qIEhlbHBlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIZWxwZXInLCB7IGhlbHBlcjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyIC8qIEZ1bmN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0Z1bmN0aW9uJywgeyBmdW5jdGlvbjogYy5nZXRGdW5jdGlvbihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA0IC8qIFNldFZhcmlhYmxlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1NldFZhcmlhYmxlJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNSAvKiBHZXRWYXJpYWJsZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRWYXJpYWJsZScsIHsgc3ltYm9sOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDYgLyogR2V0UHJvcGVydHkgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0UHJvcGVydHknLCB7IGtleTogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNyAvKiBQdXNoQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEJsb2NrJywgeyBibG9jazogYy5nZXRCbG9jayhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA4IC8qIEdldEJsb2NrICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0dldEJsb2NrJywgeyBzeW1ib2w6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgOSAvKiBIYXNCbG9jayAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydIYXNCbG9jaycsIHsgYmxvY2s6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTAgLyogSGFzQmxvY2tQYXJhbXMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSGFzQmxvY2tQYXJhbXMnLCB7IGJsb2NrOiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDExIC8qIENvbmNhdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb25jYXQnLCB7IHNpemU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTIgLyogSW1tZWRpYXRlICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ltbWVkaWF0ZScsIHsgdmFsdWU6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgMTMgLyogQ29uc3RhbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29uc3RhbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDE0IC8qIFByaW1pdGl2ZVJlZmVyZW5jZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQcmltaXRpdmVSZWZlcmVuY2UnLCB7IHByaW1pdGl2ZTogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSAxNSAvKiBEdXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHVwJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSwgb2Zmc2V0OiBvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDE2IC8qIFBvcCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3AnLCB7IGNvdW50OiBvcDEgfV07XG4gICAgICAgICAgICBjYXNlIDE3IC8qIExvYWQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTG9hZCcsIHsgcmVnaXN0ZXI6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDE4IC8qIEZldGNoICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ZldGNoJywgeyByZWdpc3RlcjogUmVnaXN0ZXJbb3AxXSB9XTtcbiAgICAgICAgICAgIC8vLyBQUkVMVURFICYgRVhJVFxuICAgICAgICAgICAgY2FzZSAxOSAvKiBSb290U2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUm9vdFNjb3BlJywgeyBzeW1ib2xzOiBvcDEsIGJpbmRDYWxsZXJTY29wZTogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDIwIC8qIENoaWxkU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ2hpbGRTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMjEgLyogUG9wU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wU2NvcGUnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDIyIC8qIFJldHVybiAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydSZXR1cm4nLCB7fV07XG4gICAgICAgICAgICAvLy8gSFRNTFxuICAgICAgICAgICAgY2FzZSAyMyAvKiBUZXh0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RleHQnLCB7IHRleHQ6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI0IC8qIENvbW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tbWVudCcsIHsgY29tbWVudDogYy5nZXRTdHJpbmcob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgMjUgLyogRHluYW1pY0NvbnRlbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRHluYW1pY0NvbnRlbnQnLCB7IHZhbHVlOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI2IC8qIE9wZW5FbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ09wZW5FbGVtZW50JywgeyB0YWc6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDI3IC8qIE9wZW5FbGVtZW50V2l0aE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkVsZW1lbnRXaXRoT3BlcmF0aW9ucycsIHsgdGFnOiBjLmdldFN0cmluZyhvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSAyOCAvKiBPcGVuRHluYW1pY0VsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnT3BlbkR5bmFtaWNFbGVtZW50Jywge31dO1xuICAgICAgICAgICAgY2FzZSAyOSAvKiBTdGF0aWNBdHRyICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1N0YXRpY0F0dHInLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIHZhbHVlOiBjLmdldFN0cmluZyhvcDIpLCBuYW1lc3BhY2U6IG9wMyA/IGMuZ2V0U3RyaW5nKG9wMykgOiBudWxsIH1dO1xuICAgICAgICAgICAgY2FzZSAzMCAvKiBEeW5hbWljQXR0ciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydEeW5hbWljQXR0cicsIHsgbmFtZTogYy5nZXRTdHJpbmcob3AxKSwgdHJ1c3Rpbmc6ICEhb3AyIH1dO1xuICAgICAgICAgICAgY2FzZSAzMSAvKiBEeW5hbWljQXR0ck5TICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0R5bmFtaWNBdHRyTlMnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSksIG5zOiBjLmdldFN0cmluZyhvcDIpLCB0cnVzdGluZzogISFvcDIgfV07XG4gICAgICAgICAgICBjYXNlIDMyIC8qIEZsdXNoRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydGbHVzaEVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDMzIC8qIENsb3NlRWxlbWVudCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDbG9zZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICAvLy8gTU9ESUZJRVJcbiAgICAgICAgICAgIGNhc2UgMzQgLyogTW9kaWZpZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnTW9kaWZpZXInLCB7fV07XG4gICAgICAgICAgICAvLy8gV09STUhPTEVcbiAgICAgICAgICAgIGNhc2UgMzUgLyogUHVzaFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaFJlbW90ZUVsZW1lbnQnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDM2IC8qIFBvcFJlbW90ZUVsZW1lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wUmVtb3RlRWxlbWVudCcsIHt9XTtcbiAgICAgICAgICAgIC8vLyBEWU5BTUlDIFNDT1BFXG4gICAgICAgICAgICBjYXNlIDM3IC8qIEJpbmREeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQmluZER5bmFtaWNTY29wZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgMzggLyogUHVzaER5bmFtaWNTY29wZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgY2FzZSAzOSAvKiBQb3BEeW5hbWljU2NvcGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUG9wRHluYW1pY1Njb3BlJywge31dO1xuICAgICAgICAgICAgLy8vIFZNXG4gICAgICAgICAgICBjYXNlIDQwIC8qIENvbXBpbGVEeW5hbWljQmxvY2sgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ29tcGlsZUR5bmFtaWNCbG9jaycsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDEgLyogSW52b2tlU3RhdGljICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0ludm9rZVN0YXRpYycsIHsgYmxvY2s6IGMuZ2V0QmxvY2sob3AxKSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDIgLyogSW52b2tlRHluYW1pYyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydJbnZva2VEeW5hbWljJywgeyBpbnZva2VyOiBjLmdldE90aGVyKG9wMSkgfV07XG4gICAgICAgICAgICBjYXNlIDQzIC8qIEp1bXAgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSnVtcCcsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDQgLyogSnVtcElmICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0p1bXBJZicsIHsgdG86IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDUgLyogSnVtcFVubGVzcyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydKdW1wVW5sZXNzJywgeyB0bzogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA0NiAvKiBQdXNoRnJhbWUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaEZyYW1lJywge31dO1xuICAgICAgICAgICAgY2FzZSA0NyAvKiBQb3BGcmFtZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQb3BGcmFtZScsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNDggLyogRW50ZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXInLCB7IGFyZ3M6IG9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNDkgLyogRXhpdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0Jywge31dO1xuICAgICAgICAgICAgY2FzZSA1MCAvKiBUZXN0ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1RvQm9vbGVhbicsIHt9XTtcbiAgICAgICAgICAgIC8vLyBMSVNUU1xuICAgICAgICAgICAgY2FzZSA1MSAvKiBFbnRlckxpc3QgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRW50ZXJMaXN0JywgeyBzdGFydDogb3AxIH1dO1xuICAgICAgICAgICAgY2FzZSA1MiAvKiBFeGl0TGlzdCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydFeGl0TGlzdCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNTMgLyogUHV0SXRlcmF0b3IgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHV0SXRlcmF0b3InLCB7fV07XG4gICAgICAgICAgICBjYXNlIDU0IC8qIEl0ZXJhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSXRlcmF0ZScsIHsgZW5kOiBvcDEgfV07XG4gICAgICAgICAgICAvLy8gQ09NUE9ORU5UU1xuICAgICAgICAgICAgY2FzZSA1NSAvKiBQdXNoQ29tcG9uZW50TWFuYWdlciAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQ29tcG9uZW50TWFuYWdlcicsIHsgZGVmaW5pdGlvbjogYy5nZXRPdGhlcihvcDEpIH1dO1xuICAgICAgICAgICAgY2FzZSA1NiAvKiBQdXNoRHluYW1pY0NvbXBvbmVudE1hbmFnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaER5bmFtaWNDb21wb25lbnRNYW5hZ2VyJywge31dO1xuICAgICAgICAgICAgY2FzZSA1NyAvKiBJbml0aWFsaXplQ29tcG9uZW50U3RhdGUgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnSW5pdGlhbGl6ZUNvbXBvbmVudFN0YXRlJywge31dO1xuICAgICAgICAgICAgY2FzZSA1OCAvKiBQdXNoQXJncyAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydQdXNoQXJncycsIHsgc3ludGhldGljOiAhIW9wMSB9XTtcbiAgICAgICAgICAgIGNhc2UgNTkgLyogUHJlcGFyZUFyZ3MgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHJlcGFyZUFyZ3MnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2MCAvKiBDcmVhdGVDb21wb25lbnQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnQ3JlYXRlQ29tcG9uZW50JywgeyBmbGFnczogb3AxLCBzdGF0ZTogUmVnaXN0ZXJbb3AyXSB9XTtcbiAgICAgICAgICAgIGNhc2UgNjEgLyogUmVnaXN0ZXJDb21wb25lbnREZXN0cnVjdG9yICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ1JlZ2lzdGVyQ29tcG9uZW50RGVzdHJ1Y3RvcicsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNjIgLyogUHVzaENvbXBvbmVudE9wZXJhdGlvbnMgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUHVzaENvbXBvbmVudE9wZXJhdGlvbnMnLCB7fV07XG4gICAgICAgICAgICBjYXNlIDYzIC8qIEdldENvbXBvbmVudFNlbGYgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnR2V0Q29tcG9uZW50U2VsZicsIHsgc3RhdGU6IFJlZ2lzdGVyW29wMV0gfV07XG4gICAgICAgICAgICBjYXNlIDY0IC8qIEdldENvbXBvbmVudExheW91dCAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydHZXRDb21wb25lbnRMYXlvdXQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2NSAvKiBCZWdpbkNvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0JlZ2luQ29tcG9uZW50VHJhbnNhY3Rpb24nLCB7fV07XG4gICAgICAgICAgICBjYXNlIDY2IC8qIENvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0NvbW1pdENvbXBvbmVudFRyYW5zYWN0aW9uJywge31dO1xuICAgICAgICAgICAgY2FzZSA2NyAvKiBEaWRDcmVhdGVFbGVtZW50ICovOlxuICAgICAgICAgICAgICAgIHJldHVybiBbJ0RpZENyZWF0ZUVsZW1lbnQnLCB7IHN0YXRlOiBSZWdpc3RlcltvcDFdIH1dO1xuICAgICAgICAgICAgY2FzZSA2OCAvKiBEaWRSZW5kZXJMYXlvdXQgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGlkUmVuZGVyTGF5b3V0Jywge31dO1xuICAgICAgICAgICAgLy8vIFBBUlRJQUxTXG4gICAgICAgICAgICBjYXNlIDY5IC8qIEdldFBhcnRpYWxUZW1wbGF0ZSAqLzpcbiAgICAgICAgICAgICAgICByZXR1cm4gWydDb21waWxlUGFydGlhbCcsIHt9XTtcbiAgICAgICAgICAgIGNhc2UgNzAgLyogUmVzb2x2ZU1heWJlTG9jYWwgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnUmVzb2x2ZU1heWJlTG9jYWwnLCB7IG5hbWU6IGMuZ2V0U3RyaW5nKG9wMSkgfV07XG4gICAgICAgICAgICAvLy8gREVCVUdHRVJcbiAgICAgICAgICAgIGNhc2UgNzEgLyogRGVidWdnZXIgKi86XG4gICAgICAgICAgICAgICAgcmV0dXJuIFsnRGVidWdnZXInLCB7IHN5bWJvbHM6IGMuZ2V0T3RoZXIob3AxKSwgZXZhbEluZm86IGMuZ2V0QXJyYXkob3AyKSB9XTtcbiAgICAgICAgICAgIC8vLyBTVEFURU1FTlRTXG4gICAgICAgICAgICBjYXNlIDcyIC8qIFNpemUgKi86XG4gICAgICAgICAgICAgICAgdGhyb3cgdW5yZWFjaGFibGUoKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xuICAgIH1cbiAgICByZXR1cm4gWycnLCB7fV07XG59XG5leHBvcnQgY2xhc3MgQXBwZW5kT3Bjb2RlcyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGUgPSBmaWxsTnVsbHMoNzIgLyogU2l6ZSAqLykuc2xpY2UoKTtcbiAgICB9XG4gICAgYWRkKG5hbWUsIGV2YWx1YXRlKSB7XG4gICAgICAgIHRoaXMuZXZhbHVhdGVPcGNvZGVbbmFtZV0gPSBldmFsdWF0ZTtcbiAgICB9XG4gICAgZXZhbHVhdGUodm0sIG9wY29kZSwgdHlwZSkge1xuICAgICAgICBsZXQgZnVuYyA9IHRoaXMuZXZhbHVhdGVPcGNvZGVbdHlwZV07XG4gICAgICAgIGlmICghZmFsc2UgJiYgZmFsc2UpIHtcbiAgICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlICovXG4gICAgICAgICAgICBsZXQgW25hbWUsIHBhcmFtc10gPSBkZWJ1Zyh2bS5jb25zdGFudHMsIG9wY29kZS50eXBlLCBvcGNvZGUub3AxLCBvcGNvZGUub3AyLCBvcGNvZGUub3AzKTtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke3ZtWydwYyddIC0gNH0uICR7bG9nT3Bjb2RlKG5hbWUsIHBhcmFtcyl9YCk7XG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyguLi5kZWJ1Zyh2bS5jb25zdGFudHMsIHR5cGUsIG9wY29kZS5vcDEsIG9wY29kZS5vcDIsIG9wY29kZS5vcDMpKTtcbiAgICAgICAgICAgIC8qIHRzbGludDplbmFibGUgKi9cbiAgICAgICAgfVxuICAgICAgICBmdW5jKHZtLCBvcGNvZGUpO1xuICAgICAgICBpZiAoIWZhbHNlICYmIGZhbHNlKSB7XG4gICAgICAgICAgICAvKiB0c2xpbnQ6ZGlzYWJsZSAqL1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IHBjOiAlZCwgcmE6ICVkLCBmcDogJWQsIHNwOiAlZCwgczA6ICVPLCBzMTogJU8sIHQwOiAlTywgdDE6ICVPJywgJ2NvbG9yOiBvcmFuZ2UnLCB2bVsncGMnXSwgdm1bJ3JhJ10sIHZtWydmcCddLCB2bVsnc3AnXSwgdm1bJ3MwJ10sIHZtWydzMSddLCB2bVsndDAnXSwgdm1bJ3QxJ10pO1xuICAgICAgICAgICAgY29uc29sZS5sb2coJyVjIC0+IGV2YWwgc3RhY2snLCAnY29sb3I6IHJlZCcsIHZtLnN0YWNrLnRvQXJyYXkoKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gc2NvcGUnLCAnY29sb3I6IGdyZWVuJywgdm0uc2NvcGUoKVsnc2xvdHMnXS5tYXAocyA9PiBzICYmIHNbJ3ZhbHVlJ10gPyBzWyd2YWx1ZSddKCkgOiBzKSk7XG4gICAgICAgICAgICBjb25zb2xlLmxvZygnJWMgLT4gZWxlbWVudHMnLCAnY29sb3I6IGJsdWUnLCB2bS5lbGVtZW50cygpWydlbGVtZW50U3RhY2snXS50b0FycmF5KCkpO1xuICAgICAgICAgICAgLyogdHNsaW50OmVuYWJsZSAqL1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0IGNvbnN0IEFQUEVORF9PUENPREVTID0gbmV3IEFwcGVuZE9wY29kZXMoKTtcbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE9wY29kZSB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGluaXRpYWxpemVHdWlkKHRoaXMpO1xuICAgIH1cbiAgICB0b0pTT04oKSB7XG4gICAgICAgIHJldHVybiB7IGd1aWQ6IHRoaXMuX2d1aWQsIHR5cGU6IHRoaXMudHlwZSB9O1xuICAgIH1cbn1cbmV4cG9ydCBjbGFzcyBVcGRhdGluZ09wY29kZSBleHRlbmRzIEFic3RyYWN0T3Bjb2RlIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICAgICAgdGhpcy5uZXh0ID0gbnVsbDtcbiAgICAgICAgdGhpcy5wcmV2ID0gbnVsbDtcbiAgICB9XG59XG5leHBvcnQgZnVuY3Rpb24gaW5zcGVjdChvcGNvZGVzKSB7XG4gICAgbGV0IGJ1ZmZlciA9IFtdO1xuICAgIG9wY29kZXMuZm9yRWFjaCgob3Bjb2RlLCBpKSA9PiB7XG4gICAgICAgIF9pbnNwZWN0KG9wY29kZS50b0pTT04oKSwgYnVmZmVyLCAwLCBpKTtcbiAgICB9KTtcbiAgICByZXR1cm4gYnVmZmVyLmpvaW4oJycpO1xufVxuZnVuY3Rpb24gX2luc3BlY3Qob3Bjb2RlLCBidWZmZXIsIGxldmVsLCBpbmRleCkge1xuICAgIGxldCBpbmRlbnRhdGlvbiA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGV2ZWw7IGkrKykge1xuICAgICAgICBpbmRlbnRhdGlvbi5wdXNoKCcgICcpO1xuICAgIH1cbiAgICBidWZmZXIucHVzaCguLi5pbmRlbnRhdGlvbik7XG4gICAgYnVmZmVyLnB1c2goYCR7aW5kZXh9LiAke29wY29kZS50eXBlfWApO1xuICAgIGlmIChvcGNvZGUuYXJncyB8fCBvcGNvZGUuZGV0YWlscykge1xuICAgICAgICBidWZmZXIucHVzaCgnKCcpO1xuICAgICAgICBpZiAob3Bjb2RlLmFyZ3MpIHtcbiAgICAgICAgICAgIGJ1ZmZlci5wdXNoKG9wY29kZS5hcmdzLmpvaW4oJywgJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcGNvZGUuZGV0YWlscykge1xuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhvcGNvZGUuZGV0YWlscyk7XG4gICAgICAgICAgICBpZiAoa2V5cy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBpZiAob3Bjb2RlLmFyZ3MgJiYgb3Bjb2RlLmFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5wdXNoKCcsICcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBidWZmZXIucHVzaChrZXlzLm1hcChrZXkgPT4gYCR7a2V5fT0ke29wY29kZS5kZXRhaWxzICYmIG9wY29kZS5kZXRhaWxzW2tleV19YCkuam9pbignLCAnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgYnVmZmVyLnB1c2goJyknKTtcbiAgICB9XG4gICAgYnVmZmVyLnB1c2goJ1xcbicpO1xuICAgIGlmIChvcGNvZGUuY2hpbGRyZW4gJiYgb3Bjb2RlLmNoaWxkcmVuLmxlbmd0aCkge1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wY29kZS5jaGlsZHJlbi5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgX2luc3BlY3Qob3Bjb2RlLmNoaWxkcmVuW2ldLCBidWZmZXIsIGxldmVsICsgMSwgaSk7XG4gICAgICAgIH1cbiAgICB9XG59Il19

@@ -93,3 +93,3 @@ function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }

HTMLUpsert.insert = function insert(dom, cursor, value) {
var bounds = dom.insertHTMLBefore(cursor.element, value, cursor.nextSibling);
var bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, value);
return new HTMLUpsert(bounds);

@@ -128,3 +128,3 @@ };

var stringValue = value.toHTML();
var bounds = dom.insertHTMLBefore(cursor.element, stringValue, cursor.nextSibling);
var bounds = dom.insertHTMLBefore(cursor.element, cursor.nextSibling, stringValue);
return new SafeStringUpsert(bounds, stringValue);

@@ -182,2 +182,2 @@ };

}(Upsert);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJjbGVhciIsInNpbmdsZSIsIlNpbmdsZU5vZGVCb3VuZHMiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsInRvSFRNTCIsImlzTm9kZSIsIm5vZGVUeXBlIiwiaXNTdHJpbmciLCJVcHNlcnQiLCJib3VuZHMiLCJjYXV0aW91c0luc2VydCIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZUFBNUI7QUFDQSxTQUFTQyxLQUFULEVBQWdCQyxNQUFoQixFQUF3QkMsZ0JBQXhCLFFBQWdELFVBQWhEO0FBQ0EsT0FBTyxTQUFTQyxZQUFULENBQXNCQyxLQUF0QixFQUE2QjtBQUNoQyxXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUMsTUFBYixLQUF3QixVQUE5RTtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxNQUFULENBQWdCRixLQUFoQixFQUF1QjtBQUMxQixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUcsUUFBYixLQUEwQixRQUFoRjtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxRQUFULENBQWtCSixLQUFsQixFQUF5QjtBQUM1QixX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RCxtQkFBTyxJQUFQO0FBQ0gsU0FWRCxNQVVPO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0osSzs7O0VBeEIwQnRCLE07O0lBMEJ6QlEsVTs7Ozs7Ozs7O2VBQ0tGLE0sbUJBQU9ILEcsRUFBS0MsTSxFQUFRbUIsSSxFQUFNO0FBQzdCcEIsWUFBSVUsWUFBSixDQUFpQlQsT0FBT1UsT0FBeEIsRUFBaUNTLElBQWpDLEVBQXVDbkIsT0FBT1csV0FBOUM7QUFDQSxlQUFPLElBQUlQLFVBQUosQ0FBZWhCLE9BQU9ZLE9BQU9VLE9BQWQsRUFBdUJTLElBQXZCLENBQWYsQ0FBUDtBQUNILEs7O3lCQUNEUCxNLG1CQUFPYixHLEVBQUtSLEssRUFBTztBQUNmLFlBQUlFLE9BQU9GLEtBQVAsQ0FBSixFQUFtQjtBQUFBLGdCQUNUTSxNQURTLEdBQ0UsSUFERixDQUNUQSxNQURTOztBQUVmLGdCQUFJbUIsZ0JBQWdCbkIsT0FBT21CLGFBQVAsRUFBcEI7QUFDQSxnQkFBSUwsY0FBY3hCLE1BQU1VLE1BQU4sQ0FBbEI7QUFDQSxpQkFBS0EsTUFBTCxHQUFjRSxJQUFJcUIsZ0JBQUosQ0FBcUJKLGFBQXJCLEVBQW9DekIsS0FBcEMsRUFBMkNvQixXQUEzQyxDQUFkO0FBQ0EsbUJBQU8sSUFBUDtBQUNILFNBTkQsTUFNTztBQUNILG1CQUFPLEtBQVA7QUFDSDtBQUNKLEs7OztFQWZvQmYsTSIsImZpbGUiOiJsaWIvdXBzZXJ0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5yZWFjaGFibGUgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNsZWFyLCBzaW5nbGUsIFNpbmdsZU5vZGVCb3VuZHMgfSBmcm9tICcuL2JvdW5kcyc7XG5leHBvcnQgZnVuY3Rpb24gaXNTYWZlU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgIT09IG51bGwgJiYgdHlwZW9mIHZhbHVlLnRvSFRNTCA9PT0gJ2Z1bmN0aW9uJztcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc05vZGUodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUubm9kZVR5cGUgPT09ICdudW1iZXInO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzU3RyaW5nKHZhbHVlKSB7XG4gICAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZyc7XG59XG5jbGFzcyBVcHNlcnQge1xuICAgIGNvbnN0cnVjdG9yKGJvdW5kcykge1xuICAgICAgICB0aGlzLmJvdW5kcyA9IGJvdW5kcztcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBVcHNlcnQ7XG5leHBvcnQgZnVuY3Rpb24gY2F1dGlvdXNJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gVGV4dFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzU2FmZVN0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIFNhZmVTdHJpbmdVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHRydXN0aW5nSW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIEhUTUxVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIGlmIChpc05vZGUodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBOb2RlVXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICB0aHJvdyB1bnJlYWNoYWJsZSgpO1xufVxuY2xhc3MgVGV4dFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IHRleHROb2RlID0gZG9tLmNyZWF0ZVRleHROb2RlKHZhbHVlKTtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIGxldCBib3VuZHMgPSBuZXcgU2luZ2xlTm9kZUJvdW5kcyhjdXJzb3IuZWxlbWVudCwgdGV4dE5vZGUpO1xuICAgICAgICByZXR1cm4gbmV3IFRleHRVcHNlcnQoYm91bmRzLCB0ZXh0Tm9kZSk7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKGJvdW5kcywgdGV4dE5vZGUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy50ZXh0Tm9kZSA9IHRleHROb2RlO1xuICAgIH1cbiAgICB1cGRhdGUoX2RvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgdGV4dE5vZGUgfSA9IHRoaXM7XG4gICAgICAgICAgICB0ZXh0Tm9kZS5ub2RlVmFsdWUgPSB2YWx1ZTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgSFRNTFVwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgc3RhdGljIGluc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICAgICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCB2YWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBIVE1MVXBzZXJ0KGJvdW5kcyk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1N0cmluZyh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKHBhcmVudEVsZW1lbnQsIG5leHRTaWJsaW5nLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIFNhZmVTdHJpbmdVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIGNvbnN0cnVjdG9yKGJvdW5kcywgbGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgIHN1cGVyKGJvdW5kcyk7XG4gICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gbGFzdFN0cmluZ1ZhbHVlO1xuICAgIH1cbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IGRvbS5pbnNlcnRIVE1MQmVmb3JlKGN1cnNvci5lbGVtZW50LCBzdHJpbmdWYWx1ZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBTYWZlU3RyaW5nVXBzZXJ0KGJvdW5kcywgc3RyaW5nVmFsdWUpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHN0cmluZ1ZhbHVlID0gdmFsdWUudG9IVE1MKCk7XG4gICAgICAgICAgICBpZiAoc3RyaW5nVmFsdWUgIT09IHRoaXMubGFzdFN0cmluZ1ZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICBsZXQgbmV4dFNpYmxpbmcgPSBjbGVhcihib3VuZHMpO1xuICAgICAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHN0cmluZ1ZhbHVlKTtcbiAgICAgICAgICAgICAgICB0aGlzLmxhc3RTdHJpbmdWYWx1ZSA9IHN0cmluZ1ZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBOb2RlVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCBub2RlKSB7XG4gICAgICAgIGRvbS5pbnNlcnRCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIG5vZGUsIGN1cnNvci5uZXh0U2libGluZyk7XG4gICAgICAgIHJldHVybiBuZXcgTm9kZVVwc2VydChzaW5nbGUoY3Vyc29yLmVsZW1lbnQsIG5vZGUpKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgICAgIGxldCB7IGJvdW5kcyB9ID0gdGhpcztcbiAgICAgICAgICAgIGxldCBwYXJlbnRFbGVtZW50ID0gYm91bmRzLnBhcmVudEVsZW1lbnQoKTtcbiAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICB0aGlzLmJvdW5kcyA9IGRvbS5pbnNlcnROb2RlQmVmb3JlKHBhcmVudEVsZW1lbnQsIHZhbHVlLCBuZXh0U2libGluZyk7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn0iXX0=
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91cHNlcnQuanMiXSwibmFtZXMiOlsidW5yZWFjaGFibGUiLCJjbGVhciIsInNpbmdsZSIsIlNpbmdsZU5vZGVCb3VuZHMiLCJpc1NhZmVTdHJpbmciLCJ2YWx1ZSIsInRvSFRNTCIsImlzTm9kZSIsIm5vZGVUeXBlIiwiaXNTdHJpbmciLCJVcHNlcnQiLCJib3VuZHMiLCJjYXV0aW91c0luc2VydCIsImRvbSIsImN1cnNvciIsIlRleHRVcHNlcnQiLCJpbnNlcnQiLCJTYWZlU3RyaW5nVXBzZXJ0IiwiTm9kZVVwc2VydCIsInRydXN0aW5nSW5zZXJ0IiwiSFRNTFVwc2VydCIsInRleHROb2RlIiwiY3JlYXRlVGV4dE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJlbGVtZW50IiwibmV4dFNpYmxpbmciLCJ1cGRhdGUiLCJfZG9tIiwibm9kZVZhbHVlIiwiaW5zZXJ0SFRNTEJlZm9yZSIsInBhcmVudEVsZW1lbnQiLCJsYXN0U3RyaW5nVmFsdWUiLCJzdHJpbmdWYWx1ZSIsIm5vZGUiLCJpbnNlcnROb2RlQmVmb3JlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLFNBQVNBLFdBQVQsUUFBNEIsZUFBNUI7QUFDQSxTQUFTQyxLQUFULEVBQWdCQyxNQUFoQixFQUF3QkMsZ0JBQXhCLFFBQWdELFVBQWhEO0FBQ0EsT0FBTyxTQUFTQyxZQUFULENBQXNCQyxLQUF0QixFQUE2QjtBQUNoQyxXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUMsTUFBYixLQUF3QixVQUE5RTtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxNQUFULENBQWdCRixLQUFoQixFQUF1QjtBQUMxQixXQUFPLE9BQU9BLEtBQVAsS0FBaUIsUUFBakIsSUFBNkJBLFVBQVUsSUFBdkMsSUFBK0MsT0FBT0EsTUFBTUcsUUFBYixLQUEwQixRQUFoRjtBQUNIO0FBQ0QsT0FBTyxTQUFTQyxRQUFULENBQWtCSixLQUFsQixFQUF5QjtBQUM1QixX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LG1CQUFPLElBQVA7QUFDSCxTQVZELE1BVU87QUFDSCxtQkFBTyxLQUFQO0FBQ0g7QUFDSixLOzs7RUF4QjBCdEIsTTs7SUEwQnpCUSxVOzs7Ozs7Ozs7ZUFDS0YsTSxtQkFBT0gsRyxFQUFLQyxNLEVBQVFtQixJLEVBQU07QUFDN0JwQixZQUFJVSxZQUFKLENBQWlCVCxPQUFPVSxPQUF4QixFQUFpQ1MsSUFBakMsRUFBdUNuQixPQUFPVyxXQUE5QztBQUNBLGVBQU8sSUFBSVAsVUFBSixDQUFlaEIsT0FBT1ksT0FBT1UsT0FBZCxFQUF1QlMsSUFBdkIsQ0FBZixDQUFQO0FBQ0gsSzs7eUJBQ0RQLE0sbUJBQU9iLEcsRUFBS1IsSyxFQUFPO0FBQ2YsWUFBSUUsT0FBT0YsS0FBUCxDQUFKLEVBQW1CO0FBQUEsZ0JBQ1RNLE1BRFMsR0FDRSxJQURGLENBQ1RBLE1BRFM7O0FBRWYsZ0JBQUltQixnQkFBZ0JuQixPQUFPbUIsYUFBUCxFQUFwQjtBQUNBLGdCQUFJTCxjQUFjeEIsTUFBTVUsTUFBTixDQUFsQjtBQUNBLGlCQUFLQSxNQUFMLEdBQWNFLElBQUlxQixnQkFBSixDQUFxQkosYUFBckIsRUFBb0N6QixLQUFwQyxFQUEyQ29CLFdBQTNDLENBQWQ7QUFDQSxtQkFBTyxJQUFQO0FBQ0gsU0FORCxNQU1PO0FBQ0gsbUJBQU8sS0FBUDtBQUNIO0FBQ0osSzs7O0VBZm9CZixNIiwiZmlsZSI6ImxpYi91cHNlcnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1bnJlYWNoYWJsZSB9IGZyb20gJ0BnbGltbWVyL3V0aWwnO1xuaW1wb3J0IHsgY2xlYXIsIHNpbmdsZSwgU2luZ2xlTm9kZUJvdW5kcyB9IGZyb20gJy4vYm91bmRzJztcbmV4cG9ydCBmdW5jdGlvbiBpc1NhZmVTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUudG9IVE1MID09PSAnZnVuY3Rpb24nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsICYmIHR5cGVvZiB2YWx1ZS5ub2RlVHlwZSA9PT0gJ251bWJlcic7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNTdHJpbmcodmFsdWUpIHtcbiAgICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJztcbn1cbmNsYXNzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzKSB7XG4gICAgICAgIHRoaXMuYm91bmRzID0gYm91bmRzO1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IFVwc2VydDtcbmV4cG9ydCBmdW5jdGlvbiBjYXV0aW91c0luc2VydChkb20sIGN1cnNvciwgdmFsdWUpIHtcbiAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgIHJldHVybiBUZXh0VXBzZXJ0Lmluc2VydChkb20sIGN1cnNvciwgdmFsdWUpO1xuICAgIH1cbiAgICBpZiAoaXNTYWZlU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gU2FmZVN0cmluZ1Vwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5leHBvcnQgZnVuY3Rpb24gdHJ1c3RpbmdJbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICByZXR1cm4gSFRNTFVwc2VydC5pbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKTtcbiAgICB9XG4gICAgaWYgKGlzTm9kZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0dXJuIE5vZGVVcHNlcnQuaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSk7XG4gICAgfVxuICAgIHRocm93IHVucmVhY2hhYmxlKCk7XG59XG5jbGFzcyBUZXh0VXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgdGV4dE5vZGUgPSBkb20uY3JlYXRlVGV4dE5vZGUodmFsdWUpO1xuICAgICAgICBkb20uaW5zZXJ0QmVmb3JlKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgbGV0IGJvdW5kcyA9IG5ldyBTaW5nbGVOb2RlQm91bmRzKGN1cnNvci5lbGVtZW50LCB0ZXh0Tm9kZSk7XG4gICAgICAgIHJldHVybiBuZXcgVGV4dFVwc2VydChib3VuZHMsIHRleHROb2RlKTtcbiAgICB9XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCB0ZXh0Tm9kZSkge1xuICAgICAgICBzdXBlcihib3VuZHMpO1xuICAgICAgICB0aGlzLnRleHROb2RlID0gdGV4dE5vZGU7XG4gICAgfVxuICAgIHVwZGF0ZShfZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgeyB0ZXh0Tm9kZSB9ID0gdGhpcztcbiAgICAgICAgICAgIHRleHROb2RlLm5vZGVWYWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9XG59XG5jbGFzcyBIVE1MVXBzZXJ0IGV4dGVuZHMgVXBzZXJ0IHtcbiAgICBzdGF0aWMgaW5zZXJ0KGRvbSwgY3Vyc29yLCB2YWx1ZSkge1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZywgdmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IEhUTUxVcHNlcnQoYm91bmRzKTtcbiAgICB9XG4gICAgdXBkYXRlKGRvbSwgdmFsdWUpIHtcbiAgICAgICAgaWYgKGlzU3RyaW5nKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUocGFyZW50RWxlbWVudCwgbmV4dFNpYmxpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgU2FmZVN0cmluZ1Vwc2VydCBleHRlbmRzIFVwc2VydCB7XG4gICAgY29uc3RydWN0b3IoYm91bmRzLCBsYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgc3VwZXIoYm91bmRzKTtcbiAgICAgICAgdGhpcy5sYXN0U3RyaW5nVmFsdWUgPSBsYXN0U3RyaW5nVmFsdWU7XG4gICAgfVxuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIHZhbHVlKSB7XG4gICAgICAgIGxldCBzdHJpbmdWYWx1ZSA9IHZhbHVlLnRvSFRNTCgpO1xuICAgICAgICBsZXQgYm91bmRzID0gZG9tLmluc2VydEhUTUxCZWZvcmUoY3Vyc29yLmVsZW1lbnQsIGN1cnNvci5uZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICByZXR1cm4gbmV3IFNhZmVTdHJpbmdVcHNlcnQoYm91bmRzLCBzdHJpbmdWYWx1ZSk7XG4gICAgfVxuICAgIHVwZGF0ZShkb20sIHZhbHVlKSB7XG4gICAgICAgIGlmIChpc1NhZmVTdHJpbmcodmFsdWUpKSB7XG4gICAgICAgICAgICBsZXQgc3RyaW5nVmFsdWUgPSB2YWx1ZS50b0hUTUwoKTtcbiAgICAgICAgICAgIGlmIChzdHJpbmdWYWx1ZSAhPT0gdGhpcy5sYXN0U3RyaW5nVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBsZXQgeyBib3VuZHMgfSA9IHRoaXM7XG4gICAgICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGxldCBuZXh0U2libGluZyA9IGNsZWFyKGJvdW5kcyk7XG4gICAgICAgICAgICAgICAgdGhpcy5ib3VuZHMgPSBkb20uaW5zZXJ0SFRNTEJlZm9yZShwYXJlbnRFbGVtZW50LCBuZXh0U2libGluZywgc3RyaW5nVmFsdWUpO1xuICAgICAgICAgICAgICAgIHRoaXMubGFzdFN0cmluZ1ZhbHVlID0gc3RyaW5nVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmNsYXNzIE5vZGVVcHNlcnQgZXh0ZW5kcyBVcHNlcnQge1xuICAgIHN0YXRpYyBpbnNlcnQoZG9tLCBjdXJzb3IsIG5vZGUpIHtcbiAgICAgICAgZG9tLmluc2VydEJlZm9yZShjdXJzb3IuZWxlbWVudCwgbm9kZSwgY3Vyc29yLm5leHRTaWJsaW5nKTtcbiAgICAgICAgcmV0dXJuIG5ldyBOb2RlVXBzZXJ0KHNpbmdsZShjdXJzb3IuZWxlbWVudCwgbm9kZSkpO1xuICAgIH1cbiAgICB1cGRhdGUoZG9tLCB2YWx1ZSkge1xuICAgICAgICBpZiAoaXNOb2RlKHZhbHVlKSkge1xuICAgICAgICAgICAgbGV0IHsgYm91bmRzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbGV0IHBhcmVudEVsZW1lbnQgPSBib3VuZHMucGFyZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgbGV0IG5leHRTaWJsaW5nID0gY2xlYXIoYm91bmRzKTtcbiAgICAgICAgICAgIHRoaXMuYm91bmRzID0gZG9tLmluc2VydE5vZGVCZWZvcmUocGFyZW50RWxlbWVudCwgdmFsdWUsIG5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgfVxufSJdfQ==

@@ -18,11 +18,12 @@ var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

Arguments.prototype.empty = function empty() {
this.setup(null, 0, true);
this.setup(null, true);
return this;
};
Arguments.prototype.setup = function setup(stack, positionalCount, synthetic) {
Arguments.prototype.setup = function setup(stack, synthetic) {
this.stack = stack;
var names = stack.fromTop(0);
var namedCount = names.length;
var start = positionalCount + namedCount + 1;
var positionalCount = stack.fromTop(namedCount + 1);
var start = positionalCount + namedCount + 2;
var positional = this.positional;

@@ -55,6 +56,3 @@ positional.setup(stack, start, positionalCount);

var pops = length + 1;
while (--pops >= 0) {
stack.pop();
}
stack.pop(length + 2);
};

@@ -337,2 +335,2 @@

export default new Arguments();
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJwb3NpdGlvbmFsQ291bnQiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3BzIiwicG9wIiwiX3RhZyIsIl9yZWZlcmVuY2VzIiwicG9zaXRpb24iLCJDYXB0dXJlZFBvc2l0aW9uYWxBcmd1bWVudHMiLCJyZWZlcmVuY2VzIiwiQXJyYXkiLCJpIiwidmFsdWUiLCJtYXAiLCJ2YWx1ZU9mIiwiY3JlYXRlIiwiaWR4IiwicGFyc2VJbnQiLCJyZWZlcmVuY2UiLCJfbmFtZXMiLCJfcmVhbE5hbWVzIiwiaGFzIiwiaW5kZXhPZiIsIkNhcHR1cmVkTmFtZWRBcmd1bWVudHMiLCJzbGljZU5hbWUiLCJzbGljZSIsIl9tYXAiLCJvdXQiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxJQUFULEVBQWVDLFdBQWYsUUFBa0MsZUFBbEM7QUFDQSxTQUFTQyxhQUFULFFBQThCLG9CQUE5QjtBQUNBLFNBQVNDLGtCQUFULEVBQTZCQyxtQkFBN0IsUUFBd0QsZUFBeEQ7QUFDQSxXQUFhQyxTQUFiO0FBQ0kseUJBQWM7QUFBQTs7QUFDVixhQUFLQyxLQUFMLEdBQWEsSUFBYjtBQUNBLGFBQUtDLFVBQUwsR0FBa0IsSUFBSUMsbUJBQUosRUFBbEI7QUFDQSxhQUFLQyxLQUFMLEdBQWEsSUFBSUMsY0FBSixFQUFiO0FBQ0g7O0FBTEwsd0JBTUlDLEtB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T3BDLG1CQUFQO0FBQ0gsU0FGRCxNQUVPO0FBQ0gsbUJBQU82QixXQUFXTyxHQUFYLENBQVA7QUFDSDtBQUNKLEs7O3FDQUNESixLLG9CQUFRO0FBQUEsWUFDRXJCLEtBREYsR0FDd0IsSUFEeEIsQ0FDRUEsS0FERjtBQUFBLFlBQ1NrQixVQURULEdBQ3dCLElBRHhCLENBQ1NBLFVBRFQ7O0FBRUosWUFBSWtCLE1BQU1uRCxNQUFWO0FBQ0EsYUFBSyxJQUFJbUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJcEIsTUFBTUcsTUFBMUIsRUFBa0NpQixHQUFsQyxFQUF1QztBQUNuQyxnQkFBSVosT0FBT1IsTUFBTW9CLENBQU4sQ0FBWDtBQUNBZ0IsZ0JBQUk1QixJQUFKLElBQVlVLFdBQVdFLENBQVgsRUFBY0MsS0FBZCxFQUFaO0FBQ0g7QUFDRCxlQUFPZSxHQUFQO0FBQ0gsSzs7Ozt5QkFoQ1M7QUFDTixnQkFBSWQsTUFBTSxLQUFLYSxJQUFmO0FBQ0EsZ0JBQUksQ0FBQ2IsR0FBTCxFQUFVO0FBQUEsb0JBQ0F0QixLQURBLEdBQ3NCLElBRHRCLENBQ0FBLEtBREE7QUFBQSxvQkFDT2tCLFVBRFAsR0FDc0IsSUFEdEIsQ0FDT0EsVUFEUDs7QUFFTkksc0JBQU0sS0FBS2EsSUFBTCxHQUFZbEQsTUFBbEI7QUFDQSxxQkFBSyxJQUFJbUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJcEIsTUFBTUcsTUFBMUIsRUFBa0NpQixHQUFsQyxFQUF1QztBQUNuQyx3QkFBSVosT0FBT1IsTUFBTW9CLENBQU4sQ0FBWDtBQUNBRSx3QkFBSWQsSUFBSixJQUFZVSxXQUFXRSxDQUFYLENBQVo7QUFDSDtBQUNKO0FBQ0QsbUJBQU9FLEdBQVA7QUFDSDs7Ozs7O0FBdUJMLGVBQWUsSUFBSWhDLFNBQUosRUFBZiIsImZpbGUiOiJsaWIvdm0vYXJndW1lbnRzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGljdCwgRU1QVFlfQVJSQVkgfSBmcm9tICdAZ2xpbW1lci91dGlsJztcbmltcG9ydCB7IGNvbWJpbmVUYWdnZWQgfSBmcm9tICdAZ2xpbW1lci9yZWZlcmVuY2UnO1xuaW1wb3J0IHsgUHJpbWl0aXZlUmVmZXJlbmNlLCBVTkRFRklORURfUkVGRVJFTkNFIH0gZnJvbSAnLi4vcmVmZXJlbmNlcyc7XG5leHBvcnQgY2xhc3MgQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMucG9zaXRpb25hbCA9IG5ldyBQb3NpdGlvbmFsQXJndW1lbnRzKCk7XG4gICAgICAgIHRoaXMubmFtZWQgPSBuZXcgTmFtZWRBcmd1bWVudHMoKTtcbiAgICB9XG4gICAgZW1wdHkoKSB7XG4gICAgICAgIHRoaXMuc2V0dXAobnVsbCwgMCwgdHJ1ZSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgcG9zaXRpb25hbENvdW50LCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICBsZXQgbmFtZXMgPSBzdGFjay5mcm9tVG9wKDApO1xuICAgICAgICBsZXQgbmFtZWRDb3VudCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgbGV0IHN0YXJ0ID0gcG9zaXRpb25hbENvdW50ICsgbmFtZWRDb3VudCArIDE7XG4gICAgICAgIGxldCBwb3NpdGlvbmFsID0gdGhpcy5wb3NpdGlvbmFsO1xuICAgICAgICBwb3NpdGlvbmFsLnNldHVwKHN0YWNrLCBzdGFydCwgcG9zaXRpb25hbENvdW50KTtcbiAgICAgICAgbGV0IG5hbWVkID0gdGhpcy5uYW1lZDtcbiAgICAgICAgbmFtZWQuc2V0dXAoc3RhY2ssIG5hbWVkQ291bnQsIG5hbWVzLCBzeW50aGV0aWMpO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICByZXR1cm4gY29tYmluZVRhZ2dlZChbdGhpcy5wb3NpdGlvbmFsLCB0aGlzLm5hbWVkXSk7XG4gICAgfVxuICAgIGdldCBsZW5ndGgoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBvc2l0aW9uYWwubGVuZ3RoICsgdGhpcy5uYW1lZC5sZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvcykge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmF0KHBvcyk7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVkLmdldChuYW1lKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRhZzogdGhpcy50YWcsXG4gICAgICAgICAgICBsZW5ndGg6IHRoaXMubGVuZ3RoLFxuICAgICAgICAgICAgcG9zaXRpb25hbDogdGhpcy5wb3NpdGlvbmFsLmNhcHR1cmUoKSxcbiAgICAgICAgICAgIG5hbWVkOiB0aGlzLm5hbWVkLmNhcHR1cmUoKVxuICAgICAgICB9O1xuICAgIH1cbiAgICBjbGVhcigpIHtcbiAgICAgICAgbGV0IHsgc3RhY2ssIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgbGV0IHBvcHMgPSBsZW5ndGggKyAxO1xuICAgICAgICB3aGlsZSAoLS1wb3BzID49IDApIHtcbiAgICAgICAgICAgIHN0YWNrLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuY2xhc3MgUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5zdGFjayA9IG51bGw7XG4gICAgICAgIHRoaXMuc3RhcnQgPSAwO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHN0YXJ0LCBsZW5ndGgpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLnN0YXJ0ID0gc3RhcnQ7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgbGV0IHRhZyA9IHRoaXMuX3RhZztcbiAgICAgICAgaWYgKCF0YWcpIHtcbiAgICAgICAgICAgIHRhZyA9IHRoaXMuX3RhZyA9IGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGFnO1xuICAgIH1cbiAgICBhdChwb3NpdGlvbikge1xuICAgICAgICBsZXQgeyBzdGFydCwgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAocG9zaXRpb24gPCAwIHx8IHBvc2l0aW9uID49IGxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3RhY2s6IHBvczEsIHBvczIsIHBvczMsIG5hbWVkMSwgbmFtZWQyXG4gICAgICAgIC8vIHN0YXJ0OiA0ICh0b3AgLSA0KVxuICAgICAgICAvL1xuICAgICAgICAvLyBhdCgwKSA9PT0gcG9zMSA9PT0gdG9wIC0gc3RhcnRcbiAgICAgICAgLy8gYXQoMSkgPT09IHBvczIgPT09IHRvcCAtIChzdGFydCAtIDEpXG4gICAgICAgIC8vIGF0KDIpID09PSBwb3MzID09PSB0b3AgLSAoc3RhcnQgLSAyKVxuICAgICAgICBsZXQgZnJvbVRvcCA9IHN0YXJ0IC0gcG9zaXRpb24gLSAxO1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcm9tVG9wKGZyb21Ub3ApO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyh0aGlzLnRhZywgdGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IHJlZmVyZW5jZXMoKSB7XG4gICAgICAgIGxldCByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcztcbiAgICAgICAgaWYgKCFyZWZlcmVuY2VzKSB7XG4gICAgICAgICAgICBsZXQgeyBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IG5ldyBBcnJheShsZW5ndGgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmF0KGkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZWZlcmVuY2VzO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IodGFnLCByZWZlcmVuY2VzLCBsZW5ndGggPSByZWZlcmVuY2VzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgfVxuICAgIGF0KHBvc2l0aW9uKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlZmVyZW5jZXNbcG9zaXRpb25dO1xuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlcy5tYXAodGhpcy52YWx1ZU9mKTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgcmVmZXJlbmNlcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBpZiAobmFtZSA9PT0gJ2xlbmd0aCcpIHtcbiAgICAgICAgICAgIHJldHVybiBQcmltaXRpdmVSZWZlcmVuY2UuY3JlYXRlKGxlbmd0aCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsZXQgaWR4ID0gcGFyc2VJbnQobmFtZSwgMTApO1xuICAgICAgICAgICAgaWYgKGlkeCA8IDAgfHwgaWR4ID49IGxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlT2YocmVmZXJlbmNlKSB7XG4gICAgICAgIHJldHVybiByZWZlcmVuY2UudmFsdWUoKTtcbiAgICB9XG59XG5jbGFzcyBOYW1lZEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gRU1QVFlfQVJSQVk7XG4gICAgfVxuICAgIHNldHVwKHN0YWNrLCBsZW5ndGgsIG5hbWVzLCBzeW50aGV0aWMpIHtcbiAgICAgICAgdGhpcy5zdGFjayA9IHN0YWNrO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICAgICAgdGhpcy5fdGFnID0gbnVsbDtcbiAgICAgICAgdGhpcy5fcmVmZXJlbmNlcyA9IG51bGw7XG4gICAgICAgIGlmIChzeW50aGV0aWMpIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbmFtZXM7XG4gICAgICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuX25hbWVzID0gbnVsbDtcbiAgICAgICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IG5hbWVzO1xuICAgICAgICB9XG4gICAgfVxuICAgIGdldCB0YWcoKSB7XG4gICAgICAgIHJldHVybiBjb21iaW5lVGFnZ2VkKHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCBuYW1lcygpIHtcbiAgICAgICAgbGV0IG5hbWVzID0gdGhpcy5fbmFtZXM7XG4gICAgICAgIGlmICghbmFtZXMpIHtcbiAgICAgICAgICAgIG5hbWVzID0gdGhpcy5fbmFtZXMgPSB0aGlzLl9yZWFsTmFtZXMubWFwKHRoaXMuc2xpY2VOYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmFtZXM7XG4gICAgfVxuICAgIGhhcyhuYW1lKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm5hbWVzLmluZGV4T2YobmFtZSkgIT09IC0xO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyBuYW1lcywgbGVuZ3RoIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9XG4gICAgICAgIC8vIHN0YWNrOiBwb3MxLCBwb3MyLCBwb3MzLCBuYW1lZDEsIG5hbWVkMlxuICAgICAgICAvLyBzdGFydDogNCAodG9wIC0gNClcbiAgICAgICAgLy8gbmFtZWREaWN0OiB7IG5hbWVkMTogMSwgbmFtZWQyOiAwIH07XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGdldCgnbmFtZWQxJykgPT09IG5hbWVkMSA9PT0gdG9wIC0gKHN0YXJ0IC0gMSlcbiAgICAgICAgLy8gZ2V0KCduYW1lZDInKSA9PT0gbmFtZWQyID09PSB0b3AgLSBzdGFydFxuICAgICAgICBsZXQgZnJvbVRvcCA9IGxlbmd0aCAtIGlkeDtcbiAgICAgICAgcmV0dXJuIHRoaXMuc3RhY2suZnJvbVRvcChmcm9tVG9wKTtcbiAgICB9XG4gICAgY2FwdHVyZSgpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDYXB0dXJlZE5hbWVkQXJndW1lbnRzKHRoaXMudGFnLCB0aGlzLm5hbWVzLCB0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgICAgICByZWZlcmVuY2VzID0gdGhpcy5fcmVmZXJlbmNlcyA9IFtdO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaV0gPSB0aGlzLmdldChuYW1lc1tpXSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gICAgfVxuICAgIHNsaWNlTmFtZShuYW1lKSB7XG4gICAgICAgIHJldHVybiBuYW1lLnNsaWNlKDEpO1xuICAgIH1cbn1cbmNsYXNzIENhcHR1cmVkTmFtZWRBcmd1bWVudHMge1xuICAgIGNvbnN0cnVjdG9yKHRhZywgbmFtZXMsIHJlZmVyZW5jZXMpIHtcbiAgICAgICAgdGhpcy50YWcgPSB0YWc7XG4gICAgICAgIHRoaXMubmFtZXMgPSBuYW1lcztcbiAgICAgICAgdGhpcy5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcztcbiAgICAgICAgdGhpcy5sZW5ndGggPSBuYW1lcy5sZW5ndGg7XG4gICAgICAgIHRoaXMuX21hcCA9IG51bGw7XG4gICAgfVxuICAgIGdldCBtYXAoKSB7XG4gICAgICAgIGxldCBtYXAgPSB0aGlzLl9tYXA7XG4gICAgICAgIGlmICghbWFwKSB7XG4gICAgICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgICAgIG1hcCA9IHRoaXMuX21hcCA9IGRpY3QoKTtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBsZXQgbmFtZSA9IG5hbWVzW2ldO1xuICAgICAgICAgICAgICAgIG1hcFtuYW1lXSA9IHJlZmVyZW5jZXNbaV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1hcDtcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICBsZXQgaWR4ID0gbmFtZXMuaW5kZXhPZihuYW1lKTtcbiAgICAgICAgaWYgKGlkeCA9PT0gLTEpIHtcbiAgICAgICAgICAgIHJldHVybiBVTkRFRklORURfUkVGRVJFTkNFO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXNbaWR4XTtcbiAgICAgICAgfVxuICAgIH1cbiAgICB2YWx1ZSgpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBvdXQgPSBkaWN0KCk7XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbmFtZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICAgICAgICBvdXRbbmFtZV0gPSByZWZlcmVuY2VzW2ldLnZhbHVlKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG91dDtcbiAgICB9XG59XG5leHBvcnQgZGVmYXVsdCBuZXcgQXJndW1lbnRzKCk7Il19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi92bS9hcmd1bWVudHMuanMiXSwibmFtZXMiOlsiZGljdCIsIkVNUFRZX0FSUkFZIiwiY29tYmluZVRhZ2dlZCIsIlByaW1pdGl2ZVJlZmVyZW5jZSIsIlVOREVGSU5FRF9SRUZFUkVOQ0UiLCJBcmd1bWVudHMiLCJzdGFjayIsInBvc2l0aW9uYWwiLCJQb3NpdGlvbmFsQXJndW1lbnRzIiwibmFtZWQiLCJOYW1lZEFyZ3VtZW50cyIsImVtcHR5Iiwic2V0dXAiLCJzeW50aGV0aWMiLCJuYW1lcyIsImZyb21Ub3AiLCJuYW1lZENvdW50IiwibGVuZ3RoIiwicG9zaXRpb25hbENvdW50Iiwic3RhcnQiLCJhdCIsInBvcyIsImdldCIsIm5hbWUiLCJjYXB0dXJlIiwidGFnIiwiY2xlYXIiLCJwb3AiLCJfdGFnIiwiX3JlZmVyZW5jZXMiLCJwb3NpdGlvbiIsIkNhcHR1cmVkUG9zaXRpb25hbEFyZ3VtZW50cyIsInJlZmVyZW5jZXMiLCJBcnJheSIsImkiLCJ2YWx1ZSIsIm1hcCIsInZhbHVlT2YiLCJjcmVhdGUiLCJpZHgiLCJwYXJzZUludCIsInJlZmVyZW5jZSIsIl9uYW1lcyIsIl9yZWFsTmFtZXMiLCJoYXMiLCJpbmRleE9mIiwiQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyIsInNsaWNlTmFtZSIsInNsaWNlIiwiX21hcCIsIm91dCJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLElBQVQsRUFBZUMsV0FBZixRQUFrQyxlQUFsQztBQUNBLFNBQVNDLGFBQVQsUUFBOEIsb0JBQTlCO0FBQ0EsU0FBU0Msa0JBQVQsRUFBNkJDLG1CQUE3QixRQUF3RCxlQUF4RDtBQUNBLFdBQWFDLFNBQWI7QUFDSSx5QkFBYztBQUFBOztBQUNWLGFBQUtDLEtBQUwsR0FBYSxJQUFiO0FBQ0EsYUFBS0MsVUFBTCxHQUFrQixJQUFJQyxtQkFBSixFQUFsQjtBQUNBLGFBQUtDLEtBQUwsR0FBYSxJQUFJQyxjQUFKLEVBQWI7QUFDSDs7QUFMTCx3QkFNSUMsS0FOSixvQkFN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V0FBV08sR0FBWCxDQUFQO0FBQ0g7QUFDSixLOztxQ0FDREosSyxvQkFBUTtBQUFBLFlBQ0VyQixLQURGLEdBQ3dCLElBRHhCLENBQ0VBLEtBREY7QUFBQSxZQUNTa0IsVUFEVCxHQUN3QixJQUR4QixDQUNTQSxVQURUOztBQUVKLFlBQUlrQixNQUFNbEQsTUFBVjtBQUNBLGFBQUssSUFBSWtDLElBQUksQ0FBYixFQUFnQkEsSUFBSXBCLE1BQU1HLE1BQTFCLEVBQWtDaUIsR0FBbEMsRUFBdUM7QUFDbkMsZ0JBQUlYLE9BQU9ULE1BQU1vQixDQUFOLENBQVg7QUFDQWdCLGdCQUFJM0IsSUFBSixJQUFZUyxXQUFXRSxDQUFYLEVBQWNDLEtBQWQsRUFBWjtBQUNIO0FBQ0QsZUFBT2UsR0FBUDtBQUNILEs7Ozs7eUJBaENTO0FBQ04sZ0JBQUlkLE1BQU0sS0FBS2EsSUFBZjtBQUNBLGdCQUFJLENBQUNiLEdBQUwsRUFBVTtBQUFBLG9CQUNBdEIsS0FEQSxHQUNzQixJQUR0QixDQUNBQSxLQURBO0FBQUEsb0JBQ09rQixVQURQLEdBQ3NCLElBRHRCLENBQ09BLFVBRFA7O0FBRU5JLHNCQUFNLEtBQUthLElBQUwsR0FBWWpELE1BQWxCO0FBQ0EscUJBQUssSUFBSWtDLElBQUksQ0FBYixFQUFnQkEsSUFBSXBCLE1BQU1HLE1BQTFCLEVBQWtDaUIsR0FBbEMsRUFBdUM7QUFDbkMsd0JBQUlYLE9BQU9ULE1BQU1vQixDQUFOLENBQVg7QUFDQUUsd0JBQUliLElBQUosSUFBWVMsV0FBV0UsQ0FBWCxDQUFaO0FBQ0g7QUFDSjtBQUNELG1CQUFPRSxHQUFQO0FBQ0g7Ozs7OztBQXVCTCxlQUFlLElBQUkvQixTQUFKLEVBQWYiLCJmaWxlIjoibGliL3ZtL2FyZ3VtZW50cy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGRpY3QsIEVNUFRZX0FSUkFZIH0gZnJvbSAnQGdsaW1tZXIvdXRpbCc7XG5pbXBvcnQgeyBjb21iaW5lVGFnZ2VkIH0gZnJvbSAnQGdsaW1tZXIvcmVmZXJlbmNlJztcbmltcG9ydCB7IFByaW1pdGl2ZVJlZmVyZW5jZSwgVU5ERUZJTkVEX1JFRkVSRU5DRSB9IGZyb20gJy4uL3JlZmVyZW5jZXMnO1xuZXhwb3J0IGNsYXNzIEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuc3RhY2sgPSBudWxsO1xuICAgICAgICB0aGlzLnBvc2l0aW9uYWwgPSBuZXcgUG9zaXRpb25hbEFyZ3VtZW50cygpO1xuICAgICAgICB0aGlzLm5hbWVkID0gbmV3IE5hbWVkQXJndW1lbnRzKCk7XG4gICAgfVxuICAgIGVtcHR5KCkge1xuICAgICAgICB0aGlzLnNldHVwKG51bGwsIHRydWUpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIHN5bnRoZXRpYykge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIGxldCBuYW1lcyA9IHN0YWNrLmZyb21Ub3AoMCk7XG4gICAgICAgIGxldCBuYW1lZENvdW50ID0gbmFtZXMubGVuZ3RoO1xuICAgICAgICBsZXQgcG9zaXRpb25hbENvdW50ID0gc3RhY2suZnJvbVRvcChuYW1lZENvdW50ICsgMSk7XG4gICAgICAgIGxldCBzdGFydCA9IHBvc2l0aW9uYWxDb3VudCArIG5hbWVkQ291bnQgKyAyO1xuICAgICAgICBsZXQgcG9zaXRpb25hbCA9IHRoaXMucG9zaXRpb25hbDtcbiAgICAgICAgcG9zaXRpb25hbC5zZXR1cChzdGFjaywgc3RhcnQsIHBvc2l0aW9uYWxDb3VudCk7XG4gICAgICAgIGxldCBuYW1lZCA9IHRoaXMubmFtZWQ7XG4gICAgICAgIG5hbWVkLnNldHVwKHN0YWNrLCBuYW1lZENvdW50LCBuYW1lcywgc3ludGhldGljKTtcbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQoW3RoaXMucG9zaXRpb25hbCwgdGhpcy5uYW1lZF0pO1xuICAgIH1cbiAgICBnZXQgbGVuZ3RoKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5wb3NpdGlvbmFsLmxlbmd0aCArIHRoaXMubmFtZWQubGVuZ3RoO1xuICAgIH1cbiAgICBhdChwb3MpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucG9zaXRpb25hbC5hdChwb3MpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lZC5nZXQobmFtZSk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICAgICAgbGVuZ3RoOiB0aGlzLmxlbmd0aCxcbiAgICAgICAgICAgIHBvc2l0aW9uYWw6IHRoaXMucG9zaXRpb25hbC5jYXB0dXJlKCksXG4gICAgICAgICAgICBuYW1lZDogdGhpcy5uYW1lZC5jYXB0dXJlKClcbiAgICAgICAgfTtcbiAgICB9XG4gICAgY2xlYXIoKSB7XG4gICAgICAgIGxldCB7IHN0YWNrLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIHN0YWNrLnBvcChsZW5ndGggKyAyKTtcbiAgICB9XG59XG5jbGFzcyBQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLnN0YWNrID0gbnVsbDtcbiAgICAgICAgdGhpcy5zdGFydCA9IDA7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgICBzZXR1cChzdGFjaywgc3RhcnQsIGxlbmd0aCkge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMuc3RhcnQgPSBzdGFydDtcbiAgICAgICAgdGhpcy5sZW5ndGggPSBsZW5ndGg7XG4gICAgICAgIHRoaXMuX3RhZyA9IG51bGw7XG4gICAgICAgIHRoaXMuX3JlZmVyZW5jZXMgPSBudWxsO1xuICAgIH1cbiAgICBnZXQgdGFnKCkge1xuICAgICAgICBsZXQgdGFnID0gdGhpcy5fdGFnO1xuICAgICAgICBpZiAoIXRhZykge1xuICAgICAgICAgICAgdGFnID0gdGhpcy5fdGFnID0gY29tYmluZVRhZ2dlZCh0aGlzLnJlZmVyZW5jZXMpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0YWc7XG4gICAgfVxuICAgIGF0KHBvc2l0aW9uKSB7XG4gICAgICAgIGxldCB7IHN0YXJ0LCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDAgfHwgcG9zaXRpb24gPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gVU5ERUZJTkVEX1JFRkVSRU5DRTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzdGFjazogcG9zMSwgcG9zMiwgcG9zMywgbmFtZWQxLCBuYW1lZDJcbiAgICAgICAgLy8gc3RhcnQ6IDQgKHRvcCAtIDQpXG4gICAgICAgIC8vXG4gICAgICAgIC8vIGF0KDApID09PSBwb3MxID09PSB0b3AgLSBzdGFydFxuICAgICAgICAvLyBhdCgxKSA9PT0gcG9zMiA9PT0gdG9wIC0gKHN0YXJ0IC0gMSlcbiAgICAgICAgLy8gYXQoMikgPT09IHBvczMgPT09IHRvcCAtIChzdGFydCAtIDIpXG4gICAgICAgIGxldCBmcm9tVG9wID0gc3RhcnQgLSBwb3NpdGlvbiAtIDE7XG4gICAgICAgIHJldHVybiB0aGlzLnN0YWNrLmZyb21Ub3AoZnJvbVRvcCk7XG4gICAgfVxuICAgIGNhcHR1cmUoKSB7XG4gICAgICAgIHJldHVybiBuZXcgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzKHRoaXMudGFnLCB0aGlzLnJlZmVyZW5jZXMpO1xuICAgIH1cbiAgICBnZXQgcmVmZXJlbmNlcygpIHtcbiAgICAgICAgbGV0IHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzO1xuICAgICAgICBpZiAoIXJlZmVyZW5jZXMpIHtcbiAgICAgICAgICAgIGxldCB7IGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgICAgIHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzID0gbmV3IEFycmF5KGxlbmd0aCk7XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlc1tpXSA9IHRoaXMuYXQoaSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZXM7XG4gICAgfVxufVxuY2xhc3MgQ2FwdHVyZWRQb3NpdGlvbmFsQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3Rvcih0YWcsIHJlZmVyZW5jZXMsIGxlbmd0aCA9IHJlZmVyZW5jZXMubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMudGFnID0gdGFnO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IGxlbmd0aDtcbiAgICB9XG4gICAgYXQocG9zaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucmVmZXJlbmNlc1twb3NpdGlvbl07XG4gICAgfVxuICAgIHZhbHVlKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5yZWZlcmVuY2VzLm1hcCh0aGlzLnZhbHVlT2YpO1xuICAgIH1cbiAgICBnZXQobmFtZSkge1xuICAgICAgICBsZXQgeyByZWZlcmVuY2VzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGlmIChuYW1lID09PSAnbGVuZ3RoJykge1xuICAgICAgICAgICAgcmV0dXJuIFByaW1pdGl2ZVJlZmVyZW5jZS5jcmVhdGUobGVuZ3RoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBpZHggPSBwYXJzZUludChuYW1lLCAxMCk7XG4gICAgICAgICAgICBpZiAoaWR4IDwgMCB8fCBpZHggPj0gbGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiByZWZlcmVuY2VzW2lkeF07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgdmFsdWVPZihyZWZlcmVuY2UpIHtcbiAgICAgICAgcmV0dXJuIHJlZmVyZW5jZS52YWx1ZSgpO1xuICAgIH1cbn1cbmNsYXNzIE5hbWVkQXJndW1lbnRzIHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5sZW5ndGggPSAwO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWFsTmFtZXMgPSBFTVBUWV9BUlJBWTtcbiAgICB9XG4gICAgc2V0dXAoc3RhY2ssIGxlbmd0aCwgbmFtZXMsIHN5bnRoZXRpYykge1xuICAgICAgICB0aGlzLnN0YWNrID0gc3RhY2s7XG4gICAgICAgIHRoaXMubGVuZ3RoID0gbGVuZ3RoO1xuICAgICAgICB0aGlzLl90YWcgPSBudWxsO1xuICAgICAgICB0aGlzLl9yZWZlcmVuY2VzID0gbnVsbDtcbiAgICAgICAgaWYgKHN5bnRoZXRpYykge1xuICAgICAgICAgICAgdGhpcy5fbmFtZXMgPSBuYW1lcztcbiAgICAgICAgICAgIHRoaXMuX3JlYWxOYW1lcyA9IEVNUFRZX0FSUkFZO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5fbmFtZXMgPSBudWxsO1xuICAgICAgICAgICAgdGhpcy5fcmVhbE5hbWVzID0gbmFtZXM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZ2V0IHRhZygpIHtcbiAgICAgICAgcmV0dXJuIGNvbWJpbmVUYWdnZWQodGhpcy5yZWZlcmVuY2VzKTtcbiAgICB9XG4gICAgZ2V0IG5hbWVzKCkge1xuICAgICAgICBsZXQgbmFtZXMgPSB0aGlzLl9uYW1lcztcbiAgICAgICAgaWYgKCFuYW1lcykge1xuICAgICAgICAgICAgbmFtZXMgPSB0aGlzLl9uYW1lcyA9IHRoaXMuX3JlYWxOYW1lcy5tYXAodGhpcy5zbGljZU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuYW1lcztcbiAgICB9XG4gICAgaGFzKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMubmFtZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG4gICAgfVxuICAgIGdldChuYW1lKSB7XG4gICAgICAgIGxldCB7IG5hbWVzLCBsZW5ndGggfSA9IHRoaXM7XG4gICAgICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gc3RhY2s6IHBvczEsIHBvczIsIHBvczMsIG5hbWVkMSwgbmFtZWQyXG4gICAgICAgIC8vIHN0YXJ0OiA0ICh0b3AgLSA0KVxuICAgICAgICAvLyBuYW1lZERpY3Q6IHsgbmFtZWQxOiAxLCBuYW1lZDI6IDAgfTtcbiAgICAgICAgLy9cbiAgICAgICAgLy8gZ2V0KCduYW1lZDEnKSA9PT0gbmFtZWQxID09PSB0b3AgLSAoc3RhcnQgLSAxKVxuICAgICAgICAvLyBnZXQoJ25hbWVkMicpID09PSBuYW1lZDIgPT09IHRvcCAtIHN0YXJ0XG4gICAgICAgIGxldCBmcm9tVG9wID0gbGVuZ3RoIC0gaWR4O1xuICAgICAgICByZXR1cm4gdGhpcy5zdGFjay5mcm9tVG9wKGZyb21Ub3ApO1xuICAgIH1cbiAgICBjYXB0dXJlKCkge1xuICAgICAgICByZXR1cm4gbmV3IENhcHR1cmVkTmFtZWRBcmd1bWVudHModGhpcy50YWcsIHRoaXMubmFtZXMsIHRoaXMucmVmZXJlbmNlcyk7XG4gICAgfVxuICAgIGdldCByZWZlcmVuY2VzKCkge1xuICAgICAgICBsZXQgcmVmZXJlbmNlcyA9IHRoaXMuX3JlZmVyZW5jZXM7XG4gICAgICAgIGlmICghcmVmZXJlbmNlcykge1xuICAgICAgICAgICAgbGV0IHsgbmFtZXMsIGxlbmd0aCB9ID0gdGhpcztcbiAgICAgICAgICAgIHJlZmVyZW5jZXMgPSB0aGlzLl9yZWZlcmVuY2VzID0gW107XG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgcmVmZXJlbmNlc1tpXSA9IHRoaXMuZ2V0KG5hbWVzW2ldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVmZXJlbmNlcztcbiAgICB9XG4gICAgc2xpY2VOYW1lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIG5hbWUuc2xpY2UoMSk7XG4gICAgfVxufVxuY2xhc3MgQ2FwdHVyZWROYW1lZEFyZ3VtZW50cyB7XG4gICAgY29uc3RydWN0b3IodGFnLCBuYW1lcywgcmVmZXJlbmNlcykge1xuICAgICAgICB0aGlzLnRhZyA9IHRhZztcbiAgICAgICAgdGhpcy5uYW1lcyA9IG5hbWVzO1xuICAgICAgICB0aGlzLnJlZmVyZW5jZXMgPSByZWZlcmVuY2VzO1xuICAgICAgICB0aGlzLmxlbmd0aCA9IG5hbWVzLmxlbmd0aDtcbiAgICAgICAgdGhpcy5fbWFwID0gbnVsbDtcbiAgICB9XG4gICAgZ2V0IG1hcCgpIHtcbiAgICAgICAgbGV0IG1hcCA9IHRoaXMuX21hcDtcbiAgICAgICAgaWYgKCFtYXApIHtcbiAgICAgICAgICAgIGxldCB7IG5hbWVzLCByZWZlcmVuY2VzIH0gPSB0aGlzO1xuICAgICAgICAgICAgbWFwID0gdGhpcy5fbWFwID0gZGljdCgpO1xuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIGxldCBuYW1lID0gbmFtZXNbaV07XG4gICAgICAgICAgICAgICAgbWFwW25hbWVdID0gcmVmZXJlbmNlc1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWFwO1xuICAgIH1cbiAgICBoYXMobmFtZSkge1xuICAgICAgICByZXR1cm4gdGhpcy5uYW1lcy5pbmRleE9mKG5hbWUpICE9PSAtMTtcbiAgICB9XG4gICAgZ2V0KG5hbWUpIHtcbiAgICAgICAgbGV0IHsgbmFtZXMsIHJlZmVyZW5jZXMgfSA9IHRoaXM7XG4gICAgICAgIGxldCBpZHggPSBuYW1lcy5pbmRleE9mKG5hbWUpO1xuICAgICAgICBpZiAoaWR4ID09PSAtMSkge1xuICAgICAgICAgICAgcmV0dXJuIFVOREVGSU5FRF9SRUZFUkVOQ0U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gcmVmZXJlbmNlc1tpZHhdO1xuICAgICAgICB9XG4gICAgfVxuICAgIHZhbHVlKCkge1xuICAgICAgICBsZXQgeyBuYW1lcywgcmVmZXJlbmNlcyB9ID0gdGhpcztcbiAgICAgICAgbGV0IG91dCA9IGRpY3QoKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBuYW1lcy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGV0IG5hbWUgPSBuYW1lc1tpXTtcbiAgICAgICAgICAgIG91dFtuYW1lXSA9IHJlZmVyZW5jZXNbaV0udmFsdWUoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gb3V0O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IG5ldyBBcmd1bWVudHMoKTsiXX0=

@@ -35,3 +35,3 @@ import { CompilationMeta, Opaque, Option, SymbolTable } from '@glimmer/interfaces';

finalize(): number;
pushArgs(positional: number, synthetic: boolean): void;
pushArgs(synthetic: boolean): void;
private readonly labels;

@@ -125,5 +125,5 @@ startLabels(): void;

guardedAppend(expression: WireFormat.Expression, trusting: boolean): void;
invokeComponent(attrs: Option<RawInlineBlock>, params: Option<WireFormat.Core.Params>, hash: Option<WireFormat.Core.Hash>, block: Option<Block>, inverse?: Option<Block>): void;
invokeComponent(attrs: Option<RawInlineBlock>, params: Option<WireFormat.Core.Params>, hash: Option<WireFormat.Core.Hash>, block?: Option<Block>, inverse?: Option<Block>): void;
template(block: Option<WireFormat.SerializedInlineBlock>): Option<RawInlineBlock>;
}
export declare type BlockCallback = (dsl: OpcodeBuilder, BEGIN: Label, END: Label) => void;

@@ -8,2 +8,12 @@ import { Bounds } from '../bounds';

export declare function moveNodesBefore(source: Simple.Node, target: Simple.Element, nextSibling: Simple.Node): any[];
export declare class DOMOperations {
protected document: Document;
protected uselessElement: HTMLElement;
constructor(document: Document);
createElement(tag: string, context?: Simple.Element): Simple.Element;
insertBefore(parent: Element, node: Node, reference: Option<Node>): void;
insertHTMLBefore(_parent: Element, nextSibling: Node, html: string): Bounds;
createTextNode(text: string): Text;
createComment(data: string): Simple.Comment;
}
export declare namespace DOM {

@@ -17,14 +27,5 @@ type Node = Simple.Node;

type HTMLElement = Simple.HTMLElement;
class TreeConstruction {
protected document: Document;
protected uselessElement: HTMLElement;
constructor(document: Document);
protected setupUselessElement(): void;
createElement(tag: string, context?: Element): Element;
class TreeConstruction extends DOMOperations {
createElementNS(namespace: Namespace, tag: string): Element;
setAttribute(element: Element, name: string, value: string, namespace?: string): void;
createTextNode(text: string): Text;
createComment(data: string): Comment;
insertBefore(parent: Element, node: Node, reference: Option<Node>): void;
insertHTMLBefore(parent: Element, html: string, reference: Option<Node>): Bounds;
}

@@ -34,6 +35,5 @@ const DOMTreeConstruction: typeof TreeConstruction;

}
export declare class DOMChanges {
export declare class DOMChanges extends DOMOperations {
protected document: HTMLDocument;
protected namespace: Option<string>;
private uselessElement;
constructor(document: HTMLDocument);

@@ -44,6 +44,2 @@ setAttribute(element: Simple.Element, name: string, value: string): void;

removeAttributeNS(element: Simple.Element, namespace: string, name: string): void;
createTextNode(text: string): Simple.Text;
createComment(data: string): Simple.Comment;
createElement(tag: string, context?: Simple.Element): Simple.Element;
insertHTMLBefore(_parent: Element, nextSibling: Node, html: string): Bounds;
insertNodeBefore(parent: Simple.Element, node: Simple.Node, reference: Simple.Node): Bounds;

@@ -50,0 +46,0 @@ insertTextBefore(parent: Simple.Element, nextSibling: Simple.Node, text: string): Simple.Text;

@@ -633,7 +633,7 @@ import { Option, Dict, Slice as ListSlice } from '@glimmer/util';

* Format:
* (PushArgs positional:u32 synthetic:boolean)
* (PushArgs synthetic:boolean)
*
* Operand Stack:
* ..., [VersionedPathReference ...], #Array<string> →
* ..., [VersionedPathReference ...], #Array<string>, Arguments
* ..., [VersionedPathReference ...], number, [VersionedPathReference ...], #Array<string> →
* ..., [VersionedPathReference ...], number, [VersionedPathReference ...], #Array<string>, Arguments
*

@@ -640,0 +640,0 @@ * Description:

@@ -55,3 +55,3 @@ import { EvaluationStack } from './append';

empty(): this;
setup(stack: EvaluationStack, positionalCount: number, synthetic: boolean): void;
setup(stack: EvaluationStack, synthetic: boolean): void;
readonly tag: Tag;

@@ -58,0 +58,0 @@ readonly length: number;

{
"name": "@glimmer/runtime",
"version": "0.24.0-alpha.1",
"version": "0.24.0-alpha.2",
"description": "Minimal runtime needed to render Glimmer templates",

@@ -8,8 +8,8 @@ "repository": "https://github.com/glimmerjs/glimmer-vm/tree/master/packages/@glimmer/runtime",

"dependencies": {
"@glimmer/util": "^0.24.0-alpha.1",
"@glimmer/reference": "^0.24.0-alpha.1",
"@glimmer/object": "^0.24.0-alpha.1",
"@glimmer/object-reference": "^0.24.0-alpha.1",
"@glimmer/wire-format": "^0.24.0-alpha.1",
"@glimmer/interfaces": "^0.24.0-alpha.1"
"@glimmer/util": "^0.24.0-alpha.2",
"@glimmer/reference": "^0.24.0-alpha.2",
"@glimmer/object": "^0.24.0-alpha.2",
"@glimmer/object-reference": "^0.24.0-alpha.2",
"@glimmer/wire-format": "^0.24.0-alpha.2",
"@glimmer/interfaces": "^0.24.0-alpha.2"
},

@@ -16,0 +16,0 @@ "devDependencies": {

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

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

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

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

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