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
JavaScript
"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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