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

zater-docx-pdf2

Package Overview
Dependencies
Maintainers
1
Versions
235
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

zater-docx-pdf2 - npm Package Compare versions

Comparing version 4.0.22 to 4.0.23

2

package.json
{
"name": "zater-docx-pdf2",
"version": "4.0.22",
"version": "4.0.23",
"description": "ZAter doc2pdf",

@@ -5,0 +5,0 @@ "main": "index.js",

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

return Promise.resolve(this.makeCPF(data)).then(res => _extends({}, res, {
clientResume: `${data.socialReason}, pessoa jurídica de direito privado, inscrita no CNPJ nº ${data.clientCNPJ}, com sede na ${data.companyStreet} ${data.companyComplement}, CEP ${data.companyCEP}, ${data.companyCity}, ${data.companyState}, representado por ${data.partnerClientName}, ${data.partnerCivilState}, ${data.partnerProfession}, portador do RG nº ${data.partnerPersonalRegister}, inscrito no CPF sob o nº ${CPF.format(data.partnerPersonalDocument)}, residente e domiciliado a ${data.partnerAddress} ${data.partnerAddressComplement}, CEP ${data.partnerPostalCode}`
clientResume: `${data.socialReason}, pessoa jurídica de direito privado, inscrita no CNPJ nº ${data.clientCNPJ}, com sede na ${data.companyStreet} ${data.companyComplement}, CEP ${data.companyCEP}, ${data.companyCity}, ${data.companyState}, representado por ${data.partnerClientName}, ${data.partnerCivilState}, ${data.partnerProfession == '' ? data.partnerProfession + ',' : ''} portador do RG nº ${data.partnerPersonalRegister}, inscrito no CPF sob o nº ${CPF.format(data.partnerPersonalDocument)}, residente e domiciliado a ${data.partnerAddress} ${data.partnerAddressComplement}, CEP ${data.partnerPostalCode}`
// clientResume: `, pessoa jurídica de direito privado, inscrita no CNPJ nº ${data.clientCNPJ}, com sede na

@@ -274,2 +274,2 @@ // ${data.companyStreet}

module.exports = (Docx, DigitalData, Storage, PdfGenerator) => new Contract(Docx, DigitalData, Storage, PdfGenerator);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb21haW4vQ29udHJhY3QuanMiXSwibmFtZXMiOlsibnVtZXJvUG9yRXh0ZW5zbyIsInJlcXVpcmUiLCJDUEYiLCJDb250cmFjdCIsIkNvbnRyYWN0RGVjb3JhdG9yIiwiY29uc3RydWN0b3IiLCJEb2N4IiwiRGlnaXRhbERhdGEiLCJTM1N0b3JhZ2UiLCJQZGZHZW5lcmF0b3IiLCJTdG9yYWdlIiwic2V0RGlnaXRhbERhdGEiLCJzZXRDb25maWciLCJjb25maWciLCJtYWtlQ1BGIiwiZGF0YSIsImNvdGFjYW8iLCJ0aGVuIiwicmVzIiwianNvbiIsInJlc3BvbnNlIiwiY2xlYW4iLCJyZXBsYWNlIiwicGFyc2VJbnQiLCJ2YWx1ZSIsInRvRml4ZWQiLCJ2YWwiLCJwb3JFeHRlbnNvIiwicGFyc2VGbG9hdCIsImVzdGlsbyIsIm1vbmV0YXJpbyIsImFtb3VudE1vbmV5IiwicmVnaXN0ZXJEb2N1bWVudCIsImNsaWVudENQRiIsImZvcm1hdCIsImNvbnRyYWN0IiwiaW52ZXN0bWVudElkIiwiaWQiLCJ0eXBlIiwicGVuYWx0eVBvcmNlbnQiLCJwZW5hbHR5QWR2IiwiY2xpZW50TmFtZSIsIm1hbmFnZXJOYW1lIiwiY29udHJhY3ROdW1iZXIiLCJjb250cmFjdEVuZCIsImNvbnRyYWN0VGF4ZSIsImNvbnRyYWN0VHJhZGUiLCJhbW91bnRDcnlwdCIsImNvbnRyYWN0UG9yY2VudCIsImNvbnRyYWN0UG9yY2VudFRvdGFsIiwiYmFua05hbWUiLCJiYW5rIiwibmFtZSIsImJhbmtUaXR1bGFyIiwidXNlck5hbWUiLCJiYW5rQWdlbmN5IiwiYWdlbmN5IiwiYmFua0FjY291bnQiLCJhY2NvdW50IiwiYmFua0NvZGUiLCJjb2RlIiwiaW1hZ2UiLCJkYXRlIiwiRGF0ZSIsImNsaWVudFJlc3VtZSIsImNsaWVudE5hdGlvbmFsaXR5IiwiY2xpZW50Q2l2aWxTdGF0ZSIsImNsaWVudE9jY3VwYXRpb24iLCJjbGllbnRSRyIsImNsaWVudFN0cmVldCIsImNsaWVudENvbXBsZW1lbnQiLCJjbGllbnRDRVAiLCJjbGllbnRDaXR5IiwiY2xpZW50U3RhdGUiLCJtYWtlQ05QSiIsIlByb21pc2UiLCJyZXNvbHZlIiwic29jaWFsUmVhc29uIiwiY2xpZW50Q05QSiIsImNvbXBhbnlTdHJlZXQiLCJjb21wYW55Q29tcGxlbWVudCIsImNvbXBhbnlDRVAiLCJjb21wYW55Q2l0eSIsImNvbXBhbnlTdGF0ZSIsInBhcnRuZXJDbGllbnROYW1lIiwicGFydG5lckNpdmlsU3RhdGUiLCJwYXJ0bmVyUHJvZmVzc2lvbiIsInBhcnRuZXJQZXJzb25hbFJlZ2lzdGVyIiwicGFydG5lclBlcnNvbmFsRG9jdW1lbnQiLCJwYXJ0bmVyQWRkcmVzcyIsInBhcnRuZXJBZGRyZXNzQ29tcGxlbWVudCIsInBhcnRuZXJQb3N0YWxDb2RlIiwibWFrZSIsInVzZXJJZCIsImRhdGFDb250cmFjdCIsImF3cyIsInNldFR5cGUiLCJnZW5lcmF0b3JMYXN0IiwidW5kZWZpbmVkIiwiRXJyb3JEb2N4UGRmIiwiZ2VuZXJhdGUiLCJzZXRCdWNrZXQiLCJidWNrZXQiLCJzZXREZXN0aW5hdGlvbkRpciIsInNldEZpbGUiLCJ1cGxvYWQiLCJKU09OIiwic3RyaW5naWZ5IiwicGFyc2UiLCJyZXN1bHQiLCJjb250cmFjdFVybCIsIkxvY2F0aW9uIiwic3RhdHVzIiwic2F2ZSIsImNhdGNoIiwiZSIsInJlamVjdCIsInZpZXciLCJjbGllbnRJZCIsInVwZGF0ZSIsImluc2VydFNpZ25hdHVyZSIsIm1ha2VEb2N1bWVudCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxNQUFNQSxtQkFBbUJDLFFBQVEsb0JBQVIsQ0FBekI7QUFDQSxNQUFNQyxNQUFNRCxRQUFRLEtBQVIsQ0FBWjs7QUFFQSxNQUFNRSxRQUFOLFNBQXVCQywyQkFBdkIsQ0FBeUM7O0FBRXZD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LE9BQUtzRyxNQUFMLENBQVlyRyxHQUFaLEVBQWlCNEUsYUFBYXpELEVBQTlCLENBQVA7QUFBQSxTQWxCRCxFQW1CSjZFLEtBbkJJLENBbUJFLFVBQUNDLENBQUQsRUFBTztBQUFFLGdCQUFNQSxDQUFOO0FBQVUsU0FuQnJCLENBQVA7QUFvQkQsT0FoQ0QsQ0FnQ0UsT0FBT0EsQ0FBUCxFQUFVO0FBQ1YsZUFBT3hDLFFBQVF5QyxNQUFSLENBQWVELENBQWYsQ0FBUDtBQUNEO0FBbkNpRDtBQW9DbkQ7O0FBRUtNLGNBQU4sQ0FBbUIzQixZQUFuQixFQUFnQztBQUFBOztBQUFBO0FBQzlCLFVBQUlBLGFBQWFoQixVQUFiLEtBQTRCb0IsU0FBaEMsRUFBMkM7QUFDekMsZUFBTyxNQUFNLE9BQUt4QixRQUFMLENBQWNvQixZQUFkLENBQWI7QUFDQTtBQUNELE9BSEQsTUFHTztBQUNMLGVBQU8sTUFBTSxPQUFLaEYsT0FBTCxDQUFhZ0YsWUFBYixDQUFiO0FBQ0E7QUFDRDtBQVA2QjtBQVEvQjtBQTdMc0M7O0FBZ016QzRCLE9BQU9DLE9BQVAsR0FBaUIsQ0FBQ3JILElBQUQsRUFBT0MsV0FBUCxFQUFvQkcsT0FBcEIsRUFBNkJELFlBQTdCLEtBQThDLElBQUlOLFFBQUosQ0FBYUcsSUFBYixFQUFtQkMsV0FBbkIsRUFBZ0NHLE9BQWhDLEVBQXlDRCxZQUF6QyxDQUEvRCIsImZpbGUiOiJDb250cmFjdC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFcnJvckRvY3hQZGYgZnJvbSAnLi4vbGliL0Vycm9yRG9jeFBkZic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBkYXRlRm9ybWF0IGZyb20gJy4uL2xpYi9kYXRlJztcbmltcG9ydCBiYXNlNjRJTUdCdWZmZXIgZnJvbSAnLi4vbGliL2Jhc2U2NElNR3RvQnVmZmVyJztcbmltcG9ydCBDb250cmFjdERlY29yYXRvciBmcm9tICcuLi9kZWNvcmF0b3JzL0NvbnRyYWN0RGVjb3JhdG9yJztcbmltcG9ydCBmZXRjaCBmcm9tICdub2RlLWZldGNoJztcbmltcG9ydCBtb21lbnQgZnJvbSAnbW9tZW50JztcblxuY29uc3QgbnVtZXJvUG9yRXh0ZW5zbyA9IHJlcXVpcmUoJ251bWVyby1wb3ItZXh0ZW5zbycpO1xuY29uc3QgQ1BGID0gcmVxdWlyZSgnY3BmJyk7XG5cbmNsYXNzIENvbnRyYWN0IGV4dGVuZHMgQ29udHJhY3REZWNvcmF0b3Ige1xuXG4gIGNvbnN0cnVjdG9yKERvY3gsIERpZ2l0YWxEYXRhLCBTM1N0b3JhZ2UsIFBkZkdlbmVyYXRvcikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5TdG9yYWdlICAgICAgPSBTM1N0b3JhZ2U7XG4gICAgdGhpcy5Eb2N4ICAgICAgICAgPSBEb2N4O1xuICAgIHRoaXMuUGRmR2VuZXJhdG9yID0gUGRmR2VuZXJhdG9yO1xuICAgIHRoaXMuc2V0RGlnaXRhbERhdGEoRGlnaXRhbERhdGEpO1xuICB9XG5cbiAgc2V0Q29uZmlnKGNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuU3RvcmFnZSA9IHRoaXMuU3RvcmFnZShjb25maWcpO1xuICB9XG5cblxuICBhc3luYyBtYWtlQ1BGKGRhdGEpIHtcbiAgICBjb25zdCBjb3RhY2FvID0gYXdhaXQgZmV0Y2goJ2h0dHBzOi8vd3d3LmJ0Y2J1eXNob3AuY29tL2FwaS9jcmF3bGVycy9pY29pbm9taWEnKVxuICAgICAgLnRoZW4ocmVzID0+IHJlcy5qc29uKCkpXG4gICAgICAudGhlbihqc29uID0+IGpzb24ucmVzcG9uc2UuY2xlYW4ucmVwbGFjZSgvW1xcRF0rL2csICcnKSlcbiAgICAgIC50aGVuKHZhbHVlID0+IHBhcnNlSW50KHZhbHVlKSlcbiAgICAgIC50aGVuKHZhbHVlID0+ICh2YWx1ZSAvIDEwMCkudG9GaXhlZCgyKSk7XG5cbiAgICBjb25zdCB2YWwgPSBudW1lcm9Qb3JFeHRlbnNvLnBvckV4dGVuc28ocGFyc2VGbG9hdChjb3RhY2FvKSwgbnVtZXJvUG9yRXh0ZW5zby5lc3RpbG8ubW9uZXRhcmlvKTtcbiAgICBjb25zdCBhbW91bnRNb25leSA9IGAke2NvdGFjYW99ICgke3ZhbH0pYDtcbiAgICBjb25zdCByZWdpc3RlckRvY3VtZW50ID0gZGF0YS5jbGllbnRDUEYgPyBDUEYuZm9ybWF0KGRhdGEuY2xpZW50Q1BGKSA6ICcnO1xuICAgIC8vIGNvbnN0IHt5ZWFyLCBtb250aCwgZGF5fSA9IGRhdGVGb3JtYXQuZGF0ZVBUQlIoKTtcbiAgICBjb25zdCBjb250cmFjdCA9IHtcbiAgICAgIGludmVzdG1lbnRJZDogZGF0YS5pZCxcbiAgICAgIHR5cGU6IGRhdGEudHlwZSxcbiAgICAgIHBlbmFsdHlQb3JjZW50OiBkYXRhLnBlbmFsdHlQb3JjZW50IHx8IDAsXG4gICAgICBwZW5hbHR5QWR2OiBkYXRhLnBlbmFsdHlBZHYgfHwgMCxcbiAgICAgIGNsaWVudE5hbWU6IGRhdGEuY2xpZW50TmFtZSB8fCAnRGFuaWVsIFNpbHZhIE1pcmFuZGEnLFxuICAgICAgbWFuYWdlck5hbWU6IGRhdGEubWFuYWdlck5hbWUgfHwgJ0RhbmllbCBTaWx2YSBNaXJhbmRhJywgICAgICAgIFxuICAgICAgY29udHJhY3ROdW1iZXI6IGRhdGEuY29udHJhY3ROdW1iZXIgfHwgJ0V4ZW1wbG8nLFxuICAgICAgY29udHJhY3RFbmQ6IGRhdGEuY29udHJhY3RFbmQgfHwgJzAwLzAwLzAwMDAnLFxuICAgICAgY29udHJhY3RUYXhlOiBkYXRhLmNvbnRyYWN0VGF4ZSB8fCAwLFxuICAgICAgY29udHJhY3RUcmFkZTogZGF0YS5jb250cmFjdFRyYWRlIHx8IDAsXG4gICAgICBhbW91bnRDcnlwdDogZGF0YS5hbW91bnRDcnlwdCB8fCAwLFxuICAgICAgY29udHJhY3RQb3JjZW50OiBkYXRhLmNvbnRyYWN0UG9yY2VudCB8fCAwLFxuICAgICAgY29udHJhY3RQb3JjZW50VG90YWw6IGRhdGEuY29udHJhY3RQb3JjZW50VG90YWwgfHwgMCxcbiAgICAgIGJhbmtOYW1lOiBkYXRhLmJhbmsubmFtZSB8fCAnQlRDIEJhbmNvJyxcbiAgICAgIGJhbmtUaXR1bGFyOiBkYXRhLmJhbmsudXNlck5hbWUgfHwgJ0JUQyBCYW5jbycsXG4gICAgICBiYW5rQWdlbmN5OiBkYXRhLmJhbmsuYWdlbmN5IHx8ICcwMDAwJyxcbiAgICAgIGJhbmtBY2NvdW50OiBkYXRhLmJhbmsuYWNjb3VudCB8fCAnMDAwMC0wMCcsXG4gICAgICBiYW5rQ29kZTogZGF0YS5iYW5rLmNvZGUgfHwgJzAwMDAtMDAnLCAgICAgIFxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICBpbWFnZTogYmFzZTY0SU1HQnVmZmVyKGRhdGEuaW1hZ2UpLFxuICAgICAgYW1vdW50TW9uZXksXG4gICAgICAuLi5kYXRlRm9ybWF0KCksXG4gICAgICBkYXRlOiBtb21lbnQobmV3IERhdGUoKSkuZm9ybWF0KCdERC9NTS9ZWVlZJyksICAgICAgIFxuICAgICAgY2xpZW50UmVzdW1lOiBgJHtkYXRhLmNsaWVudE5hbWV9LCBuYXR1cmFsIGRlICR7ZGF0YS5jbGllbnROYXRpb25hbGl0eX0sICR7ZGF0YS5jbGllbnRDaXZpbFN0YXRlfSwgXG4gICAgICAke2RhdGEuY2xpZW50T2NjdXBhdGlvbn0sXG4gICAgICBwb3J0YWRvciBkbyBSRyBuwrogJHtkYXRhLmNsaWVudFJHfSwgaW5zY3JpdG8gbm8gQ1BGIHNvYiBvIG7CuiAke3JlZ2lzdGVyRG9jdW1lbnR9LCByZXNpZGVudGUgZSBcbiAgICAgIGRvbWljaWxpYWRvIGFcbiAgICAgICR7ZGF0YS5jbGllbnRTdHJlZXR9XG4gICAgICAke2RhdGEuY2xpZW50Q29tcGxlbWVudCB8fCAnJ30sIENFUCAke2RhdGEuY2xpZW50Q0VQfSwgJHtkYXRhLmNsaWVudENpdHl9ICR7ZGF0YS5jbGllbnRTdGF0ZX1gIHx8ICcgJyxcbiAgICB9OyAgICBcbiAgICByZXR1cm4gY29udHJhY3Q7XG4gIH1cblxuICBtYWtlQ05QSihkYXRhKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLm1ha2VDUEYoZGF0YSkpLnRoZW4oKHJlcykgPT4gXG4gICAgICAoeyAgICAgIFxuICAgICAgICAuLi5yZXMsICAgICAgIFxuICAgICAgICBjbGllbnRSZXN1bWU6IGAke2RhdGEuc29jaWFsUmVhc29ufSwgcGVzc29hIGp1csOtZGljYSBkZSBkaXJlaXRvIHByaXZhZG8sIGluc2NyaXRhIG5vIENOUEogbsK6ICR7ZGF0YS5jbGllbnRDTlBKfSwgY29tIHNlZGUgbmEgJHtkYXRhLmNvbXBhbnlTdHJlZXR9ICR7ZGF0YS5jb21wYW55Q29tcGxlbWVudH0sIENFUCAke2RhdGEuY29tcGFueUNFUH0sICR7ZGF0YS5jb21wYW55Q2l0eX0sICR7ZGF0YS5jb21wYW55U3RhdGV9LCByZXByZXNlbnRhZG8gcG9yICR7ZGF0YS5wYXJ0bmVyQ2xpZW50TmFtZX0sICR7ZGF0YS5wYXJ0bmVyQ2l2aWxTdGF0ZX0sICR7ZGF0YS5wYXJ0bmVyUHJvZmVzc2lvbn0sIHBvcnRhZG9yIGRvIFJHIG7CuiAke2RhdGEucGFydG5lclBlcnNvbmFsUmVnaXN0ZXJ9LCBpbnNjcml0byBubyBDUEYgc29iIG8gbsK6ICR7Q1BGLmZvcm1hdChkYXRhLnBhcnRuZXJQZXJzb25hbERvY3VtZW50KX0sIHJlc2lkZW50ZSBlIGRvbWljaWxpYWRvIGEgJHtkYXRhLnBhcnRuZXJBZGRyZXNzfSAke2RhdGEucGFydG5lckFkZHJlc3NDb21wbGVtZW50fSwgQ0VQICR7ZGF0YS5wYXJ0bmVyUG9zdGFsQ29kZX1gLFxuICAgICAgICAvLyBjbGllbnRSZXN1bWU6IGAsIHBlc3NvYSBqdXLDrWRpY2EgZGUgZGlyZWl0byBwcml2YWRvLCBpbnNjcml0YSBubyBDTlBKIG7CuiAke2RhdGEuY2xpZW50Q05QSn0sIGNvbSBzZWRlIG5hXG4gICAgICAgIC8vICR7ZGF0YS5jb21wYW55U3RyZWV0fVxuICAgICAgICAvLyAkeyBkYXRhLmNvbXBhbnlDb21wbGVtZW50ID8gZGF0YS5jb21wYW55Q29tcGxlbWVudCA6ICcnfSwgQ0VQICR7ZGF0YS5jb21wYW55Q0VQfSwgJHtkYXRhLmNvbXBhbnlDaXR5fSAke2RhdGEuY29tcGFueVN0YXRlfWAsXG4gICAgIH0pXG4gICAgKTsgICAgXG4gIH1cbiAgXG4gIGFzeW5jIG1ha2UodXNlcklkLCBkYXRhQ29udHJhY3QsIGNvbmZpZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbmZpZyhjb25maWcuYXdzKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VHlwZShjb25maWcuY29udHJhY3QpO1xuICAgICAgZGF0YUNvbnRyYWN0LmNvbnRyYWN0TnVtYmVyID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JMYXN0KCk7XG4gICAgICBpZiAodGhpcy5jb25maWcgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yRG9jeFBkZignQ29uZmlndXJhw6fDo28gbsOjbyBpbmljaWFsaXphZGEnKTtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgLy8gbGV0IGZpbGU7XG5cbiAgICAgIGlmIChkYXRhQ29udHJhY3QuY2xpZW50Q05QSiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLm1ha2VDTlBKKGRhdGFDb250cmFjdCk7XG4gICAgICAgIC8vIGZpbGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi8uLi8uLi9hc3NldHMvZG9jRXguZG9jeCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMubWFrZUNQRihkYXRhQ29udHJhY3QpO1xuICAgICAgICAvLyBmaWxlID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vLi4vLi4vYXNzZXRzL2RvY0V4LmRvY3gnKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5QZGZHZW5lcmF0b3IuZ2VuZXJhdGUoZGF0YSwgdXNlcklkKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5TdG9yYWdlLnNldEJ1Y2tldChjb25maWcuYnVja2V0KSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnNldERlc3RpbmF0aW9uRGlyKCdjb250cmFjdHMnKSlcbiAgICAgICAgLy8gLnRoZW4oKCkgPT4gdGhpcy5Eb2N4Lm1ha2VDb250cmFjdChmaWxlLCBkYXRhKSlcbiAgICAgICAgLy8gLnRoZW4oKCkgPT4gdGhpcy5QZGZHZW5lcmF0b3IuZ2VuZXJhdGUoZGF0YSkpXG4gICAgICAgIC8vIC50aGVuKHJlcyA9PiBCdWZmZXIuZnJvbShyZXMsICdiYXNlNjQnKSlcbiAgICAgICAgLy8gLnRoZW4ocmVzID0+IHRoaXMuU3RvcmFnZS5zZXRGaWxlQnVmZmVyKHsgZGF0YTogcmVzLCB0eXBlOiAncGRmJyB9KSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnNldEZpbGUoYC4vJHt1c2VySWR9LnBkZmApKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2UudXBsb2FkKCkpXG4gICAgICAgIC50aGVuKHJlcyA9PiBKU09OLnN0cmluZ2lmeShyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gSlNPTi5wYXJzZShyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gUHJvbWlzZS5yZXNvbHZlKGRhdGEpXG4gICAgICAgICAgLnRoZW4ocmVzdWx0ID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBjb250cmFjdFVybDogcmVzLkxvY2F0aW9uLFxuICAgICAgICAgICAgc3RhdHVzOiAnQXRpdm8nLFxuICAgICAgICAgIH0pKSlcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuc2F2ZSh1c2VySWQsIHJlcykpXG4gICAgICAgIC5jYXRjaCgoZSkgPT4geyB0aHJvdyBlOyB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdmlldyhkYXRhQ29udHJhY3QsIGNvbmZpZykge1xuXG4gICAgLy9jb25zb2xlLmxvZyhkYXRhQ29udHJhY3QpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRDb25maWcoY29uZmlnLmF3cyk7XG4gICAgICBhd2FpdCB0aGlzLnNldFR5cGUoY29uZmlnLmNvbnRyYWN0KTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZyA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3JEb2N4UGRmKCdDb25maWd1cmHDp8OjbyBuw6NvIGluaWNpYWxpemFkYScpO1xuXG4gICAgICBjb25zdCBkYXRhID0gZGF0YUNvbnRyYWN0XG5cbiAgICAgIGF3YWl0IHRoaXMuUGRmR2VuZXJhdG9yLmdlbmVyYXRlKGRhdGEsIGRhdGEuY2xpZW50SWQpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLlN0b3JhZ2Uuc2V0QnVja2V0KGNvbmZpZy5idWNrZXQpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2Uuc2V0RGVzdGluYXRpb25EaXIoJ2NvbnRyYWN0cycpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2Uuc2V0RmlsZShgLi8ke2RhdGEuY2xpZW50SWR9LnBkZmApKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2UudXBsb2FkKCkpXG4gICAgICAgIC50aGVuKHJlcyA9PiBQcm9taXNlLnJlc29sdmUoZGF0YSlcbiAgICAgICAgICAudGhlbihyZXN1bHQgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGNvbnRyYWN0VXJsOiByZXMuTG9jYXRpb24sXG4gICAgICAgICAgICBzdGF0dXM6ICdBdGl2bycsXG4gICAgICAgICAgfSkpKVxuICAgICAgICAudGhlbihyZXMgPT4gdGhpcy51cGRhdGUocmVzKSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7IHRocm93IGU7IH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbnNlcnRTaWduYXR1cmUodXNlcklkLCBkYXRhQ29udHJhY3QsIGNvbmZpZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbmZpZyhjb25maWcuYXdzKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VHlwZShjb25maWcuY29udHJhY3QpO1xuICAgICAgaWYgKHRoaXMuY29uZmlnID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvckRvY3hQZGYoJ0NvbmZpZ3VyYcOnw6NvIG7Do28gaW5pY2lhbGl6YWRhJyk7XG4gICAgICAvL2xldCBmaWxlO1xuICAgICAgLy8gaWYgKGRhdGFDb250cmFjdC5jbGllbnRDTlBKICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vICAgZmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLy4uLy4uL2Fzc2V0cy9kb2NFeC5kb2N4Jyk7XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgLy8gICBmaWxlID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vLi4vLi4vYXNzZXRzL2RvY0V4LmRvY3gnKTtcbiAgICAgIC8vIH1cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLm1ha2VEb2N1bWVudChkYXRhQ29udHJhY3QuZGF0YSk7XG4gICAgICBhd2FpdCB0aGlzLlBkZkdlbmVyYXRvci5nZW5lcmF0ZShkYXRhLCB1c2VySWQpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLlN0b3JhZ2Uuc2V0QnVja2V0KGNvbmZpZy5idWNrZXQpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2Uuc2V0RGVzdGluYXRpb25EaXIoJ2NvbnRyYWN0cycpKVxuICAgICAgICAvLy50aGVuKCgpID0+IHRoaXMuRG9jeC5tYWtlQ29udHJhY3QoZmlsZSwgZGF0YUNvbnRyYWN0LmRhdGEpKVxuICAgICAgICAvLy50aGVuKHJlcyA9PiBCdWZmZXIuZnJvbShyZXMsICdiYXNlNjQnKSlcbiAgICAgICAgLy8udGhlbihyZXMgPT4gdGhpcy5TdG9yYWdlLnNldEZpbGVCdWZmZXIoeyBkYXRhOiByZXMsIHR5cGU6ICdkb2N4JyB9KSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnNldEZpbGUoJy4vJyArIHVzZXJJZCArIFwiLnBkZlwiKSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnVwbG9hZCgpKVxuICAgICAgICAudGhlbihyZXMgPT4gSlNPTi5zdHJpbmdpZnkocmVzKSlcbiAgICAgICAgLnRoZW4ocmVzID0+IEpTT04ucGFyc2UocmVzKSlcbiAgICAgICAgLnRoZW4oYXdzID0+IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIGRhdGEudGhlbigocmVzdWx0KSA9PiB7IFxuICAgICAgICAgICAgICByZXR1cm4ge2F3cywgcmVzdWx0fTtcbiAgICAgICAgICAgIH0pKSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIHJlcy5yZXN1bHQuY29udHJhY3RVcmwgPSByZXMuYXdzLkxvY2F0aW9uO1xuICAgICAgICAgIHJlcy5yZXN1bHQuc3RhdHVzID0gJ0Fzc2luYWRvJztcbiAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMudXBkYXRlKHJlcywgZGF0YUNvbnRyYWN0LmlkKSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7IHRocm93IGU7IH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYWtlRG9jdW1lbnQoZGF0YUNvbnRyYWN0KXtcbiAgICBpZiAoZGF0YUNvbnRyYWN0LmNsaWVudENOUEogIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNOUEooZGF0YUNvbnRyYWN0KTtcbiAgICAgIC8vZmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLy4uLy4uL2Fzc2V0cy9kb2NFeC5kb2N4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDUEYoZGF0YUNvbnRyYWN0KTtcbiAgICAgIC8vZmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLy4uLy4uL2Fzc2V0cy9kb2NFeC5kb2N4Jyk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gKERvY3gsIERpZ2l0YWxEYXRhLCBTdG9yYWdlLCBQZGZHZW5lcmF0b3IpID0+IG5ldyBDb250cmFjdChEb2N4LCBEaWdpdGFsRGF0YSwgU3RvcmFnZSwgUGRmR2VuZXJhdG9yKTtcbiJdfQ==
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9kb21haW4vQ29udHJhY3QuanMiXSwibmFtZXMiOlsibnVtZXJvUG9yRXh0ZW5zbyIsInJlcXVpcmUiLCJDUEYiLCJDb250cmFjdCIsIkNvbnRyYWN0RGVjb3JhdG9yIiwiY29uc3RydWN0b3IiLCJEb2N4IiwiRGlnaXRhbERhdGEiLCJTM1N0b3JhZ2UiLCJQZGZHZW5lcmF0b3IiLCJTdG9yYWdlIiwic2V0RGlnaXRhbERhdGEiLCJzZXRDb25maWciLCJjb25maWciLCJtYWtlQ1BGIiwiZGF0YSIsImNvdGFjYW8iLCJ0aGVuIiwicmVzIiwianNvbiIsInJlc3BvbnNlIiwiY2xlYW4iLCJyZXBsYWNlIiwicGFyc2VJbnQiLCJ2YWx1ZSIsInRvRml4ZWQiLCJ2YWwiLCJwb3JFeHRlbnNvIiwicGFyc2VGbG9hdCIsImVzdGlsbyIsIm1vbmV0YXJpbyIsImFtb3VudE1vbmV5IiwicmVnaXN0ZXJEb2N1bWVudCIsImNsaWVudENQRiIsImZvcm1hdCIsImNvbnRyYWN0IiwiaW52ZXN0bWVudElkIiwiaWQiLCJ0eXBlIiwicGVuYWx0eVBvcmNlbnQiLCJwZW5hbHR5QWR2IiwiY2xpZW50TmFtZSIsIm1hbmFnZXJOYW1lIiwiY29udHJhY3ROdW1iZXIiLCJjb250cmFjdEVuZCIsImNvbnRyYWN0VGF4ZSIsImNvbnRyYWN0VHJhZGUiLCJhbW91bnRDcnlwdCIsImNvbnRyYWN0UG9yY2VudCIsImNvbnRyYWN0UG9yY2VudFRvdGFsIiwiYmFua05hbWUiLCJiYW5rIiwibmFtZSIsImJhbmtUaXR1bGFyIiwidXNlck5hbWUiLCJiYW5rQWdlbmN5IiwiYWdlbmN5IiwiYmFua0FjY291bnQiLCJhY2NvdW50IiwiYmFua0NvZGUiLCJjb2RlIiwiaW1hZ2UiLCJkYXRlIiwiRGF0ZSIsImNsaWVudFJlc3VtZSIsImNsaWVudE5hdGlvbmFsaXR5IiwiY2xpZW50Q2l2aWxTdGF0ZSIsImNsaWVudE9jY3VwYXRpb24iLCJjbGllbnRSRyIsImNsaWVudFN0cmVldCIsImNsaWVudENvbXBsZW1lbnQiLCJjbGllbnRDRVAiLCJjbGllbnRDaXR5IiwiY2xpZW50U3RhdGUiLCJtYWtlQ05QSiIsIlByb21pc2UiLCJyZXNvbHZlIiwic29jaWFsUmVhc29uIiwiY2xpZW50Q05QSiIsImNvbXBhbnlTdHJlZXQiLCJjb21wYW55Q29tcGxlbWVudCIsImNvbXBhbnlDRVAiLCJjb21wYW55Q2l0eSIsImNvbXBhbnlTdGF0ZSIsInBhcnRuZXJDbGllbnROYW1lIiwicGFydG5lckNpdmlsU3RhdGUiLCJwYXJ0bmVyUHJvZmVzc2lvbiIsInBhcnRuZXJQZXJzb25hbFJlZ2lzdGVyIiwicGFydG5lclBlcnNvbmFsRG9jdW1lbnQiLCJwYXJ0bmVyQWRkcmVzcyIsInBhcnRuZXJBZGRyZXNzQ29tcGxlbWVudCIsInBhcnRuZXJQb3N0YWxDb2RlIiwibWFrZSIsInVzZXJJZCIsImRhdGFDb250cmFjdCIsImF3cyIsInNldFR5cGUiLCJnZW5lcmF0b3JMYXN0IiwidW5kZWZpbmVkIiwiRXJyb3JEb2N4UGRmIiwiZ2VuZXJhdGUiLCJzZXRCdWNrZXQiLCJidWNrZXQiLCJzZXREZXN0aW5hdGlvbkRpciIsInNldEZpbGUiLCJ1cGxvYWQiLCJKU09OIiwic3RyaW5naWZ5IiwicGFyc2UiLCJyZXN1bHQiLCJjb250cmFjdFVybCIsIkxvY2F0aW9uIiwic3RhdHVzIiwic2F2ZSIsImNhdGNoIiwiZSIsInJlamVjdCIsInZpZXciLCJjbGllbnRJZCIsInVwZGF0ZSIsImluc2VydFNpZ25hdHVyZSIsIm1ha2VEb2N1bWVudCIsIm1vZHVsZSIsImV4cG9ydHMiXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7Ozs7QUFFQSxNQUFNQSxtQkFBbUJDLFFBQVEsb0JBQVIsQ0FBekI7QUFDQSxNQUFNQyxNQUFNRCxRQUFRLEtBQVIsQ0FBWjs7QUFFQSxNQUFNRSxRQUFOLFNBQXVCQywyQkFBdkIsQ0FBeUM7O0FBRXZD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RixJQUFJMkYsTUFBWDtBQUNELFNBakJJLEVBa0JKNUYsSUFsQkksQ0FrQkM7QUFBQSxpQkFBTyxPQUFLc0csTUFBTCxDQUFZckcsR0FBWixFQUFpQjRFLGFBQWF6RCxFQUE5QixDQUFQO0FBQUEsU0FsQkQsRUFtQko2RSxLQW5CSSxDQW1CRSxVQUFDQyxDQUFELEVBQU87QUFBRSxnQkFBTUEsQ0FBTjtBQUFVLFNBbkJyQixDQUFQO0FBb0JELE9BaENELENBZ0NFLE9BQU9BLENBQVAsRUFBVTtBQUNWLGVBQU94QyxRQUFReUMsTUFBUixDQUFlRCxDQUFmLENBQVA7QUFDRDtBQW5DaUQ7QUFvQ25EOztBQUVLTSxjQUFOLENBQW1CM0IsWUFBbkIsRUFBZ0M7QUFBQTs7QUFBQTtBQUM5QixVQUFJQSxhQUFhaEIsVUFBYixLQUE0Qm9CLFNBQWhDLEVBQTJDO0FBQ3pDLGVBQU8sTUFBTSxPQUFLeEIsUUFBTCxDQUFjb0IsWUFBZCxDQUFiO0FBQ0E7QUFDRCxPQUhELE1BR087QUFDTCxlQUFPLE1BQU0sT0FBS2hGLE9BQUwsQ0FBYWdGLFlBQWIsQ0FBYjtBQUNBO0FBQ0Q7QUFQNkI7QUFRL0I7QUE3THNDOztBQWdNekM0QixPQUFPQyxPQUFQLEdBQWlCLENBQUNySCxJQUFELEVBQU9DLFdBQVAsRUFBb0JHLE9BQXBCLEVBQTZCRCxZQUE3QixLQUE4QyxJQUFJTixRQUFKLENBQWFHLElBQWIsRUFBbUJDLFdBQW5CLEVBQWdDRyxPQUFoQyxFQUF5Q0QsWUFBekMsQ0FBL0QiLCJmaWxlIjoiQ29udHJhY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRXJyb3JEb2N4UGRmIGZyb20gJy4uL2xpYi9FcnJvckRvY3hQZGYnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZGF0ZUZvcm1hdCBmcm9tICcuLi9saWIvZGF0ZSc7XG5pbXBvcnQgYmFzZTY0SU1HQnVmZmVyIGZyb20gJy4uL2xpYi9iYXNlNjRJTUd0b0J1ZmZlcic7XG5pbXBvcnQgQ29udHJhY3REZWNvcmF0b3IgZnJvbSAnLi4vZGVjb3JhdG9ycy9Db250cmFjdERlY29yYXRvcic7XG5pbXBvcnQgZmV0Y2ggZnJvbSAnbm9kZS1mZXRjaCc7XG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmNvbnN0IG51bWVyb1BvckV4dGVuc28gPSByZXF1aXJlKCdudW1lcm8tcG9yLWV4dGVuc28nKTtcbmNvbnN0IENQRiA9IHJlcXVpcmUoJ2NwZicpO1xuXG5jbGFzcyBDb250cmFjdCBleHRlbmRzIENvbnRyYWN0RGVjb3JhdG9yIHtcblxuICBjb25zdHJ1Y3RvcihEb2N4LCBEaWdpdGFsRGF0YSwgUzNTdG9yYWdlLCBQZGZHZW5lcmF0b3IpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuU3RvcmFnZSAgICAgID0gUzNTdG9yYWdlO1xuICAgIHRoaXMuRG9jeCAgICAgICAgID0gRG9jeDtcbiAgICB0aGlzLlBkZkdlbmVyYXRvciA9IFBkZkdlbmVyYXRvcjtcbiAgICB0aGlzLnNldERpZ2l0YWxEYXRhKERpZ2l0YWxEYXRhKTtcbiAgfVxuXG4gIHNldENvbmZpZyhjb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgICB0aGlzLlN0b3JhZ2UgPSB0aGlzLlN0b3JhZ2UoY29uZmlnKTtcbiAgfVxuXG5cbiAgYXN5bmMgbWFrZUNQRihkYXRhKSB7XG4gICAgY29uc3QgY290YWNhbyA9IGF3YWl0IGZldGNoKCdodHRwczovL3d3dy5idGNidXlzaG9wLmNvbS9hcGkvY3Jhd2xlcnMvaWNvaW5vbWlhJylcbiAgICAgIC50aGVuKHJlcyA9PiByZXMuanNvbigpKVxuICAgICAgLnRoZW4oanNvbiA9PiBqc29uLnJlc3BvbnNlLmNsZWFuLnJlcGxhY2UoL1tcXERdKy9nLCAnJykpXG4gICAgICAudGhlbih2YWx1ZSA9PiBwYXJzZUludCh2YWx1ZSkpXG4gICAgICAudGhlbih2YWx1ZSA9PiAodmFsdWUgLyAxMDApLnRvRml4ZWQoMikpO1xuXG4gICAgY29uc3QgdmFsID0gbnVtZXJvUG9yRXh0ZW5zby5wb3JFeHRlbnNvKHBhcnNlRmxvYXQoY290YWNhbyksIG51bWVyb1BvckV4dGVuc28uZXN0aWxvLm1vbmV0YXJpbyk7XG4gICAgY29uc3QgYW1vdW50TW9uZXkgPSBgJHtjb3RhY2FvfSAoJHt2YWx9KWA7XG4gICAgY29uc3QgcmVnaXN0ZXJEb2N1bWVudCA9IGRhdGEuY2xpZW50Q1BGID8gQ1BGLmZvcm1hdChkYXRhLmNsaWVudENQRikgOiAnJztcbiAgICAvLyBjb25zdCB7eWVhciwgbW9udGgsIGRheX0gPSBkYXRlRm9ybWF0LmRhdGVQVEJSKCk7XG4gICAgY29uc3QgY29udHJhY3QgPSB7XG4gICAgICBpbnZlc3RtZW50SWQ6IGRhdGEuaWQsXG4gICAgICB0eXBlOiBkYXRhLnR5cGUsXG4gICAgICBwZW5hbHR5UG9yY2VudDogZGF0YS5wZW5hbHR5UG9yY2VudCB8fCAwLFxuICAgICAgcGVuYWx0eUFkdjogZGF0YS5wZW5hbHR5QWR2IHx8IDAsXG4gICAgICBjbGllbnROYW1lOiBkYXRhLmNsaWVudE5hbWUgfHwgJ0RhbmllbCBTaWx2YSBNaXJhbmRhJyxcbiAgICAgIG1hbmFnZXJOYW1lOiBkYXRhLm1hbmFnZXJOYW1lIHx8ICdEYW5pZWwgU2lsdmEgTWlyYW5kYScsICAgICAgICBcbiAgICAgIGNvbnRyYWN0TnVtYmVyOiBkYXRhLmNvbnRyYWN0TnVtYmVyIHx8ICdFeGVtcGxvJyxcbiAgICAgIGNvbnRyYWN0RW5kOiBkYXRhLmNvbnRyYWN0RW5kIHx8ICcwMC8wMC8wMDAwJyxcbiAgICAgIGNvbnRyYWN0VGF4ZTogZGF0YS5jb250cmFjdFRheGUgfHwgMCxcbiAgICAgIGNvbnRyYWN0VHJhZGU6IGRhdGEuY29udHJhY3RUcmFkZSB8fCAwLFxuICAgICAgYW1vdW50Q3J5cHQ6IGRhdGEuYW1vdW50Q3J5cHQgfHwgMCxcbiAgICAgIGNvbnRyYWN0UG9yY2VudDogZGF0YS5jb250cmFjdFBvcmNlbnQgfHwgMCxcbiAgICAgIGNvbnRyYWN0UG9yY2VudFRvdGFsOiBkYXRhLmNvbnRyYWN0UG9yY2VudFRvdGFsIHx8IDAsXG4gICAgICBiYW5rTmFtZTogZGF0YS5iYW5rLm5hbWUgfHwgJ0JUQyBCYW5jbycsXG4gICAgICBiYW5rVGl0dWxhcjogZGF0YS5iYW5rLnVzZXJOYW1lIHx8ICdCVEMgQmFuY28nLFxuICAgICAgYmFua0FnZW5jeTogZGF0YS5iYW5rLmFnZW5jeSB8fCAnMDAwMCcsXG4gICAgICBiYW5rQWNjb3VudDogZGF0YS5iYW5rLmFjY291bnQgfHwgJzAwMDAtMDAnLFxuICAgICAgYmFua0NvZGU6IGRhdGEuYmFuay5jb2RlIHx8ICcwMDAwLTAwJywgICAgICBcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgaW1hZ2U6IGJhc2U2NElNR0J1ZmZlcihkYXRhLmltYWdlKSxcbiAgICAgIGFtb3VudE1vbmV5LFxuICAgICAgLi4uZGF0ZUZvcm1hdCgpLFxuICAgICAgZGF0ZTogbW9tZW50KG5ldyBEYXRlKCkpLmZvcm1hdCgnREQvTU0vWVlZWScpLCAgICAgICBcbiAgICAgIGNsaWVudFJlc3VtZTogYCR7ZGF0YS5jbGllbnROYW1lfSwgbmF0dXJhbCBkZSAke2RhdGEuY2xpZW50TmF0aW9uYWxpdHl9LCAke2RhdGEuY2xpZW50Q2l2aWxTdGF0ZX0sIFxuICAgICAgJHtkYXRhLmNsaWVudE9jY3VwYXRpb259LFxuICAgICAgcG9ydGFkb3IgZG8gUkcgbsK6ICR7ZGF0YS5jbGllbnRSR30sIGluc2NyaXRvIG5vIENQRiBzb2IgbyBuwrogJHtyZWdpc3RlckRvY3VtZW50fSwgcmVzaWRlbnRlIGUgXG4gICAgICBkb21pY2lsaWFkbyBhXG4gICAgICAke2RhdGEuY2xpZW50U3RyZWV0fVxuICAgICAgJHtkYXRhLmNsaWVudENvbXBsZW1lbnQgfHwgJyd9LCBDRVAgJHtkYXRhLmNsaWVudENFUH0sICR7ZGF0YS5jbGllbnRDaXR5fSAke2RhdGEuY2xpZW50U3RhdGV9YCB8fCAnICcsXG4gICAgfTsgICAgXG4gICAgcmV0dXJuIGNvbnRyYWN0O1xuICB9XG5cbiAgbWFrZUNOUEooZGF0YSkge1xuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5tYWtlQ1BGKGRhdGEpKS50aGVuKChyZXMpID0+IFxuICAgICAgKHsgICAgICBcbiAgICAgICAgLi4ucmVzLCAgICAgICBcbiAgICAgICAgY2xpZW50UmVzdW1lOiBgJHtkYXRhLnNvY2lhbFJlYXNvbn0sIHBlc3NvYSBqdXLDrWRpY2EgZGUgZGlyZWl0byBwcml2YWRvLCBpbnNjcml0YSBubyBDTlBKIG7CuiAke2RhdGEuY2xpZW50Q05QSn0sIGNvbSBzZWRlIG5hICR7ZGF0YS5jb21wYW55U3RyZWV0fSAke2RhdGEuY29tcGFueUNvbXBsZW1lbnR9LCBDRVAgJHtkYXRhLmNvbXBhbnlDRVB9LCAke2RhdGEuY29tcGFueUNpdHl9LCAke2RhdGEuY29tcGFueVN0YXRlfSwgcmVwcmVzZW50YWRvIHBvciAke2RhdGEucGFydG5lckNsaWVudE5hbWV9LCAke2RhdGEucGFydG5lckNpdmlsU3RhdGV9LCAke2RhdGEucGFydG5lclByb2Zlc3Npb24gPT0gJycgPyBkYXRhLnBhcnRuZXJQcm9mZXNzaW9uICsgJywnIDogJyd9IHBvcnRhZG9yIGRvIFJHIG7CuiAke2RhdGEucGFydG5lclBlcnNvbmFsUmVnaXN0ZXJ9LCBpbnNjcml0byBubyBDUEYgc29iIG8gbsK6ICR7Q1BGLmZvcm1hdChkYXRhLnBhcnRuZXJQZXJzb25hbERvY3VtZW50KX0sIHJlc2lkZW50ZSBlIGRvbWljaWxpYWRvIGEgJHtkYXRhLnBhcnRuZXJBZGRyZXNzfSAke2RhdGEucGFydG5lckFkZHJlc3NDb21wbGVtZW50fSwgQ0VQICR7ZGF0YS5wYXJ0bmVyUG9zdGFsQ29kZX1gLFxuICAgICAgICAvLyBjbGllbnRSZXN1bWU6IGAsIHBlc3NvYSBqdXLDrWRpY2EgZGUgZGlyZWl0byBwcml2YWRvLCBpbnNjcml0YSBubyBDTlBKIG7CuiAke2RhdGEuY2xpZW50Q05QSn0sIGNvbSBzZWRlIG5hXG4gICAgICAgIC8vICR7ZGF0YS5jb21wYW55U3RyZWV0fVxuICAgICAgICAvLyAkeyBkYXRhLmNvbXBhbnlDb21wbGVtZW50ID8gZGF0YS5jb21wYW55Q29tcGxlbWVudCA6ICcnfSwgQ0VQICR7ZGF0YS5jb21wYW55Q0VQfSwgJHtkYXRhLmNvbXBhbnlDaXR5fSAke2RhdGEuY29tcGFueVN0YXRlfWAsXG4gICAgIH0pXG4gICAgKTsgICAgXG4gIH1cbiAgXG4gIGFzeW5jIG1ha2UodXNlcklkLCBkYXRhQ29udHJhY3QsIGNvbmZpZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbmZpZyhjb25maWcuYXdzKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VHlwZShjb25maWcuY29udHJhY3QpO1xuICAgICAgZGF0YUNvbnRyYWN0LmNvbnRyYWN0TnVtYmVyID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JMYXN0KCk7XG4gICAgICBpZiAodGhpcy5jb25maWcgPT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yRG9jeFBkZignQ29uZmlndXJhw6fDo28gbsOjbyBpbmljaWFsaXphZGEnKTtcbiAgICAgIGxldCBkYXRhO1xuICAgICAgLy8gbGV0IGZpbGU7XG5cbiAgICAgIGlmIChkYXRhQ29udHJhY3QuY2xpZW50Q05QSiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGRhdGEgPSBhd2FpdCB0aGlzLm1ha2VDTlBKKGRhdGFDb250cmFjdCk7XG4gICAgICAgIC8vIGZpbGUgPSBwYXRoLnJlc29sdmUoX19kaXJuYW1lLCAnLi8uLi8uLi9hc3NldHMvZG9jRXguZG9jeCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGF0YSA9IGF3YWl0IHRoaXMubWFrZUNQRihkYXRhQ29udHJhY3QpO1xuICAgICAgICAvLyBmaWxlID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vLi4vLi4vYXNzZXRzL2RvY0V4LmRvY3gnKTtcbiAgICAgIH1cblxuICAgICAgYXdhaXQgdGhpcy5QZGZHZW5lcmF0b3IuZ2VuZXJhdGUoZGF0YSwgdXNlcklkKTtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5TdG9yYWdlLnNldEJ1Y2tldChjb25maWcuYnVja2V0KSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnNldERlc3RpbmF0aW9uRGlyKCdjb250cmFjdHMnKSlcbiAgICAgICAgLy8gLnRoZW4oKCkgPT4gdGhpcy5Eb2N4Lm1ha2VDb250cmFjdChmaWxlLCBkYXRhKSlcbiAgICAgICAgLy8gLnRoZW4oKCkgPT4gdGhpcy5QZGZHZW5lcmF0b3IuZ2VuZXJhdGUoZGF0YSkpXG4gICAgICAgIC8vIC50aGVuKHJlcyA9PiBCdWZmZXIuZnJvbShyZXMsICdiYXNlNjQnKSlcbiAgICAgICAgLy8gLnRoZW4ocmVzID0+IHRoaXMuU3RvcmFnZS5zZXRGaWxlQnVmZmVyKHsgZGF0YTogcmVzLCB0eXBlOiAncGRmJyB9KSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnNldEZpbGUoYC4vJHt1c2VySWR9LnBkZmApKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2UudXBsb2FkKCkpXG4gICAgICAgIC50aGVuKHJlcyA9PiBKU09OLnN0cmluZ2lmeShyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gSlNPTi5wYXJzZShyZXMpKVxuICAgICAgICAudGhlbihyZXMgPT4gUHJvbWlzZS5yZXNvbHZlKGRhdGEpXG4gICAgICAgICAgLnRoZW4ocmVzdWx0ID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICBjb250cmFjdFVybDogcmVzLkxvY2F0aW9uLFxuICAgICAgICAgICAgc3RhdHVzOiAnQXRpdm8nLFxuICAgICAgICAgIH0pKSlcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMuc2F2ZSh1c2VySWQsIHJlcykpXG4gICAgICAgIC5jYXRjaCgoZSkgPT4geyB0aHJvdyBlOyB9KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdmlldyhkYXRhQ29udHJhY3QsIGNvbmZpZykge1xuXG4gICAgLy9jb25zb2xlLmxvZyhkYXRhQ29udHJhY3QpXG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRDb25maWcoY29uZmlnLmF3cyk7XG4gICAgICBhd2FpdCB0aGlzLnNldFR5cGUoY29uZmlnLmNvbnRyYWN0KTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZyA9PT0gdW5kZWZpbmVkKSB0aHJvdyBuZXcgRXJyb3JEb2N4UGRmKCdDb25maWd1cmHDp8OjbyBuw6NvIGluaWNpYWxpemFkYScpO1xuXG4gICAgICBjb25zdCBkYXRhID0gZGF0YUNvbnRyYWN0XG5cbiAgICAgIGF3YWl0IHRoaXMuUGRmR2VuZXJhdG9yLmdlbmVyYXRlKGRhdGEsIGRhdGEuY2xpZW50SWQpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLlN0b3JhZ2Uuc2V0QnVja2V0KGNvbmZpZy5idWNrZXQpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2Uuc2V0RGVzdGluYXRpb25EaXIoJ2NvbnRyYWN0cycpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2Uuc2V0RmlsZShgLi8ke2RhdGEuY2xpZW50SWR9LnBkZmApKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2UudXBsb2FkKCkpXG4gICAgICAgIC50aGVuKHJlcyA9PiBQcm9taXNlLnJlc29sdmUoZGF0YSlcbiAgICAgICAgICAudGhlbihyZXN1bHQgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIGNvbnRyYWN0VXJsOiByZXMuTG9jYXRpb24sXG4gICAgICAgICAgICBzdGF0dXM6ICdBdGl2bycsXG4gICAgICAgICAgfSkpKVxuICAgICAgICAudGhlbihyZXMgPT4gdGhpcy51cGRhdGUocmVzKSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7IHRocm93IGU7IH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpbnNlcnRTaWduYXR1cmUodXNlcklkLCBkYXRhQ29udHJhY3QsIGNvbmZpZykge1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnNldENvbmZpZyhjb25maWcuYXdzKTtcbiAgICAgIGF3YWl0IHRoaXMuc2V0VHlwZShjb25maWcuY29udHJhY3QpO1xuICAgICAgaWYgKHRoaXMuY29uZmlnID09PSB1bmRlZmluZWQpIHRocm93IG5ldyBFcnJvckRvY3hQZGYoJ0NvbmZpZ3VyYcOnw6NvIG7Do28gaW5pY2lhbGl6YWRhJyk7XG4gICAgICAvL2xldCBmaWxlO1xuICAgICAgLy8gaWYgKGRhdGFDb250cmFjdC5jbGllbnRDTlBKICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vICAgZmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLy4uLy4uL2Fzc2V0cy9kb2NFeC5kb2N4Jyk7XG4gICAgICAvLyB9IGVsc2Uge1xuICAgICAgLy8gICBmaWxlID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4vLi4vLi4vYXNzZXRzL2RvY0V4LmRvY3gnKTtcbiAgICAgIC8vIH1cbiAgICAgIGNvbnN0IGRhdGEgPSB0aGlzLm1ha2VEb2N1bWVudChkYXRhQ29udHJhY3QuZGF0YSk7XG4gICAgICBhd2FpdCB0aGlzLlBkZkdlbmVyYXRvci5nZW5lcmF0ZShkYXRhLCB1c2VySWQpO1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLlN0b3JhZ2Uuc2V0QnVja2V0KGNvbmZpZy5idWNrZXQpKVxuICAgICAgICAudGhlbigoKSA9PiB0aGlzLlN0b3JhZ2Uuc2V0RGVzdGluYXRpb25EaXIoJ2NvbnRyYWN0cycpKVxuICAgICAgICAvLy50aGVuKCgpID0+IHRoaXMuRG9jeC5tYWtlQ29udHJhY3QoZmlsZSwgZGF0YUNvbnRyYWN0LmRhdGEpKVxuICAgICAgICAvLy50aGVuKHJlcyA9PiBCdWZmZXIuZnJvbShyZXMsICdiYXNlNjQnKSlcbiAgICAgICAgLy8udGhlbihyZXMgPT4gdGhpcy5TdG9yYWdlLnNldEZpbGVCdWZmZXIoeyBkYXRhOiByZXMsIHR5cGU6ICdkb2N4JyB9KSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnNldEZpbGUoJy4vJyArIHVzZXJJZCArIFwiLnBkZlwiKSlcbiAgICAgICAgLnRoZW4oKCkgPT4gdGhpcy5TdG9yYWdlLnVwbG9hZCgpKVxuICAgICAgICAudGhlbihyZXMgPT4gSlNPTi5zdHJpbmdpZnkocmVzKSlcbiAgICAgICAgLnRoZW4ocmVzID0+IEpTT04ucGFyc2UocmVzKSlcbiAgICAgICAgLnRoZW4oYXdzID0+IFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICAgIGRhdGEudGhlbigocmVzdWx0KSA9PiB7IFxuICAgICAgICAgICAgICByZXR1cm4ge2F3cywgcmVzdWx0fTtcbiAgICAgICAgICAgIH0pKSlcbiAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xuICAgICAgICAgIHJlcy5yZXN1bHQuY29udHJhY3RVcmwgPSByZXMuYXdzLkxvY2F0aW9uO1xuICAgICAgICAgIHJlcy5yZXN1bHQuc3RhdHVzID0gJ0Fzc2luYWRvJztcbiAgICAgICAgICByZXR1cm4gcmVzLnJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgICAgLnRoZW4ocmVzID0+IHRoaXMudXBkYXRlKHJlcywgZGF0YUNvbnRyYWN0LmlkKSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7IHRocm93IGU7IH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBtYWtlRG9jdW1lbnQoZGF0YUNvbnRyYWN0KXtcbiAgICBpZiAoZGF0YUNvbnRyYWN0LmNsaWVudENOUEogIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMubWFrZUNOUEooZGF0YUNvbnRyYWN0KTtcbiAgICAgIC8vZmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLy4uLy4uL2Fzc2V0cy9kb2NFeC5kb2N4Jyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLm1ha2VDUEYoZGF0YUNvbnRyYWN0KTtcbiAgICAgIC8vZmlsZSA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLy4uLy4uL2Fzc2V0cy9kb2NFeC5kb2N4Jyk7XG4gICAgfVxuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gKERvY3gsIERpZ2l0YWxEYXRhLCBTdG9yYWdlLCBQZGZHZW5lcmF0b3IpID0+IG5ldyBDb250cmFjdChEb2N4LCBEaWdpdGFsRGF0YSwgU3RvcmFnZSwgUGRmR2VuZXJhdG9yKTtcbiJdfQ==
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