UNPKG

calcme-js

Version:

Projeto open-source para exportar as funcoes do CalcMe sistemas para comunicacao visual, e poder chama-las remotamente

151 lines (123 loc) 18.6 kB
"use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.newNFSe = newNFSe; var _ = require("../.."); var _auth = require("../../auth"); var _request = require("../../util/request"); /*! * Copyright 2025 Saturno Team * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /** * Função para emitir uma nova nota fiscal * * @example * ```javascript * await calcme.nfse.newNFSe(); * ``` * @category NFSe */async function newNFSe(payload) { try { if (!payload.clienteId) { throw new Error('Cliente não informado'); } const configNfse = await _.nfse.getConfig(); let cliente = null; if (_.customers.find((custom) => custom.id === payload.clienteId)) { cliente = _.customers.find((custom) => custom.id === payload.clienteId); } else if (payload.clienteId) { cliente = await _.customer.getById(payload.clienteId); } const { data } = await _request.request.post(`/api/nfse`, { checked: false, id: null, idGraf: null, idInt: null, idOrder: payload.idOrder, idOrders: [], serieRps: configNfse.data.serieNfse, tipoRps: null, numeroRps: configNfse.data.rpsNfse, cliente: cliente, vendedor: null, atividade: configNfse.data.configNfse.atividades[0], numeroNfse: null, tomadorNaoIdentificado: false, regimeTributacao: 0, naturezaOperacao: 0, naturezaTributacao: 0, localPrestacao: 0, observacoes: payload.observacoes ?? null, observacoesInternas: payload.observacoesInternas ?? null, descricaoServico: payload.descricaoServico, valorServico: payload.valorServico, baseCalculo: payload.valorServico, aliquotaIss: configNfse.data.configNfse.aliquotaIss, valorImposto: payload.valorServico * configNfse.data.configNfse.aliquotaIss / 100, valorDeducoes: 0, valorIncondicionado: 0, valorCondicionado: 0, tributosFederais: 0, tributosMunicipais: payload.valorServico * 2 / 100, // Exemplo de cálculo genérico numeroProcesso: null, informarTributos: false, aliquotaCofins: configNfse.data.configNfse.aliquotaCofins, aliquotaPis: configNfse.data.configNfse.aliquotaPis, aliquotaCsll: configNfse.data.configNfse.aliquotaCsll, aliquotaIr: configNfse.data.configNfse.aliquotaIr, aliquotaInss: configNfse.data.configNfse.aliquotaInss, valorCofins: null, valorPis: payload.valorServico * configNfse.data.configNfse.aliquotaPis / 100, valorCsll: payload.valorServico * configNfse.data.configNfse.aliquotaCsll / 100, valorIr: payload.valorServico * configNfse.data.configNfse.aliquotaIr / 100, valorInss: payload.valorServico * configNfse.data.configNfse.aliquotaInss / 100, reterCofins: configNfse.data.configNfse.reterCofins, reterPis: configNfse.data.configNfse.reterPis, reterCsll: configNfse.data.configNfse.reterCsll, reterIr: configNfse.data.configNfse.reterIr, reterInss: configNfse.data.configNfse.reterInss, reterIss: configNfse.data.configNfse.reterIss, emitir: true, valorTotal: payload.valorServico || 0, //TODO situacao: null, excluido: false, cancelado: false, data: new Date(), dataEmissao: new Date(), handleNfse: null, mensagemRejeicao: null, erro: null, identificacaoAmbiente: '1', addressDelivery: { index: 0, enderecoString: `${cliente?.enderecos[0].logradouro}, ${cliente?.enderecos[0].numero}, ${cliente?.enderecos[0].bairro}, ${cliente?.enderecos[0].cidade}, ${cliente?.enderecos[0].cep}` } }); return data.data; } catch (error) { if (error.response.status === 400) { throw error; } else if (error.response.status === 401) { await (0, _auth.login)(); return await newNFSe(payload); } else if (error.response) { return error.response.data; } else { return error; } } } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfIiwicmVxdWlyZSIsIl9hdXRoIiwiX3JlcXVlc3QiLCJuZXdORlNlIiwicGF5bG9hZCIsImNsaWVudGVJZCIsIkVycm9yIiwiY29uZmlnTmZzZSIsIm5mc2UiLCJnZXRDb25maWciLCJjbGllbnRlIiwiY3VzdG9tZXJzIiwiZmluZCIsImN1c3RvbSIsImlkIiwiY3VzdG9tZXIiLCJnZXRCeUlkIiwiZGF0YSIsInJlcXVlc3QiLCJwb3N0IiwiY2hlY2tlZCIsImlkR3JhZiIsImlkSW50IiwiaWRPcmRlciIsImlkT3JkZXJzIiwic2VyaWVScHMiLCJzZXJpZU5mc2UiLCJ0aXBvUnBzIiwibnVtZXJvUnBzIiwicnBzTmZzZSIsInZlbmRlZG9yIiwiYXRpdmlkYWRlIiwiYXRpdmlkYWRlcyIsIm51bWVyb05mc2UiLCJ0b21hZG9yTmFvSWRlbnRpZmljYWRvIiwicmVnaW1lVHJpYnV0YWNhbyIsIm5hdHVyZXphT3BlcmFjYW8iLCJuYXR1cmV6YVRyaWJ1dGFjYW8iLCJsb2NhbFByZXN0YWNhbyIsIm9ic2VydmFjb2VzIiwib2JzZXJ2YWNvZXNJbnRlcm5hcyIsImRlc2NyaWNhb1NlcnZpY28iLCJ2YWxvclNlcnZpY28iLCJiYXNlQ2FsY3VsbyIsImFsaXF1b3RhSXNzIiwidmFsb3JJbXBvc3RvIiwidmFsb3JEZWR1Y29lcyIsInZhbG9ySW5jb25kaWNpb25hZG8iLCJ2YWxvckNvbmRpY2lvbmFkbyIsInRyaWJ1dG9zRmVkZXJhaXMiLCJ0cmlidXRvc011bmljaXBhaXMiLCJudW1lcm9Qcm9jZXNzbyIsImluZm9ybWFyVHJpYnV0b3MiLCJhbGlxdW90YUNvZmlucyIsImFsaXF1b3RhUGlzIiwiYWxpcXVvdGFDc2xsIiwiYWxpcXVvdGFJciIsImFsaXF1b3RhSW5zcyIsInZhbG9yQ29maW5zIiwidmFsb3JQaXMiLCJ2YWxvckNzbGwiLCJ2YWxvcklyIiwidmFsb3JJbnNzIiwicmV0ZXJDb2ZpbnMiLCJyZXRlclBpcyIsInJldGVyQ3NsbCIsInJldGVySXIiLCJyZXRlckluc3MiLCJyZXRlcklzcyIsImVtaXRpciIsInZhbG9yVG90YWwiLCJzaXR1YWNhbyIsImV4Y2x1aWRvIiwiY2FuY2VsYWRvIiwiRGF0ZSIsImRhdGFFbWlzc2FvIiwiaGFuZGxlTmZzZSIsIm1lbnNhZ2VtUmVqZWljYW8iLCJlcnJvIiwiaWRlbnRpZmljYWNhb0FtYmllbnRlIiwiYWRkcmVzc0RlbGl2ZXJ5IiwiaW5kZXgiLCJlbmRlcmVjb1N0cmluZyIsImVuZGVyZWNvcyIsImxvZ3JhZG91cm8iLCJudW1lcm8iLCJiYWlycm8iLCJjaWRhZGUiLCJjZXAiLCJlcnJvciIsInJlc3BvbnNlIiwic3RhdHVzIiwibG9naW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbmZzZS9mdW5jdGlvbnMvbmV3TkZTZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCAyMDI1IFNhdHVybm8gVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBjdXN0b21lciwgY3VzdG9tZXJzLCBuZnNlIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgbG9naW4gfSBmcm9tICcuLi8uLi9hdXRoJztcbmltcG9ydCB7IEFkZHJlc3NEZWxpdmVyeSB9IGZyb20gJy4uLy4uL3R5cGVzL0FkZHJlc3NEZWxpdmVyeSc7XG5pbXBvcnQgeyBDb25maWdORlNlIH0gZnJvbSAnLi4vLi4vdHlwZXMvQ29uZmlnTkZTZSc7XG5pbXBvcnQgeyBDdXN0b21lciB9IGZyb20gJy4uLy4uL3R5cGVzL0N1c3RvbWVyJztcbmltcG9ydCB7IFByaW50c2hvcCB9IGZyb20gJy4uLy4uL3R5cGVzL1ByaW50U2hvcCc7XG5pbXBvcnQgeyByZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdXRpbC9yZXF1ZXN0JztcblxuLyoqXG4gKiBGdW7Dp8OjbyBwYXJhIGVtaXRpciB1bWEgbm92YSBub3RhIGZpc2NhbFxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqYXZhc2NyaXB0XG4gKiBhd2FpdCBjYWxjbWUubmZzZS5uZXdORlNlKCk7XG4gKiBgYGBcbiAqIEBjYXRlZ29yeSBORlNlXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBuZXdORlNlKHBheWxvYWQ6IHtcbiAgaWRPcmRlcjogc3RyaW5nO1xuICBjbGllbnRlSWQ6IHN0cmluZztcbiAgdG9tYWRvck5hb0lkZW50aWZpY2FkbzogYm9vbGVhbjtcbiAgb2JzZXJ2YWNvZXM/OiBudWxsO1xuICBvYnNlcnZhY29lc0ludGVybmFzPzogbnVsbDtcbiAgZGVzY3JpY2FvU2Vydmljbzogc3RyaW5nO1xuICB2YWxvclNlcnZpY286IG51bWJlcjtcbn0pOiBQcm9taXNlPHtcbiAgZGF0YToge1xuICAgIHByaW50U2hvcDogUHJpbnRzaG9wO1xuICAgIHJwc05mc2U6IG51bWJlcjtcbiAgICBjb25maWdOZnNlOiBDb25maWdORlNlO1xuICAgIHNlcmllTmZzZTogc3RyaW5nO1xuICB9O1xuICBlcnJvcnM6IGFueVtdO1xuICB0b3RhbEVsZW1lbnRzOiBudWxsO1xuICBpZHM6IG51bGw7XG59PiB7XG4gIHRyeSB7XG4gICAgaWYgKCFwYXlsb2FkLmNsaWVudGVJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDbGllbnRlIG7Do28gaW5mb3JtYWRvJyk7XG4gICAgfVxuICAgIGNvbnN0IGNvbmZpZ05mc2UgPSBhd2FpdCBuZnNlLmdldENvbmZpZygpO1xuXG4gICAgbGV0IGNsaWVudGUgPSBudWxsO1xuXG4gICAgaWYgKGN1c3RvbWVycy5maW5kKChjdXN0b20pID0+IGN1c3RvbS5pZCA9PT0gcGF5bG9hZC5jbGllbnRlSWQpKSB7XG4gICAgICBjbGllbnRlID0gY3VzdG9tZXJzLmZpbmQoKGN1c3RvbSkgPT4gY3VzdG9tLmlkID09PSBwYXlsb2FkLmNsaWVudGVJZCk7XG4gICAgfSBlbHNlIGlmIChwYXlsb2FkLmNsaWVudGVJZCkge1xuICAgICAgY2xpZW50ZSA9IGF3YWl0IGN1c3RvbWVyLmdldEJ5SWQocGF5bG9hZC5jbGllbnRlSWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgZGF0YSB9OiBhbnkgPSBhd2FpdCByZXF1ZXN0LnBvc3QoYC9hcGkvbmZzZWAsIHtcbiAgICAgIGNoZWNrZWQ6IGZhbHNlLFxuICAgICAgaWQ6IG51bGwsXG4gICAgICBpZEdyYWY6IG51bGwsXG4gICAgICBpZEludDogbnVsbCxcbiAgICAgIGlkT3JkZXI6IHBheWxvYWQuaWRPcmRlcixcbiAgICAgIGlkT3JkZXJzOiBbXSxcbiAgICAgIHNlcmllUnBzOiBjb25maWdOZnNlLmRhdGEuc2VyaWVOZnNlLFxuICAgICAgdGlwb1JwczogbnVsbCxcbiAgICAgIG51bWVyb1JwczogY29uZmlnTmZzZS5kYXRhLnJwc05mc2UsXG4gICAgICBjbGllbnRlOiBjbGllbnRlLFxuICAgICAgdmVuZGVkb3I6IG51bGwsXG4gICAgICBhdGl2aWRhZGU6IGNvbmZpZ05mc2UuZGF0YS5jb25maWdOZnNlLmF0aXZpZGFkZXNbMF0sXG4gICAgICBudW1lcm9OZnNlOiBudWxsLFxuICAgICAgdG9tYWRvck5hb0lkZW50aWZpY2FkbzogZmFsc2UsXG4gICAgICByZWdpbWVUcmlidXRhY2FvOiAwLFxuICAgICAgbmF0dXJlemFPcGVyYWNhbzogMCxcbiAgICAgIG5hdHVyZXphVHJpYnV0YWNhbzogMCxcbiAgICAgIGxvY2FsUHJlc3RhY2FvOiAwLFxuICAgICAgb2JzZXJ2YWNvZXM6IHBheWxvYWQub2JzZXJ2YWNvZXMgPz8gbnVsbCxcbiAgICAgIG9ic2VydmFjb2VzSW50ZXJuYXM6IHBheWxvYWQub2JzZXJ2YWNvZXNJbnRlcm5hcyA/PyBudWxsLFxuICAgICAgZGVzY3JpY2FvU2VydmljbzogcGF5bG9hZC5kZXNjcmljYW9TZXJ2aWNvLFxuICAgICAgdmFsb3JTZXJ2aWNvOiBwYXlsb2FkLnZhbG9yU2VydmljbyxcbiAgICAgIGJhc2VDYWxjdWxvOiBwYXlsb2FkLnZhbG9yU2VydmljbyxcbiAgICAgIGFsaXF1b3RhSXNzOiBjb25maWdOZnNlLmRhdGEuY29uZmlnTmZzZS5hbGlxdW90YUlzcyxcbiAgICAgIHZhbG9ySW1wb3N0bzpcbiAgICAgICAgKHBheWxvYWQudmFsb3JTZXJ2aWNvICogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UuYWxpcXVvdGFJc3MpIC8gMTAwLFxuICAgICAgdmFsb3JEZWR1Y29lczogMCxcbiAgICAgIHZhbG9ySW5jb25kaWNpb25hZG86IDAsXG4gICAgICB2YWxvckNvbmRpY2lvbmFkbzogMCxcbiAgICAgIHRyaWJ1dG9zRmVkZXJhaXM6IDAsXG4gICAgICB0cmlidXRvc011bmljaXBhaXM6IChwYXlsb2FkLnZhbG9yU2VydmljbyAqIDIpIC8gMTAwLCAvLyBFeGVtcGxvIGRlIGPDoWxjdWxvIGdlbsOpcmljb1xuICAgICAgbnVtZXJvUHJvY2Vzc286IG51bGwsXG4gICAgICBpbmZvcm1hclRyaWJ1dG9zOiBmYWxzZSxcbiAgICAgIGFsaXF1b3RhQ29maW5zOiBjb25maWdOZnNlLmRhdGEuY29uZmlnTmZzZS5hbGlxdW90YUNvZmlucyxcbiAgICAgIGFsaXF1b3RhUGlzOiBjb25maWdOZnNlLmRhdGEuY29uZmlnTmZzZS5hbGlxdW90YVBpcyxcbiAgICAgIGFsaXF1b3RhQ3NsbDogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UuYWxpcXVvdGFDc2xsLFxuICAgICAgYWxpcXVvdGFJcjogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UuYWxpcXVvdGFJcixcbiAgICAgIGFsaXF1b3RhSW5zczogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UuYWxpcXVvdGFJbnNzLFxuICAgICAgdmFsb3JDb2ZpbnM6IG51bGwsXG4gICAgICB2YWxvclBpczpcbiAgICAgICAgKHBheWxvYWQudmFsb3JTZXJ2aWNvICogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UuYWxpcXVvdGFQaXMpIC8gMTAwLFxuICAgICAgdmFsb3JDc2xsOlxuICAgICAgICAocGF5bG9hZC52YWxvclNlcnZpY28gKiBjb25maWdOZnNlLmRhdGEuY29uZmlnTmZzZS5hbGlxdW90YUNzbGwpIC8gMTAwLFxuICAgICAgdmFsb3JJcjpcbiAgICAgICAgKHBheWxvYWQudmFsb3JTZXJ2aWNvICogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UuYWxpcXVvdGFJcikgLyAxMDAsXG4gICAgICB2YWxvckluc3M6XG4gICAgICAgIChwYXlsb2FkLnZhbG9yU2VydmljbyAqIGNvbmZpZ05mc2UuZGF0YS5jb25maWdOZnNlLmFsaXF1b3RhSW5zcykgLyAxMDAsXG4gICAgICByZXRlckNvZmluczogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UucmV0ZXJDb2ZpbnMsXG4gICAgICByZXRlclBpczogY29uZmlnTmZzZS5kYXRhLmNvbmZpZ05mc2UucmV0ZXJQaXMsXG4gICAgICByZXRlckNzbGw6IGNvbmZpZ05mc2UuZGF0YS5jb25maWdOZnNlLnJldGVyQ3NsbCxcbiAgICAgIHJldGVySXI6IGNvbmZpZ05mc2UuZGF0YS5jb25maWdOZnNlLnJldGVySXIsXG4gICAgICByZXRlckluc3M6IGNvbmZpZ05mc2UuZGF0YS5jb25maWdOZnNlLnJldGVySW5zcyxcbiAgICAgIHJldGVySXNzOiBjb25maWdOZnNlLmRhdGEuY29uZmlnTmZzZS5yZXRlcklzcyxcbiAgICAgIGVtaXRpcjogdHJ1ZSxcbiAgICAgIHZhbG9yVG90YWw6IHBheWxvYWQudmFsb3JTZXJ2aWNvIHx8IDAsIC8vVE9ET1xuICAgICAgc2l0dWFjYW86IG51bGwsXG4gICAgICBleGNsdWlkbzogZmFsc2UsXG4gICAgICBjYW5jZWxhZG86IGZhbHNlLFxuICAgICAgZGF0YTogbmV3IERhdGUoKSxcbiAgICAgIGRhdGFFbWlzc2FvOiBuZXcgRGF0ZSgpLFxuICAgICAgaGFuZGxlTmZzZTogbnVsbCxcbiAgICAgIG1lbnNhZ2VtUmVqZWljYW86IG51bGwsXG4gICAgICBlcnJvOiBudWxsLFxuICAgICAgaWRlbnRpZmljYWNhb0FtYmllbnRlOiAnMScsXG4gICAgICBhZGRyZXNzRGVsaXZlcnk6IHtcbiAgICAgICAgaW5kZXg6IDAsXG4gICAgICAgIGVuZGVyZWNvU3RyaW5nOiBgJHtjbGllbnRlPy5lbmRlcmVjb3NbMF0ubG9ncmFkb3Vyb30sICR7Y2xpZW50ZT8uZW5kZXJlY29zWzBdLm51bWVyb30sICR7Y2xpZW50ZT8uZW5kZXJlY29zWzBdLmJhaXJyb30sICR7Y2xpZW50ZT8uZW5kZXJlY29zWzBdLmNpZGFkZX0sICR7Y2xpZW50ZT8uZW5kZXJlY29zWzBdLmNlcH1gLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICByZXR1cm4gZGF0YS5kYXRhO1xuICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1cyA9PT0gNDAwKSB7XG4gICAgICB0aHJvdyBlcnJvcjtcbiAgICB9IGVsc2UgaWYgKGVycm9yLnJlc3BvbnNlLnN0YXR1cyA9PT0gNDAxKSB7XG4gICAgICBhd2FpdCBsb2dpbigpO1xuICAgICAgcmV0dXJuIGF3YWl0IG5ld05GU2UocGF5bG9hZCk7XG4gICAgfSBlbHNlIGlmIChlcnJvci5yZXNwb25zZSkge1xuICAgICAgcmV0dXJuIGVycm9yLnJlc3BvbnNlLmRhdGE7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBlcnJvcjtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxJQUFBQSxDQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxLQUFBLEdBQUFELE9BQUE7Ozs7O0FBS0EsSUFBQUUsUUFBQSxHQUFBRixPQUFBLHVCQUE2QyxDQXRCN0M7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBZEEsQ0F3QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQ08sZUFBZUcsT0FBT0EsQ0FBQ0MsT0FRN0I7Ozs7Ozs7QUFVRTtFQUNELElBQUk7SUFDRixJQUFJLENBQUNBLE9BQU8sQ0FBQ0MsU0FBUyxFQUFFO01BQ3RCLE1BQU0sSUFBSUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDO0lBQzFDO0lBQ0EsTUFBTUMsVUFBVSxHQUFHLE1BQU1DLE1BQUksQ0FBQ0MsU0FBUyxDQUFDLENBQUM7O0lBRXpDLElBQUlDLE9BQU8sR0FBRyxJQUFJOztJQUVsQixJQUFJQyxXQUFTLENBQUNDLElBQUksQ0FBQyxDQUFDQyxNQUFNLEtBQUtBLE1BQU0sQ0FBQ0MsRUFBRSxLQUFLVixPQUFPLENBQUNDLFNBQVMsQ0FBQyxFQUFFO01BQy9ESyxPQUFPLEdBQUdDLFdBQVMsQ0FBQ0MsSUFBSSxDQUFDLENBQUNDLE1BQU0sS0FBS0EsTUFBTSxDQUFDQyxFQUFFLEtBQUtWLE9BQU8sQ0FBQ0MsU0FBUyxDQUFDO0lBQ3ZFLENBQUMsTUFBTSxJQUFJRCxPQUFPLENBQUNDLFNBQVMsRUFBRTtNQUM1QkssT0FBTyxH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