New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@economist/component-blog-post

Package Overview
Dependencies
Maintainers
1
Versions
66
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@economist/component-blog-post - npm Package Compare versions

Comparing version 1.23.1 to 1.23.2

53

lib/index.js

@@ -182,2 +182,24 @@ 'use strict';

BlogPost.prototype.filterBlogPostTextElements = function filterBlogPostTextElements(content) {
var innerContentElements = content.filter(function (contentElement) {
var innerContent = contentElement.key === 'inner-content';
return innerContent;
})[0].props.children;
var blogPostTextElements = innerContentElements.filter(function (contentElement) {
var blogPostText = contentElement.key === 'blog-post__text';
return blogPostText;
})[0].props.text;
return blogPostTextElements;
};
BlogPost.prototype.moveBottomMobileAd = function moveBottomMobileAd(content) {
var blogPostText = this.filterBlogPostTextElements(content);
var numberOfParagraphs = blogPostText.length;
var mobileAd = blogPostText[numberOfParagraphs - 1];
if (mobileAd) {
blogPostText.pop();
content.push(mobileAd);
}
};
BlogPost.prototype.addSiblingsList = function addSiblingsList(siblingListProps) {

@@ -191,3 +213,4 @@ var showSiblingArticlesList = siblingListProps.showSiblingArticlesList,

articleListPosition = siblingListProps.articleListPosition,
nextArticleLink = siblingListProps.nextArticleLink;
nextArticleLink = siblingListProps.nextArticleLink,
printEdition = siblingListProps.printEdition;

@@ -209,10 +232,6 @@ var siblingArticles = showSiblingArticlesList && issueSiblingsList ? issueSiblingsList : null;

var siblingArticlesList = showSiblingArticlesList ? (0, _blogPostSiblingsList.siblingList)(siblingListData) : null;
var innerContentElements = showSiblingArticlesList || articleFootNote ? content.filter(function (contentElement) {
var innerContent = contentElement.key === 'inner-content';
return innerContent;
})[0].props.children : null;
var blogPostTextElements = showSiblingArticlesList || articleFootNote ? innerContentElements.filter(function (contentElement) {
var blogPostText = contentElement.key === 'blog-post__text';
return blogPostText;
})[0].props.text : null;
var blogPostTextElements = null;
if (showSiblingArticlesList || articleFootNote) {
blogPostTextElements = this.filterBlogPostTextElements(content);
}
if (showSiblingArticlesList && (blogPostTextElements || content && nextArticleLink)) {

@@ -222,4 +241,4 @@ blogPostTextElements.splice(articleListPosition, 0, siblingArticlesList);

}
if (articleFootNote) {
blogPostTextElements.splice(blogPostTextElements.length - 1, 0, articleFootNote);
if (articleFootNote && printEdition) {
blogPostTextElements.push(articleFootNote);
}

@@ -263,3 +282,4 @@ };

articleListPosition = _props2.articleListPosition,
nextArticleLink = _props2.nextArticleLink;
nextArticleLink = _props2.nextArticleLink,
printEdition = _props2.printEdition;

@@ -326,2 +346,3 @@ var siblingsListTitle = this.props.sectionName;

));
this.moveBottomMobileAd(content);

@@ -342,3 +363,4 @@ var TitleComponent = this.props.TitleComponent;

articleListPosition: articleListPosition,
nextArticleLink: nextArticleLink
nextArticleLink: nextArticleLink,
printEdition: printEdition
};

@@ -411,3 +433,4 @@ this.addSiblingsList(siblingListProps);

classNameModifier: _react2.default.PropTypes.string,
siblingListSideTitle: _react2.default.PropTypes.string
siblingListSideTitle: _react2.default.PropTypes.string,
printEdition: _react2.default.PropTypes.bool
};

@@ -459,2 +482,2 @@ }

exports.default = BlogPost;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZUJsb2dQb3N0Rmx5VGl0bGUiLCJ0d29EaWdpdHMiLCJpbnQiLCJzaG93U2libGluZ0FydGljbGVzTGlzdCIsInNpYmxpbmdMaXN0VGl0bGUiLCJmbHlUaXRsZSIsImJsb2dGbHlUaXRsZSIsIkJsb2dQb3N0IiwiYWRkRGF0ZVRpbWUiLCJzZWN0aW9uRGF0ZUF1dGhvciIsInByb3BzIiwiZGF0ZVRpbWUiLCJkYXRlRm9ybWF0IiwiZGF0ZVN0cmluZyIsInRpbWVzdGFtcElTTyIsInJlc3VsdCIsInNsaWNlIiwiY29uY2F0IiwiYWRkSW1hZ2UiLCJjb250ZW50IiwiaW1hZ2UiLCJibG9nSW1hZ2UiLCJzcmMiLCJjYXB0aW9uIiwiYWx0IiwiaW1hZ2VDYXB0aW9uIiwiYWRkUnVicmljIiwicnVicmljIiwiYWRkQmxvZ1Bvc3RTZWN0aW9uIiwic2VjdGlvbiIsInNlY3Rpb25VcmwiLCJ0ZXN0IiwiYmxvZ1Bvc3RTZWN0aW9uIiwiYWRkQnlMaW5lIiwiYnlsaW5lIiwiYWRkU2libGluZ3NMaXN0Iiwic2libGluZ0xpc3RQcm9wcyIsInNpYmxpbmdzTGlzdFRpdGxlIiwiZWxlbWVudENsYXNzTmFtZSIsImlzc3VlU2libGluZ3NMaXN0IiwiYXJ0aWNsZUxpc3RQb3NpdGlvbiIsIm5leHRBcnRpY2xlTGluayIsInNpYmxpbmdBcnRpY2xlcyIsInNpZGVUZXh0Iiwic2libGluZ0xpc3RTaWRlVGl0bGUiLCJhcnRpY2xlRm9vdE5vdGUiLCJzaWJsaW5nTGlzdERhdGEiLCJzaWJsaW5nQXJ0aWNsZXNMaXN0IiwiaW5uZXJDb250ZW50RWxlbWVudHMiLCJmaWx0ZXIiLCJjb250ZW50RWxlbWVudCIsImlubmVyQ29udGVudCIsImtleSIsImNoaWxkcmVuIiwiYmxvZ1Bvc3RUZXh0RWxlbWVudHMiLCJibG9nUG9zdFRleHQiLCJ0ZXh0Iiwic3BsaWNlIiwibGVuZ3RoIiwiZ2VuZXJhdGVXcmFwcGVkSW5uZXJDb250ZW50IiwiYXNpZGVhYmxlQ29udGVudCIsIndyYXBwZWRJbm5lckNvbnRlbnQiLCJwdXNoIiwiYXV0aG9yIiwiYWZ0ZXJUZXh0IiwicmVuZGVyIiwic2VjdGlvbk5hbWUiLCJjbGFzc05hbWVNb2RpZmllciIsInNoYXJlQmFyUHVibGljYXRlRGF0ZSIsIkRhdGUiLCJwdWJsaWNhdGlvbkRhdGUiLCJTdHJpbmciLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsInJlcGxhY2UiLCJzaGFyZUJhckRlZmF1bHQiLCJ0eXBlIiwidGl0bGUiLCJpZCIsImNvbW1lbnRDb3VudCIsImNvbW1lbnRTdGF0dXMiLCJjb21tZW50U2VjdGlvbiIsImZpcnN0VG9Db21tZW50TGFiZWwiLCJ2aWV3Q29tbWVudHNMYWJlbCIsImNvbW1lbnRzVXJpIiwiVGl0bGVDb21wb25lbnQiLCJhcnRpY2xlSGVhZGVyIiwiY2xhc3NOYW1lIiwiaXRlbVByb3AiLCJpdGVtVHlwZSIsIlByb3BUeXBlcyIsInN0cmluZyIsInNoYXBlIiwibm9kZSIsImlzUmVxdWlyZWQiLCJmdW5jIiwiaW5zdGFuY2VPZiIsIm9uZU9mVHlwZSIsIm51bWJlciIsIm9uZU9mIiwib2JqZWN0IiwiYXJyYXlPZiIsImJvb2wiLCJkYXRlIiwidGVuTWludXRlcyIsImFkZFBvc3RGaXgiLCJkYXkiLCJkYXlzdHIiLCJ0b1N0cmluZyIsImxhc3RDaGFyIiwiY2hhckF0IiwicG9zdEZpeCIsInNob3J0TW9udGhMaXN0IiwibWludXRlcyIsImdldE1pbnV0ZXMiLCJnZXRIb3VycyIsImpvaW4iLCJDb21wb25lbnQiXSwibWFwcGluZ3MiOiI7Ozs7OztRQWtCZ0JBLHdCLEdBQUFBLHdCOztBQWxCaEI7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBRUE7Ozs7QUFDQTs7Ozs7Ozs7Ozs7O0FBRUEsU0FBU0MsU0FBVCxDQUFtQkMsR0FBbkIsRUFBd0I7QUFDdEIs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OztFQTlGbUMsZ0JBQU1DLFM7O2tCQUF2Qi9HLFEiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXV0aG9yIGZyb20gJy4vcGFydHMvYXV0aG9yJztcbmltcG9ydCBCbG9nUG9zdEltYWdlIGZyb20gJy4vcGFydHMvYmxvZy1wb3N0LWltYWdlJztcbmltcG9ydCBCbG9nUG9zdFNlY3Rpb24gZnJvbSAnLi9wYXJ0cy9ibG9nLXBvc3Qtc2VjdGlvbic7XG5pbXBvcnQgQ29tbWVudHMgZnJvbSAnLi9wYXJ0cy9jb21tZW50cyc7XG5pbXBvcnQgSW1hZ2VDYXB0aW9uIGZyb20gJy4vcGFydHMvaW1hZ2UtY2FwdGlvbic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJ1YnJpYyBmcm9tICcuL3BhcnRzL3J1YnJpYyc7XG5pbXBvcnQgU2hhcmVCYXIgZnJvbSAnLi9wYXJ0cy9ibG9nLXBvc3Qtc2hhcmViYXInO1xuaW1wb3J0IFRleHQgZnJvbSAnLi9wYXJ0cy90ZXh0JztcbmltcG9ydCB7IHNpYmxpbmdMaXN0IH0gZnJvbSAnLi9wYXJ0cy9ibG9nLXBvc3Qtc2libGluZ3MtbGlzdCc7XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVybEpvaW4gZnJvbSAndXJsLWpvaW4nO1xuXG5mdW5jdGlvbiB0d29EaWdpdHMoaW50KSB7XG4gIHJldHVybiBpbnQgPiA5ID8gJycgKyBpbnQgOiAnMCcgKyBpbnQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQmxvZ1Bvc3RGbHlUaXRsZShcbiAgc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QsXG4gIHNpYmxpbmdMaXN0VGl0bGUsXG4gIGZseVRpdGxlXG4pIHtcbiAgbGV0IGJsb2dGbHlUaXRsZSA9IGZseVRpdGxlO1xuICBpZiAoc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QgJiYgc2libGluZ0xpc3RUaXRsZSAhPT0gZmx5VGl0bGUpIHtcbiAgICBibG9nRmx5VGl0bGUgPSBgJHsgc2libGluZ0xpc3RUaXRsZSB9OiAkeyBmbHlUaXRsZSB9YDtcbiAgfVxuICByZXR1cm4gYmxvZ0ZseVRpdGxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCbG9nUG9zdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcFR5cGVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjbGFzc05hbWU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBpbWFnZTogUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgc3JjOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBjYXB0aW9uOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBhbHQ6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB9KSxcbiAgICAgIGF1dGhvcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGJ5bGluZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHNlY3Rpb246IFJlYWN0LlByb3BUeXBlcy5ub2RlLFxuICAgICAgc2VjdGlvblVybDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGZseVRpdGxlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgdGl0bGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIHR5cGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGlkOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBwdWJsaWNhdGlvbkRhdGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIFRpdGxlQ29tcG9uZW50OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgcnVicmljOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZGF0ZVRpbWU6IFJlYWN0LlByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICAgICAgZGF0ZVN0cmluZzogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHRpbWVzdGFtcElTTzogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGRhdGVGb3JtYXQ6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgICAgdGV4dDogUmVhY3QuUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICAgIFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIFJlYWN0LlByb3BUeXBlcy5ub2RlLFxuICAgICAgXSkuaXNSZXF1aXJlZCxcbiAgICAgIGFmdGVyVGV4dDogUmVhY3QuUHJvcFR5cGVzLm5vZGUsXG4gICAgICBpdGVtVHlwZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGl0ZW1Qcm9wOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgY29tbWVudENvdW50OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgICBjb21tZW50U3RhdHVzOiBSZWFjdC5Qcm9wVHlwZXMub25lT2YoW1xuICAgICAgICAnZGlzYWJsZWQnLFxuICAgICAgICAncmVhZG9ubHknLFxuICAgICAgICAncmVhZHdyaXRlJyxcbiAgICAgICAgJ2ZiY29tbWVudHBsdWdpbicsXG4gICAgICBdKS5pc1JlcXVpcmVkLFxuICAgICAgZmlyc3RUb0NvbW1lbnRMYWJlbDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmlld0NvbW1lbnRzTGFiZWw6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGNvbW1lbnRzVXJpOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBibG9nSW1hZ2U6IFJlYWN0LlByb3BUeXBlcy5vYmplY3QsXG4gICAgICBzZWN0aW9uTmFtZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGlzc3VlU2libGluZ3NMaXN0OiBSZWFjdC5Qcm9wVHlwZXMuYXJyYXlPZihSZWFjdC5Qcm9wVHlwZXMub2JqZWN0KSxcbiAgICAgIHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0OiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgICAgIHNpZGVUZXh0OiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgbmV4dEFydGljbGVMaW5rOiBSZWFjdC5Qcm9wVHlwZXMubm9kZSxcbiAgICAgIGFydGljbGVGb290Tm90ZTogUmVhY3QuUHJvcFR5cGVzLm5vZGUsXG4gICAgICBhcnRpY2xlTGlzdFBvc2l0aW9uOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgICAgY2xhc3NOYW1lTW9kaWZpZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBzaWJsaW5nTGlzdFNpZGVUaXRsZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICB9O1xuICB9XG4gIHN0YXRpYyBnZXQgZGVmYXVsdFByb3BzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBpdGVtVHlwZTogJ2h0dHA6Ly9zY2hlbWEub3JnL0Jsb2dQb3N0aW5nJyxcbiAgICAgIGl0ZW1Qcm9wOiAnYmxvZ1Bvc3QnLFxuICAgICAgZmlyc3RUb0NvbW1lbnRMYWJlbDogJ0JlIHRoZSBmaXJzdCB0byBjb21tZW50JyxcbiAgICAgIHZpZXdDb21tZW50c0xhYmVsOiAnVmlldyBjb21tZW50cycsXG4gICAgICBkYXRlRm9ybWF0OiAoZGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCB0ZW5NaW51dGVzID0gMTA7XG4gICAgICAgIC8vIFNlcCAxOXRoIDIwMTUsIDk6NDlcbiAgICAgICAgZnVuY3Rpb24gYWRkUG9zdEZpeChkYXkpIHtcbiAgICAgICAgICBjb25zdCBkYXlzdHIgPSBkYXkudG9TdHJpbmcoKTtcbiAgICAgICAgICBjb25zdCBsYXN0Q2hhciA9IGRheXN0ci5jaGFyQXQoZGF5c3RyLmxlbmd0aCAtIDEpO1xuICAgICAgICAgIGxldCBwb3N0Rml4ID0gJyc7XG4gICAgICAgICAgc3dpdGNoIChsYXN0Q2hhcikge1xuICAgICAgICAgICAgY2FzZSAnMSc6XG4gICAgICAgICAgICAgIHBvc3RGaXggPSAnc3QnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJzInOlxuICAgICAgICAgICAgICBwb3N0Rml4ID0gJ25kJztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICczJzpcbiAgICAgICAgICAgICAgcG9zdEZpeCA9ICdyZCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcG9zdEZpeCA9ICd0aCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYCR7IGRheSB9JHsgcG9zdEZpeCB9YDtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzaG9ydE1vbnRoTGlzdCA9IFtcbiAgICAgICAgICAnSmFuJywgJ0ZlYicsICdNYXInLCAnQXByJywgJ01heScsICdKdW4nLFxuICAgICAgICAgICdKdWwnLCAnQXVnJywgJ1NlcCcsICdPY3QnLCAnTm92JywgJ0RlYycsXG4gICAgICAgIF07XG4gICAgICAgIGxldCBtaW51dGVzID0gZGF0ZS5nZXRNaW51dGVzKCkgPCB0ZW5NaW51dGVzID8gJzAnIDogJyc7XG4gICAgICAgIG1pbnV0ZXMgKz0gZGF0ZS5nZXRNaW51dGVzKCk7XG4gICAgICAgIHJldHVybiBbIGAkeyBzaG9ydE1vbnRoTGlzdFtkYXRlLmdldE1vbnRoKCldIH1gLFxuICAgICAgICAgIGAkeyBhZGRQb3N0Rml4KGRhdGUuZ2V0RGF0ZSgpKSB9YCxcbiAgICAgICAgICBgJHsgZGF0ZS5nZXRGdWxsWWVhcigpIH0sYCxcbiAgICAgICAgICBgJHsgZGF0ZS5nZXRIb3VycygpIH06JHsgbWludXRlcyB9YCBdLmpvaW4oJyAnKTtcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIGFkZERhdGVUaW1lKHNlY3Rpb25EYXRlQXV0aG9yLCBwcm9wcykge1xuICAgIGNvbnN0IHsgZGF0ZVRpbWUsIGRhdGVGb3JtYXQsIGRhdGVTdHJpbmcsIHRpbWVzdGFtcElTTyB9ID0gcHJvcHM7XG4gICAgbGV0IHJlc3VsdCA9IHNlY3Rpb25EYXRlQXV0aG9yLnNsaWNlKCk7XG4gICAgaWYgKGRhdGVUaW1lKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KChcbiAgICAgICAgPHRpbWVcbiAgICAgICAgICBjbGFzc05hbWU9XCJibG9nLXBvc3RfX2RhdGV0aW1lXCJcbiAgICAgICAgICBpdGVtUHJvcD1cImRhdGVDcmVhdGVkXCJcbiAgICAgICAgICBkYXRlVGltZT17dGhpcy5wcm9wcy5kYXRlVGltZX1cbiAgICAgICAgICBrZXk9XCJibG9nLXBvc3RfX2RhdGV0aW1lXCJcbiAgICAgICAgPntkYXRlRm9ybWF0KGRhdGVUaW1lKX08L3RpbWU+KSk7XG4gICAgfVxuICAgIGlmIChkYXRlU3RyaW5nICYmIHRpbWVzdGFtcElTTykge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCgoXG4gICAgICAgIDx0aW1lXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19kYXRldGltZVwiXG4gICAgICAgICAgaXRlbVByb3A9XCJkYXRlQ3JlYXRlZFwiXG4gICAgICAgICAgZGF0ZVRpbWU9e3RpbWVzdGFtcElTT31cbiAgICAgICAgICBrZXk9XCJibG9nLXBvc3RfX2RhdGV0aW1lSVNPXCJcbiAgICAgICAgPntkYXRlU3RyaW5nfTwvdGltZT4pKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFkZEltYWdlKGNvbnRlbnQsIGltYWdlID0ge30pIHtcbiAgICBpZiAodGhpcy5wcm9wcy5ibG9nSW1hZ2UpIHtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLmNvbnRlbnQsXG4gICAgICAgIC4uLnRoaXMucHJvcHMuYmxvZ0ltYWdlLFxuICAgICAgXTtcbiAgICB9IGVsc2UgaWYgKGltYWdlKSB7XG4gICAgICBjb25zdCB7IHNyYywgY2FwdGlvbiwgYWx0IH0gPSBpbWFnZTtcbiAgICAgIGlmIChzcmMpIHtcbiAgICAgICAgY29uc3QgaW1hZ2VDYXB0aW9uID0gY2FwdGlvbiA/IDxJbWFnZUNhcHRpb24gY2FwdGlvbj17Y2FwdGlvbn0ga2V5PVwiYmxvZy1wb3N0X19pbWFnZS1jYXB0aW9uXCIgLz4gOiBudWxsO1xuICAgICAgICByZXR1cm4gY29udGVudC5jb25jYXQoXG4gICAgICAgICAgPEJsb2dQb3N0SW1hZ2VcbiAgICAgICAgICAgIGtleT1cImJsb2dpbWdcIlxuICAgICAgICAgICAgY2FwdGlvbj17aW1hZ2VDYXB0aW9ufVxuICAgICAgICAgICAgc3JjPXtzcmN9XG4gICAgICAgICAgICBhbHQ9e2FsdH1cbiAgICAgICAgICAvPlxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGFkZFJ1YnJpYyhjb250ZW50LCBydWJyaWMpIHtcbiAgICBpZiAocnVicmljKSB7XG4gICAgICByZXR1cm4gY29udGVudC5jb25jYXQoPFJ1YnJpYyBydWJyaWM9e3J1YnJpY30ga2V5PVwiYmxvZy1wb3N0X19ydWJyaWNcIiAvPik7XG4gICAgfVxuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgYWRkQmxvZ1Bvc3RTZWN0aW9uKHNlY3Rpb25EYXRlQXV0aG9yLCBzZWN0aW9uLCBzZWN0aW9uVXJsKSB7XG4gICAgaWYgKHNlY3Rpb24pIHtcbiAgICAgIGlmIChzZWN0aW9uVXJsICYmICEvXihcXHcrOik/XFwvXFwvLy50ZXN0KHNlY3Rpb25VcmwpKSB7XG4gICAgICAgIHNlY3Rpb25VcmwgPSB1cmxKb2luKCcvJywgc2VjdGlvblVybCk7XG4gICAgICB9XG4gICAgICBjb25zdCBibG9nUG9zdFNlY3Rpb24gPSBzZWN0aW9uVXJsID8gKFxuICAgICAgICA8YSBocmVmPXtzZWN0aW9uVXJsfSBjbGFzc05hbWU9XCJibG9nLXBvc3RfX3NlY3Rpb24tbGlua1wiPlxuICAgICAgICAgIHtzZWN0aW9ufVxuICAgICAgICA8L2E+XG4gICAgICApIDogc2VjdGlvbjtcbiAgICAgIHJldHVybiBzZWN0aW9uRGF0ZUF1dGhvci5jb25jYXQoXG4gICAgICAgIDxCbG9nUG9zdFNlY3Rpb24ga2V5PVwiYmxvZy1wb3N0X19zZWN0aW9uXCIgc2VjdGlvbj17YmxvZ1Bvc3RTZWN0aW9ufSAvPlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25EYXRlQXV0aG9yO1xuICB9XG5cbiAgYWRkQnlMaW5lKHNlY3Rpb25EYXRlQXV0aG9yLCBieWxpbmUpIHtcbiAgICBpZiAoYnlsaW5lKSB7XG4gICAgICByZXR1cm4gc2VjdGlvbkRhdGVBdXRob3IuY29uY2F0KFxuICAgICAgICA8cCBjbGFzc05hbWU9XCJibG9nLXBvc3RfX2J5bGluZS1jb250YWluZXJcIiBrZXk9XCJibG9nLXBvc3RfX2J5bGluZS1jb250YWluZXJcIj5cbiAgICAgICAgICB7XCJieSBcIn1cbiAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19ieWxpbmVcIlxuICAgICAgICAgICAgaXRlbVByb3A9XCJhdXRob3JcIlxuICAgICAgICAgID57YnlsaW5lfTwvc3Bhbj5cbiAgICAgICAgPC9wPlxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHNlY3Rpb25EYXRlQXV0aG9yO1xuICB9XG5cbiAgYWRkU2libGluZ3NMaXN0KHNpYmxpbmdMaXN0UHJvcHMpIHtcbiAgICBjb25zdCB7XG4gICAgICBzaG93U2libGluZ0FydGljbGVzTGlzdCxcbiAgICAgIGZseVRpdGxlLFxuICAgICAgc2libGluZ3NMaXN0VGl0bGUsXG4gICAgICBlbGVtZW50Q2xhc3NOYW1lLFxuICAgICAgY29udGVudCxcbiAgICAgIGlzc3VlU2libGluZ3NMaXN0LFxuICAgICAgYXJ0aWNsZUxpc3RQb3NpdGlvbixcbiAgICAgIG5leHRBcnRpY2xlTGluayxcbiAgICB9ID0gc2libGluZ0xpc3RQcm9wcztcbiAgICBjb25zdCBzaWJsaW5nQXJ0aWNsZXMgPSBzaG93U2libGluZ0FydGljbGVzTGlzdCAmJiBpc3N1ZVNpYmxpbmdzTGlzdCA/XG4gICAgaXNzdWVTaWJsaW5nc0xpc3QgOiBudWxsO1xuICAgIGNvbnN0IHsgc2lkZVRleHQsIHNpYmxpbmdMaXN0U2lkZVRpdGxlLCBhcnRpY2xlRm9vdE5vdGUgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgc2libGluZ0xpc3REYXRhID0ge1xuICAgICAgc2libGluZ0FydGljbGVzLFxuICAgICAgZmx5VGl0bGUsXG4gICAgICBlbGVtZW50Q2xhc3NOYW1lLFxuICAgICAgc2libGluZ3NMaXN0VGl0bGUsXG4gICAgICBzaWRlVGV4dCxcbiAgICAgIHNpYmxpbmdMaXN0U2lkZVRpdGxlLFxuICAgIH07XG4gICAgY29uc3Qgc2libGluZ0FydGljbGVzTGlzdCA9IHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0ID8gc2libGluZ0xpc3Qoc2libGluZ0xpc3REYXRhKSA6IG51bGw7XG4gICAgY29uc3QgaW5uZXJDb250ZW50RWxlbWVudHMgPSBzaG93U2libGluZ0FydGljbGVzTGlzdCB8fCBhcnRpY2xlRm9vdE5vdGUgPyAoY29udGVudC5maWx0ZXIoKGNvbnRlbnRFbGVtZW50KSA9PiB7XG4gICAgICBjb25zdCBpbm5lckNvbnRlbnQgPSBjb250ZW50RWxlbWVudC5rZXkgPT09ICdpbm5lci1jb250ZW50JztcbiAgICAgIHJldHVybiBpbm5lckNvbnRlbnQ7XG4gICAgfSlbMF0ucHJvcHMuY2hpbGRyZW4pIDogbnVsbDtcbiAgICBjb25zdCBibG9nUG9zdFRleHRFbGVtZW50cyA9IHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0IHx8IGFydGljbGVGb290Tm90ZSA/XG4gICAgICAoaW5uZXJDb250ZW50RWxlbWVudHMuZmlsdGVyKChjb250ZW50RWxlbWVudCkgPT4ge1xuICAgICAgICBjb25zdCBibG9nUG9zdFRleHQgPSBjb250ZW50RWxlbWVudC5rZXkgPT09ICdibG9nLXBvc3RfX3RleHQnO1xuICAgICAgICByZXR1cm4gYmxvZ1Bvc3RUZXh0O1xuICAgICAgfSlbMF0ucHJvcHMudGV4dCkgOiBudWxsO1xuICAgIGlmIChzaG93U2libGluZ0FydGljbGVzTGlzdCAmJiAoYmxvZ1Bvc3RUZXh0RWxlbWVudHMgfHwgKGNvbnRlbnQgJiYgbmV4dEFydGljbGVMaW5rKSkpIHtcbiAgICAgIGJsb2dQb3N0VGV4dEVsZW1lbnRzLnNwbGljZShhcnRpY2xlTGlzdFBvc2l0aW9uLCAwLCBzaWJsaW5nQXJ0aWNsZXNMaXN0KTtcbiAgICAgIGNvbnRlbnQuc3BsaWNlKGNvbnRlbnQubGVuZ3RoIC0gMSwgMCwgbmV4dEFydGljbGVMaW5rKTtcbiAgICB9XG4gICAgaWYgKGFydGljbGVGb290Tm90ZSkge1xuICAgICAgYmxvZ1Bvc3RUZXh0RWxlbWVudHMuc3BsaWNlKGJsb2dQb3N0VGV4dEVsZW1lbnRzLmxlbmd0aCAtIDEsIDAsIGFydGljbGVGb290Tm90ZSk7XG4gICAgfVxuICB9XG5cbiAgZ2VuZXJhdGVXcmFwcGVkSW5uZXJDb250ZW50KGFzaWRlYWJsZUNvbnRlbnQpIHtcbiAgICBsZXQgd3JhcHBlZElubmVyQ29udGVudCA9IFtdO1xuICAgIHdyYXBwZWRJbm5lckNvbnRlbnQgPSB0aGlzLmFkZEltYWdlKHdyYXBwZWRJbm5lckNvbnRlbnQsIHRoaXMucHJvcHMuaW1hZ2UpO1xuICAgIGlmIChhc2lkZWFibGVDb250ZW50Lmxlbmd0aCkge1xuICAgICAgd3JhcHBlZElubmVyQ29udGVudC5wdXNoKChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9nLXBvc3RfX2FzaWRlYWJsZS13cmFwcGVyXCIga2V5PVwiYXNpZGVhYmxlLWNvbnRlbnRcIlxuICAgICAgICAgIHJlZj1cImFzaWRlYWJsZVwiXG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2ctcG9zdF9fYXNpZGVhYmxlLWNvbnRlbnQgYmxvZy1wb3N0X19hc2lkZWFibGUtY29udGVudC0tbWV0YVwiPlxuICAgICAgICAgICAge2FzaWRlYWJsZUNvbnRlbnR9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnByb3BzLmF1dGhvcikge1xuICAgICAgd3JhcHBlZElubmVyQ29udGVudC5wdXNoKDxBdXRob3Iga2V5PVwiYmxvZy1wb3N0X19hdXRob3JcIiBhdXRob3I9e3RoaXMucHJvcHMuYXV0aG9yfSAvPik7XG4gICAgfVxuICAgIHdyYXBwZWRJbm5lckNvbnRlbnQucHVzaCg8VGV4dCB0ZXh0PXt0aGlzLnByb3BzLnRleHR9IGtleT1cImJsb2ctcG9zdF9fdGV4dFwiIC8+KTtcbiAgICB3cmFwcGVkSW5uZXJDb250ZW50LnB1c2goPGRpdiBrZXk9XCJibG9nLXBvc3RfX2FmdGVyLXRleHRcIj57dGhpcy5wcm9wcy5hZnRlclRleHR9PC9kaXY+KTtcbiAgICByZXR1cm4gd3JhcHBlZElubmVyQ29udGVudDtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBmbHlUaXRsZSxcbiAgICAgIHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0LFxuICAgICAgc2libGluZ0xpc3RTaWRlVGl0bGUsXG4gICAgICBpc3N1ZVNpYmxpbmdzTGlzdCxcbiAgICAgIGFydGljbGVMaXN0UG9zaXRpb24sXG4gICAgICBuZXh0QXJ0aWNsZUxpbmssXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qgc2libGluZ3NMaXN0VGl0bGUgPSB0aGlzLnByb3BzLnNlY3Rpb25OYW1lO1xuICAgIGNvbnN0IGVsZW1lbnRDbGFzc05hbWUgPSBzaG93U2libGluZ0FydGljbGVzTGlzdCAmJiB0aGlzLnByb3BzLmNsYXNzTmFtZU1vZGlmaWVyID9cbiAgICAgIGBibG9nLXBvc3RfX3NpYmxpbmdzLWxpc3QtLSR7IHRoaXMucHJvcHMuY2xhc3NOYW1lTW9kaWZpZXIgfWAgOiAnJztcbiAgICBsZXQgY29udGVudCA9IFtdO1xuICAgIC8vIGFzaWRlIGFuZCB0ZXh0IGNvbnRlbnQgYXJlIHdyYXBwZWQgdG9nZXRoZXIgaW50byBhIGNvbXBvbmVudC5cbiAgICAvLyB0aGF0IG1ha2VzIGl0IGVhc2llciB0byBtb3ZlIHRoZSBhc2lkZSBhcm91bmQgcmVsYXRpdmVseSB0byBpdHMgY29udGFpbnRlclxuICAgIGNvbnN0IGFzaWRlYWJsZUNvbnRlbnQgPSBbXTtcbiAgICBsZXQgc2VjdGlvbkRhdGVBdXRob3IgPSBbXTtcbiAgICBjb250ZW50ID0gdGhpcy5hZGRSdWJyaWMoY29udGVudCwgdGhpcy5wcm9wcy5ydWJyaWMpO1xuICAgIHNlY3Rpb25EYXRlQXV0aG9yID0gdGhpcy5hZGRCbG9nUG9zdFNlY3Rpb24oc2VjdGlvbkRhdGVBdXRob3IsIHRoaXMucHJvcHMuc2VjdGlvbiwgdGhpcy5wcm9wcy5zZWN0aW9uVXJsKTtcbiAgICBzZWN0aW9uRGF0ZUF1dGhvciA9IHRoaXMuYWRkRGF0ZVRpbWUoc2VjdGlvbkRhdGVBdXRob3IsIHRoaXMucHJvcHMpO1xuICAgIHNlY3Rpb25EYXRlQXV0aG9yID0gdGhpcy5hZGRCeUxpbmUoc2VjdGlvbkRhdGVBdXRob3IsIHRoaXMucHJvcHMuYnlsaW5lKTtcbiAgICBpZiAoc2VjdGlvbkRhdGVBdXRob3IubGVuZ3RoKSB7XG4gICAgICBhc2lkZWFibGVDb250ZW50LnB1c2goXG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9XCJibG9nLXBvc3RfX3NlY3Rpb24tZGF0ZS1hdXRob3JcIlxuICAgICAgICAgIGtleT1cImJsb2ctcG9zdF9fc2VjdGlvbi1kYXRlLWF1dGhvclwiXG4gICAgICAgID5cbiAgICAgICAgICB7c2VjdGlvbkRhdGVBdXRob3J9XG4gICAgICAgIDwvZGl2PlxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBTaGFyZSBiYXIgcHVibGljYXRpb25EYXRlIGZvcm1hdHRlZFxuICAgIGxldCBzaGFyZUJhclB1YmxpY2F0ZURhdGUgPSBuZXcgRGF0ZSh0aGlzLnByb3BzLnB1YmxpY2F0aW9uRGF0ZSAqIDEwMDApIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbiAgICBzaGFyZUJhclB1YmxpY2F0ZURhdGUgPSBgJHsgU3RyaW5nKHNoYXJlQmFyUHVibGljYXRlRGF0ZS5nZXRGdWxsWWVhcigpKSB9XG4gICAgJHsgU3RyaW5nKHR3b0RpZ2l0cyhzaGFyZUJhclB1YmxpY2F0ZURhdGUuZ2V0TW9udGgoKSArIDEpKSB9XG4gICAgJHsgU3RyaW5nKHR3b0RpZ2l0cyhzaGFyZUJhclB1YmxpY2F0ZURhdGUuZ2V0RGF0ZSgpKSkgfWAucmVwbGFjZSgvXFxzL2csICcnKTtcbiAgICBjb25zdCBzaGFyZUJhckRlZmF1bHQgPVxuICAgICAgKDxTaGFyZUJhclxuICAgICAgICBrZXk9XCJzaGFyZWJhclwiXG4gICAgICAgIHR5cGU9e3RoaXMucHJvcHMudHlwZSA9PT0gJ3Bvc3QnID8gJ0JMJyA6ICdBJ31cbiAgICAgICAgdGl0bGU9e3RoaXMucHJvcHMudGl0bGV9XG4gICAgICAgIGZseVRpdGxlPXt0aGlzLnByb3BzLmZseVRpdGxlfVxuICAgICAgICBwdWJsaWNhdGlvbkRhdGU9e3NoYXJlQmFyUHVibGljYXRlRGF0ZX1cbiAgICAgICAgY29udGVudElEPXt0aGlzLnByb3BzLmlkfVxuICAgICAgIC8+KTtcbiAgICBhc2lkZWFibGVDb250ZW50LnB1c2goXG4gICAgICBzaGFyZUJhckRlZmF1bHRcbiAgICApO1xuICAgIGNvbnN0IHdyYXBwZWRJbm5lckNvbnRlbnQgPSB0aGlzLmdlbmVyYXRlV3JhcHBlZElubmVyQ29udGVudChhc2lkZWFibGVDb250ZW50KTtcbiAgICBjb250ZW50LnB1c2goPGRpdiBjbGFzc05hbWU9XCJibG9nLXBvc3RfX2lubmVyXCIga2V5PVwiaW5uZXItY29udGVudFwiPnt3cmFwcGVkSW5uZXJDb250ZW50fTwvZGl2Pik7XG4gICAgY29uc3QgeyBjb21tZW50Q291bnQsIGNvbW1lbnRTdGF0dXMgfSA9IHRoaXMucHJvcHM7XG4gICAgbGV0IGNvbW1lbnRTZWN0aW9uID0gbnVsbDtcbiAgICBpZiAoY29tbWVudFN0YXR1cyAhPT0gJ2Rpc2FibGVkJyAmJiAhKGNvbW1lbnRTdGF0dXMgPT09ICdyZWFkb25seScgJiYgY29tbWVudENvdW50ID09PSAwKSkge1xuICAgICAgY29tbWVudFNlY3Rpb24gPSAoXG4gICAgICAgIDxDb21tZW50c1xuICAgICAgICAgIGtleT1cImJsb2ctcG9zdF9fY29tbWVudHNcIlxuICAgICAgICAgIGZpcnN0VG9Db21tZW50TGFiZWw9e3RoaXMucHJvcHMuZmlyc3RUb0NvbW1lbnRMYWJlbH1cbiAgICAgICAgICBjb21tZW50Q291bnQ9e2NvbW1lbnRDb3VudH1cbiAgICAgICAgICB2aWV3Q29tbWVudHNMYWJlbD17dGhpcy5wcm9wcy52aWV3Q29tbWVudHNMYWJlbH1cbiAgICAgICAgICBjb21tZW50c1VyaT17dGhpcy5wcm9wcy5jb21tZW50c1VyaX1cbiAgICAgICAgLz5cbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnRlbnQucHVzaChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19ib3R0b20tcGFuZWxcIiBrZXk9XCJibG9nLXBvc3RfX2JvdHRvbS1wYW5lbFwiPlxuICAgICAgICB7c2hhcmVCYXJEZWZhdWx0fVxuICAgICAgICB7Y29tbWVudFNlY3Rpb259XG4gICAgICA8L2Rpdj5cbiAgICApO1xuXG4gICAgY29uc3QgVGl0bGVDb21wb25lbnQgPSB0aGlzLnByb3BzLlRpdGxlQ29tcG9uZW50O1xuICAgIGNvbnN0IGFydGljbGVIZWFkZXIgPSBzaG93U2libGluZ0FydGljbGVzTGlzdCA/IChcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT17YGJsb2ctcG9zdF9fc2libGluZ3MtbGlzdC1oZWFkZXIgJHsgZWxlbWVudENsYXNzTmFtZSB9YH0+XG4gICAgICAgIHtzaWJsaW5nc0xpc3RUaXRsZX1cbiAgICAgIDwvc3Bhbj5cbiAgICApIDogbnVsbDtcbiAgICBjb25zdCBzaWJsaW5nTGlzdFByb3BzID0ge1xuICAgICAgc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QsXG4gICAgICBmbHlUaXRsZSxcbiAgICAgIHNpYmxpbmdzTGlzdFRpdGxlLFxuICAgICAgZWxlbWVudENsYXNzTmFtZSxcbiAgICAgIGNvbnRlbnQsXG4gICAgICBpc3N1ZVNpYmxpbmdzTGlzdCxcbiAgICAgIGFydGljbGVMaXN0UG9zaXRpb24sXG4gICAgICBuZXh0QXJ0aWNsZUxpbmssXG4gICAgfTtcbiAgICB0aGlzLmFkZFNpYmxpbmdzTGlzdChzaWJsaW5nTGlzdFByb3BzKTtcbiAgICByZXR1cm4gKFxuICAgICAgPGFydGljbGVcbiAgICAgICAgaXRlbVNjb3BlXG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NuYW1lcygnYmxvZy1wb3N0JywgdGhpcy5wcm9wcy5jbGFzc05hbWUpfVxuICAgICAgICBpdGVtUHJvcD17dGhpcy5wcm9wcy5pdGVtUHJvcH1cbiAgICAgICAgaXRlbVR5cGU9e3RoaXMucHJvcHMuaXRlbVR5cGV9XG4gICAgICAgIHJvbGU9XCJhcnRpY2xlXCJcbiAgICAgICAgcmVmPVwiYXJ0aWNsZVwiXG4gICAgICA+XG4gICAgICAgIHthcnRpY2xlSGVhZGVyfVxuICAgICAgICA8VGl0bGVDb21wb25lbnRcbiAgICAgICAgICB0aXRsZT17dGhpcy5wcm9wcy50aXRsZX1cbiAgICAgICAgICBmbHlUaXRsZT17Z2VuZXJhdGVCbG9nUG9zdEZseVRpdGxlKHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0LCBzaWJsaW5nTGlzdFNpZGVUaXRsZSwgZmx5VGl0bGUpfVxuICAgICAgICAgIEhlYWRpbmc9e1wiaDFcIn1cbiAgICAgICAgICB0aXRsZUNsYXNzTmFtZT17c2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QgP1xuICAgICAgICAgICAgYGZseXRpdGxlLWFuZC10aXRsZV9fc2libGluZ3MtbGlzdC10aXRsZSAkeyBlbGVtZW50Q2xhc3NOYW1lIH1gIDogJyd9XG4gICAgICAgICAgZmx5VGl0bGVDbGFzc05hbWU9e3Nob3dTaWJsaW5nQXJ0aWNsZXNMaXN0ID9cbiAgICAgICAgICAgIGBmbHl0aXRsZS1hbmQtdGl0bGVfX3NpYmxpbmdzLWxpc3QtZmx5dGl0bGUgJHsgZWxlbWVudENsYXNzTmFtZSB9YCA6ICcnfVxuICAgICAgICAvPlxuICAgICAgICB7Y29udGVudH1cbiAgICAgIDwvYXJ0aWNsZT5cbiAgICApO1xuICB9XG59XG4iXX0=
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZUJsb2dQb3N0Rmx5VGl0bGUiLCJ0d29EaWdpdHMiLCJpbnQiLCJzaG93U2libGluZ0FydGljbGVzTGlzdCIsInNpYmxpbmdMaXN0VGl0bGUiLCJmbHlUaXRsZSIsImJsb2dGbHlUaXRsZSIsIkJsb2dQb3N0IiwiYWRkRGF0ZVRpbWUiLCJzZWN0aW9uRGF0ZUF1dGhvciIsInByb3BzIiwiZGF0ZVRpbWUiLCJkYXRlRm9ybWF0IiwiZGF0ZVN0cmluZyIsInRpbWVzdGFtcElTTyIsInJlc3VsdCIsInNsaWNlIiwiY29uY2F0IiwiYWRkSW1hZ2UiLCJjb250ZW50IiwiaW1hZ2UiLCJibG9nSW1hZ2UiLCJzcmMiLCJjYXB0aW9uIiwiYWx0IiwiaW1hZ2VDYXB0aW9uIiwiYWRkUnVicmljIiwicnVicmljIiwiYWRkQmxvZ1Bvc3RTZWN0aW9uIiwic2VjdGlvbiIsInNlY3Rpb25VcmwiLCJ0ZXN0IiwiYmxvZ1Bvc3RTZWN0aW9uIiwiYWRkQnlMaW5lIiwiYnlsaW5lIiwiZmlsdGVyQmxvZ1Bvc3RUZXh0RWxlbWVudHMiLCJpbm5lckNvbnRlbnRFbGVtZW50cyIsImZpbHRlciIsImNvbnRlbnRFbGVtZW50IiwiaW5uZXJDb250ZW50Iiwia2V5IiwiY2hpbGRyZW4iLCJibG9nUG9zdFRleHRFbGVtZW50cyIsImJsb2dQb3N0VGV4dCIsInRleHQiLCJtb3ZlQm90dG9tTW9iaWxlQWQiLCJudW1iZXJPZlBhcmFncmFwaHMiLCJsZW5ndGgiLCJtb2JpbGVBZCIsInBvcCIsInB1c2giLCJhZGRTaWJsaW5nc0xpc3QiLCJzaWJsaW5nTGlzdFByb3BzIiwic2libGluZ3NMaXN0VGl0bGUiLCJlbGVtZW50Q2xhc3NOYW1lIiwiaXNzdWVTaWJsaW5nc0xpc3QiLCJhcnRpY2xlTGlzdFBvc2l0aW9uIiwibmV4dEFydGljbGVMaW5rIiwicHJpbnRFZGl0aW9uIiwic2libGluZ0FydGljbGVzIiwic2lkZVRleHQiLCJzaWJsaW5nTGlzdFNpZGVUaXRsZSIsImFydGljbGVGb290Tm90ZSIsInNpYmxpbmdMaXN0RGF0YSIsInNpYmxpbmdBcnRpY2xlc0xpc3QiLCJzcGxpY2UiLCJnZW5lcmF0ZVdyYXBwZWRJbm5lckNvbnRlbnQiLCJhc2lkZWFibGVDb250ZW50Iiwid3JhcHBlZElubmVyQ29udGVudCIsImF1dGhvciIsImFmdGVyVGV4dCIsInJlbmRlciIsInNlY3Rpb25OYW1lIiwiY2xhc3NOYW1lTW9kaWZpZXIiLCJzaGFyZUJhclB1YmxpY2F0ZURhdGUiLCJEYXRlIiwicHVibGljYXRpb25EYXRlIiwiU3RyaW5nIiwiZ2V0RnVsbFllYXIiLCJnZXRNb250aCIsImdldERhdGUiLCJyZXBsYWNlIiwic2hhcmVCYXJEZWZhdWx0IiwidHlwZSIsInRpdGxlIiwiaWQiLCJjb21tZW50Q291bnQiLCJjb21tZW50U3RhdHVzIiwiY29tbWVudFNlY3Rpb24iLCJmaXJzdFRvQ29tbWVudExhYmVsIiwidmlld0NvbW1lbnRzTGFiZWwiLCJjb21tZW50c1VyaSIsIlRpdGxlQ29tcG9uZW50IiwiYXJ0aWNsZUhlYWRlciIsImNsYXNzTmFtZSIsIml0ZW1Qcm9wIiwiaXRlbVR5cGUiLCJQcm9wVHlwZXMiLCJzdHJpbmciLCJzaGFwZSIsIm5vZGUiLCJpc1JlcXVpcmVkIiwiZnVuYyIsImluc3RhbmNlT2YiLCJvbmVPZlR5cGUiLCJudW1iZXIiLCJvbmVPZiIsIm9iamVjdCIsImFycmF5T2YiLCJib29sIiwiZGF0ZSIsInRlbk1pbnV0ZXMiLCJhZGRQb3N0Rml4IiwiZGF5IiwiZGF5c3RyIiwidG9TdHJpbmciLCJsYXN0Q2hhciIsImNoYXJBdCIsInBvc3RGaXgiLCJzaG9ydE1vbnRoTGlzdCIsIm1pbnV0ZXMiLCJnZXRNaW51dGVzIiwiZ2V0SG91cnMiLCJqb2luIiwiQ29tcG9uZW50Il0sIm1hcHBpbmdzIjoiOzs7Ozs7UUFrQmdCQSx3QixHQUFBQSx3Qjs7QUFsQmhCOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7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bUJBQUssR0FBTDtBQUNFQSwwQkFBVSxJQUFWO0FBQ0E7QUFDRixtQkFBSyxHQUFMO0FBQ0VBLDBCQUFVLElBQVY7QUFDQTtBQUNGO0FBQ0VBLDBCQUFVLElBQVY7QUFDQTtBQVpKO0FBY0Esd0JBQVdMLEdBQVgsR0FBbUJLLE9BQW5CO0FBQ0Q7QUFDRCxjQUFNQyxpQkFBaUIsQ0FDckIsS0FEcUIsRUFDZCxLQURjLEVBQ1AsS0FETyxFQUNBLEtBREEsRUFDTyxLQURQLEVBQ2MsS0FEZCxFQUVyQixLQUZxQixFQUVkLEtBRmMsRUFFUCxLQUZPLEVBRUEsS0FGQSxFQUVPLEtBRlAsRUFFYyxLQUZkLENBQXZCO0FBSUEsY0FBSUMsVUFBVVYsS0FBS1csVUFBTCxLQUFvQlYsVUFBcEIsR0FBaUMsR0FBakMsR0FBdUMsRUFBckQ7QUFDQVMscUJBQVdWLEtBQUtXLFVBQUwsRUFBWDtBQUNBLGlCQUFPLE1BQU1GLGVBQWVULEtBQUsvQixRQUFMLEVBQWYsQ0FBTixPQUNEaUMsV0FBV0YsS0FBSzlCLE9BQUwsRUFBWCxDQURDLEVBRUQ4QixLQUFLaEMsV0FBTCxFQUZDLFFBR0RnQyxLQUFLWSxRQUFMLEVBSEMsU0FHb0JGLE9BSHBCLEVBR2lDRyxJQUhqQyxDQUdzQyxHQUh0QyxDQUFQO0FBSUQ7QUF0Q0ksT0FBUDtBQXdDRDs7OztFQS9GbUMsZ0JBQU1DLFM7O2tCQUF2QnJILFEiLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgQXV0aG9yIGZyb20gJy4vcGFydHMvYXV0aG9yJztcbmltcG9ydCBCbG9nUG9zdEltYWdlIGZyb20gJy4vcGFydHMvYmxvZy1wb3N0LWltYWdlJztcbmltcG9ydCBCbG9nUG9zdFNlY3Rpb24gZnJvbSAnLi9wYXJ0cy9ibG9nLXBvc3Qtc2VjdGlvbic7XG5pbXBvcnQgQ29tbWVudHMgZnJvbSAnLi9wYXJ0cy9jb21tZW50cyc7XG5pbXBvcnQgSW1hZ2VDYXB0aW9uIGZyb20gJy4vcGFydHMvaW1hZ2UtY2FwdGlvbic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJ1YnJpYyBmcm9tICcuL3BhcnRzL3J1YnJpYyc7XG5pbXBvcnQgU2hhcmVCYXIgZnJvbSAnLi9wYXJ0cy9ibG9nLXBvc3Qtc2hhcmViYXInO1xuaW1wb3J0IFRleHQgZnJvbSAnLi9wYXJ0cy90ZXh0JztcbmltcG9ydCB7IHNpYmxpbmdMaXN0IH0gZnJvbSAnLi9wYXJ0cy9ibG9nLXBvc3Qtc2libGluZ3MtbGlzdCc7XG5cbmltcG9ydCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHVybEpvaW4gZnJvbSAndXJsLWpvaW4nO1xuXG5mdW5jdGlvbiB0d29EaWdpdHMoaW50KSB7XG4gIHJldHVybiBpbnQgPiA5ID8gJycgKyBpbnQgOiAnMCcgKyBpbnQ7IC8vIGVzbGludC1kaXNhYmxlLWxpbmVcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdlbmVyYXRlQmxvZ1Bvc3RGbHlUaXRsZShcbiAgc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QsXG4gIHNpYmxpbmdMaXN0VGl0bGUsXG4gIGZseVRpdGxlXG4pIHtcbiAgbGV0IGJsb2dGbHlUaXRsZSA9IGZseVRpdGxlO1xuICBpZiAoc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QgJiYgc2libGluZ0xpc3RUaXRsZSAhPT0gZmx5VGl0bGUpIHtcbiAgICBibG9nRmx5VGl0bGUgPSBgJHsgc2libGluZ0xpc3RUaXRsZSB9OiAkeyBmbHlUaXRsZSB9YDtcbiAgfVxuICByZXR1cm4gYmxvZ0ZseVRpdGxlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBCbG9nUG9zdCBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBnZXQgcHJvcFR5cGVzKCkge1xuICAgIHJldHVybiB7XG4gICAgICBjbGFzc05hbWU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBpbWFnZTogUmVhY3QuUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgc3JjOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBjYXB0aW9uOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBhbHQ6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICB9KSxcbiAgICAgIGF1dGhvcjogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGJ5bGluZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHNlY3Rpb246IFJlYWN0LlByb3BUeXBlcy5ub2RlLFxuICAgICAgc2VjdGlvblVybDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGZseVRpdGxlOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgdGl0bGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIHR5cGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGlkOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBwdWJsaWNhdGlvbkRhdGU6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIFRpdGxlQ29tcG9uZW50OiBSZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgICAgcnVicmljOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgZGF0ZVRpbWU6IFJlYWN0LlByb3BUeXBlcy5pbnN0YW5jZU9mKERhdGUpLFxuICAgICAgZGF0ZVN0cmluZzogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHRpbWVzdGFtcElTTzogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGRhdGVGb3JtYXQ6IFJlYWN0LlByb3BUeXBlcy5mdW5jLFxuICAgICAgdGV4dDogUmVhY3QuUHJvcFR5cGVzLm9uZU9mVHlwZShbXG4gICAgICAgIFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIFJlYWN0LlByb3BUeXBlcy5ub2RlLFxuICAgICAgXSkuaXNSZXF1aXJlZCxcbiAgICAgIGFmdGVyVGV4dDogUmVhY3QuUHJvcFR5cGVzLm5vZGUsXG4gICAgICBpdGVtVHlwZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGl0ZW1Qcm9wOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgY29tbWVudENvdW50OiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgICBjb21tZW50U3RhdHVzOiBSZWFjdC5Qcm9wVHlwZXMub25lT2YoW1xuICAgICAgICAnZGlzYWJsZWQnLFxuICAgICAgICAncmVhZG9ubHknLFxuICAgICAgICAncmVhZHdyaXRlJyxcbiAgICAgICAgJ2ZiY29tbWVudHBsdWdpbicsXG4gICAgICBdKS5pc1JlcXVpcmVkLFxuICAgICAgZmlyc3RUb0NvbW1lbnRMYWJlbDogUmVhY3QuUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmlld0NvbW1lbnRzTGFiZWw6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIGNvbW1lbnRzVXJpOiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBibG9nSW1hZ2U6IFJlYWN0LlByb3BUeXBlcy5vYmplY3QsXG4gICAgICBzZWN0aW9uTmFtZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIGlzc3VlU2libGluZ3NMaXN0OiBSZWFjdC5Qcm9wVHlwZXMuYXJyYXlPZihSZWFjdC5Qcm9wVHlwZXMub2JqZWN0KSxcbiAgICAgIHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0OiBSZWFjdC5Qcm9wVHlwZXMuYm9vbCxcbiAgICAgIHNpZGVUZXh0OiBSZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgbmV4dEFydGljbGVMaW5rOiBSZWFjdC5Qcm9wVHlwZXMubm9kZSxcbiAgICAgIGFydGljbGVGb290Tm90ZTogUmVhY3QuUHJvcFR5cGVzLm5vZGUsXG4gICAgICBhcnRpY2xlTGlzdFBvc2l0aW9uOiBSZWFjdC5Qcm9wVHlwZXMubnVtYmVyLFxuICAgICAgY2xhc3NOYW1lTW9kaWZpZXI6IFJlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG4gICAgICBzaWJsaW5nTGlzdFNpZGVUaXRsZTogUmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcbiAgICAgIHByaW50RWRpdGlvbjogUmVhY3QuUHJvcFR5cGVzLmJvb2wsXG4gICAgfTtcbiAgfVxuICBzdGF0aWMgZ2V0IGRlZmF1bHRQcm9wcygpIHtcbiAgICByZXR1cm4ge1xuICAgICAgaXRlbVR5cGU6ICdodHRwOi8vc2NoZW1hLm9yZy9CbG9nUG9zdGluZycsXG4gICAgICBpdGVtUHJvcDogJ2Jsb2dQb3N0JyxcbiAgICAgIGZpcnN0VG9Db21tZW50TGFiZWw6ICdCZSB0aGUgZmlyc3QgdG8gY29tbWVudCcsXG4gICAgICB2aWV3Q29tbWVudHNMYWJlbDogJ1ZpZXcgY29tbWVudHMnLFxuICAgICAgZGF0ZUZvcm1hdDogKGRhdGUpID0+IHtcbiAgICAgICAgY29uc3QgdGVuTWludXRlcyA9IDEwO1xuICAgICAgICAvLyBTZXAgMTl0aCAyMDE1LCA5OjQ5XG4gICAgICAgIGZ1bmN0aW9uIGFkZFBvc3RGaXgoZGF5KSB7XG4gICAgICAgICAgY29uc3QgZGF5c3RyID0gZGF5LnRvU3RyaW5nKCk7XG4gICAgICAgICAgY29uc3QgbGFzdENoYXIgPSBkYXlzdHIuY2hhckF0KGRheXN0ci5sZW5ndGggLSAxKTtcbiAgICAgICAgICBsZXQgcG9zdEZpeCA9ICcnO1xuICAgICAgICAgIHN3aXRjaCAobGFzdENoYXIpIHtcbiAgICAgICAgICAgIGNhc2UgJzEnOlxuICAgICAgICAgICAgICBwb3N0Rml4ID0gJ3N0JztcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICcyJzpcbiAgICAgICAgICAgICAgcG9zdEZpeCA9ICduZCc7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnMyc6XG4gICAgICAgICAgICAgIHBvc3RGaXggPSAncmQnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHBvc3RGaXggPSAndGgnO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGAkeyBkYXkgfSR7IHBvc3RGaXggfWA7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc2hvcnRNb250aExpc3QgPSBbXG4gICAgICAgICAgJ0phbicsICdGZWInLCAnTWFyJywgJ0FwcicsICdNYXknLCAnSnVuJyxcbiAgICAgICAgICAnSnVsJywgJ0F1ZycsICdTZXAnLCAnT2N0JywgJ05vdicsICdEZWMnLFxuICAgICAgICBdO1xuICAgICAgICBsZXQgbWludXRlcyA9IGRhdGUuZ2V0TWludXRlcygpIDwgdGVuTWludXRlcyA/ICcwJyA6ICcnO1xuICAgICAgICBtaW51dGVzICs9IGRhdGUuZ2V0TWludXRlcygpO1xuICAgICAgICByZXR1cm4gWyBgJHsgc2hvcnRNb250aExpc3RbZGF0ZS5nZXRNb250aCgpXSB9YCxcbiAgICAgICAgICBgJHsgYWRkUG9zdEZpeChkYXRlLmdldERhdGUoKSkgfWAsXG4gICAgICAgICAgYCR7IGRhdGUuZ2V0RnVsbFllYXIoKSB9LGAsXG4gICAgICAgICAgYCR7IGRhdGUuZ2V0SG91cnMoKSB9OiR7IG1pbnV0ZXMgfWAgXS5qb2luKCcgJyk7XG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBhZGREYXRlVGltZShzZWN0aW9uRGF0ZUF1dGhvciwgcHJvcHMpIHtcbiAgICBjb25zdCB7IGRhdGVUaW1lLCBkYXRlRm9ybWF0LCBkYXRlU3RyaW5nLCB0aW1lc3RhbXBJU08gfSA9IHByb3BzO1xuICAgIGxldCByZXN1bHQgPSBzZWN0aW9uRGF0ZUF1dGhvci5zbGljZSgpO1xuICAgIGlmIChkYXRlVGltZSkge1xuICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdCgoXG4gICAgICAgIDx0aW1lXG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19kYXRldGltZVwiXG4gICAgICAgICAgaXRlbVByb3A9XCJkYXRlQ3JlYXRlZFwiXG4gICAgICAgICAgZGF0ZVRpbWU9e3RoaXMucHJvcHMuZGF0ZVRpbWV9XG4gICAgICAgICAga2V5PVwiYmxvZy1wb3N0X19kYXRldGltZVwiXG4gICAgICAgID57ZGF0ZUZvcm1hdChkYXRlVGltZSl9PC90aW1lPikpO1xuICAgIH1cbiAgICBpZiAoZGF0ZVN0cmluZyAmJiB0aW1lc3RhbXBJU08pIHtcbiAgICAgIHJlc3VsdCA9IHJlc3VsdC5jb25jYXQoKFxuICAgICAgICA8dGltZVxuICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2ctcG9zdF9fZGF0ZXRpbWVcIlxuICAgICAgICAgIGl0ZW1Qcm9wPVwiZGF0ZUNyZWF0ZWRcIlxuICAgICAgICAgIGRhdGVUaW1lPXt0aW1lc3RhbXBJU099XG4gICAgICAgICAga2V5PVwiYmxvZy1wb3N0X19kYXRldGltZUlTT1wiXG4gICAgICAgID57ZGF0ZVN0cmluZ308L3RpbWU+KSk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBhZGRJbWFnZShjb250ZW50LCBpbWFnZSA9IHt9KSB7XG4gICAgaWYgKHRoaXMucHJvcHMuYmxvZ0ltYWdlKSB7XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAuLi50aGlzLnByb3BzLmJsb2dJbWFnZSxcbiAgICAgIF07XG4gICAgfSBlbHNlIGlmIChpbWFnZSkge1xuICAgICAgY29uc3QgeyBzcmMsIGNhcHRpb24sIGFsdCB9ID0gaW1hZ2U7XG4gICAgICBpZiAoc3JjKSB7XG4gICAgICAgIGNvbnN0IGltYWdlQ2FwdGlvbiA9IGNhcHRpb24gPyA8SW1hZ2VDYXB0aW9uIGNhcHRpb249e2NhcHRpb259IGtleT1cImJsb2ctcG9zdF9faW1hZ2UtY2FwdGlvblwiIC8+IDogbnVsbDtcbiAgICAgICAgcmV0dXJuIGNvbnRlbnQuY29uY2F0KFxuICAgICAgICAgIDxCbG9nUG9zdEltYWdlXG4gICAgICAgICAgICBrZXk9XCJibG9naW1nXCJcbiAgICAgICAgICAgIGNhcHRpb249e2ltYWdlQ2FwdGlvbn1cbiAgICAgICAgICAgIHNyYz17c3JjfVxuICAgICAgICAgICAgYWx0PXthbHR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNvbnRlbnQ7XG4gIH1cblxuICBhZGRSdWJyaWMoY29udGVudCwgcnVicmljKSB7XG4gICAgaWYgKHJ1YnJpYykge1xuICAgICAgcmV0dXJuIGNvbnRlbnQuY29uY2F0KDxSdWJyaWMgcnVicmljPXtydWJyaWN9IGtleT1cImJsb2ctcG9zdF9fcnVicmljXCIgLz4pO1xuICAgIH1cbiAgICByZXR1cm4gY29udGVudDtcbiAgfVxuXG4gIGFkZEJsb2dQb3N0U2VjdGlvbihzZWN0aW9uRGF0ZUF1dGhvciwgc2VjdGlvbiwgc2VjdGlvblVybCkge1xuICAgIGlmIChzZWN0aW9uKSB7XG4gICAgICBpZiAoc2VjdGlvblVybCAmJiAhL14oXFx3KzopP1xcL1xcLy8udGVzdChzZWN0aW9uVXJsKSkge1xuICAgICAgICBzZWN0aW9uVXJsID0gdXJsSm9pbignLycsIHNlY3Rpb25VcmwpO1xuICAgICAgfVxuICAgICAgY29uc3QgYmxvZ1Bvc3RTZWN0aW9uID0gc2VjdGlvblVybCA/IChcbiAgICAgICAgPGEgaHJlZj17c2VjdGlvblVybH0gY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19zZWN0aW9uLWxpbmtcIj5cbiAgICAgICAgICB7c2VjdGlvbn1cbiAgICAgICAgPC9hPlxuICAgICAgKSA6IHNlY3Rpb247XG4gICAgICByZXR1cm4gc2VjdGlvbkRhdGVBdXRob3IuY29uY2F0KFxuICAgICAgICA8QmxvZ1Bvc3RTZWN0aW9uIGtleT1cImJsb2ctcG9zdF9fc2VjdGlvblwiIHNlY3Rpb249e2Jsb2dQb3N0U2VjdGlvbn0gLz5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzZWN0aW9uRGF0ZUF1dGhvcjtcbiAgfVxuXG4gIGFkZEJ5TGluZShzZWN0aW9uRGF0ZUF1dGhvciwgYnlsaW5lKSB7XG4gICAgaWYgKGJ5bGluZSkge1xuICAgICAgcmV0dXJuIHNlY3Rpb25EYXRlQXV0aG9yLmNvbmNhdChcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19ieWxpbmUtY29udGFpbmVyXCIga2V5PVwiYmxvZy1wb3N0X19ieWxpbmUtY29udGFpbmVyXCI+XG4gICAgICAgICAge1wiYnkgXCJ9XG4gICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImJsb2ctcG9zdF9fYnlsaW5lXCJcbiAgICAgICAgICAgIGl0ZW1Qcm9wPVwiYXV0aG9yXCJcbiAgICAgICAgICA+e2J5bGluZX08L3NwYW4+XG4gICAgICAgIDwvcD5cbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiBzZWN0aW9uRGF0ZUF1dGhvcjtcbiAgfVxuXG4gIGZpbHRlckJsb2dQb3N0VGV4dEVsZW1lbnRzKGNvbnRlbnQpIHtcbiAgICBjb25zdCBpbm5lckNvbnRlbnRFbGVtZW50cyA9IGNvbnRlbnQuZmlsdGVyKChjb250ZW50RWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgaW5uZXJDb250ZW50ID0gY29udGVudEVsZW1lbnQua2V5ID09PSAnaW5uZXItY29udGVudCc7XG4gICAgICByZXR1cm4gaW5uZXJDb250ZW50O1xuICAgIH0pWzBdLnByb3BzLmNoaWxkcmVuO1xuICAgIGNvbnN0IGJsb2dQb3N0VGV4dEVsZW1lbnRzID0gaW5uZXJDb250ZW50RWxlbWVudHMuZmlsdGVyKChjb250ZW50RWxlbWVudCkgPT4ge1xuICAgICAgY29uc3QgYmxvZ1Bvc3RUZXh0ID0gY29udGVudEVsZW1lbnQua2V5ID09PSAnYmxvZy1wb3N0X190ZXh0JztcbiAgICAgIHJldHVybiBibG9nUG9zdFRleHQ7XG4gICAgfSlbMF0ucHJvcHMudGV4dDtcbiAgICByZXR1cm4gYmxvZ1Bvc3RUZXh0RWxlbWVudHM7XG4gIH1cblxuICBtb3ZlQm90dG9tTW9iaWxlQWQoY29udGVudCkge1xuICAgIGNvbnN0IGJsb2dQb3N0VGV4dCA9IHRoaXMuZmlsdGVyQmxvZ1Bvc3RUZXh0RWxlbWVudHMoY29udGVudCk7XG4gICAgY29uc3QgbnVtYmVyT2ZQYXJhZ3JhcGhzID0gYmxvZ1Bvc3RUZXh0Lmxlbmd0aDtcbiAgICBjb25zdCBtb2JpbGVBZCA9IGJsb2dQb3N0VGV4dFtudW1iZXJPZlBhcmFncmFwaHMgLSAxXTtcbiAgICBpZiAobW9iaWxlQWQpIHtcbiAgICAgIGJsb2dQb3N0VGV4dC5wb3AoKTtcbiAgICAgIGNvbnRlbnQucHVzaChtb2JpbGVBZCk7XG4gICAgfVxuICB9XG5cblxuICBhZGRTaWJsaW5nc0xpc3Qoc2libGluZ0xpc3RQcm9wcykge1xuICAgIGNvbnN0IHtcbiAgICAgIHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0LFxuICAgICAgZmx5VGl0bGUsXG4gICAgICBzaWJsaW5nc0xpc3RUaXRsZSxcbiAgICAgIGVsZW1lbnRDbGFzc05hbWUsXG4gICAgICBjb250ZW50LFxuICAgICAgaXNzdWVTaWJsaW5nc0xpc3QsXG4gICAgICBhcnRpY2xlTGlzdFBvc2l0aW9uLFxuICAgICAgbmV4dEFydGljbGVMaW5rLFxuICAgICAgcHJpbnRFZGl0aW9uLFxuICAgIH0gPSBzaWJsaW5nTGlzdFByb3BzO1xuICAgIGNvbnN0IHNpYmxpbmdBcnRpY2xlcyA9IHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0ICYmIGlzc3VlU2libGluZ3NMaXN0ID9cbiAgICBpc3N1ZVNpYmxpbmdzTGlzdCA6IG51bGw7XG4gICAgY29uc3QgeyBzaWRlVGV4dCwgc2libGluZ0xpc3RTaWRlVGl0bGUsIGFydGljbGVGb290Tm90ZSB9ID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCBzaWJsaW5nTGlzdERhdGEgPSB7XG4gICAgICBzaWJsaW5nQXJ0aWNsZXMsXG4gICAgICBmbHlUaXRsZSxcbiAgICAgIGVsZW1lbnRDbGFzc05hbWUsXG4gICAgICBzaWJsaW5nc0xpc3RUaXRsZSxcbiAgICAgIHNpZGVUZXh0LFxuICAgICAgc2libGluZ0xpc3RTaWRlVGl0bGUsXG4gICAgfTtcbiAgICBjb25zdCBzaWJsaW5nQXJ0aWNsZXNMaXN0ID0gc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QgPyBzaWJsaW5nTGlzdChzaWJsaW5nTGlzdERhdGEpIDogbnVsbDtcbiAgICBsZXQgYmxvZ1Bvc3RUZXh0RWxlbWVudHMgPSBudWxsO1xuICAgIGlmIChzaG93U2libGluZ0FydGljbGVzTGlzdCB8fCBhcnRpY2xlRm9vdE5vdGUpIHtcbiAgICAgIGJsb2dQb3N0VGV4dEVsZW1lbnRzID0gdGhpcy5maWx0ZXJCbG9nUG9zdFRleHRFbGVtZW50cyhjb250ZW50KTtcbiAgICB9XG4gICAgaWYgKHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0ICYmIChibG9nUG9zdFRleHRFbGVtZW50cyB8fCAoY29udGVudCAmJiBuZXh0QXJ0aWNsZUxpbmspKSkge1xuICAgICAgYmxvZ1Bvc3RUZXh0RWxlbWVudHMuc3BsaWNlKGFydGljbGVMaXN0UG9zaXRpb24sIDAsIHNpYmxpbmdBcnRpY2xlc0xpc3QpO1xuICAgICAgY29udGVudC5zcGxpY2UoY29udGVudC5sZW5ndGggLSAxLCAwLCBuZXh0QXJ0aWNsZUxpbmspO1xuICAgIH1cbiAgICBpZiAoYXJ0aWNsZUZvb3ROb3RlICYmIHByaW50RWRpdGlvbikge1xuICAgICAgYmxvZ1Bvc3RUZXh0RWxlbWVudHMucHVzaChhcnRpY2xlRm9vdE5vdGUpO1xuICAgIH1cbiAgfVxuXG4gIGdlbmVyYXRlV3JhcHBlZElubmVyQ29udGVudChhc2lkZWFibGVDb250ZW50KSB7XG4gICAgbGV0IHdyYXBwZWRJbm5lckNvbnRlbnQgPSBbXTtcbiAgICB3cmFwcGVkSW5uZXJDb250ZW50ID0gdGhpcy5hZGRJbWFnZSh3cmFwcGVkSW5uZXJDb250ZW50LCB0aGlzLnByb3BzLmltYWdlKTtcbiAgICBpZiAoYXNpZGVhYmxlQ29udGVudC5sZW5ndGgpIHtcbiAgICAgIHdyYXBwZWRJbm5lckNvbnRlbnQucHVzaCgoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19hc2lkZWFibGUtd3JhcHBlclwiIGtleT1cImFzaWRlYWJsZS1jb250ZW50XCJcbiAgICAgICAgICByZWY9XCJhc2lkZWFibGVcIlxuICAgICAgICA+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJibG9nLXBvc3RfX2FzaWRlYWJsZS1jb250ZW50IGJsb2ctcG9zdF9fYXNpZGVhYmxlLWNvbnRlbnQtLW1ldGFcIj5cbiAgICAgICAgICAgIHthc2lkZWFibGVDb250ZW50fVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkpO1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5hdXRob3IpIHtcbiAgICAgIHdyYXBwZWRJbm5lckNvbnRlbnQucHVzaCg8QXV0aG9yIGtleT1cImJsb2ctcG9zdF9fYXV0aG9yXCIgYXV0aG9yPXt0aGlzLnByb3BzLmF1dGhvcn0gLz4pO1xuICAgIH1cbiAgICB3cmFwcGVkSW5uZXJDb250ZW50LnB1c2goPFRleHQgdGV4dD17dGhpcy5wcm9wcy50ZXh0fSBrZXk9XCJibG9nLXBvc3RfX3RleHRcIiAvPik7XG4gICAgd3JhcHBlZElubmVyQ29udGVudC5wdXNoKDxkaXYga2V5PVwiYmxvZy1wb3N0X19hZnRlci10ZXh0XCI+e3RoaXMucHJvcHMuYWZ0ZXJUZXh0fTwvZGl2Pik7XG4gICAgcmV0dXJuIHdyYXBwZWRJbm5lckNvbnRlbnQ7XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgY29uc3Qge1xuICAgICAgZmx5VGl0bGUsXG4gICAgICBzaG93U2libGluZ0FydGljbGVzTGlzdCxcbiAgICAgIHNpYmxpbmdMaXN0U2lkZVRpdGxlLFxuICAgICAgaXNzdWVTaWJsaW5nc0xpc3QsXG4gICAgICBhcnRpY2xlTGlzdFBvc2l0aW9uLFxuICAgICAgbmV4dEFydGljbGVMaW5rLFxuICAgICAgcHJpbnRFZGl0aW9uLFxuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHNpYmxpbmdzTGlzdFRpdGxlID0gdGhpcy5wcm9wcy5zZWN0aW9uTmFtZTtcbiAgICBjb25zdCBlbGVtZW50Q2xhc3NOYW1lID0gc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QgJiYgdGhpcy5wcm9wcy5jbGFzc05hbWVNb2RpZmllciA/XG4gICAgICBgYmxvZy1wb3N0X19zaWJsaW5ncy1saXN0LS0keyB0aGlzLnByb3BzLmNsYXNzTmFtZU1vZGlmaWVyIH1gIDogJyc7XG4gICAgbGV0IGNvbnRlbnQgPSBbXTtcbiAgICAvLyBhc2lkZSBhbmQgdGV4dCBjb250ZW50IGFyZSB3cmFwcGVkIHRvZ2V0aGVyIGludG8gYSBjb21wb25lbnQuXG4gICAgLy8gdGhhdCBtYWtlcyBpdCBlYXNpZXIgdG8gbW92ZSB0aGUgYXNpZGUgYXJvdW5kIHJlbGF0aXZlbHkgdG8gaXRzIGNvbnRhaW50ZXJcbiAgICBjb25zdCBhc2lkZWFibGVDb250ZW50ID0gW107XG4gICAgbGV0IHNlY3Rpb25EYXRlQXV0aG9yID0gW107XG4gICAgY29udGVudCA9IHRoaXMuYWRkUnVicmljKGNvbnRlbnQsIHRoaXMucHJvcHMucnVicmljKTtcbiAgICBzZWN0aW9uRGF0ZUF1dGhvciA9IHRoaXMuYWRkQmxvZ1Bvc3RTZWN0aW9uKHNlY3Rpb25EYXRlQXV0aG9yLCB0aGlzLnByb3BzLnNlY3Rpb24sIHRoaXMucHJvcHMuc2VjdGlvblVybCk7XG4gICAgc2VjdGlvbkRhdGVBdXRob3IgPSB0aGlzLmFkZERhdGVUaW1lKHNlY3Rpb25EYXRlQXV0aG9yLCB0aGlzLnByb3BzKTtcbiAgICBzZWN0aW9uRGF0ZUF1dGhvciA9IHRoaXMuYWRkQnlMaW5lKHNlY3Rpb25EYXRlQXV0aG9yLCB0aGlzLnByb3BzLmJ5bGluZSk7XG4gICAgaWYgKHNlY3Rpb25EYXRlQXV0aG9yLmxlbmd0aCkge1xuICAgICAgYXNpZGVhYmxlQ29udGVudC5wdXNoKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19zZWN0aW9uLWRhdGUtYXV0aG9yXCJcbiAgICAgICAgICBrZXk9XCJibG9nLXBvc3RfX3NlY3Rpb24tZGF0ZS1hdXRob3JcIlxuICAgICAgICA+XG4gICAgICAgICAge3NlY3Rpb25EYXRlQXV0aG9yfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gU2hhcmUgYmFyIHB1YmxpY2F0aW9uRGF0ZSBmb3JtYXR0ZWRcbiAgICBsZXQgc2hhcmVCYXJQdWJsaWNhdGVEYXRlID0gbmV3IERhdGUodGhpcy5wcm9wcy5wdWJsaWNhdGlvbkRhdGUgKiAxMDAwKSAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG4gICAgc2hhcmVCYXJQdWJsaWNhdGVEYXRlID0gYCR7IFN0cmluZyhzaGFyZUJhclB1YmxpY2F0ZURhdGUuZ2V0RnVsbFllYXIoKSkgfVxuICAgICR7IFN0cmluZyh0d29EaWdpdHMoc2hhcmVCYXJQdWJsaWNhdGVEYXRlLmdldE1vbnRoKCkgKyAxKSkgfVxuICAgICR7IFN0cmluZyh0d29EaWdpdHMoc2hhcmVCYXJQdWJsaWNhdGVEYXRlLmdldERhdGUoKSkpIH1gLnJlcGxhY2UoL1xccy9nLCAnJyk7XG4gICAgY29uc3Qgc2hhcmVCYXJEZWZhdWx0ID1cbiAgICAgICg8U2hhcmVCYXJcbiAgICAgICAga2V5PVwic2hhcmViYXJcIlxuICAgICAgICB0eXBlPXt0aGlzLnByb3BzLnR5cGUgPT09ICdwb3N0JyA/ICdCTCcgOiAnQSd9XG4gICAgICAgIHRpdGxlPXt0aGlzLnByb3BzLnRpdGxlfVxuICAgICAgICBmbHlUaXRsZT17dGhpcy5wcm9wcy5mbHlUaXRsZX1cbiAgICAgICAgcHVibGljYXRpb25EYXRlPXtzaGFyZUJhclB1YmxpY2F0ZURhdGV9XG4gICAgICAgIGNvbnRlbnRJRD17dGhpcy5wcm9wcy5pZH1cbiAgICAgICAvPik7XG4gICAgYXNpZGVhYmxlQ29udGVudC5wdXNoKFxuICAgICAgc2hhcmVCYXJEZWZhdWx0XG4gICAgKTtcbiAgICBjb25zdCB3cmFwcGVkSW5uZXJDb250ZW50ID0gdGhpcy5nZW5lcmF0ZVdyYXBwZWRJbm5lckNvbnRlbnQoYXNpZGVhYmxlQ29udGVudCk7XG4gICAgY29udGVudC5wdXNoKDxkaXYgY2xhc3NOYW1lPVwiYmxvZy1wb3N0X19pbm5lclwiIGtleT1cImlubmVyLWNvbnRlbnRcIj57d3JhcHBlZElubmVyQ29udGVudH08L2Rpdj4pO1xuICAgIGNvbnN0IHsgY29tbWVudENvdW50LCBjb21tZW50U3RhdHVzIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCBjb21tZW50U2VjdGlvbiA9IG51bGw7XG4gICAgaWYgKGNvbW1lbnRTdGF0dXMgIT09ICdkaXNhYmxlZCcgJiYgIShjb21tZW50U3RhdHVzID09PSAncmVhZG9ubHknICYmIGNvbW1lbnRDb3VudCA9PT0gMCkpIHtcbiAgICAgIGNvbW1lbnRTZWN0aW9uID0gKFxuICAgICAgICA8Q29tbWVudHNcbiAgICAgICAgICBrZXk9XCJibG9nLXBvc3RfX2NvbW1lbnRzXCJcbiAgICAgICAgICBmaXJzdFRvQ29tbWVudExhYmVsPXt0aGlzLnByb3BzLmZpcnN0VG9Db21tZW50TGFiZWx9XG4gICAgICAgICAgY29tbWVudENvdW50PXtjb21tZW50Q291bnR9XG4gICAgICAgICAgdmlld0NvbW1lbnRzTGFiZWw9e3RoaXMucHJvcHMudmlld0NvbW1lbnRzTGFiZWx9XG4gICAgICAgICAgY29tbWVudHNVcmk9e3RoaXMucHJvcHMuY29tbWVudHNVcml9XG4gICAgICAgIC8+XG4gICAgICApO1xuICAgIH1cbiAgICBjb250ZW50LnB1c2goXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImJsb2ctcG9zdF9fYm90dG9tLXBhbmVsXCIga2V5PVwiYmxvZy1wb3N0X19ib3R0b20tcGFuZWxcIj5cbiAgICAgICAge3NoYXJlQmFyRGVmYXVsdH1cbiAgICAgICAge2NvbW1lbnRTZWN0aW9ufVxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgICB0aGlzLm1vdmVCb3R0b21Nb2JpbGVBZChjb250ZW50KTtcblxuICAgIGNvbnN0IFRpdGxlQ29tcG9uZW50ID0gdGhpcy5wcm9wcy5UaXRsZUNvbXBvbmVudDtcbiAgICBjb25zdCBhcnRpY2xlSGVhZGVyID0gc2hvd1NpYmxpbmdBcnRpY2xlc0xpc3QgPyAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9e2BibG9nLXBvc3RfX3NpYmxpbmdzLWxpc3QtaGVhZGVyICR7IGVsZW1lbnRDbGFzc05hbWUgfWB9PlxuICAgICAgICB7c2libGluZ3NMaXN0VGl0bGV9XG4gICAgICA8L3NwYW4+XG4gICAgKSA6IG51bGw7XG4gICAgY29uc3Qgc2libGluZ0xpc3RQcm9wcyA9IHtcbiAgICAgIHNob3dTaWJsaW5nQXJ0aWNsZXNMaXN0LFxuICAgICAgZmx5VGl0bGUsXG4gICAgICBzaWJsaW5nc0xpc3RUaXRsZSxcbiAgICAgIGVsZW1lbnRDbGFzc05hbWUsXG4gICAgICBjb250ZW50LFxuICAgICAgaXNzdWVTaWJsaW5nc0xpc3QsXG4gICAgICBhcnRpY2xlTGlzdFBvc2l0aW9uLFxuICAgICAgbmV4dEFydGljbGVMaW5rLFxuICAgICAgcHJpbnRFZGl0aW9uLFxuICAgIH07XG4gICAgdGhpcy5hZGRTaWJsaW5nc0xpc3Qoc2libGluZ0xpc3RQcm9wcyk7XG4gICAgcmV0dXJuIChcbiAgICAgIDxhcnRpY2xlXG4gICAgICAgIGl0ZW1TY29wZVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzbmFtZXMoJ2Jsb2ctcG9zdCcsIHRoaXMucHJvcHMuY2xhc3NOYW1lKX1cbiAgICAgICAgaXRlbVByb3A9e3RoaXMucHJvcHMuaXRlbVByb3B9XG4gICAgICAgIGl0ZW1UeXBlPXt0aGlzLnByb3BzLml0ZW1UeXBlfVxuICAgICAgICByb2xlPVwiYXJ0aWNsZVwiXG4gICAgICAgIHJlZj1cImFydGljbGVcIlxuICAgICAgPlxuICAgICAgICB7YXJ0aWNsZUhlYWRlcn1cbiAgICAgICAgPFRpdGxlQ29tcG9uZW50XG4gICAgICAgICAgdGl0bGU9e3RoaXMucHJvcHMudGl0bGV9XG4gICAgICAgICAgZmx5VGl0bGU9e2dlbmVyYXRlQmxvZ1Bvc3RGbHlUaXRsZShzaG93U2libGluZ0FydGljbGVzTGlzdCwgc2libGluZ0xpc3RTaWRlVGl0bGUsIGZseVRpdGxlKX1cbiAgICAgICAgICBIZWFkaW5nPXtcImgxXCJ9XG4gICAgICAgICAgdGl0bGVDbGFzc05hbWU9e3Nob3dTaWJsaW5nQXJ0aWNsZXNMaXN0ID9cbiAgICAgICAgICAgIGBmbHl0aXRsZS1hbmQtdGl0bGVfX3NpYmxpbmdzLWxpc3QtdGl0bGUgJHsgZWxlbWVudENsYXNzTmFtZSB9YCA6ICcnfVxuICAgICAgICAgIGZseVRpdGxlQ2xhc3NOYW1lPXtzaG93U2libGluZ0FydGljbGVzTGlzdCA/XG4gICAgICAgICAgICBgZmx5dGl0bGUtYW5kLXRpdGxlX19zaWJsaW5ncy1saXN0LWZseXRpdGxlICR7IGVsZW1lbnRDbGFzc05hbWUgfWAgOiAnJ31cbiAgICAgICAgLz5cbiAgICAgICAge2NvbnRlbnR9XG4gICAgICA8L2FydGljbGU+XG4gICAgKTtcbiAgfVxufVxuIl19
{
"name": "@economist/component-blog-post",
"version": "1.23.1",
"version": "1.23.2",
"description": "Blog post",

@@ -5,0 +5,0 @@ "homepage": "https://github.com/economist-components/component-blog-post",

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