sf-reglanegociom3 1.0.12-beta9 → 1.0.12-beta90
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/sf-reglanegociom3.umd.js +467 -54
- package/bundles/sf-reglanegociom3.umd.js.map +1 -1
- package/bundles/sf-reglanegociom3.umd.min.js +1 -1
- package/bundles/sf-reglanegociom3.umd.min.js.map +1 -1
- package/esm2015/lib/ConexionSQL/posts.service.js +4 -1
- package/esm2015/lib/rnm3/Miscelanea/MathTF.class.js +19 -1
- package/esm2015/lib/rnm3/Offline/service-m3-proceso-offline.js +9 -4
- package/esm2015/lib/rnm3/Promociones/promociones.service.js +96 -20
- package/esm2015/lib/rnm3/Registro/m3-procesos.js +5 -1
- package/esm2015/lib/rnm3/Services/M3Maestro.service.js +100 -2
- package/esm2015/lib/rnm3/Services/m3-fe.service.js +37 -1
- package/esm2015/lib/rnm3/Services/m3-load-l-precio.service.js +3 -4
- package/esm2015/lib/rnm3/Services/m3-reg-masivo.service.js +58 -10
- package/esm2015/lib/rnm3/Services/m3-reg-service.js +39 -16
- package/esm5/lib/ConexionSQL/posts.service.js +4 -1
- package/esm5/lib/rnm3/Miscelanea/MathTF.class.js +29 -1
- package/esm5/lib/rnm3/Offline/service-m3-proceso-offline.js +9 -4
- package/esm5/lib/rnm3/Promociones/promociones.service.js +110 -21
- package/esm5/lib/rnm3/Registro/m3-procesos.js +5 -1
- package/esm5/lib/rnm3/Services/M3Maestro.service.js +141 -2
- package/esm5/lib/rnm3/Services/m3-fe.service.js +53 -1
- package/esm5/lib/rnm3/Services/m3-load-l-precio.service.js +3 -4
- package/esm5/lib/rnm3/Services/m3-reg-masivo.service.js +75 -11
- package/esm5/lib/rnm3/Services/m3-reg-service.js +40 -17
- package/fesm2015/sf-reglanegociom3.js +352 -51
- package/fesm2015/sf-reglanegociom3.js.map +1 -1
- package/fesm5/sf-reglanegociom3.js +454 -55
- package/fesm5/sf-reglanegociom3.js.map +1 -1
- package/lib/rnm3/Miscelanea/MathTF.class.d.ts +2 -0
- package/lib/rnm3/Offline/service-m3-proceso-offline.d.ts +1 -1
- package/lib/rnm3/Promociones/promociones.service.d.ts +5 -4
- package/lib/rnm3/Registro/m3-procesos.d.ts +2 -0
- package/lib/rnm3/Services/M3Maestro.service.d.ts +5 -0
- package/lib/rnm3/Services/m3-fe.service.d.ts +2 -0
- package/lib/rnm3/Services/m3-reg-masivo.service.d.ts +5 -3
- package/lib/rnm3/Services/m3-reg-service.d.ts +2 -2
- package/package.json +1 -1
- package/sf-reglanegociom3.metadata.json +1 -1
- package/lib/rnm3/Maestro/Ubicacion/M3UbiAdicionales.type.d.ts +0 -4
- package/lib/rnm3/Maestro/Ubicacion/M3Ubicacion.type.d.ts +0 -17
- package/lib/rnm3/Maestro/Ubicacion/m3-hubs.type.d.ts +0 -12
- package/lib/rnm3/Maestro/Ubicacion/m3-teclas-rapidas.d.ts +0 -6
- package/lib/rnm3/Offline/Service/bd-offline-log.service.d.ts +0 -27
- package/lib/rnm3/Offline/Service/bd-offline.service.d.ts +0 -17
- package/lib/rnm3/Offline/Service/filtros-diario.service.d.ts +0 -5
- package/lib/rnm3/Promociones/Models/M3CONDIAGRUPACION.class.d.ts +0 -8
- package/lib/rnm3/Promociones/Models/M3CONDIPROMO.class.d.ts +0 -9
- package/lib/rnm3/Promociones/Models/M3DETCONDIPROMO.class.d.ts +0 -7
- package/lib/rnm3/Promociones/Models/M3ENCPROMO.class.d.ts +0 -17
- package/lib/rnm3/Promociones/Models/M3PromoProcesada.class.d.ts +0 -32
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sf-reglanegociom3.umd.js.map","sources":["node_modules/tslib/tslib.es6.js","ng://sf-reglanegociom3/lib/ConexionSQL/posts.service.ts","ng://sf-reglanegociom3/lib/Convert/xmlToJSon.class.ts","ng://sf-reglanegociom3/lib/rnm3/Data/m3-couch-maestro.ts","ng://sf-reglanegociom3/lib/rnm3/Data/m3-data.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/filtros.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdAdicionales.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdLista.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdGeneral.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdGrp.type.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-p-impuestos.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-pdetalle-items.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-pdinamicas.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-penc-fp.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-penc-items.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-p-envios.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-f-trabajo.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-procesos.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-precepcion.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-per-x-proceso.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-ot-clasificaciones.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-fe.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-proceso.interface.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3PromoProcesada.class.ts","ng://sf-reglanegociom3/lib/rnm3/Miscelanea/MathTF.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/promociones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-configlp.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-load-l-precio.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/M3Maestro.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reg-service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-trx.interface.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-lista-precio.service.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/m3-din-procesos.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdPackDet.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Ubicacion/M3UbiAdicionales.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Ubicacion/M3Ubicacion.type.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3CONDIAGRUPACION.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3CONDIPROMO.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3DETCONDIPROMO.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3ENCPROMO.class.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-ubicacion.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reg-masivo.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reg-masivo-akz.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reverso.service.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-pdinam-by-actividad.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/m3-din-by-actividad.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-saldos-x-cuenta.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-reg-trx.ts","ng://sf-reglanegociom3/lib/rnm3/Cupones/cupones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/Service/bd-offline.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/Service/bd-offline-log.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/service-m3-maestro-offline.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/service-m3-proceso-offline.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-notificaciones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Notificaciones/M3Nofiticaciones.model.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/m3-presentaciones.ts","ng://sf-reglanegociom3/lib/rnm3/Services/ConsultasM3/m3-consultas.service.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Ubicacion/m3-teclas-rapidas.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-prds.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-codsprd.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-promociones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-ubicaciones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Notificaciones/notificaciones-m3.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-pack-by-tipo.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/Service/filtros-diario.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-perxtipo.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-dinamxprocesos.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Http, RequestOptions, Headers } from '@angular/http'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport 'rxjs/add/operator/map'\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Response } from '@angular/http/src/static_response'\r\nimport { timeout, map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PostServiceM3 {\r\n idkatios: string\r\n servidor: string;\r\n servidorPersonas: string;\r\n servidorGenerales: string;\r\n servidorM3: string;\r\n servidorFEMX: string;\r\n servidorDocumentos: string;\r\n servidorContable: string;\r\n servidorPrestamo: string;\r\n WebBase: string;\r\n constructor(\r\n private http: Http,\r\n private httpClient: HttpClient\r\n ) {\r\n this.cargaInicial();\r\n }\r\n\r\n public cargaInicial() {\r\n\r\n var json: any;\r\n let sConfigJSON = sessionStorage.getItem(\"ConfigJSON\");\r\n if (sConfigJSON) {\r\n let jConfigJSON = JSON.parse(sConfigJSON);\r\n if (jConfigJSON.ServidorPersonas) {\r\n json = jConfigJSON;\r\n }\r\n }\r\n this.servidorPersonas = json.ServidorPersonas;\r\n this.servidor = json.Servidor;\r\n this.servidorGenerales = json.ServidorGenerales;\r\n this.servidorM3 = json.ServidorM3;\r\n this.servidorFEMX = json.ServidorFEMX;\r\n this.servidorDocumentos = json.ServidorDocumentos;\r\n this.servidorContable = json.ServidorContable;\r\n this.servidorPrestamo = json.ServidorPrestamo;\r\n this.WebBase = json.WebBase;\r\n }\r\n\r\n\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n async getConfigJson(idKatios: string) {\r\n try {\r\n let resp = await this.getWithBodyGenerales('Generales/getConfigJson/' + idKatios, null).toPromise();\r\n var respuesta: any = JSON.parse(resp.toString());\r\n this.respOk_getConfigJson(respuesta);\r\n }\r\n catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n respOk_getConfigJson(json) {\r\n this.servidorPersonas = json.ServidorPersonas;\r\n this.servidor = json.Servidor;\r\n this.servidorGenerales = json.ServidorGenerales;\r\n this.servidorM3 = json.ServidorM3;\r\n this.servidorFEMX = json.ServidorFEMX;\r\n this.servidorDocumentos = json.ServidorDocumentos;\r\n this.servidorContable = json.ServidorContable;\r\n this.servidorPrestamo = json.ServidorPrestamo;\r\n this.WebBase = json.WebBase;\r\n }\r\n\r\n getURLServer() {\r\n return this.servidor;\r\n }\r\n\r\n getURLServerDocs() {\r\n return this.servidorDocumentos;\r\n }\r\n\r\n ///httpGet\r\n httpGet(urlGet: string, iServidor: string) {\r\n return this.http.get(iServidor + urlGet).map(res => {\r\n return res.json();\r\n });\r\n }\r\n\r\n\r\n ///httpGet\r\n httpGetWithTimeOut(urlGet: string, iServidor: string, timeoutTime: number) {\r\n return this.http.get(iServidor + urlGet).pipe(\r\n timeout(timeoutTime)\r\n ).map(res => {\r\n return res.json();\r\n });\r\n }\r\n\r\n httpGetWithBody(urlGet: string, iServidor: string, parametros: any) {\r\n const headers = new Headers();\r\n\r\n headers.append('Content-Type', 'application/json');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n params: parametros\r\n }).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n httpGetWithBodyTimeOut(urlGet: string, iServidor: string, parametros: any, timeoutTime: number) {\r\n const headers = new Headers();\r\n\r\n headers.append('Content-Type', 'application/json');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n params: parametros\r\n })\r\n .pipe(\r\n timeout(timeoutTime)\r\n )\r\n .map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n http_get_blob(urlGet: string, iServidor: string, parametros: any) {\r\n const headers = new Headers();\r\n\r\n //headers.append('Content-Type', 'application/json'); \r\n //headers.append('Response Tyoe', 'blob');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n responseType: \"blob\",\r\n params: parametros\r\n }).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n http_get_arraybuffer(urlGet: string, iServidor: string, parametros: any) {\r\n const headers = new Headers();\r\n\r\n //headers.append('Content-Type', 'application/json'); \r\n //headers.append('Response Tyoe', 'blob');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n responseType: \"arraybuffer\",\r\n params: parametros\r\n }).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n\r\n\r\n getPrestamo(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorPrestamo);\r\n }\r\n\r\n public getWithBodyM3TimeOut(urlGet: string, params: any, timeoutTime: number) {\r\n return this.httpGetWithBodyTimeOut(urlGet, this.servidorM3, params, timeoutTime);\r\n }\r\n\r\n getWithBodyPrestamo(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorPrestamo, params);\r\n }\r\n\r\n public getWithBodyM3(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorM3, params);\r\n }\r\n\r\n getWithBodyPersonas(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorPersonas, params);\r\n }\r\n\r\n getWithBodyGenerales(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorGenerales, params);\r\n }\r\n\r\n getWithBodyDocumento(urlGet: string, params: any) {\r\n const headers = new Headers();\r\n\r\n //headers.append('Content-Type', 'application/json');\r\n headers.append('responseType', 'ResponseContentType.Blob');\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(this.servidorDocumentos + urlGet,\r\n {\r\n params: params\r\n }).map(res => {\r\n return res;\r\n });\r\n\r\n }\r\n\r\n get_blob_Documentos(urlGet: string, params: any) {\r\n return this.http_get_blob(urlGet, this.servidorDocumentos, params);\r\n }\r\n\r\n get_arraybuffer_Documentos(urlGet: string, params: any) {\r\n return this.http_get_arraybuffer(urlGet, this.servidorDocumentos, params);\r\n }\r\n\r\n getPosts(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidor);\r\n }\r\n\r\n getPersonas(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorPersonas);\r\n }\r\n\r\n getGenerales(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorGenerales);\r\n }\r\n\r\n getM3(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorM3);\r\n }\r\n\r\n getM3WithTimeOut(urlGet: string, timeOut: number) {\r\n return this.httpGetWithTimeOut(urlGet, this.servidorM3, timeOut);\r\n }\r\n\r\n\r\n\r\n\r\n getDocumentos(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorDocumentos);\r\n }\r\n\r\n\r\n getContable(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorContable);\r\n }\r\n ///End httpGet\r\n\r\n getPostsWithOutJson(urlGet: string) {\r\n return this.http.get(this.servidor + urlGet).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n\r\n postServiceHttp(urlGet: string, params) {\r\n return this.http.post(this.servidor + urlGet, params).map(\r\n res => {\r\n return res.statusText;\r\n }\r\n );\r\n }\r\n ///postServiceResponseHttp\r\n postServiceResponseHttp(urlGet: string, params) {\r\n return this.http.post(this.servidor + urlGet, params).map(res => {\r\n return res.json();\r\n });\r\n }\r\n\r\n postServiceResponseHttpCallService(urlGet: string, params, iServidor) {\r\n return this.http.post(iServidor + urlGet, params).map(res => {\r\n return res.json();\r\n });\r\n }\r\n postServiceResponseHttpPrestamos(urlGet: string, params) {\r\n return this.postServiceResponseHttpCallService(urlGet, params, this.servidorPrestamo);\r\n }\r\n ///End postServiceResponseHttp\r\n\r\n\r\n ///postServiceHttpOptions\r\n postServiceHttpOptionsCallService(urlGet: string, params, headers, iServidor) {\r\n let options = new RequestOptions({ headers: headers });\r\n\r\n return this.http.post(iServidor + urlGet, params, options).map(\r\n res => {\r\n return res;\r\n }\r\n );\r\n }\r\n\r\n postServiceHttpOptions(urlGet: string, params, headers) {\r\n return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidor);\r\n }\r\n\r\n postServiceHttpOptionsM3(urlGet: string, params, headers) {\r\n return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidorM3);\r\n }\r\n\r\n postServiceHttpOptionsDocs(urlGet: string, params, headers) {\r\n return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidorDocumentos);\r\n }\r\n\r\n ///End postServiceHttpOptions\r\n\r\n ///postServiceHttpResFull\r\n postServiceHttpResFullCallService(urlGet: string, params, iServidor) {\r\n return this.http.post(iServidor + urlGet, params).map(\r\n res => {\r\n\r\n return res;\r\n }\r\n );\r\n }\r\n\r\n postServiceHttpResFull(urlGet: string, params) {\r\n return this.postServiceHttpResFullCallService(urlGet, params, this.servidor);\r\n }\r\n\r\n\r\n\r\n postServiceHttpResFullPersonas(urlGet: string, params) {\r\n return this.postServiceWebApi(urlGet, params, this.servidorPersonas);\r\n }\r\n\r\n postServiceHttpResFullM3(urlGet: string, params) {\r\n return this.postServiceWebApi(urlGet, params, this.servidorM3);\r\n }\r\n\r\n postServiceHttpResFullFEMX(urlGet: string, params) {\r\n return this.postServiceWebApi(urlGet, params, this.servidorFEMX);\r\n }\r\n\r\n postServiceHttpResFullGenerales(urlGet: string, params) {\r\n return this.postServiceHttpResFullCallService(urlGet, params, this.servidorGenerales);\r\n }\r\n\r\n postServiceHttpResFullPrestamos(urlGet: string, params) {\r\n return this.postServiceHttpResFullCallService(urlGet, params, this.servidorPrestamo);\r\n }\r\n ///End postServiceHttpResFull\r\n postServiceWebApi(urlGet: string, params, iServidor) {\r\n const headers = new Headers();\r\n headers.append('Content-Type', 'application/json');\r\n const options = new RequestOptions({ headers: headers });\r\n\r\n return this.http.post(iServidor + urlGet, params, options).map(\r\n res => {\r\n\r\n return res;\r\n }\r\n );\r\n }\r\n}\r\n","export class xmlToJsonTF{\r\n\r\n convertXmlToJson(inputXml){\r\n \r\n const parseString = require('xml2js').parseString;\r\n const xml = inputXml;\r\n let resultado;\r\n parseString(xml, (err, result) => {\r\n resultado= result;\r\n });\r\n return resultado;\r\n }\r\n\r\n replaceCharXml(inputXml){\r\n let gt = />/gi; \r\n let lt = /</gi;\r\n let quot = /"/gi;\r\n let resultado = inputXml.replace(gt,\">\");\r\n resultado = resultado.replace(lt,\"<\");\r\n resultado = resultado.replace(quot,\"'\");\r\n\r\n return resultado;\r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core'\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3CouchMaestro {\r\n public oDataM3Procesos: M3Procesos;\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n var sIdkatios: string;\r\n var sTipoHub: string;\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n sTipoHub = this.GetTipoHubFromSession();\r\n if (sIdkatios) {\r\n if (sTipoHub && sTipoHub.toUpperCase().trim() == \"WEB\") {\r\n this.database = new PouchDB(\"infomEcc_\" + sIdkatios.toLowerCase().trim(), { auto_compaction: true });\r\n this.sync(this.GetServer() + \"infomEcc_\" + sIdkatios.toLowerCase().trim());\r\n this.isInstantiated = true;\r\n console.log(\"INSTANCEECC!!¡\")\r\n }\r\n else {\r\n this.database = new PouchDB(\"infom_\" + sIdkatios.toLowerCase().trim(), { auto_compaction: true });\r\n this.sync(this.GetServer() + \"infom_\" + sIdkatios.toLowerCase().trim());\r\n this.isInstantiated = true;\r\n console.log(\"INSTANCE!!¡\")\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Funcion que traera el tipo de hub\r\n public GetTipoHubFromSession() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Tipo) {\r\n return oSUbicacion.M3HUBS[0].Tipo;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public GetDataPouchBD(isKey: string) {\r\n return this.database.get(isKey);\r\n }\r\n\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public sync(remote: string) {\r\n // let remoteDatabase = new PouchDB(remote);\r\n\r\n // let options = {\r\n // retry: true\r\n // };\r\n\r\n // let options2 = {\r\n // live: true,\r\n // retry: true\r\n // };\r\n\r\n // //this.autenticacionServer(remoteDatabase);\r\n // this.database.sync(remoteDatabase, {\r\n // options2\r\n // }).on('complete', change => {\r\n // console.log(\"Completo:\" + change)\r\n // }).on('change', change => {\r\n // this.listener.emit(change);\r\n // }).on('error', error => {\r\n // this.database.sync(remoteDatabase, options2);\r\n // });\r\n\r\n\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n //armar key de documento que se quiere consultar\r\n public GetKeyDocumentoDB(isIDKatios: string, isDocumento: string) {\r\n return isIDKatios + \"?\" + isDocumento;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core'\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3Data {\r\n public oDataM3Procesos: M3Procesos;\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.database = new PouchDB(\"CarritoCompras\", { auto_compaction: true });\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Adicionar en BD pouch.\r\n public AddToPouchBDCarritoCompras(id: string, document: any) {\r\n document._id = id;\r\n return this.get(id).then(result => {\r\n document._rev = result._rev;\r\n return this.database.put(document);\r\n }, error => {\r\n if (error.status == \"404\") {\r\n return this.database.put(document);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n //Adicionar en BD pouch, Async.\r\n public async AddToPouchBDCarritoComprasAsync(id: string, document: any) {\r\n document._id = id;\r\n try {\r\n var result = await this.get(id);\r\n document._rev = result._rev;\r\n await this.database.put(document);\r\n } catch (error) {\r\n if (error.status == \"404\") {\r\n await this.database.put(document);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n }\r\n\r\n // return this.get(id).then(result => {\r\n // document._rev = result._rev;\r\n // return this.database.put(document);\r\n // }, error => {\r\n // if (error.status == \"404\") {\r\n // return this.database.put(document);\r\n // } else {\r\n // return new Promise((resolve, reject) => {\r\n // reject(error);\r\n // });\r\n // }\r\n // });\r\n }\r\n\r\n\r\n //Obtener informacion de base de datos.\r\n public GetDataPouchBD(isKey: string) {\r\n return this.database.get(isKey);\r\n }\r\n\r\n //Obtener informacion de base de datos.\r\n public Delete(isKey: string) {\r\n this.database.get(isKey).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n let options = {\r\n retry: true\r\n };\r\n\r\n let options2 = {\r\n live: true,\r\n retry: true\r\n };\r\n\r\n //this.autenticacionServer(remoteDatabase);\r\n this.database.sync(remoteDatabase, {\r\n options\r\n }).on('complete', change => {\r\n this.database.sync(remoteDatabase, options2);\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n }).on('error', error => {\r\n this.database.sync(remoteDatabase, options2);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n //armar key de carrito de compras, teniendo en cuenta el IDKatios, tdoc y ndoc.\r\n public GetKeyCarritoCompras(isIDKatios: string, isTdoc: string, isNdoc: string, isUbicacion: string, isIdHub: string) {\r\n return \"CC?\" + isIDKatios + \"?\" + isUbicacion + \"?\" + isIdHub + \"?\" + isTdoc + \"?\" + isNdoc;\r\n }\r\n\r\n //Destruir y reconstruir la base de datos pouchDB\r\n public ReserBD() {\r\n this.database.destroy().then(x => {\r\n this.database = new PouchDB('CarritoCompras', { auto_compaction: true });\r\n });\r\n }\r\n\r\n\r\n}\r\n","export class Filtros {\r\n public Atributo:string;\r\n public Valor:string;\r\n\r\n constructor(isAtributo:string, isValor:string){\r\n this.Atributo = isAtributo;\r\n this.Valor = isValor;\r\n }\r\n}\r\n","export class M3PrdAdicionales{\r\n SKP1:string;\r\n ATRIBUTO:string;\r\n VALOR:string;\r\n NIVEL1:number;\r\n NIVEL2:number;\r\n}","import { M3Presentaciones } from \"./m3-presentaciones\";\r\n\r\nexport class M3PrdLista{\r\n IDLISTA:string;\r\n SKU:string;\r\n LOTE:string;\r\n PRECIO:number;\r\n LB: number;\r\n LC: number;\r\n LD: number;\r\n SUBINDICE: string;\r\n PORIGINAL: number;\r\n public M3Presentaciones = new Array<M3Presentaciones>();\r\n}","import { M3PrdLista } from \"./M3PrdLista.type\";\r\nimport { M3PrdPackDet } from \"./M3PrdPackDet\";\r\nimport { M3CodsXPRD } from \"./M3CodsXPRD.type\";\r\nimport { M3PrdPackReglas } from \"./M3PrdPackReglas\";\r\nexport class M3PrdGeneral {\r\n SKU: string;\r\n LOTE: string;\r\n NOMBRE1: string;\r\n NOMBRELARGO: string;\r\n ACT1CTBL: string;\r\n ACT2CTBL: string;\r\n CTBLDPRD: string;\r\n CTBLDIMPPRD: string;\r\n SKP1: string;\r\n SKP2: string;\r\n SKP3: string;\r\n SKP4: string;\r\n SKP5: string;\r\n DISPONIBLE: number;\r\n DISPONIBLERef: number;\r\n M3PACK: Array<M3PrdPackDet> = null;\r\n M3PackReglas: Array<M3PrdPackReglas> = null;\r\n LoM3ListaPrecio = new Array<M3PrdLista>();\r\n LoM3PrdLista = new M3PrdLista();\r\n M3Cods = new Array<M3CodsXPRD>();\r\n Impuestos = new Array<M3PRDImpuestos>();\r\n}\r\n\r\nexport class M3PRDImpuestos {\r\n CodImp: string;\r\n Metodologia: string;\r\n Valor: number;\r\n}","import { M3PrdGeneral } from \"./M3PrdGeneral.type\";\r\nimport { M3PrdAdicionales } from \"./M3PrdAdicionales.type\";\r\nimport { M3PrdPackByTipo } from \"./m3-pack-by-tipo\";\r\nimport { M3PUnidMedida } from \"./m3p-unid-medida\";\r\nimport { M3PrdGrpAsociado } from \"./M3PrdGrpAsociado\";\r\n\r\nexport class TypeM3PrdGrp {\r\n SKP1: string;\r\n RATING: number;\r\n FICHATECNICA: string;\r\n MARCA: string;\r\n CLASIFICACION: string;\r\n NOMBRE: string;\r\n TIPO: string;\r\n Cantidad: number;\r\n CamposAdicionales: string;\r\n LoM3PrdGeneral = new Array<M3PrdGeneral>();\r\n LoM3PrdAdicionales = new Array<M3PrdAdicionales>();\r\n M3PACKBYTIPO = new Array<M3PrdPackByTipo>();\r\n M3PrdGrpAsociado:Array<M3PrdGrpAsociado> = null;\r\n\r\n listImagenes = new Array<any>();\r\n Impuestos = new Array<TypeImpuestosPRD>();\r\n M3PUnidMedida: M3PUnidMedida;\r\n\r\n encontradoLocal: boolean = true;\r\n\r\n\r\n constructor() {\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n\r\nexport class TypeImpuestosPRD {\r\n CodImp: string;\r\n Metodologia: string;\r\n Valor: string\r\n}","export class M3PImpuestos{\r\n public Porcentaje:number;\r\n public Valor:number;\r\n public LimiteOpuesto:number;\r\n public CodImpuesto:string;\r\n public Base:number;\r\n}\r\n","export class M3PDetalleItems {\r\n public NombreConcepto: string;\r\n public Valor: string;\r\n}\r\n\r\nexport class M3PItemsWEB {\r\n public dCantidad: number;\r\n public dPrecioTotal: number;\r\n public BisProductoPromo: boolean = false;\r\n public BisObsequio: boolean = false;\r\n\r\n public Unidad: string = \"\";\r\n public ClavePrdSRV: string = \"\";\r\n public ClavePrdUnidad: string = \"\";\r\n public IdProceso: string = \"\";\r\n public observacion: string = \"\";\r\n\r\n public SubEstado_o: string = \"\";\r\n public Estado_o: string = \"\";\r\n public PathImagen: string = \"\";\r\n\r\n public IDEncRepetido: number = -1;\r\n public IDEncProcesado: number = -1;\r\n public IDEncPadre: number = -1;\r\n public TipoAgrupacion: string = \"\";\r\n public CodigoBarras: string = \"\";\r\n public CamposAdicionales = [];\r\n}\r\n\r\nexport class M3PDetalleCupon {\r\n public IdCupon: string;\r\n public Cantidad: number;\r\n}\r\n","export class M3PDinamicas {\r\n public Valor:string;\r\n public Nombre:string;\r\n}","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PEncFP {\r\n public Valor:number;\r\n public Descripcion:string;\r\n public Estado:string;\r\n public IdTipoPago:number; //1: Efectivo 2: Tarjeta de crédito 3: Tarjeta Debito 4: PSE\r\n public ID:number;\r\n public ValCambio:number;\r\n public ValOtraClasi:number =0;\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n\r\n\r\n //Variables SoloFront\r\n public APLCambio:string;\r\n public APLFidelizacion:string;\r\n public dejar_borrar:boolean = true;\r\n\r\n}","import { M3PDetalleItems, M3PDetalleCupon } from \"./m3-pdetalle-items\";\r\nimport { M3PImpuestos } from \"./m3-p-impuestos\";\r\nimport { PromocionCombinada } from \"../Promociones/Models/M3PromoProcesada.class\";\r\nimport { M3PEnvios } from \"./m3-p-envios\";\r\nimport { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PEncItems {\r\n public IdProducto: string;\r\n public Lote: string;\r\n public ID: number;\r\n public Orden: number;\r\n public Nombre: string;\r\n public CodigoBarras: string;\r\n public IdEnvio:number;\r\n public DISPONIBLE: number = 0;\r\n public PathImage:string;\r\n public M3DET = new Array<M3PDetalleItems>(); \r\n public M3DetCupones = new Array<M3PDetalleCupon>();\r\n public M3PImpuestos = new Array<M3PImpuestos>();\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n\r\n //Estas propiedades no son replica a base de datos, son para uso interno.\r\n public PromoCombinadas = new Array<PromocionCombinada>();\r\n\r\n public IdEncPadre:number;\r\n public TipoAgrupacion:string = \"\";\r\n\r\n //Obtener el precio unitaria\r\n public GetPriceUnit() {\r\n return this.M3DET.find(det => det.NombreConcepto == \"PUNIT\").Valor;\r\n }\r\n\r\n //Obtener el precio unitaria, con descuentos incluidos\r\n public GetPriceUnitNeto() {\r\n return this.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor;\r\n }\r\n\r\n\r\n //Obtener el precio unitaria, con descuentos incluidos\r\n public SetPriceUnitNeto(iValor) {\r\n this.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = iValor;\r\n }\r\n\r\n\r\n //Obtener el precio total.\r\n public GetPriceTotal() {\r\n return this.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n }\r\n}\r\n","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PEnvios{\r\n public IdEnvio:number;\r\n public IdFormaEnvio:number;\r\n public NombreFEnvio:string;\r\n public Direccion:string;\r\n public Pais:string;\r\n public Ciudad:string;\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n}","export class M3FTrabajo{\r\n public IdHub:number;\r\n public IdUbic:number;\r\n public IdHubPre:number;\r\n public IdUbicPre:number;\r\n}","import { M3PEncItems } from \"./m3-penc-items\";\r\nimport { M3PEncFP } from \"./m3-penc-fp\";\r\nimport { M3PDinamicas } from \"./m3-pdinamicas\";\r\nimport { M3PromCombinadaXProceso } from \"./m3-prom-comb\";\r\nimport { M3FTrabajo } from \"./m3-f-trabajo\";\r\nimport { M3PEnvios } from \"./m3-p-envios\";\r\nimport { M3PRecepcion } from \"./m3-precepcion\";\r\nimport { PromocionCombinada } from \"../Promociones/Models/M3PromoProcesada.class\";\r\nimport { M3PerXProceso } from \"./m3-per-x-proceso\";\r\nimport { M3RegistroTrx } from \"./m3-reg-trx\";\r\nimport { M3OtClasificaciones } from \"./m3-ot-clasificaciones\";\r\nimport * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\nexport class M3Procesos {\r\n public IdM3:string;\r\n public Fecha:string;\r\n public TipoTercero:number;\r\n public TDoc:string;\r\n public NDoc:string;\r\n public Ubic1:number;\r\n public Ubic2:number;\r\n public ValorNeto:number =0;\r\n public Valor:number =0;\r\n public ValOtraClasi:number =0;\r\n public SubEstadoDes:string;\r\n public EstadoDes:string;\r\n public SubEstadoAnt:string;\r\n public EstadoAnt:string;\r\n public TMIdProceso:string;\r\n public IDDiario:string;\r\n public IDDiarioCierre:string;\r\n public IDHub:number;\r\n public TipoTRX:string;\r\n public M3ENC = new Array<M3PEncItems>();\r\n public M3OtClasificaciones = new Array<M3OtClasificaciones>();\r\n public lM3PDinamicas = new Array<M3PDinamicas>();\r\n public M3PerXProceso = new Array<M3PerXProceso>();\r\n public lM3PEncFP = new Array<M3PEncFP>();\r\n public M3FTrabajo = new M3FTrabajo();\r\n public M3PEnvios = new Array<M3PEnvios>();\r\n public M3PRecepcion = new Array<M3PRecepcion>();\r\n public lM3RegistroTrx = new Array<M3RegistroTrx>();\r\n \r\n public FechaHoraEstado:string;\r\n public IdEstado:string;\r\n\r\n\r\n //Estas propiedades no son replica a base de datos, son para uso interno.\r\n //public lM3PromCombinada = new Array<M3PromCombinadaXProceso>();\r\n\r\n public PromosCombinadas = new Array<PromocionCombinada>();\r\n\r\n public AplPagoEnLinea:boolean = false;\r\n\r\n public AplDesdeServer:boolean = false;\r\n\r\n public ndocUActivo:string; //JAGM 20191017 Nuevos parametros,para llevar el registro del usuario activo, que creo este proceso\r\n public tdocUActivo:string;//JAGM 20191017 Nuevos parametros,para llevar el registro del usuario activo, que creo este proceso\r\n //public bAPLCombinadasAcum:boolean = false;\r\n\r\n constructor(){\r\n this.Fecha =moment(new Date()).format('YYYY-MM-DD');\r\n }\r\n\r\n}","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PRecepcion{\r\n public IdRecepcion:number;\r\n public IdEnc:number;\r\n public Cantidad:number;\r\n public Fecha:Date; \r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n public Estado: string;\r\n}","export class M3PerXProceso{\r\n public TipoPersona:string;\r\n public Tdoc:string;\r\n public Ndoc:string; \r\n public Nombre:string;\r\n public DescTipoP:string;\r\n}\r\n","export class M3OtClasificaciones{\r\n public ID:number;\r\n public IdProducto:string;\r\n public Valor:number;\r\n public Nombre:string;\r\n public Cantidad:number;\r\n public Orden:number;//Variable de ordenamiento en el front\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\nexport class ServiceM3FE {\r\n\r\n public add_proceso_generarFE(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3FE/add_proceso_generarFE/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public add_proceso_generarNC(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3FE/add_proceso_generarNC/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public async addProcesoGenerarFEAsync(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any) {\r\n let json;\r\n let resp;\r\n\r\n try {\r\n resp = PostServiceM3.postServiceHttpResFullM3(\"M3FE/add_proceso_generarFE/\" + sIDKatios, jData).toPromise();\r\n json = JSON.parse(resp)\r\n return json;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n public generarCartaPorte(PostServiceM3: PostServiceM3, sIDKatios: string, idm3: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullFEMX(\"FEMX/generarCartaPorte/\" + sIDKatios + \"/\" + idm3, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n async getInfoFacturaElectronica(PostServiceM3: PostServiceM3, id_katios: string) {\r\n var Info;\r\n var data = { 'idKatios': id_katios.trim() };\r\n Info = await PostServiceM3.getWithBodyM3('M3FE/getInfoFacturaElectronica', data).toPromise()\r\n return JSON.parse(Info)\r\n }\r\n\r\n async getHtmlFromFE(PostServiceM3: PostServiceM3, idKatios: string, idM3: string) {\r\n let resp;\r\n let data = { 'idM3': idM3 };\r\n resp = await PostServiceM3.getWithBodyM3('M3FE/getHtmlFromFE/' + idKatios, data).toPromise()\r\n\r\n return resp;\r\n }\r\n\r\n async IU_InfoFacturaElectronica(PostServiceM3: PostServiceM3, id_katios: string, oFactura: any, uTActivo: string, uNActivo: string) {\r\n var Info;\r\n var data = { 'idKatios': id_katios.trim(), 'oFactura': oFactura, 'uTActivo': uTActivo, 'uNActivo': uNActivo };\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3FE/IU_InfoFacturaElectronica', data).toPromise()\r\n return Info\r\n }\r\n\r\n public delInsSeriesxUbic(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3FE/delInsSeriesxUbic/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json()); \r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n funcionError(JSON.parse(JSON.parse(err[\"_body\"]).Message).RESPUESTA[\"0\"]);\r\n });\r\n }\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\n\r\nexport class M3ProcesoService {\r\n\r\n public add_procesoEA(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"ProcesosM3/add_procesoEA/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n M3Get_ProcesosPorCantidad(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('ProcesosM3/M3Get_ProcesosPorCantidad/' + sIDKatios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var olProcesos;\r\n olProcesos = JSON.parse(resp);\r\n\r\n if (olProcesos.RESPUESTA.TP.length === undefined) {\r\n olProcesos.RESPUESTA.TP = new Array(olProcesos.RESPUESTA.TP);\r\n }\r\n\r\n oFuncionOK(olProcesos);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n public M3Get_ActividadesYProcesos(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3Get_ActividadesYProcesos/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var olProcesos;\r\n olProcesos = JSON.parse(resp.toString());\r\n\r\n //Si las actividades no vienen como un array, convertirlo\r\n if (olProcesos.RESPUESTA.ACTIVIDADES.length === undefined) {\r\n olProcesos.RESPUESTA.ACTIVIDADES = new Array(olProcesos.RESPUESTA.ACTIVIDADES);\r\n }\r\n\r\n //Si los procesos no vienen como un array, convertirlo\r\n olProcesos.RESPUESTA.ACTIVIDADES.forEach(Actividad => {\r\n if (Actividad.PROCESOS !== undefined && Actividad.PROCESOS.length === undefined) {\r\n Actividad.PROCESOS = new Array(Actividad.PROCESOS);\r\n }\r\n });\r\n\r\n oFuncionOK(olProcesos);\r\n },\r\n err => {\r\n console.log(err);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n public M3Get_M3ProcesosByIdProceso(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any, sIdProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3Get_M3ProcesosByIdProceso/' + sIDKatios + '/' + sIdProceso, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var olProcesosM3;\r\n olProcesosM3 = JSON.parse(resp.toString());\r\n\r\n //Si las actividades no vienen como un array, convertirlo\r\n if (olProcesosM3.RESPUESTA.SUBESTADOS.length === undefined) {\r\n olProcesosM3.RESPUESTA.SUBESTADOS = new Array(olProcesosM3.RESPUESTA.SUBESTADOS);\r\n }\r\n\r\n //Si los procesos no vienen como un array, convertirlo\r\n olProcesosM3.RESPUESTA.SUBESTADOS.forEach(subs => {\r\n if (subs.M3PROCESOS !== undefined && subs.M3PROCESOS.length === undefined) {\r\n subs.M3PROCESOS = new Array(subs.M3PROCESOS);\r\n }\r\n });\r\n\r\n oFuncionOK(olProcesosM3);\r\n },\r\n err => {\r\n //console.log(JSON.parse(err._body).Message);\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n\r\n //Obtener informacion de M3procesos, desde el iddiario.\r\n public async GetM3ProcesosByIdDiario(PostServiceM3: PostServiceM3, sIDKatios: string, sIdDiario: string) {\r\n\r\n var oData;\r\n oData = { \"IdDiario\": sIdDiario };\r\n var oM3Proceso;\r\n oM3Proceso = await PostServiceM3.getWithBodyM3('ProcesosM3/GetM3ProcesosByIdDiario/' + sIDKatios, oData).toPromise();\r\n\r\n return oM3Proceso;\r\n }\r\n\r\n //Obtener informacion de M3procesos, Teniendo el IDM3. \r\n public M3Get_M3ProcesosByIdM3(PostServiceM3: PostServiceM3, sIDKatios: string, sIDM3: string, sIdProceso: string, sUbicacion: string,\r\n oFuncionOK: Function, oFuncionErr: Function, ubicExterno = false, bAPLPagosPD = false) {\r\n\r\n var oData;\r\n oData = { \"IdM3\": sIDM3, \"IdProceso\": sIdProceso };\r\n if (bAPLPagosPD) {\r\n oData.bAPLPagosPD = true;\r\n }\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/GetProcesoM3ByIdM3/' + sIDKatios, oData).subscribe(resp => {\r\n var oM3Procesos: any;\r\n oM3Procesos = resp;\r\n\r\n //Validar que la ubicacion actuales valida para el proceso\r\n //pcastro, se comentarea porque no funciona con tf, retorna para TF SIEMPRE NULL, no se maneja ubicaciones\r\n //Se coloca dif a 0, por version TF, que no utiliza funcionalidad de Ubicaciones\r\n if (oM3Procesos.M3FTrabajo.IdUbicPre.toString() != \"0\" && oM3Procesos.M3FTrabajo.IdUbicPre.toString() != sUbicacion.toString()) {\r\n if (!ubicExterno) {\r\n oM3Procesos = null;\r\n }\r\n }\r\n oFuncionOK(oM3Procesos);\r\n },\r\n err => {\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Retoma el proceso que tiene por dinamica _IDM3Retomado el idm3 envaido por parametro\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param sIDM3 \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public getM3ProcesosByIdM3Retomado(PostServiceM3: PostServiceM3, sIDKatios: string, sIDM3: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n var oData;\r\n oData = { \"idM3Retomado\": sIDM3 };\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/getM3ProcesosByIdM3Retomado/' + sIDKatios, oData).subscribe(resp => {\r\n\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Obtener proceso M3, teniendo en cuenta el Id M3 y Idproceso\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param sIDM3 \r\n * @param sIdProceso \r\n * @param sUbicacion \r\n */\r\n public async M3Get_M3ProcesosByIdM3Async(PostServiceM3: PostServiceM3, sIDKatios: string, sIDM3: string,\r\n sIdProceso: string, sUbicacion: string, bAPLPagosPD: boolean = false) {\r\n\r\n var oData;\r\n oData = { \"IdM3\": sIDM3, \"IdProceso\": sIdProceso };\r\n var resp;\r\n if (bAPLPagosPD) {\r\n oData.bAPLPagosPD = true;\r\n }\r\n resp = await PostServiceM3.getWithBodyM3('ProcesosM3/GetProcesoM3ByIdM3/' + sIDKatios, oData).toPromise();\r\n return resp;\r\n\r\n }\r\n\r\n /**\r\n * Obtener proceso M3, teniendo en cuenta el IdDiario\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param idDiario \r\n */\r\n public async m3_getProcesoM3ByIdDiarioAsync(PostServiceM3: PostServiceM3, sIDKatios: string, idDiario: string) {\r\n var oData;\r\n oData = { \"idDiario\": idDiario };\r\n var resp: any = await PostServiceM3.getWithBodyM3('ProcesosM3/m3_getProcesoM3ByIdDiario/' + sIDKatios, oData).toPromise();\r\n return resp;\r\n }\r\n\r\n\r\n ///Obtiene la esturcturas de las capturas dinamicas asociadas aun proceos y un idproceso\r\n public m3_get_data_capt_dinam(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n ///oData = {\"id_proceso\":\"\",\"id_sub_proceso\":\"\"};\r\n PostServiceM3.getWithBodyM3('ProcesosM3/m3_get_data_capt_dinam/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n // /**\r\n // * Retorna el RPTemplate para el armado del Reporte\r\n // * @param PostServiceM3 \r\n // * @param id_katios \r\n // * @param id_rep \r\n // */\r\n // public async get_template_reporte(PostServiceM3: PostServiceM3, id_katios: string, id_rep: string) {\r\n // var oData;\r\n // var resp;\r\n // var oJson;\r\n // oData = { \"id_rep\": id_rep };\r\n // try {\r\n // resp = await PostServiceM3.getWithBodyM3('ProcesosM3/get_template_reporte/' + id_katios, oData).toPromise();\r\n // oJson = JSON.parse(resp);\r\n // return oJson;\r\n // }\r\n // catch{\r\n // return null;\r\n // }\r\n // }\r\n\r\n /**\r\n * Obtener los procesos asociados a una persona\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param oData \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public M3GetProcesoByPersona(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3GetProcesoByPersona/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n\r\n public M3GetProcesoByIdDiarioCierre(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3GetProcesoByIdDiarioCierre/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Obtener informacion de procesos Off line\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param oData \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public M3GetProcesosOffLine(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3GetProcesosOffLine/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n /**\r\n * Retoena el TDetalleProceso de un proceso dado\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param oData \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public m3_detalleProcesoByProceso(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/m3_detalleProcesoByProceso/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(JSON.parse(resp.toString()).RESPUESTA.Detalle);\r\n },\r\n err => {\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n public validarExistenciaProceso(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/validarExistenciaProceso/' + idKatios, data).subscribe(resp => {\r\n var oProducto: any = JSON.parse(resp.toString());\r\n oFuncionOK(oProducto);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n}","export class PromocionProcesada {\r\n public PrecioTotal: number; //Precio incluyendo las promociones\r\n public PrecioTotalPromocion: number;\r\n public ValorTotalMonedero: number = 0;\r\n public ListPromocionesAsociadas = new Array<PromocionesAsociadas>();\r\n}\r\n\r\nexport class PromocionesAsociadas {\r\n public IDPromocion: number;\r\n public Nombre;\r\n public Valor;\r\n public ValorPorcentaje = 0;\r\n public ListObsSKU = new Array<any>();\r\n public PromocionCombinada: PromocionCombinada = null;\r\n public ValorMonedero: number = 0;\r\n public IdCupon: string = null;\r\n public Regla: string;\r\n public Aplicada: boolean;\r\n public Tipo: string;\r\n public ReglaObseq: string;\r\n public CantidadObseq: number;\r\n public flags = { formaPago: false };\r\n public lIdActivaPromo: Array<number>;\r\n}\r\n\r\nexport class PromocionCombinada {\r\n public IdPromocionXProceso: number;\r\n public IdPromocionCombinada: number;\r\n public Tipo2: string;\r\n public Nombre: string;\r\n public Accion: any;\r\n //public IdCondicion:string; //Esto para agrupacion de la promocion de combo.\r\n}","export class MathTF {\r\n constructor() {\r\n\r\n }\r\n\r\n public round(a: any, decimals: number) {\r\n let multiploDe10 = Math.pow(10, decimals);\r\n return Math.round(+a * multiploDe10) / multiploDe10;\r\n }\r\n}","import { M3ENCPROMO } from './Models/M3ENCPROMO.class';\r\nimport { M3Ubicacion } from '../Maestro/Ubicacion/M3Ubicacion.type';\r\nimport { M3CONDIAGRUPACION } from './Models/M3CONDIAGRUPACION.class';\r\nimport { M3CONDIPROMO } from './Models/M3CONDIPROMO.class';\r\nimport { TypeM3PrdGrp } from '../Maestro/M3PrdGrp.type';\r\nimport { M3DETCONDIPROMO } from './Models/M3DETCONDIPROMO.class';\r\nimport { PromocionesAsociadas, PromocionProcesada, PromocionCombinada } from './Models/M3PromoProcesada.class';\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport { M3PromCombinadaXProceso } from '../Registro/m3-prom-comb';\r\nimport { M3PEncItems } from '../Registro/m3-penc-items';\r\nimport { M3PEncFP } from '../Registro/m3-penc-fp';\r\nimport { M3PDinamicas } from '../Registro/m3-pdinamicas';\r\nimport { PostServiceM3 } from '../../ConexionSQL/posts.service';\r\nimport { _iterableDiffersFactory } from '@angular/core/src/application_module';\r\nimport { M3PDetalleItems, M3PItemsWEB } from '../Registro/m3-pdetalle-items';\r\nimport * as moment_ from 'moment';\r\nimport { M3PrdGeneral } from '../Maestro/M3PrdGeneral.type';\r\nimport { MathTF } from '../Miscelanea/MathTF.class';\r\nimport { M3PerXProceso } from '../Registro/m3-per-x-proceso';\r\nimport * as _ from \"lodash\";\r\nimport { M3RegService } from '../Services/m3-reg-service';\r\nimport { M3PrdLista } from '../Maestro/M3PrdLista.type';\r\n\r\nconst moment = moment_;\r\nexport class promocionesService {\r\n public oMathTF: MathTF = new MathTF();\r\n public goDataUser: any;\r\n public goDataAdicional: M3PItemsWEB;\r\n public goM3ENCPROMO: Array<M3ENCPROMO>;\r\n\r\n constructor(oDataUser: any, oDataAdicional: M3PItemsWEB) {\r\n this.goDataUser = oDataUser;\r\n this.goDataAdicional = oDataAdicional;\r\n }\r\n\r\n public operators = {\r\n '<': function (a, b) { return a < b },\r\n '>': function (a, b) { return a > b },\r\n '<=': function (a, b) { return a <= b },\r\n '>=': function (a, b) { return a >= b },\r\n 'IGUAL': function (a, b) { return a == b },\r\n 'DIFF': function (a, b) { return a != b },\r\n 'EN': function (a, b) { return a === b },\r\n 'AND': function (a, b) { return a && b },\r\n 'OR': function (a, b) { return a || b },\r\n '*': function (a, b) { return true },\r\n 'MOD': function (a, b) { return a % b == 0 },\r\n // ...\r\n };\r\n\r\n\r\n //--------------------------> Inicio Obtener informacion de promocion <--------------------------------\r\n //Verificar promociones, ingresando como parametro la informacion del producto a validar, Ubicacion\r\n public VerificarPromociones(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, lTiposPromo: Array<any>) {\r\n var jResp;\r\n var aResps = new Array<any>();\r\n var aPromociones = new Array<any>();\r\n var hoy = new Date();\r\n this.goM3ENCPROMO = oM3ENCPROMO;\r\n if (oM3ENCPROMO) {\r\n oM3ENCPROMO.filter(x => lTiposPromo.find(promo => x.Tipo == promo)).forEach(encabezadoPromo => {\r\n var dVigencia = new Date(encabezadoPromo.Vigencia);\r\n var dInicio = new Date(encabezadoPromo.Inicio);\r\n\r\n //JAGM 20191023, se quita Tipo Manual, y se deja el nuevo parametro.\r\n if (this.validarEstadosEncPromo(encabezadoPromo) && (encabezadoPromo.Estado && dVigencia >= hoy && dInicio <= hoy)) {\r\n /////// Validacion: 1. Si es diferente a Manual, no valida Variable estados manuales. De lo contrario lo valida. --- 2. Si el estado el estado es verdadero y la vigencia es mayor o igual a la fecha del momento\r\n aResps = new Array<any>();\r\n encabezadoPromo.M3CONDIAGRUPACION.forEach(agrupacion => {\r\n jResp = this.VerificarAgrupacionPromo(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, agrupacion, encabezadoPromo);\r\n if (jResp) {\r\n aResps.push(jResp);\r\n }\r\n });\r\n\r\n jResp = this.GetJRespFromArray(aResps, encabezadoPromo.Tipo, encabezadoPromo.Tipo2);\r\n if (jResp.APLCondicion) {\r\n //Validacion de accion, si existe, sino existe se agrega del papa. Se envia como referencia jresp\r\n this.ValidarAccion(jResp, encabezadoPromo.JAdicionales);\r\n this.RetomarValoresPromocion(encabezadoPromo, jResp);\r\n aPromociones.push(jResp);\r\n }\r\n }\r\n\r\n });\r\n return aPromociones;\r\n } else {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n validarEstadosEncPromo(encabezadoPromo: M3ENCPROMO): boolean {\r\n let estado = true;\r\n\r\n if (encabezadoPromo.EsManual && !encabezadoPromo.EstadoManuales) {\r\n estado = false;\r\n }\r\n\r\n if (encabezadoPromo.EsAplCupon && !encabezadoPromo.EstadoAplCupon) {\r\n estado = false;\r\n }\r\n\r\n return estado;\r\n }\r\n\r\n //Verificar agrupacion de promociones, ingresando como parametro la informacion del producto a validar, Ubicacion\r\n public VerificarAgrupacionPromo(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, agrupacion: M3CONDIAGRUPACION, oM3EncPromo: M3ENCPROMO) {\r\n var jResp;\r\n var aResps = new Array<any>();\r\n for (var i = 0; i < agrupacion.M3CONDIPROMO.length; i++) {\r\n var condicion: M3CONDIPROMO;\r\n var jAdicionales;\r\n condicion = agrupacion.M3CONDIPROMO[i];\r\n jAdicionales = JSON.parse(condicion.JAdicionales);\r\n if (!jAdicionales.ROOT.ACTIVIDAD || jAdicionales.ROOT.ACTIVIDAD == \"REGISTRO\") {\r\n jResp = this.VerificarCondicionesPromo(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, condicion);\r\n\r\n if (oM3EncPromo.Tipo == \"COMBINADA\" && oM3EncPromo.Tipo2 == \"COMBO\" && jResp.APLCondicion && agrupacion.Operador.trim().toUpperCase() == \"OR\") {\r\n aResps.push(jResp);\r\n } else if (agrupacion.Operador.trim().toUpperCase() == \"AND\" && !jResp.APLCondicion) {\r\n //La condicion NO se cumple\r\n jResp = this.ValidarRespuesta(null);\r\n return jResp;\r\n } else if (agrupacion.Operador.trim().toUpperCase() == \"OR\" && jResp.APLCondicion) {\r\n //La condicion se cumple\r\n return jResp;\r\n } else {\r\n //Se debe guardar la información. Si siempre fueron OR y FALSE, se debe comparar como un AND.\r\n aResps.push(jResp);\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n return this.GetJRespFromArray(aResps, oM3EncPromo.Tipo, oM3EncPromo.Tipo2);\r\n\r\n\r\n }\r\n\r\n //Verificar condicion de promociones.\r\n public VerificarCondicionesPromo(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, condicion: M3CONDIPROMO) {\r\n var jAdicionaes;\r\n var jResp;\r\n jAdicionaes = JSON.parse(condicion.JAdicionales);\r\n jResp = this.VerificarCondicionContraData(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, condicion, jAdicionaes);\r\n this.ValidarAccion(jResp, condicion.JAdicionales);\r\n this.AgregarCondicionOK(jResp, condicion);\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Agregar a json de respuesta si se genero OK la informacion de la condicion\r\n * @param jResp \r\n * @param condicion \r\n */\r\n public AgregarCondicionOK(jResp, condicion: M3CONDIPROMO) {\r\n if (jResp.APLCondicion) {\r\n jResp.IDCondicion = condicion.IdCondicion;\r\n }\r\n }\r\n\r\n\r\n //Verifica condicion, contra data ingresada.\r\n public VerificarCondicionContraData(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, condicion: M3CONDIPROMO, jAdicionales): any {\r\n var objectFinded;\r\n var jResp;\r\n try {\r\n\r\n switch (jAdicionales.ROOT.Estructura.Est) {\r\n //Va a estructura de producto adicional\r\n case \"LoM3PrdAdicionales\":\r\n objectFinded = oTypeM3PrdGrp.LoM3PrdAdicionales.find(adic => adic.ATRIBUTO.trim() == condicion.Concepto.trim() && this.operators[jAdicionales.ROOT.Estructura.Operacion](adic.VALOR.trim(), condicion.Valor.trim()))\r\n objectFinded.JAdicionales = JSON.stringify(jAdicionales);\r\n jResp = this.ValidarRespuesta(objectFinded);\r\n break;\r\n case \"PRDTO\":\r\n jResp = this.VerificarInfoProducto(oTypeM3PrdGrp.LoM3PrdGeneral[0], condicion, jAdicionales);\r\n break;\r\n case \"PRDGRP\":\r\n jResp = this.VerificarInfoProductoPRDGRP(oTypeM3PrdGrp, condicion, jAdicionales);\r\n break;\r\n case \"M3DETCONDIPROMO\":\r\n jResp = this.VerificacionM3DetalleCondicion(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, condicion.M3DETCONDIPROMO, condicion.Concepto, jAdicionales);\r\n break;\r\n case \"PROCESO\":\r\n jResp = this.VerificarInfoProceso(oM3Procesos, condicion, jAdicionales);\r\n break;\r\n case \"ID_PAGO\":\r\n jResp = this.VerificarProcesoFormaPago(oM3Procesos, condicion, jAdicionales);\r\n break;\r\n case \"ID_LISTAP\":\r\n jResp = this.verificarProcesoListaPrecio(oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista, condicion, jAdicionales);\r\n break;\r\n case \"USER\":\r\n jResp = this.VerificarInfoUserData(condicion, jAdicionales)\r\n break;\r\n case \"ADICIONAL\":\r\n jResp = this.VerificarInfoAdicional(condicion, jAdicionales)\r\n break;\r\n\r\n // case \"CARACTERISTICAS\":\r\n // //Esta promoción esta diseñada para que sea procesada al final de la transacción\r\n // jResp = this.VerificarClasificacionesProceso(oM3Procesos, condicion.M3DETCONDIPROMO, jAdicionales);\r\n break;\r\n default:\r\n console.log(\"No Entro por Detalle!\");\r\n jResp = this.GenerarRespuesta(false, null);\r\n break;\r\n }\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n public GetJRespFromArray(aResps: Array<any>, tipo, tipo2) {\r\n var bAPLCondicion;\r\n var jResp;\r\n if (aResps.length > 0) {\r\n //LLega a este punto, por alguna de 2 razones: \r\n //1. La condición es un OR y todos son FALSE\r\n //2. La condición es un AND y todos son TRUE\r\n bAPLCondicion = aResps.filter(resp => resp.APLCondicion);\r\n if (!bAPLCondicion) {\r\n jResp = this.ValidarRespuesta(null);\r\n } else {\r\n if (tipo == \"COMBINADA\" && tipo2 == \"COMBO\") {\r\n let arregloCondiciones = [];\r\n bAPLCondicion.forEach(condicion => {\r\n if (condicion.IDCondicion.length >= 0) {\r\n condicion.IDCondicion.forEach(idCon => {\r\n if (!arregloCondiciones.find(x => x == idCon)) arregloCondiciones.push(idCon);\r\n });\r\n }\r\n else {\r\n if (!arregloCondiciones.find(x => x == condicion.IDCondicion)) arregloCondiciones.push(condicion.IDCondicion);\r\n }\r\n });\r\n return { APLCondicion: true, Accion: null, IDCondicion: arregloCondiciones };\r\n }\r\n else {\r\n var aRespTMP = new Array<any>();\r\n //Verificar si alguno de los arreglos tiene accion diferente a null\r\n aRespTMP = aResps.filter(resp => resp.Accion != null);\r\n if (aRespTMP.length > 0) {\r\n //Usar el ultimo item, que tenga la acción\r\n jResp = aRespTMP[aRespTMP.length - 1];\r\n } else {\r\n jResp = aResps[aResps.length - 1];\r\n }\r\n }\r\n\r\n }\r\n\r\n //Si la promo depende de la forma de pago añade esta información\r\n if (aResps.find(x => x.FormaPago)) {\r\n jResp[\"FormaPago\"] = true;\r\n }\r\n }\r\n else {\r\n jResp = this.ValidarRespuesta(null);\r\n }\r\n return jResp;\r\n }\r\n\r\n //Generar Respuesta de condicion.\r\n public GenerarRespuesta(bAPLPromo: boolean, jAdicionales) {\r\n var jResp;\r\n jResp = { \"APLCondicion\": bAPLPromo, \"Accion\": null };\r\n if (jAdicionales != null && jAdicionales.ROOT.Accion !== undefined) {\r\n jResp.Accion = jAdicionales.ROOT.Accion;\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n /**\r\n * Verificar clasificaciones por proceso.\r\n * @param oM3Procesos Procesos de M3\r\n * @param detCondiciones Condiciones de promociones\r\n * @param jAdicionales JSON \r\n */\r\n public VerificarClasificacionesProceso(oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, lPrecios: Array<any>, bEsAcumulable: boolean) {\r\n var jResp: any = null;\r\n try {\r\n var valores: Array<any> = combi.Accion.Valores;\r\n //var iCantidadReal: number = lPrecios.length;\r\n var bEntro: boolean = false;\r\n valores = valores.sort((a, b) => (a.Cantidad < b.Cantidad) ? 1 : ((b.Cantidad < a.Cantidad) ? -1 : 0));\r\n\r\n this.AplicarPromoByValores(valores, lPrecios, lPrecios.length);//JAGM 20190731, funcion recursiva para calcular los precios nuevos.\r\n\r\n if (lPrecios.length > 0 && lPrecios.find(x => x.Aplicado == true)) {\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, false, bEsAcumulable);\r\n }\r\n\r\n } catch (ex) {\r\n jResp = this.GenerarRespuesta(false, null);\r\n console.log(\"VerificarClasificacionesProceso\");\r\n console.log(ex);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Verificar clasificaciones por proceso.\r\n * @param oM3Procesos Procesos de M3\r\n * @param detCondiciones Condiciones de promociones\r\n * @param jAdicionales JSON \r\n */\r\n public procesarCaracteristicaParcial(oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, lPrecios: Array<any>, bEsAcumulable: boolean) {\r\n var jResp: any = null;\r\n try {\r\n var valores: Array<any> = combi.Accion.Valores;\r\n valores = valores.sort((a, b) => a.Cantidad - b.Cantidad);\r\n for (let i = 0; i < lPrecios.length; i++) {\r\n let valorPromo = i < valores.length ? valores[i].Valor : 0\r\n lPrecios[i].PUNITNETO = +lPrecios[i].PUNITNETO - ((+lPrecios[i].PUNITNETO) * ((+valorPromo) / 100));\r\n lPrecios[i].Aplicado = true;\r\n }\r\n\r\n if (lPrecios.length > 0 && lPrecios.find(x => x.Aplicado == true)) {\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, false, bEsAcumulable);\r\n }\r\n\r\n } catch (ex) {\r\n jResp = this.GenerarRespuesta(false, null);\r\n console.log(\"VerificarClasificacionesProceso\");\r\n console.log(ex);\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n private AplicarPromoByValores(valores: Array<any>, lPrecios: Array<any>, residuoEntrante: number) {\r\n var iCantidadReal: number = residuoEntrante;// JAGM 20190731 nuevo parametro = lPrecios.length;\r\n\r\n for (var i = 0; i < valores.length; i++) {//JAGM 20190730 se agrega funcionalidad para que se pueda tener varios valores.\r\n var iCantidadPromo: number = valores[i].Cantidad;\r\n var valorPromo: number = valores[i].Valor;\r\n if (iCantidadReal >= iCantidadPromo) { //JAGM 20190426 SE CAMBIA, ANTES ESTABA LA FUNCIONALIDAD DE CANTIDAD REAL VS CANTIDAD PROMOCION.\r\n var Residuo: number = 0;\r\n if (iCantidadReal % iCantidadPromo == 0) {\r\n } else {\r\n Residuo = iCantidadReal % iCantidadPromo;\r\n this.AplicarPromoByValores(valores, lPrecios, Residuo);\r\n iCantidadReal = iCantidadReal - Residuo;\r\n }\r\n for (var i = +lPrecios.length - +residuoEntrante; i < +lPrecios.length - +Residuo; i++) {\r\n lPrecios[i].PUNITNETO = +lPrecios[i].PUNITNETO - ((+lPrecios[i].PUNITNETO) * ((+valorPromo) / 100));\r\n lPrecios[i].Aplicado = true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Armar nuevo arreglo, teniendo en cuenta el arreglo entrante. Se recorre de atras hacia adelante y se va creando el nuevo arreglo\r\n * @param lPrecios \r\n * @param residuo \r\n */\r\n public ArmarNuevoArrayDesdeResiduo(lPrecios: Array<any>, residuo) {\r\n var lPreciosResiduo = new Array<any>();\r\n try {\r\n\r\n for (var i = lPrecios.length - 1; i > residuo; i--) {\r\n lPreciosResiduo.push(lPrecios[i]);\r\n }\r\n } catch (ex) {\r\n console.log(\"ArmarNuevoArratDesdeResiduo\");\r\n console.log(ex);\r\n }\r\n\r\n return lPreciosResiduo;\r\n\r\n }\r\n\r\n\r\n /**\r\n * Validar promociones por procesos, teniendo en cuenta la informacion del M3 procesos\r\n * @param oM3Procesos M3 Procesos Objeto, con la informacion de todos los M3Procesos\r\n * @param condicion Objeto con informacion de condicion\r\n * @param jAdicionales JSON de informacion adicional\r\n */\r\n public VerificarInfoProceso(oM3Procesos: M3Procesos, condicion: M3CONDIPROMO, jAdicionales) {\r\n var jResp: any;\r\n if (oM3Procesos[condicion.Concepto] && this.operators[jAdicionales.ROOT.Estructura.Operacion](oM3Procesos[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Valida si el proceso tiene una forma de pago que cumpla con la condicion entrante, hace un pass true, la logica se hace desde la forma de pago\r\n * @param oM3Procesos \r\n * @param condicion \r\n * @param jAdicionales \r\n */\r\n public VerificarProcesoFormaPago(oM3Procesos: M3Procesos, condicion: M3CONDIPROMO, jAdicionales) {\r\n let jResp = this.GenerarRespuesta(true, jAdicionales);\r\n jResp[\"FormaPago\"] = true;\r\n return jResp;\r\n }\r\n\r\n verificarProcesoListaPrecio(oListaPrecio: M3PrdLista, condicion: M3CONDIPROMO, jAdicionales){\r\n try {\r\n var jResp: any;\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](oListaPrecio[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Validar promociones por procesos, teniendo en cuenta la informacion del M3 procesos\r\n * @param oM3Procesos M3 Procesos Objeto, con la informacion de todos los M3Procesos\r\n * @param condicion Objeto con informacion de condicion\r\n * @param jAdicionales JSON de informacion adicional\r\n */\r\n public VerificarInfoProducto(oM3PrdGeneral: M3PrdGeneral, condicion: M3CONDIPROMO, jAdicionales) {\r\n try {\r\n var jResp: any;\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](oM3PrdGeneral[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n\r\n }\r\n\r\n\r\n /**\r\n * Verificar informacion de producto agrupado.\r\n * @param oTypeM3PrdGrp \r\n * @param condicion \r\n * @param jAdicionales \r\n */\r\n public VerificarInfoProductoPRDGRP(oTypeM3PrdGrp: TypeM3PrdGrp, condicion: M3CONDIPROMO, jAdicionales) {\r\n try {\r\n var jResp: any;\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](oTypeM3PrdGrp[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n\r\n }\r\n\r\n\r\n /**\r\n * Verificar informacion adicional, esta informacion adicional esta en una variable global: goDataAdicional\r\n * @param condicion Objeto con informacion de condicion\r\n * @param jAdicionales JSON de informacion adicional\r\n */\r\n public VerificarInfoAdicional(condicion: M3CONDIPROMO, jAdicionales) {\r\n var jResp: any;\r\n if (this.goDataAdicional[condicion.Concepto] !== undefined && this.operators[jAdicionales.ROOT.Estructura.Operacion](this.goDataAdicional[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n if (jAdicionales.ROOT.Estructura.Operacion == \"MOD\" && +this.goDataAdicional[condicion.Concepto] > +condicion.Valor) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Verificar informacion contra usuario data.\r\n * @param condicion \r\n * @param jAdicionales \r\n */\r\n public VerificarInfoUserData(condicion: M3CONDIPROMO, jAdicionales) {\r\n var jResp: any;\r\n if (this.goDataUser.UsuarioSistema[condicion.Concepto] !== undefined && this.operators[jAdicionales.ROOT.Estructura.Operacion](this.goDataUser.UsuarioSistema[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n\r\n } else if (this.goDataUser.UsuarioSistema[condicion.Concepto] && this.goDataUser.UsuarioSistema[condicion.Concepto].includes(',')) {\r\n for (const element of this.goDataUser.UsuarioSistema[condicion.Concepto].split(',')) {\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](element, condicion.Valor.trim())) {\r\n return this.GenerarRespuesta(true, jAdicionales);\r\n }\r\n }\r\n return this.GenerarRespuesta(false, null);\r\n }\r\n else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n //Verificar contra el detalle de la condición\r\n public VerificacionM3DetalleCondicion(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion,\r\n detCondiciones: Array<M3DETCONDIPROMO>, conceptoCondicion: string, jAdicionalesCondicion) {\r\n var jResp;\r\n var odetCondicionesFinded;\r\n switch (conceptoCondicion.trim()) {\r\n case \"PRD_SKP1\":\r\n\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, oTypeM3PrdGrp.SKP1));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_SKP1+2\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, oTypeM3PrdGrp.SKP1 + oTypeM3PrdGrp.LoM3PrdGeneral[0].SKP2));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_SKU\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oTypeM3PrdGrp.LoM3PrdGeneral[0].SKU.toString()));\r\n\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_DISP\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](oTypeM3PrdGrp.LoM3PrdGeneral[0].DISPONIBLE.toString(), det.Valor.toString()));\r\n\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_TIPO\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oTypeM3PrdGrp.TIPO.toString()));\r\n\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n\r\n case \"PER_PROCESO\"://* Solo valida una detCondicion\r\n let perXProceso: M3PerXProceso;\r\n odetCondicionesFinded = undefined;\r\n perXProceso = oM3Procesos.M3PerXProceso.find(x => x.TipoPersona == detCondiciones[0].Valor.toString())\r\n if (jAdicionalesCondicion.ROOT.Estructura.Operacion == \"EN\" && perXProceso) {\r\n odetCondicionesFinded = detCondiciones[0];\r\n } else if (jAdicionalesCondicion.ROOT.Estructura.Operacion == \"DIFF\" && !perXProceso) {\r\n odetCondicionesFinded = detCondiciones[0];\r\n }\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"ALMACEN\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oM3Ubicacion.IDUbicacion.toString()));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"HORARIO_HORA\":\r\n var oTimeNow: Date = new Date();\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oTimeNow.getHours().toString()));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"LoM3PrdAdicionales\":\r\n if (jAdicionalesCondicion.ROOT.Estructura.Concepto !== undefined) {\r\n try {\r\n var VlrAdi = oTypeM3PrdGrp.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == jAdicionalesCondicion.ROOT.Estructura.Concepto).VALOR\r\n\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), VlrAdi.toString()));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n } catch {\r\n jResp = this.ValidarRespuesta(null);\r\n }\r\n } else {\r\n jResp = this.ValidarRespuesta(null);\r\n }\r\n break;\r\n default:\r\n //Procesos\r\n switch (conceptoCondicion.split(\"_\")[0].trim()) {\r\n case \"PROC\":\r\n var property = conceptoCondicion.split(\"_\")[1].trim();\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, oM3Procesos[property]));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"USER\":\r\n var property = conceptoCondicion.split(\"_\")[1].trim();\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, this.goDataUser.UsuarioSistema[property]));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n default:\r\n console.log(\"No Entro por Detalle!\");\r\n jResp = this.GenerarRespuesta(false, null);\r\n break;\r\n }\r\n break;\r\n\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n\r\n\r\n //Validar respuesta, con objeto a validar\r\n public ValidarRespuesta(objectValidate) {\r\n var jResp;\r\n var jAdicionales;\r\n if (objectValidate) {\r\n jAdicionales = JSON.parse(objectValidate.JAdicionales);\r\n //JAGM 20190625 Agregar seccion de validaciones.\r\n var bResp = this.ValidacionesByJAdicionales(jAdicionales)\r\n if (bResp) {\r\n //Se envia en adicionales, el json de la informacion encontrada del detalle.\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Validar reglas configuradas desde JSON de Adicionales\r\n * @param jAdicionales \r\n */\r\n public ValidacionesByJAdicionales(jAdicionales: any) {\r\n var bResp = true;\r\n try {\r\n //console.log(\"***********************************ValidacionesByJAdicionales\")\r\n //console.log(jAdicionales)\r\n if (jAdicionales.ROOT.VALIDACIONES && jAdicionales.ROOT.VALIDACIONES.TIPO) {\r\n switch (jAdicionales.ROOT.VALIDACIONES.TIPO) {\r\n case \"VIGENCIA\":\r\n bResp = this.ValidarVigencia(jAdicionales.ROOT.VALIDACIONES.VAL1, jAdicionales.ROOT.VALIDACIONES.VAL2);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(\"***********************************Error\");\r\n console.log(ex);\r\n }\r\n return bResp;\r\n }\r\n\r\n public ValidarVigencia(val1: Date, val2: Date) {\r\n\r\n var FechaActual = new Date();\r\n // console.log(val1)\r\n // console.log(val2)\r\n\r\n // var dVal1 = new Date(val1);\r\n // var dVal2 = new Date(val2);\r\n\r\n // console.log(dVal1)\r\n // console.log(dVal2)\r\n\r\n\r\n var nFechaActual: number = +this.GetFechaNumber(FechaActual); //+(FechaActual.getFullYear() + \"\" + FechaActual.getMonth() + \"\" + FechaActual.getDate());\r\n var nVal1: number = +this.GetFechaNumber(val1); //+(dVal1.getFullYear() + \"\" + dVal1.getMonth() + \"\" + (+dVal1.getDate() + 1) );\r\n var nVal2: number = +this.GetFechaNumber(val2) //+(dVal2.getFullYear() + \"\" + dVal2.getMonth() + \"\" + (+dVal2.getDate() + 1) );\r\n if (nFechaActual >= nVal1 && nFechaActual <= nVal2) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n public GetFechaNumber(date: Date) {\r\n var d = moment(date).format('YYYYMMDD');\r\n return d;\r\n }\r\n\r\n\r\n //Validar accion, si no tiene cargada una. Esta accion se carga jerarquicamente.\r\n public ValidarAccion(jResp, jAdicionales) {\r\n var jsonAdic = JSON.parse(jAdicionales);\r\n if (jResp.Accion == null && jsonAdic.ROOT.Accion !== undefined) {\r\n jResp.Accion = jsonAdic.ROOT.Accion;\r\n }\r\n }\r\n\r\n //Retomar información \r\n public RetomarValoresPromocion(oM3ENCPROMO: M3ENCPROMO, jResp) {\r\n jResp.Promocion = {};\r\n jResp.Promocion.Nombre = oM3ENCPROMO.Nombre;\r\n jResp.Promocion.ID = oM3ENCPROMO.IdPromocion;\r\n //Si no tuvo ninguna accion\r\n if (jResp.Accion == null) {\r\n jResp.Accion = { \"Tipo2\": oM3ENCPROMO.Tipo2, \"Tipo\": oM3ENCPROMO.Tipo };\r\n } else {\r\n /// Retomar desde el encabezado promo, si no existe el tipo y Tipo2\r\n if (!jResp.Accion.Tipo2) {\r\n jResp.Accion.Tipo2 = oM3ENCPROMO.Tipo2;\r\n }\r\n if (!jResp.Accion.Tipo) {\r\n jResp.Accion.Tipo = oM3ENCPROMO.Tipo;\r\n }\r\n }\r\n }\r\n //--------------------------> Fin Obtener informacion de promocion <--------------------------------\r\n\r\n //--------------------------> Inicio Procesamiento de promocion <--------------------------------\r\n\r\n\r\n //Procesamiento de promoción, teniendo en cuenta la informacion del producto a aplicar la promocion y las promociones a aplicar\r\n public ProcesarPromocion(JPromociones: Array<any>, oTypeM3PrdGrp: TypeM3PrdGrp, oM3ENCPROMO: Array<M3ENCPROMO>): PromocionProcesada {\r\n var oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotal = oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n return this.ProcesarPromoGeneral(JPromociones, oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO, oPromocionProcesada, oM3ENCPROMO);\r\n }\r\n\r\n /**\r\n * Procesamiento de promocion que se hacen validas despues de registrar todos los productos.\r\n * @param JPromociones \r\n * @param oM3Procesos \r\n */\r\n public ProcesarPromoAfter(JPromociones: Array<any>, oM3Procesos: M3Procesos, oM3ENCPROMO: Array<M3ENCPROMO>): PromocionProcesada {\r\n try {\r\n var oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotal = oM3Procesos.ValorNeto;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n return this.ProcesarPromoGeneral(JPromociones, oM3Procesos.ValorNeto, oPromocionProcesada, oM3ENCPROMO);\r\n } catch {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Procesamiento de promocion en general\r\n * @param JPromociones \r\n * @param nPrecio \r\n * @param oPromocionProcesada \r\n */\r\n public ProcesarPromoGeneral(JPromociones: Array<any>, nPrecio: number, oPromocionProcesada: PromocionProcesada, oM3ENCPROMO: Array<M3ENCPROMO>): PromocionProcesada {\r\n var oPromocionesAsociadas: PromocionesAsociadas;\r\n var oListaPromosAsoc = new Array<PromocionesAsociadas>();\r\n\r\n for (var _i = 0; _i < JPromociones.length; _i++) {\r\n //JPromociones.forEach(promocion => {\r\n var promocion = JPromociones[_i];\r\n oPromocionesAsociadas = this.ProcesarPromoByTipo(promocion, nPrecio, oPromocionProcesada, oM3ENCPROMO);\r\n if (oPromocionesAsociadas) {\r\n oListaPromosAsoc.push(oPromocionesAsociadas);\r\n }\r\n\r\n }\r\n this.ValidarMejorPromocion(oListaPromosAsoc, oPromocionProcesada, nPrecio);\r\n\r\n // if (oPromocionesAsociadas != null) {\r\n // oPromocionProcesada.ListPromocionesAsociadas.push(oPromocionesAsociadas);\r\n // oPromocionProcesada.PrecioTotal = Math.round(((+oPromocionProcesada.PrecioTotal) - oPromocionesAsociadas.Valor) * 100) / 100;\r\n // oPromocionProcesada.PrecioTotalPromocion = Math.round(((+oPromocionProcesada.PrecioTotalPromocion) + oPromocionesAsociadas.Valor) * 100) / 100;\r\n // oPromocionProcesada.ValorTotalMonedero += oPromocionesAsociadas.ValorMonedero;\r\n // }\r\n\r\n if (oPromocionProcesada.PrecioTotal < 0) {\r\n oPromocionProcesada.PrecioTotal = 0;\r\n }\r\n //FS 20190725 Redodneo de los valores totales\r\n // oPromocionProcesada.PrecioTotal = oPromocionProcesada.PrecioTotal;\r\n // oPromocionProcesada.PrecioTotalPromocion = oPromocionProcesada.PrecioTotalPromocion;\r\n return oPromocionProcesada;\r\n }\r\n\r\n /**\r\n * Validacion de mejor opcion, teniendo en cuenta las promociones procesadas.\r\n * @param oListaPromosAsoc Lista de promociones procesadas\r\n * @param oPromocionProcesada Promocion procesada, que retornará a flujo.\r\n */\r\n public ValidarMejorPromocion(oListaPromosAsoc: Array<PromocionesAsociadas>, oPromocionProcesada: PromocionProcesada, precio: number): PromocionProcesada {\r\n let promoAsociadaRestringido = oListaPromosAsoc.find(x => x.Tipo == \"RESTRICCION\");\r\n //Si el producto esta restringido le da mayor prioridad a esta promoción\r\n if (!promoAsociadaRestringido) {\r\n //1. Suma de todas las promociones Acumulables\r\n //var dPromoACM: number = 0;\r\n //dPromoACM = this.GetMaxXRegla(oListaPromosAsoc, \"ACM\", oPromocionProcesada);\r\n let dPromoEXC = this.GetMaxXRegla(oListaPromosAsoc, \"EXC\", oPromocionProcesada);\r\n let dPromoACMDIN = this.GetMaxXRegla(oListaPromosAsoc, \"ACMDIN\", oPromocionProcesada);\r\n //Promociones No Acumulables\r\n\r\n if (dPromoACMDIN < dPromoEXC) {\r\n this.aplicaPromoEXC(oListaPromosAsoc, oPromocionProcesada, dPromoEXC);\r\n }\r\n else {\r\n this.aplicaPromoACMDIN(oListaPromosAsoc, oPromocionProcesada, dPromoACMDIN);\r\n }\r\n oPromocionProcesada.ListPromocionesAsociadas = oListaPromosAsoc//.push(oListaPromosAsoc.find(x => x.Valor == dPromoEXC));\r\n\r\n //Recorrer todas las promociones Acumulables\r\n\r\n for (const promo of oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACM\" && !x.flags.formaPago)) {\r\n promo.Aplicada = true;\r\n if (promo.ValorPorcentaje > 0) {\r\n let nuevoValorDescuento = ((+oPromocionProcesada.PrecioTotal) * promo.ValorPorcentaje / 100);\r\n oPromocionProcesada.PrecioTotal = (+oPromocionProcesada.PrecioTotal) - nuevoValorDescuento;\r\n oPromocionProcesada.PrecioTotalPromocion = (+oPromocionProcesada.PrecioTotalPromocion) + nuevoValorDescuento;\r\n }\r\n else {\r\n oPromocionProcesada.PrecioTotal = ((+oPromocionProcesada.PrecioTotal) - promo.Valor);\r\n oPromocionProcesada.PrecioTotalPromocion = ((+oPromocionProcesada.PrecioTotalPromocion) + promo.Valor);\r\n }\r\n oPromocionProcesada.ValorTotalMonedero += promo.ValorMonedero;\r\n }\r\n\r\n ///////FUNCIONALIDAD PRODRIA FUNCIONAR MÃS ADELANTE, SI SE QUIERE AGRUPAR LAS PROMOCIONES ACM Y EXC\r\n // if(dPromoACM == 0 && dPromoEXC == 0){\r\n // throw new Error('No se encontraron promociones');\r\n // }else{\r\n // if(dPromoACM > dPromoEXC){\r\n // //Gana promociones acumulativas.\r\n // oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACM\").forEach(x => x.Aplicada = true); // Marcacion de promocion aplicada\r\n // oPromocionProcesada.ListPromocionesAsociadas = oListaPromosAsoc;//.filter(x => x.Regla.trim().toUpperCase() == \"ACM\")\r\n // oPromocionProcesada.PrecioTotal = Math.round(((+oPromocionProcesada.PrecioTotal) - dPromoACM) * 100) / 100;\r\n // oPromocionProcesada.PrecioTotalPromocion = Math.round(((+oPromocionProcesada.PrecioTotalPromocion) + dPromoACM) * 100) / 100;\r\n // oPromocionProcesada.ValorTotalMonedero += oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACM\").reduce((acc, cur) => (acc) + (+cur.ValorMonedero), 0);\r\n // }else{\r\n // //Gana promociones excluyentes.\r\n // oListaPromosAsoc.find(x => x.Valor == dPromoEXC).Aplicada = true; // Marcacion de promocion aplicada\r\n // oPromocionProcesada.ListPromocionesAsociadas = oListaPromosAsoc//.push(oListaPromosAsoc.find(x => x.Valor == dPromoEXC));\r\n // oPromocionProcesada.PrecioTotal = Math.round(((+oPromocionProcesada.PrecioTotal) - dPromoEXC) * 100) / 100;\r\n // oPromocionProcesada.PrecioTotalPromocion = Math.round(((+oPromocionProcesada.PrecioTotalPromocion) + dPromoEXC) * 100) / 100;\r\n // oPromocionProcesada.ValorTotalMonedero += oListaPromosAsoc.find(x => x.Valor == dPromoEXC).ValorMonedero;\r\n // }\r\n // }\r\n }\r\n else {\r\n oPromocionProcesada.ListPromocionesAsociadas = new Array<PromocionesAsociadas>(promoAsociadaRestringido);\r\n oPromocionProcesada.PrecioTotal = 0;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n oPromocionProcesada.ValorTotalMonedero = 0;\r\n }\r\n\r\n\r\n return oPromocionProcesada;\r\n }\r\n\r\n aplicaPromoEXC(oListaPromosAsoc: Array<PromocionesAsociadas>, oPromocionProcesada: PromocionProcesada, valorPromoEXC: number) {\r\n let promoExc: PromocionesAsociadas;\r\n if (valorPromoEXC > 0) {\r\n promoExc = oListaPromosAsoc.find(x => x.Valor == valorPromoEXC || x.ValorMonedero == valorPromoEXC);\r\n promoExc.Aplicada = true; // Marcacion de promocion aplicada\r\n oPromocionProcesada.PrecioTotal = ((+oPromocionProcesada.PrecioTotal) - promoExc.Valor);\r\n oPromocionProcesada.PrecioTotalPromocion = ((+oPromocionProcesada.PrecioTotalPromocion) + promoExc.Valor);\r\n oPromocionProcesada.ValorTotalMonedero += promoExc.ValorMonedero;\r\n }\r\n }\r\n aplicaPromoACMDIN(oListaPromosAsoc: Array<PromocionesAsociadas>, oPromocionProcesada: PromocionProcesada, valorPromoACMDIN: number) {\r\n if (valorPromoACMDIN > 0) {\r\n for (let promo of oListaPromosAsoc.filter(x => x.Regla == \"ACMDIN\")) {\r\n promo.Aplicada = true;\r\n oPromocionProcesada.ValorTotalMonedero += promo.ValorMonedero;\r\n }\r\n oPromocionProcesada.PrecioTotal = ((+oPromocionProcesada.PrecioTotal) - valorPromoACMDIN);\r\n oPromocionProcesada.PrecioTotalPromocion = ((+oPromocionProcesada.PrecioTotalPromocion) + valorPromoACMDIN);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Obtener el maximo valor segun la regla a comparar\r\n * @param oListaPromosAsoc \r\n * @param sRegla \r\n */\r\n public GetMaxXRegla(oListaPromosAsoc: Array<PromocionesAsociadas>, sRegla: string, oPromocionProcesada: PromocionProcesada) {\r\n var result: number = 0;\r\n try {\r\n switch (sRegla) {\r\n // case \"ACM\":\r\n // result = oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == sRegla && !x.flags.formaPago).reduce((acc, cur) => (acc) + (+cur.Valor), 0);\r\n // break;\r\n case \"ACMDIN\":\r\n let precioActual = oPromocionProcesada.PrecioTotal;\r\n let valorTotalDescuento = 0;\r\n for (const promo of oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACMDIN\" && (!x.flags.formaPago || x.Tipo == \"MONEDERO\"))) {\r\n if (promo.ValorPorcentaje > 0) {\r\n let nuevoValorDescuento = (precioActual * promo.ValorPorcentaje / 100);\r\n precioActual -= nuevoValorDescuento;\r\n valorTotalDescuento += nuevoValorDescuento;\r\n }\r\n else {\r\n precioActual -= promo.Valor;\r\n valorTotalDescuento += promo.Valor;\r\n }\r\n }\r\n result = valorTotalDescuento;\r\n break;\r\n case \"EXC\":\r\n result = Math.max.apply(Math, oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == sRegla && (!x.flags.formaPago || x.Tipo == \"MONEDERO\")).map(function (o) { return o.Valor > o.ValorMonedero ? o.Valor : o.ValorMonedero; }))\r\n break;\r\n }\r\n } catch {\r\n }\r\n return result;\r\n }\r\n\r\n\r\n //Procesar promocion segun el tipo \r\n public ProcesarPromoByTipo(promocion: any, Precio: number, oPromocionProcesada: PromocionProcesada, oM3ENCPROMO: Array<M3ENCPROMO>): PromocionesAsociadas {\r\n try {\r\n var Accion;\r\n var oPromocionesAsociadas = new PromocionesAsociadas();\r\n if (promocion.Accion != null && promocion.Promocion != undefined) {\r\n oPromocionesAsociadas.IDPromocion = promocion.Promocion.ID;\r\n oPromocionesAsociadas.Nombre = promocion.Promocion.Nombre;\r\n Accion = promocion.Accion;\r\n if (Accion.Regla) {\r\n oPromocionesAsociadas.Regla = Accion.Regla;\r\n } else {\r\n oPromocionesAsociadas.Regla = \"EXC\";\r\n }\r\n\r\n oPromocionesAsociadas.Tipo = Accion.Tipo2;\r\n\r\n switch (Accion.Tipo2.trim().toUpperCase()) {\r\n case \"DTO_%\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.ValorPorcentaje = +Accion.Valor\r\n oPromocionesAsociadas.Valor = (+Precio) * ((+Accion.Valor) / 100);\r\n break;\r\n case \"DTO_VALOR\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Valor = Accion.Valor;\r\n break;\r\n case \"DTO_EXACT\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Valor = (+Precio) - (+Accion.Valor);\r\n break;\r\n case \"OBSEQ\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = Accion.OBSEQUIOS;\r\n oPromocionesAsociadas.ReglaObseq = Accion.ReglaObseq;\r\n this.ValidarCantidadObsequios(oM3ENCPROMO, Accion.OBSEQUIOS, oPromocionesAsociadas);\r\n //validar cantidad vs cantidad de obsquios\r\n break;\r\n case \"MONEDERO\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ValorMonedero = +Accion.Valor;\r\n //FS 20190827 Ya no se guarda el valor total del monedero si no unicamente el porcentaje... oPromocionesAsociadas.ValorMonedero = (+oPromocionProcesada.PrecioTotal) * ((+Accion.Valor) / 100);\r\n break;\r\n case \"CUPON\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.IdCupon = Accion.Valor;\r\n break;\r\n case \"ACTIVA_PROMO\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.lIdActivaPromo = Accion.Valor.split(',');\r\n break;\r\n case \"RESTRICCION_PAGO\":\r\n case \"RESTRICCION\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Tipo = Accion.Tipo2.trim().toUpperCase();\r\n break;\r\n // case \"MOD_CANTIDAD\":\r\n // //this.AplicarReglaModCantidad(oPromocionesAsociadas, oPromocionProcesada, Accion);\r\n // break;\r\n default:\r\n if (Accion.Tipo == \"COMBINADA\") {\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.PromocionCombinada = new PromocionCombinada();\r\n oPromocionesAsociadas.PromocionCombinada.IdPromocionCombinada = oPromocionesAsociadas.IDPromocion;\r\n oPromocionesAsociadas.PromocionCombinada.Tipo2 = Accion.Tipo2.trim().toUpperCase();\r\n oPromocionesAsociadas.PromocionCombinada.Nombre = oPromocionesAsociadas.Nombre;\r\n oPromocionesAsociadas.PromocionCombinada.Accion = Accion;\r\n\r\n this.ValidarCamposAdicionales(oM3ENCPROMO, oPromocionesAsociadas.PromocionCombinada, promocion);\r\n } else {\r\n oPromocionesAsociadas = null;\r\n }\r\n break;\r\n }\r\n\r\n if (promocion.FormaPago) {\r\n oPromocionesAsociadas.flags.formaPago = true;\r\n }\r\n } else {\r\n return null;\r\n }\r\n return oPromocionesAsociadas;\r\n } catch (ex) {\r\n console.log(ex);\r\n return null;\r\n }\r\n }\r\n\r\n public ValidarCantidadObsequios(oM3ENCPROMO: Array<M3ENCPROMO>,\r\n obsequios: Array<any>, oPromocionesAsociadas: PromocionesAsociadas) {\r\n try {\r\n var promo: M3ENCPROMO;\r\n var ValorCantPRD: number = -1;\r\n var ValorCantPRDReal: number = this.goDataAdicional.dCantidad;\r\n promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionesAsociadas.IDPromocion);\r\n promo.M3CONDIAGRUPACION.forEach(x => {\r\n ValorCantPRD = +x.M3CONDIPROMO.find(x => x.Concepto == \"dCantidad\").Valor\r\n });\r\n oPromocionesAsociadas.CantidadObseq = ValorCantPRD\r\n } catch (ex) {\r\n console.log(ex)\r\n }\r\n }\r\n\r\n /**\r\n * Validar campos adicionales en promociones\r\n * @param oM3ENCPROMO \r\n * @param oPromocionCombinada \r\n * @param promocion \r\n */\r\n public ValidarCamposAdicionales(oM3ENCPROMO: Array<M3ENCPROMO>, oPromocionCombinada: PromocionCombinada, promocion: any) {\r\n switch (oPromocionCombinada.Tipo2) {\r\n case \"OBSEQ_CIERRE\":\r\n //Agregar Cantidad.\r\n var promo: M3ENCPROMO;\r\n var sValorCantidad: string = \"1\";\r\n promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionCombinada.IdPromocionCombinada);\r\n promo.M3CONDIAGRUPACION.forEach(x => {\r\n sValorCantidad = x.M3CONDIPROMO.find(x => x.Concepto == \"dCantidad\").Valor;\r\n });\r\n oPromocionCombinada.Accion.CantidadObsq = sValorCantidad;\r\n break;\r\n case \"XCARACTERISTICA\":\r\n // var promo: M3ENCPROMO;\r\n // promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionCombinada.IdPromocionCombinada);\r\n // var jAdic:any = JSON.parse(promo.JAdicionales);\r\n // oPromocionCombinada.Accion.Clasificacion = jAdic.ROOT.Accion.Caracteristica;\r\n break;\r\n case \"COMBO\":\r\n var promo: M3ENCPROMO;\r\n promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionCombinada.IdPromocionCombinada);\r\n if (!oPromocionCombinada.Accion.NumCondiciones) {\r\n oPromocionCombinada.Accion.NumCondiciones = promo.M3CONDIAGRUPACION[0].M3CONDIPROMO.length;\r\n }\r\n if (promocion.IDCondicion) {\r\n oPromocionCombinada.Accion.IdCondicion = promocion.IDCondicion\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n //--------------------------> Fin Procesamiento de promocion <--------------------------------\r\n\r\n\r\n //--------------------------> Inicio Procesamiento Combinada <--------------------------------\r\n\r\n //Procesar promociones combinadas\r\n public ProcesarCombinada(oM3Procesos: M3Procesos) {\r\n try {\r\n this.PromoCombinadasV2(oM3Procesos);\r\n return oM3Procesos;\r\n } catch (ex) {\r\n console.log(\"ProcesarCombinada\");\r\n console.log(ex);\r\n return oM3Procesos;\r\n }\r\n\r\n }\r\n\r\n /////////////////////////////V2 COMBINADA\r\n /**\r\n * Procesamiento de promociones combinadas, teniendo en cuenta la lista de promociones combinadas de M3Procesos\r\n * @param ioM3Proceso Objeto M3 Procesos, el cual se recorrerá la informacion de lista de promociones combinadas\r\n */\r\n public PromoCombinadasV2(ioM3Proceso: M3Procesos) {\r\n var oListEncab: Array<M3PEncItems>;\r\n let encConLaCantidadOriginal = _.cloneDeep(ioM3Proceso.M3ENC);\r\n\r\n if (ioM3Proceso.PromosCombinadas === undefined) {\r\n this.GetCombinadasFromDinamicas(ioM3Proceso);\r\n }\r\n\r\n for (var i = 0; i < ioM3Proceso.PromosCombinadas.length; i++) {\r\n this.AddDinamicaProcesoCombinadas(ioM3Proceso);\r\n var combi: PromocionCombinada = ioM3Proceso.PromosCombinadas[i];\r\n var esAcumulable = this.GetEsAcumulablePromo(combi)\r\n ///Obtener todos los Encabezados que aplican a la promocion a la que se esta iterando\r\n oListEncab = this.GetEncabezadoByCombi(combi, ioM3Proceso);\r\n switch (combi.Tipo2) {\r\n case \"MOD_CANTIDAD\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n //Esta promocion es: 3 gaseosas por $500\r\n this.AplicarReglaModCantidad(lPrecios, oListEncab, combi, esAcumulable);\r\n break;\r\n case \"OBSEQ_CIERRE\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.ProcesarPromoObsqCierre(lPrecios, combi, ioM3Proceso, esAcumulable);\r\n break;\r\n case \"OBSEQ_SUMTOTAL\":\r\n this.procesarObseqSumTotal(oListEncab, combi, ioM3Proceso);\r\n break;\r\n case \"XCARACTERISTICA\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.VerificarClasificacionesProceso(oListEncab, combi, lPrecios, esAcumulable);\r\n break;\r\n case \"XCARACTERISTICAPARCIAL\":\r\n this.ordenarListaEnc(oListEncab, esAcumulable);\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.procesarCaracteristicaParcial(oListEncab, combi, lPrecios, esAcumulable);\r\n break;\r\n case \"COMBO\":\r\n let aplCombo = true;\r\n while (aplCombo) {\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n aplCombo = this.PromocionCombinadaCombo(lPrecios, oListEncab, combi, esAcumulable, ioM3Proceso);\r\n }\r\n break;\r\n case \"DTO_VALORTOTAL\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.AplReglaCombValorTotal(lPrecios, oListEncab, combi, esAcumulable);\r\n break;\r\n case \"PROD_APLDESC\":\r\n this.procesarProductoAplDesc(oListEncab, combi, ioM3Proceso, esAcumulable);\r\n break;\r\n default:\r\n //Esta promocion es para 2x1, 3x1, 4x2, ...\r\n if (oListEncab && oListEncab.length > 0) {\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.CalcularPromocionesByListaPrec(lPrecios, oListEncab, combi, esAcumulable);\r\n }\r\n break;\r\n }\r\n }\r\n //Se reestablece la cantidad original para que no se quede en un buvle infinito\r\n for (const oM3PEncOriginales of encConLaCantidadOriginal) {\r\n let cantidadOriginal = oM3PEncOriginales.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\").Valor;\r\n let productoActual = ioM3Proceso.M3ENC.find(x => x.ID == oM3PEncOriginales.ID);\r\n productoActual.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\").Valor = cantidadOriginal;\r\n }\r\n\r\n return ioM3Proceso;\r\n }\r\n\r\n public ordenarListaEnc(olistaEnc: M3PEncItems[], esAcumulable) {\r\n if (esAcumulable) olistaEnc.sort((a, b) => (+b.M3DET.find(x => x.NombreConcepto == 'PUNITNETO').Valor) - (+a.M3DET.find(x => x.NombreConcepto == 'PUNITNETO').Valor));\r\n else olistaEnc.sort((a, b) => (+b.M3DET.find(x => x.NombreConcepto == 'PUNIT').Valor) - (+a.M3DET.find(x => x.NombreConcepto == 'PUNIT').Valor));\r\n\r\n }\r\n\r\n public AplReglaCombValorTotal(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean) {\r\n var Accion = combi.Accion;\r\n var cantidadDescPromo: number = +Accion.Valor;\r\n let precioTotalCompra: number = lPrecios.reduce(function (a, b) { return a + Number(b.PUNITNETO); }, 0);\r\n console.debug(precioTotalCompra);\r\n let descAcum = 0;\r\n let descProdActual;\r\n\r\n for (var i = 0; i < lPrecios.length; i++) {\r\n descProdActual = (lPrecios[i].PUNITNETO / precioTotalCompra) * cantidadDescPromo //40\r\n descAcum += descProdActual;\r\n lPrecios[i].Aplicado = true;\r\n lPrecios[i].PUNITNETO = lPrecios[i].PUNITNETO - descProdActual;\r\n // if (cantidadDescPromo > 0) {\r\n // lPrecios[i].Aplicado = true;\r\n // if (lPrecios[i].PUNITNETO < cantidadDescPromo) {\r\n // cantidadDescPromo -= lPrecios[i].PUNITNETO;\r\n // lPrecios[i].PUNITNETO = 0;\r\n // }\r\n // else{\r\n // lPrecios[i].PUNITNETO -= cantidadDescPromo;\r\n // cantidadDescPromo = 0;\r\n // }\r\n // }\r\n // else {\r\n // break;\r\n // }\r\n }\r\n\r\n if (cantidadDescPromo > descAcum || cantidadDescPromo < descAcum) {\r\n //find del ultimo \r\n console.debug(\"Encontre diferencia en promos combinadas: \" + cantidadDescPromo + \" vs \" + descAcum);\r\n lPrecios[lPrecios.length - 1].PUNITNETO = lPrecios[lPrecios.length - 1].PUNITNETO - (cantidadDescPromo - descAcum);\r\n }\r\n\r\n if (lPrecios.find(x => x.Aplicado)) {\r\n console.debug(\"AplicarReglaModCantidad\")\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, true, bEsAcumulable);\r\n }\r\n }\r\n\r\n\r\n public procesarObseqSumTotal(productosAplicaPromo: M3PEncItems[], combi: PromocionCombinada, oM3Procesos: M3Procesos) {\r\n let valorPromo = +combi.Accion.Valor;\r\n let sumaValorProductos = 0;\r\n let cantidadObsequios = 0;\r\n let cantidadProductoActual = 1;\r\n let productosHijosDelCombo: Array<M3PEncItems> = [];\r\n let productosRevisados = [];\r\n let oM3RegService = new M3RegService(null, null, null);\r\n let valorCombo = 0;\r\n let diferencia = 0;\r\n\r\n for (let encItem of productosAplicaPromo) {\r\n cantidadProductoActual = 1;\r\n let pUnitActual = +encItem.M3DET.find(x => x.NombreConcepto == \"PUNIT\").Valor;\r\n let cantidadActual = +encItem.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor;\r\n while (cantidadProductoActual <= cantidadActual) {\r\n sumaValorProductos += pUnitActual;\r\n cantidadProductoActual++;\r\n\r\n let productoRevisado = productosRevisados.find(x => x.Id == encItem.ID);\r\n if (productoRevisado) {\r\n productoRevisado.Cantidad++;\r\n }\r\n else {\r\n productosRevisados.push({ Id: encItem.ID, Cantidad: 1 });\r\n }\r\n if (sumaValorProductos + diferencia >= valorPromo) {\r\n valorCombo += sumaValorProductos;\r\n this.agregarProductoAProductosHijosSumTotal(productosHijosDelCombo, oM3Procesos, productosRevisados);\r\n cantidadObsequios++;\r\n productosRevisados = [];\r\n diferencia = sumaValorProductos - valorPromo;\r\n sumaValorProductos = 0;\r\n }\r\n }\r\n }\r\n if (productosHijosDelCombo.length > 0) {\r\n let productoCombo = oM3RegService.loadM3PEncItemsFromPromocionCombo(oM3Procesos, productosHijosDelCombo, combi.Accion.Codigo, valorCombo, 1);\r\n oM3RegService.armarListaObsequiosCombiSKU(combi, productoCombo, cantidadObsequios);\r\n oM3Procesos[\"oM3RegService\"] = oM3RegService;\r\n }\r\n }\r\n\r\n agregarProductoAProductosHijosSumTotal(productosHijosDelCombo: Array<M3PEncItems>, oM3Proceso: M3Procesos, productosRevisados) {\r\n let oM3RegService = new M3RegService(null, null, null);\r\n let prodHijo: M3PEncItems;\r\n\r\n for (let prodRevisado of productosRevisados) {\r\n if (prodRevisado) {\r\n let oM3PEncItems = oM3Proceso.M3ENC.find(x => x.ID == prodRevisado.Id);\r\n if (oM3PEncItems) {\r\n var oM3PDetalleItems: M3PDetalleItems// = new M3PDetalleItems();\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\");\r\n if (+oM3PDetalleItems.Valor > 0) {\r\n oM3PDetalleItems.Valor = (+oM3PDetalleItems.Valor - prodRevisado.Cantidad).toString();\r\n\r\n prodHijo = _.cloneDeep(oM3PEncItems)\r\n oM3RegService.ValoresCalculadosProceso(prodHijo, prodRevisado.Cantidad);\r\n productosHijosDelCombo.push(prodHijo);\r\n this.agregarAProductosQuitarCombi(oM3Proceso, prodHijo, prodRevisado.Cantidad);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n getProdutoPromoComboSumTotal(productosEnM3Proceso: Array<M3PEncItems>, oPrecioDelProductoActual): M3PEncItems {\r\n let oM3PEncItems = productosEnM3Proceso.find(x => x.ID == oPrecioDelProductoActual.ID)\r\n if (oM3PEncItems) {\r\n var oM3PDetalleItems: M3PDetalleItems// = new M3PDetalleItems();\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\");\r\n if (+oM3PDetalleItems.Valor > 0) {\r\n oM3PDetalleItems.Valor = (+oM3PDetalleItems.Valor - 1).toString();\r\n return _.cloneDeep(oM3PEncItems);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Lista de precios\r\n * @param lPrecios \r\n * @param oListEncab \r\n */\r\n public GetListaPrecios(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>) {\r\n var lPreciosFilter = new Array<any>();\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n lPrecios.filter(y => y.ID == oListEncab[i].ID).forEach(x => {\r\n lPreciosFilter.push(x);\r\n });\r\n\r\n }\r\n return lPreciosFilter;\r\n }\r\n\r\n /**\r\n * Promocion de combo, x productos, y productos, ... n productos \r\n * por $1000\r\n * @param lPrecios \r\n * @param oListEncab \r\n * @param combi \r\n * @param bEsAcumulable \r\n */\r\n public PromocionCombinadaCombo(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean, ioM3Proceso: M3Procesos): boolean {\r\n\r\n let flagAplicoPromo = false;\r\n try {\r\n var nNumeroCondiciones: number = +combi.Accion.NumCondiciones;\r\n var ValorPromo = +combi.Accion.Valor;\r\n var ListCondiciones = new Array<Array<any>>();\r\n var minimoItems: number = 0;\r\n let porcentajePromo = 0;\r\n let valorTotalSinPromo = 0;\r\n let productosHijosDelCombo = new Array<M3PEncItems>();\r\n let oM3RegService: M3RegService;\r\n\r\n\r\n for (var i = 1; i <= nNumeroCondiciones; i++) {\r\n //Buscar condicion 1.\r\n var ListPromoCombi: Array<M3PEncItems> = this.BuscarEncByPromoYCond(oListEncab, i.toString(), combi.IdPromocionCombinada.toString());\r\n ListCondiciones.push(this.GetListaPrecios(lPrecios, ListPromoCombi));\r\n }\r\n\r\n this.filtrarListaCondicionesCombo(ListCondiciones, oListEncab);\r\n if (ListCondiciones.length > 0) {\r\n //Buscar el valor menor de las items agregadas\r\n minimoItems = ListCondiciones[0].length;\r\n for (var j = 1; j < ListCondiciones.length; j++) {//Comienza desde 1 porque el 0 ya se valido en la anterior linea\r\n var itemsPrecios: Array<any> = ListCondiciones[j];\r\n var newMin = itemsPrecios.length;\r\n if (newMin < minimoItems) {\r\n minimoItems = newMin;\r\n }\r\n }\r\n //Los combos deben procesarse de a uno para su correcto funcionamiento\r\n if (minimoItems > 1) {\r\n minimoItems = 1;\r\n }\r\n\r\n //Recorre todos los precios de los productos de la promo para saber cual es el valor roal de la promo\r\n for (var k = 0; k < ListCondiciones.length; k++) {\r\n var condi = ListCondiciones[k];\r\n for (var l = 0; l < minimoItems; l++) {\r\n var enc: any = condi[l];\r\n valorTotalSinPromo += +lPrecios.find(x => x.ID == enc.ID && x.Indice == enc.Indice).PUNITNETO;\r\n }\r\n }\r\n\r\n //Calcula el valor del porcentaje de la promo a partir del calor del combo y de la suma de los precios originales de los productos\r\n porcentajePromo = 100 - (+ValorPromo * 100 / valorTotalSinPromo);\r\n\r\n for (var k = 0; k < ListCondiciones.length; k++) {\r\n var condi = ListCondiciones[k];\r\n for (var l = 0; l < minimoItems; l++) {\r\n var enc: any = condi[l];\r\n lPrecios.filter(x => x.ID == enc.ID).forEach(precio => {\r\n if (precio.Indice == enc.Indice) {\r\n if (!precio.PromoAplicada) {\r\n let valor = precio.PUNITNETO;\r\n\r\n //Modifica el precio de los productos a su nuevo valor con la promocion aplicada\r\n precio.PUNITNETO = valor - (valor * porcentajePromo / 100);\r\n precio.PromoAplicada = true;\r\n }\r\n this.agregarProductoAProductosHijos(productosHijosDelCombo, ioM3Proceso, precio);\r\n }\r\n else {\r\n //En las promos por combo no aplican el precio de los otros productos que no hacen parte del combo :)\r\n precio.PUNITNETO = 0;\r\n }\r\n });\r\n //lPrecios.find(x => x.ID == enc.ID && x.Indice == enc.Indice).PUNITNETO = -1;\r\n flagAplicoPromo = true;\r\n }\r\n }\r\n\r\n if (flagAplicoPromo) {\r\n oM3RegService = new M3RegService(null, null, null);\r\n //let productoPromoCombiExistente = ioM3Proceso.M3ENC.find(x => x.IdProducto == combi.Accion.Codigo);\r\n // if (!productoPromoCombiExistente) {\r\n this.CalculateTotalPriceFromList(lPrecios, productosHijosDelCombo, combi, true, bEsAcumulable);\r\n // }\r\n // else {\r\n // this.CalculateTotalPriceFromList(lPrecios, productosHijosDelCombo, combi, true, bEsAcumulable);\r\n // }\r\n oM3RegService.loadM3PEncItemsFromPromocionCombo(ioM3Proceso, productosHijosDelCombo, combi.Accion.Codigo, combi.Accion.Valor, 1);\r\n }\r\n\r\n }\r\n this.limpiarEncItemPrdCondi(oListEncab);\r\n\r\n } catch (ex) {\r\n console.log(\"PromocionCombinadaCombo\")\r\n console.log(ex)\r\n }\r\n return flagAplicoPromo;\r\n\r\n }\r\n\r\n filtrarListaCondicionesCombo(listCondiciones: Array<any>, oM3PEncItemsList: Array<M3PEncItems>) {\r\n for (let _i = 0; _i < listCondiciones.length; _i++) {\r\n let nuevaCondicion = [];\r\n for (const condicion of listCondiciones[_i]) {\r\n let encItem = oM3PEncItemsList.find(x => x.ID == condicion.ID);\r\n if (encItem) {\r\n let detCantidad = encItem.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor;\r\n encItem[\"PrdCondi\"] = encItem[\"PrdCondi\"] ? encItem[\"PrdCondi\"] : 0;\r\n if (detCantidad > encItem[\"PrdCondi\"]) {\r\n nuevaCondicion = [condicion];\r\n encItem[\"PrdCondi\"]++;\r\n break;\r\n }\r\n }\r\n }\r\n listCondiciones[_i] = nuevaCondicion;\r\n }\r\n }\r\n\r\n limpiarEncItemPrdCondi(oM3PEncItemsList: Array<M3PEncItems>) {\r\n oM3PEncItemsList.forEach(element => {\r\n delete element[\"PrdCondi\"];\r\n });\r\n }\r\n\r\n agregarAProductosQuitarCombi(oM3Proceso: M3Procesos, oM3PEncItems: M3PEncItems, cantidad = 1) {\r\n let productoQuitar;\r\n if (!oM3Proceso[\"ProductosCombi\"]) {\r\n oM3Proceso[\"ProductosCombi\"] = [];\r\n }\r\n\r\n productoQuitar = oM3Proceso[\"ProductosCombi\"].find(x => x.ID == oM3PEncItems.IdProducto);\r\n if (productoQuitar) {\r\n productoQuitar.Cantidad += (-1 * cantidad);\r\n }\r\n else {\r\n oM3Proceso[\"ProductosCombi\"].push({ ID: oM3PEncItems.IdProducto, Cantidad: (-1 * cantidad) })\r\n }\r\n }\r\n\r\n //Agrega el producto de la lista de entrada a un arreglo de productos que posteriormente sera los productos hijos del producto Combo\r\n agregarProductoAProductosHijos(productosHijosDelCombo: Array<M3PEncItems>, oM3Proceso: M3Procesos, oPrecioDelProductoActual) {\r\n let oM3PEncItems = this.getProdutoPromoCombo(oM3Proceso.M3ENC, oPrecioDelProductoActual);\r\n if (oM3PEncItems) {\r\n let oM3RegService = new M3RegService(null, null, null);\r\n //La cantidad disminuye pero este movimiento se reversa al terminar de validar esta promo\r\n oM3RegService.ValoresCalculadosProceso(oM3PEncItems, 1);\r\n productosHijosDelCombo.push(oM3PEncItems);\r\n this.agregarAProductosQuitarCombi(oM3Proceso, oM3PEncItems);\r\n }\r\n\r\n }\r\n\r\n //Disminuye en uno la cantidad del producto y retorna un clon de este\r\n getProdutoPromoCombo(productosEnM3Proceso: Array<M3PEncItems>, oPrecioDelProductoActual): M3PEncItems {\r\n let productosDelCombo = new Array<M3PEncItems>();\r\n let oM3PEncItems = productosEnM3Proceso.find(x => x.ID == oPrecioDelProductoActual.ID)\r\n if (oM3PEncItems) {\r\n var oM3PDetalleItems: M3PDetalleItems// = new M3PDetalleItems();\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\");\r\n if (+oM3PDetalleItems.Valor > 0) {\r\n oM3PDetalleItems.Valor = (+oM3PDetalleItems.Valor - 1).toString();\r\n return _.cloneDeep(oM3PEncItems);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Agregar en hashmap de precios\r\n * @param hmlPrecios \r\n * @param ID \r\n */\r\n public AddtoHmPrecios(hmlPrecios: Array<any>, ID: string) {\r\n var finded: any = hmlPrecios.find(x => x.ID == ID);\r\n if (finded) {\r\n finded.Indice = +finded.Indice + +1;\r\n } else {\r\n finded = { \"ID\": ID, \"Indice\": 0 };\r\n hmlPrecios.push(finded);\r\n }\r\n return finded.Indice;\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Buscar encabezados que tenga la promocion y condicion enviada como parametro\r\n * @param oListEncab \r\n * @param IdCondicion \r\n * @param idPromociones \r\n */\r\n public BuscarEncByPromoYCond(oListEncab: Array<M3PEncItems>, IdCondicion: string, idPromociones: string) {\r\n var oEncFinded = new Array<M3PEncItems>();\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n try {\r\n var oM3PEncItems: M3PEncItems = oListEncab[i];\r\n console.debug(oM3PEncItems.IdEncPadre)\r\n if (!oM3PEncItems.IdEncPadre || !(oM3PEncItems.IdEncPadre > 0)) {\r\n var det = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"PROMOCOMBI\");\r\n var detCantidad = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\");\r\n if (det && detCantidad && +detCantidad.Valor > 0) {\r\n var promos: Array<any> = JSON.parse(det.Valor);\r\n var promoFinded = promos.find(x => x.IdPromocionCombinada == idPromociones)\r\n if (promoFinded) {\r\n var condicionFinded = promoFinded.Accion.IdCondicion;\r\n if (condicionFinded) {\r\n if (condicionFinded.length) {\r\n if (condicionFinded.find(x => x == IdCondicion)) {\r\n oEncFinded.push(oM3PEncItems);\r\n }\r\n }\r\n else {\r\n if (condicionFinded == IdCondicion) {\r\n oEncFinded.push(oM3PEncItems);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } catch { }\r\n }\r\n return oEncFinded;\r\n }\r\n\r\n\r\n /**\r\n * Validación si la promoción que llega como parametro, es acumulable o no\r\n * @param promocion \r\n */\r\n public GetEsAcumulablePromo(promocion: PromocionCombinada) {\r\n try {\r\n if (promocion.Accion.Regla && promocion.Accion.Regla == \"ACM\") {\r\n return true;\r\n }\r\n } catch (ex) {\r\n console.log(\"Error GetEsAcumulable\")\r\n console.log(ex)\r\n }\r\n\r\n\r\n return false;\r\n }\r\n\r\n public procesarProductoAplDesc(oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, ioM3Proceso: M3Procesos, esAcumulable: boolean) {\r\n let lPrecios = new Array<any>();\r\n let prodsAplDescuento: Array<M3PEncItems> = [];\r\n let skuAplDescuentos: Array<any> = combi.Accion.skuAplDesc; //[{SKU:\"XXXXXX\"}, {SKU:\"YYYYYYY\"}]\r\n let maxNumDescuentos = +combi.Accion.maxNumDesc;\r\n let contDescAplicados = 0;\r\n\r\n try {\r\n //Calcula el numero maximo de descinetos que puede aplicar la promo que es combi.Accion.maxNumDesc multiplicado por la cantidad de productos que palican la promo en el proceso\r\n maxNumDescuentos = oListEncab.reduce((acc, cur) => {\r\n return acc + +cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n }, 0) * maxNumDescuentos;\r\n\r\n //De los productos del proceso filtro los productos que aplicaran el descuento segun los SKU configurados en combi.Accion.skuAplDesc\r\n ioM3Proceso.M3ENC.forEach(oM3PEncItems => {\r\n if (skuAplDescuentos.find(x => x.SKU == oM3PEncItems.IdProducto)) {\r\n prodsAplDescuento.push(oM3PEncItems);\r\n }\r\n });\r\n\r\n //Cálculo de los precios unitarios de los productos a los que la promo aplicara descuento\r\n lPrecios = this.ProcesarPromoCombyByListEnc(prodsAplDescuento, esAcumulable);\r\n\r\n //Aplica tantos descuentos se puedan a plaicar a cada valor de lPrecio\r\n while (contDescAplicados < maxNumDescuentos && contDescAplicados < lPrecios.length) {\r\n lPrecios[contDescAplicados].PUNITNETO -= (+lPrecios[contDescAplicados].PUNITNETO) * ((+combi.Accion.Valor) / 100);\r\n contDescAplicados++;\r\n }\r\n\r\n //Recalcula los valores del producto aplicando el descuento\r\n this.CalculateTotalPriceFromList(lPrecios, prodsAplDescuento, combi, true, esAcumulable);\r\n }\r\n catch (error) {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Procesamiento de obsequios en el cierre\r\n * Valida toda la lista de encabezados, teniendo en cuenta la cantidad ingresada en el carrito de compras\r\n * Valida la promoción, por cada cuantos productos ingresados, cuántos obsequios se pueden dar.\r\n * Trae todos los obsequios que se ingresaron en el carrito de compras, los lista\r\n * coloca en valor 0 los obsequios que selecciono automaticamente el algoritmo\r\n * Recalculo de precios, impuestos y demas valores totales.\r\n * @param oListEncab Lista de los productos ingresados al carrito que tienen obsequio\r\n * @param combi Información de promoción de obsequios\r\n * @param ioM3Proceso Proceso con todos los productos e información.\r\n */\r\n public ProcesarPromoObsqCierre(oListEncab: Array<any>, combi: PromocionCombinada, ioM3Proceso: M3Procesos, esAcumulable: boolean) {\r\n ioM3Proceso['ProductosCombi'] = [];\r\n let cantPorObs = +combi.Accion.CantidadObsq; //Por cada cuantos productos con la promoción se dará el obsequio.\r\n let cantAgregada = 0;\r\n let sumaValorProductos = 0;\r\n let cantidadObsequios = 0;\r\n let valorCombo = 0;\r\n let productosRevisados = [];\r\n let productosHijosDelCombo: Array<M3PEncItems> = [];\r\n let m3RegService = new M3RegService(null, null, null);\r\n m3RegService.obsequiosExc = true;\r\n m3RegService.oListaObsequios = combi.Accion.OBSEQUIOS;\r\n m3RegService.obsequiosCantidad = 0\r\n // var cantObsequios: number = 0; //Cantidad de obsequios que se dará por esta compra.\r\n\r\n\r\n for (const producto of oListEncab) {\r\n sumaValorProductos += producto.PUNITNETO;\r\n cantAgregada++;\r\n let productoRevisado = productosRevisados.find(x => x.Id == producto.ID);\r\n if (productoRevisado) {\r\n productoRevisado.Cantidad++;\r\n }\r\n else {\r\n productosRevisados.push({ Id: producto.ID, Cantidad: 1 });\r\n }\r\n\r\n if (cantAgregada === cantPorObs) {\r\n valorCombo += sumaValorProductos;\r\n this.agregarProductoAProductosHijosSumTotal(productosHijosDelCombo, ioM3Proceso, productosRevisados);\r\n cantidadObsequios++;\r\n productosRevisados = [];\r\n cantAgregada = 0;\r\n }\r\n }\r\n\r\n if (productosHijosDelCombo.length > 0) {\r\n let productoCombo = m3RegService.loadM3PEncItemsFromPromocionCombo(ioM3Proceso, productosHijosDelCombo, combi.Accion.Codigo, valorCombo, 1);\r\n m3RegService.armarListaObsequiosCombiSKU(combi, productoCombo, cantidadObsequios);\r\n ioM3Proceso[\"oM3RegService\"] = m3RegService;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Aplicar reglas, respecto a la cantidad ingresada.\r\n * @param oPromocionesAsociadas \r\n * @param oPromocionProcesada \r\n */\r\n public AplicarReglaModCantidad(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean) {\r\n var Accion = combi.Accion;\r\n\r\n var iCantidadPromo: number = Accion.Cantidad; //Ejemplo : 3\r\n //var iCantidadAPLPromo: number; //Numero real de aplicacion de promociones, Si aplica resta el residuo.\r\n var iCantidadReal: number; //Cantidad real ingresada.\r\n var ValorPromo: number = Accion.Valor;\r\n var valorPromoUnit: number = (+ValorPromo) / (+iCantidadPromo)\r\n iCantidadReal = lPrecios.length;\r\n\r\n if (iCantidadReal >= iCantidadPromo) { //JAGM 20190426 SE CAMBIA, ANTES ESTABA LA FUNCIONALIDAD DE CANTIDAD REAL VS CANTIDAD PROMOCION.\r\n if (iCantidadReal % iCantidadPromo == 0) {\r\n //iCantidadAPLPromo = iCantidadReal / iCantidadPromo;\r\n } else {\r\n var Residuo: number = iCantidadReal % iCantidadPromo;\r\n iCantidadReal = iCantidadReal - Residuo;\r\n //iCantidadAPLPromo = iCantidadReal / iCantidadPromo;\r\n }\r\n\r\n for (var i = 0; i < iCantidadReal; i++) {\r\n if (lPrecios[i].PUNITNETO > valorPromoUnit) {\r\n lPrecios[i].PUNITNETO = valorPromoUnit;\r\n lPrecios[i].Aplicado = true;\r\n }\r\n }\r\n if (lPrecios.find(x => x.Aplicado)) {\r\n console.debug(\"AplicarReglaModCantidad\")\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, true, bEsAcumulable);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Cargar combinadas desde dinamicas\r\n * @param ioM3Proceso \r\n */\r\n public GetCombinadasFromDinamicas(ioM3Proceso: M3Procesos) {\r\n try {\r\n var sCombinada = ioM3Proceso.lM3PDinamicas.find(x => x.Nombre == \"COMBINADA\").Valor;\r\n var oCombinada = JSON.parse(sCombinada);\r\n\r\n ioM3Proceso.PromosCombinadas = oCombinada;\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar a dinamicas proceso de combinadas\r\n * @param ioM3Proceso \r\n */\r\n public AddDinamicaProcesoCombinadas(ioM3Proceso: M3Procesos) {\r\n var oM3PDinamicasFinded: M3PDinamicas;\r\n oM3PDinamicasFinded = ioM3Proceso.lM3PDinamicas.find(x => x.Nombre == \"COMBINADA\");\r\n if (oM3PDinamicasFinded) {\r\n var arrPromo: Array<PromocionCombinada> = JSON.parse(oM3PDinamicasFinded.Valor);\r\n for (var i = 0; i < arrPromo.length; i++) {\r\n var oPromoCombi: PromocionCombinada = ioM3Proceso.PromosCombinadas.find(x => x.IdPromocionCombinada == arrPromo[i].IdPromocionCombinada);\r\n if (!oPromoCombi) {\r\n ioM3Proceso.PromosCombinadas.push(arrPromo[i]);\r\n }\r\n }\r\n oM3PDinamicasFinded.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n } else {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas.Nombre = \"COMBINADA\";\r\n oM3PDinamicas.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n\r\n ioM3Proceso.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Calcular promociones, segun la lista de precios dividida.\r\n * @param lPrecios Lista de precios, contra este objeto se iterará y se ordenará de mayor a menor\r\n * @param oListEncab \r\n * @param combi \r\n */\r\n public CalcularPromocionesByListaPrec(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean) {\r\n var TipoPromo = combi.Tipo2;\r\n var ix: number = 0;\r\n var iy: number = 0;\r\n var x: number = +TipoPromo.split(\"X\")[1]\r\n var y: number = +TipoPromo.split(\"X\")[0] - (+x);\r\n var residuoX: number = 0;\r\n var bEntro: boolean = false;\r\n\r\n if (x.toString().split(\".\").length > 1) {\r\n residuoX = +x.toString().split(\".\")[1];\r\n x = +x.toString().split(\".\")[0];\r\n }\r\n\r\n ///Se itera el arreglo de principio a fin y de fin a principio... \r\n ///Conforme se recorre el arreglo de fin a prinicio, se va dando la promoción a los productos de menor valor.\r\n ///Si la promoción esta incompleta, los productos de la mitad quedan sin promoción \r\n var i: number = 0;\r\n lPrecios = lPrecios.sort((a, b) => a.PUNITNETO < b.PUNITNETO ? 1 : a.PUNITNETO > b.PUNITNETO ? -1 : 0)\r\n if (lPrecios.length > 0) {\r\n var j = +lPrecios.length - 1;\r\n while (i < lPrecios.length && j >= i) {\r\n\r\n ix = 0;\r\n iy = 0;\r\n\r\n while (ix < x) {\r\n\r\n ix++;\r\n i++;\r\n }\r\n while (iy < y && j >= i) {\r\n\r\n if (residuoX == 0) {\r\n bEntro = true;\r\n lPrecios[j].PUNITNETO = 0;\r\n } else {\r\n bEntro = true;\r\n ///Para las promocion como: 2X1.5, ...\r\n //Esta soportando solo para: 2X1.5\r\n lPrecios[j].PUNITNETO = +lPrecios[j].PUNITNETO * (+residuoX / 10);\r\n }\r\n iy++;\r\n j--;\r\n }\r\n\r\n }\r\n //Calcular precios totales\r\n //Teniendo en cuenta la informacion de los precios unitarios.\r\n //JGAM 20191023, funcionalidad de que solo entra acá cuando se cambio algun precio\r\n if (bEntro) {\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, false, bEsAcumulable);\r\n }\r\n\r\n\r\n // for (var i = 0; i < oListEncab.length; i++) {\r\n // var enc: M3PEncItems = oListEncab[i];\r\n // enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor = lPrecios.filter(x => x.ID == enc.ID).\r\n // reduce((acc, cur) => (+acc) + (+cur.PUNITNETO), 0);\r\n\r\n // this.SetValorPromociones(enc);\r\n // this.AgregarListaPromo(enc, combi);\r\n // }\r\n }\r\n }\r\n /**\r\n * Calcular precio total teniendo en cuenta la lista de precios\r\n * @param lPrecios Lista de precios a tener en cuenta\r\n * @param oListEncab Lista de encabezados\r\n * @param combi Promocion combinada\r\n */\r\n public CalculateTotalPriceFromList(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bAplValida: boolean, bEsAcumulable: boolean) {\r\n //Calcular precios totales\r\n //Teniendo en cuenta la informacion de los precios unitarios.\r\n var dValorPromoAnt: number = 0;\r\n //var dValorPromoAntAcum: number = 0;\r\n var dValorAct: number = 0;\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n var enc: M3PEncItems = oListEncab[i];\r\n var dPrecioNuevo = lPrecios.filter(x => x.ID == enc.ID).\r\n reduce((acc, cur) => (+acc) + (+cur.PUNITNETO), 0);\r\n var precioTotalAnterior;\r\n precioTotalAnterior = enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n\r\n //JAGM 20190718 SE QUITA VALIDACION, POR FLUJO QUE SI SE DEVUELVE TRAE LA PROMO, PERO SI SE BORRA. if (dPrecioNuevo < precioTotalAnterior) { // Se agrega validacion de precio, para escoger el mejor. No pueden a ver 2 promociones.\r\n enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor = dPrecioNuevo;\r\n //enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALREAL\").Valor = dPrecioNuevo;\r\n //Limpiar promociones\r\n if ((this.ValidarSiTodosAPLPromoCombinada(lPrecios, enc) || !bAplValida) && !bEsAcumulable) {\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PROMOC\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PROMOC\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PRO_COMBI\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PRO_COMBI\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"VAL_PRO_COMBI\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"VAL_PRO_COMBI\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"ID_PRO_COMBI\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"ID_PRO_COMBI\").Valor = \"\"\r\n }\r\n this.QuitarLasPromosDirectas(enc);\r\n this.QuitarLasPromosCombinadas(enc);\r\n // enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PROMOC\").Valor = \"\";\r\n // enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\").Valor = \"\";\r\n dValorAct = ((+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor) - (+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor))\r\n } else {\r\n dValorPromoAnt = this.GetValorPromoAnterior(lPrecios, enc);\r\n dValorAct = this.GetValorPromoACt(enc, dValorPromoAnt, dPrecioNuevo, precioTotalAnterior, bEsAcumulable);\r\n //JAGM 20190730 se agrega para promociones acumulables. acumulab\r\n if (!bEsAcumulable) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\").Valor = dValorPromoAnt.toString();\r\n } else {\r\n //Es acumulable, utilizar la información \r\n dValorPromoAnt = (+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor - precioTotalAnterior)\r\n }\r\n\r\n }\r\n this.SetValorPromociones(enc, dValorAct + dValorPromoAnt);\r\n this.AgregarListaPromo(enc, combi, dValorAct);\r\n this.RecalcularPrecioUnitFromTotal(enc, dPrecioNuevo);\r\n //}\r\n }\r\n }\r\n\r\n\r\n public QuitarLasPromosDirectas(enc: M3PEncItems) {\r\n try {\r\n enc.M3DET.filter(x => x.NombreConcepto.toUpperCase().startsWith(\"VAL_PROMOC_\")).forEach(det => {\r\n det.Valor = \"0\";\r\n });\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n public QuitarLasPromosCombinadas(enc: M3PEncItems) {\r\n try {\r\n enc.M3DET.filter(x => x.NombreConcepto.toUpperCase().startsWith(\"VAL_PRO_COMBI_\")).forEach(det => {\r\n det.Valor = \"0\";\r\n });\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Recalcular precio unitario, a partir de un nuevo precio Total.\r\n * @param enc \r\n * @param newPrice \r\n */\r\n public RecalcularPrecioUnitFromTotal(enc: M3PEncItems, newPrice: number) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = (+newPrice / +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor).toString();\r\n }\r\n\r\n\r\n /**\r\n * Valida si todos los precios de un producto se cambiaron o no.\r\n * @param lPrecios Lista con todos los items\r\n * @param enc \r\n */\r\n public ValidarSiTodosAPLPromoCombinada(lPrecios: Array<any>, enc: M3PEncItems) {\r\n //Check, si alguno de la lista de precio es igual al precio anterior\r\n var precioAnterior = lPrecios.filter(x => x.ID == enc.ID).find(x => x.PUNITNETO == enc.M3DET.find(x => x.NombreConcepto == \"PUNITNETO\").Valor);\r\n if (precioAnterior) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valores de promociones dependiendo del numero de items que no se modificaron\r\n * @param lPrecios \r\n * @param enc \r\n */\r\n public GetValorPromoAnterior(lPrecios: Array<any>, enc: M3PEncItems) {\r\n try {\r\n var dValor = enc.M3DET.find(x => x.NombreConcepto == \"PUNITNETO\").Valor;\r\n var numeroItems = lPrecios.filter(x => x.ID == enc.ID && x.PUNITNETO == dValor).length;\r\n var dUnitPromo = enc.M3DET.find(x => x.NombreConcepto == \"VUNITPROMO\").Valor;\r\n return +numeroItems * +dUnitPromo;\r\n } catch {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valor de la promocion que se esta procesando actualmente\r\n * @param enc \r\n * @param valorPromoAnt \r\n * @param valotTotalNuevo \r\n */\r\n public GetValorPromoACt(enc: M3PEncItems, valorPromoAnt: number, valotTotalNuevo: number, precioTotalAnt: number, bEsAcumulable: boolean) {\r\n try {\r\n var valorTotalSinDto: number;\r\n var valorPromoAct: number;\r\n //JAGM 20190730 si viene acumulable utilizar el precio anterior, teniendo en cuenta el dto.\r\n if (bEsAcumulable) {\r\n valorTotalSinDto = precioTotalAnt;\r\n valorPromoAct = +valorTotalSinDto - +valotTotalNuevo;\r\n } else {\r\n valorTotalSinDto = +enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor;\r\n valorPromoAct = +valorTotalSinDto - +valorPromoAnt - +valotTotalNuevo;\r\n }\r\n\r\n\r\n return valorPromoAct;\r\n } catch (ex) {\r\n console.log(\"Error GetValorPromoACt: \");\r\n console.log(ex);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Setear el valor de la promocion\r\n * @param enc Encabezado de items\r\n */\r\n public SetValorPromociones(enc: M3PEncItems, valorPromo: number) {\r\n try {\r\n //enc.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor = ((+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor) - (+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor)).toString();\r\n //FS 20190725 Redondeo del valor de promocion\r\n enc.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor = (Math.round(valorPromo * 100) / 100).toString();\r\n //JAGM 20190618 Se agrega el valor unitario de la promoción\r\n enc.M3DET.find(det => det.NombreConcepto == \"VUNITPROMO\").Valor = (+(Math.round(valorPromo * 100) / 100) / +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor).toString();\r\n } catch {\r\n }\r\n }\r\n\r\n\r\n // /**\r\n // * Setear el valor de la promocion\r\n // * @param enc Encabezado de items\r\n // */\r\n // public SetValorPromocionesFromListaPrecios(enc: M3PEncItems, lPrecios: Array<any>) {\r\n // try {\r\n // enc.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor = lPrecios.filter(x => x.ID == enc.ID && x.PUNITNETO == dValor)\r\n // } catch{\r\n // }\r\n // }\r\n\r\n\r\n // public CalcularPromocionesByListaPrecBeta(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada) {\r\n // if (lPrecios.length > 0) {\r\n // var TipoPromo = combi.Tipo2;\r\n // var iSizePrec: number = lPrecios.length;\r\n // var iMitad: number;\r\n\r\n // var residuoX: number = 0;\r\n // var x: number = +TipoPromo.split(\"X\")[1]\r\n // var y: number = +TipoPromo.split(\"X\")[0] - (+x);\r\n // var iDto: number;\r\n\r\n // if (x.toString().split(\".\").length > 1) {\r\n // residuoX = +x.toString().split(\".\")[1];\r\n // }\r\n\r\n // iMitad = (+y) / (+iSizePrec);\r\n // iMitad = Math.ceil((+iMitad) * (+x)) - 1;\r\n\r\n // lPrecios = lPrecios.sort((a, b) => a.PUNITNETO < b.PUNITNETO ? 1 : a.PUNITNETO > b.PUNITNETO ? -1 : 0)\r\n\r\n // var iX = 0;\r\n // if (lPrecios.length > 0) {\r\n // iDto = iMitad;\r\n // while (iDto < iSizePrec) {\r\n // if (residuoX == 0) {\r\n // lPrecios[iDto].PUNITNETO = 0;\r\n // iDto++;\r\n // } else {\r\n // ///Para las promocion como: 2X1.5, ...\r\n // //Esta soportando solo para: 2X1.5\r\n // lPrecios[iDto].PUNITNETO = +lPrecios[iDto].PUNITNETO * (+residuoX / 10);\r\n // // while(iX < x){\r\n // // lPrecios[iDto].PUNITNETO = +lPrecios[iDto].PUNITNETO * (+residuoX / 10);\r\n // // iX++;\r\n // // iDto++;\r\n // // }\r\n // // iX = 0;\r\n\r\n // }\r\n\r\n // }\r\n\r\n // //Calcular precios totales\r\n // //Teniendo en cuenta la informacion de los precios unitarios.\r\n // for (var i = 0; i < oListEncab.length; i++) {\r\n // var enc: M3PEncItems = oListEncab[i];\r\n // enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor = lPrecios.filter(x => x.ID == enc.ID).\r\n // reduce((acc, cur) => (+acc) + (+cur.PUNITNETO), 0);\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n /**\r\n * Adicionar a lista de detalle el: NOMB_PROMOC, VAL_PROMOC y ID_PROMOC\r\n * @param enc \r\n * @param combi \r\n */\r\n public AgregarListaPromo(enc: M3PEncItems, combi: PromocionCombinada, dValorPromoCombi: number) {\r\n var detNombres: string;\r\n var detValores: string;\r\n var detIds: string;\r\n\r\n var oM3PDetalleItemsNames: M3PDetalleItems// = new M3PDetalleItems();\r\n var oM3PDetalleItemsVals: M3PDetalleItems// = new M3PDetalleItems();\r\n var oM3PDetalleItemsIds: M3PDetalleItems// = new M3PDetalleItems();\r\n\r\n\r\n oM3PDetalleItemsNames = enc.M3DET.find(d => d.NombreConcepto == \"NOMB_PRO_COMBI\");\r\n oM3PDetalleItemsVals = enc.M3DET.find(d => d.NombreConcepto == \"VAL_PRO_COMBI\");\r\n oM3PDetalleItemsIds = enc.M3DET.find(d => d.NombreConcepto == \"ID_PRO_COMBI\");\r\n\r\n if (oM3PDetalleItemsNames) {\r\n\r\n } else {\r\n oM3PDetalleItemsNames = new M3PDetalleItems();\r\n oM3PDetalleItemsVals = new M3PDetalleItems();\r\n oM3PDetalleItemsIds = new M3PDetalleItems();\r\n oM3PDetalleItemsNames.NombreConcepto = \"NOMB_PRO_COMBI\"\r\n oM3PDetalleItemsVals.NombreConcepto = \"VAL_PRO_COMBI\"\r\n oM3PDetalleItemsIds.NombreConcepto = \"ID_PRO_COMBI\"\r\n\r\n oM3PDetalleItemsNames.Valor = \"\"\r\n oM3PDetalleItemsVals.Valor = \"\"\r\n oM3PDetalleItemsIds.Valor = \"\"\r\n\r\n enc.M3DET.push(oM3PDetalleItemsNames)\r\n enc.M3DET.push(oM3PDetalleItemsVals)\r\n enc.M3DET.push(oM3PDetalleItemsIds)\r\n\r\n }\r\n\r\n\r\n oM3PDetalleItemsNames.Valor = oM3PDetalleItemsNames.Valor + combi.Nombre + \",\";\r\n oM3PDetalleItemsIds.Valor = oM3PDetalleItemsIds.Valor + combi.IdPromocionCombinada + \",\";\r\n oM3PDetalleItemsVals.Valor = oM3PDetalleItemsVals.Valor + dValorPromoCombi.toString() + \",\";\r\n\r\n //Ahora se agrega una dinamica por atributo de la promo para facilitar la retoma de esta información\r\n let listNombre = oM3PDetalleItemsNames.Valor.replace(/.$/, \"\").split(\",\");\r\n let listId = oM3PDetalleItemsIds.Valor.replace(/.$/, \"\").split(\",\");\r\n let listValor = oM3PDetalleItemsVals.Valor.replace(/.$/, \"\").split(\",\");\r\n\r\n for (let _i = 0; _i < listId.length; _i++) {\r\n this.actualizarOCrearPDinamica(enc.M3DET, listNombre[_i], \"NOMB_PRO_COMBI_\" + _i);\r\n this.actualizarOCrearPDinamica(enc.M3DET, listNombre[_i], \"ID_PRO_COMBI_\" + _i);\r\n this.actualizarOCrearPDinamica(enc.M3DET, listNombre[_i], \"VAL_PRO_COMBI_\" + _i);\r\n }\r\n }\r\n\r\n actualizarOCrearPDinamica(arrayDinamicas: Array<M3PDetalleItems>, nombreDinamica: string, ValorDinamica: string) {\r\n let oM3PDetalleItems = arrayDinamicas.find(x => x.NombreConcepto == nombreDinamica);\r\n if (oM3PDetalleItems) {\r\n oM3PDetalleItems.Valor = ValorDinamica;\r\n }\r\n else {\r\n oM3PDetalleItems = new M3PDetalleItems();\r\n oM3PDetalleItems.NombreConcepto = nombreDinamica;\r\n oM3PDetalleItems.Valor = ValorDinamica;\r\n arrayDinamicas.push(oM3PDetalleItems);\r\n }\r\n }\r\n\r\n /**\r\n * Obtener la lista de encabezados, que aplican a la lista combinada que tiene\r\n * @param oPromocionCombinada Objeto de promocion combianda\r\n * @param ioM3Proceso Objeto de M3Proceso\r\n */\r\n private GetEncabezadoByCombi(oPromocionCombinada: PromocionCombinada, ioM3Proceso: M3Procesos) {\r\n try {\r\n var oListEncab: Array<M3PEncItems>;\r\n oListEncab = ioM3Proceso.M3ENC.filter(enc => {\r\n if (enc.PromoCombinadas === undefined) {\r\n this.SetPromoCombinadaENC(enc);\r\n }\r\n if (!(enc.IdEncPadre > 0)) {\r\n if (enc.PromoCombinadas && +enc.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\").Valor > 0) {\r\n //JAGM 20191208 se cambia validacion, para que tenga en cuenta cualquier promocion combinada\r\n // return enc.PromoCombinadas.length > 0 && enc.PromoCombinadas[0].IdPromocionCombinada == oPromocionCombinada.IdPromocionCombinada\r\n return enc.PromoCombinadas.length > 0 && enc.PromoCombinadas.find(x => x.IdPromocionCombinada == oPromocionCombinada.IdPromocionCombinada);\r\n } else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n return oListEncab;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n public SetPromoCombinadaENC(oM3PEncItems: M3PEncItems) {\r\n try {\r\n var oM3PDetalleItems: M3PDetalleItems;\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"PROMOCOMBI\")\r\n if (oM3PDetalleItems) {\r\n oM3PEncItems.PromoCombinadas = JSON.parse(oM3PDetalleItems.Valor);\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Crear lista de precios y id de encabezado, teniendo en cuenta la informacion lista de encabezados\r\n * @param oListEncab Lista de encabezados a procesar\r\n */\r\n private ProcesarPromoCombyByListEnc(oListEncab: Array<M3PEncItems>, bEsAcumulable: boolean) {\r\n ///DesAcoplar lista de encabezados a precios totales\r\n var lPrecios = new Array<any>();\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n var enc: M3PEncItems = oListEncab[i];\r\n var nCantidad: number;\r\n var nPrecioUnit: number;\r\n nCantidad = +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n\r\n //JAGM 20190730 valida si la promocion es acumulable.\r\n if (bEsAcumulable) {\r\n nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor\r\n } else {\r\n nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNIT\").Valor\r\n }\r\n for (var j = 0; j < nCantidad; j++) {\r\n lPrecios.push({ \"Indice\": j, \"PUNITNETO\": nPrecioUnit, \"ID\": enc.ID });\r\n }\r\n }\r\n return lPrecios;\r\n\r\n }\r\n\r\n\r\n // /**\r\n // * Crear lista de precios y id de encabezado, teniendo en cuenta la informacion lista de encabezados\r\n // * @param oListEncab Lista de encabezados a procesar\r\n // */\r\n // private ProcesarPromoCombyByListEnc(oListEncab: Array<M3PEncItems>, bEsAcumulable: boolean) {\r\n // ///DesAcoplar lista de encabezados a precios totales\r\n // var lPrecios = new Array<any>();\r\n // for (var i = 0; i < oListEncab.length; i++) {\r\n // var enc: M3PEncItems = oListEncab[i];\r\n // var nCantidad: number;\r\n // var nPrecioUnit: number;\r\n // nCantidad = +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n\r\n // //JAGM 20190730 valida si la promocion es acumulable.\r\n // if (bEsAcumulable) {\r\n // nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor\r\n // } else {\r\n // nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNIT\").Valor\r\n // }\r\n // for (var j = 0; j < nCantidad; j++) {\r\n // lPrecios.push({ \"Indice\": j, \"PUNITNETO\": nPrecioUnit, \"ID\": enc.ID });\r\n // }\r\n // }\r\n // return lPrecios;\r\n\r\n // }\r\n ///////////////////////////////FIN V2 COMBINADA\r\n\r\n\r\n /**\r\n * ProcesarCombinadaXporY\r\n * Procesar promocion combinada que se llevan x productos por el precion de y productos.\r\n */\r\n public ProcesarCombinadaXporY(oM3Procesos: M3Procesos, m3EncAgregado: M3PEncItems) {\r\n var m3EncsConPromo: Array<M3PEncItems>;\r\n var m3CombinadaxProceso: M3PromCombinadaXProceso;\r\n\r\n //Valida si el producto agregado, tiene una misma promocion activa en la factura.\r\n // if (oM3Procesos.lM3PromCombinada != null && oM3Procesos.lM3PromCombinada.length > 0) {\r\n // m3CombinadaxProceso = oM3Procesos.lM3PromCombinada.find(combinadas => combinadas.IdPromocion == m3EncAgregado.PromoCombinadas[0].IdPromocionCombinada && combinadas.Terminada == false);\r\n // //Valida si ya existe un proceso.\r\n // if (m3CombinadaxProceso != null) {\r\n // m3EncAgregado.PromoCombinadas[0].IdPromocionXProceso = m3CombinadaxProceso.IdPromocionXProceso;\r\n // //Trae los Encabezados con la promocion \r\n // m3EncsConPromo = oM3Procesos.M3ENC.filter(encs => encs.PromoCombinadas != null && encs.PromoCombinadas.length > 0 && encs.PromoCombinadas[0].IdPromocionXProceso == m3CombinadaxProceso.IdPromocionXProceso);\r\n // this.RecalcularPromoXPorY(m3EncsConPromo, m3CombinadaxProceso);\r\n // } else {\r\n // this.AgregarPromocionCombinadaAProceso(oM3Procesos, m3EncAgregado.PromoCombinadas[0]);\r\n // }\r\n // } else {\r\n // oM3Procesos.lM3PromCombinada = new Array<M3PromCombinadaXProceso>();\r\n // this.AgregarPromocionCombinadaAProceso(oM3Procesos, m3EncAgregado.PromoCombinadas[0]);\r\n // }\r\n }\r\n\r\n\r\n //recalcular promocion, dependiendo de la informacion de los encabezados.\r\n //1.Validar si ya estan todos los items para recalcular la promocion\r\n //2. Ordenar los encabezados de mayor a menor precio.\r\n //3. Dejar el precio de los items de menor precion en 0\r\n // public RecalcularPromoXPorY(m3EncsConPromo: Array<M3PEncItems>, m3CombinadaxProceso: M3PromCombinadaXProceso) {\r\n // var oPromocionCombinada: PromocionCombinada;\r\n // var varx: number;\r\n // var vary: number;\r\n // var parteDecY: number = 0;\r\n // oPromocionCombinada = m3EncsConPromo[0].PromoCombinadas[0];\r\n\r\n // varx = parseFloat(oPromocionCombinada.Tipo2.trim().toUpperCase().split(\"_\")[1].split(\"X\")[0]);\r\n // vary = parseFloat(oPromocionCombinada.Tipo2.trim().toUpperCase().split(\"_\")[1].split(\"X\")[1]);\r\n\r\n // if (String(vary).includes(\".\")) {\r\n // parteDecY = parseFloat(oPromocionCombinada.Tipo2.trim().toUpperCase().split(\"_\")[1].split(\"X\")[1].split(\".\")[1]);\r\n // vary = parseFloat(String(vary).split(\".\")[0]);\r\n // }\r\n\r\n // if (varx == m3EncsConPromo.length) {\r\n // m3CombinadaxProceso.Terminada = true;\r\n // //Ordenar los encabezados por precio mayor a menor\r\n // m3EncsConPromo = m3EncsConPromo.sort((a, b) =>\r\n // (a.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor < b.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor) ? 1 :\r\n // ((b.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor < a.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor) ? -1 : 0));\r\n\r\n // for (let i = 0; i < m3EncsConPromo.length; i++) {\r\n // //Valida si ya \r\n // if (parteDecY != 0 && (+i) == (+vary)) {\r\n // console.log(parteDecY);\r\n // m3EncsConPromo[i].M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = ((+m3EncsConPromo[i].M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor) * (+(+parteDecY) / 100)).toString();\r\n // } else if ((+i) + 1 > vary) {\r\n // m3EncsConPromo[i].M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = \"0\";\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n\r\n // }\r\n\r\n //--------------------------> Fin Procesamiento Combinada <--------------------------------\r\n\r\n /**\r\n * Retorna el total de puntos de fidelizacion en la transacción redondeados hacÃa abajo\r\n * @param oM3Procesos \r\n */\r\n public get_total_fidelizacion(oM3Procesos: M3Procesos) {\r\n let total_fidelizacion = 0;\r\n if (oM3Procesos !== undefined && oM3Procesos.M3ENC !== undefined) {\r\n total_fidelizacion = oM3Procesos.M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"FIDELIZACION\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (((+cur.M3DET.find(det => det.NombreConcepto == \"FIDELIZACION\").Valor) / 100) * (+cur.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor)), 0)\r\n }\r\n //Se redondeara no aca sino en la suma total del fidelizacion de cada forma de pago\r\n return total_fidelizacion;\r\n }\r\n\r\n /**\r\n * Obtiene el valor del fidelizacion de un proceso, evaluando cada forma de pago\r\n * @param proceso \r\n * @param list_enc_promo \r\n */\r\n public get_value_fidelizacion_by_proceso(proceso: M3Procesos, list_enc_promo: Array<M3ENCPROMO>) {\r\n\r\n var pago_total_proceso: number = proceso.ValorNeto;\r\n //var max_value_fidelizacion: number = this.get_total_fidelizacion(proceso);\r\n var real_value_fidelizacion: number = 0;\r\n\r\n var list_condi_promo = this.get_list_condi_promo_by_actividad(list_enc_promo, \"PAGO\", \"MONEDERO\");\r\n\r\n if (proceso.lM3PEncFP) {\r\n for (var _i = 0; _i < proceso.lM3PEncFP.length; _i++) {\r\n var forma_pago: M3PEncFP = proceso.lM3PEncFP[_i];\r\n let promoAplicada: M3CONDIPROMO;\r\n let aplica_fidelizacion = this.validate_condi_by_forma_pago(forma_pago, list_condi_promo);\r\n\r\n if (aplica_fidelizacion.length > 0) {\r\n let valorPago = forma_pago.Valor - forma_pago.ValCambio;\r\n real_value_fidelizacion += this.calculate_fidelizacion_by_forma_pago(pago_total_proceso, proceso.M3ENC, valorPago, aplica_fidelizacion, list_enc_promo);\r\n }\r\n }\r\n }\r\n\r\n // if (real_value_fidelizacion > max_value_fidelizacion) {\r\n // real_value_fidelizacion = max_value_fidelizacion;\r\n // }\r\n\r\n real_value_fidelizacion = this.oMathTF.round(real_value_fidelizacion, 2);\r\n return real_value_fidelizacion;\r\n }\r\n\r\n /**\r\n * Retorna las restricciones Activas de tipo de pago a partir de Array<M3CONDIPROMO>\r\n * @param listCondiPromoTPRestringido .\r\n * @param listM3EncItem \r\n */\r\n public getRestriccionesTipoPagoActivas(listCondiPromoTPRestringido: Array<M3CONDIPROMO>, listM3EncItem: Array<M3PEncItems>): Array<M3CONDIPROMO> {\r\n let restriccionesActivas = new Array<M3CONDIPROMO>();\r\n if (listCondiPromoTPRestringido.length > 0) {\r\n for (let _i = 0; _i < listM3EncItem.length; _i++) {\r\n let listM3Det = listM3EncItem[_i].M3DET;\r\n if (+listM3EncItem[_i].M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor > 0) {\r\n let idPromociones = listM3Det.find(x => x.NombreConcepto == \"ID_PROMOC\");\r\n if (idPromociones) {\r\n let idPromo = idPromociones.Valor.split(\",\");\r\n for (let _k = 0; _k < idPromo.length; _k++) {\r\n let promo = +idPromo[_k];\r\n let condiPromo = listCondiPromoTPRestringido.find(x => x.IdPromocion == promo);\r\n if (condiPromo && !restriccionesActivas.find(x => x.IdPromocion == promo)) {\r\n restriccionesActivas.push(condiPromo)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return restriccionesActivas;\r\n }\r\n\r\n /**\r\n * Retorna las restricciones Activas para los productos del proceso actual\r\n * @param listEncPromo \r\n * @param listM3EncItem \r\n */\r\n public getRestriccionesTipoPagoActivasFromEncPromo(listEncPromo: Array<M3ENCPROMO>, listM3EncItem: Array<M3PEncItems>) {\r\n let listCondiPromoTPRestringido = this.get_list_condi_promo_by_actividad(listEncPromo, \"PAGO\", \"RESTRICCION_PAGO\");\r\n\r\n return this.getRestriccionesTipoPagoActivas(listCondiPromoTPRestringido, listM3EncItem);\r\n }\r\n\r\n\r\n /**\r\n * Retorna los movimientos realizados por un m3saldosxcuenta\r\n */\r\n public m3_get_movimientos_fidelizacion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n\r\n //var data = { \"id_m3\": idm3, \"id_proceso\": proceso };\r\n PostServiceM3.getWithBodyM3(\"M3/m3_get_movimientos_fidelizacion/\" + idkatios, data).subscribe(resp => {\r\n var movs = JSON.parse(resp.toString());\r\n var resp_movs: Array<any>;\r\n if (!movs.MOVS.MOV.length) {\r\n resp_movs = new Array<any>();\r\n resp_movs.push(movs.MOVS.MOV);\r\n } else {\r\n resp_movs = movs.MOVS.MOV;\r\n }\r\n\r\n funcionOK(resp_movs);\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Valida si la forma de pago cumple alguna condicion de fidelizacion\r\n * @param forma_pago \r\n * @param list_condi_promo: listado de condiciones de fidelizacion\r\n */\r\n public validate_condi_by_forma_pago(forma_pago: M3PEncFP, list_condi_promo: Array<M3CONDIPROMO>) {\r\n //return list_condi_promo[0];\r\n let promosAplicadas = new Array<M3CONDIPROMO>();\r\n for (let _i = 0; _i < list_condi_promo.length; _i++) {\r\n var condi_promo = list_condi_promo[_i];\r\n var jAdicionales = JSON.parse(condi_promo.JAdicionales);\r\n\r\n switch (condi_promo.Concepto.trim()) {\r\n case \"ID_PAGO\":\r\n //Si el operador es DIFF crea una expresion regula para excluir lo tipodepago configurados\r\n if (jAdicionales.ROOT.Estructura && jAdicionales.ROOT.Estructura.Operacion && jAdicionales.ROOT.Estructura.Operacion == \"DIFF\") {\r\n condi_promo.Valor = \"^(?!(\" + condi_promo.Valor + \")\\\\b)\\\\w+$\";\r\n }\r\n else {\r\n condi_promo.Valor = \"^(\" + condi_promo.Valor + \")$\";\r\n }\r\n var re = new RegExp(condi_promo.Valor, \"i\");\r\n if (re.test(forma_pago.IdTipoPago.toString())) {\r\n promosAplicadas.push(condi_promo);\r\n }\r\n break;\r\n }\r\n }\r\n return promosAplicadas;\r\n }\r\n\r\n /**\r\n * Retorna el listado de condiciones validas para una actividad dada\r\n * @param list_enc_promo \r\n */\r\n public get_list_condi_promo_by_actividad(list_enc_promo: Array<M3ENCPROMO>, actividad: string, tipo2: string): Array<M3CONDIPROMO> {\r\n var list_condi_promo: Array<M3CONDIPROMO> = new Array<M3CONDIPROMO>();\r\n var hoy = new Date();\r\n\r\n if (list_enc_promo) {\r\n for (let _k = 0; _k < list_enc_promo.length; _k++) {\r\n var encabezadoPromo = list_enc_promo[_k];\r\n var dVigencia = new Date(encabezadoPromo.Vigencia);\r\n var dInicio = new Date(encabezadoPromo.Inicio);\r\n if (encabezadoPromo.Estado && dVigencia >= hoy && dInicio <= hoy && encabezadoPromo.Tipo2 == tipo2) {\r\n for (let _i = 0; _i < encabezadoPromo.M3CONDIAGRUPACION.length; _i++) {\r\n let condi_agrupacion = encabezadoPromo.M3CONDIAGRUPACION[_i];\r\n\r\n for (let _j = 0; _j < condi_agrupacion.M3CONDIPROMO.length; _j++) {\r\n let condi_promo = condi_agrupacion.M3CONDIPROMO[_j];\r\n if (condi_promo.JAdicionales) {\r\n var jAdicionales = JSON.parse(condi_promo.JAdicionales);\r\n if (jAdicionales.ROOT.ACTIVIDAD && jAdicionales.ROOT.ACTIVIDAD == actividad) {\r\n list_condi_promo.push(condi_promo);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return list_condi_promo;\r\n }\r\n\r\n /**\r\n * Calcula el valor del fidelizacion de una forma de pago de acuerdo a su porcentaje respecto el valor total del proceso\r\n * @param pago_total_proceso \r\n * @param max_value_fidelizacion \r\n * @param value_forma_pago \r\n */\r\n public calculate_fidelizacion_by_forma_pago(pago_total_proceso: number, listM3Enc: M3PEncItems[], value_forma_pago: number, promosAplicada: Array<M3CONDIPROMO>, list_enc_promo: Array<M3ENCPROMO>) {\r\n let listPromosAplicadas;\r\n let detalleIdPromoc;\r\n let valorFidelizacion = 0;\r\n let percent_forma_pago: number = value_forma_pago / pago_total_proceso;\r\n var precioProducto = 0;\r\n for (const item of listM3Enc) {\r\n listPromosAplicadas = [];\r\n detalleIdPromoc = item.M3DET.find(x => x.NombreConcepto == \"ID_PROMOC\");\r\n precioProducto = +item.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n if (detalleIdPromoc && detalleIdPromoc.Valor) {\r\n listPromosAplicadas = detalleIdPromoc.Valor.split(\",\");\r\n }\r\n for (const promoApl of promosAplicada) {\r\n if (listPromosAplicadas.find(x => +x == promoApl.IdPromocion)) {\r\n let promo = list_enc_promo.find(x => x.IdPromocion == promoApl.IdPromocion);\r\n valorFidelizacion += (precioProducto * this.getPorcentajeFidelizacionFromEncPromo(promo) / 100) * (percent_forma_pago);\r\n break;\r\n }\r\n }\r\n }\r\n return valorFidelizacion;\r\n }\r\n\r\n getPorcentajeFidelizacionFromEncPromo(promo) {\r\n try {\r\n let jAdicionales = JSON.parse(promo.JAdicionales);\r\n if (jAdicionales.ROOT && jAdicionales.ROOT.Accion && jAdicionales.ROOT.Accion.Valor) {\r\n return jAdicionales.ROOT.Accion.Valor;\r\n }\r\n } catch {\r\n }\r\n return 0;\r\n }\r\n\r\n /**\r\n * Adiciona una dinamica con el valor de la fidelización de dicho proceso y retorna dicho proceso\r\n * @param proceso \r\n * @param list_enc_promo \r\n */\r\n public add_dinamica_fidelizacion_to_proceso(proceso: M3Procesos, list_enc_promo: Array<M3ENCPROMO>): M3Procesos {\r\n var value_fidelizacion = 0\r\n if (list_enc_promo) {\r\n value_fidelizacion = this.get_value_fidelizacion_by_proceso(proceso, list_enc_promo);\r\n }\r\n\r\n if (value_fidelizacion > 0) {\r\n var dinamica_fidelizacion: M3PDinamicas = new M3PDinamicas();\r\n dinamica_fidelizacion.Nombre = \"FIDELIZACION\"\r\n dinamica_fidelizacion.Valor = value_fidelizacion.toString();\r\n\r\n proceso.lM3PDinamicas.push(dinamica_fidelizacion);\r\n }\r\n\r\n return proceso;\r\n }\r\n\r\n /**\r\n * Valida la existencia de un documento de fidelizacion en la tabla M3SaldosXCuenta\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param documento \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public validate_doc_fidelizacion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.getWithBodyM3(\"M3/validate_doc_fidelizacion/\" + idkatios, data).subscribe(resp => {\r\n var saldo_x_cuenta;\r\n saldo_x_cuenta = JSON.parse(resp.toString()).RESPUESTA.M3SaldosXCuenta;\r\n funcionOK(saldo_x_cuenta);\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Actualiza el saldo sumandole el valor enviado\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public actualizar_saldo_fidelizacion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n //data = {\"documento\":documento, \"valor_movimiento\":valor_moviento, \"pago\":pago }\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/actualizar_saldo_fidelizacion/\" + idkatios, data).subscribe(resp => {\r\n data.pago.idDiario = resp[\"_body\"].replace('\"', '').replace('\"', '');\r\n funcionOK(data.pago);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n /**\r\n * Genera Un bono de devolucion por el valor dado\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data = {\"proceso\",proceso,\"valor\":valor}\r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public m3_generar_bono_devolucion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/m3_generar_bono_devolucion/\" + idkatios, data).subscribe(resp => {\r\n funcionOK(resp);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n /**\r\n * Crea un nuevo registro en la tabla SaldoXCuenta\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public m3InsertSaldoXCuenta(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n //var data = { 'Documento': this.documento, 'TDocTitular': '5', 'NDocTitular': this.ndoc_cliente, 'NomCuenta': 'FIDELIZACION', 'ValCuenta': 0 }\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/m3InsertSaldoXCuenta/\" + idkatios, data).subscribe(resp => {\r\n funcionOK();\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n\r\n public getCantidadTotal(M3ENC: Array<M3PEncItems>) {\r\n if (M3ENC) {\r\n var dCantidad = M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (+cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor), 0);\r\n if (dCantidad == 0) {\r\n return 0;\r\n } else {\r\n return dCantidad;\r\n }\r\n } else {\r\n return 0;\r\n }\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchConfigLPService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private idkatios: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private aplSyncCouchAuto = true;\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n\r\n }\r\n\r\n getFlagSyncCouch() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n let flag: boolean = true;\r\n let config;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Configuracion) {\r\n config = JSON.parse(oSUbicacion.M3HUBS[0].Configuracion);\r\n\r\n if (config.SyncCouchAuto != null && config.SyncCouchAuto != undefined) {\r\n flag = config.SyncCouchAuto;\r\n }\r\n }\r\n }\r\n return flag;\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"ConfigLP_\" + this.idkatios, { auto_compaction: true });\r\n console.debug(\"adapter\")\r\n console.debug(this.database.adapter);\r\n var sIdkatios: string;\r\n\r\n // this.validarPaquetes()\r\n this.syncCouch();\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE CONFIGLP *****************************************\")\r\n\r\n }\r\n\r\n // validarPaquetes() {\r\n // if (this.aplPaquetes) {\r\n // let ubicacion = this.getUbicacion();\r\n // if (ubicacion) {\r\n // this.sync(this.GetServer() + \"prdsa\" + ubicacion + \"_\" + this.idkatios.toLowerCase());\r\n // }\r\n // else {\r\n // this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n // }\r\n // }\r\n // else {\r\n // this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n // }\r\n // }\r\n\r\n syncCouch() {\r\n if (!this.idkatios) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"configlp_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n\r\n getUbicacion() {\r\n let sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n let oSUbicacion;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.IDUbicacion) {\r\n return oSUbicacion.IDUbicacion;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n // public GetKatiosM3FromSession() {\r\n // var Katios = sessionStorage.getItem(\"ConfigKatios\" + this.idkatios.toUpperCase());\r\n // if (Katios !== undefined && Katios != null) {\r\n // var jKatiosM3 = JSON.parse(Katios);\r\n // if (jKatiosM3 && jKatiosM3.KatiosM3 && jKatiosM3.KatiosM3.aplPaqs) {\r\n // this.aplPaquetes = jKatiosM3.KatiosM3.aplPaqs\r\n // }\r\n // }\r\n // }\r\n\r\n public async Destroy(idkatios) {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n\r\n\r\n\r\n public sync(remote: string) {\r\n this.aplSyncCouchAuto = this.getFlagSyncCouch();\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: this.aplSyncCouchAuto,\r\n retry: true\r\n }).on('complete', change => {\r\n\r\n console.log(\"********************************** COMPLETO CAMBIO CONFIGLP *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO CONFIGLP *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getInfo() {\r\n return this.database.info();\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public deleteLp(id) {\r\n this.database.get(id).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.map(row => {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n\r\n}","import { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3RegService } from \"./m3-reg-service\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3PrdLista } from \"../Maestro/M3PrdLista.type\";\r\nimport { M3PrdGeneral } from \"../Maestro/M3PrdGeneral.type\";\r\nimport { CouchConfigLPService } from \"../Offline/couch-configlp.service\";\r\nimport { MathTF } from \"../Miscelanea/MathTF.class\";\r\nimport { M3PrdAdicionales } from \"../Maestro/M3PrdAdicionales.type\";\r\n\r\nexport class ServiceLoadListaPrecio {\r\n private oMathTF = new MathTF();\r\n private gsidkatios: string;\r\n private aplPreciosDinamicos: boolean = false;\r\n\r\n constructor(idkatios) {\r\n this.gsidkatios = idkatios;\r\n this.GetKatiosM3FromSession();\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetKatiosM3FromSession() {\r\n let Katios = localStorage.getItem(\"ConfigKatios\" + this.gsidkatios.toUpperCase());\r\n if (Katios !== undefined && Katios != null) {\r\n var jKatiosM3 = JSON.parse(Katios);\r\n if (jKatiosM3 && jKatiosM3.Katios && jKatiosM3.Katios.KatiosM3) {\r\n let apl = jKatiosM3.Katios.KatiosM3.find(x => x.Llave.toUpperCase() == \"APLLPDINAMICOS\");\r\n if (apl && apl.Valor == \"1\") {\r\n this.aplPreciosDinamicos = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ///Asignar lista de precios, segun lista de precios asociado a usuario por cada ujno de los productos hijos\r\n public async AsignarListaPrecioM3Pack(ProductoMaestro: TypeM3PrdGrp, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n\r\n for (const oM3PrdGrpAsociado of ProductoMaestro.M3PrdGrpAsociado) {\r\n await this.AsignarListaPrecio(oM3PrdGrpAsociado.M3GRP, oDataUser, oPostServiceM3)\r\n }\r\n\r\n for (const prdGeneral of ProductoMaestro.LoM3PrdGeneral) {\r\n for (const m3Pack of prdGeneral.M3PACK) {\r\n await this.AsignarListaPrecio(m3Pack.M3GRP, oDataUser, oPostServiceM3)\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n ///Asignar lista de precios, segun lista de precios asociado a usuario.\r\n public async AsignarListaPrecio(ProductoMaestro: TypeM3PrdGrp, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n this.GetKatiosM3FromSession();\r\n if (oDataUser != null && oDataUser.UsuarioSistema && oDataUser.UsuarioSistema.IDLPrecio !== undefined && oDataUser.UsuarioSistema.IDLPrecio != -1) {\r\n console.debug(ProductoMaestro);//BORRAR\r\n for (var i = 0; i < ProductoMaestro.LoM3PrdGeneral.length; i++) {\r\n var prdGrl = ProductoMaestro.LoM3PrdGeneral[i];\r\n let splitPrecio = oDataUser.UsuarioSistema.IDLPrecio.split(\"-\");\r\n var oListaFinded = prdGrl.LoM3ListaPrecio.find(lPre => lPre.IDLISTA == splitPrecio[0]);\r\n if (splitPrecio && splitPrecio.length > 1) {\r\n if (!this.aplPreciosDinamicos) {\r\n switch (splitPrecio[1]) {\r\n case \"LB\":\r\n oListaFinded.PRECIO = oListaFinded.LB;\r\n break;\r\n case \"LC\":\r\n oListaFinded.PRECIO = oListaFinded.LC;\r\n break;\r\n case \"LD\":\r\n oListaFinded.PRECIO = oListaFinded.LD;\r\n break;\r\n default:\r\n }\r\n }\r\n else {\r\n try {\r\n let oCouchConfigLPService = new CouchConfigLPService();\r\n let listaCouch = await oCouchConfigLPService.get(splitPrecio[0])\r\n let jConfigLP = JSON.parse(listaCouch.JConfiguracion);\r\n if (jConfigLP && jConfigLP.Factores && jConfigLP.Factores.length > 0) {\r\n let factor = parseFloat(jConfigLP.Factores.find(x => x.Nombre == splitPrecio[1]).Factor);\r\n oListaFinded.PRECIO = this.oMathTF.round(oListaFinded.PRECIO * factor, 2);\r\n oListaFinded.M3Presentaciones.forEach(presentacion => {\r\n presentacion.VALOR = this.oMathTF.round(presentacion.VALOR * factor, 2)\r\n });\r\n }\r\n }\r\n catch (Ex) {\r\n console.log(\"error en asignarlistaprecio: \" + Ex.message + \" - \" + splitPrecio[0])\r\n }\r\n }\r\n }\r\n\r\n if (oListaFinded !== undefined) {\r\n prdGrl.LoM3PrdLista = oListaFinded;\r\n } else {\r\n await this.ValidarDataFromInventario(prdGrl, oDataUser, oPostServiceM3);\r\n }\r\n }\r\n let oM3PrdAdicionales = new M3PrdAdicionales();\r\n oM3PrdAdicionales.ATRIBUTO = \"LISTAPRECIO\";\r\n oM3PrdAdicionales.VALOR = oDataUser.UsuarioSistema.IDLPrecio;\r\n ProductoMaestro.LoM3PrdAdicionales.push(oM3PrdAdicionales);\r\n }\r\n if (ProductoMaestro) {\r\n await this.AsignarListaPrecioM3Pack(ProductoMaestro, oDataUser, oPostServiceM3);\r\n }\r\n return \"\";\r\n }\r\n\r\n public async AsignarListaPrecioAGeneral(prdGrl: M3PrdGeneral, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n if (oDataUser != null && oDataUser.UsuarioSistema.IDLPrecio !== undefined && oDataUser.UsuarioSistema.IDLPrecio != -1) {\r\n var oListaFinded = prdGrl.LoM3ListaPrecio.find(lPre => lPre.IDLISTA == oDataUser.UsuarioSistema.IDLPrecio);\r\n if (oListaFinded !== undefined) {\r\n prdGrl.LoM3PrdLista = oListaFinded;\r\n } else {\r\n await this.ValidarDataFromInventario(prdGrl, oDataUser, oPostServiceM3);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n\r\n public async ValidarDataFromInventario(prdGrl: M3PrdGeneral, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n var sLista: string = oDataUser.UsuarioSistema.IDLPrecio;\r\n var oM3RegService: M3RegService = new M3RegService(null, null, null);\r\n //Validar si es un valor de inventario.\r\n if (sLista.split('_')[0] == \"INV\") {\r\n var jData: any = { \"ubicacion\": oDataUser.UsuarioSistema.UBICACION, \"sku\": prdGrl.SKU, \"lote\": prdGrl.LOTE, \"concepto\": sLista.split('_')[1] };\r\n var precio = await oM3RegService.GetConceptoM3SaldosItemUb(oPostServiceM3, this.gsidkatios, jData);\r\n if (precio && precio != 0) {\r\n var oM3PrdLista = new M3PrdLista();\r\n oM3PrdLista.IDLISTA = oDataUser.UsuarioSistema.IDLPrecio;\r\n oM3PrdLista.LOTE = prdGrl.LOTE;\r\n oM3PrdLista.PRECIO = precio;\r\n oM3PrdLista.SKU = prdGrl.SKU;\r\n prdGrl.LoM3PrdLista = oM3PrdLista;\r\n }\r\n }\r\n }\r\n\r\n\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n//import { sessionWE8 } from \"../../../Session/session.class\";\r\nimport { Filtros } from \"../Maestro/filtros\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\";\r\nimport { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { ServiceListaPrecio } from \"./m3-lista-precio.service\";\r\nimport { ServiceLoadListaPrecio } from \"./m3-load-l-precio.service\";\r\nimport * as _ from \"lodash\";\r\nimport { Optional } from \"@angular/core\";\r\nimport { ɵangular_packages_platform_browser_platform_browser_a } from \"@angular/platform-browser\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\n\r\nexport class ServiceM3Maestro {\r\n\r\n\r\n constructor() { }\r\n\r\n //Trae el m3procesos segpun el idprestamo\r\n public getM3ProcesosPorCredito(PostServiceM3: PostServiceM3, sIDKatios: string, idProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n var data;\r\n data = { 'idProceso': idProceso }\r\n PostServiceM3.getWithBodyM3('M3/getM3ProcesosPorCredito/' + sIDKatios, data).subscribe(resp => {\r\n\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End \r\n\r\n //Trae el m3procesos segpun el idprestamo\r\n public getM3ProcesoByIdPrestamo(PostServiceM3: PostServiceM3, sIDKatios: string, sIdPrestamo: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3/getM3ProcesoByIdPrestamo/' + sIDKatios + '/' + sIdPrestamo).subscribe(resp => {\r\n var oM3Procesos: any;\r\n oM3Procesos = resp;\r\n\r\n oFuncionOK(oM3Procesos);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End \r\n\r\n //rae el TIPO, SKP1, NOMBRE de la tabla prdgrp\r\n public m3GetPRDGRP(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getM3PRDGRP/' + sIDKatios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var oData = JSON.parse(resp);\r\n\r\n oFuncionOK(oData);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End \r\n\r\n\r\n //Obtener la cantidad disponible de producto, teniendo en cuenta el SKP1 y la ubicación.\r\n //La data debe tener una estructura: {\"UBICACION\":\"1111\", \"SKP1\":\"9999a\"}\r\n public M3GetCantidadBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, oDataSend: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetCantidadBySKP1/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var oData = JSON.parse(resp.toString());\r\n var goDataDisp: Array<any>;\r\n if (oData.RESPUESTA.DISPONIBILIDAD.length === undefined) {\r\n //No es array\r\n goDataDisp = new Array<any>(oData.RESPUESTA.DISPONIBILIDAD);\r\n } else {\r\n goDataDisp = oData.RESPUESTA.DISPONIBILIDAD;\r\n }\r\n console.log(goDataDisp);\r\n oFuncionOK(goDataDisp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End \r\n\r\n\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n GetListaPrdXFiltros(PostServiceM3: PostServiceM3, olFiltros: Array<Filtros>, sIDLista: string, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() idUbicacion = \"-1\", @Optional() aplUltimoFiltro = true, @Optional() topLimit = \"0\", @Optional() filtrarInvUbic = \"0\") {\r\n var oDataSend;\r\n oDataSend = { \"Filtros\": JSON.stringify(olFiltros), \"IdLista\": sIDLista, \"IdUbicacion\": idUbicacion, \"aplUltimoFiltro\": aplUltimoFiltro, \"topLimit\": topLimit, \"filtrarInvUbic\": filtrarInvUbic };\r\n if (olFiltros != null) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/Get_ListPRDFiltros/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp, olFiltros);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n } else {\r\n oFuncionErr(\"No hay filtros para la busqueda\");\r\n }\r\n }\r\n\r\n\r\n //Obtener lista de productos, segun la categoria.\r\n GetListaPrdXCategoria(PostServiceM3: PostServiceM3, sCategoria: string, oDataClasificacion, IdLista: string, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() idUbicacion = \"-1\", @Optional() filtrarInvUbic: string = \"0\") {\r\n var olFiltros: Array<Filtros>;\r\n var oDataSend;\r\n olFiltros = this.FindFilterInClasificacion(sCategoria, sIDKatios, oDataClasificacion);\r\n\r\n oDataSend = { \"Filtros\": JSON.stringify(olFiltros), \"IdLista\": IdLista, \"IdUbicacion\": idUbicacion, \"filtrarInvUbic\": filtrarInvUbic };\r\n if (olFiltros != null) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/Get_ListPRDFiltros/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp, olFiltros);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err.error.Message);\r\n oFuncionErr(err.error.Message);\r\n });\r\n } else {\r\n oFuncionErr(\"No hay filtros para la busqueda\");\r\n }\r\n\r\n }//End GetListaPrdXCategoria\r\n\r\n\r\n\r\n\r\n\r\n //Obtener lista de productos, segun la categoria.\r\n GetListaPrdXCategoriaWithOutFilters(PostServiceM3: PostServiceM3, sCategoria: string, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/M3GetListaProdByClasificacion/' + sIDKatios + '/' + sCategoria).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp, null);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End GetListaPrdXCategoria\r\n\r\n\r\n\r\n //Obtener lista de productos, segun el nombre o descripción.\r\n GetListaPrdXNombre(PostServiceM3: PostServiceM3, sNombre: string, idUbicacion: string, sIDKatios: string, sIDLista: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() filtrarInvUbic: string = \"0\") {\r\n\r\n var oData = { \"IdLista\": sIDLista, \"idUbicacion\": idUbicacion, \"filtrarInvUbic\": filtrarInvUbic };\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetListaProdByNombre/' + sIDKatios + '/' + sNombre, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err);\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n cargarListPrdByGeneric(PostServiceM3: PostServiceM3, sNombre: string, idUbicacion: string, sIDKatios: string, sIDLista: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() filtrarInvUbic: string = \"0\") {\r\n\r\n var oData = { \"IdLista\": sIDLista, \"idUbicacion\": idUbicacion, \"filtrarInvUbic\": filtrarInvUbic };\r\n PostServiceM3.getWithBodyM3('M3Maestro/cargarListPrdByGeneric/' + sIDKatios + '/' + sNombre, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err.error);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error);\r\n });\r\n }\r\n\r\n //cargar informacion de clasificacion\r\n cargarInfoClasificacion(PostServiceM3: PostServiceM3, sIDKatios: string, jsonResp,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n //var osessionWE8 = new sessionWE8();\r\n\r\n //jsonResp = osessionWE8.GetDataCLASIFICACION(sIDKatios);\r\n if (jsonResp === undefined || jsonResp == null) {\r\n PostServiceM3.getM3(\"M3Maestro/M3GetClasificacion/\" + sIDKatios).subscribe(resp => {\r\n jsonResp = JSON.parse(resp);\r\n this.ValidarArrayClasificacion(jsonResp);\r\n //osessionWE8.SetDataCLASIFICACION(jsonResp, sIDKatios);\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(jsonResp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(error);\r\n });\r\n } else {\r\n oFuncionOK(jsonResp);\r\n }\r\n }//End cargarInfoClasificacion\r\n\r\n //Validar que la clasificacion, esten como array.\r\n ValidarArrayClasificacion(oDataClas) {\r\n this.RecursiveConvertArray(oDataClas.RESPUESTA.CLASIFICACIONES);\r\n }\r\n\r\n\r\n //Aplicar filtros a la categoria entrante.\r\n FindFilterInClasificacion(sClasFind: string, sIDKatios: string, oDataClasificacion) {\r\n var sClasificacion: string = \"\";\r\n var oDataFiltrada;\r\n //var osessionWE8 = new sessionWE8();\r\n var olFiltros = new Array<Filtros>();\r\n var oFiltros: Filtros;\r\n var filtroAtributo: string;\r\n\r\n //console.log(sClasFind);\r\n //oDataClasificacion = osessionWE8.GetDataCLASIFICACION(sIDKatios);\r\n\r\n oDataFiltrada = oDataClasificacion.RESPUESTA.CLASIFICACIONES;\r\n\r\n if (sClasFind.length % 3 == 0) {\r\n while (sClasFind != \"\") {\r\n\r\n sClasificacion = sClasificacion + sClasFind.substring(0, 3);\r\n sClasFind = sClasFind.substring(3);\r\n oDataFiltrada = oDataFiltrada.CATEGORIA.find(filtro => filtro.CLASIFICACION.toString() == sClasificacion.toString());\r\n\r\n filtroAtributo = oDataFiltrada.ATRIBUTO;\r\n if (!filtroAtributo.toUpperCase().includes(\"ROOT\")) {\r\n oFiltros = new Filtros(oDataFiltrada.ATRIBUTO, oDataFiltrada.Descripcion);\r\n olFiltros.push(oFiltros);\r\n }\r\n\r\n\r\n //oDataRespCla = this.RecursiveClasificacion(oDataClasificacion.RESPUESTA.CLASIFICACIONES.CATEGORIA, sClasFind);\r\n //console.log(oDataRespCla);\r\n }\r\n } else {\r\n return null;\r\n }\r\n return olFiltros;\r\n }\r\n\r\n //Recursividad, para validar que todos los nodos, sean tipo array\r\n RecursiveConvertArray(oDataClas) {\r\n if (oDataClas.CATEGORIA !== undefined) {\r\n if (oDataClas.CATEGORIA.length === undefined) {\r\n oDataClas.CATEGORIA = new Array(oDataClas.CATEGORIA);\r\n this.RecursiveConvertArray(oDataClas.CATEGORIA[0]);\r\n } else {\r\n oDataClas.CATEGORIA.forEach(clas => {\r\n this.RecursiveConvertArray(clas);\r\n });\r\n }\r\n }\r\n }\r\n\r\n //Adiciona un producto\r\n m3AddProducto(PostServiceM3: PostServiceM3, sIDKatios: string, tdocUActivo: string, ndocUActivo: string, oM3PrdGrp: TypeM3PrdGrp, oFuncionOK: Function, oFuncionErr: Function, disabledWeb: boolean = false) {\r\n var data;\r\n data = { 'sTdocUsuario': tdocUActivo, 'sNdocUsuario': ndocUActivo, 'oM3PrdGrp': oM3PrdGrp, 'disabledWeb': disabledWeb };\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/addProducto/\" + sIDKatios.trim(), data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n //Obtener producto por SKP1.\r\n M3GetProductoBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n PostServiceM3.getWithBodyM3(\"M3Maestro/M3GetProductoBySKP1/\" + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var producto: any = resp;\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n oServiceLoadListaPrecio.AsignarListaPrecio(producto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(producto);\r\n });\r\n\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n //Obtener producto random por SKP1.\r\n M3GetProductoRandomBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n PostServiceM3.getWithBodyM3(\"M3Maestro/M3GetProductoRandomBySKP1/\" + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n //Obtener producto por SKP1.\r\n M3GetCatAsociadasBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, skp1: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3(\"M3Maestro/M3GetCatAsociadasBySKP1/\" + sIDKatios + '/' + skp1).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n ///Get Imagenes enviando en la oData: {\"Path\":\"xxx\", \"SKU\":\"SKUxxx\"}\r\n public M3GetImagenesByPath(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/Get_M3MultimediaByPath/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n //obtener informacion de plantillas, desde servidor... \r\n Get_M3SKPlantillaBySKUID(PostServiceM3: PostServiceM3, sIDKatios: string, SKUID: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3(\"M3Maestro/Get_M3SKPlantillaBySKUID/\" + sIDKatios + \"/\" + SKUID).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n //Obtener información de productos, desde codigo de barras\r\n GetInfoByFilterCode(PostServiceM3: PostServiceM3, sIDKatios: string, sFilterCode: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n var oData = { \"FILTERCODE\": sFilterCode };\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetSKP1PrdsByFiltersCode/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End GetInfoByFilterCode \r\n\r\n //Obtiene el objeto M3Ubicaciones para la ubicacion y idkatios dados\r\n get_M3Ubicaciones(PostServiceM3: PostServiceM3, sIDKatios: string, sIdUbicacion: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_M3Ubicaciones/' + sIDKatios + '/' + sIdUbicacion).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err);\r\n });\r\n }//End get_M3Ubicaciones\r\n\r\n //Obtiene el objeto M3Ubicaciones para la ubicacion y idkatios dados\r\n get_M3UbicacionesCompleta(PostServiceM3: PostServiceM3, sIDKatios: string, sIdUbicacion: string, sIdHub: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3WithTimeOut('M3Maestro/get_M3UbicacionesCompleta/' + sIDKatios + '/' + sIdUbicacion + '/' + sIdHub, 10000).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err);\r\n });\r\n }//End get_M3UbicacionesCompleta\r\n\r\n\r\n //rae el producto de acuerdo al SKU\r\n public M3GetProductoBySKU(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n\r\n console.log(PostServiceM3);\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetProductoBySKU/' + sIDKatios, data).subscribe(resp => {\r\n var oProducto: any = resp;\r\n oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(oProducto);\r\n });\r\n\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n //rae el producto de acuerdo al SKU\r\n async M3GetProductoBySKUAsync(PostServiceM3: PostServiceM3, sIDKatios: string, sSKU: string,\r\n oDataUser: any, Ubicacion: string = \"-1\", sAplExc: string = \"1\") {\r\n var data;\r\n var resp;\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n data = { 'SKU': sSKU, \"UBICACION\": Ubicacion == \"-1\" ? oDataUser.UsuarioSistema.UBICACION : Ubicacion, 'AplExc': sAplExc };\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n\r\n resp = await PostServiceM3.getWithBodyM3('M3Maestro/M3GetProductoBySKU/' + sIDKatios, data).toPromise();\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(resp, oDataUser, PostServiceM3);\r\n return resp;\r\n }\r\n\r\n\r\n //Obtener producto especfico teniendo en cuenta codigo.\r\n async Get_M3ProductoEspecByCodeAsync(PostServiceM3: PostServiceM3, sIDKatios: string, data: any, oDataUser: any) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n var oProducto: any;\r\n\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n\r\n oProducto = await PostServiceM3.getWithBodyM3(\"M3Maestro/Get_M3ProductoEspecByCode/\" + sIDKatios, data).toPromise();\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3);\r\n return oProducto;\r\n }\r\n\r\n\r\n //Trae los registros que se encuentren en M3Procesos que se encuentren con estadogeneral proceso\r\n M3getRegistrosEnProceso(PostServiceM3: PostServiceM3, sIDKatios: string, idProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n var data;\r\n data = { 'idProceso': idProceso }\r\n PostServiceM3.getWithBodyM3('M3/get_RegistrosEnProceso/' + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err._bSody);\r\n });\r\n }\r\n\r\n //Obtiene el top 20 de productos que coincidad con el sNombre ingresado\r\n get_M3PrdGrpByNombre(PostServiceM3: PostServiceM3, sIDKatios: string, sNombre: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_M3PrdGrpByNombre/' + sIDKatios + '/' + sNombre).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var jResp = JSON.parse(resp).RESPUESTA.M3GRP;\r\n if (jResp.length === undefined) {\r\n resp = new Array(jResp);\r\n oFuncionOK(resp);\r\n }\r\n else {\r\n oFuncionOK(jResp);\r\n }\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }//End get_M3PrdGrpByNombre\r\n\r\n //Obtiene el top 20 de productos agrupados que coincidad con el sNombre ingresado\r\n public GetM3PrdAgrupadoByNombre(PostServiceM3: PostServiceM3, sIDKatios: string, sNombre: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_m3_prd_by_nombre_agrupado/' + sIDKatios + '/' + sNombre).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var jResp = JSON.parse(resp).RESPUESTA.M3GRP;\r\n if (jResp.length === undefined) {\r\n resp = new Array(jResp);\r\n oFuncionOK(resp);\r\n }\r\n else {\r\n oFuncionOK(jResp);\r\n }\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n //Obtiene el top 20 de productos agrupados que coincidad con el sNombre ingresado y que no esten exlcuidos (M3ExcPrdXUbic)\r\n public get_m3_prd_by_nombre_agrupado(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n //data = {nombre:'asdasd', idUbicacion:'1'}\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_m3_prd_by_nombre_agrupado/' + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var jResp = JSON.parse(String(resp)).RESPUESTA.M3GRP;\r\n if (jResp.length === undefined) {\r\n resp = new Array(jResp);\r\n oFuncionOK(resp);\r\n }\r\n else {\r\n oFuncionOK(jResp);\r\n }\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n ///Obtiene el path base donde se encuentra alojadas las imagenes en el servidor\r\n public get_PathServidorImagenes(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_PathServidorImagenes/' + sIDKatios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n console.log(resp)\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }//End get_PathServidorImagenes\r\n\r\n\r\n //Obtener producto especfico teniendo en cuenta codigo.\r\n Get_M3ProductoEspecByCode(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n PostServiceM3.getWithBodyM3(\"M3Maestro/Get_M3ProductoEspecByCode/\" + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oProducto: any = resp;\r\n oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(resp);\r\n });\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n //Ejecutar funcion de error\r\n oFuncionErr(error.error.Message);\r\n });\r\n }\r\n\r\n Get_M3ProductoEspecByCodeTimeOut(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any, timeoutTime: number) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n if (timeoutTime != 0) {\r\n if (oDataUser && oDataUser.UsuarioSistema && oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n PostServiceM3.getWithBodyM3TimeOut(\"M3Maestro/Get_M3ProductoEspecByCode/\" + sIDKatios, data, timeoutTime).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oProducto: any = resp;\r\n oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(resp);\r\n });\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n //Ejecutar funcion de error\r\n if (error.error) {\r\n oFuncionErr(error.error.Message);\r\n }\r\n else {\r\n oFuncionErr(\"404\");\r\n }\r\n });\r\n } else {\r\n oFuncionErr(\"404\");\r\n }\r\n }\r\n\r\n get_DocsFromCouchMaestro(oM3CouchMaestro: M3CouchMaestro, sIdKatios: string, sDoc: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n console.log(\"get_DocsFromCouchMaestro\")\r\n var sIdKeyDoc = oM3CouchMaestro.GetKeyDocumentoDB(sIdKatios, sDoc);\r\n console.log(sIdKeyDoc)\r\n oM3CouchMaestro.GetDataPouchBD(sIdKeyDoc).then(result => {\r\n oFuncionOK(result);\r\n }, error => {\r\n oFuncionErr(error);\r\n });\r\n }\r\n\r\n GetProductoEspecByCodeFromCouch(jProductsCouch: any, sCode: string,\r\n oFuncionOK: Function, oFuncionError: Function) {\r\n var jProductsFil = jProductsCouch.find(x => x.LoM3PrdGeneral != undefined && x.LoM3PrdGeneral.find(w => w.M3Cods != undefined && w.M3Cods.find(y => String(y.Valor) == String(sCode)) != undefined) != undefined);\r\n var product_clone = _.cloneDeep(jProductsFil);\r\n\r\n if (jProductsFil != undefined) {\r\n var jPrdEsp = jProductsFil.LoM3PrdGeneral.find(w => w.M3Cods.find(y => String(y.Valor) == String(sCode)) != undefined)\r\n product_clone.LoM3PrdGeneral = [];\r\n product_clone.LoM3PrdGeneral.push(jPrdEsp);\r\n console.log(\"product_clone\")\r\n console.log(product_clone)\r\n oFuncionOK(product_clone)\r\n }\r\n else {\r\n oFuncionError(\"No se encontró nungún registro.\");\r\n }\r\n\r\n }\r\n\r\n ///Obtiene los Tipos de procesos desde el servidor\r\n public get_TiposProceso(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function, actividad: string = 'Ventas') {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_TiposProceso/' + sIDKatios + '/' + actividad).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp).RESPUESTA);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_TiposProceso\r\n\r\n ///Obtiene la Info de un proceso a partir de un idProceso y un IdM3\r\n public get_InfoPersona_Proceso(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_InfoPersona_Proceso/' + sIDKatios, jData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(String(resp)).RESPUESTA);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_InfoProceso\r\n\r\n /**\r\n * Obtiene la Info de un proceso a partir de un idProceso y un IdM3 de manera sincrónica\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param jData \r\n */\r\n public async get_InfoPersona_Proceso_async(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any) {\r\n var json;\r\n var resp;\r\n\r\n try {\r\n resp = await PostServiceM3.getWithBodyM3('M3Maestro/get_InfoPersona_Proceso/' + sIDKatios, jData).toPromise();\r\n json = JSON.parse(resp)\r\n return json;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n //Obtener un producto agrupado, teniendo una lista de producto agrupados y un sku\r\n public GetM3PrdGrpFromList(ListPrd: Array<TypeM3PrdGrp>, sku): TypeM3PrdGrp {\r\n try {\r\n var oTypeM3PrdGrpResult: TypeM3PrdGrp;\r\n oTypeM3PrdGrpResult = ListPrd.find(prd => {\r\n var bResp: boolean = false;\r\n prd.LoM3PrdGeneral.forEach(prd => {\r\n\r\n if (prd.SKU === sku) {\r\n bResp = true;\r\n }\r\n });\r\n return bResp;\r\n });\r\n oTypeM3PrdGrpResult.LoM3PrdGeneral = oTypeM3PrdGrpResult.LoM3PrdGeneral.filter(gen => gen.SKU == sku);\r\n return oTypeM3PrdGrpResult;\r\n } catch (ex) {\r\n console.log(ex);\r\n return null;\r\n }\r\n }\r\n\r\n\r\n ///Obtener de una lista de ubicaciones, una ubicacion en particular, teniendo en cuenta el IdUbicacion\r\n public GetUbicacionFromList(ListUbic: Array<M3Ubicacion>, sIdUbic) {\r\n var oM3Ubicacion: M3Ubicacion;\r\n oM3Ubicacion = ListUbic.find(ubic => ubic.IDUbicacion == sIdUbic);\r\n return oM3Ubicacion;\r\n }\r\n\r\n ///Obtiene el Xml de configuracion de la empresa a partir del idubicacion\r\n public get_XmlConfig_x_IdUbicacion(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_XmlConfig_x_IdUbicacion/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_XmlConfig_x_IdUbicacion\r\n\r\n ///Obtiene los atributos en m3clasifica a partir de un idkatios\r\n get_clasification_attributes(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_clasification_attributes/' + id_katios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.ATTRIBUTES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n\r\n\r\n ///Obtiene las categorias en m3clasifica a partir de un idkatios y un atributo\r\n get_clasification_categories(PostServiceM3: PostServiceM3, id_katios: string, attribute: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_clasification_categories/' + id_katios + \"/\" + attribute).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.CATEGORIES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n getOpcionesAdicionales(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getOpcionesAdicionales/' + id_katios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.ATTRIBUTES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n getAtributosAdicionales(PostServiceM3: PostServiceM3, id_katios: string, attribute: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getAtributosAdicionales/' + id_katios + \"/\" + attribute).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.CATEGORIES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n\r\n ///Obtiene la informacion de tipos de envio.\r\n M3GetFormasEnvio(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/M3GetFormasEnvio/' + id_katios).subscribe(resp => {\r\n var jsResp;\r\n jsResp = JSON.parse(resp);\r\n oFuncionOK(jsResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n ///Obtinie todas las M3Ubicaciones asociadas a un id_katios\r\n public get_ubicaciones_complete(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_ubicaciones_complete/' + id_katios).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n ///Obtinie todas las M3Ubicaciones asociadas a un id_katios\r\n public get_ubicaciones_simple(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_ubicaciones_simple/' + id_katios).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n\r\n ///Obtinie todas las M3Ubicaciones asociadas a un id_katios\r\n public async M3GET_LISTAPRECIOS_ASync(PostServiceM3: PostServiceM3, id_katios: string) {\r\n var oRecListaPrec: any;\r\n\r\n oRecListaPrec = await PostServiceM3.getM3('M3Maestro/M3GET_LISTAPRECIOS/' + id_katios).toPromise();\r\n return oRecListaPrec[0];\r\n }\r\n\r\n public async GetEncabezadoListasPrecio(PostServiceM3: PostServiceM3, sIDKatios: string) {\r\n var resp;\r\n\r\n try {\r\n resp = await PostServiceM3.getM3('M3/GetConfigLP/' + sIDKatios).toPromise();\r\n return resp;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n public registrarColonia(PostServiceM3: PostServiceM3, IdKatios: string, sColonia: string, sCodPostal, sTelefono: string, ndoc: string, sLinea1: string, sCodestado: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n var oDataSend;\r\n oDataSend = { \"sColonia\": sColonia, \"sCodPostal\": sCodPostal, \"sTelefono\": sTelefono, \"ndoc\": ndoc, \"sLinea1\": sLinea1, \"sCodestado\": sCodestado };\r\n PostServiceM3.postServiceHttpResFullM3('M3Maestro/registrarColonia/' + IdKatios, oDataSend).subscribe(posts => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK();\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n\r\n }\r\n\r\n ///Obtener promociones \r\n public async M3_GetPromocionesMaestroAsync(PostServiceM3: PostServiceM3, id_katios: string) {\r\n var oRecListaPrec: any;\r\n\r\n oRecListaPrec = await PostServiceM3.getM3('M3Maestro/M3_GetPromocionesMaestro/' + id_katios).toPromise();\r\n return oRecListaPrec;\r\n }\r\n\r\n\r\n ///Obtener Dinamicas por actividad \r\n public async M3GetDinByActividad(PostServiceM3: PostServiceM3, id_katios: string, oData: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetDinByActividad/' + id_katios, oData).subscribe(resp => {\r\n //var jsResp:any = resp;\r\n //jsResp = JSON.parse(jsResp);\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n\r\n\r\n // var oRecListaPrec: any;\r\n\r\n // oRecListaPrec = await PostServiceM3.getWithBodyM3('M3Maestro/M3GetDinByActividad/' + id_katios, oData).toPromise();\r\n // return oRecListaPrec;\r\n }\r\n\r\n /**\r\n * Retorna la info basica de las ubicaciones con Hub tipo WEB activos en el momento\r\n * @param PostServiceM3 \r\n * @param idKatios \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n getUbicacionesWeb(PostServiceM3: PostServiceM3, idKatios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getUbicacionesWeb/' + idKatios).subscribe(resp => {\r\n oFuncionOK(JSON.parse(resp));\r\n },\r\n err => {\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna la info basica de las ubicaciones con Hub tipo WEB activos en el momento que abarquen un codpostal en concreto\r\n * @param PostServiceM3 \r\n * @param idKatios \r\n * @param data \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n getUbicacionesByCodPostal(PostServiceM3: PostServiceM3, idKatios: string, data: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n //data = { \"codPostal\": string };\r\n PostServiceM3.getWithBodyM3('M3Maestro/getUbicacionesByCodPostal/' + idKatios, data).subscribe(resp => {\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna el path de la factura electrónica a partir de un IdDiario asociado al proceso \r\n * @param PostServiceM3 \r\n * @param idKatios \r\n * @param data \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public getPathFEFromDiario(PostServiceM3: PostServiceM3, idKatios: string, tipoGeneracion: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/getPathFEFromDiario/' + idKatios + '/' + tipoGeneracion, data).subscribe(resp => {\r\n var respuesta: any = JSON.parse(resp.toString());\r\n oFuncionOK(respuesta);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n public getDiarioAdicionalesxDiario(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyGenerales('Diario/getDiarioAdicionalesxDiario/' + idKatios, data).subscribe(resp => {\r\n var respuesta: any = JSON.parse(resp.toString());\r\n oFuncionOK(respuesta);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n async IU_Hub(PostServiceM3: PostServiceM3, id_katios: string, oHub: any, uTActivo: string, uNActivo: string) {\r\n var Info;\r\n var data = { 'idKatios': id_katios.trim(), 'oHub': oHub, 'uTActivo': uTActivo, 'uNActivo': uNActivo };\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3Maestro/IU_Hub', data).toPromise()\r\n return Info\r\n }\r\n\r\n\r\n\r\n /**\r\n * Obtener el ctivo desde servidor\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param idproceso \r\n * @param ubicacion \r\n * @param hub \r\n */\r\n async GetCtivoBYProceso(PostServiceM3: PostServiceM3, id_katios: string, idproceso: string, ubicacion: string, hub: string) {\r\n var Info;\r\n var data = { 'idproceso': idproceso, 'ubicacion': ubicacion, 'hub': hub };\r\n Info = await PostServiceM3.getWithBodyM3('M3/GetCtivoBYProceso/' + id_katios.trim(), data).toPromise()\r\n return Info\r\n }\r\n\r\n\r\n public async ValidarCtivosVSLocal(PostServiceM3: PostServiceM3, id_katios: string,\r\n infProceso: string, ubicacion: string, hub: string, funcionResp: Function) {\r\n PostServiceM3.postServiceHttpResFullM3('M3/ValidarCtivosVSLocal/' + id_katios + '/' + ubicacion + '/' + hub, infProceso).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n funcionResp(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n funcionResp({ \"error\": error });\r\n });\r\n }\r\n\r\n async GenerarAutorizacionCuentas(PostServiceM3: PostServiceM3, data) {\r\n var Info;\r\n\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3/GenerarAutorizacionCuentas', data).toPromise()\r\n return Info\r\n }\r\n\r\n /**\r\n * Valida si el codigo ingresado corresponde al documento y si el codigo esta en estado activo\r\n * @param PostServiceM3 \r\n * @param data \r\n */\r\n async validacionAutorizacionM3Cuentas(PostServiceM3: PostServiceM3, data) {\r\n var Info;\r\n\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3/validacionAutorizacionM3Cuentas', data).toPromise()\r\n return Info\r\n }\r\n\r\n\r\n async VerificarPagoTarjetaBBVA(PostServiceM3: PostServiceM3, sIDKatios: string, sIdKey: string) {\r\n var jData = { \"Idkatios\": sIDKatios, \"idKey\": sIdKey }\r\n var Info;\r\n Info = await PostServiceM3.getWithBodyM3('M3/VerificarPagoTarjetaBBVA', jData).toPromise()\r\n return Info;\r\n }//End get_InfoProceso\r\n\r\n /**\r\n * FS 20190813: Retorna los codigos de los SKP(skpToFind) y su respectivo significado para un producto dado\r\n * @param idKatios \r\n * @param PostServiceM3 \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public getDescripcionSKPs(idKatios: string, PostServiceM3: PostServiceM3,\r\n data: any, funcionOK: Function, funcionError: Function) {\r\n\r\n //let data = {\"SKP1\":\"SKP1\", SKPToFind: 2 }};\r\n\r\n PostServiceM3.getWithBodyM3(\"M3Consultas/getDescripcionSKPs/\" + idKatios, data).subscribe(resp => {\r\n funcionOK(data.SKP1, JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n async getTotalesCierreCaja(postService: PostServiceM3, sIdKatios: string, subicacion: string, shub: string, susuario: string, sFechaI: string, sFechaF: string) {\r\n var secopciones: any;\r\n var data = { 'idKatios': sIdKatios, 'ubicacion': subicacion, 'hub': shub, 'usuario': susuario, 'FechaI': sFechaI, 'FechaF': sFechaF }\r\n secopciones = await postService.getWithBodyM3('M3/getTotalesCierreCaja', data).toPromise()\r\n secopciones = JSON.parse(secopciones)\r\n return secopciones\r\n }\r\n\r\n async getCierresxUbicacion(postService: PostServiceM3, sIdKatios: string, subicacion: string, sIdProceso: string, sFecha: string) {\r\n var secopciones: any;\r\n var data = { 'idKatios': sIdKatios, 'ubicacion': subicacion, 'idProceso': sIdProceso, 'Fecha': sFecha }\r\n secopciones = await postService.getWithBodyM3('M3/getCierresxUbicacion', data).toPromise()\r\n secopciones = JSON.parse(secopciones)\r\n return secopciones\r\n }\r\n\r\n async getCierresxEmpresa(postService: PostServiceM3, sIdKatios: string, sIdProceso: string, sFecha: string) {\r\n var secopciones: any;\r\n var data = { 'idKatios': sIdKatios, 'idProceso': sIdProceso, 'Fecha': sFecha }\r\n secopciones = await postService.getWithBodyM3('M3/getCierresxEmpresa', data).toPromise()\r\n secopciones = JSON.parse(secopciones)\r\n return secopciones\r\n }\r\n\r\n //Trae el m3procesos segpun el idprestamo\r\n public simularpagoEnlinea(PostServiceM3: PostServiceM3, sIDKatios: string, sIdM3: string, sIdProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3/ValidacionPagoIntegracionTest/' + sIDKatios + '/' + sIdM3 + '/' + sIdProceso).subscribe(resp => {\r\n oFuncionOK();\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n public validarPrdsMismoProveedor(PostServiceM3: PostServiceM3, id_katios: string, nombreAdicionalProveedor: string, oM3Procesos: M3Procesos, oFuncionResp: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/validarPrdsMismoProveedor/\" + id_katios + \"/\" + nombreAdicionalProveedor, oM3Procesos).subscribe(resp => {\r\n oFuncionResp(JSON.parse(JSON.parse(resp['_body']).toString()))\r\n },\r\n err => {\r\n //Ejecutar funcion de error \r\n console.error(\"Error validarPrdsMismoProveedor\")\r\n console.error(err)\r\n oFuncionResp(JSON.parse(JSON.parse(err['_body']).Message));\r\n });\r\n }\r\n\r\n public validarRestriccionInvNegativo(PostServiceM3: PostServiceM3, id_katios: string, oM3Procesos: M3Procesos, oFuncionResp: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/validarRestriccionInvNegativo/\" + id_katios, oM3Procesos).subscribe(resp => {\r\n oFuncionResp(JSON.parse(JSON.parse(resp['_body']).toString()))\r\n },\r\n err => {\r\n //Ejecutar funcion de error \r\n console.error(\"Error validarRestriccionInvNegativo\")\r\n console.error(err)\r\n oFuncionResp(JSON.parse(JSON.parse(err['_body']).Message));\r\n });\r\n }\r\n\r\n public async getInfoPrdGastosEnvio(PostServiceM3: PostServiceM3, id_katios: string, oM3Procesos: M3Procesos) {\r\n\r\n let resp = await PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/getInfoPrdGastosEnvio/\" + id_katios, oM3Procesos).toPromise();\r\n return JSON.parse(JSON.parse(resp['_body']).toString()).RESPUESTA\r\n }\r\n\r\n /**\r\n * Genera una saldoxcuenta aleatorio por el valor dado\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data = {\"proceso\",proceso,\"valor\":valor,\"nombreDoc\": nombreDoc}\r\n */\r\n public async m3_generar_M3SXC_aleatorio(PostServiceM3: PostServiceM3, idkatios: string, data: any) {\r\n\r\n try {\r\n let resp = await PostServiceM3.postServiceHttpResFullM3(\"M3/m3_generar_M3SXC_aleatorio/\" + idkatios, data).toPromise();\r\n return JSON.parse(JSON.parse(resp['_body']).toString()).RESPUESTA;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Actualiza un concepto del M3_saldosItemUb\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public M3_actualizarConceptoSIU(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/M3_actualizarConceptoSIU/\" + idkatios, data).subscribe(resp => {\r\n funcionOK(resp);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n}\r\n","import { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { M3PEncItems } from \"../Registro/m3-penc-items\";\r\nimport { M3PrdGeneral } from \"../Maestro/M3PrdGeneral.type\";\r\nimport * as moment_ from 'moment';\r\nimport { M3PDetalleItems, M3PItemsWEB, M3PDetalleCupon } from \"../Registro/m3-pdetalle-items\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3Data } from \"../Data/m3-data\";\r\nimport { DEFAULT_VALUE_ACCESSOR } from \"@angular/forms/src/directives/default_value_accessor\";\r\nimport { xmlToJsonTF } from \"../../Convert/xmlToJSon.class\";\r\nimport { M3PImpuestos } from \"../Registro/m3-p-impuestos\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { M3ENCPROMO } from \"../Promociones/Models/M3ENCPROMO.class\";\r\nimport { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { promocionesService } from \"../Promociones/promociones.service\";\r\nimport { PromocionProcesada, PromocionesAsociadas, PromocionCombinada } from \"../Promociones/Models/M3PromoProcesada.class\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { M3PDinamicas } from \"../Registro/m3-pdinamicas\";\r\nimport { ServiceListaPrecio } from \"./m3-lista-precio.service\";\r\nimport { ServiceLoadListaPrecio } from \"./m3-load-l-precio.service\";\r\nimport { a } from \"@angular/core/src/render3\";\r\nimport { M3Presentaciones } from \"../Maestro/m3-presentaciones\";\r\nimport { stringify } from \"@angular/compiler/src/util\";\r\nimport { M3PrdPackDet } from \"../Maestro/M3PrdPackDet\";\r\nimport { M3PrdAdicionales } from \"../Maestro/M3PrdAdicionales.type\";\r\nimport { M3OtClasificaciones } from \"../Registro/m3-ot-clasificaciones\";\r\nimport { M3PrdLista } from \"../Maestro/M3PrdLista.type\";\r\nimport { MathTF } from \"../Miscelanea/MathTF.class\";\r\nimport { ECANCELED } from \"constants\";\r\n\r\nconst moment = moment_;\r\nvar bigDecimal = require('js-big-decimal');\r\n\r\nexport class M3RegService {\r\n public oMathTF: MathTF = new MathTF();\r\n private oM3CouchMaestro: M3CouchMaestro;\r\n public oListaObsequios: Array<any> = null;\r\n public obsequiosExc: boolean = false;\r\n public obsequioOPromo: number = -1;\r\n public obsequiosCantidad: number = 0;\r\n public lIdActivaPromo = [];\r\n private GoPostServiceM3: PostServiceM3;\r\n private gsIdkatios;\r\n\r\n constructor(ioM3CouchMaestro: M3CouchMaestro, IsPostServiceM3: PostServiceM3, sIdkatios: string) {\r\n this.oM3CouchMaestro = ioM3CouchMaestro;\r\n this.GoPostServiceM3 = IsPostServiceM3;\r\n this.gsIdkatios = sIdkatios;\r\n }\r\n\r\n /**\r\n * Validar numero de items agregados. si es mayor a 1.000 prende parametro \r\n */\r\n public ValidarNumeroItems(olM3Procesos: M3Procesos) {\r\n if (olM3Procesos.M3ENC.length > 1000) {\r\n olM3Procesos.AplDesdeServer = true;\r\n olM3Procesos.M3ENC = new Array<M3PEncItems>();\r\n }\r\n }\r\n\r\n public ProcesamientoService(sIDKatios: string, PostServiceM3: PostServiceM3, oM3Procesos: M3Procesos,\r\n oDataUser: any, funcionOK: Function, funcionError: Function, aplRetomarInfo: boolean = true) {\r\n this.ValidarNumeroItems(oM3Procesos);\r\n this.RetomarInformacion(oDataUser, oM3Procesos, aplRetomarInfo);\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/RegistroEventoM3/\" + sIDKatios + \"/\" + oDataUser.UsuarioSistema.NDOC + \"/\" + oDataUser.UsuarioSistema.TDOC, oM3Procesos).subscribe(resp => {\r\n var oJson = JSON.parse(resp.json());\r\n oM3Procesos.IdM3 = oJson.RESPUESTA.IDM3;\r\n oM3Procesos.IDDiario = oJson.RESPUESTA.IDDIARIO;\r\n oM3Procesos.IDDiarioCierre = oJson.RESPUESTA.IDDIARIOCIERRE\r\n\r\n //Actualizacion de estados.\r\n oM3Procesos.SubEstadoAnt = oM3Procesos.SubEstadoDes;\r\n oM3Procesos.EstadoAnt = oM3Procesos.EstadoDes;\r\n\r\n funcionOK(oM3Procesos, oJson.RESPUESTA);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public async procesamiento_service_async(sIDKatios: string, PostServiceM3: PostServiceM3, oM3Procesos: M3Procesos,\r\n oDataUser: any, aplRetomarInfo: boolean = true) {\r\n try {\r\n this.RetomarInformacion(oDataUser, oM3Procesos, aplRetomarInfo);\r\n\r\n var resp = await PostServiceM3.postServiceHttpResFullM3(\"M3/RegistroEventoM3/\" + sIDKatios + \"/\" + oDataUser.UsuarioSistema.NDOC + \"/\" + oDataUser.UsuarioSistema.TDOC, oM3Procesos).toPromise();\r\n var oJson = JSON.parse(resp.json());\r\n oM3Procesos.IdM3 = oJson.RESPUESTA.IDM3;\r\n oM3Procesos.IDDiario = oJson.RESPUESTA.IDDIARIO;\r\n\r\n //Actualizacion de estados.\r\n oM3Procesos.SubEstadoAnt = oM3Procesos.SubEstadoDes;\r\n oM3Procesos.EstadoAnt = oM3Procesos.EstadoDes;\r\n\r\n return oM3Procesos;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n public async RegistroEventoM3OffLine(sIDKatios: string, PostServiceM3: PostServiceM3, oM3Procesos: Array<M3Procesos>, oDataUser: any) {\r\n try {\r\n await PostServiceM3.postServiceHttpResFullM3(\"M3/RegistroEventoM3OffLine/\" + sIDKatios + \"/\" + oDataUser.UsuarioSistema.NDOC + \"/\" + oDataUser.UsuarioSistema.TDOC, oM3Procesos).toPromise();\r\n\r\n return true;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n ///Retomar informacion para el proceso.\r\n public RetomarInformacion(oDataUser: any, oM3Procesos: M3Procesos, aplRetomarInfo: boolean) {\r\n if (oDataUser != null && oM3Procesos.IdM3 !== undefined && oM3Procesos.IdM3 != null) {\r\n if (aplRetomarInfo) {\r\n oM3Procesos.M3FTrabajo.IdHub = oDataUser.UsuarioSistema.IDHUB;\r\n if (oM3Procesos.M3FTrabajo.IdUbic == undefined || oM3Procesos.M3FTrabajo.IdUbic == 0) {\r\n oM3Procesos.M3FTrabajo.IdUbic = oDataUser.UsuarioSistema.UBICACION;\r\n }\r\n }\r\n else {\r\n oM3Procesos.M3FTrabajo.IdUbic = oM3Procesos.M3FTrabajo.IdUbicPre\r\n oM3Procesos.M3FTrabajo.IdHub = oM3Procesos.M3FTrabajo.IdHubPre;\r\n }\r\n }\r\n }\r\n\r\n //Procesamiento de datos en base de datos pouchDB.\r\n public ProcesamientoServicePouchDB(oM3Data: M3Data, oM3PItemsWEB: M3PItemsWEB,\r\n prodGRPSelected: TypeM3PrdGrp, funcionOK: Function, funcionError: Function, oDataUser: any, sIDKatios: string,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, ioM3Procesos: M3Procesos, oM3PDinamicasByActividad: any = null) {\r\n\r\n var oM3Procesos: M3Procesos;\r\n var sKeyCarrito: string;\r\n var productUnitSelected: M3PrdGeneral;\r\n productUnitSelected = prodGRPSelected.LoM3PrdGeneral[0];\r\n //Obtener key de carrito de compras\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n //Cargar detalle de items\r\n //Guardar en BD PouchDB\r\n oM3Data.GetDataPouchBD(sKeyCarrito).then(async result => {\r\n oM3Procesos = result;\r\n let cantidad_actual = this.validarExistaProducto(oM3Procesos.M3ENC, productUnitSelected, oM3PItemsWEB);\r\n if (cantidad_actual != 0) {\r\n //let cantidad_actual = this.getCantidad(oM3Procesos, productUnitSelected);\r\n oM3PItemsWEB.dCantidad = (+cantidad_actual) + +oM3PItemsWEB.dCantidad;\r\n\r\n //let M3Enc = this.get_M3ENC_by_idprd_lote(oM3Procesos, productUnitSelected.SKU, productUnitSelected.LOTE);\r\n\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(prod => !(prod.IdProducto == productUnitSelected.SKU && prod.Lote == productUnitSelected.LOTE && !(prod.IdEncPadre > 0)));\r\n this.RecalcularPrecios(oM3Procesos);\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad);\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n } else {\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad);\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n }\r\n\r\n //console.log(oDataCarritoCompras);\r\n }, async error => {\r\n if (error.status == \"404\") {//No existe el carrito \r\n oM3Procesos = this.LoadM3ProcesoEmptyPDB(prodGRPSelected, oM3PItemsWEB, oDataUser, oM3Ubicacion, oM3ENCPROMO, ioM3Procesos, oM3PDinamicasByActividad);\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n } else {\r\n console.log(\"Error no controlado\");\r\n console.log(error);\r\n funcionError();\r\n }\r\n });\r\n }\r\n\r\n\r\n //Agregar a carrito producto.\r\n public addtocart(oM3PItemsWEB: M3PItemsWEB,\r\n prodGRPSelected: TypeM3PrdGrp, funcionOK: Function, funcionError: Function, oDataUser: any, sIDKatios: string,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, ioM3Procesos: M3Procesos, oM3PDinamicasByActividad: any = null, valorDescuento = 0) {\r\n\r\n var oM3Procesos: M3Procesos = ioM3Procesos;\r\n var sKeyCarrito: string;\r\n var productUnitSelected: M3PrdGeneral;\r\n productUnitSelected = prodGRPSelected.LoM3PrdGeneral[0];\r\n //JAGM 20190722 se agrega para cuando es el primer producto que se agregará\r\n if (oM3Procesos.M3ENC.length == 0) {\r\n oM3Procesos = this.LoadM3ProcesoEmptyPDB(prodGRPSelected, oM3PItemsWEB, oDataUser, oM3Ubicacion, oM3ENCPROMO, ioM3Procesos, oM3PDinamicasByActividad);\r\n if (funcionOK)\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n else\r\n return oM3Procesos;\r\n\r\n } else {\r\n let cantidad_actual = this.validarExistaProducto(oM3Procesos.M3ENC, productUnitSelected, oM3PItemsWEB);\r\n if (cantidad_actual != 0) {\r\n //let cantidad_actual = this.getCantidad(oM3Procesos, productUnitSelected);\r\n oM3PItemsWEB.dCantidad = (+cantidad_actual) + oM3PItemsWEB.dCantidad;\r\n\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(prod => !(prod.IdProducto == productUnitSelected.SKU && prod.Lote == productUnitSelected.LOTE && !(prod.IdEncPadre > 0)));\r\n this.RecalcularPrecios(oM3Procesos);\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad, valorDescuento);\r\n if (funcionOK)\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n else\r\n return oM3Procesos;\r\n } else {\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad, valorDescuento);\r\n if (funcionOK)\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n else\r\n return oM3Procesos;\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //Valida que exista producto en los encabezados. True: Si existe, False de otro modo\r\n // Se cambia funcionalidad de return.\r\n public validarExistaProducto(oM3ListaEnc: Array<M3PEncItems>, oM3PrdGrl: M3PrdGeneral, oM3PItemsWEB: M3PItemsWEB): number {\r\n var oEnc: M3PEncItems = null;\r\n var cantidad: number = 0;\r\n oM3PItemsWEB.IDEncRepetido = -1;\r\n if (oM3ListaEnc !== undefined && oM3PrdGrl !== undefined && oM3ListaEnc.length > 0) {\r\n\r\n oEnc = oM3ListaEnc.find(enc => enc.IdProducto == oM3PrdGrl.SKU && !enc.IdEncPadre && this.getCantidadPositiva(enc));\r\n if (oEnc !== undefined && oEnc != null) {\r\n //JAGM 20190717 Validar ahora el precio.\r\n this.VerificarPrecioByNivelesGeneral(oM3PrdGrl, +oEnc.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor);\r\n if (this.ValidarPreciosPrds(oEnc, oM3PrdGrl.LoM3PrdLista) && !this.ValidarEstaPaquete(oEnc, oM3ListaEnc)) {\r\n oM3PItemsWEB.IDEncRepetido = oEnc.ID;\r\n cantidad = +oEnc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n //return true;\r\n } else {\r\n //return false;\r\n }\r\n }\r\n }\r\n return cantidad;\r\n }\r\n\r\n getCantidadPositiva(oM3PEncItems: M3PEncItems): boolean {\r\n let cantidad = 0;\r\n let detCantidad = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\")\r\n\r\n if (detCantidad) {\r\n cantidad = +detCantidad.Valor;\r\n }\r\n\r\n if (cantidad > 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Valida que el encabezado con el producto agregado, sea un paquete\r\n * @param oM3PEncItems \r\n * @param oM3ListaEnc \r\n */\r\n public ValidarEstaPaquete(oM3PEncItems: M3PEncItems, oM3ListaEnc: Array<M3PEncItems>) {\r\n var bResp: boolean = false;\r\n try {\r\n if (oM3ListaEnc.find(x => x.IdEncPadre == oM3PEncItems.ID)) {\r\n bResp = true;\r\n }\r\n } catch {\r\n\r\n }\r\n return bResp;\r\n }\r\n\r\n /**\r\n * Validar los precios de los productos\r\n * @param oEnc \r\n * @param oM3PrdLista \r\n */\r\n public ValidarPreciosPrds(oEnc: M3PEncItems, oM3PrdLista: M3PrdLista) {\r\n var bResp: boolean = false;\r\n try {\r\n var dPrecioEnc: number = +oEnc.M3DET.find(x => x.NombreConcepto == \"PUNIT\").Valor;\r\n var dPrecioList: number = oM3PrdLista.PRECIO;\r\n\r\n if (dPrecioList == dPrecioEnc) {\r\n bResp = true;\r\n }\r\n\r\n\r\n } catch (ex) {\r\n console.log(\"Error ValidarPreciosPrds\")\r\n console.log(ex)\r\n }\r\n return bResp;\r\n }\r\n\r\n\r\n //Actualizacion de M3 procesos, con data lista para actualizar.\r\n public UpdateM3ProcesosWithData(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, tipoUbicacion: string, funcionOK: Function, funcionError: Function\r\n , m3Ubicacion: M3Ubicacion = null, oM3PItemsWEB: M3PItemsWEB = null) {\r\n //Guardar en BD PouchDB\r\n var sKeyCarrito: string;\r\n this.RecalcularPrecios(oM3Procesos);\r\n //Obtener key de carrito de compras\r\n //IDHUB\r\n if (tipoUbicacion.toUpperCase() == \"WEB\") {\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n oM3Data.GetDataPouchBD(sKeyCarrito).then(result => {\r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n this.procesarPromoAfterCarritoOk(oM3Procesos, oM3Data, oDataUser, m3Ubicacion, funcionOK, funcionError, oM3PItemsWEB);\r\n }, error => {\r\n if (error.status == \"404\") {//No existe el carrito \r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n this.procesarPromoAfterCarritoOk(oM3Procesos, oM3Data, oDataUser, m3Ubicacion, funcionOK, funcionError, oM3PItemsWEB);\r\n } else {\r\n console.log(\"Error no controlado\");\r\n funcionError();\r\n }\r\n });\r\n }\r\n }\r\n\r\n public procesarPromoAfterCarritoOk(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, m3Ubicacion: M3Ubicacion, funcionOK: Function, funcionError: Function, oM3PItemsWEB: M3PItemsWEB) {\r\n if (m3Ubicacion) {\r\n var loM3PItemsWEB: M3PItemsWEB;\r\n if (oM3PItemsWEB) {\r\n loM3PItemsWEB = oM3PItemsWEB;\r\n } else {\r\n loM3PItemsWEB = new M3PItemsWEB();\r\n loM3PItemsWEB.dCantidad = 1;\r\n }\r\n\r\n var sKeyCarrito = oM3Data.GetKeyCarritoCompras(this.gsIdkatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n this.ProcPromoAfterAddToCart(oM3Procesos, oDataUser, loM3PItemsWEB, m3Ubicacion, true).then(x => {\r\n // console.log(x);\r\n // console.log(oData);\r\n oM3Data.AddToPouchBDCarritoComprasAsync(sKeyCarrito, oM3Procesos).then(x => {\r\n console.debug(\"Entro1\");\r\n funcionOK();\r\n }).catch(x => {\r\n console.debug(\"Entro2\");\r\n funcionOK();\r\n });\r\n }).catch(x => {\r\n console.log(x)\r\n console.log(\"Error no controlado en procesarPromoAfterCarritoOk\");\r\n funcionOK();\r\n // this.oEncabezadoM3Component.RecargarCarrito();\r\n // this.LoadCart();\r\n });\r\n }\r\n else {\r\n funcionOK();\r\n }\r\n }\r\n\r\n\r\n //Actualizacion de M3 procesos, con data lista para actualizar.\r\n public updateAPouch(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, tipoUbicacion: string, funcionOK: Function, funcionError: Function) {\r\n //Guardar en BD PouchDB\r\n var sKeyCarrito: string;\r\n //Obtener key de carrito de compras\r\n //IDHUB\r\n if (tipoUbicacion.toUpperCase() == \"WEB\") {\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n oM3Data.GetDataPouchBD(sKeyCarrito).then(result => {\r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK();\r\n }, error => {\r\n if (error.status == \"404\") {//No existe el carrito \r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK();\r\n } else {\r\n console.log(\"Error no controlado\");\r\n funcionError();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n public async DeleteM3Proceso(oM3Data: M3Data, oDataUser: any, sIDKatios: string) {\r\n var sKeyCarrito: string;\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n await oM3Data.Delete(sKeyCarrito);\r\n }\r\n\r\n\r\n ///Eliminar documento de couch/pouch, inicio y actual\r\n public DelDocsStartAndCurrent(oM3Data: M3Data, sIDKatios: string, olM3Procesos: M3Procesos, UbicacionCurrent, HubCurrent) {\r\n //Eliminar Inicial\r\n if (olM3Procesos.IDDiarioCierre !== undefined && olM3Procesos.IDDiarioCierre != null) {\r\n var oDataUser = { \"UsuarioSistema\": { \"TDOC\": olM3Procesos.TDoc, \"NDOC\": olM3Procesos.NDoc, \"UBICACION\": olM3Procesos.Ubic1.toString(), \"IDHUB\": olM3Procesos.IDHub } }\r\n this.DeleteM3Proceso(oM3Data, oDataUser, sIDKatios).then(x => {\r\n console.log(\"Delete start\");\r\n })\r\n\r\n //Eliminar actual\r\n oDataUser = { \"UsuarioSistema\": { \"TDOC\": olM3Procesos.TDoc, \"NDOC\": olM3Procesos.NDoc, \"UBICACION\": UbicacionCurrent.toString(), \"IDHUB\": HubCurrent } }\r\n this.DeleteM3Proceso(oM3Data, oDataUser, sIDKatios).then(x => {\r\n console.log(\"Delete current\");\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n //Actualizacion de M3 procesos, con data lista para actualizar.\r\n public async GetCarritoComprasPouchDB(oM3Data: M3Data, oDataUser: any, sIDKatios: string) {\r\n //Guardar en BD PouchDB\r\n var sKeyCarrito: string;\r\n var oM3Proceso;\r\n //Obtener key de carrito de compras\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n oM3Proceso = await oM3Data.GetDataPouchBD(sKeyCarrito);\r\n return oM3Proceso;\r\n }\r\n\r\n //Trasladar información de carrito, dos usuarios\r\n public async MoveCartIntoUser(sIDKatios: string, oM3Data: M3Data, oDataUserOrigen: any, oDataUserDestino: any, funcionOK: Function) {\r\n var sKeyCarritoOrigen;\r\n var sKeyCarritoDestino;\r\n\r\n try {\r\n sKeyCarritoOrigen = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUserOrigen.UsuarioSistema.TDOC, oDataUserOrigen.UsuarioSistema.NDOC, oDataUserOrigen.UsuarioSistema.UBICACION, oDataUserOrigen.UsuarioSistema.IDHUB);\r\n sKeyCarritoDestino = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUserDestino.UsuarioSistema.TDOC, oDataUserDestino.UsuarioSistema.NDOC, oDataUserDestino.UsuarioSistema.UBICACION, oDataUserDestino.UsuarioSistema.IDHUB);\r\n let oM3Proceso = await oM3Data.GetDataPouchBD(sKeyCarritoOrigen);\r\n\r\n oM3Proceso.TDoc = oDataUserDestino.UsuarioSistema.TDOC;\r\n oM3Proceso.NDoc = oDataUserDestino.UsuarioSistema.NDOC;\r\n delete oM3Proceso[\"_rev\"];\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarritoDestino, oM3Proceso);\r\n funcionOK();\r\n } catch (error) {\r\n funcionOK();\r\n }\r\n }\r\n\r\n /**\r\n * Recalcular precios totales y de base\r\n * @param oM3Procesos \r\n */\r\n public RecalcularPreciosPromoCombinada(oM3Procesos: M3Procesos) {\r\n // var dPrecioTotal;\r\n // var dPrecioTotalBase;\r\n // var dValor: number = 0;\r\n // var dValorNeto: number = 0;\r\n\r\n\r\n // oM3Procesos.M3ENC.forEach(enc => {\r\n // dPrecioTotal = enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor //(+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) * (+enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor);\r\n // dPrecioTotalBase = this.CalcularPrecioBaseFromProceso(enc, dPrecioTotal);\r\n // enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALBASE\").Valor = String(Math.round(dPrecioTotalBase * 100) / 100);\r\n // dValor = (+dValor) + (+dPrecioTotalBase);\r\n // dValorNeto = (+dValorNeto) + (+dPrecioTotal);\r\n // this.RecalculoImpuestos(enc, dPrecioTotalBase);\r\n // });\r\n // //oM3Procesos.Valor = dValor;\r\n // oM3Procesos.ValorNeto = dValorNeto;\r\n this.RecalcularPrecios(oM3Procesos);\r\n }\r\n\r\n\r\n //Recalcular precios. recorriendo los encabezados.\r\n public RecalcularPrecios(oM3Procesos: M3Procesos) {\r\n var valor = 0;\r\n var ValorNeto = 0;\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n //JAGM 20191010 se cambia el valor del precio unitario base, ya que al momento de llamar la función ValoresCalculadosProceso\r\n // se recalculo el precio total, dependiendo de este valor.\r\n let pTotalBase = this.CalculatePrecioBase(enc.M3DET.find(det => det.NombreConcepto == \"CTBLDIMPPRD\").Valor,\r\n this.oMathTF.round(enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor, 2));\r\n\r\n var dCantidadEnc = +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n if (+dCantidadEnc != 0) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"PRECIOUNITBASE\").Valor = (+pTotalBase / +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor).toString();\r\n } else {\r\n enc.M3DET.find(det => det.NombreConcepto == \"PRECIOUNITBASE\").Valor = \"0\";\r\n }\r\n\r\n\r\n\r\n\r\n\r\n this.ValoresCalculadosProceso(enc, +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor);\r\n });\r\n this.recalcularM3Proceso(oM3Procesos);\r\n }\r\n\r\n //Calcular precio base de un precio, teniendo el valor total o neto.\r\n public CalcularPrecioBaseFromProceso(oM3PEncItems: M3PEncItems, dPrecioNeto: number) {\r\n var dValorImpuesto: number = 1;\r\n try {\r\n oM3PEncItems.M3PImpuestos.forEach(imp => {\r\n dValorImpuesto = (+dValorImpuesto) + (+imp.Porcentaje);\r\n });\r\n } catch {\r\n\r\n }\r\n return ((+dPrecioNeto) / (+dValorImpuesto));\r\n }\r\n\r\n //Recalculo de valor de impuestos, cuando cambia el valor. Sea por cantidad, eliminación...\r\n // public RecalculoImpuestos(oM3PEncItems: M3PEncItems, dPrecioBase: number) {\r\n // var dTotalImpuesto: number = 0;\r\n // oM3PEncItems.M3PImpuestos.forEach(imp => {\r\n // imp.Valor = (+dPrecioBase) * (+imp.Porcentaje);\r\n // //JAGM 20180912 nuevo concepto\r\n // imp.Base = dPrecioBase;\r\n // dTotalImpuesto = (+dTotalImpuesto) + (+imp.Valor);\r\n // //Suma de precio base \r\n // dPrecioBase = (+dPrecioBase) + (+imp.Valor);\r\n // });\r\n // dTotalImpuesto = Math.round(dTotalImpuesto * 100) / 100;\r\n // oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"TOTALIMPUESTOS\").Valor = dTotalImpuesto.toString();\r\n // }\r\n\r\n\r\n /**\r\n * Creacion nuevo M3 procesos, este va vacio sin nisiquiera M3PEncItems. \r\n * Se utiliza principalmente para las creacion desde 0 un M3 Proceso. Que pasa de estados '' al primer estado\r\n * @param ioM3Procesos \r\n * @param idproceso_destino \r\n * @param tdoc \r\n * @param ndoc \r\n * @param estados_futuros \r\n * @param idHub \r\n * @param idUbicacion \r\n */\r\n public CreateM3NewProcesoEmpty(ioM3Procesos: M3Procesos, idproceso_destino: string, tdoc: string, ndoc: string,\r\n estados_futuros: Array<any>, idHub: string, idUbicacion: string) {\r\n\r\n ioM3Procesos.TMIdProceso = idproceso_destino;\r\n ioM3Procesos.EstadoAnt = \"\";\r\n ioM3Procesos.SubEstadoAnt = \"\";\r\n ioM3Procesos.EstadoDes = estados_futuros[0].E_Destino;\r\n ioM3Procesos.SubEstadoDes = estados_futuros[0].SE_Destino;\r\n ioM3Procesos.M3FTrabajo.IdHub = +idHub;\r\n ioM3Procesos.M3FTrabajo.IdUbic = +idUbicacion;\r\n ioM3Procesos.IDHub = +idHub;\r\n ioM3Procesos.Ubic1 = +idUbicacion;\r\n ioM3Procesos.TDoc = tdoc;\r\n ioM3Procesos.NDoc = ndoc;\r\n ioM3Procesos.TipoTercero = 1;\r\n ioM3Procesos.Ubic2 = -1;\r\n ioM3Procesos.M3FTrabajo.IdHubPre = -1;\r\n ioM3Procesos.M3FTrabajo.IdUbicPre = -1;\r\n }\r\n\r\n //Cuando se agrega por primera vez al carrito de compra.\r\n public LoadM3ProcesoEmptyPDB(prodGRPSelected: TypeM3PrdGrp, oM3PItemsWEB: M3PItemsWEB, oDataUser: any, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, ioM3Procesos: M3Procesos, oM3PDinamicasByActividad: any = null): M3Procesos {\r\n //sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION\r\n var oM3Procesos;\r\n if (ioM3Procesos != null) {\r\n oM3Procesos = ioM3Procesos;\r\n } else {\r\n oM3Procesos = new M3Procesos();\r\n }\r\n\r\n oM3Procesos.Fecha = moment(new Date()).format('YYYY-MM-DD');\r\n oM3Procesos.TipoTercero = 1;\r\n oM3Procesos.TDoc = oDataUser.UsuarioSistema.TDOC;\r\n oM3Procesos.NDoc = oDataUser.UsuarioSistema.NDOC;\r\n oM3Procesos.Ubic1 = oDataUser.UsuarioSistema.UBICACION;\r\n oM3Procesos.Ubic2 = -1;\r\n ///AGREGAR NUEVA FUNCIONALIDAD DE HUBS. FLUJO DE TRABAJO\r\n oM3Procesos.IDHub = oDataUser.UsuarioSistema.IDHUB;\r\n oM3Procesos.M3FTrabajo.IdHub = oM3Procesos.IDHub;\r\n oM3Procesos.M3FTrabajo.IdUbic = oM3Procesos.Ubic1;\r\n\r\n oM3Procesos.M3FTrabajo.IdHubPre = -1;\r\n oM3Procesos.M3FTrabajo.IdUbicPre = -1;\r\n\r\n ///FIN AGREGAR NUEVA FUNCIONALIDAD DE HUBS. FLUJO DE TRABAJO\r\n\r\n // oM3Procesos.SubEstadoAnt = \"\";\r\n // oM3Procesos.EstadoAnt = \"\";\r\n\r\n if (oM3Procesos.SubEstadoDes == \"\" && ioM3Procesos == null) {\r\n oM3Procesos.SubEstadoDes = \"Registro\";\r\n oM3Procesos.EstadoDes = \"Activo\";\r\n }\r\n\r\n if (oM3PItemsWEB.SubEstado_o != \"\" && oM3PItemsWEB.Estado_o != \"\") {\r\n oM3Procesos.SubEstadoDes = oM3PItemsWEB.SubEstado_o;\r\n oM3Procesos.EstadoDes = oM3PItemsWEB.Estado_o;\r\n }\r\n\r\n\r\n if (oM3PItemsWEB.IdProceso == \"\" && ioM3Procesos == null) {\r\n oM3Procesos.TMIdProceso = \"M3ECC\";\r\n }\r\n else {\r\n if (oM3PItemsWEB.IdProceso != \"\") {\r\n oM3Procesos.TMIdProceso = oM3PItemsWEB.IdProceso;\r\n }\r\n }\r\n\r\n //oM3Procesos.M3ENC.push(this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser));\r\n this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, null, 0, oM3PDinamicasByActividad)\r\n\r\n // oM3Procesos.Valor = oM3PItemsWEB.dPrecioTotal;\r\n // oM3Procesos.ValorNeto = oM3PItemsWEB.dPrecioTotal;\r\n\r\n return oM3Procesos;\r\n //this.ProcesamientoService(PostServiceM3, oM3Procesos, funcionOK, funcionError);\r\n }\r\n\r\n\r\n //Cargar nuevos adicionales adicionales\r\n public LoadAdicionales(oM3PItemsWEB: M3PItemsWEB, product: TypeM3PrdGrp): M3PItemsWEB {\r\n try {\r\n oM3PItemsWEB.ClavePrdSRV = product.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == \"CLAVEPRODSERV\").VALOR;\r\n oM3PItemsWEB.ClavePrdUnidad = product.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == \"CLAVEUNIDAD\").VALOR;\r\n oM3PItemsWEB.Unidad = product.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == \"UNIDAD\").VALOR;\r\n } catch {\r\n\r\n }\r\n return oM3PItemsWEB;\r\n }\r\n\r\n //Cargar procesos, retomando desde data\r\n public LoadM3ProcesoFromData(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oM3PDinamicasByActividad: any = null, valorDescuento = 0): M3Procesos {\r\n // oM3Procesos.Valor = (+oM3Procesos.Valor) + (+oM3PItemsWEB.dPrecioTotal);\r\n // oM3Procesos.ValorNeto = oM3Procesos.Valor;\r\n oM3Procesos.Fecha = moment(new Date()).format('YYYY-MM-DD');\r\n if (oM3Procesos.TMIdProceso == \"\" && oM3PItemsWEB.IdProceso != \"\") {\r\n oM3Procesos.TMIdProceso = oM3PItemsWEB.IdProceso;\r\n }\r\n\r\n //oM3Procesos.M3ENC.push(this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser));\r\n this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, null, valorDescuento, oM3PDinamicasByActividad)\r\n\r\n return oM3Procesos;\r\n }\r\n\r\n public LoadM3PEncItemsFromPrdGrl(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oencabezadoItems: Array<M3PEncItems>, oM3PItemsWEB: M3PItemsWEB,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oPadreM3PEncItems: M3PEncItems, valorDescuento = 0, oM3PDinamicasByActividad: any = null) {\r\n\r\n //Validacion de Inventario.\r\n let adiVentaNeg = prodGRPSelected.LoM3PrdAdicionales.find(x => x.ATRIBUTO == \"VENTANEG\")\r\n if (oM3Procesos[\"InventarioError\"]) {\r\n delete oM3Procesos[\"InventarioError\"];\r\n }\r\n if (oM3Procesos.TMIdProceso.toUpperCase() == \"M3ECC\" && prodGRPSelected.LoM3PrdGeneral[0].DISPONIBLE < oM3PItemsWEB.dCantidad && oM3Ubicacion.M3HUBS[0].Tipo == \"WEB\" && !(adiVentaNeg && adiVentaNeg.VALOR)) {\r\n oM3Procesos[\"InventarioError\"] = 'No hay inventario para agregar ' + oM3PItemsWEB.dCantidad + ' Items';\r\n oM3PItemsWEB.dCantidad = prodGRPSelected.LoM3PrdGeneral[0].DISPONIBLE;\r\n } //else {\r\n\r\n var oM3PEncItems = new M3PEncItems();\r\n oM3Procesos.Fecha = moment(new Date()).format('YYYY-MM-DD');\r\n oM3PEncItems = this.LoadM3PEncItemsFromPrdGrlItem(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oPadreM3PEncItems, valorDescuento);\r\n\r\n if (oM3Procesos[\"MensajeError\"]) {\r\n delete oM3Procesos[\"MensajeError\"];\r\n }\r\n if (oPadreM3PEncItems) {\r\n //Tiene un encabezado padre.\r\n oM3PEncItems.IdEncPadre = oPadreM3PEncItems.ID;\r\n }\r\n\r\n if (!oM3PEncItems[\"MensajeError\"]) {\r\n var olM3PrdPackDet: Array<M3PrdPackDet>;\r\n olM3PrdPackDet = prodGRPSelected.LoM3PrdGeneral[0].M3PACK\r\n if (olM3PrdPackDet && olM3PrdPackDet.length > 0) {\r\n\r\n //let valorDescuentoPack = this.calcularPorcentajeDescuentoCombo(prodGRPSelected);\r\n\r\n for (var i = 0; i < olM3PrdPackDet.length; i++) {\r\n var oM3PrdPackDet: M3PrdPackDet = olM3PrdPackDet[i];\r\n var packM3PItemsWEB: M3PItemsWEB;\r\n\r\n if (oM3PrdPackDet.oM3PItemsWEB) {\r\n packM3PItemsWEB = oM3PrdPackDet.oM3PItemsWEB;\r\n }\r\n else {\r\n packM3PItemsWEB = Object.assign({}, oM3PItemsWEB);\r\n packM3PItemsWEB.dCantidad = oM3PrdPackDet.Cantidad;\r\n }\r\n packM3PItemsWEB.PathImagen = oM3PrdPackDet.gsPathImagen;\r\n packM3PItemsWEB.dCantidad = packM3PItemsWEB.dCantidad * oM3PItemsWEB.dCantidad;\r\n //this.CalcularPreciosPCKG(oM3PrdPackDet);\r\n packM3PItemsWEB.IDEncRepetido = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"ID\") + i + 2; //Esto funciona si tiene solo 2 niveles\r\n //Si esto se cumple este producto es un pack y tiene productos asociados.\r\n oM3PrdPackDet.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = 0;\r\n try {\r\n let prdGeneral = oM3PrdPackDet.M3GRP.LoM3PrdGeneral[0].M3Cods.find(x => x.IdCodigo == \"UPC\");\r\n if (prdGeneral && prdGeneral.Valor) {\r\n packM3PItemsWEB.CodigoBarras = prdGeneral.Valor;\r\n }\r\n }\r\n catch(e) {\r\n console.warn(\"no añadi codigo de barras a producto hijo: \" + oM3PrdPackDet.SKUHIJO)\r\n }\r\n this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, oM3PrdPackDet.M3GRP, oM3Procesos.M3ENC, packM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PEncItems, 0, oM3PDinamicasByActividad);\r\n }\r\n }\r\n\r\n //JAGM 20190623, esto es cuando se modifica la cantidad de prodcutos existentes.\r\n if (oM3PItemsWEB.IDEncRepetido != -1) {\r\n oM3PEncItems.ID = oM3PItemsWEB.IDEncRepetido;\r\n }\r\n //JAGM 2019 envio de padre desde instruccion mas arriba\r\n if (oM3PItemsWEB.IDEncPadre != -1) {\r\n oM3PEncItems.IdEncPadre = oM3PItemsWEB.IDEncPadre;\r\n oM3PEncItems.TipoAgrupacion = oM3PItemsWEB.TipoAgrupacion;\r\n }\r\n if (oM3PDinamicasByActividad && oM3PDinamicasByActividad.length > 0) {\r\n oM3PDinamicasByActividad.forEach(din => {\r\n oM3PEncItems.M3PDinamByActividad.push({... din});\r\n });\r\n }\r\n\r\n oM3Procesos.M3ENC.push(oM3PEncItems);\r\n\r\n }\r\n else {\r\n oM3Procesos[\"MensajeError\"] = oM3PEncItems[\"MensajeError\"];\r\n }\r\n oM3PItemsWEB.IDEncProcesado = oM3PEncItems.ID;\r\n //}\r\n }\r\n\r\n calcularPorcentajeDescuentoCombo(prodGRPSelected: TypeM3PrdGrp) {\r\n let valorDescuentoPack = 0;\r\n let valorItemsComboSuma = 0;\r\n let valorFinalCombo = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO;\r\n\r\n prodGRPSelected.LoM3PrdGeneral[0].M3PACK.forEach(prdPack => {\r\n let cantidad = prdPack.M3GRP.Cantidad ? prdPack.M3GRP.Cantidad : 1;\r\n let infNivelesPrcio = this.VerificarPrecioByNiveles(prdPack.M3GRP, cantidad);\r\n console.debug(prdPack.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.IDLISTA)\r\n console.debug(prdPack.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO)\r\n valorItemsComboSuma += (prdPack.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO * cantidad);\r\n });\r\n\r\n if (valorItemsComboSuma > valorFinalCombo) {\r\n valorDescuentoPack = 100 - (valorFinalCombo * 100 / valorItemsComboSuma);\r\n }\r\n console.debug(valorDescuentoPack)\r\n return valorDescuentoPack;\r\n }\r\n\r\n\r\n /**\r\n * Recalculo de precios de hijos del paquete\r\n * @param oM3PrdPackDet \r\n */\r\n public CalcularPreciosPCKG(oM3PrdPackDet: M3PrdPackDet) {\r\n oM3PrdPackDet.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = 0;\r\n }\r\n\r\n public loadM3PEncItemsFromPromocionCombo(oM3Procesos: M3Procesos, productosHijosDelCombo: Array<M3PEncItems>, codigo: string, valor, dCantidad: number) {\r\n let productoCombo = new M3PEncItems();\r\n\r\n\r\n productoCombo.IdProducto = codigo;\r\n productoCombo.Lote = \"1\";\r\n productoCombo.ID = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"ID\") + 1; //JAGM, cambio de ID, caso cuando se agrega prd:1, prd:2 y de nuevo prd:1. En este caso en lógica anterior, se hace remove de item. y los ID quedaban repetidos.\r\n productoCombo.Orden = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"Orden\") + 1;\r\n productoCombo.Nombre = \"Combo\";\r\n\r\n\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(moment(new Date()).format('YYYY-MM-DDTHH:mm:ss'), \"FECHAIN\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"true\", \"ESPRODPROMOCOMBO\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"true\", \"ESPRODPROMO\")); // TRUE-> SI ES UN PRODUCTO POR PROMOCION, FALSE-> DE OTRO MODO\r\n //Detalles de factura electronica\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"ENCPROMO\", \"TIPO_PRD\"));\r\n /**FIN INFORMACION GENERAL */\r\n\r\n //** INICIO VALORES UNITARIOS */\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PRECIOUNITBASE\")); //Precio Sin impuestos\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUESTOS\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUNIT\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PUNITSINIMPUESTO\"));//Sin descuento incluido Y sin Impuestos\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PUNIT\"));//Sin descuento incluido ------ Nunca Cambia\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PUNITNETO\"));//Con descuento incluido------ Nunca Cambia\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"VUNITPROMO\"));//Unitario Promocion ------ Nunca Cambia\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"UNITFIDEL\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUNIT\"));\r\n //** FIN VALORES UNITARIOS */\r\n\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(dCantidad.toString(), \"CANTIDAD\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUESTOS\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"FIDELIZACION\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALPROMO\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"CTBLDIMPPRD\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"PRECIOTOTALSINDTO\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"SUBTOTAL\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"PRECIOTOTALBASE\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"PRECIOTOTAL\"));\r\n\r\n oM3Procesos.M3ENC.push(productoCombo);\r\n productosHijosDelCombo.forEach(producto => {\r\n producto.ID = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"ID\") + 1; //JAGM, cambio de ID, caso cuando se agrega prd:1, prd:2 y de nuevo prd:1. En este caso en lógica anterior, se hace remove de item. y los ID quedaban repetidos.\r\n producto.IdEncPadre = productoCombo.ID;\r\n oM3Procesos.M3ENC.push(producto);\r\n });\r\n\r\n this.recalcularM3Proceso(oM3Procesos);\r\n return productoCombo;\r\n }\r\n\r\n recalcularM3Proceso(oM3Procesos: M3Procesos) {\r\n let productosAplSumaValor = oM3Procesos.M3ENC.filter(oM3ENC => {\r\n let detCantidad = oM3ENC.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\");\r\n let detEsPrdCombo = oM3ENC.M3DET.find(x => x.NombreConcepto == \"ESPRODPROMOCOMBO\");\r\n return detCantidad && +detCantidad.Valor > 0 && !(detEsPrdCombo && detEsPrdCombo.Valor == \"true\")\r\n });\r\n\r\n oM3Procesos.ValorNeto = 0;\r\n oM3Procesos.Valor = 0;\r\n\r\n //for (const oM3ENC of this.oM3Procesos.M3ENC.filter(enc => !enc.IdEncPadre || enc.IdEncPadre <= 0)) {\r\n for (const oM3ENC of productosAplSumaValor) {\r\n oM3Procesos.ValorNeto += +oM3ENC.M3DET.find(x => x.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n oM3Procesos.Valor += +oM3ENC.M3DET.find(x => x.NombreConcepto == \"SUBTOTAL\").Valor;\r\n }\r\n }\r\n\r\n //Cargar M3Proceso encabezado items, desde producto general\r\n public LoadM3PEncItemsFromPrdGrlItem(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oencabezadoItems: Array<M3PEncItems>, oM3PItemsWEB: M3PItemsWEB,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oPadreM3PEncItems: M3PEncItems = undefined, valorDescuento = 0): M3PEncItems {\r\n\r\n var oM3PEncItems = new M3PEncItems();\r\n var oM3PrdGeneral: M3PrdGeneral;\r\n var dPRECIOUnitBase = 0;\r\n var infNivelesPrcio;\r\n var oPromocionProcesada: PromocionProcesada;\r\n var dTotalImpuestosTotal: number = 0;\r\n var dUnitarioMonedero: number = 0;\r\n var dUnitarioPromo: number = 0;\r\n\r\n //Verificar el precio a usar, usando la logica de niveles de precios.\r\n infNivelesPrcio = this.VerificarPrecioByNiveles(prodGRPSelected, oM3PItemsWEB.dCantidad);\r\n if (valorDescuento > 0) {\r\n oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotalPromocion = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO * valorDescuento / 100;\r\n oPromocionProcesada.PrecioTotal = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO - oPromocionProcesada.PrecioTotalPromocion;\r\n oPromocionProcesada.ListPromocionesAsociadas = [];\r\n }\r\n else {\r\n oPromocionProcesada = this.CalcularPromociones(oM3Procesos, prodGRPSelected, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PItemsWEB);\r\n }\r\n\r\n //Valida si el producto está restingido\r\n if (!this.validarProductoRestringido(oPromocionProcesada)) {\r\n this.AsignarPromocionesCombinadas(oM3Procesos, oPromocionProcesada, oM3PEncItems);\r\n\r\n //Calculo del total de puntos y el valor total de la promoción por la cqantidad de productos de la misma referencia\r\n dUnitarioMonedero = oPromocionProcesada.ValorTotalMonedero; //Unitario Monedero\r\n oPromocionProcesada.ValorTotalMonedero = +bigDecimal.multiply(oPromocionProcesada.ValorTotalMonedero, oM3PItemsWEB.dCantidad); //No se utiliza, se deja para usos adelante\r\n\r\n dUnitarioPromo = oPromocionProcesada.PrecioTotalPromocion; //Promocion unitario\r\n oPromocionProcesada.PrecioTotalPromocion = +bigDecimal.multiply(oPromocionProcesada.PrecioTotalPromocion, oM3PItemsWEB.dCantidad); //No se utiliza, se deja para usos adelante\r\n oM3PEncItems.M3DetCupones = this.get_list_cupones_from_promo(oPromocionProcesada, +oM3PItemsWEB.dCantidad);\r\n\r\n //Calculo de precio total, despues de promociones\r\n oM3PItemsWEB.dPrecioTotal = +bigDecimal.multiply(oPromocionProcesada.PrecioTotal, oM3PItemsWEB.dCantidad);\r\n\r\n //Cargar producto \r\n oM3PrdGeneral = prodGRPSelected.LoM3PrdGeneral[0];\r\n\r\n oM3PEncItems.IdProducto = oM3PrdGeneral.SKU;\r\n oM3PEncItems.Lote = oM3PrdGeneral.LOTE;\r\n oM3PEncItems.ID = +this.GetMaxAtributoFromLista(oencabezadoItems, \"ID\") + 1; //JAGM, cambio de ID, caso cuando se agrega prd:1, prd:2 y de nuevo prd:1. En este caso en lógica anterior, se hace remove de item. y los ID quedaban repetidos.\r\n oM3PEncItems.Orden = +this.GetMaxAtributoFromLista(oencabezadoItems, \"Orden\") + 1;\r\n oM3PEncItems.Nombre = oM3PrdGeneral.NOMBRE1;\r\n oM3PEncItems.DISPONIBLE = oM3PrdGeneral.DISPONIBLE;\r\n oM3PEncItems.PathImage = oM3PItemsWEB.PathImagen;\r\n oM3PEncItems.CodigoBarras = oM3PItemsWEB.CodigoBarras;\r\n let pTotalBase = this.CalculatePrecioBase(oM3PrdGeneral.CTBLDIMPPRD, this.oMathTF.round(bigDecimal.multiply(oPromocionProcesada.PrecioTotal, oM3PItemsWEB.dCantidad), 2));\r\n if (oM3PItemsWEB.dCantidad != 0) {\r\n dPRECIOUnitBase = pTotalBase / oM3PItemsWEB.dCantidad;\r\n } else {\r\n dPRECIOUnitBase = 0;\r\n }\r\n\r\n dTotalImpuestosTotal = this.LoadM3PImpuestosFromPrdGrl(oM3PrdGeneral.CTBLDIMPPRD, oM3PEncItems, pTotalBase, oM3PItemsWEB.dCantidad, oPromocionProcesada.PrecioTotal);\r\n\r\n /** INICIO INFORMACION GENERAL */\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(moment(new Date()).format('YYYY-MM-DDTHH:mm:ss'), \"FECHAIN\")); //------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDPRD, \"CTBLDPRD\")); //------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.BisObsequio.toString(), \"ESOBSEQUIO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.SKP1, \"PRD_ESTILO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDIMPPRD, \"CTBLDIMPPRD\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.observacion.toString(), \"OBSERVACION\")); //------ Nunca Cambia\r\n if (oM3PItemsWEB.PathImagen) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.PathImagen, \"PATHIMAGEN\"));\r\n }\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.BisProductoPromo.toString(), \"ESPRODPROMO\")); // TRUE-> SI ES UN PRODUCTO POR PROMOCION, FALSE-> DE OTRO MODO\r\n //Detalles de factura electronica\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(prodGRPSelected.TIPO, \"TIPO_PRD\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.Unidad, \"UNIDAD\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.ClavePrdSRV, \"CLAVEPRODSERV\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.ClavePrdUnidad, \"CLAVEUNIDAD\"));\r\n this.AddItemsInterfaz(oM3PEncItems, prodGRPSelected.LoM3PrdAdicionales);\r\n this.AdicionalesToDetalles(oM3PEncItems, prodGRPSelected.LoM3PrdAdicionales)\r\n this.camposAdicionalesToDetalles(oM3PEncItems, oM3PItemsWEB)\r\n this.LoadDetalleNivelesPrecio(infNivelesPrcio, oM3PEncItems);\r\n this.AddInfoPromocionesADetalle(oPromocionProcesada, oM3PEncItems, oM3PItemsWEB.dCantidad); // Lista de Promociones \r\n /**FIN INFORMACION GENERAL */\r\n\r\n //** INICIO VALORES UNITARIOS */\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dPRECIOUnitBase.toString(), \"PRECIOUNITBASE\")); //Precio Sin impuestos\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dTotalImpuestosTotal.toString(), \"TOTALIMPUESTOS\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle((this.oMathTF.round(this.GetUnitarioByTotal(oM3PItemsWEB.dCantidad, oM3PEncItems, \"TOTALIMPUESTOS\"), 2)).toString(), \"TOTALIMPUNIT\"));\r\n //oM3PEncItems.M3DET.push(this.LoadM3PDetalle((+oM3PrdGeneral.LoM3PrdLista.PRECIO - +dTotalImpuestosUnitario).toString(), \"PUNITSINIMPUESTO\"));//Sin descuento incluido Y sin Impuestos //------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle((+dPRECIOUnitBase + dUnitarioPromo).toString(), \"PUNITSINIMPUESTO\"));//Sin descuento incluido Y sin Impuestos //------ Nunca Cambia //FS 20190725 Correccion en la fomra de calcularlo\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.LoM3PrdLista.PRECIO.toString(), \"PUNIT\"));//Sin descuento incluido ------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oPromocionProcesada.PrecioTotal.toString(), \"PUNITNETO\"));//Con descuento incluido------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dUnitarioMonedero.toString(), \"UNITFIDEL\"));//Unitario fidelizacion ------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dUnitarioPromo.toString(), \"VUNITPROMO\"));//Unitario Promocion ------ Nunca Cambia\r\n\r\n //** FIN VALORES UNITARIOS */\r\n\r\n // *** Informacion de acciones en el cliente ***\r\n if (prodGRPSelected.encontradoLocal) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(\"LOCAL\", \"CONSULTOEN\"));//Unitario Promocion ------ Nunca Cambia\r\n } else {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(\"SERVIDOR\", \"CONSULTOEN\"));//Unitario Promocion ------ Nunca Cambia\r\n }\r\n\r\n\r\n this.ValoresCalculadosProceso(oM3PEncItems, oM3PItemsWEB.dCantidad);\r\n\r\n //if (!oPadreM3PEncItems) {\r\n oM3Procesos.Valor = (+oM3Procesos.Valor) + (+oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"SUBTOTAL\").Valor) // (+oM3PItemsWEB.dPrecioTotal);\r\n oM3Procesos.ValorNeto = (+oM3Procesos.ValorNeto) + (+oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor);\r\n //}\r\n\r\n //Verificar obsequios del producto que se ingreso al carrito de compras\r\n this.VerificarObsequios(oPromocionProcesada, oM3PItemsWEB.dCantidad, oM3PEncItems);\r\n this.turnOnPromos(oPromocionProcesada)\r\n }\r\n else {\r\n oM3PEncItems[\"MensajeError\"] = \"Producto Restringido\";\r\n }\r\n\r\n return oM3PEncItems;\r\n }\r\n\r\n /**\r\n * Retorna true si este producto se encuentra restringido\r\n * @param oPromocionProcesada \r\n */\r\n public validarProductoRestringido(oPromocionProcesada: PromocionProcesada): boolean {\r\n if (oPromocionProcesada.ListPromocionesAsociadas) {\r\n let promoRestringido = oPromocionProcesada.ListPromocionesAsociadas.find(x => x.Tipo == \"RESTRICCION\");\r\n if (promoRestringido) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n /**\r\n * Retorna el máximo valor de un atributo dentro de la lista cualquiera \r\n */\r\n public GetMaxAtributoFromLista(lista, atributo) {\r\n if (lista.length > 0) {\r\n let listID = lista.map(x => x[atributo]);\r\n return Math.max.apply(Math, listID);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Valores Calculados por proceso.\r\n * @param oM3PEncItems \r\n * @param dCantidad \r\n */\r\n public ValoresCalculadosProceso(oM3PEncItems: M3PEncItems, dCantidad: number) {\r\n /** INICIO VALORES DINAMICOS */\r\n // var dTotalImpuestos = (+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"TOTALIMPUNIT\"));\r\n // var dPrecioTotalSinDto = this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNIT\")\r\n // var dSubTotal = Math.round((+dPrecioTotalSinDto - +dTotalImpuestos) * 100) / 100;\r\n\r\n let subTotal = 0;\r\n let precioTotalSinDto = 0;\r\n let totalImpuestos\r\n //Agregar Impuestos\r\n totalImpuestos = this.agregarImpuesto(oM3PEncItems, dCantidad);\r\n\r\n //FS 20190725 Arreglo en el calculo de totales en caso de haber impuestos\r\n if (oM3PEncItems.M3PImpuestos.length > 0) {\r\n //Subtotal Sumas de las bases\r\n subTotal = this.oMathTF.round(((this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PRECIOUNITBASE\"), 2)) + (+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"VUNITPROMO\"))), 2);\r\n totalImpuestos = this.getValorTotalFromImpuestos(oM3PEncItems, \"Valor\");\r\n precioTotalSinDto = subTotal + totalImpuestos;\r\n }\r\n else {\r\n //Se asume que no hay impuestos entonces el subTotal es igual al precioTotalSinDto\r\n precioTotalSinDto = this.oMathTF.round(this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNIT\"), 2);\r\n subTotal = precioTotalSinDto;\r\n }\r\n\r\n this.InsUpdDetItem(oM3PEncItems, dCantidad.toString(), \"CANTIDAD\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(totalImpuestos, 2)).toString(), \"TOTALIMPUESTOS\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetUnitarioByTotal(dCantidad, oM3PEncItems, \"TOTALIMPUESTOS\"), 2)).toString(), \"TOTALIMPUNIT\");\r\n\r\n //La fidelizacion es un porcantaje por ende no debe multiplicarse this.InsUpdDetItem(oM3PEncItems, this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"UNITFIDEL\").toString(), \"FIDELIZACION\");\r\n this.InsUpdDetItem(oM3PEncItems, oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"UNITFIDEL\").Valor, \"FIDELIZACION\");\r\n //this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNITNETO\"), 2)).toString(), \"PRECIOTOTAL\");\r\n //this.InsUpdDetItem(oM3PEncItems, (+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNITNETO\")).toString(), \"PRECIOTOTALREAL\");\r\n this.InsUpdDetItem(oM3PEncItems, precioTotalSinDto.toString(), \"PRECIOTOTALSINDTO\");\r\n this.InsUpdDetItem(oM3PEncItems, subTotal.toString(), \"SUBTOTAL\");\r\n this.InsUpdDetItem(oM3PEncItems, moment(new Date()).format('YYYY-MM-DD'), \"FUT\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"VUNITPROMO\"), 2)).toString(), \"TOTALPROMO\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PRECIOUNITBASE\"), 2)).toString(), \"PRECIOTOTALBASE\"); //Precio Sin impuestos \r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round((subTotal + +oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"TOTALIMPUESTOS\").Valor - +oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor), 2)).toString(), \"PRECIOTOTAL\");\r\n\r\n /** FIN VALORES DINAMICOS */\r\n }\r\n\r\n /**\r\n * Retorna la sumatoria de los valores de un atributo dado del arreglo de impuestos\r\n * @param oM3PEncItems \r\n * @param atributo \r\n */\r\n public getValorTotalFromImpuestos(oM3PEncItems: M3PEncItems, atributo: string): number {\r\n let sumatoria = 0;\r\n for (let _i = 0; _i < oM3PEncItems.M3PImpuestos.length; _i++) {\r\n const impuesto = oM3PEncItems.M3PImpuestos[_i];\r\n sumatoria = sumatoria + (+impuesto[atributo]);\r\n }\r\n return sumatoria;\r\n }\r\n\r\n private agregarImpuesto(oM3PEncItems: M3PEncItems, cantidad: number) {\r\n let det_ctbld_imp_prd = oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"CTBLDIMPPRD\");\r\n let det_precio_unit_base = oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"PRECIOUNITBASE\");\r\n let valorTotalImpuestos: number = 0;\r\n if (det_ctbld_imp_prd && det_precio_unit_base) {\r\n valorTotalImpuestos = this.LoadM3PImpuestosFromPrdGrl(det_ctbld_imp_prd.Valor, oM3PEncItems, +bigDecimal.multiply(det_precio_unit_base.Valor, cantidad), cantidad, +oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor);\r\n }\r\n return valorTotalImpuestos;\r\n }\r\n\r\n private InsUpdDetItem(oM3PEncItems: M3PEncItems, valor: string, sConcepto: string) {\r\n var oDet: M3PDetalleItems;\r\n oDet = oM3PEncItems.M3DET.find(det => det.NombreConcepto == sConcepto);\r\n if (oDet) {\r\n // Existe Actualiza\r\n oDet.Valor = valor;\r\n } else {\r\n //No existe agrega\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(valor.toString(), sConcepto));\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valor total\r\n * @param cantidad Nueva Cantidad \r\n * @param oM3PEncItems \r\n * @param DescUnitario \r\n */\r\n private GetTotalByUnitario(cantidad: number, oM3PEncItems: M3PEncItems, DescUnitario: string) {\r\n try {\r\n var unitario = oM3PEncItems.M3DET.find(det => det.NombreConcepto == DescUnitario).Valor;\r\n return +bigDecimal.multiply(unitario, cantidad);\r\n } catch {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valor unitario\r\n * @param cantidad \r\n * @param oM3PEncItems \r\n * @param DescTotal \r\n */\r\n private GetUnitarioByTotal(cantidad: number, oM3PEncItems: M3PEncItems, DescTotal: string) {\r\n try {\r\n if (+cantidad == 0) {\r\n return 0;\r\n }\r\n var total = oM3PEncItems.M3DET.find(det => det.NombreConcepto == DescTotal).Valor;\r\n return +total / +cantidad;\r\n } catch {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar detalles relacionados con la informacion de sw externo.\r\n * @param oM3PEncItems Objeto donde se guardará los nuevos atributos.\r\n * @param oAdicionales Desde donde se sacará la información.\r\n */\r\n public AddItemsInterfaz(oM3PEncItems: M3PEncItems, oAdicionales: Array<M3PrdAdicionales>) {\r\n try {\r\n var oAdicionalesFilter: Array<M3PrdAdicionales>;\r\n oAdicionalesFilter = oAdicionales.filter(a => a.ATRIBUTO.startsWith(\"CSIA_\"));\r\n for (var i = 0; i < oAdicionalesFilter.length; i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oAdicionalesFilter[i].VALOR, oAdicionalesFilter[i].ATRIBUTO));\r\n }\r\n\r\n } catch {\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Adicionar detalles \r\n * @param oM3PEncItems Objeto donde se guardará los nuevos atributos.\r\n * @param oAdicionales Desde donde se sacará la información.\r\n */\r\n public AdicionalesToDetalles(oM3PEncItems: M3PEncItems, oAdicionales: Array<M3PrdAdicionales>) {\r\n try {\r\n for (var i = 0; i < oAdicionales.length; i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oAdicionales[i].VALOR, \"ADC_\" + oAdicionales[i].ATRIBUTO));\r\n }\r\n } catch {\r\n\r\n }\r\n\r\n }\r\n\r\n public camposAdicionalesToDetalles(oM3PEncItems: M3PEncItems, oM3PItemsWEB: M3PItemsWEB) {\r\n try {\r\n for (var i = 0; i < oM3PItemsWEB.CamposAdicionales.length; i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.CamposAdicionales[i].VALOR, \"CAMADC_\" + oM3PItemsWEB.CamposAdicionales[i].ATRIBUTO));\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Agregar informacion de promociones Nombre, ID. a detalle del encabezado de producto agregado\r\n * @param oPromocionProcesada Informacion de promociones procesadas\r\n * @param oM3PEncItems Encabezado de items\r\n */\r\n public GenerarInfoPromocionesProcesadas(oPromocionProcesada: PromocionProcesada, iCantidad: number, aplicadas = true) {\r\n var sNombres: string = \"\";\r\n var sIds: string = \"\";\r\n var sValores: string = \"\";\r\n var data;\r\n if (oPromocionProcesada && oPromocionProcesada.ListPromocionesAsociadas && oPromocionProcesada.ListPromocionesAsociadas.length > 0) {\r\n if (aplicadas) {\r\n oPromocionProcesada.ListPromocionesAsociadas.filter(x => x.Aplicada).filter(x => x.PromocionCombinada == null).forEach(promo => {\r\n sNombres = sNombres + promo.Nombre + \",\";\r\n sIds = sIds + promo.IDPromocion + \",\";\r\n sValores = sValores + bigDecimal.multiply(promo.Valor, iCantidad) + \",\";\r\n });\r\n }\r\n else {\r\n oPromocionProcesada.ListPromocionesAsociadas.filter(x => !x.Aplicada).filter(x => x.PromocionCombinada == null).forEach(promo => {\r\n sNombres = sNombres + promo.Nombre + \",\";\r\n sIds = sIds + promo.IDPromocion + \",\";\r\n sValores = sValores + bigDecimal.multiply(promo.Valor, iCantidad) + \",\";\r\n });\r\n }\r\n data = { \"NOMBRES\": sNombres, \"ID\": sIds, \"VALORES\": sValores }\r\n return data;\r\n }\r\n return null;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Adicionar detalle de promociones\r\n * @param oM3PEncItems \r\n * @param sNombres \r\n * @param sIds \r\n */\r\n public AddInfoPromocionesADetalle(oPromocionProcesada: PromocionProcesada, oM3PEncItems: M3PEncItems, iCantidad: number) {\r\n var data = this.GenerarInfoPromocionesProcesadas(oPromocionProcesada, iCantidad)\r\n if (data) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.NOMBRES, \"NOMB_PROMOC\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.ID, \"ID_PROMOC\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.VALORES, \"VAL_PROMOC\"));\r\n\r\n //Ahora se agrega una dinamica por atributo de la promo para facilitar la retoma de esta información\r\n let listNombre = data.NOMBRES.replace(/.$/, \"\").split(\",\");\r\n let listId = data.ID.replace(/.$/, \"\").split(\",\");\r\n let listValor = data.VALORES.replace(/.$/, \"\").split(\",\");\r\n\r\n for (let _i = 0; _i < listId.length; _i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(listNombre[_i], \"NOMB_PROMOC_\" + _i));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(listId[_i], \"ID_PROMOC_\" + _i));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(listValor[_i], \"VAL_PROMOC_\" + _i));\r\n }\r\n }\r\n\r\n data = this.GenerarInfoPromocionesProcesadas(oPromocionProcesada, iCantidad, false)\r\n if (data) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.NOMBRES, \"NOMB_PROMOC_NOPRO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.ID, \"ID_PROMOC_NOPRO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.VALORES, \"VAL_PROMOC_NOPRO\"));\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Cargar a detalle informacion de niveles de precio\r\n * @param infNivelesPrcio Informacion de niveles de precio\r\n * @param oM3PEncItems Objeto donde se cargará la informacion\r\n */\r\n public LoadDetalleNivelesPrecio(infNivelesPrcio, oM3PEncItems: M3PEncItems) {\r\n if (infNivelesPrcio && infNivelesPrcio.NIVEL !== undefined) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(infNivelesPrcio.NIVEL, \"NIVELPRECIO\"));\r\n }\r\n }\r\n\r\n /**\r\n * Verificar con que nivel de precio va a trabajar\r\n * @param prodGRPSelected El producto ingresado\r\n * @param iCantidad La cantidad de productos que va a ingresar\r\n */\r\n public VerificarPrecioByNiveles(prodGRPSelected: TypeM3PrdGrp, iCantidad: number) {\r\n try {\r\n var oM3Presentaciones: M3Presentaciones;\r\n var jRespNiveles = {};\r\n if (prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones &&\r\n prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones.length > 0) {\r\n\r\n oM3Presentaciones = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones.find(x => iCantidad >= x.TOPE);\r\n if (oM3Presentaciones) {\r\n prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oM3Presentaciones.VALOR;\r\n jRespNiveles = { \"PRECIO\": oM3Presentaciones.VALOR, \"NIVEL\": oM3Presentaciones.NIVELPRS };\r\n }\r\n }\r\n return jRespNiveles;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n public VerificarPrecioByNivelesGeneral(oM3PrdGeneral: M3PrdGeneral, iCantidad: number) {\r\n try {\r\n var oM3Presentaciones: M3Presentaciones;\r\n var jRespNiveles = {};\r\n if (oM3PrdGeneral.LoM3PrdLista.M3Presentaciones && oM3PrdGeneral.LoM3PrdLista.M3Presentaciones.length > 0) {\r\n\r\n oM3Presentaciones = oM3PrdGeneral.LoM3PrdLista.M3Presentaciones.find(x => iCantidad >= x.TOPE);\r\n if (oM3Presentaciones) {\r\n oM3PrdGeneral.LoM3PrdLista.PRECIO = oM3Presentaciones.VALOR;\r\n jRespNiveles = { \"PRECIO\": oM3Presentaciones.VALOR, \"NIVEL\": oM3Presentaciones.NIVELPRS };\r\n }\r\n }\r\n return jRespNiveles;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Retorna los cupones generados de la lista de promoprocesadas\r\n * @param oPromocionProcesada \r\n */\r\n public get_list_cupones_from_promo(oPromocionProcesada: PromocionProcesada, cantidad: number): Array<M3PDetalleCupon> {\r\n var list_cupones = Array<M3PDetalleCupon>();\r\n\r\n if (oPromocionProcesada.ListPromocionesAsociadas) {\r\n for (let _i = 0; _i < oPromocionProcesada.ListPromocionesAsociadas.length; _i++) {\r\n var promo_asociada = oPromocionProcesada.ListPromocionesAsociadas[_i];\r\n\r\n if (promo_asociada.IdCupon) {\r\n let cupon = new M3PDetalleCupon();\r\n cupon.IdCupon = promo_asociada.IdCupon;\r\n cupon.Cantidad = cantidad;\r\n list_cupones.push(cupon);\r\n }\r\n }\r\n }\r\n\r\n return list_cupones;\r\n }\r\n\r\n //Asignar a promociones combianas desde lo que se encontró al encabezado item, del producto seleccionado\r\n public AsignarPromocionesCombinadas(oM3Procesos: M3Procesos, oPromocionProcesada: PromocionProcesada, oM3PEncItems: M3PEncItems) {\r\n if (oPromocionProcesada != null && oPromocionProcesada.ListPromocionesAsociadas != null) {\r\n oPromocionProcesada.ListPromocionesAsociadas.forEach(promoAso => {\r\n if (promoAso.PromocionCombinada != null) {\r\n //Se agrega promocion combinada a encabezado de items.\r\n oM3PEncItems.PromoCombinadas.push(promoAso.PromocionCombinada);\r\n ///Agregar promociones combinadas\r\n var oM3PDetalleItems: M3PDetalleItems;\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"PROMOCOMBI\")\r\n if (oM3PDetalleItems) {\r\n oM3PDetalleItems.Valor = JSON.stringify(oM3PEncItems.PromoCombinadas);\r\n }\r\n else {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(JSON.stringify(oM3PEncItems.PromoCombinadas), \"PROMOCOMBI\"));\r\n }\r\n this.AsignarPromocionesCombinadasAM3Proceso(oM3Procesos, promoAso.PromocionCombinada);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Asignar promociones combiandas a M3 Proceso, este, valida que no exista un promocion anterior.\r\n */\r\n public AsignarPromocionesCombinadasAM3Proceso(oM3Procesos: M3Procesos, oPromocionCombinada: PromocionCombinada) {\r\n if (!oM3Procesos.PromosCombinadas) {\r\n oM3Procesos.PromosCombinadas = new Array<PromocionCombinada>();\r\n }\r\n if (oM3Procesos.PromosCombinadas.find(x => x.IdPromocionCombinada == oPromocionCombinada.IdPromocionCombinada)) {\r\n /////// existe\r\n } else {\r\n ////// No Existe\r\n oM3Procesos.PromosCombinadas.push(oPromocionCombinada);\r\n }\r\n if (oM3Procesos.PromosCombinadas) {\r\n this.AddDinamicaProcesoCombinadas(oM3Procesos);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Adicionar a dinamicas proceso de combinadas\r\n * @param ioM3Proceso \r\n */\r\n public AddDinamicaProcesoCombinadas(ioM3Proceso: M3Procesos) {\r\n var oM3PDinamicasFinded: M3PDinamicas;\r\n oM3PDinamicasFinded = ioM3Proceso.lM3PDinamicas.find(x => x.Nombre == \"COMBINADA\");\r\n if (oM3PDinamicasFinded) {\r\n var arrPromo: Array<PromocionCombinada> = JSON.parse(oM3PDinamicasFinded.Valor);\r\n for (var i = 0; i < arrPromo.length; i++) {\r\n var oPromoCombi: PromocionCombinada = ioM3Proceso.PromosCombinadas.find(x => x.IdPromocionCombinada == arrPromo[i].IdPromocionCombinada);\r\n if (!oPromoCombi) {\r\n ioM3Proceso.PromosCombinadas.push(arrPromo[i]);\r\n }\r\n }\r\n oM3PDinamicasFinded.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n } else {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas.Nombre = \"COMBINADA\";\r\n oM3PDinamicas.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n\r\n ioM3Proceso.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n\r\n }\r\n\r\n //Calculo de promociones\r\n public CalcularPromociones(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oM3PItemsWEB: M3PItemsWEB): PromocionProcesada {\r\n var oPromocionProcesada = new PromocionProcesada();\r\n var lTipos = new Array<string>();\r\n lTipos.push(\"DIRECTA\");\r\n lTipos.push(\"COMBINADA\");\r\n lTipos.push(\"MONEDERO\");\r\n lTipos.push(\"MANUAL\");\r\n\r\n try {\r\n if (oM3ENCPROMO != null) {\r\n var arrPromo: Array<any>;\r\n var opromocionesService = new promocionesService(oDataUser, oM3PItemsWEB);\r\n\r\n arrPromo = opromocionesService.VerificarPromociones(oM3Procesos, prodGRPSelected, oM3Ubicacion, oM3ENCPROMO, lTipos);\r\n oPromocionProcesada = opromocionesService.ProcesarPromocion(arrPromo, prodGRPSelected, oM3ENCPROMO);\r\n\r\n return oPromocionProcesada;\r\n } else {\r\n throw new Error('No hay informacion de promociones');\r\n }\r\n\r\n } catch {\r\n oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotal = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n oPromocionProcesada.ListPromocionesAsociadas = null;\r\n return oPromocionProcesada;\r\n }\r\n }\r\n\r\n //Verificar obsequios y agregarlos.\r\n public VerificarObsequios(oPromocionProcesada: PromocionProcesada, cantidad: number, oM3PEncItems: M3PEncItems) {\r\n try {\r\n var arrPromocionesAsociadas: Array<PromocionesAsociadas>;\r\n this.obsequiosCantidad = 0;\r\n if (oPromocionProcesada.ListPromocionesAsociadas != null) {\r\n arrPromocionesAsociadas = oPromocionProcesada.ListPromocionesAsociadas.filter(promo => promo.ListObsSKU != null);\r\n\r\n if (arrPromocionesAsociadas != null && arrPromocionesAsociadas.length > 0) {\r\n arrPromocionesAsociadas.forEach(promo => {\r\n this.obsequioOPromo == -1\r\n if (!promo.ListObsSKU.length) promo.ListObsSKU = [promo.ListObsSKU];\r\n\r\n if (this.validaSiTieneOtraPromo(promo, oPromocionProcesada.ListPromocionesAsociadas)) {\r\n this.obsequioOPromo = promo.IDPromocion;\r\n }\r\n this.armarListaObsequiosSKU(promo, oM3PEncItems, cantidad);\r\n });\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n public turnOnPromos(oPromocionProcesada: PromocionProcesada) {\r\n try {\r\n var arrPromocionesAsociadas: Array<PromocionesAsociadas>;\r\n if (oPromocionProcesada.ListPromocionesAsociadas != null) {\r\n arrPromocionesAsociadas = oPromocionProcesada.ListPromocionesAsociadas.filter(promo => promo.lIdActivaPromo && promo.lIdActivaPromo.length > 0);\r\n\r\n if (arrPromocionesAsociadas && arrPromocionesAsociadas.length > 0) {\r\n arrPromocionesAsociadas.forEach(promo => {\r\n this.lIdActivaPromo = this.lIdActivaPromo.concat(promo.lIdActivaPromo);\r\n });\r\n this.removeDuplicates(this.lIdActivaPromo);\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n removeDuplicates(arr: Array<any>) {\r\n var unique = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n if (unique.indexOf(arr[i]) === -1) {\r\n unique.push(arr[i]);\r\n }\r\n }\r\n }\r\n\r\n armarListaObsequiosSKU(promo: PromocionesAsociadas, oM3PEncItems: M3PEncItems, cantidad: number) {\r\n let cantidadReal = Math.floor(cantidad / promo.CantidadObseq);\r\n if (promo.ReglaObseq == \"EXC\") {\r\n this.asignarIdEncPadreObsequio(promo, oM3PEncItems);\r\n this.obsequiosExc = true;\r\n this.obsequiosCantidad = cantidadReal;\r\n }\r\n else {\r\n this.asignarIdEncPadreObsequio(promo, oM3PEncItems);\r\n promo.ListObsSKU.forEach(element => {\r\n element.Cantidad = cantidadReal * +element.Cantidad;\r\n });\r\n this.obsequiosExc = false;\r\n }\r\n this.oListaObsequios = promo.ListObsSKU;\r\n }\r\n\r\n asignarIdEncPadreObsequio(promo: PromocionesAsociadas, oM3PEncItems: M3PEncItems) {\r\n if (promo.ListObsSKU.length > 0) {\r\n promo.ListObsSKU.forEach(element => {\r\n element.idEncPadre = oM3PEncItems.ID;\r\n });\r\n }\r\n }\r\n\r\n armarListaObsequiosCombiSKU(combi, oM3PEncItems: M3PEncItems, cantidad: number) {\r\n if (combi.Accion.ReglaObseq == \"EXC\") {\r\n this.asignarIdEncPadreObsequioCombinado(combi.Accion.OBSEQUIOS, oM3PEncItems);\r\n this.obsequiosExc = true;\r\n this.obsequiosCantidad = cantidad;\r\n }\r\n else {\r\n this.asignarIdEncPadreObsequioCombinado(combi.Accion.OBSEQUIOS, oM3PEncItems);\r\n combi.Accion.OBSEQUIOS.forEach(element => {\r\n element.Cantidad = cantidad * +element.Cantidad;\r\n });\r\n this.obsequiosExc = false;\r\n }\r\n this.oListaObsequios = combi.Accion.OBSEQUIOS;\r\n }\r\n\r\n asignarIdEncPadreObsequioCombinado(obsequios, oM3PEncItems: M3PEncItems) {\r\n if (obsequios.length > 0) {\r\n obsequios.forEach(element => {\r\n element.idEncPadre = oM3PEncItems.ID;\r\n });\r\n }\r\n }\r\n\r\n //Retorna true si hay otra promo aplicada donde ni la promo de obsequio o la aplicada son fijas y una de las dos es EXC\r\n validaSiTieneOtraPromo(promoObsequio: PromocionesAsociadas, arrPromocionesAsociadas: Array<PromocionesAsociadas>): boolean {\r\n if (promoObsequio.Regla != \"ACM\") {\r\n let oPromosNoObsequios = arrPromocionesAsociadas.filter(x => x.IDPromocion != promoObsequio.IDPromocion);\r\n for (const promo of oPromosNoObsequios) {\r\n if (promo.Regla != \"ACM\") {\r\n if (promo.Aplicada && (promo.Regla == \"EXC\" || promoObsequio.Regla == \"EXC\")) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n //procesamiento de obsequios\r\n public async ProcesarObsequios(oDataUser: any,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean, oM3Procesos: M3Procesos) {\r\n try {\r\n this.obsequiosExc = false;\r\n this.obsequioOPromo = -1;\r\n if (this.oListaObsequios != null && this.oListaObsequios.length > 0) {\r\n for (let i = 0; i < this.oListaObsequios.length; i++) {\r\n if (this.oListaObsequios[i].SKU) {\r\n //JAGM 20190810 valida, cuantos productos se agrega en el obsequio.\r\n if (this.oListaObsequios[i].Cantidad) {\r\n oM3PItemsWEB.dCantidad = this.oListaObsequios[i].Cantidad;\r\n }\r\n //JAGM 20191112 se agreg funcionalidad de obsequios\r\n oM3PItemsWEB.BisObsequio = true;\r\n oM3PItemsWEB.IDEncPadre = this.oListaObsequios[i].idEncPadre;\r\n oM3PItemsWEB.TipoAgrupacion = \"OBSQ\";\r\n await this.GuardarPromocion(this.oListaObsequios[i], oDataUser, oM3PItemsWEB, oM3Ubicacion, EnLinea, oM3Procesos);\r\n }\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n this.oListaObsequios = null;\r\n }\r\n\r\n\r\n //Guardar promocion segun un sku\r\n //1. Buscar el producto segun el sku\r\n //2. Agregar el producto a m3procesos\r\n //3. Agregar al carrito de compras.\r\n public async GuardarPromocion(promo, oDataUser: any,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean, oM3Procesos: M3Procesos) {\r\n // 20181121 var sKeyCarrito;\r\n // 20181121 var oM3Procesos;\r\n var procesoPromo;\r\n //Obtener key de carrito de compras\r\n // 20181121 sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n\r\n // 20181121 oM3Procesos = await oM3Data.GetDataPouchBD(sKeyCarrito);\r\n procesoPromo = await this.AdicionarPromocionAProceso(promo, oM3Procesos, oM3PItemsWEB, oM3Ubicacion, EnLinea, oDataUser);\r\n //Guardar en pouch DB\r\n // 20181121 await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, procesoPromo);\r\n }\r\n\r\n //Obtener los producto segun su SKU, sacando la informacion desde pouchDB.\r\n public async AdicionarPromocionAProceso(promo, oM3Procesos: M3Procesos, oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean, oDataUser: any) {\r\n var oProducto: TypeM3PrdGrp = null;\r\n oProducto = await this.GetProductoBySKU(promo.SKU, EnLinea, oM3Procesos, oDataUser);\r\n console.debug(oProducto);\r\n if (oProducto != null) {\r\n //Ya no se deja precio cero sino que como es obsequio simula un descuento del 100% \r\n //Producto.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = 0;\r\n //Agregar a m3procesos el obsequio.\r\n //oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, oProducto, oM3PItemsWEB, oM3Ubicacion, null, null);\r\n\r\n oM3Procesos = this.addtocart(oM3PItemsWEB, oProducto, null, null, oDataUser, this.gsIdkatios, oM3Ubicacion, null, oM3Procesos, null, 100);//*Se manda valor de descuennto 100 %\r\n }\r\n return oM3Procesos;\r\n }\r\n\r\n //Obtener producto segun el SKU\r\n public async GetProductoBySKU(sSKU, EnLinea: boolean, oM3Procesos: M3Procesos, oDataUser: any, disponibleM3Enc = null) {\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var productos;\r\n var oProducto: TypeM3PrdGrp = null;\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(this.gsIdkatios);\r\n\r\n //oServiceListaPrecio.GenerateDataValidacion(oDataUser, oM3Procesos.TMIdProceso);\r\n if (!EnLinea && !oDataUser.UsuarioSistema.FechaPrecio) {\r\n var sIDProductos = this.gsIdkatios + \"?PRD\";\r\n productos = await this.oM3CouchMaestro.get(sIDProductos);\r\n oProducto = oServiceM3Maestro.GetM3PrdGrpFromList(productos.M3ListProductos.M3GRP, sSKU);\r\n } else {\r\n oProducto = await oServiceM3Maestro.M3GetProductoBySKUAsync(this.GoPostServiceM3, this.gsIdkatios, sSKU, oDataUser, oM3Procesos.Ubic1.toString());\r\n }\r\n if (oProducto.LoM3PrdGeneral[0].DISPONIBLE <= 0 && disponibleM3Enc) {\r\n oProducto.LoM3PrdGeneral[0].DISPONIBLE = disponibleM3Enc;\r\n }\r\n\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, this.GoPostServiceM3);\r\n //oServiceListaPrecio.ValidarListaPrecios(oProducto, this.GoPostServiceM3, this.gsIdkatios);\r\n return oProducto;\r\n }\r\n\r\n //Calcular precio sin impuestos. La forma es calcular todo el valor del impuesto. EJ: 120.09 / 1.16. Si el valor del impuesto es: 16%\r\n public CalculatePrecioBase(CTBLDIMPPRD: string, dValorNeto: number) {\r\n //var dValorImpuesto: number = 1;\r\n var dValorBase: number = dValorNeto;\r\n try {\r\n var oxmlToJsonTF = new xmlToJsonTF();\r\n var jImpuestos;\r\n if (CTBLDIMPPRD != \"\") {\r\n jImpuestos = oxmlToJsonTF.convertXmlToJson(CTBLDIMPPRD);\r\n jImpuestos.IMPUESTOS.IMPUESTO.forEach(imp => {\r\n //JAGM 20190626 Cambio de calculo de base de los impuestos.\r\n if (imp.$.Metodologia == \"PORCENTAJE\") {\r\n dValorBase = (+dValorBase) / (1 + +imp.$.Valor);\r\n }\r\n else {\r\n dValorBase = (+dValorBase) - (+imp.$.Valor);\r\n }\r\n });\r\n }\r\n //console.log(oM3PEncItems.M3Impuestos);\r\n } catch {\r\n console.log(\"Catch\")\r\n }\r\n\r\n //return ((+dValorNeto) / (+dValorImpuesto));\r\n return dValorBase;\r\n }\r\n\r\n //Cargar información de impuestos, desde el producto general\r\n public LoadM3PImpuestosFromPrdGrl(CTBLDIMPPRD: string, oM3PEncItems: M3PEncItems,\r\n dValorNeto: number, cantidad: number, valorTotalProductoUnit: number) {\r\n try {\r\n var oxmlToJsonTF = new xmlToJsonTF();\r\n var oM3PImpuestos: M3PImpuestos;\r\n let valorBaseTotal = this.oMathTF.round(dValorNeto, 2);\r\n let valorNetoTotal = valorBaseTotal;\r\n let valorTotalProductoTotal = +bigDecimal.multiply(valorTotalProductoUnit, cantidad);\r\n var jImpuestos;\r\n var dTotalImpuesto: number = 0;\r\n if (CTBLDIMPPRD != \"\") {\r\n jImpuestos = oxmlToJsonTF.convertXmlToJson(CTBLDIMPPRD);\r\n\r\n //JAGM 20190626 Cambio en orden de los impuestos.\r\n for (var i = jImpuestos.IMPUESTOS.IMPUESTO.length - 1; i >= 0; i--) {\r\n let valorRealImp = 0;\r\n var imp = jImpuestos.IMPUESTOS.IMPUESTO[i];\r\n oM3PImpuestos = new M3PImpuestos();\r\n oM3PImpuestos.CodImpuesto = imp.$.CodImp;\r\n oM3PImpuestos.Porcentaje = imp.$.Valor;\r\n if (imp.$.Metodologia == \"PORCENTAJE\") {//PORCENTAJE\r\n valorRealImp = +bigDecimal.multiply(imp.$.Valor, valorNetoTotal);\r\n oM3PImpuestos.Valor = this.oMathTF.round(valorRealImp, 2);\r\n if (oM3PImpuestos.Valor < valorRealImp) {\r\n oM3PImpuestos.LimiteOpuesto = +Math.ceil(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n }\r\n else {\r\n oM3PImpuestos.LimiteOpuesto = +Math.floor(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n }\r\n }\r\n else {//FIJO\r\n valorRealImp = +imp.$.Valor;\r\n oM3PImpuestos.Valor = this.oMathTF.round(valorRealImp, 2);\r\n // if (oM3PImpuestos.Valor < valorRealImp) {\r\n // oM3PImpuestos.LimiteOpuesto = +Math.ceil(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n // }\r\n // else {\r\n // oM3PImpuestos.LimiteOpuesto = +Math.floor(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n // }\r\n }\r\n\r\n\r\n //JAGM 20180912 Nuevo concepto de base\r\n oM3PImpuestos.Base = valorNetoTotal;\r\n dTotalImpuesto = (+dTotalImpuesto) + (+oM3PImpuestos.Valor);\r\n\r\n //JAGM 20180912 Suma de Valor Neto\r\n valorNetoTotal = (+valorNetoTotal) + (+oM3PImpuestos.Valor);\r\n\r\n ///Solo adicione a impuestos, cuando es total impuestos\r\n var impExiste: M3PImpuestos;\r\n impExiste = oM3PEncItems.M3PImpuestos.find(imp => imp.CodImpuesto == oM3PImpuestos.CodImpuesto);\r\n if (impExiste) {\r\n //Borra en item\r\n oM3PEncItems.M3PImpuestos = oM3PEncItems.M3PImpuestos.filter(imp => imp.CodImpuesto != oM3PImpuestos.CodImpuesto);\r\n }\r\n oM3PEncItems.M3PImpuestos.push(oM3PImpuestos);\r\n }\r\n // jImpuestos.IMPUESTOS.IMPUESTO.forEach(imp => {\r\n\r\n // });\r\n }\r\n\r\n //JAGM 20190726 se agrega validacion, ya que estaba quedando la resta, con valores como: 0.00000000001 = 1.1564564564e845 EJ\r\n if (dTotalImpuesto != 0) {\r\n //Diferencia redondeada a dos decimales\r\n dTotalImpuesto = this.oMathTF.round(dTotalImpuesto, 2);\r\n let diferencia = this.oMathTF.round((valorTotalProductoTotal - valorBaseTotal - dTotalImpuesto), 2);\r\n if (diferencia != 0) {\r\n this.ajustadorDeImpuestos(oM3PEncItems, diferencia);\r\n }\r\n\r\n // \"TOTALIMPUESTOS\"\r\n return this.oMathTF.round((valorTotalProductoTotal - valorBaseTotal), 2);\r\n } else {\r\n return 0;\r\n }\r\n\r\n } catch {\r\n console.log(\"Catch\")\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * FS 20190725\r\n * Corrige el valor que tomo el impuesto despues de haberse redondeado\r\n * Si al recorrer todos los impuestos la diferencia no se zanja, NI MODOS el error está en otra parte\r\n * Se crea esta función para resolver los errores de timbrado de factura electrónica\r\n * @param oM3PEncItems \r\n * @param diferencia Diferencia que se debe saldar para conseguir el valor total de impuestos requerido\r\n */\r\n ajustadorDeImpuestos(oM3PEncItems: M3PEncItems, diferencia: number) {\r\n for (let _i = 0; _i < oM3PEncItems.M3PImpuestos.length; _i++) {\r\n const impuesto = oM3PEncItems.M3PImpuestos[_i];\r\n\r\n //Si la diferencia es positiva quiere decir que la suma de los impuestos es menor a la real\r\n if (diferencia > 0) {\r\n //Si el impuesto se redondeo hacia abajo quiere decir que se pudo redondear hacia arriba\r\n //Entonces lo \"redondea hacia arriba\" y resta una centesima a la diferencia\r\n if (impuesto.Valor < impuesto.LimiteOpuesto) {\r\n impuesto.Valor = impuesto.LimiteOpuesto;\r\n impuesto.Base = this.oMathTF.round(impuesto.Valor / impuesto.Porcentaje, 2);\r\n diferencia = diferencia - 0.01;\r\n }\r\n //Si Valor>ValorReal quiere decir que redondeo hacia arriba y no debe modificar ese valor\r\n }\r\n //Si la diferencia es negativa quiere decir que la suma de los impuestos es mayor a la real\r\n else {\r\n //Si el impuesto se redondeo hacia arriba quiere decir que se pudo redondear hacia abajo\r\n //Entonces lo \"redondea hacia abajo\" y suma una centesima a la diferencia\r\n if (impuesto.Valor > impuesto.LimiteOpuesto) {\r\n impuesto.Valor = impuesto.LimiteOpuesto;\r\n impuesto.Base = this.oMathTF.round(impuesto.Valor / impuesto.Porcentaje, 2);\r\n diferencia = diferencia + 0.01;\r\n }\r\n //Si Valor<ValorReal quiere decir que redondeo hacia abajo y no debe modificar ese valor\r\n }\r\n\r\n //Si ya se saldo la diferencia rompe el ciclo dando por concluido el ajuste\r\n if (diferencia == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n //Load por unidad detalle del m3proceso items.\r\n public LoadM3PDetalle(sValor: string, sConcepto: string): M3PDetalleItems {\r\n var oM3PDetalleItems = new M3PDetalleItems();\r\n oM3PDetalleItems.NombreConcepto = sConcepto;\r\n oM3PDetalleItems.Valor = sValor;\r\n return oM3PDetalleItems;\r\n }\r\n\r\n\r\n //Generar promocion combinada\r\n public async GenerarPromoCombinada(oM3Procesos: M3Procesos, oDataUser: any) {\r\n if (!oM3Procesos.lM3PDinamicas || (oM3Procesos.lM3PDinamicas && !oM3Procesos.lM3PDinamicas.find(x => x.Nombre == \"PUENTE_DIARIO\"))) {\r\n var opromocionesService = new promocionesService(oDataUser, null);\r\n oM3Procesos = opromocionesService.ProcesarCombinada(oM3Procesos);\r\n this.RecalcularPrecios(oM3Procesos);\r\n }\r\n }\r\n\r\n\r\n //Compare M3Procesos. (First: @Param: ilM3ProcesosSQL VS Second: Get From CouchDB/PouchDB)\r\n public async CompareM3Proceso(sIDKatios: string, oM3Data: M3Data, oDataUser: any, ilM3ProcesosSQL: M3Procesos) {\r\n var oResp;\r\n try {\r\n //Get data, from PouchDB/CouchDB\r\n var PropertyCompare = [\"ValorNeto\", \"Valor\"];\r\n var sKeyCarrito: string;\r\n var oM3ProcesosCOUCH: M3Procesos;\r\n var bResp: boolean = true;\r\n\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n //Get data, from PouchDB/CouchDB\r\n oM3ProcesosCOUCH = await oM3Data.GetDataPouchBD(sKeyCarrito);\r\n\r\n //Start Compare\r\n for (var i = 0; i < PropertyCompare.length; i++) {\r\n if (ilM3ProcesosSQL[PropertyCompare[i]] != oM3ProcesosCOUCH[PropertyCompare[i]]) {\r\n bResp = false;\r\n break;\r\n }\r\n }\r\n\r\n if (bResp) {\r\n //Compare: ID, IdProducto y CANTIDAD\r\n for (var j = 0; j < ilM3ProcesosSQL.M3ENC.length; j++) {\r\n if (oM3ProcesosCOUCH.M3ENC[j].ID != ilM3ProcesosSQL.M3ENC[j].ID ||\r\n oM3ProcesosCOUCH.M3ENC[j].IdProducto != ilM3ProcesosSQL.M3ENC[j].IdProducto ||\r\n oM3ProcesosCOUCH.M3ENC[j].M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor != ilM3ProcesosSQL.M3ENC[j].M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor) {\r\n bResp = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n oResp = { \"bResp\": bResp, \"M3Procesos\": oM3ProcesosCOUCH };\r\n return oResp;\r\n } catch (ex) {\r\n console.log(\"Error CompareM3Proceso\");\r\n console.log(ex);\r\n oResp = { \"bResp\": true, \"M3Procesos\": null };\r\n return oResp;\r\n }\r\n\r\n }\r\n\r\n\r\n //Adicionar comercial al proceso, lo adiciona al arreglo de dinamicos asociado al proceso.\r\n public AddComercialToM3Proceso(oM3Procesos: M3Procesos, TdocComercial: string, NdocComercial: string) {\r\n oM3Procesos.lM3PDinamicas.push(this.CreateTuplaDinamica(\"TCOMERCIAL\", TdocComercial));\r\n oM3Procesos.lM3PDinamicas.push(this.CreateTuplaDinamica(\"NCOMERCIAL\", NdocComercial));\r\n }\r\n\r\n //Creacion y retorno de tupla de dinamicos, atados a proceso m3.\r\n public CreateTuplaDinamica(nombre, valor) {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas.Nombre = nombre;\r\n oM3PDinamicas.Valor = valor;\r\n\r\n return oM3PDinamicas;\r\n }\r\n\r\n\r\n ///Actualiza la cantidad de \r\n public setCantidadALLYUPDCouch(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, funcionOK: Function, funcionError: Function, iCantidad) {\r\n\r\n if (iCantidad == 0 && oM3Procesos.IDDiario === undefined) {\r\n ///Aun no esta registrado el proceso como tal, se puede borrar de raiz\r\n oM3Procesos.M3ENC = new Array<M3PEncItems>();\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, \"WEB\", funcionOK, funcionError);\r\n } else {\r\n if (iCantidad == 0) {\r\n\r\n this.DeleteM3Proceso(oM3Data, oDataUser, sIDKatios).then(x => {\r\n this.GetCarritoComprasPouchDB(oM3Data, oDataUser, sIDKatios).then(res => {\r\n oM3Procesos = new M3Procesos();\r\n funcionOK(oM3Procesos);\r\n });\r\n });\r\n } else {\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor = iCantidad;\r\n });\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, \"WEB\", funcionOK, funcionError);\r\n }\r\n }\r\n }\r\n\r\n ///Se cantidad de un producto especifico\r\n public setCantidadYUPDCouch(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, funcionOK: Function,\r\n funcionError: Function, idProducto, Lote, iCantidad, tipoUbicacion, IDEnc,\r\n m3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, forzarBorrad: boolean = false) {\r\n\r\n if ((iCantidad == 0 && oM3Procesos.IDDiario === undefined && tipoUbicacion == \"WEB\") || forzarBorrad) {\r\n ///Aun no esta registrado el proceso como tal, se puede borrar de raiz\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(prod => !(prod.IdProducto == idProducto && prod.ID == IDEnc) && !(prod.IdEncPadre == IDEnc));\r\n\r\n let loM3PItemsWEB = new M3PItemsWEB();\r\n loM3PItemsWEB.dCantidad = 0;\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError, m3Ubicacion);\r\n } else {\r\n // JAGM 20191021, no hacer lógica de promociones y varios, cuándo se borra el item.\r\n if (iCantidad == 0) {\r\n oM3Procesos.M3ENC.find(enc => enc.IdProducto == idProducto && enc.Lote == Lote && enc.ID == IDEnc).M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor = iCantidad;\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError, m3Ubicacion);\r\n } else {\r\n this.setCantidadV2(oM3Procesos, idProducto, Lote, iCantidad, IDEnc, oDataUser, sIDKatios, m3Ubicacion, oM3ENCPROMO).then(resp => {\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError, m3Ubicacion, resp.M3PItemsWEB);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n //this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError);\r\n }\r\n\r\n //Cambiar cantidad de m3proceso\r\n //JAGM 20191018 Se agrega nueva funcionalidad a la cantidad: \r\n //1.Se borra el producto de la lista del proceso\r\n //2. Se agrega de nuevo el producto con la nueva cantidad.\r\n public async setCantidadV2(oM3Procesos: M3Procesos, idProducto, Lote, iCantidad, IDEnc, oDataUser: any\r\n , sIDKatios: string, m3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>) {\r\n var oProducto: TypeM3PrdGrp = null;\r\n var oM3PItemsWEB = new M3PItemsWEB();\r\n oM3PItemsWEB.dCantidad = iCantidad;\r\n //JAGM 20191114, Agregar imagen\r\n var oM3PEncItems = oM3Procesos.M3ENC.find(enc => enc.IdProducto == idProducto && enc.Lote == Lote && enc.ID == IDEnc);\r\n if (oM3PEncItems) {\r\n oM3PItemsWEB.PathImagen = oM3PEncItems.PathImage;\r\n }\r\n\r\n\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(enc => !(enc.IdProducto == idProducto && enc.Lote == Lote && (enc.ID == IDEnc || enc.IdEncPadre == IDEnc)));\r\n\r\n oProducto = await this.GetProductoBySKU(idProducto, true, oM3Procesos, oDataUser, oM3PEncItems.DISPONIBLE);\r\n oM3PItemsWEB = this.LoadAdicionales(oM3PItemsWEB, oProducto);\r\n oM3Procesos = this.addtocart(oM3PItemsWEB, oProducto, null, null, oDataUser, sIDKatios, m3Ubicacion, oM3ENCPROMO, oM3Procesos);\r\n return { \"M3Proceso\": oM3Procesos, \"M3PItemsWEB\": oM3PItemsWEB };\r\n }\r\n\r\n get_M3ENC_by_idprd_lote(oM3Procesos: M3Procesos, idProducto, Lote): M3PEncItems {\r\n return oM3Procesos.M3ENC.find(enc => enc.IdProducto == idProducto && enc.Lote == Lote)\r\n }\r\n\r\n //Obtener cantidad de un encabezado, producto especifico.\r\n public getCantidad(oM3Procesos: M3Procesos, oProducto: M3PrdGeneral) {\r\n return oM3Procesos.M3ENC.find(enc => enc.IdProducto == oProducto.SKU && enc.Lote == oProducto.LOTE).M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n }\r\n\r\n public getCantidadTotal(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos !== undefined && oM3Procesos.M3ENC !== undefined) {\r\n oM3Procesos.M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (+cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor), 0)\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n //////REGION DE RECEPCION\r\n //Se agrega atributo de Current cantidad de recepcion\r\n public MergeRecepYEnc(oM3Procesos: M3Procesos, idRecepcion: number) {\r\n //oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDPRD, \"CTBLDPRD\"));\r\n if (oM3Procesos.M3PRecepcion.length > 0) {\r\n oM3Procesos.M3PRecepcion.filter(recep => recep.IdRecepcion == idRecepcion).forEach(rec => {\r\n oM3Procesos.M3ENC.find(enc => enc.ID == rec.IdEnc).M3DET.push(this.LoadM3PDetalle(rec.Cantidad.toString(), \"CURCREC\"));//CURRENT CANTIDAD RECEPCION\r\n });\r\n }\r\n }\r\n\r\n //Dejar los de talles de la variable: CURCREC en=0, Esto para flujos, donde agrega info procesa y ahà mismo agrega más.\r\n public RemoveCurCRec(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos !== undefined && oM3Procesos != null && oM3Procesos.M3ENC !== undefined && oM3Procesos.M3ENC != null)\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n var oDetalle: M3PDetalleItems;\r\n oDetalle = enc.M3DET.find(det => det.NombreConcepto == \"CURCREC\");\r\n if (oDetalle !== undefined && oDetalle != null) {\r\n oDetalle.Valor = \"0\";\r\n }\r\n })\r\n\r\n }\r\n\r\n //////FIN REGION DE RECEPCION\r\n\r\n ///////REGION ENTREGA\r\n //Se agrega atributo de Current cantidad de envio\r\n public MergeEntpYEnc(oM3Procesos: M3Procesos) {\r\n //oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDPRD, \"CTBLDPRD\"));\r\n if (oM3Procesos.M3PEnvios.length > 0) {\r\n oM3Procesos.M3PEnvios.forEach(env => {\r\n var lEnc: Array<M3PEncItems>;\r\n lEnc = oM3Procesos.M3ENC.filter(enc => enc.IdEnvio == env.IdEnvio);\r\n\r\n if (lEnc !== undefined && lEnc != null) {\r\n lEnc.forEach(enc => {\r\n enc.M3DET.push(this.LoadM3PDetalle(enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor, \"CURCENT\"));//CURRENT CANTIDAD RECEPCION\r\n });\r\n\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n //Dejar los de talles de la variable: CURCREC en=0, Esto para flujos, donde agrega info procesa y ahà mismo agrega más.\r\n public RemoveCurCEnt(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos !== undefined && oM3Procesos != null && oM3Procesos.M3ENC !== undefined && oM3Procesos.M3ENC != null)\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n var oDetalle: M3PDetalleItems;\r\n oDetalle = enc.M3DET.find(det => det.NombreConcepto == \"CURCENT\");\r\n if (oDetalle !== undefined && oDetalle != null) {\r\n oDetalle.Valor = \"0\";\r\n }\r\n })\r\n\r\n }\r\n ///////FIN REGION ENTREGA\r\n\r\n\r\n /**\r\n * Promociones que se procesan despues de agregar al carrito\r\n * @param oM3Procesos \r\n * @param oDataUser \r\n * @param oM3PItemsWEB \r\n * @param oM3Ubicacion \r\n * @param EnLinea \r\n */\r\n public async ProcPromoAfterAddToCart(oM3Procesos: M3Procesos, oDataUser: any,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean) {\r\n\r\n await this.ProcesarObsequios(oDataUser, oM3PItemsWEB, oM3Ubicacion, EnLinea, oM3Procesos);\r\n }\r\n\r\n /**\r\n * Procesar promociones despues de finalizar el registro\r\n * @param oM3Procesos \r\n */\r\n public ProcPromoAfterFinalizar(oM3Procesos: M3Procesos, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any) {\r\n\r\n this.GenerarPromoCombinada(oM3Procesos, oDataUser);\r\n this.PromoAfterProceso(oM3Procesos, oM3Ubicacion, oM3ENCPROMO, oDataUser);\r\n }\r\n\r\n public PromoAfterProceso(oM3Procesos: M3Procesos, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any) {\r\n try {\r\n var opromocionesService = new promocionesService(oDataUser, null);\r\n var lTiposPromo = new Array<String>();\r\n var arrPromo: Array<any>;\r\n var oPromocionProcesada = new PromocionProcesada();\r\n lTiposPromo.push(\"AFTER\");\r\n arrPromo = opromocionesService.VerificarPromociones(oM3Procesos, null, oM3Ubicacion, oM3ENCPROMO, lTiposPromo);\r\n oPromocionProcesada = opromocionesService.ProcesarPromoAfter(arrPromo, oM3Procesos, oM3ENCPROMO);\r\n\r\n if (oPromocionProcesada != null) {\r\n oM3Procesos.ValorNeto = oPromocionProcesada.PrecioTotal;\r\n this.AddInfoPromocionesADinamicas(oM3Procesos, oPromocionProcesada);\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Agregar informacion de promociones a informacion dinamica del proceso\r\n * @param oM3Procesos \r\n * @param oPromocionProcesada \r\n */\r\n public AddInfoPromocionesADinamicas(oM3Procesos: M3Procesos, oPromocionProcesada: PromocionProcesada) {\r\n var data = this.GenerarInfoPromocionesProcesadas(oPromocionProcesada, 0);\r\n if (data != null) {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas = this.CreateTuplaDinamica(\"VAL_PROMOC\", oPromocionProcesada.PrecioTotalPromocion.toString())\r\n oM3Procesos.lM3PDinamicas.push(oM3PDinamicas);\r\n\r\n oM3PDinamicas = this.CreateTuplaDinamica(\"NOMB_PROMOC\", data.NOMBRES)\r\n oM3Procesos.lM3PDinamicas.push(oM3PDinamicas);\r\n\r\n oM3PDinamicas = this.CreateTuplaDinamica(\"ID_PROMOC\", data.ID)\r\n oM3Procesos.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n\r\n\r\n }\r\n\r\n ///Obtiene el proceso asosiado a un idprestamos\r\n async get_m3_proceso_by_id_prestamo_async(PostServiceM3: PostServiceM3, id_katios: string, id_prestamo: string) {\r\n var resp = await PostServiceM3.getM3('M3/getM3ProcesoByIdPrestamo/' + id_katios + '/' + id_prestamo).toPromise();\r\n return resp;\r\n }\r\n\r\n public async GetConceptoM3SaldosItemUb(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any) {\r\n var resp;\r\n\r\n try {\r\n resp = await PostServiceM3.getWithBodyM3('M3/GetConceptoM3SaldosItemUb/' + sIDKatios, jData).toPromise();\r\n return resp;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Agrega o modifica la cantidad de un objeto M3OtClasificaciones dentro dela lista de un Proceso\r\n * @param product \r\n * @param cantidad \r\n * @param ioM3Procesos \r\n * @param funcionOK \r\n */\r\n public addProductoToOtrasClas(product: TypeM3PrdGrp, cantidad: number, ioM3Procesos: M3Procesos, funcionOK: Function) {\r\n var oM3Procesos: M3Procesos = ioM3Procesos;\r\n var oM3OtClasificaciones: M3OtClasificaciones;\r\n var productUnitSelected: M3PrdGeneral;\r\n productUnitSelected = product.LoM3PrdGeneral[0];\r\n\r\n let productoExiste = this.validarExistaOtraClasif(oM3Procesos.M3OtClasificaciones, product);\r\n if (productoExiste) {\r\n productoExiste.Cantidad = productoExiste.Cantidad + cantidad;\r\n productoExiste.Valor = +bigDecimal.multiply(productUnitSelected.LoM3PrdLista.PRECIO, productoExiste.Cantidad);\r\n productoExiste.Orden = this.GetMaxAtributoFromLista(oM3Procesos.M3OtClasificaciones, \"Orden\") + 1;\r\n } else {\r\n oM3OtClasificaciones = new M3OtClasificaciones();\r\n oM3OtClasificaciones.Cantidad = cantidad;\r\n oM3OtClasificaciones.IdProducto = productUnitSelected.SKU;\r\n oM3OtClasificaciones.Nombre = productUnitSelected.NOMBRE1;\r\n oM3OtClasificaciones.Valor = +bigDecimal.multiply(productUnitSelected.LoM3PrdLista.PRECIO, cantidad);\r\n oM3OtClasificaciones.ID = this.GetMaxAtributoFromLista(oM3Procesos.M3OtClasificaciones, \"ID\") + 1;\r\n oM3OtClasificaciones.Orden = this.GetMaxAtributoFromLista(oM3Procesos.M3OtClasificaciones, \"Orden\") + 1;\r\n\r\n oM3Procesos.M3OtClasificaciones.push(oM3OtClasificaciones);\r\n }\r\n ioM3Procesos = this.recalcularValOtraClasiM3Procesos(ioM3Procesos);\r\n funcionOK(oM3Procesos);\r\n }\r\n\r\n /**\r\n * Elimina un objeto M3OtClasificaciones poniendo su valor y cantidad en cero\r\n * @param oM3OtClasificaciones \r\n * @param ioM3Procesos \r\n */\r\n deleteProductoFromOtrasClas(oM3OtClasificaciones: M3OtClasificaciones, ioM3Procesos: M3Procesos): M3Procesos {\r\n let productoActual = ioM3Procesos.M3OtClasificaciones.find(x => x.IdProducto == oM3OtClasificaciones.IdProducto);\r\n if (productoActual) {\r\n productoActual.Cantidad = 0;\r\n productoActual.Valor = 0;\r\n }\r\n ioM3Procesos = this.recalcularValOtraClasiM3Procesos(ioM3Procesos);\r\n return ioM3Procesos;\r\n }\r\n\r\n /**\r\n * Recalcula el valor de M3Procesos.ValOtraClasi a partir de la sumatoria de los objetos dentro del arreglo M3Procesos.M3OtClasificaciones\r\n * @param oM3Procesos \r\n */\r\n recalcularValOtraClasiM3Procesos(oM3Procesos: M3Procesos) {\r\n oM3Procesos.ValOtraClasi = oM3Procesos.M3OtClasificaciones.reduce(function (suma, oM3OtClasificaciones) {\r\n return suma + oM3OtClasificaciones.Valor;\r\n }, 0)\r\n return oM3Procesos;\r\n }\r\n\r\n /**\r\n * Valida la existencia de un producto dentro de un la lista de M3OtClasificaciones\r\n * @param listM3OtClasificaciones \r\n * @param product \r\n */\r\n validarExistaOtraClasif(listM3OtClasificaciones: Array<M3OtClasificaciones>, product: TypeM3PrdGrp) {\r\n let productoExiste = listM3OtClasificaciones.find(x => x.IdProducto == product.LoM3PrdGeneral[0].SKU);\r\n return productoExiste;\r\n }\r\n\r\n /**\r\n * Limpia los detalles y los impuestos de un producto dado en un proceso de devolucion\r\n * @param productoBorrado \r\n * @param procesoDevolucion \r\n */\r\n deletePrdDevolucion(productoBorrado, procesoDevolucion: M3Procesos) {\r\n let producto = procesoDevolucion.M3ENC.find(x => x.IdProducto == productoBorrado.IdProducto);\r\n if (producto) {\r\n producto.M3DET.forEach(det => {\r\n if (!isNaN(+det.Valor)) {\r\n det.Valor = \"0\";\r\n }\r\n });\r\n\r\n producto.M3PImpuestos.forEach(imp => {\r\n imp.Valor = 0;\r\n imp.Base = 0;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Ajusta los Valores en caso de encontrar diferencias para poder generar FE\r\n * @param oM3Procesos \r\n */\r\n ajustadorValoresCFDIFront(oM3Procesos: M3Procesos): M3Procesos {\r\n let diferencia = 0;\r\n let totalDescuentos = this.getValorTotalDescuentos(oM3Procesos);\r\n let totalImporteImpuestos = this.getValorTotalImporteImpuestos(oM3Procesos);\r\n\r\n diferencia = this.oMathTF.round(oM3Procesos.ValorNeto - (oM3Procesos.Valor + totalImporteImpuestos - totalDescuentos), 3);\r\n if (diferencia != 0) {\r\n if (totalImporteImpuestos > 0) {\r\n this.ajustadorImpuestosCFDI(diferencia, oM3Procesos);\r\n }\r\n else {\r\n this.ajustadorDescuentosCFDI(diferencia, oM3Procesos);\r\n }\r\n }\r\n\r\n return oM3Procesos;\r\n }\r\n\r\n /**\r\n * Retorna el valor total de promociones aplicadas en el proceso en cuestión\r\n * @param oM3Procesos \r\n */\r\n getValorTotalDescuentos(oM3Procesos: M3Procesos): number {\r\n let totalDescuentos = 0;\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n let detallePromo = enc.M3DET.find(x => x.NombreConcepto == \"TOTALPROMO\");\r\n if (detallePromo) {\r\n totalDescuentos += +detallePromo.Valor;\r\n }\r\n });\r\n\r\n return totalDescuentos;\r\n }\r\n\r\n /**\r\n * Retorna el valor total de impuestos cobrados en el proceso en cuestión\r\n * @param oM3Procesos \r\n */\r\n getValorTotalImporteImpuestos(oM3Procesos: M3Procesos): number {\r\n let totalImporteImpuestos = 0;\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n enc.M3PImpuestos.forEach(imp => {\r\n totalImporteImpuestos += +imp.Valor;\r\n });\r\n });\r\n\r\n return totalImporteImpuestos;\r\n }\r\n\r\n /**\r\n * Mueve el valor de un impuesto en 0.01 y su correspondiente base para que cuadre los valores al timbrar la FE\r\n * @param diferencia \r\n * @param oM3Procesos \r\n */\r\n ajustadorImpuestosCFDI(diferencia: number, oM3Procesos: M3Procesos) {\r\n let ajusto = false;\r\n for (let enc of oM3Procesos.M3ENC) {\r\n for (let imp of enc.M3PImpuestos) {\r\n if (diferencia > 0) {\r\n imp.Valor = imp.Valor + 0.01;\r\n }\r\n else {\r\n imp.Valor = imp.Valor - 0.01;\r\n }\r\n imp.Base = imp.Valor / imp.Porcentaje;\r\n ajusto = true;\r\n break;\r\n }\r\n if (ajusto) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Mueve el valor de un descuento en 0.01 para que cuadre los valores al timbrar la FE\r\n * @param diferencia \r\n * @param oM3Procesos \r\n */\r\n ajustadorDescuentosCFDI(diferencia: number, oM3Procesos: M3Procesos) {\r\n let detalleTotalPromo: M3PDetalleItems;\r\n for (let enc of oM3Procesos.M3ENC) {\r\n detalleTotalPromo = enc.M3DET.find(x => x.NombreConcepto == \"TOTALPROMO\");\r\n if (detalleTotalPromo && +detalleTotalPromo.Valor > 0) {\r\n if (diferencia > 0) {\r\n detalleTotalPromo.Valor = (+detalleTotalPromo.Valor - 0.01).toString();\r\n }\r\n else {\r\n detalleTotalPromo.Valor = (+detalleTotalPromo.Valor + 0.01).toString();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public getPrdsGeneralFromM3Proceso(PostServiceM3: PostServiceM3, sIdKatios: string, jData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/getPrdsGeneralFromM3Proceso/' + sIdKatios, jData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err.error.Message));\r\n });\r\n }\r\n\r\n}\r\n","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\n\r\nexport class M3Trx {\r\n\r\n //Obtener informacion del diario de transacciones desde servicio rest M3Trx. Microservicio M3.\r\n public M3_GetDiario(PostServiceM3: PostServiceM3, sIDKatios: string, oDataSend: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Trx/M3_GetDiario/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oDataDiario;\r\n oDataDiario = resp;\r\n if (oDataDiario.RESPUESTA.data.length === undefined) {\r\n oDataDiario.RESPUESTA.data = new Array(oDataDiario.RESPUESTA.data);\r\n }\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna el diario de transacciones detallado\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public m3_getDiarioTrx(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Trx/m3_getDiarioTrx/' + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oDataDiario;\r\n oDataDiario = resp;\r\n if (oDataDiario.RESPUESTA.Diario.length === undefined) {\r\n oDataDiario.RESPUESTA.Diario = new Array(oDataDiario.RESPUESTA.Diario);\r\n }\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n //Obtener informacion de transaccion.\r\n public M3_GetInfoTRX(PostServiceM3: PostServiceM3, sIDKatios: string, oDataSend: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n //let data = { 'Top': top };\r\n PostServiceM3.getWithBodyM3('M3Trx/M3_GetInfoTRX/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oDataTRX;\r\n oDataTRX = resp;\r\n\r\n if (oDataTRX.RESPUESTA.TIPOS.length === undefined) {\r\n oDataTRX.RESPUESTA.TIPOS = new Array(oDataTRX.RESPUESTA.TIPOS);\r\n }\r\n\r\n oDataTRX.RESPUESTA.TIPOS.forEach(tipo => {\r\n if (tipo.TRX.length === undefined) {\r\n tipo.TRX = new Array(tipo.TRX);\r\n }\r\n });\r\n\r\n\r\n oFuncionOK(oDataTRX);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End \r\n\r\n\r\n\r\n //Cambio de estado de ubicacion\r\n public CambioEstadoUbicacion(PostServiceM3: PostServiceM3, sIDKatios: string, oM3Ubicacion: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3('M3Trx/CambioEstadoUbicacion/' + sIDKatios, oM3Ubicacion).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err._body);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err._body);\r\n });\r\n }//End \r\n\r\n\r\n //Cambio de estado de HUB\r\n public CambioEstadoHub(PostServiceM3: PostServiceM3, sIDKatios: string, oM3Ubicacion: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3('M3Trx/CambioEstadoHub/' + sIDKatios, oM3Ubicacion).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err._body);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err._body);\r\n });\r\n }//End \r\n\r\n}","import { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3PrecListPrecios } from \"../Maestro/m3-prec-list-precios.type\";\r\n\r\nexport class ServiceListaPrecio {\r\n\r\n private goData: any;\r\n private gsIdKatios: any;\r\n private lPreciosSelected: string = \"-1\";\r\n\r\n //Generar JSON genérico, para validar la lista de precio\r\n constructor(loged_user: any, sIdProceso: string){\r\n var oData = { \"USER\": loged_user, \"Proceso\": sIdProceso }\r\n this.goData = oData;\r\n }\r\n\r\n //Obtener lista de precios\r\n public async GetListaPrecios(PostServiceM3: PostServiceM3, IdKatios: string) {\r\n try {\r\n this.gsIdKatios = IdKatios;\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var oListPrecLP: M3PrecListPrecios;\r\n oListPrecLP = this.GetLPreciosInStorage(IdKatios);\r\n if(!oListPrecLP){\r\n oListPrecLP = await oServiceM3Maestro.M3GET_LISTAPRECIOS_ASync(PostServiceM3, IdKatios);\r\n this.SaveLPreciosInStorage(oListPrecLP,IdKatios)\r\n }\r\n \r\n this.ValidarAPLRegla(oListPrecLP);\r\n //this.FindLPrecio(oListPrecLP);\r\n return this.lPreciosSelected;\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n /**\r\n * Guardar la lista de precios teniendo en cuenta la llave: RegPrecio + idkatios\r\n */\r\n public SaveLPreciosInStorage(lPrecio:any, gsIdkatios: string){\r\n localStorage.setItem(\"RegPrecio\" + gsIdkatios, JSON.stringify(lPrecio));\r\n }\r\n\r\n /**\r\n * Guardar la lista de precios teniendo en cuenta la llave: RegPrecio + idkatios\r\n */\r\n public SaveConfigLPreciosInStorage(lPrecio:any, gsIdkatios: string){\r\n console.debug(lPrecio);\r\n sessionStorage.setItem(\"ConfigLP\" + gsIdkatios, lPrecio);\r\n }\r\n\r\n /***\r\n * Obtener lista de precios desde storage teniendo en cuenta la llave: RegPrecio + idkatios\r\n */\r\n public GetLPreciosInStorage(gsIdkatios: string){\r\n var sPrecios = localStorage.getItem(\"RegPrecio\" + gsIdkatios);\r\n var oPrecios:any;\r\n if(sPrecios){\r\n oPrecios = JSON.parse(sPrecios);\r\n return oPrecios;\r\n }\r\n return null;\r\n }\r\n\r\n public GetConfigLPreciosInStorage(gsIdkatios: string){\r\n var sPrecios = sessionStorage.getItem(\"ConfigLP\" + gsIdkatios);\r\n var oPrecios:any;\r\n if(sPrecios){\r\n oPrecios = JSON.parse(sPrecios);\r\n return oPrecios;\r\n }\r\n return null;\r\n }\r\n\r\n //Busucar la lista de precio, ingresa el objeto de precendencia de reglas de lista de precios\r\n public FindLPrecio(oListPrecLP: M3PrecListPrecios) {\r\n \r\n if (oListPrecLP !== undefined && oListPrecLP != null && oListPrecLP.ID !== undefined && oListPrecLP.ID != null) {\r\n \r\n if (oListPrecLP.PRECEDENCIA !== undefined && oListPrecLP.PRECEDENCIA != null && oListPrecLP.PRECEDENCIA.length !== undefined) {\r\n for (const prec of oListPrecLP.PRECEDENCIA) {\r\n this.ValidarAPLRegla(prec);\r\n //this.FindLPrecio(prec);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n //Validar reglas, ingresa el objeto de precendencia de reglas de lista de precios\r\n public ValidarAPLRegla(oListPrecLP: M3PrecListPrecios): boolean{\r\n var bResp: boolean = false;\r\n if (oListPrecLP !== undefined) {\r\n try{\r\n console.debug(oListPrecLP.Propiedad);\r\n switch (oListPrecLP.Propiedad.toUpperCase().trim()) {\r\n case \"EMPRESA\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.gsIdKatios.toString())\r\n break;\r\n case \"UBICACION\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.USER.UsuarioSistema.UBICACION.toString());\r\n break;\r\n case \"PROCESO\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.Proceso.toString());\r\n break;\r\n case \"HUB\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.USER.UsuarioSistema.IDHUB.toString());\r\n break;\r\n default:\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.USER.UsuarioSistema[oListPrecLP.Propiedad.toUpperCase().trim()].toString());\r\n break;\r\n }\r\n }catch (ex){\r\n console.error(\"error: \" + ex)\r\n }\r\n }\r\n if(bResp){\r\n this.lPreciosSelected = oListPrecLP.ListaPrecios;\r\n this.FindLPrecio(oListPrecLP);\r\n }\r\n return bResp;\r\n }\r\n \r\n public Compare(value1, value2) {\r\n if (value1 == value2) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //Obtener configuracion/encabezado lista de precios\r\n public async GetConfigListaPrecios(PostServiceM3: PostServiceM3, IdKatios: string) {\r\n try {\r\n this.gsIdKatios = IdKatios;\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var oListPrecLP: M3PrecListPrecios;\r\n oListPrecLP = this.GetConfigLPreciosInStorage(IdKatios);\r\n if(!oListPrecLP){\r\n oListPrecLP = await oServiceM3Maestro.GetEncabezadoListasPrecio(PostServiceM3, IdKatios);\r\n this.SaveConfigLPreciosInStorage(oListPrecLP,IdKatios)\r\n }\r\n \r\n return oListPrecLP;\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n}","export class M3DinProcesos{\r\n public id_proceso:string;\r\n public id_sub_proceso:string;\r\n public id_dinamica:string;\r\n public tipo_dinam:string;\r\n public titulo:string;\r\n public estructura_destino: string;\r\n public VDefault: string;\r\n public Requerido:boolean;\r\n}","import { TypeM3PrdGrp } from \"./M3PrdGrp.type\";\r\nimport { M3PItemsWEB } from \"../Registro/m3-pdetalle-items\";\r\n\r\nexport class M3PrdPackDet {\r\n public LOTE: string;\r\n public LOTEHIJO: string;\r\n public SKUHIJO: string;\r\n public Cantidad: number;\r\n public TipoPack: string;\r\n public gsPathImagen: string;\r\n public oM3PItemsWEB: M3PItemsWEB;\r\n public M3GRP = new TypeM3PrdGrp();\r\n public Orden: number;\r\n public ValorAdicional: number;\r\n public IdGrp: string;\r\n\r\n}","export class M3UbiAdicionales{\r\n public Atributo:string;\r\n public Valor:string;\r\n}","import { M3UbiAdicionales } from \"./M3UbiAdicionales.type\";\r\nimport { M3Hubs } from \"./m3-hubs.type\";\r\n\r\nexport class M3Ubicacion{\r\n public IDUbicacion:string;\r\n public Nombre:string;\r\n public TipoUbicacion:string;\r\n public TDocAdmin:string;\r\n public NDocAdmin:string;\r\n public JConfiguracion:string;\r\n public Serie:string;\r\n public Estado:number;\r\n public DocumentoID:string;\r\n public M3UbiAdicionales:Array<M3UbiAdicionales>;\r\n public M3HUBS = new Array<M3Hubs>();\r\n public FechaTrabajo:Date;\r\n public APLUbicExternas:Boolean;\r\n \r\n}","import { M3CONDIPROMO } from \"./M3CONDIPROMO.class\";\r\n\r\nexport class M3CONDIAGRUPACION{\r\n public IdPromocion:number;\r\n public IdAgrupacion:number;\r\n public IdCondiciones:string;\r\n public Operador:string;\r\n\r\n public M3CONDIPROMO:Array<M3CONDIPROMO>;\r\n}","import { M3DETCONDIPROMO } from \"./M3DETCONDIPROMO.class\";\r\n\r\nexport class M3CONDIPROMO{\r\n public IdPromocion:number;\r\n public IdCondicion:number;\r\n public Concepto:string;\r\n public Valor:string;\r\n public JAdicionales:string;\r\n\r\n public M3DETCONDIPROMO: Array<M3DETCONDIPROMO>;\r\n\r\n}","export class M3DETCONDIPROMO{\r\n public IdPromocion:number;\r\n public IdCondicion:number;\r\n public Concepto:string;\r\n public Valor:string;\r\n public JAdicionales:string;\r\n}","import { M3CONDIAGRUPACION } from \"./M3CONDIAGRUPACION.class\";\r\n\r\nexport class M3ENCPROMO{\r\n public IdPromocion:number;\r\n public Nombre:string;\r\n public Tipo:string;\r\n public Tipo2:string;\r\n public Vigencia:Date;\r\n public Inicio:Date;\r\n public Estado:boolean;\r\n public JAdicionales:string;\r\n\r\n public EstadoManuales:boolean =false;\r\n public EsManual:boolean= false;\r\n\r\n public EstadoAplCupon:boolean =false;\r\n public EsAplCupon:boolean= false;\r\n public Tope:number;\r\n\r\n public M3CONDIAGRUPACION:Array<M3CONDIAGRUPACION>;\r\n}","import { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { M3UbiAdicionales } from \"projects/reglanegociom31/src/public_api\";\r\n\r\nexport class M3UbicacionService {\r\n\r\n private goM3Ubicacion: M3Ubicacion;\r\n constructor(oM3Ubicacion: M3Ubicacion) {\r\n this.goM3Ubicacion = oM3Ubicacion;\r\n }\r\n\r\n public GetDireccion() {\r\n return this.GetAdicionarByAtribute(\"DIRECCION\");\r\n }\r\n\r\n public GetTelefono() {\r\n return this.GetAdicionarByAtribute(\"TELEFONO\");\r\n }\r\n\r\n public GetLong() {\r\n return this.GetAdicionarByAtribute(\"LONG\");\r\n }\r\n\r\n public GetLat() {\r\n return this.GetAdicionarByAtribute(\"LAT\");\r\n }\r\n\r\n\r\n private GetAdicionarByAtribute(Atributo: string) {\r\n try {\r\n var oAdicional: M3UbiAdicionales = this.goM3Ubicacion.M3UbiAdicionales.find(adi => adi.Atributo == Atributo);\r\n if (oAdicional !== undefined && oAdicional != null) {\r\n return oAdicional.Valor;\r\n }\r\n return \"N/A\";\r\n }catch{\r\n return \"N/A\";\r\n }\r\n \r\n }\r\n\r\n}","import { M3PItemsWEB, M3PDetalleItems } from \"../Registro/m3-pdetalle-items\";\r\nimport { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3RegService } from \"./m3-reg-service\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { M3PDinamicas } from \"../Registro/m3-pdinamicas\";\r\nimport { M3PerXProceso } from \"../Registro/m3-per-x-proceso\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\n\r\nexport class M3RegMasivo {\r\n\r\n private gsIdKatios: string;\r\n private reader: FileReader;\r\n private separador: string = \",\";\r\n private oM3Proceso = new M3Procesos();\r\n private progress: number;\r\n private ConfMasiva: any;\r\n public rounded_progress: number;\r\n public gbBarCode: boolean = false;\r\n constructor(isIdKatios: string, ioM3Proceso: M3Procesos, iConfMasiva: any, ibBarcode: boolean) {\r\n this.oM3Proceso = ioM3Proceso;\r\n this.gsIdKatios = isIdKatios;\r\n this.ConfMasiva = iConfMasiva;\r\n this.gbBarCode = ibBarcode;\r\n }\r\n\r\n public get_rounded_progress() {\r\n return this.rounded_progress;\r\n }\r\n\r\n ///Adicionar productos en masivo\r\n public async AdicionarMasivo(oM3CouchMaestro: M3CouchMaestro, PostServiceM3: PostServiceM3, oDatUser: any, oDataProc: any) {\r\n this.GetReader(oDataProc);\r\n let csv: string;\r\n if (!this.reader) {\r\n csv = oDataProc.Text;\r\n }\r\n else {\r\n csv = this.reader.result.toString();\r\n }\r\n var arrCSV: Array<string> = csv.split(\"\\n\");\r\n\r\n var proceso = await this.adicionar_masivo_from_array(oM3CouchMaestro, PostServiceM3, oDatUser, arrCSV);\r\n\r\n return proceso;\r\n }\r\n\r\n /**\r\n * Recorre y adiciona los productos en un array a un proceso\r\n * @param oM3CouchMaestro \r\n * @param PostServiceM3 \r\n * @param oDatUser \r\n * @param arrCSV \r\n */\r\n public async adicionar_masivo_from_array(oM3CouchMaestro: M3CouchMaestro, PostServiceM3: PostServiceM3, oDatUser: any, arrCSV: Array<string>, oM3Ubicacion: M3Ubicacion = null, aplExc: string = \"0\") {\r\n\r\n let total = arrCSV.length;\r\n let count = 0;\r\n var product: TypeM3PrdGrp\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var oM3RegService = new M3RegService(oM3CouchMaestro, PostServiceM3, this.gsIdKatios);\r\n\r\n this.progress = 0;\r\n\r\n for (var i = 0; i < total; i++) {\r\n var line: string = arrCSV[i];\r\n if (line) {\r\n var oestructCSV: estructCSV;\r\n oestructCSV = this.SetEstructCSV(line);\r\n if (this.gbBarCode) {\r\n var data = { \"id_ubicacion\": oDatUser.UsuarioSistema.UBICACION, \"Codigo\": oestructCSV.sku };\r\n product = await oServiceM3Maestro.Get_M3ProductoEspecByCodeAsync(PostServiceM3, this.gsIdKatios, data, oDatUser);\r\n } else {\r\n console.debug(oM3Ubicacion);\r\n console.debug(oM3Ubicacion && oM3Ubicacion.IDUbicacion);\r\n if (oM3Ubicacion && oM3Ubicacion.IDUbicacion) {\r\n product = await oServiceM3Maestro.M3GetProductoBySKUAsync(PostServiceM3, this.gsIdKatios, oestructCSV.sku, oDatUser, oM3Ubicacion.IDUbicacion, aplExc);\r\n }\r\n else {\r\n product = await oServiceM3Maestro.M3GetProductoBySKUAsync(PostServiceM3, this.gsIdKatios, oestructCSV.sku, oDatUser, \"-1\", aplExc);\r\n }\r\n }\r\n\r\n this.setPrecioSiAPlica(product, oestructCSV);\r\n this.AddPrdToM3Proceso(product, oestructCSV, oM3RegService, oDatUser, oM3Ubicacion);\r\n }\r\n count++;\r\n this.progress = count * 100 / total;\r\n this.rounded_progress = Math.round(this.progress * 100) / 100\r\n }\r\n return this.oM3Proceso;\r\n }\r\n\r\n //Cambiar precio de producto.\r\n public setPrecioSiAPlica(product: TypeM3PrdGrp, oestructCSV: estructCSV) {\r\n if (oestructCSV.precio !== NaN && oestructCSV.precio != null) {\r\n product.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oestructCSV.precio;\r\n product.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones.forEach(oM3Presentaciones => {\r\n oM3Presentaciones.VALOR = oestructCSV.precio;\r\n });\r\n }\r\n }\r\n\r\n //Adicionar a m3proceso, producto especifico, se envia cantidad.\r\n public AddPrdToM3Proceso(product: TypeM3PrdGrp, oestructCSV: estructCSV, oM3RegService: M3RegService, oDatUser: any, oM3Ubicacion: M3Ubicacion = null) {\r\n var oM3PItemsWEB = new M3PItemsWEB();\r\n oM3PItemsWEB.dCantidad = oestructCSV.cantidad;\r\n if (oestructCSV.PathImagen) {\r\n oM3PItemsWEB.PathImagen = oestructCSV.PathImagen;\r\n }\r\n oM3PItemsWEB = oM3RegService.LoadAdicionales(oM3PItemsWEB, product);\r\n\r\n if (this.oM3Proceso.M3ENC.length == 0) {\r\n ///Primera vez \r\n ///NO SE ESTA ENVIANDO INFORMACION DE PROMOCIONES\r\n this.oM3Proceso = oM3RegService.LoadM3ProcesoEmptyPDB(product, oM3PItemsWEB, oDatUser, oM3Ubicacion, null, this.oM3Proceso);\r\n //Agregar dinamicas\r\n this.AdicionarDinamica(oestructCSV);\r\n this.AdicionarPersonasAProceso(oestructCSV);\r\n\r\n } else {\r\n oM3RegService.LoadM3ProcesoFromData(this.oM3Proceso, product, oM3PItemsWEB, oM3Ubicacion, null, oDatUser);\r\n }\r\n this.AdicionarDetalle(oestructCSV);\r\n }\r\n\r\n /**\r\n * Adicionar capturas dinamicas\r\n * @param oestructCSV Estructura con informacion de linea a agregar\r\n */\r\n public AdicionarDinamica(oestructCSV: estructCSV) {\r\n try {\r\n var dinamicas = oestructCSV.Dinamicas\r\n for (var i = 0; i < dinamicas.length; i++) {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n if (!this.oM3Proceso.lM3PDinamicas) {\r\n this.oM3Proceso.lM3PDinamicas = new Array<M3PDinamicas>();\r\n }\r\n oM3PDinamicas.Nombre = dinamicas[i].Atributo;\r\n oM3PDinamicas.Valor = dinamicas[i].Valor;\r\n this.oM3Proceso.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n } catch (ex) {\r\n console.log(\"Error adicionar dinamica\")\r\n console.log(ex)\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar personas a proceso\r\n * @param oestructCSV Estructura con informacion a agregar\r\n */\r\n public AdicionarPersonasAProceso(oestructCSV: estructCSV) {\r\n try {\r\n var personas = oestructCSV.Personas;\r\n for (var i = 0; i < personas.length; i++) {\r\n var oM3PerXProceso = new M3PerXProceso();\r\n if (!this.oM3Proceso.M3PerXProceso) {\r\n this.oM3Proceso.M3PerXProceso = new Array<M3PerXProceso>();\r\n }\r\n oM3PerXProceso.Tdoc = personas[i].Tdoc;\r\n oM3PerXProceso.Ndoc = personas[i].Ndoc;\r\n oM3PerXProceso.TipoPersona = personas[i].Atributo;\r\n this.oM3Proceso.M3PerXProceso.push(oM3PerXProceso);\r\n }\r\n } catch (ex) {\r\n console.log(\"Error adicionar personas\")\r\n console.log(ex)\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar detalle al ultimo encabezado agregado.\r\n * @param oestructCSV Estructura con informacion de linea a agregar\r\n */\r\n public AdicionarDetalle(oestructCSV: estructCSV) {\r\n try {\r\n var detalles = oestructCSV.M3Det\r\n for (var i = 0; i < detalles.length; i++) {\r\n var oM3PDetalleItems = new M3PDetalleItems();\r\n\r\n oM3PDetalleItems.NombreConcepto = detalles[i].Atributo;\r\n oM3PDetalleItems.Valor = detalles[i].Valor;\r\n this.oM3Proceso.M3ENC[this.oM3Proceso.M3ENC.length - 1].M3DET.push(oM3PDetalleItems);\r\n //this.oM3Proceso.M3ENC.find(x => x.IdProducto == oestructCSV.)\r\n }\r\n } catch (ex) {\r\n console.log(\"Error adicionar detalle\")\r\n console.log(ex)\r\n }\r\n }\r\n\r\n\r\n ///Obtener y setear la informacion de archivo CSV y separador.\r\n public GetReader(oDataProc: any) {\r\n this.reader = oDataProc.CSV;\r\n this.separador = oDataProc.Separador;\r\n\r\n }\r\n\r\n\r\n ///Setear estrucutar de CSV\r\n public SetEstructCSV(line: string) {\r\n try {\r\n var oestructCSV: estructCSV = { \"cantidad\": null, \"precio\": null, \"sku\": null, \"PathImagen\": null, \"Dinamicas\": [], \"Personas\": [], \"M3Det\": [] };\r\n var oArrCSV: Array<string> = line.split(this.separador);\r\n\r\n if (this.ConfMasiva && this.ConfMasiva.Columnas) {\r\n oestructCSV = this.EstructDynamic(oArrCSV);\r\n } else {\r\n oestructCSV = this.EstructDefault(oArrCSV);\r\n }\r\n\r\n return oestructCSV;\r\n } catch (ex) {\r\n console.log(\"Error creando estructura. Revisar lineas\");\r\n console.log(ex);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Estructura dinamica de cargue masiva\r\n * @param oArrCSV arreglo con informacion.\r\n */\r\n public EstructDynamic(oArrCSV: Array<string>) {\r\n var columnas: Array<any> = this.ConfMasiva.Columnas;\r\n var oestructCSV: estructCSV = { \"cantidad\": null, \"precio\": null, \"sku\": null, \"PathImagen\": null, \"Dinamicas\": [], \"Personas\": [], \"M3Det\": [] };\r\n\r\n for (var i = 0; i < columnas.length; i++) {\r\n switch (columnas[i].Estructura) {\r\n case \"Cantidad\":\r\n oestructCSV.cantidad = +oArrCSV[columnas[i].Posicion];\r\n break;\r\n case \"Precio\":\r\n oestructCSV.precio = +oArrCSV[columnas[i].Posicion];\r\n break;\r\n case \"SKU\":\r\n oestructCSV.sku = oArrCSV[columnas[i].Posicion];\r\n break;\r\n case \"DINAMICA\":\r\n var din = { \"Atributo\": columnas[i].Atributo, \"Valor\": oArrCSV[columnas[i].Posicion] };\r\n oestructCSV.Dinamicas.push(din);\r\n break;\r\n case \"M3DET\":\r\n var m3Det = { \"Atributo\": columnas[i].Atributo, \"Valor\": oArrCSV[columnas[i].Posicion] };\r\n oestructCSV.M3Det.push(m3Det);\r\n break;\r\n case \"TIPOPERSONA\":\r\n var valor = oArrCSV[columnas[i].Posicion];\r\n var tdoc: string = \"5\";\r\n var ndoc: string;\r\n\r\n if (valor.split(\"-\").length >= 2) {\r\n tdoc = valor.split(\"-\")[0];\r\n ndoc = valor.split(\"-\")[0];\r\n } else {\r\n ndoc = valor;\r\n }\r\n\r\n var persona = { \"Atributo\": columnas[i].Atributo, \"Tdoc\": tdoc, \"Ndoc\": ndoc };\r\n oestructCSV.Personas.push(persona);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return oestructCSV;\r\n }\r\n\r\n /**\r\n * Estructura default.\r\n * @param oArrCSV Arreglo con informacion\r\n */\r\n public EstructDefault(oArrCSV: Array<string>) {\r\n var oestructCSV: estructCSV = { \"cantidad\": null, \"precio\": null, \"sku\": null, \"PathImagen\": null, \"Dinamicas\": [], \"Personas\": [], \"M3Det\": [] };\r\n //var oArrCSV: Array<string> = line.split(this.separador);\r\n\r\n if (oArrCSV.length >= 1) {\r\n oestructCSV.sku = oArrCSV[0];\r\n }\r\n if (oArrCSV.length >= 2) {\r\n oestructCSV.cantidad = +oArrCSV[1];\r\n }\r\n\r\n if (oArrCSV.length >= 3) {\r\n oestructCSV.precio = +oArrCSV[2];\r\n }\r\n if (oArrCSV.length >= 4) {\r\n oestructCSV.PathImagen = oArrCSV[3];\r\n }\r\n return oestructCSV;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport interface estructCSV {\r\n sku: string;\r\n cantidad: number;\r\n precio: number;\r\n PathImagen: string;\r\n Dinamicas: Array<any>;\r\n Personas: Array<any>;\r\n M3Det: Array<any>;\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3RegService } from \"./m3-reg-service\";\r\nimport { M3PDinamicas } from \"../Registro/m3-pdinamicas\";\r\nimport { M3PItemsWEB } from \"../Registro/m3-pdetalle-items\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { async } from \"q\";\r\n\r\n\r\n\r\nexport class M3RegMasivoAKZService {\r\n\r\n\r\n /**\r\n * Agrega un EncItem y puede que una dinamica con el idprestamo a un proceso\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param id_prestamo \r\n * @param m3Prd \r\n * @param user \r\n */\r\n public async add_dinamica_idprestamo_to_proceso(PostServiceM3: PostServiceM3, id_katios: string, id_prestamo: string,\r\n m3Prd, user, otrosParametros: Array<any>) {\r\n var resp;\r\n var pdinamica = new M3PDinamicas\r\n pdinamica.Nombre = \"IdPrestamo\";\r\n pdinamica.Valor = id_prestamo;\r\n try {\r\n var response_proceso_m3: M3Procesos\r\n var m3_reg_service = new M3RegService(null, null, id_katios);\r\n response_proceso_m3 = await m3_reg_service.get_m3_proceso_by_id_prestamo_async(PostServiceM3, id_katios, id_prestamo);\r\n\r\n //Se dejan pegados los estados de destino\r\n response_proceso_m3.EstadoDes = response_proceso_m3.EstadoAnt;\r\n response_proceso_m3.SubEstadoDes = response_proceso_m3.SubEstadoAnt;\r\n\r\n resp = await this.add_pdinamica_to_existing_proceso(PostServiceM3, response_proceso_m3, id_katios, m3Prd, user, pdinamica, otrosParametros);\r\n\r\n } catch (err) {\r\n\r\n resp = await this.add_pdinamica_to_new_proceso(PostServiceM3, id_katios, m3Prd, user, pdinamica, otrosParametros);\r\n }\r\n return resp;\r\n }\r\n\r\n /**\r\n * Agrega un EncItem y dinamica con el idprestamo a un proceso nuevo\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param m3Prd \r\n * @param user \r\n * @param pdinamica \r\n */\r\n public async add_pdinamica_to_new_proceso(PostServiceM3: PostServiceM3, id_katios: string,\r\n m3Prd: any, user: any, pdinamica: M3PDinamicas, otrosParametros: Array<any>) {\r\n\r\n var oM3PItemsWEB;\r\n oM3PItemsWEB = this.GetM3PItemsWEB(otrosParametros);\r\n var oM3RegService = new M3RegService(null, null, id_katios);\r\n var response = oM3RegService.LoadM3ProcesoEmptyPDB(m3Prd, oM3PItemsWEB, user, null, null, null);\r\n response.lM3PDinamicas.push(pdinamica);\r\n\r\n //Se dejan pegados los estados de destino\r\n response.EstadoDes = \"Activo\";\r\n response.SubEstadoDes = \"Registro\";\r\n\r\n var m3_proceso = await oM3RegService.procesamiento_service_async(id_katios, PostServiceM3, response, user);\r\n return m3_proceso;\r\n }\r\n\r\n /**\r\n * Agrega un EncItem a un proceso existente\r\n * @param PostServiceM3 \r\n * @param m3_proceso \r\n * @param id_katios \r\n * @param m3Prd \r\n * @param user \r\n * @param pdinamica\r\n */\r\n public async add_pdinamica_to_existing_proceso(PostServiceM3: PostServiceM3, m3_proceso: M3Procesos, id_katios: string,\r\n m3Prd: any, user: any, pdinamica: M3PDinamicas, otrosParametros: Array<any>) {\r\n\r\n var oM3PItemsWEB;\r\n oM3PItemsWEB = this.GetM3PItemsWEB(otrosParametros);\r\n var oM3RegService = new M3RegService(null, null, id_katios);\r\n\r\n var response = oM3RegService.LoadM3ProcesoFromData(m3_proceso, m3Prd, oM3PItemsWEB, null, null, user);\r\n response.lM3PDinamicas.push(pdinamica);\r\n\r\n var m3_proceso = await oM3RegService.procesamiento_service_async(id_katios, PostServiceM3, response, user);\r\n return m3_proceso;\r\n }\r\n\r\n GetM3PItemsWEB(otrosParametros: Array<any>) {\r\n var oM3PItemsWEB = new M3PItemsWEB();\r\n oM3PItemsWEB.dCantidad = 1;\r\n oM3PItemsWEB.IdProceso = \"M3VENTA\";\r\n otrosParametros.forEach(x => {\r\n oM3PItemsWEB[x.Nombre] = x.Valor\r\n })\r\n return oM3PItemsWEB;\r\n }\r\n\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\nexport class M3ReversoServ{\r\n\r\n\r\n \r\n public ProcesarReverso(PostServiceM3: PostServiceM3,sIDKatios: string, tdocActivo:string, ndocActivo:string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Reverso/Reversar/\" + sIDKatios + \"/\" + ndocActivo + \"/\" + tdocActivo, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n \r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n funcionError(err);\r\n }, );\r\n }\r\n\r\n}","export class M3PDinamByActividad{\r\n public IdDinamica:string;\r\n public Valor:string;\r\n public Nombre:string;\r\n}","export class M3DinByActividad{\r\n public IDActividad:string;\r\n public Actividad:string;\r\n public IDDinamica:string;\r\n public TipoDinamica:string;\r\n public Nombre:string;\r\n public Requerido:boolean;\r\n\r\n //Solo Presentacion\r\n public Valor:string;\r\n\r\n}","export class M3SaldosXCuenta{\r\n public Documento:string;\r\n public TDocTitular:number;\r\n public NDocTitular:string;\r\n public NomCuenta:string;\r\n public ValCuenta:number;\r\n}","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\n\r\nexport class M3RegistroTrx {\r\n\r\n public Actividad:string;\r\n public ID:number;\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n\r\n //Atributos unico del Front\r\n public Actual:string = undefined\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\nexport class cuponesService {\r\n\r\n /**\r\n * Obtiene todos los cupones generados por un proceso\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public m3_get_cupones_generados_by_proceso(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n \r\n //var data = { \"id_m3\": idm3, \"id_proceso\": proceso };\r\n PostServiceM3.getWithBodyM3(\"M3/m3_get_cupones_generados_by_proceso/\" + idkatios, data).subscribe(resp => {\r\n var cupones = JSON.parse(resp.toString());\r\n var resp_cupones:Array<any>;\r\n if(!cupones.CUPONES.CUPON.length){\r\n resp_cupones = new Array<any>();\r\n resp_cupones.push(cupones.CUPONES.CUPON);\r\n }else{\r\n resp_cupones = cupones.CUPONES.CUPON;\r\n }\r\n \r\n funcionOK(resp_cupones);\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n \r\n public getCuponByIdDet(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n \r\n //var data = { \"idDetCupon\": idDetCupon};\r\n PostServiceM3.getWithBodyM3(\"M3/getCuponByIdDet/\" + idkatios, data).subscribe(resp => {\r\n funcionOK(resp);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\nimport { fakeAsync } from '@angular/core/testing';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceOffLine {\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"Offline\" + katios, { auto_compaction: true });\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Adicionar en BD pouch.\r\n public AddDocument(id: string, document: any) {\r\n document._id = id;\r\n\r\n console.log(\"AddDocument\");\r\n return this.get(id).then(result => {\r\n console.log(\"AddDocument enconrtro document\");\r\n document._rev = result._rev;\r\n return this.database.put(document);\r\n }, error => {\r\n console.log(error.status);\r\n if (error.status == \"404\") {\r\n delete document[\"_rev\"];\r\n return this.database.put(document);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n // public Destroy() {\r\n // this.database.destroy().then(function (response) {\r\n // setTimeout(() => {\r\n // this.database = new PouchDB(\"Offline\");\r\n // }, 2000);\r\n // }).catch(function (err) {\r\n // console.log(err);\r\n // });\r\n // }\r\n\r\n public DestroyTotal(){\r\n this.database.destroy();\r\n }\r\n\r\n public GetAllDocsDeleted() {\r\n return this.database.allDocs({ include_docs: true, deleted: true });\r\n }\r\n\r\n public GetAllDocs() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public GetAllDocsOffLineSinDocs() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public Destroy(funcionRep:Function) {\r\n this.database.destroy().then(response => {\r\n setTimeout(() => {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n funcionRep({\"Resp\":\"OK\"});\r\n }, 2000);\r\n }).catch(function (err) {\r\n funcionRep({\"Resp\":\"Error\", \"Desc\":err});\r\n console.log(err);\r\n });\r\n }\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.filter(row => !row.id.startsWith(\"CTIVOS\")).map(function (row) {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n public Delete(isKey: string) {\r\n this.database.get(isKey).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\nimport pouchdbsize from 'pouchdb-size';\r\nimport 'rxjs/add/operator/map';\r\nimport { M3DevicesService } from 'sf-reglanegocio-grl';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class bdOffLineLog {\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n \r\n\r\n constructor(public oM3DevicesService:M3DevicesService) {\r\n if (!this.isInstantiated) {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Adicionar en BD pouch.\r\n public AddDocument(id: string, document: any) {\r\n document._id = id;\r\n\r\n return this.get(id).then(result => {\r\n document._rev = result._rev;\r\n return this.database.put(document);\r\n }, error => {\r\n if (error.status == \"404\") {\r\n return this.database.put(document, { force: true });\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public Destroy(funcionRep:Function) {\r\n this.database.destroy().then(response => {\r\n setTimeout(() => {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n funcionRep({\"Resp\":\"OK\"});\r\n }, 2000);\r\n }).catch(function (err) {\r\n funcionRep({\"Resp\":\"Error\", \"Desc\":err});\r\n console.log(err);\r\n });\r\n }\r\n\r\n public closeInstance() {\r\n this.database.close();\r\n }\r\n\r\n public InstanceAgain() {\r\n try {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n } catch{\r\n\r\n }\r\n }\r\n\r\n\r\n public GetAllDocsDeleted() {\r\n return this.database.allDocs({ include_docs: true, deleted: true });\r\n }\r\n\r\n public GetAllDocs() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.filter(row => !row.id.startsWith(\"CTIVOS\")).map(function (row) {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n /**\r\n * Elimina del Log los docs con fecha anterior o igual a {{maxDias}} de la fecha actual\r\n * Se concatena \" 00:00\" a la fecha por un error en la funcionalidad de \"new Date()\"\r\n * Se utiliza (1000 * 3600 * 24) para calcular el numero de milisegundos en un dÃa\r\n */\r\n public DeleteOldDocs(maxDias:number) {\r\n //let maxDias = 3;\r\n\r\n console.debug(\"DeleteOldDocs\")\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n console.debug(allDocs)\r\n this.AddLogSocket(allDocs);\r\n allDocs.rows.forEach(element => {\r\n console.debug(element.doc.Fecha);\r\n console.debug(element.doc.Fecha.substring(0, 10) + \" 00:00\")\r\n console.debug(new Date(element.doc.Fecha.substring(0, 10) + \" 00:00\"))\r\n console.debug(Date.now() - new Date(element.doc.Fecha.substring(0, 10) + \" 00:00\").getTime())\r\n console.debug((Date.now() - new Date(element.doc.Fecha.substring(0, 10) + \" 00:00\").getTime()) / (1000 * 3600 * 24))\r\n });\r\n return allDocs.rows.filter(row => Math.floor((Date.now() - new Date(row.doc.Fecha.substring(0, 10) + \" 00:00\").getTime()) / (1000 * 3600 * 24)) >= maxDias)\r\n .map( row => {\r\n //Llamar socket. \r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n \r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n\r\n public AddLogSocket(olM3Procesos: any) {\r\n try {\r\n var params: Array<any>;\r\n params = [{ \"nombre\": \"M3Proceso\", \"valor\": JSON.stringify(olM3Procesos) }];\r\n\r\n this.oM3DevicesService.Device_MPos(this.AddLogSocketOK, params, \"LOGM3Procesos\", null)\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n public AddLogSocketOK =()=>{\r\n\r\n }\r\n\r\n\r\n public Delete(isKey: string) {\r\n this.database.get(isKey).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\"\r\nimport { variable } from \"@angular/compiler/src/output/output_ast\";\r\nimport { ServiceM3Maestro } from \"../Services/M3Maestro.service\";\r\nimport { AnyARecord } from \"dns\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3MaestroOffline {\r\n constructor(private oM3CouchMaestro: M3CouchMaestro) {\r\n\r\n }\r\n\r\n /**\r\n * Obtener formas de pago\r\n * @param idKatios Id de la Empresa \r\n * @param respOk_get_formas_pago Funcion con respuesta OK\r\n * @param respError_get_formas_pago Funcion con respuesta ERROR\r\n */\r\n public GetFormasPago(idKatios, idProceso: string, respOk_get_formas_pago: Function, respError_get_formas_pago: Function) {\r\n this.oM3CouchMaestro.get(\"FormasPago\").then(x => {\r\n console.log(x);\r\n\r\n respOk_get_formas_pago(this.FiltrarByProceso(idProceso, x.FormasPago));\r\n }, error => {\r\n respError_get_formas_pago(error);\r\n console.log(error);\r\n });\r\n }\r\n\r\n /**\r\n * Filtrar las formas de pago, dependiendo la informacion del proceso.\r\n * @param idProceso \r\n * @param formasPago \r\n */\r\n public FiltrarByProceso(idProceso: string, formasPago: Array<any>) {\r\n try {\r\n console.log(formasPago);\r\n if (idProceso != \"\") {\r\n formasPago = formasPago.filter(x => {\r\n console.log(x);\r\n if (x.PROCESOS) {\r\n if (!x.PROCESOS.length)\r\n x.PROCESOS = new Array<any>(x.PROCESOS);\r\n return x.PROCESOS.find(y => y.IdProceso == idProceso) != null\r\n } else {\r\n return false;\r\n }\r\n });\r\n console.log(formasPago);\r\n } else {\r\n }\r\n } catch (ex) {\r\n console.log(\"Error FiltrarByProceso\");\r\n console.log(ex);\r\n return formasPago;\r\n }\r\n\r\n return formasPago;\r\n }\r\n\r\n public GetEstructura(est:string) {\r\n return this.oM3CouchMaestro.get(est);\r\n }\r\n\r\n /**\r\n * Obtener dinámicas por actividad\r\n * @param idKatios Id de la empresa\r\n * @param LoadDinamicasOK Funcion de respuesta OK\r\n * @param LoadDinamicasError Funcion de respuesta ERROR\r\n */\r\n public GetDinamicasByACtividad(idKatios, oData, LoadDinamicasOK: Function, LoadDinamicasError: Function) {\r\n var dinam\r\n this.oM3CouchMaestro.get(\"DINBYACT\").then(x => {\r\n try {\r\n dinam = x.M3DinByActividad;\r\n dinam = dinam.filter(x => x.Actividad == oData.Actividad && x.IDActividad == oData.idActividad && x.IdProceso == oData.idProceso);\r\n LoadDinamicasOK(dinam);\r\n } catch{\r\n dinam = new Array<any>();\r\n LoadDinamicasOK(dinam);\r\n }\r\n\r\n }, error => {\r\n LoadDinamicasError(error);\r\n console.log(error);\r\n });\r\n }\r\n\r\n /**\r\n * Obtener informacion de ubicaciones\r\n * @param sIdUbicaciones Id de la ubicacion a buscar en base de datos NoSQL\r\n * @param oServiceM3Maestro Servicio maestro, esta tiene funcionalidad para buscar especificamente un ubicacion\r\n * @param FuncionOK Funcion que retoma la funcionalidad cuando es OK.\r\n */\r\n public GetUbicaciones(idkatios: string, sIdUbicaciones: string, oServiceM3Maestro: ServiceM3Maestro, FuncionOK: Function) {\r\n //Cargar informacion de ubicacion\r\n var oM3Ubicacion;\r\n var sIdUbicacionesCouch = idkatios.trim().toUpperCase() + \"?UBIC\";;\r\n this.oM3CouchMaestro.get(sIdUbicacionesCouch).then(result => {\r\n oM3Ubicacion = oServiceM3Maestro.GetUbicacionFromList(result.ListUbicaciones.M3UBICACION, sIdUbicaciones);\r\n FuncionOK(oM3Ubicacion);\r\n\r\n }, error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n\r\n \r\n\r\n // /**\r\n // * Obtener la informacion de las promociones\r\n // * @param sIDPromo Id de la promocion a buscar en base de datos NoSQL\r\n // * @param FuncionOK Funcion que retoma la funcionalidad cuando es OK.\r\n // */\r\n // public GetPromociones(idkatios: string, FuncionOK: Function) {\r\n // var ListPromo;\r\n // var sIDPromo = idkatios.trim().toUpperCase() + \"?Promociones\";\r\n // this.oM3CouchMaestro.get(sIDPromo).then(result => {\r\n // if(result.M3ENCPROMO){\r\n // ListPromo = result.M3ENCPROMO;\r\n // }else if(result.M3ListENCPROMO.M3ENCPROMO){\r\n // ListPromo = result.M3ListENCPROMO.M3ENCPROMO;\r\n // }else{\r\n // ListPromo = undefined;\r\n // }\r\n\r\n // FuncionOK(ListPromo);\r\n // }, error => {\r\n // console.log(error);\r\n // });\r\n // }\r\n\r\n /**\r\n * Obtener la informacion sincrónicamente de template. segun el reporte entrante \r\n * @param idkatios \r\n */\r\n public async Asyncget_template_reporte(idkatios: string, idrep) {\r\n try {\r\n var template;\r\n //var sID = idkatios.trim().toUpperCase() + \"?Templates\";\r\n var sID = \"TEMPLATES\";\r\n template = await this.oM3CouchMaestro.get(sID);\r\n if (template.RESPUESTA.RPTemplate.length == undefined) {\r\n template = new Array<any>(template.RESPUESTA.RPTemplate);\r\n } else {\r\n template = template.RESPUESTA.RPTemplate;\r\n }\r\n ///Se crean los nodos padre RESPUESTA y RPTemplate, para simular igual, como lo responde servidor.\r\n var templateUno = { \"RESPUESTA\": { \"RPTemplate\": template.find(t => t.IdRep == idrep) } };\r\n return templateUno;\r\n } catch{\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n} ","import { Injectable } from \"@angular/core\";\r\nimport { ServiceOffLine } from \"./Service/bd-offline.service\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { M3RegService } from \"../Services/m3-reg-service\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { ServiceM3Maestro } from \"../Services/M3Maestro.service\";\r\nimport { bdOffLineLog } from \"./Service/bd-offline-log.service\";\r\nimport * as moment_ from 'moment';\r\nconst moment = moment_;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3ProcesosOffline {\r\n\r\n //private sKeyCtivos: string = \"CTIVOS\";\r\n constructor(private oServiceOffLine: ServiceOffLine, private oPostServiceM3: PostServiceM3,\r\n private obdOffLineLog: bdOffLineLog) {\r\n\r\n }\r\n\r\n /**\r\n * Obtener M3Procesos, segun el ID M3\r\n * @param id Id del Motor 3\r\n * @param ResponseOKLoadM3Procesos Respuesta OK de get de M3 procesos\r\n * @param ResponseErrorLoadM3Procesos Respuesta Error de get de M3 procesos\r\n */\r\n public GetProcesoById(id, ResponseOKLoadM3Procesos: Function, ResponseErrorLoadM3Procesos: Function) {\r\n //JAGM 20191108 cambio de donde traer el proceso lo trae desde offline\r\n this.oServiceOffLine.get(id).then(proceso => {\r\n //this.obdOffLineLog.get(id).then(proceso => {\r\n ResponseOKLoadM3Procesos(proceso);\r\n }, error => {\r\n //ResponseErrorLoadM3Procesos(error);\r\n this.GetProcesoByIdFromLog(id, ResponseOKLoadM3Procesos, ResponseErrorLoadM3Procesos);\r\n });\r\n }\r\n\r\n\r\n public GetProcesoByIdFromLog(id, ResponseOKLoadM3Procesos: Function, ResponseErrorLoadM3Procesos: Function) {\r\n //JAGM 20191108 cambio de donde traer el proceso lo trae desde offline\r\n //this.oServiceOffLine.get(id).then(proceso => {\r\n this.obdOffLineLog.get(id).then(proceso => {\r\n ResponseOKLoadM3Procesos(proceso);\r\n }, error => {\r\n ResponseErrorLoadM3Procesos(error);\r\n });\r\n }\r\n\r\n /**\r\n * Adicionar M3 Procesos\r\n * @param id Id del M3 Proceso\r\n * @param olM3Procesos Objeto M3 Procesos a agregar\r\n * @param ResponseOKLoadM3Procesos Funcion OK respuesta que atrapará.\r\n */\r\n public AddProceso(idkatios: string, olM3Procesos: M3Procesos, ResponseOKLoadM3Procesos: Function) {\r\n\r\n if (olM3Procesos.IdM3) {\r\n this.AddToDocOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n } else {\r\n this.GetIdM3Offline(idkatios, olM3Procesos.TMIdProceso, olM3Procesos.Ubic1.toString(), olM3Procesos.IDHub.toString()).then(id => {\r\n olM3Procesos.IdM3 = id;\r\n this.AddToDocOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n });\r\n }\r\n }\r\n\r\n public AddToDocOffline(olM3Procesos: M3Procesos, ResponseOKLoadM3Procesos: Function, intento = 0) {\r\n this.oServiceOffLine.AddDocument(olM3Procesos.IdM3.toString(), olM3Procesos).then(x => {\r\n this.SaveIdM3(olM3Procesos.IdM3, olM3Procesos.TMIdProceso, olM3Procesos.Ubic1.toString(), olM3Procesos.IDHub.toString());\r\n // this.AddLogOffline(olM3Procesos).then(x => {\r\n // this.SaveIdM3(olM3Procesos.IdM3, olM3Procesos.TMIdProceso, olM3Procesos.Ubic1.toString(), olM3Procesos.IDHub.toString());\r\n // ResponseOKLoadM3Procesos(olM3Procesos.IdM3);\r\n // }, error => {\r\n // console.log(error);\r\n // });\r\n this.AddLogOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n\r\n //ResponseOKLoadM3Procesos(olM3Procesos.IdM3);\r\n }, error => {\r\n console.log(error);\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLog\" + sFechaNow, JSON.stringify({ \"error\": error, \"olM3Procesos\": olM3Procesos, \"Intento\": intento, \"function\": \"AddToDocOffline\" }));\r\n if (intento == 0) {\r\n this.obdOffLineLog.InstanceAgain();\r\n this.AddToDocOffline(olM3Procesos, ResponseOKLoadM3Procesos, 1);\r\n } else {\r\n ResponseOKLoadM3Procesos({ \"Error\": \"Error en guardar en base de datos pcpal.\" })\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adicionar log offline de procesos.\r\n * @param olM3Procesos \r\n */\r\n public AddLogOffline(olM3Procesos: M3Procesos, ResponseOKLoadM3Procesos: Function, intento: number = 0) {\r\n //Agregar a Log Socket\r\n //this.AddLogSocket(olM3Procesos)\r\n //return this.obdOffLineLog.AddDocument(olM3Procesos.IdM3.toString(), olM3Procesos)\r\n this.obdOffLineLog.AddDocument(olM3Procesos.IdM3.toString(), olM3Procesos).then(x => {\r\n console.log(x);\r\n ResponseOKLoadM3Procesos(olM3Procesos.IdM3);\r\n }, error => {\r\n console.log(error);\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLog\" + sFechaNow, JSON.stringify({ \"error\": error, \"olM3Procesos\": olM3Procesos, \"Intento\": intento, \"function\": \"AddLogOffline\" }));\r\n if (intento == 0) {\r\n this.obdOffLineLog.InstanceAgain();\r\n this.AddLogOffline(olM3Procesos, ResponseOKLoadM3Procesos, 1);\r\n } else {\r\n ResponseOKLoadM3Procesos({ \"Error\": \"Error en guardar en base de datos local.\" })\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n public AddLogSocketOK = () => {\r\n\r\n }\r\n\r\n public closeInstanceLogOff() {\r\n this.obdOffLineLog.closeInstance();\r\n }\r\n\r\n\r\n public GetOffLineLog() {\r\n return this.obdOffLineLog.GetAllDocs();\r\n }\r\n\r\n\r\n public Get1DocOffLineLog(id) {\r\n return this.obdOffLineLog.get(id);\r\n }\r\n\r\n /**\r\n * Reversar m3 proceso, en el log local.\r\n */\r\n public ReversarEnLog(id) {\r\n this.Get1DocOffLineLog(id).then(oM3P => {\r\n var oResult: M3Procesos = oM3P;\r\n for (var i = 0; i < oResult.lM3PEncFP.length; i++) {\r\n oResult.lM3PEncFP[i].ValCambio = 0;\r\n oResult.lM3PEncFP[i].Valor = 0;\r\n oResult.lM3PEncFP[i].ValOtraClasi = 0;\r\n }\r\n oResult.IdEstado = \"RV\";\r\n this.AddLogOffline(oResult, null);\r\n });\r\n }\r\n\r\n public DestruirBDLog(funcionResp: Function) {\r\n return this.obdOffLineLog.Destroy(funcionResp);\r\n }\r\n\r\n public DestruirBDOff(funcionResp: Function) {\r\n return this.oServiceOffLine.Destroy(funcionResp);\r\n }\r\n\r\n public SumarCtivo(idm3: string) {\r\n // var sPart1;\r\n // var sPart2;\r\n\r\n // sPart1 = idm3.substring(0, 8);\r\n // sPart2 = idm3.substring(8, idm3.length);\r\n // sPart2 = +sPart2 + 1;\r\n // idm3 = sPart1 + sPart2;\r\n // return idm3;\r\n var sPart1;\r\n var sPart2;\r\n sPart1 = idm3.substring(0, 9);\r\n sPart2 = idm3.substring(9);\r\n sPart2 = +sPart2 + 1;\r\n idm3 = sPart1 + \"\" + sPart2;\r\n return idm3;\r\n }\r\n\r\n /**\r\n * Actualizar el M3 Procesos, teniendo el Id del documento guardado en la BD NoSQL\r\n * @param id Id del documento Bd NoSQL\r\n * @param olM3Procesos M3 Procesos a almacenar / Actualizar\r\n * @param ResponseOKLoadM3Procesos Respuesta de OK.\r\n */\r\n public updProceso(id, olM3Procesos, ResponseOKLoadM3Procesos: Function, intento = 0) {\r\n\r\n this.oServiceOffLine.AddDocument(id.toString(), olM3Procesos).then(x => {\r\n //ResponseOKLoadM3Procesos(id);\r\n this.AddLogOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n }, error => {\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLog\" + sFechaNow, JSON.stringify({ \"error\": error, \"olM3Procesos\": olM3Procesos, \"Intento\": intento, \"function\": \"updProceso\" }));\r\n if (intento == 0) {\r\n this.obdOffLineLog.InstanceAgain();\r\n this.updProceso(id, olM3Procesos, ResponseOKLoadM3Procesos, 1);\r\n } else {\r\n ResponseOKLoadM3Procesos({ \"Error\": \"Error en guardar en base de datos pcpal.\" })\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Actualizar el M3 Procesos, teniendo el Id del documento guardado en la BD NoSQL\r\n * @param id Id del documento Bd NoSQL\r\n * @param olM3Procesos M3 Procesos a almacenar / Actualizar\r\n */\r\n public async updProcesoAsync(id, olM3Procesos) {\r\n await this.oServiceOffLine.AddDocument(id.toString(), olM3Procesos);\r\n this.AddLogOffline(olM3Procesos, null);\r\n }\r\n\r\n public GetAllDocsOffLineSinDocs() {\r\n return this.oServiceOffLine.GetAllDocsOffLineSinDocs();\r\n }\r\n\r\n procesarTicketOffline(idkatios, proceso, oDataUser: any, funcionResp: Function) {\r\n var lM3Procesos = new Array<M3Procesos>();\r\n var oM3RegService = new M3RegService(null, null, idkatios);\r\n\r\n if (this.ValidarTicketCerrado(proceso)) {\r\n lM3Procesos.push(proceso);\r\n\r\n oM3RegService.RegistroEventoM3OffLine(idkatios, this.oPostServiceM3, lM3Procesos, oDataUser).then(x => {\r\n if (x) {\r\n funcionResp(true, \"OK\");\r\n } else {\r\n funcionResp(false, \"OK\");\r\n }\r\n }).catch(function (err) {\r\n funcionResp(false, err);\r\n });\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Valida procesos que se procesaron mientras se estaba fuera de linea\r\n */\r\n public ValidarProcesosAgregadosOffLine(idkatios, oDataUser: any, funcionResp: Function) {\r\n //console.log(\"Entro ValidarProcesosAgregadosOffLine\")\r\n var lM3Procesos = new Array<M3Procesos>();\r\n var oM3RegService = new M3RegService(null, null, idkatios);\r\n this.oServiceOffLine.GetAllDocs().then(result => {\r\n // handle result\r\n for (var i = 0; i < result.rows.length; i++) {\r\n if (!result.rows[i].id.startsWith(\"CTIVOS\")) {\r\n var m3Proceso: M3Procesos = result.rows[i].doc;\r\n if (this.ValidarTicketCerrado(m3Proceso)) {\r\n lM3Procesos.push(result.rows[i].doc);\r\n }\r\n }\r\n }\r\n //console.log(\"Antes RegistroEventoM3OffLine\")\r\n oM3RegService.RegistroEventoM3OffLine(idkatios, this.oPostServiceM3, lM3Procesos, oDataUser).then(x => {\r\n // console.log(\"Dio Respuesta RegistroEventoM3OffLine\")\r\n // console.log(x)\r\n if (x) {\r\n //console.log(\"if 1\")\r\n this.oServiceOffLine.DeleteAllDocs();\r\n funcionResp(true, \"OK\");\r\n } else {\r\n //console.log(\"if 2\")\r\n //Respuesta con errores\r\n //this.oServiceOffLine.DeleteAllDocs();\r\n funcionResp(false, \"OK\");\r\n }\r\n }).catch(function (err) {\r\n funcionResp(false, err);\r\n });\r\n }).catch(function (err) {\r\n console.log(err);\r\n funcionResp(false, err);\r\n });\r\n }\r\n\r\n /**\r\n * Validacion de que el ticket esta cerrado.\r\n * @param m3Proceso \r\n */\r\n public ValidarTicketCerrado(m3Proceso: M3Procesos) {\r\n var bCerrado: boolean = true;\r\n if (m3Proceso && m3Proceso.SubEstadoAnt != \"Declinado\" && m3Proceso.M3ENC.length > 0 && m3Proceso.lM3PEncFP.length == 0 &&\r\n this.getCantidadTotalByM3Proceso(m3Proceso) > 0) {\r\n bCerrado = false;\r\n }\r\n return bCerrado;\r\n }\r\n\r\n\r\n public getCantidadTotalByM3Proceso(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos && oM3Procesos.M3ENC) {\r\n var dCantidad = oM3Procesos.M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (+cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor), 0);\r\n if (dCantidad == 0) {\r\n return 0;\r\n } else {\r\n return dCantidad;\r\n }\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Obtener todos los documentos Off line que se han guardado como offline.\r\n */\r\n public async GetAllDocsOffline() {\r\n try {\r\n var lM3Procesos = new Array<M3Procesos>();\r\n var result = await this.oServiceOffLine.GetAllDocs();\r\n for (var i = 0; i < result.rows.length; i++) {\r\n if (result.rows[i].id != \"CTIVOS\") {\r\n lM3Procesos.push(result.rows[i].doc);\r\n }\r\n }\r\n return lM3Procesos;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Obtener todos los documentos Off line que se han guardado como offline.\r\n */\r\n public GetAllDocsOfflineDeleted() {\r\n return this.oServiceOffLine.GetAllDocsDeleted();\r\n }\r\n\r\n public deleteCtivos(ubicacion: string, hub: string) {\r\n var data = this.oServiceOffLine.Delete(this.GetKey(ubicacion, hub))\r\n return data;\r\n }\r\n\r\n public getAllCtivos(ubicacion: string, hub: string) {\r\n return this.oServiceOffLine.get(this.GetKey(ubicacion, hub))\r\n }\r\n\r\n\r\n /**\r\n * Valida los consecutivos que estan localmente vs los que estan en el servidor.\r\n */\r\n public ValidacionCtivosVSServer(ikatios: string, ubicacion: string, idHub: string, funcionResp: Function) {\r\n this.getAllCtivos(ubicacion, idHub).then(x => {\r\n if (x) {\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n oServiceM3Maestro.ValidarCtivosVSLocal(this.oPostServiceM3, ikatios, JSON.stringify(x), ubicacion, idHub, funcionResp);\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Obtener el consecutivo en el que va, el proceso offline que recibe como parametro\r\n * @param ubicacion \r\n * @param hub \r\n * @param sIdProceso \r\n */\r\n public async GetCtivoOffLine(ubicacion: string, hub: string, sIdProceso: string) {\r\n var ctivo: string = \"0\";\r\n try {\r\n var oData = await this.oServiceOffLine.get(this.GetKey(ubicacion, hub));\r\n if (oData) {\r\n var oDataFinded: any = oData.Ctivos.find(x => x.IdProceso == sIdProceso);\r\n if (oDataFinded.Ctivo) {\r\n ctivo = oDataFinded.Ctivo.substring(9);\r\n }\r\n }\r\n } catch { }\r\n return ctivo;\r\n }\r\n\r\n /**\r\n * Guardar id m3 \r\n * @param sIdM3 \r\n * @param sIdProceso \r\n */\r\n public SaveIdM3(sIdM3: string, sIdProceso: string, ubicacion: string, hub: string) {\r\n this.oServiceOffLine.get(this.GetKey(ubicacion, hub)).then(data => {\r\n var oData: Array<any> = data.Ctivos;\r\n var oDataFinded: any = oData.find(x => x.IdProceso == sIdProceso);\r\n if (oDataFinded) {\r\n var ctivoAnt = +oDataFinded.Ctivo.substring(9);\r\n var ctivoAct = +sIdM3.substring(9);\r\n if (ctivoAct > ctivoAnt) {\r\n oDataFinded.Ctivo = sIdM3;\r\n }\r\n } else {\r\n oData.push({ \"IdProceso\": sIdProceso, \"Ctivo\": sIdM3 })\r\n }\r\n this.SaveCtivos(oData, ubicacion, hub);\r\n if (sIdProceso.toUpperCase() == \"TICKETVENTA\") {\r\n localStorage.setItem(\"CtivoTicketVenta\", sIdM3);\r\n }\r\n }, error => {\r\n var oData = new Array<any>();\r\n oData.push({ \"IdProceso\": sIdProceso, \"Ctivo\": sIdM3 })\r\n this.SaveCtivos(oData, ubicacion, hub);\r\n if (sIdProceso.toUpperCase() == \"TICKETVENTA\") {\r\n localStorage.setItem(\"CtivoTicketVenta\", sIdM3);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Guardar ctivos, Idm3.\r\n * @param oData \r\n */\r\n private SaveCtivos(oData: Array<any>, ubicacion: string, hub: string, intento = 0) {\r\n var oDataSend = { \"Ctivos\": oData }\r\n this.oServiceOffLine.AddDocument(this.GetKey(ubicacion, hub), oDataSend).then(x => {\r\n console.log(\"OK\");\r\n }, error => {\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLogCtivos\" + sFechaNow, JSON.stringify({ \"error\": error, \"Ctivos\": oDataSend, \"function\": \"SaveCtivos\" }));\r\n console.log(error);\r\n if (intento == 0) {\r\n this.SaveCtivos(oData, ubicacion, hub, 1)\r\n }\r\n });\r\n }\r\n\r\n public DeleteOldDocs(maxDias: number) {\r\n this.obdOffLineLog.DeleteOldDocs(maxDias)\r\n }\r\n\r\n\r\n /**\r\n * Obtener informacion de Id m3, cuando esta fuera de linea\r\n */\r\n private async GetIdM3Offline(idkatios: string, idproceso: string, ubicacion: string, hub: string) {\r\n var oDataIdM3;\r\n var idM3;\r\n try {\r\n oDataIdM3 = await this.oServiceOffLine.get(this.GetKey(ubicacion, hub));\r\n var oDataFinded: any = oDataIdM3.Ctivos.find(x => x.IdProceso == idproceso);\r\n if (oDataFinded) {\r\n idM3 = oDataFinded.Ctivo;\r\n idM3 = this.SumarCtivo(idM3);\r\n idM3 = this.validarAumentoCtivo(idM3, idproceso);\r\n } else {\r\n // var date = new Date();\r\n // idM3 = date.getFullYear() + \"\" + date.getMonth() + \"\" + date.getDay() + \"\" + date.getHours() + \"\" + date.getMinutes() + \"\" + date.getSeconds() + \"\" + date.getMilliseconds();\r\n\r\n idM3 = this.GetCtivo(idkatios, idproceso, ubicacion, hub);\r\n }\r\n } catch {\r\n // var date = new Date();\r\n // idM3 = date.getFullYear() + \"\" + date.getMonth() + \"\" + date.getDay() + \"\" + date.getHours() + \"\" + date.getMinutes() + \"\" + date.getSeconds() + \"\" + date.getMilliseconds();\r\n idM3 = this.GetCtivo(idkatios, idproceso, ubicacion, hub);\r\n }\r\n return idM3;\r\n }\r\n\r\n\r\n validarAumentoCtivo(idM3, idproceso) {\r\n if (idproceso.toUpperCase() == \"TICKETVENTA\") {\r\n let ultimoIdM3 = localStorage.getItem(\"CtivoTicketVenta\");\r\n if (ultimoIdM3 == idM3) {\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n idM3 = this.SumarCtivo(idM3);\r\n localStorage.setItem(\"errorLogCtivos\" + sFechaNow, JSON.stringify({ \"idM3\": idM3, \"function\": \"validarAumentoCtivo\" }));\r\n }\r\n }\r\n return idM3;\r\n }\r\n\r\n private async GetCtivo(idkatios: string, idproceso: string, ubicacion: string, hub: string) {\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var sCtivo;\r\n sCtivo = await oServiceM3Maestro.GetCtivoBYProceso(this.oPostServiceM3, idkatios, idproceso, ubicacion, hub);\r\n return sCtivo;\r\n }\r\n\r\n\r\n /**\r\n * Obtener llave de pouchDB\r\n * @param ubic \r\n * @param hub \r\n */\r\n public GetKey(ubic, hub) {\r\n return \"CTIVOS_\" + ubic + hub;\r\n }\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3NotifService {\r\n constructor(private oPostServiceM3: PostServiceM3) {\r\n }\r\n\r\n /**\r\n * Obtener la informacion de las notidicaciones por hub\r\n * @param sIDKatios Empresa\r\n */\r\n public async M3GetM3NotificacionesXHubObject(sIDKatios: string, oDataSend: any) {\r\n try {\r\n var resp = await this.oPostServiceM3.getWithBodyM3(\"M3NotifController/M3GetM3NotificacionesXHubObject/\" + sIDKatios, oDataSend).toPromise();\r\n return resp;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Obtener la informacion de las notidicaciones por hub\r\n * @param sIDKatios Empresa\r\n */\r\n public async M3GetM3NotificacionesXHubObjectWithTimeOut(sIDKatios: string, oDataSend: any, timeOut: number) {\r\n try {\r\n var resp = await this.oPostServiceM3.getWithBodyM3TimeOut(\"M3NotifController/M3GetM3NotificacionesXHubObject/\" + sIDKatios, oDataSend, timeOut).toPromise();\r\n return resp;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener la informacion de las notidicaciones por hub de un idRep dado\r\n * @param sIDKatios \r\n * @param data \r\n */\r\n public async m3_get_notificacion_x_hub_object(sIDKatios: string, data: any) {\r\n //var data = {\"id_rep\":\"\", \"id_ubicacion\":\"\", \"id_hub\":\"\"}\r\n try {\r\n var resp = await this.oPostServiceM3.getWithBodyM3(\"M3NotifController/m3_get_notificacion_x_hub_object/\" + sIDKatios, data).toPromise();\r\n var data = JSON.parse(JSON.stringify(resp));\r\n return data;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n guardarCambiosConfiguracionImpresion(PostServiceM3: PostServiceM3, sIDKatios: string, data: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3NotifController/guardarCambiosConfiguracionImpresion/\" + sIDKatios.trim(), data).subscribe(resp => {\r\n oFuncionOK();\r\n },\r\n error => {\r\n oFuncionErr(error[\"_body\"]);\r\n });\r\n }\r\n\r\n}","export class ModelM3Notif{\r\n public IdRep:string;\r\n public IDUbicacion:string;\r\n public IdHub:string;\r\n public Correr:string;\r\n public Tipo:number;\r\n public Condiciones:string;\r\n public Data:string;\r\n public ConfImp:string;\r\n}","export class M3Presentaciones{\r\n public NIVELPRS:string;\r\n public VALOR:number;\r\n public TOPE:number;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { PostServiceM3 } from \"../../../ConexionSQL/posts.service\";\r\nimport { reserveSlots } from \"@angular/core/src/render3/instructions\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class M3Consultas {\r\n\r\n constructor(public PostServiceM3: PostServiceM3) {\r\n\r\n }\r\n\r\n /**\r\n * Obtener informacion de inventario, teniendo en cuenta los pack asociados \r\n * @param sIDKatios Empresa\r\n * @param data Json con informacion de SKP1 (Modelo) y Ubicacion \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public async M3_GETINVENTARIOBYPACK(sIDKatios: string, data: any) {\r\n var resp = await this.PostServiceM3.getWithBodyM3(\"M3Consultas/M3_GETINVENTARIOBYPACK/\" + sIDKatios, data).toPromise();\r\n return resp;\r\n }\r\n\r\n validarInventarioNegativoProducto(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3(\"M3/validarInventarioNegativoProducto/\" + idKatios, data).subscribe(resp => {\r\n oFuncionOK();\r\n },\r\n error => {\r\n oFuncionErr(JSON.parse(error.error.Message));\r\n });\r\n }\r\n \r\n BuscarConceptoEnM3SIU(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function){\r\n PostServiceM3.getWithBodyM3(\"M3Consultas/M3_GETConceptoFromSIU/\" + idKatios + \"/\" + data.sUbicacion + \"/\" + data.sConcepto, {}).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n oFuncionErr(JSON.parse(error.error.Message));\r\n }\r\n )\r\n }\r\n\r\n \r\n\r\n\r\n}","export class TECLASRAPIDAS{\r\n public Componente:string;\r\n public Tecla:string;\r\n public Funcion:string;\r\n public IdElemento:string;\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchPRDSService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private idkatios: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private aplSyncCouchAuto = true;\r\n private aplPaquetes = false;\r\n\r\n constructor() {\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n this.GetKatiosM3FromSession();\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n }\r\n\r\n getFlagSyncCouch() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n let flag: boolean = true;\r\n let config;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Configuracion) {\r\n config = JSON.parse(oSUbicacion.M3HUBS[0].Configuracion);\r\n\r\n if (config.SyncCouchAuto != null && config.SyncCouchAuto != undefined) {\r\n flag = config.SyncCouchAuto;\r\n }\r\n }\r\n }\r\n return flag;\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n if (this.idkatios) this.GetKatiosM3FromSession();\r\n this.database = new PouchDB(\"PRD\" + this.idkatios, { auto_compaction: true });\r\n console.debug(\"adapter\")\r\n console.debug(this.database.adapter);\r\n var sIdkatios: string;\r\n\r\n this.validarPaquetes()\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE PRODUCTOS *****************************************\")\r\n\r\n }\r\n\r\n validarPaquetes() {\r\n if (this.aplPaquetes) {\r\n let ubicacion = this.getUbicacion();\r\n if (ubicacion) {\r\n this.sync(this.GetServer() + \"prdsa\" + ubicacion + \"_\" + this.idkatios.toLowerCase());\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n\r\n syncCouch() {\r\n if (!this.idkatios) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n else {\r\n this.validarPaquetes()\r\n }\r\n }\r\n\r\n getUbicacion() {\r\n let sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n let oSUbicacion;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.IDUbicacion) {\r\n return oSUbicacion.IDUbicacion;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetKatiosM3FromSession() {\r\n var Katios = localStorage.getItem(\"ConfigKatios\" + this.idkatios.toUpperCase());\r\n if (Katios !== undefined && Katios != null) {\r\n var jKatiosM3 = JSON.parse(Katios);\r\n if (jKatiosM3 && jKatiosM3.Katios && jKatiosM3.Katios.KatiosM3) {\r\n let apl = jKatiosM3.Katios.KatiosM3.find(x => x.Llave.toUpperCase() == \"APLPAQS\");\r\n if (apl && apl.Valor == \"1\") {\r\n this.aplPaquetes = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async Destroy(idkatios) {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n\r\n\r\n\r\n public sync(remote: string) {\r\n this.aplSyncCouchAuto = this.getFlagSyncCouch();\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: this.aplSyncCouchAuto,\r\n retry: true\r\n }).on('complete', change => {\r\n\r\n console.log(\"********************************** COMPLETO CAMBIO PRODUCTOS *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PRODUCTOS *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getInfo() {\r\n return this.database.info();\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public deletePrd(id) {\r\n this.database.get(id).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.map(row => {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchCodsPRDSService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private idkatios;\r\n private aplSyncCouchAuto = true;\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n }\r\n\r\n getFlagSyncCouch() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n let flag: boolean = true;\r\n let config;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Configuracion) {\r\n config = JSON.parse(oSUbicacion.M3HUBS[0].Configuracion);\r\n\r\n if (config.SyncCouchAuto != null && config.SyncCouchAuto != undefined) {\r\n flag = config.SyncCouchAuto;\r\n }\r\n }\r\n }\r\n return flag;\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"codsprd_\" + this.idkatios, { auto_compaction: true });\r\n console.debug(\"adapter\")\r\n console.debug(this.database.adapter);\r\n\r\n this.sync(this.GetServer() + \"codsprd_\" + this.idkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE PRODUCTOS *****************************************\")\r\n\r\n }\r\n\r\n syncCouch() {\r\n if (!this.idkatios) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"codsprd_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n this.aplSyncCouchAuto = this.getFlagSyncCouch();\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: this.aplSyncCouchAuto,\r\n retry: true\r\n }).on('complete', change => {\r\n console.log(\"********************************** COMPLETO CAMBIO CODS PRODUCTOS *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO CODS PRODUCTOS *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n\r\n\r\n public async Destroy() {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchPromocionesService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private elementRem: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"promociones_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios: string;\r\n\r\n //this.sync(this.GetServer(sIdkatios));\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE PROMOCIONES *****************************************\")\r\n }\r\n }\r\n\r\n public GetServer(sIdkatios): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3 + \"promociones_\" + sIdkatios.toLowerCase();\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n console.log(change);\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n console.log(change);\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n console.log(err)\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public syncWithDB(remoteDatabase: PouchDB) {\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n console.log(change);\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n console.log(change);\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n console.log(err)\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n\r\n public async syncAwait(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n await this.database.replicate.from(remoteDatabase, {\r\n }).on('complete', change => {\r\n\r\n console.log(change);\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n this.syncWithDB(remoteDatabase);\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n console.log(err)\r\n // boo, something went wrong!\r\n });\r\n\r\n await this.database.compact();\r\n }\r\n\r\n // public changes(remote: string){\r\n // let remoteDatabase = new PouchDB(remote);\r\n // remoteDatabase.changes({\r\n // since: 'now',\r\n // live: true,\r\n // include_docs: true\r\n // }).on('change', function (change) {\r\n // // change.id contains the doc id, change.doc contains the doc\r\n // if (change.deleted) {\r\n // // document was deleted\r\n // } else {\r\n // // document was added/modified\r\n // }\r\n // }).on('error', function (err) {\r\n // // handle errors\r\n // });\r\n // }\r\n\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public delete(id: string) {\r\n this.database.get(id).then(doc =>{\r\n return this.database.remove(doc);\r\n });\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public elementRemoved() {\r\n this.database.changes({ live: true, since: 'now', include_docs: true })\r\n .on('change', change => {\r\n if (change.deleted) {\r\n console.log(change);\r\n this.elementRem.emit(change);\r\n }\r\n //renderDocsSomehow();\r\n }).on('error', console.log.bind(console));\r\n }\r\n\r\n public getRemoveListener() {\r\n return this.elementRem;\r\n }\r\n\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class CouchUbicacionesService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private change: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if(!this.isInstantiated) {\r\n sIdkatios= this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"ubicaciones_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios:string;\r\n \r\n this.sync(this.GetServer() + \"ubicaciones_\" + sIdkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE UBICACIONES *****************************************\")\r\n }\r\n }\r\n \r\n public GetServer():string{\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession(){\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if(sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null){\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n } \r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n \r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n \r\n console.log(\"********************************** COMPLETO CAMBIO UBICACIONES *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO UBICACIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public ChangeItem() {\r\n this.database.changes({ live: true, since: 'now', include_docs: true })\r\n .on('change', change => {\r\n //if (change.deleted) {\r\n console.log(change);\r\n this.change.emit(change);\r\n //}\r\n //renderDocsSomehow();\r\n }).on('error', console.log.bind(console));\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({include_docs: true});\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({include_docs: false});\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public getChange() {\r\n return this.change;\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3NotificacionesAPP {\r\n public oDataM3Procesos: M3Procesos;\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n var sIdkatios: string;\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"notificaciones_\" + sIdkatios.toLowerCase().trim(), { auto_compaction: true });\r\n this.sync(this.GetServer() + \"notificaciones_\" + sIdkatios.toLowerCase().trim());\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Obtener informacion de base de datos.\r\n public GetDataPouchBD(isKey: string) {\r\n return this.database.get(isKey);\r\n }\r\n\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public sync(remote: string) {\r\n \r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n \r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n //armar key de documento que se quiere consultar\r\n public GetKeyDocumentoDB(isIDKatios: string, isDocumento: string) {\r\n return isIDKatios + \"?\" + isDocumento;\r\n }\r\n\r\n\r\n}\r\n","import { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3PrdPackByTipo } from \"../Maestro/m3-pack-by-tipo\";\r\nimport { M3PackByReglas } from \"../Maestro/m3-pack-by-reglas\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { M3PItemsWEB } from \"../Registro/m3-pdetalle-items\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceM3PackByipo {\r\n\r\n\r\n private operators = {\r\n '<': function (a, b) { return +a < +b },\r\n '>': function (a, b) { return +a > +b },\r\n '<=': function (a, b) { return +a <= +b },\r\n '>=': function (a, b) { return +a >= +b },\r\n 'IGUAL': function (a, b) { return a == b },\r\n 'DIFF': function (a, b) { return a != b },\r\n 'EN': function (a, b) { return a === b },\r\n 'AND': function (a, b) { return a && b },\r\n 'OR': function (a, b) { return a || b },\r\n '*': function (a, b) { return true },\r\n 'MOD': function (a, b) { return +a % +b == 0 },\r\n // ...\r\n };\r\n\r\n\r\n /**\r\n * Validar si el producto que será hijo, cumple con las caracteristicas\r\n * @param m3ProcPKG \r\n * @param producto \r\n */\r\n public ValidarSiEsTipo(m3ProcPKG: TypeM3PrdGrp, producto: TypeM3PrdGrp) {\r\n try {\r\n if (m3ProcPKG.M3PACKBYTIPO.find(x => x.DESTINO == producto.TIPO)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } catch{\r\n return false;\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Aplicacion de reglas de paquetes, teniendo en cuenta al información del producto ingresado.\r\n * @param m3ProcPKG \r\n * @param producto \r\n * @param oM3PItemsWEB \r\n */\r\n public GeneraValidaciones(m3ProcPKG: TypeM3PrdGrp, producto: TypeM3PrdGrp, oM3PItemsWEB: M3PItemsWEB) {\r\n try {\r\n var bResp:boolean = true;\r\n var oM3PACKBYTIPO: M3PrdPackByTipo = m3ProcPKG.M3PACKBYTIPO.find(x => x.DESTINO == producto.TIPO);\r\n if (oM3PACKBYTIPO) {\r\n for (var i = 0; oM3PACKBYTIPO.M3PACKREGLAS.length; i++) {\r\n var oM3PackByReglas: M3PackByReglas = oM3PACKBYTIPO.M3PACKREGLAS[i];\r\n //Se esta validando el papa del paquete.\r\n if(this.operators[oM3PackByReglas.Operacion](this.GetParametros(oM3PackByReglas.Param1, m3ProcPKG) , this.GetParametros(oM3PackByReglas.Param2, m3ProcPKG))){\r\n this.ValidacionAccion(oM3PackByReglas.Accion, oM3PItemsWEB);\r\n }else{\r\n bResp = false;\r\n }\r\n }\r\n }\r\n } catch{\r\n\r\n }\r\n return bResp;\r\n }\r\n\r\n /**\r\n * Validación de accion de reglas de paquete.\r\n * @param sAccion \r\n */\r\n private ValidacionAccion(sAccion:string, oM3PItemsWEB:M3PItemsWEB){\r\n try{\r\n if(sAccion != \"\") {\r\n var oAccion:any = JSON.parse(sAccion);\r\n if(oAccion.Accion){\r\n switch(oAccion.Accion){\r\n case \"Cantidad\":\r\n oM3PItemsWEB.dCantidad = oAccion.Valor;\r\n break;\r\n }\r\n }\r\n }\r\n }catch(ex){\r\n\r\n }\r\n \r\n\r\n\r\n }\r\n\r\n\r\n /**\r\n * Obtener información de parametros, teniendo en cuenta las reglas.\r\n * @param parametro \r\n * @param producto \r\n */\r\n private GetParametros(parametro: string, producto: TypeM3PrdGrp) {\r\n var sParam: string = \"\";\r\n try {\r\n var regla: string = parametro.split(\"_\")[0];\r\n switch (regla.toUpperCase()) {\r\n case \"ADI\":\r\n sParam = producto.LoM3PrdAdicionales.find(x => x.ATRIBUTO == parametro.split(\"_\")[1]).VALOR;\r\n break;\r\n case \"CONST\":\r\n sParam = parametro.split(\"_\")[1];\r\n break;\r\n default:\r\n if(regla.toUpperCase().startsWith(\"SKP\") ){\r\n sParam = producto.LoM3PrdGeneral[0][regla];\r\n }\r\n break;\r\n }\r\n } catch{\r\n\r\n }\r\n return sParam;\r\n }\r\n\r\n\r\n\r\n}","import * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\n\r\nexport class FiltrosDiarioOffLine {\r\n public FiltrarByFechasOff(Data, AddToDoc: Function) {\r\n try {\r\n var rows: Array<any>;\r\n //var newRows = new Array<any>();\r\n var fechaI = sessionStorage.getItem(\"FechaItCOFF\");\r\n var fechaF = sessionStorage.getItem(\"FechaFtCOFF\");\r\n rows = Data.rows;\r\n\r\n if (fechaF && fechaI) {\r\n var iFInicio = this.GetFechaNumber(fechaI);\r\n var iFFinal = this.GetFechaNumber(fechaF);\r\n console.log(iFInicio)\r\n console.log(iFFinal)\r\n for (var i = 0; i < rows.length; i++) {\r\n var m3p: any = rows[i].doc;\r\n if (m3p) {\r\n var fechaProc = this.GetFechaNumber(m3p.Fecha)\r\n console.log(fechaProc)\r\n if (+fechaProc >= +iFInicio && +fechaProc <= +iFFinal) {\r\n //newRows.push(rows[i]);\r\n AddToDoc(m3p);\r\n }\r\n }\r\n }\r\n }\r\n\r\n } catch (ex) {\r\n console.log(\"FiltrarByFechasOff\")\r\n console.log(ex)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n public FiltrarByTexto(Data, sTexto: string, AddToDoc: Function) {\r\n try {\r\n var rows: Array<any>;\r\n\r\n rows = Data.rows;\r\n for (var i = 0; i < rows.length; i++) {\r\n var m3p: any = rows[i].doc;\r\n if (m3p) {\r\n if (m3p.IdM3.includes(sTexto) || (m3p.ndocUActivo && m3p.ndocUActivo.includes(sTexto))) {\r\n //newRows.push(rows[i]);\r\n AddToDoc(m3p);\r\n }\r\n }\r\n }\r\n\r\n } catch (ex) {\r\n console.log(\"FiltrarByFechasOff\")\r\n console.log(ex)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n private GetFechaNumber(sdate: string) {\r\n //var date = new Date(sdate);\r\n var d = moment(sdate).format('YYYYMMDD');\r\n\r\n return d;\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n// @Injectable()\r\nexport class CouchPerxipo {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"perxtipo_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios: string;\r\n\r\n this.sync(this.GetServer() + \"perxtipo_\" + sIdkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE perxtipo *****************************************\")\r\n\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: false,\r\n retry: false\r\n }).on('complete', change => {\r\n console.log(\"********************************** COMPLETO CAMBIO perxtipo *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO perxtipo *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n\r\n\r\n public async Destroy() {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n// @Injectable()\r\nexport class CouchDinamByProcesos {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n \r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"dinamxproc_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios: string;\r\n\r\n this.sync(this.GetServer() + \"dinamxproc_\" + sIdkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE dinamxproc_ *****************************************\")\r\n \r\n}\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: false,\r\n retry: false\r\n }).on('complete', change => {\r\n console.log(\"********************************** COMPLETO CAMBIO dinamxproc_ *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO dinamxproc_ *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({include_docs: false});\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n\r\n\r\n public async Destroy() {\r\n var respuesta;\r\n respuesta= await this.database.destroy()\r\n return respuesta\r\n }\r\n}"],"names":["_","timeout","Headers","RequestOptions","Injectable","Http","HttpClient","EventEmitter","moment","tslib_1.__values","_.cloneDeep","PostServiceM3","tslib_1.__decorate","tslib_1.__param","Optional","M3DevicesService"],"mappings":";;;;;;;;IAAA;;;;;;;;;;;;;;AAcA,IAeO,IAAI,QAAQ,GAAG;QAClB,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,kBAAkB,CAAC;YAC3C,KAAK,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACjD,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBACjB,KAAK,IAAI,CAAC,IAAI,CAAC;oBAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;wBAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAChF;YACD,OAAO,CAAC,CAAC;SACZ,CAAA;QACD,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC3C,CAAC,CAAA;AAED,wBAU2B,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI;QACpD,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;QAC7H,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;;YAC1H,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBAAE,IAAI,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC;oBAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;QAClJ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC;AAED,qBAAwB,UAAU,EAAE,SAAS;QACzC,OAAO,UAAU,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC,EAAE,CAAA;IACzE,CAAC;AAED,wBAA2B,WAAW,EAAE,aAAa;QACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,UAAU;YAAE,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACnI,CAAC;AAED,uBAA0B,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,SAAS;QACvD,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,UAAU,OAAO,EAAE,MAAM;YACrD,mBAAmB,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC3F,kBAAkB,KAAK,IAAI,IAAI;gBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;aAAE;YAAC,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC;aAAE,EAAE;YAC9F,cAAc,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,UAAU,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,EAAE;YAC/I,IAAI,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;SACzE,CAAC,CAAC;IACP,CAAC;AAED,yBAA4B,OAAO,EAAE,IAAI;QACrC,IAAIA,IAAC,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAa,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACjH,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,OAAO,MAAM,KAAK,UAAU,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,cAAa,OAAO,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACzJ,cAAc,CAAC,IAAI,OAAO,UAAU,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QAClE,cAAc,EAAE;YACZ,IAAI,CAAC;gBAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC9D,OAAOA,IAAC;gBAAE,IAAI;oBACV,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI;wBAAE,OAAO,CAAC,CAAC;oBAC7J,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;wBAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;oBACxC,QAAQ,EAAE,CAAC,CAAC,CAAC;wBACT,KAAK,CAAC,CAAC;wBAAC,KAAK,CAAC;4BAAE,CAAC,GAAG,EAAE,CAAC;4BAAC,MAAM;wBAC9B,KAAK,CAAC;4BAAEA,IAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;wBACxD,KAAK,CAAC;4BAAEA,IAAC,CAAC,KAAK,EAAE,CAAC;4BAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;4BAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;4BAAC,SAAS;wBACjD,KAAK,CAAC;4BAAE,EAAE,GAAGA,IAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BAACA,IAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;wBACjD;4BACI,IAAI,EAAE,CAAC,GAAGA,IAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;gCAAEA,IAAC,GAAG,CAAC,CAAC;gCAAC,SAAS;6BAAE;4BAC5G,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAEA,IAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACtF,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAIA,IAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAEA,IAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAAC,CAAC,GAAG,EAAE,CAAC;gCAAC,MAAM;6BAAE;4BACrE,IAAI,CAAC,IAAIA,IAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gCAAEA,IAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAACA,IAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAAC,MAAM;6BAAE;4BACnE,IAAI,CAAC,CAAC,CAAC,CAAC;gCAAEA,IAAC,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;4BACtBA,IAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;4BAAC,SAAS;qBAC9B;oBACD,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAEA,IAAC,CAAC,CAAC;iBAC9B;gBAAC,OAAO,CAAC,EAAE;oBAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;oBAAC,CAAC,GAAG,CAAC,CAAC;iBAAE;wBAAS;oBAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAAE;YAC1D,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;gBAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;YAAC,OAAO,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACpF;IACL,CAAC;AAED,sBAIyB,CAAC;QACtB,IAAI,CAAC,GAAG,OAAO,MAAM,KAAK,UAAU,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,OAAO;YACH,IAAI,EAAE;gBACF,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM;oBAAE,CAAC,GAAG,KAAK,CAAC,CAAC;gBACnC,OAAO,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;aAC3C;SACJ,CAAC;IACN,CAAC;;;;;;;QC7FG,uBACY,MACA;YADA,SAAI,GAAJ,IAAI;YACJ,eAAU,GAAV,UAAU;YAElB,IAAI,CAAC,YAAY,EAAE,CAAC;SACvB;;;;QAEM,oCAAY;;;;;gBAEf,IAAI,IAAI,CAAM;;gBACd,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBACvD,IAAI,WAAW,EAAE;;oBACb,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC1C,IAAI,WAAW,CAAC,gBAAgB,EAAE;wBAC9B,IAAI,GAAG,WAAW,CAAC;qBACtB;iBACJ;gBACD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;;;;;QAIzB,kDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGV,qCAAa;;;;YAAnB,UAAoB,QAAgB;;;;;;;gCAEjB,qBAAM,IAAI,CAAC,oBAAoB,CAAC,0BAA0B,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA/F,IAAI,GAAG,SAAwF;gCAC/F,SAAS,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;gCACjD,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;;;;gCAGrC,OAAO,CAAC,GAAG,CAAC,KAAG,CAAC,CAAC;;;;;;aAExB;;;;;QAED,4CAAoB;;;;YAApB,UAAqB,IAAI;gBACrB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;gBAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,kBAAkB,CAAC;gBAClD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;aAC/B;;;;QAED,oCAAY;;;YAAZ;gBACI,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;;;;QAED,wCAAgB;;;YAAhB;gBACI,OAAO,IAAI,CAAC,kBAAkB,CAAC;aAClC;;;;;;;QAGD,+BAAO;;;;;YAAP,UAAQ,MAAc,EAAE,SAAiB;gBACrC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBAC5C,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;iBACrB,CAAC,CAAC;aACN;;;;;;;;QAID,0CAAkB;;;;;;YAAlB,UAAmB,MAAc,EAAE,SAAiB,EAAE,WAAmB;gBACrE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC,CAAC,IAAI,CACzCC,iBAAO,CAAC,WAAW,CAAC,CACvB,CAAC,GAAG,CAAC,UAAA,GAAG;oBACL,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;iBACrB,CAAC,CAAC;aACN;;;;;;;QAED,uCAAe;;;;;;YAAf,UAAgB,MAAc,EAAE,SAAiB,EAAE,UAAe;;gBAC9D,IAAM,OAAO,GAAG,IAAIC,UAAO,EAAE,CAAC;gBAE9B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;;gBAKnD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,EACzC;oBACI,MAAM,EAAE,UAAU;iBACrB,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBACN,OAAO,GAAG,CAAC;iBACd,CAAC,CAAC;aACV;;;;;;;;QAED,8CAAsB;;;;;;;YAAtB,UAAuB,MAAc,EAAE,SAAiB,EAAE,UAAe,EAAE,WAAmB;;gBAC1F,IAAM,OAAO,GAAG,IAAIA,UAAO,EAAE,CAAC;gBAE9B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;;gBAKnD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,EACzC;oBACI,MAAM,EAAE,UAAU;iBACrB,CAAC;qBACD,IAAI,CACDD,iBAAO,CAAC,WAAW,CAAC,CACvB;qBACA,GAAG,CAAC,UAAA,GAAG;oBACJ,OAAO,GAAG,CAAC;iBACd,CAAC,CAAC;aACV;;;;;;;QAED,qCAAa;;;;;;YAAb,UAAc,MAAc,EAAE,SAAiB,EAAE,UAAe;;gBAC5D,IAAM,OAAO,GAAG,IAAIC,UAAO,EAAE,CAAC;;;;gBAQ9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,EACzC;oBACI,YAAY,EAAE,MAAM;oBACpB,MAAM,EAAE,UAAU;iBACrB,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBACN,OAAO,GAAG,CAAC;iBACd,CAAC,CAAC;aACV;;;;;;;QAED,4CAAoB;;;;;;YAApB,UAAqB,MAAc,EAAE,SAAiB,EAAE,UAAe;;gBACnE,IAAM,OAAO,GAAG,IAAIA,UAAO,EAAE,CAAC;;;;gBAQ9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,EACzC;oBACI,YAAY,EAAE,aAAa;oBAC3B,MAAM,EAAE,UAAU;iBACrB,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBACN,OAAO,GAAG,CAAC;iBACd,CAAC,CAAC;aACV;;;;;QAID,mCAAW;;;;YAAX,UAAY,MAAc;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACtD;;;;;;;QAEM,4CAAoB;;;;;;sBAAC,MAAc,EAAE,MAAW,EAAE,WAAmB;gBACxE,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;;;;;;;QAGrF,2CAAmB;;;;;YAAnB,UAAoB,MAAc,EAAE,MAAW;gBAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;aACtE;;;;;;QAEM,qCAAa;;;;;sBAAC,MAAc,EAAE,MAAW;gBAC5C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;;;;;;;QAGjE,2CAAmB;;;;;YAAnB,UAAoB,MAAc,EAAE,MAAW;gBAC3C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;aACtE;;;;;;QAED,4CAAoB;;;;;YAApB,UAAqB,MAAc,EAAE,MAAW;gBAC5C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;aACvE;;;;;;QAED,4CAAoB;;;;;YAApB,UAAqB,MAAc,EAAE,MAAW;;gBAC5C,IAAM,OAAO,GAAG,IAAIA,UAAO,EAAE,CAAC;;gBAG9B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;;gBAI3D,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,kBAAkB,GAAG,MAAM,EACvD;oBACI,MAAM,EAAE,MAAM;iBACjB,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBACN,OAAO,GAAG,CAAC;iBACd,CAAC,CAAC;aAEV;;;;;;QAED,2CAAmB;;;;;YAAnB,UAAoB,MAAc,EAAE,MAAW;gBAC3C,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;aACtE;;;;;;QAED,kDAA0B;;;;;YAA1B,UAA2B,MAAc,EAAE,MAAW;gBAClD,OAAO,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;aAC7E;;;;;QAED,gCAAQ;;;;YAAR,UAAS,MAAc;gBACnB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC9C;;;;;QAED,mCAAW;;;;YAAX,UAAY,MAAc;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACtD;;;;;QAED,oCAAY;;;;YAAZ,UAAa,MAAc;gBACvB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACvD;;;;;QAED,6BAAK;;;;YAAL,UAAM,MAAc;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aAChD;;;;;;QAED,wCAAgB;;;;;YAAhB,UAAiB,MAAc,EAAE,OAAe;gBAC5C,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;aACpE;;;;;QAKD,qCAAa;;;;YAAb,UAAc,MAAc;gBACxB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACxD;;;;;QAGD,mCAAW;;;;YAAX,UAAY,MAAc;gBACtB,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACtD;;;;;;QAGD,2CAAmB;;;;YAAnB,UAAoB,MAAc;gBAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBAChD,OAAO,GAAG,CAAC;iBACd,CAAC,CAAC;aACN;;;;;;QAGD,uCAAe;;;;;YAAf,UAAgB,MAAc,EAAE,MAAM;gBAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CACrD,UAAA,GAAG;oBACC,OAAO,GAAG,CAAC,UAAU,CAAC;iBACzB,CACJ,CAAC;aACL;;;;;;;QAED,+CAAuB;;;;;YAAvB,UAAwB,MAAc,EAAE,MAAM;gBAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBACzD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;iBACrB,CAAC,CAAC;aACN;;;;;;;QAED,0DAAkC;;;;;;YAAlC,UAAmC,MAAc,EAAE,MAAM,EAAE,SAAS;gBAChE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,UAAA,GAAG;oBACrD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;iBACrB,CAAC,CAAC;aACN;;;;;;QACD,wDAAgC;;;;;YAAhC,UAAiC,MAAc,EAAE,MAAM;gBACnD,OAAO,IAAI,CAAC,kCAAkC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACzF;;;;;;;;;;QAKD,yDAAiC;;;;;;;YAAjC,UAAkC,MAAc,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS;;gBACxE,IAAI,OAAO,GAAG,IAAIC,iBAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAEvD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAC1D,UAAA,GAAG;oBACC,OAAO,GAAG,CAAC;iBACd,CACJ,CAAC;aACL;;;;;;;QAED,8CAAsB;;;;;;YAAtB,UAAuB,MAAc,EAAE,MAAM,EAAE,OAAO;gBAClD,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aACzF;;;;;;;QAED,gDAAwB;;;;;;YAAxB,UAAyB,MAAc,EAAE,MAAM,EAAE,OAAO;gBACpD,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aAC3F;;;;;;;QAED,kDAA0B;;;;;;YAA1B,UAA2B,MAAc,EAAE,MAAM,EAAE,OAAO;gBACtD,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;aACnG;;;;;;;;;QAKD,yDAAiC;;;;;;YAAjC,UAAkC,MAAc,EAAE,MAAM,EAAE,SAAS;gBAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,CACjD,UAAA,GAAG;oBAEC,OAAO,GAAG,CAAC;iBACd,CACJ,CAAC;aACL;;;;;;QAED,8CAAsB;;;;;YAAtB,UAAuB,MAAc,EAAE,MAAM;gBACzC,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;aAChF;;;;;;QAID,sDAA8B;;;;;YAA9B,UAA+B,MAAc,EAAE,MAAM;gBACjD,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACxE;;;;;;QAED,gDAAwB;;;;;YAAxB,UAAyB,MAAc,EAAE,MAAM;gBAC3C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;aAClE;;;;;;QAED,kDAA0B;;;;;YAA1B,UAA2B,MAAc,EAAE,MAAM;gBAC7C,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;aACpE;;;;;;QAED,uDAA+B;;;;;YAA/B,UAAgC,MAAc,EAAE,MAAM;gBAClD,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACzF;;;;;;QAED,uDAA+B;;;;;YAA/B,UAAgC,MAAc,EAAE,MAAM;gBAClD,OAAO,IAAI,CAAC,iCAAiC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACxF;;;;;;;;QAED,yCAAiB;;;;;;YAAjB,UAAkB,MAAc,EAAE,MAAM,EAAE,SAAS;;gBAC/C,IAAM,OAAO,GAAG,IAAID,UAAO,EAAE,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;;gBACnD,IAAM,OAAO,GAAG,IAAIC,iBAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;gBAEzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,CAC1D,UAAA,GAAG;oBAEC,OAAO,GAAG,CAAC;iBACd,CACJ,CAAC;aACL;;oBA3WJC,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;wBAVQC,OAAI;wBACJC,aAAU;;;;4BADnB;;;;;;;ACAA,QAAA;;;;;;;QAEI,sCAAgB;;;;YAAhB,UAAiB,QAAQ;;gBAErB,IAAM,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC;;gBAClD,IAAM,GAAG,GAAG,QAAQ,CAAC;;gBACrB,IAAI,SAAS,CAAC;gBACd,WAAW,CAAC,GAAG,EAAE,UAAC,GAAG,EAAE,MAAM;oBACzB,SAAS,GAAE,MAAM,CAAC;iBACrB,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC;aACpB;;;;;QAED,oCAAc;;;;YAAd,UAAe,QAAQ;;gBACnB,IAAI,EAAE,GAAG,QAAQ,CAAC;;gBAClB,IAAI,EAAE,GAAG,QAAQ,CAAC;;gBAClB,IAAI,IAAI,GAAG,UAAU,CAAC;;gBACtB,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAC,GAAG,CAAC,CAAC;gBACzC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,EAAE,EAAC,GAAG,CAAC,CAAC;gBACtC,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,EAAC,GAAG,CAAC,CAAC;gBAExC,OAAO,SAAS,CAAC;aACpB;0BAtBL;QAuBC;;;;;;ACvBD;QAcI;4BAFsC,IAAIC,eAAY,EAAE;YAGpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;gBACtB,IAAI,SAAS,CAAS;;gBACtB,IAAI,QAAQ,CAAS;gBACrB,SAAS,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC9C,QAAQ,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;gBACxC,IAAI,SAAS,EAAE;oBACX,IAAI,QAAQ,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,EAAE;wBACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;wBACrG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;wBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;qBAChC;yBACI;wBACD,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;wBAClG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;wBACxE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;wBAC3B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;qBAC7B;iBACJ;aACJ;SACJ;;;;QAGM,8CAAqB;;;;;gBACxB,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;gBACvD,IAAI,WAAW,CAAC;gBAChB,IAAI,WAAW,EAAE;oBACb,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;wBAC3E,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBACrC;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;QAIT,mDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;QAGT,kCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;;QAGnB,4BAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;QAG1B,uCAAc;;;;sBAAC,KAAa;gBAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;;;;QAI7B,0CAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;;QAGlB,6BAAI;;;;sBAAC,MAAc;;;gBAwBtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBAEpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;iBAC1H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;;QAIA,0CAAiB;;;;;sBAAC,UAAkB,EAAE,WAAmB;gBAC5D,OAAO,UAAU,GAAG,GAAG,GAAG,WAAW,CAAC;;;oBAvH7CH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;6BAPD;;;;;;;;QCeI;4BAFsC,IAAIG,eAAY,EAAE;YAGpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBACzE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;SACJ;;;;QAEM,0BAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;;QAGnB,oBAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;;QAI1B,2CAA0B;;;;;sBAAC,EAAU,EAAE,QAAa;;gBACvD,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;gBAClB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAC3B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC5B,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC,EAAE,UAAA,KAAK;oBACJ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;wBACvB,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;qBACtC;yBAAM;wBACH,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;4BAC/B,MAAM,CAAC,KAAK,CAAC,CAAC;yBACjB,CAAC,CAAC;qBACN;iBACJ,CAAC,CAAC;;;;;;;QAKM,gDAA+B;;;;;sBAAC,EAAU,EAAE,QAAa;;;;;;gCAClE,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;;;;gCAED,qBAAM,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,EAAA;;gCAA3B,MAAM,GAAG,SAAkB;gCAC/B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;gCAC5B,qBAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAA;;gCAAjC,SAAiC,CAAC;;;;sCAE9B,OAAK,CAAC,MAAM,IAAI,KAAK,CAAA;oCAArB,wBAAqB;gCACrB,qBAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAA;;gCAAjC,SAAiC,CAAC;;oCAElC,sBAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;oCAC/B,MAAM,CAAC,OAAK,CAAC,CAAC;iCACjB,CAAC,EAAC;;;;;;;;;;;;;;;;;;;;;;;;QAoBR,+BAAc;;;;sBAAC,KAAa;gBAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;;;;;QAI7B,uBAAM;;;;sBAAC,KAAa;;gBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAChC,OAAO,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACvC,CAAC,CAAC;;;;;QAIA,kCAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;;QAGlB,qBAAI;;;;sBAAC,MAAc;;;gBACtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAEpE,IAAI,OAAO,GAAG;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC;;gBAEF,IAAI,QAAQ,GAAG;oBACX,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC;;gBAGF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE;oBAC/B,OAAO,SAAA;iBACV,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBACpB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;iBAChD,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC9B,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAA,KAAK;oBAChB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;iBAChD,CAAC,CAAC;;;;;;;;;;QAOA,qCAAoB;;;;;;;;sBAAC,UAAkB,EAAE,MAAc,EAAE,MAAc,EAAE,WAAmB,EAAE,OAAe;gBAChH,OAAO,KAAK,GAAG,UAAU,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,GAAG,GAAG,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC;;;;;QAIzF,wBAAO;;;;;gBACV,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAA,CAAC;oBAC1B,KAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC5E,CAAC,CAAC;;;oBAjIVH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;qBAPD;;;;;;;ACAA,QAAA;QAII,iBAAY,UAAiB,EAAE,OAAc;YACzC,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;SACxB;sBAPL;QAQC;;;;;;ACRD,QAAA;;;+BAAA;QAMC;;;;;;ACJD,QAAA;;oCAU8B,IAAI,KAAK,EAAoB;;yBAZ3D;QAaC;;;;;;ACbD,QAIA;;0BAgBkC,IAAI;gCACK,IAAI;mCACzB,IAAI,KAAK,EAAc;gCAC1B,IAAI,UAAU,EAAE;0BACtB,IAAI,KAAK,EAAc;6BACpB,IAAI,KAAK,EAAkB;;2BAzB3C;QA0BC,CAAA;AAtBD,QAwBA;;;6BA5BA;QAgCC;;;;;;AC1BD,QAAA;QAsBI;kCAZiB,IAAI,KAAK,EAAgB;sCACrB,IAAI,KAAK,EAAoB;gCACnC,IAAI,KAAK,EAAmB;oCACA,IAAI;gCAEhC,IAAI,KAAK,EAAO;6BACnB,IAAI,KAAK,EAAoB;mCAGd,IAAI;SAM9B;2BA/BL;QAkCC,CAAA;AA5BD,QA8BA;;;+BApCA;QAwCC;;;;;;ACxCD,QAAA;;;2BAAA;QAMC;;;;;;ACND,QAAA;;;8BAAA;QAGC,CAAA;AAHD,QAKA;;oCAGuC,KAAK;+BACV,KAAK;0BAEX,EAAE;+BACG,EAAE;kCACC,EAAE;6BACP,EAAE;+BACA,EAAE;+BAEF,EAAE;4BACL,EAAE;8BACA,EAAE;iCAEC,CAAC,CAAC;kCACD,CAAC,CAAC;8BACN,CAAC,CAAC;kCACE,EAAE;gCACJ,EAAE;qCACL,EAAE;;0BA1BjC;QA2BC,CAAA;AAtBD,QAwBA;;;8BA7BA;QAgCC;;;;;;AChCD,QAAA;;;2BAAA;QAGC;;;;;;ACDD,QAAA;;gCAOgC,CAAC;uCACA,IAAI,KAAK,EAAuB;gCAM/B,IAAI;;uBAhBtC;QAkBC;;;;;;ACZD,QAAA;;8BAQgC,CAAC;yBAEd,IAAI,KAAK,EAAmB;gCACrB,IAAI,KAAK,EAAmB;gCAC5B,IAAI,KAAK,EAAgB;uCAClB,IAAI,KAAK,EAAuB;mCAGpC,IAAI,KAAK,EAAsB;kCAGzB,EAAE;;;;;QAG1B,kCAAY;;;;gBACf,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,OAAO,GAAA,CAAC,CAAC,KAAK,CAAC;;;;;QAIhE,sCAAgB;;;;gBACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAC;;;;;;QAKpE,sCAAgB;;;;sBAAC,MAAM;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,GAAG,MAAM,CAAC;;;;;QAKtE,mCAAa;;;;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC;;0BA9CjF;QAgDC;;;;;;AC9CD,QAAA;;uCAOiC,IAAI,KAAK,EAAuB;;wBATjE;QAUC;;;;;;ICVD,IAAA;;;yBAAA;QAKC,CAAA;;;;;;ACDD;IASA,IAAM,MAAM,GAAG,OAAO,CAAC;AACvB,QAAA;;QA+CI;6BAvCyB,CAAC;yBACL,CAAC;gCACM,CAAC;yBAUd,IAAI,KAAK,EAAe;uCACV,IAAI,KAAK,EAAuB;iCACtC,IAAI,KAAK,EAAgB;iCACzB,IAAI,KAAK,EAAiB;6BAC9B,IAAI,KAAK,EAAY;8BACpB,IAAI,UAAU,EAAE;6BACjB,IAAI,KAAK,EAAa;gCACnB,IAAI,KAAK,EAAgB;kCACvB,IAAI,KAAK,EAAiB;oCASxB,IAAI,KAAK,EAAsB;kCAEzB,KAAK;kCAEL,KAAK;YAOjC,IAAI,CAAC,KAAK,GAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;SACvD;yBA/DL;QAiEC;;;;;;AC/DD,QAAA;;uCAKiC,IAAI,KAAK,EAAuB;;2BAPjE;QASC;;;;;;ACTD,QAAA;;;4BAAA;QAMC;;;;;;ACND,QAAA;;;kCAAA;QAOC;;;;;;QCLD;;;;;;;;;;;QAEW,2CAAqB;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EACxE,KAAU,EAAE,SAAmB,EAAE,YAAsB;gBACvD,aAAa,CAAC,wBAAwB,CAAC,6BAA6B,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGnG,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;oBAClC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;iBACpC,CAAC,CAAC;;;;;;;;;;QAGJ,2CAAqB;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EACxE,KAAU,EAAE,SAAmB,EAAE,YAAsB;gBACvD,aAAa,CAAC,wBAAwB,CAAC,6BAA6B,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGnG,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;oBAClC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;iBACpC,CAAC,CAAC;;;;;;;;QAGE,8CAAwB;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU;;;;wBAI7F,IAAI;4BACA,IAAI,GAAG,aAAa,CAAC,wBAAwB,CAAC,6BAA6B,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC;4BAC5G,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;4BACvB,sBAAO,IAAI,EAAC;yBACf;wBACD,WAAK;4BACD,sBAAO,IAAI,EAAC;yBACf;;;;;;;;;;;;;;QAGE,uCAAiB;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,IAAY,EAClF,KAAU,EAAE,SAAmB,EAAE,YAAsB;gBACvD,aAAa,CAAC,0BAA0B,CAAC,yBAAyB,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAG9G,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;oBAClC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;iBACpC,CAAC,CAAC;;;;;;;QAGL,+CAAyB;;;;;YAA/B,UAAgC,aAA4B,EAAE,SAAiB;;;;;;gCAEvE,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;gCACrC,qBAAM,aAAa,CAAC,aAAa,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA5F,IAAI,GAAG,SAAqF,CAAA;gCAC5F,sBAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAA;;;;aAC1B;;;;;;;QAEK,mCAAa;;;;;;YAAnB,UAAoB,aAA4B,EAAE,QAAgB,EAAE,IAAY;;;;;;gCAExE,IAAI,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;gCACrB,qBAAM,aAAa,CAAC,aAAa,CAAC,qBAAqB,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA5F,IAAI,GAAG,SAAqF,CAAA;gCAE5F,sBAAO,IAAI,EAAC;;;;aACf;;;;;;;;;QAEK,+CAAyB;;;;;;;;YAA/B,UAAgC,aAA4B,EAAE,SAAiB,EAAE,QAAa,EAAE,QAAgB,EAAE,QAAgB;;;;;;gCAE1H,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;gCACvG,qBAAM,aAAa,CAAC,wBAAwB,CAAC,gCAAgC,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAvG,IAAI,GAAG,SAAgG,CAAA;gCACvG,sBAAO,IAAI,EAAA;;;;aACd;;;;;;;;;QAEM,uCAAiB;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EACpE,KAAU,EAAE,SAAmB,EAAE,YAAsB;gBACvD,aAAa,CAAC,wBAAwB,CAAC,yBAAyB,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE/F,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;;oBAEC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC7E,CAAC,CAAC;;0BA3Ff;QA6FC;;;;;;QC1FD;;;;;;;;;;;QAEW,wCAAa;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAChE,KAAU,EAAE,SAAmB,EAAE,YAAsB;gBACvD,aAAa,CAAC,wBAAwB,CAAC,2BAA2B,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGjG,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;oBAClC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;iBACpC,CAAC,CAAC;;;;;;;;;;QAIX,oDAAyB;;;;;;;YAAzB,UAA0B,aAA4B,EAAE,SAAiB,EACrE,UAAoB,EAAE,WAAqB;gBAE3C,aAAa,CAAC,KAAK,CAAC,uCAAuC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEnF,IAAI,UAAU,CAAC;oBACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAE9B,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC9C,UAAU,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;qBAChE;oBAED,UAAU,CAAC,UAAU,CAAC,CAAC;iBAC1B,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;aACV;;;;;;;;;QAKM,qDAA0B;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EACzF,UAAoB,EAAE,WAAqB;gBAE3C,aAAa,CAAC,aAAa,CAAC,wCAAwC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEnG,IAAI,UAAU,CAAC;oBACf,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;oBAGzC,IAAI,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;wBACvD,UAAU,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;qBAClF;;oBAGD,UAAU,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,SAAS;wBAC9C,IAAI,SAAS,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE;4BAC7E,SAAS,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;yBACtD;qBACJ,CAAC,CAAC;oBAEH,UAAU,CAAC,UAAU,CAAC,CAAC;iBAC1B,EACG,UAAA,GAAG;oBACC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;oBAEjB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;;QAMJ,sDAA2B;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EAAE,UAAkB,EAC9G,UAAoB,EAAE,WAAqB;gBAE3C,aAAa,CAAC,aAAa,CAAC,yCAAyC,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEvH,IAAI,YAAY,CAAC;oBACjB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;oBAG3C,IAAI,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;wBACxD,YAAY,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;qBACpF;;oBAGD,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,IAAI;wBAC1C,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;4BACvE,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;yBAChD;qBACJ,CAAC,CAAC;oBAEH,UAAU,CAAC,YAAY,CAAC,CAAC;iBAC5B,EACG,UAAA,GAAG;;;oBAGC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;QAME,kDAAuB;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,SAAiB;;;;;;gCAGnG,KAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;gCAErB,qBAAM,aAAa,CAAC,aAAa,CAAC,qCAAqC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAApH,UAAU,GAAG,SAAuG,CAAC;gCAErH,sBAAO,UAAU,EAAC;;;;;;;;;;;;;;;;;QAIf,iDAAsB;;;;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EAAE,UAAkB,EAChI,UAAoB,EAAE,WAAqB,EAAE,WAAmB,EAAE,WAAmB;gBAAxC,4BAAA;oBAAA,mBAAmB;;gBAAE,4BAAA;oBAAA,mBAAmB;;;gBAErF,IAAI,KAAK,CAAC;gBACV,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gBACnD,IAAI,WAAW,EAAE;oBACb,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC5B;gBAED,aAAa,CAAC,aAAa,CAAC,gCAAgC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAC3F,IAAI,WAAW,CAAM;oBACrB,WAAW,GAAG,IAAI,CAAC;;;;oBAKnB,IAAI,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,UAAU,CAAC,QAAQ,EAAE,EAAE;wBAC5H,IAAI,CAAC,WAAW,EAAE;4BACd,WAAW,GAAG,IAAI,CAAC;yBACtB;qBACJ;oBACD,UAAU,CAAC,WAAW,CAAC,CAAC;iBAC3B,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;;QAWJ,sDAA2B;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAa,EAC7F,UAAoB,EAAE,WAAqB;;gBAE3C,IAAI,KAAK,CAAC;gBACV,KAAK,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC;gBAElC,aAAa,CAAC,aAAa,CAAC,yCAAyC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAEpG,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;;;QAcE,sDAA2B;;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAa,EACnG,UAAkB,EAAE,UAAkB,EAAE,WAA4B;gBAA5B,4BAAA;oBAAA,mBAA4B;;;;;;;gCAGpE,KAAK,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;gCAEnD,IAAI,WAAW,EAAE;oCACb,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;iCAC5B;gCACM,qBAAM,aAAa,CAAC,aAAa,CAAC,gCAAgC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAzG,IAAI,GAAG,SAAkG,CAAC;gCAC1G,sBAAO,IAAI,EAAC;;;;;;;;;;;;QAUH,yDAA8B;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,QAAgB;;;;;;gCAEzG,KAAK,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;gCACjB,qBAAM,aAAa,CAAC,aAAa,CAAC,uCAAuC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAArH,IAAI,GAAQ,SAAyG;gCACzH,sBAAO,IAAI,EAAC;;;;;;;;;;;;;QAKT,iDAAsB;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EACrF,UAAoB,EAAE,WAAqB;gBAE3C,aAAa,CAAC,aAAa,CAAC,oCAAoC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC/F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;;QAgCJ,gDAAqB;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EACpF,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,mCAAmC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC9F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;QAKJ,uDAA4B;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EAC3F,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,0CAA0C,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACrG,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;;QAcJ,+CAAoB;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EACnF,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,kCAAkC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC7F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;;QAWJ,qDAA0B;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EACzF,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,gCAAgC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC3F,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;iBAC7D,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;;QAGJ,mDAAwB;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EACrF,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,8BAA8B,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACvF,IAAI,SAAS,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACjD,UAAU,CAAC,SAAS,CAAC,CAAC;iBACzB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;+BAhUf;QAkUC;;;;;;AClUD,QAAA;;sCAGwC,CAAC;4CACH,IAAI,KAAK,EAAwB;;iCAJvE;QAKC,CAAA;AALD,QAOA;;mCAI6B,CAAC;8BACN,IAAI,KAAK,EAAO;sCACY,IAAI;iCACrB,CAAC;2BACP,IAAI;yBAMd,EAAE,SAAS,EAAE,KAAK,EAAE;;mCArBvC;QAuBC,CAAA;AAhBD,QAkBA;;;iCAzBA;QAgCC;;;;;;AChCD,QAAA;QACI;SAEC;;;;;;QAEM,sBAAK;;;;;sBAAC,CAAM,EAAE,QAAgB;;gBACjC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;gBAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,YAAY,CAAC;;qBAP5D;QASC;;;;;;;ICcD,IAAMI,QAAM,GAAG,OAAO,CAAC;AACvB,QAAA;QAMI,4BAAY,SAAc,EAAE,cAA2B;2BAL9B,IAAI,MAAM,EAAE;6BAUlB;gBACf,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,EAAE;gBACrC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,CAAA,EAAE;gBACrC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACvC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACvC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBAC1C,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACzC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA,EAAE;gBACxC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACxC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACvC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAA,EAAE;gBACpC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA,EAAE;aAE/C;YAjBG,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;SACzC;;;;;;;;;QAoBM,iDAAoB;;;;;;;;sBAAC,WAAuB,EAAE,aAA2B,EAAE,YAAyB,EAAE,WAA8B,EAAE,WAAuB;;;gBAChK,IAAI,KAAK,CAAC;;gBACV,IAAI,MAAM,GAAG,IAAI,KAAK,EAAO,CAAC;;gBAC9B,IAAI,YAAY,GAAG,IAAI,KAAK,EAAO,CAAC;;gBACpC,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;gBAChC,IAAI,WAAW,EAAE;oBACb,WAAW,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,WAAW,CAAC,IAAI,CAAC,UAAA,KAAK,IAAI,OAAA,CAAC,CAAC,IAAI,IAAI,KAAK,GAAA,CAAC,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,eAAe;;wBACvF,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;;wBACnD,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;;wBAG/C,IAAI,KAAI,CAAC,sBAAsB,CAAC,eAAe,CAAC,KAAK,eAAe,CAAC,MAAM,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,CAAC,EAAE;4BAEhH,MAAM,GAAG,IAAI,KAAK,EAAO,CAAC;4BAC1B,eAAe,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAA,UAAU;gCAChD,KAAK,GAAG,KAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;gCAC7G,IAAI,KAAK,EAAE;oCACP,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iCACtB;6BACJ,CAAC,CAAC;4BAEH,KAAK,GAAG,KAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;4BACpF,IAAI,KAAK,CAAC,YAAY,EAAE;;;gCAEpB,KAAI,CAAC,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,YAAY,CAAC,CAAC;gCACxD,KAAI,CAAC,uBAAuB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;gCACrD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;6BAC5B;yBACJ;qBAEJ,CAAC,CAAC;oBACH,OAAO,YAAY,CAAC;iBACvB;qBAAM;oBACH,OAAO,IAAI,CAAC;iBACf;;;;;;QAIL,mDAAsB;;;;YAAtB,UAAuB,eAA2B;;gBAC9C,IAAI,MAAM,GAAG,IAAI,CAAC;gBAElB,IAAI,eAAe,CAAC,QAAQ,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;oBAC7D,MAAM,GAAG,KAAK,CAAC;iBAClB;gBAED,IAAI,eAAe,CAAC,UAAU,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE;oBAC/D,MAAM,GAAG,KAAK,CAAC;iBAClB;gBAED,OAAO,MAAM,CAAC;aACjB;;;;;;;;;QAGM,qDAAwB;;;;;;;;sBAAC,WAAuB,EAAE,aAA2B,EAAE,YAAyB,EAAE,UAA6B,EAAE,WAAuB;;gBACnK,IAAI,KAAK,CAAC;;gBACV,IAAI,MAAM,GAAG,IAAI,KAAK,EAAO,CAAC;gBAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;oBACrD,IAAI,SAAS,CAAe;;oBAC5B,IAAI,YAAY,CAAC;oBACjB,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;oBACvC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;oBAClD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,UAAU,EAAE;wBAC3E,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,CAAC;wBAE5F,IAAI,WAAW,CAAC,IAAI,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,IAAI,OAAO,IAAI,KAAK,CAAC,YAAY,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,EAAE;4BAC3I,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACtB;6BAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE;;4BAEjF,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;4BACpC,OAAO,KAAK,CAAC;yBAChB;6BAAM,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,IAAI,IAAI,KAAK,CAAC,YAAY,EAAE;;4BAE/E,OAAO,KAAK,CAAC;yBAChB;6BAAM;;4BAEH,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBACtB;qBACJ;yBAAM;wBACH,OAAO,IAAI,CAAC;qBACf;iBACJ;gBACD,OAAO,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC;;;;;;;;;QAMxE,sDAAyB;;;;;;;sBAAC,WAAuB,EAAE,aAA2B,EAAE,YAAyB,EAAE,SAAuB;;gBACrI,IAAI,WAAW,CAAC;;gBAChB,IAAI,KAAK,CAAC;gBACV,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;gBACjD,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC5G,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;gBAClD,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBAC1C,OAAO,KAAK,CAAC;;;;;;;;QAQV,+CAAkB;;;;;;sBAAC,KAAK,EAAE,SAAuB;gBACpD,IAAI,KAAK,CAAC,YAAY,EAAE;oBACpB,KAAK,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;iBAC7C;;;;;;;;;;QAKE,yDAA4B;;;;;;;;sBAAC,WAAuB,EAAE,aAA2B,EAAE,YAAyB,EAAE,SAAuB,EAAE,YAAY;;;gBACtJ,IAAI,YAAY,CAAC;;gBACjB,IAAI,KAAK,CAAC;gBACV,IAAI;oBAEA,QAAQ,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG;;wBAEpC,KAAK,oBAAoB;4BACrB,YAAY,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,KAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,GAAA,CAAC,CAAA;4BACpN,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;4BACzD,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;4BAC5C,MAAM;wBACV,KAAK,OAAO;4BACR,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;4BAC7F,MAAM;wBACV,KAAK,QAAQ;4BACT,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;4BACjF,MAAM;wBACV,KAAK,iBAAiB;4BAClB,KAAK,GAAG,IAAI,CAAC,8BAA8B,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;4BACnJ,MAAM;wBACV,KAAK,SAAS;4BACV,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;4BACxE,MAAM;wBACV,KAAK,SAAS;4BACV,KAAK,GAAG,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;4BAC7E,MAAM;wBACV,KAAK,WAAW;4BACZ,KAAK,GAAG,IAAI,CAAC,2BAA2B,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;4BAChH,MAAM;wBACV,KAAK,MAAM;4BACP,KAAK,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;4BAC3D,MAAM;wBACV,KAAK,WAAW;4BACZ,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;4BAC5D,MAAM;;;;4BAKN,MAAM;wBACV;4BACI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;4BACrC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;4BAC3C,MAAM;qBACb;iBACJ;gBAAC,WAAM;oBACJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAIV,8CAAiB;;;;;;sBAAC,MAAkB,EAAE,IAAI,EAAE,KAAK;;gBACpD,IAAI,aAAa,CAAC;;gBAClB,IAAI,KAAK,CAAC;gBACV,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;;;;oBAInB,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,YAAY,GAAA,CAAC,CAAC;oBACzD,IAAI,CAAC,aAAa,EAAE;wBAChB,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;qBACvC;yBAAM;wBACH,IAAI,IAAI,IAAI,WAAW,IAAI,KAAK,IAAI,OAAO,EAAE;;4BACzC,IAAI,oBAAkB,GAAG,EAAE,CAAC;4BAC5B,aAAa,CAAC,OAAO,CAAC,UAAA,SAAS;gCAC3B,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;oCACnC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,UAAA,KAAK;wCAC/B,IAAI,CAAC,oBAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,KAAK,GAAA,CAAC;4CAAE,oBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qCACjF,CAAC,CAAC;iCACN;qCACI;oCACD,IAAI,CAAC,oBAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,SAAS,CAAC,WAAW,GAAA,CAAC;wCAAE,oBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;iCACjH;6BACJ,CAAC,CAAC;4BACH,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,oBAAkB,EAAE,CAAC;yBAChF;6BACI;;4BACD,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAO,CAAC;;4BAEhC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,MAAM,IAAI,IAAI,GAAA,CAAC,CAAC;4BACtD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;gCAErB,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;6BACzC;iCAAM;gCACH,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;6BACrC;yBACJ;qBAEJ;;oBAGD,IAAI,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,GAAA,CAAC,EAAE;wBAC/B,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;qBAC7B;iBACJ;qBACI;oBACD,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;iBACvC;gBACD,OAAO,KAAK,CAAC;;;;;;;QAIV,6CAAgB;;;;;sBAAC,SAAkB,EAAE,YAAY;;gBACpD,IAAI,KAAK,CAAC;gBACV,KAAK,GAAG,EAAE,cAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACtD,IAAI,YAAY,IAAI,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;oBAChE,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC3C;gBACD,OAAO,KAAK,CAAC;;;;;;;;;;QAUV,4DAA+B;;;;;;;;sBAAC,UAA8B,EAAE,KAAyB,EAAE,QAAoB,EAAE,aAAsB;;gBAC1I,IAAI,KAAK,GAAQ,IAAI,CAAC;gBACtB,IAAI;;oBACA,IAAI,OAAO,GAAe,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;oBAG/C,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAA,CAAC,CAAC;oBAEvG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAE/D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,IAAI,GAAA,CAAC,EAAE;wBAC/D,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;qBACvF;iBAEJ;gBAAC,OAAO,EAAE,EAAE;oBACT,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;gBACD,OAAO,KAAK,CAAC;;;;;;;;;;QASV,0DAA6B;;;;;;;;sBAAC,UAA8B,EAAE,KAAyB,EAAE,QAAoB,EAAE,aAAsB;;gBACxI,IAAI,KAAK,GAAQ,IAAI,CAAC;gBACtB,IAAI;;oBACA,IAAI,OAAO,GAAe,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;oBAC/C,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,GAAA,CAAC,CAAC;oBAC1D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBACtC,IAAI,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAA;wBAC1D,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;wBACpG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;qBAC/B;oBAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,IAAI,GAAA,CAAC,EAAE;wBAC/D,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;qBACvF;iBAEJ;gBAAC,OAAO,EAAE,EAAE;oBACT,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAC/C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAIT,kDAAqB;;;;;;sBAAC,OAAmB,EAAE,QAAoB,EAAE,eAAuB;;gBAC5F,IAAI,aAAa,GAAW,eAAe,CAAC;gBAE5C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;oBACrC,IAAI,cAAc,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;;oBACjD,IAAI,UAAU,GAAW,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;oBAC1C,IAAI,aAAa,IAAI,cAAc,EAAE;;wBACjC,IAAI,OAAO,GAAW,CAAC,CAAC;wBACxB,IAAI,aAAa,GAAG,cAAc,IAAI,CAAC,EAAE,CACxC;6BAAM;4BACH,OAAO,GAAG,aAAa,GAAG,cAAc,CAAC;4BACzC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;4BACvD,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;yBAC3C;wBACD,KAAK,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE;4BACpF,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC;4BACpG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAC/B;wBACD,MAAM;qBACT;iBACJ;;;;;;;;QASE,wDAA2B;;;;;;sBAAC,QAAoB,EAAE,OAAO;;gBAC5D,IAAI,eAAe,GAAG,IAAI,KAAK,EAAO,CAAC;gBACvC,IAAI;oBAEA,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,EAAE,CAAC,EAAE,EAAE;wBAChD,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;qBACrC;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;gBAED,OAAO,eAAe,CAAC;;;;;;;;;QAWpB,iDAAoB;;;;;;;sBAAC,WAAuB,EAAE,SAAuB,EAAE,YAAY;;gBACtF,IAAI,KAAK,CAAM;gBACf,IAAI,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;oBACpJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;iBAErD;qBAAM;oBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;;;;;;;;;QASV,sDAAyB;;;;;;;sBAAC,WAAuB,EAAE,SAAuB,EAAE,YAAY;;gBAC3F,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;gBACtD,KAAK,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;gBAC1B,OAAO,KAAK,CAAC;;;;;;;;QAGjB,wDAA2B;;;;;;YAA3B,UAA4B,YAAwB,EAAE,SAAuB,EAAE,YAAY;gBACvF,IAAI;;oBACA,IAAI,KAAK,CAAM;oBACf,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;wBAClH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;qBACrD;yBAAM;wBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC9C;iBAEJ;gBAAC,WAAM;oBACJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;aAChB;;;;;;;;QAQM,kDAAqB;;;;;;;sBAAC,aAA2B,EAAE,SAAuB,EAAE,YAAY;gBAC3F,IAAI;;oBACA,IAAI,KAAK,CAAM;oBACf,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;wBACnH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;qBACrD;yBAAM;wBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC9C;iBAEJ;gBAAC,WAAM;oBACJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;;;;;;;;;QAWV,wDAA2B;;;;;;;sBAAC,aAA2B,EAAE,SAAuB,EAAE,YAAY;gBACjG,IAAI;;oBACA,IAAI,KAAK,CAAM;oBACf,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;wBACnH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;qBACrD;yBAAM;wBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC9C;iBAEJ;gBAAC,WAAM;oBACJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAUV,mDAAsB;;;;;;sBAAC,SAAuB,EAAE,YAAY;;gBAC/D,IAAI,KAAK,CAAM;gBACf,IAAI,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;oBACpL,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;iBACrD;qBAAM;oBACH,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE;wBACjH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;qBACrD;yBAAM;wBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC9C;iBACJ;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAQV,kDAAqB;;;;;;sBAAC,SAAuB,EAAE,YAAY;;;gBAC9D,IAAI,KAAK,CAAM;gBACf,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;oBACxM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;iBAErD;qBAAM,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;;wBAC/H,KAAsB,IAAA,KAAAC,SAAA,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA,gBAAA,4BAAE;4BAAhF,IAAM,OAAO,WAAA;4BACd,IAAI,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE;gCACzF,OAAO,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;6BACpD;yBACJ;;;;;;;;;;;;;;;oBACD,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC7C;qBACI;oBACD,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;;;;;;;;;;;QAIV,2DAA8B;;;;;;;;;sBAAC,WAAuB,EAAE,aAA2B,EAAE,YAAyB,EACjH,cAAsC,EAAE,iBAAyB,EAAE,qBAAqB;;;gBACxF,IAAI,KAAK,CAAC;;gBACV,IAAI,qBAAqB,CAAC;gBAC1B,QAAQ,iBAAiB,CAAC,IAAI,EAAE;oBAC5B,KAAK,UAAU;wBAEX,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;wBACnJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,YAAY;wBACb,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAA,CAAC,CAAC;wBAC1L,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,SAAS;wBACV,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,GAAA,CAAC,CAAC;wBAE1L,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,UAAU;wBACX,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,GAAA,CAAC,CAAC;wBAEjM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,UAAU;wBACX,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,GAAA,CAAC,CAAC;wBAEzK,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;oBAEzD,KAAK,aAAa;;wBACd,IAAI,WAAW,UAAgB;wBAC/B,qBAAqB,GAAG,SAAS,CAAC;wBAClC,WAAW,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAA,CAAC,CAAA;wBACtG,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,IAAI,IAAI,WAAW,EAAE;4BACxE,qBAAqB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;yBAC7C;6BAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE;4BAClF,qBAAqB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;yBAC7C;wBACD,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,SAAS;wBACV,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAA,CAAC,CAAC;wBAC/K,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,cAAc;;wBACf,IAAI,QAAQ,GAAS,IAAI,IAAI,EAAE,CAAC;wBAChC,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAA,CAAC,CAAC;wBAC1K,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;wBACrD,MAAM;oBACV,KAAK,oBAAoB;wBACrB,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;4BAC9D,IAAI;;gCACA,IAAI,MAAM,GAAG,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,QAAQ,IAAI,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAA,CAAC,CAAC,KAAK,CAAA;gCAE/H,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,GAAA,CAAC,CAAC;gCAC7J,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;6BACxD;4BAAC,WAAM;gCACJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;6BACvC;yBACJ;6BAAM;4BACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;yBACvC;wBACD,MAAM;oBACV;;wBAEI,QAAQ,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;4BAC1C,KAAK,MAAM;;gCACP,IAAI,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gCACtD,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC,GAAA,CAAC,CAAC;gCACtJ,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;gCACrD,MAAM;4BACV,KAAK,MAAM;;gCACP,IAAI,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gCACtD,qBAAqB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,KAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,GAAA,CAAC,CAAC;gCACzK,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC;gCACrD,MAAM;4BACV;gCACI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gCACrC,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gCAC3C,MAAM;yBACb;wBACD,MAAM;iBAEb;gBACD,OAAO,KAAK,CAAC;;;;;;QAOV,6CAAgB;;;;sBAAC,cAAc;;gBAClC,IAAI,KAAK,CAAC;;gBACV,IAAI,YAAY,CAAC;gBACjB,IAAI,cAAc,EAAE;oBAChB,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;;oBAEvD,IAAI,KAAK,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAA;oBACzD,IAAI,KAAK,EAAE;;wBAEP,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;qBACrD;yBAAM;wBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;qBAC9C;iBAEJ;qBAAM;oBACH,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;iBAC9C;gBACD,OAAO,KAAK,CAAC;;;;;;;QAOV,uDAA0B;;;;;sBAAC,YAAiB;;gBAC/C,IAAI,KAAK,GAAG,IAAI,CAAC;gBACjB,IAAI;;;oBAGA,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;wBACvE,QAAQ,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI;4BACvC,KAAK,UAAU;gCACX,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gCACvG,MAAM;4BACV;gCACI,MAAM;yBACb;qBACJ;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;oBACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;gBACD,OAAO,KAAK,CAAC;;;;;;;QAGV,4CAAe;;;;;sBAAC,IAAU,EAAE,IAAU;;gBAEzC,IAAI,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;;gBAW7B,IAAI,YAAY,GAAW,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;;gBAC7D,IAAI,KAAK,GAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;;gBAC/C,IAAI,KAAK,GAAW,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAA;gBAC9C,IAAI,YAAY,IAAI,KAAK,IAAI,YAAY,IAAI,KAAK,EAAE;oBAChD,OAAO,IAAI,CAAC;iBACf;qBAAM;oBACH,OAAO,KAAK,CAAC;iBAChB;;;;;;QAIE,2CAAc;;;;sBAAC,IAAU;;gBAC5B,IAAI,CAAC,GAAGD,QAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACxC,OAAO,CAAC,CAAC;;;;;;;QAKN,0CAAa;;;;;sBAAC,KAAK,EAAE,YAAY;;gBACpC,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gBACxC,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;oBAC5D,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC;iBACvC;;;;;;;QAIE,oDAAuB;;;;;sBAAC,WAAuB,EAAE,KAAK;gBACzD,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;gBACrB,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;gBAC5C,KAAK,CAAC,SAAS,CAAC,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC;;gBAE7C,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,EAAE;oBACtB,KAAK,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,IAAI,EAAE,CAAC;iBAC3E;qBAAM;oBAEH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;wBACrB,KAAK,CAAC,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;qBAC1C;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;wBACpB,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC;qBACxC;iBACJ;;;;;;;;QAQE,8CAAiB;;;;;;sBAAC,YAAwB,EAAE,aAA2B,EAAE,WAA8B;;gBAC1G,IAAI,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACnD,mBAAmB,CAAC,WAAW,GAAG,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;gBACtF,mBAAmB,CAAC,oBAAoB,GAAG,CAAC,CAAC;gBAC7C,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;;;;;;;;;QAQnI,+CAAkB;;;;;;;sBAAC,YAAwB,EAAE,WAAuB,EAAE,WAA8B;gBACvG,IAAI;;oBACA,IAAI,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBACnD,mBAAmB,CAAC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC;oBACxD,mBAAmB,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBAC7C,OAAO,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,WAAW,CAAC,SAAS,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;iBAC3G;gBAAC,WAAM;oBACJ,OAAO,IAAI,CAAC;iBACf;;;;;;;;;;QAUE,iDAAoB;;;;;;;;sBAAC,YAAwB,EAAE,OAAe,EAAE,mBAAuC,EAAE,WAA8B;;gBAC1I,IAAI,qBAAqB,CAAuB;;gBAChD,IAAI,gBAAgB,GAAG,IAAI,KAAK,EAAwB,CAAC;gBAEzD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;oBAE7C,IAAI,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC;oBACjC,qBAAqB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC;oBACvG,IAAI,qBAAqB,EAAE;wBACvB,gBAAgB,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;qBAChD;iBAEJ;gBACD,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;;;;;;;gBAS3E,IAAI,mBAAmB,CAAC,WAAW,GAAG,CAAC,EAAE;oBACrC,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC;iBACvC;;;;gBAID,OAAO,mBAAmB,CAAC;;;;;;;;;QAQxB,kDAAqB;;;;;;;sBAAC,gBAA6C,EAAE,mBAAuC,EAAE,MAAc;;;gBAC/H,IAAI,wBAAwB,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,IAAI,aAAa,GAAA,CAAC,CAAC;;gBAEnF,IAAI,CAAC,wBAAwB,EAAE;;oBAI3B,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;;oBAChF,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC;;oBAGtF,IAAI,YAAY,GAAG,SAAS,EAAE;wBAC1B,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,SAAS,CAAC,CAAC;qBACzE;yBACI;wBACD,IAAI,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;qBAC/E;oBACD,mBAAmB,CAAC,wBAAwB,GAAG,gBAAgB,CAAA;;;wBAI/D,KAAoB,IAAA,KAAAC,SAAA,gBAAgB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,GAAA,CAAC,CAAA,gBAAA,4BAAE;4BAA1G,IAAM,KAAK,WAAA;4BACZ,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACtB,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE;;gCAC3B,IAAI,mBAAmB,IAAI,CAAC,CAAC,mBAAmB,CAAC,WAAW,IAAI,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;gCAC7F,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC,mBAAmB,CAAC,WAAW,IAAI,mBAAmB,CAAC;gCAC3F,mBAAmB,CAAC,oBAAoB,GAAG,CAAC,CAAC,mBAAmB,CAAC,oBAAoB,IAAI,mBAAmB,CAAC;6BAChH;iCACI;gCACD,mBAAmB,CAAC,WAAW,IAAI,CAAC,CAAC,mBAAmB,CAAC,WAAW,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;gCACrF,mBAAmB,CAAC,oBAAoB,IAAI,CAAC,CAAC,mBAAmB,CAAC,oBAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;6BAC1G;4BACD,mBAAmB,CAAC,kBAAkB,IAAI,KAAK,CAAC,aAAa,CAAC;yBACjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAsBJ;qBACI;oBACD,mBAAmB,CAAC,wBAAwB,GAAG,IAAI,KAAK,CAAuB,wBAAwB,CAAC,CAAC;oBACzG,mBAAmB,CAAC,WAAW,GAAG,CAAC,CAAC;oBACpC,mBAAmB,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBAC7C,mBAAmB,CAAC,kBAAkB,GAAG,CAAC,CAAC;iBAC9C;gBAGD,OAAO,mBAAmB,CAAC;;;;;;;;QAG/B,2CAAc;;;;;;YAAd,UAAe,gBAA6C,EAAE,mBAAuC,EAAE,aAAqB;;gBACxH,IAAI,QAAQ,CAAuB;gBACnC,IAAI,aAAa,GAAG,CAAC,EAAE;oBACnB,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,aAAa,IAAI,CAAC,CAAC,aAAa,IAAI,aAAa,GAAA,CAAC,CAAC;oBACpG,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACzB,mBAAmB,CAAC,WAAW,IAAI,CAAC,CAAC,mBAAmB,CAAC,WAAW,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACxF,mBAAmB,CAAC,oBAAoB,IAAI,CAAC,CAAC,mBAAmB,CAAC,oBAAoB,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC1G,mBAAmB,CAAC,kBAAkB,IAAI,QAAQ,CAAC,aAAa,CAAC;iBACpE;aACJ;;;;;;;QACD,8CAAiB;;;;;;YAAjB,UAAkB,gBAA6C,EAAE,mBAAuC,EAAE,gBAAwB;;gBAC9H,IAAI,gBAAgB,GAAG,CAAC,EAAE;;wBACtB,KAAkB,IAAA,KAAAA,SAAA,gBAAgB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,QAAQ,GAAA,CAAC,CAAA,gBAAA,4BAAE;4BAAhE,IAAI,KAAK,WAAA;4BACV,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACtB,mBAAmB,CAAC,kBAAkB,IAAI,KAAK,CAAC,aAAa,CAAC;yBACjE;;;;;;;;;;;;;;;oBACD,mBAAmB,CAAC,WAAW,IAAI,CAAC,CAAC,mBAAmB,CAAC,WAAW,IAAI,gBAAgB,CAAC,CAAC;oBAC1F,mBAAmB,CAAC,oBAAoB,IAAI,CAAC,CAAC,mBAAmB,CAAC,oBAAoB,IAAI,gBAAgB,CAAC,CAAC;iBAE/G;aACJ;;;;;;;;QAOM,yCAAY;;;;;;;sBAAC,gBAA6C,EAAE,MAAc,EAAE,mBAAuC;;;gBACtH,IAAI,MAAM,GAAW,CAAC,CAAC;gBACvB,IAAI;oBACA,QAAQ,MAAM;;;;wBAIV,KAAK,QAAQ;;4BACT,IAAI,YAAY,GAAG,mBAAmB,CAAC,WAAW,CAAC;;4BACnD,IAAI,mBAAmB,GAAG,CAAC,CAAC;;gCAC5B,KAAoB,IAAA,KAAAA,SAAA,gBAAgB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,QAAQ,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,GAAA,CAAC,CAAA,gBAAA,4BAAE;oCAAvI,IAAM,KAAK,WAAA;oCACZ,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAAE;;wCAC3B,IAAI,mBAAmB,IAAI,YAAY,GAAG,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC;wCACvE,YAAY,IAAI,mBAAmB,CAAC;wCACpC,mBAAmB,IAAI,mBAAmB,CAAC;qCAC9C;yCACI;wCACD,YAAY,IAAI,KAAK,CAAC,KAAK,CAAC;wCAC5B,mBAAmB,IAAI,KAAK,CAAC,KAAK,CAAC;qCACtC;iCACJ;;;;;;;;;;;;;;;4BACD,MAAM,GAAG,mBAAmB,CAAC;4BAC7B,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,MAAM,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,IAAI,IAAI,UAAU,CAAC,GAAA,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;4BACvO,MAAM;qBACb;iBACJ;gBAAC,WAAM;iBACP;gBACD,OAAO,MAAM,CAAC;;;;;;;;;QAKX,gDAAmB;;;;;;;sBAAC,SAAc,EAAE,MAAc,EAAE,mBAAuC,EAAE,WAA8B;gBAC9H,IAAI;;oBACA,IAAI,MAAM,CAAC;;oBACX,IAAI,qBAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC;oBACvD,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,IAAI,SAAS,CAAC,SAAS,IAAI,SAAS,EAAE;wBAC9D,qBAAqB,CAAC,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC;wBAC3D,qBAAqB,CAAC,MAAM,GAAG,SAAS,CAAC,SAAS,CAAC,MAAM,CAAC;wBAC1D,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;wBAC1B,IAAI,MAAM,CAAC,KAAK,EAAE;4BACd,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;yBAC9C;6BAAM;4BACH,qBAAqB,CAAC,KAAK,GAAG,KAAK,CAAC;yBACvC;wBAED,qBAAqB,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC;wBAE1C,QAAQ,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE;4BACrC,KAAK,OAAO;gCACR,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,eAAe,GAAG,CAAC,MAAM,CAAC,KAAK,CAAA;gCACrD,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;gCAClE,MAAM;4BACV,KAAK,WAAW;gCACZ,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;gCAC3C,MAAM;4BACV,KAAK,WAAW;gCACZ,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gCAC1D,MAAM;4BACV,KAAK,OAAO;gCACR,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;gCAChC,qBAAqB,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;gCACpD,qBAAqB,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gCACrD,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;;gCAEpF,MAAM;4BACV,KAAK,UAAU;gCACX,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;gCAChC,qBAAqB,CAAC,aAAa,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC;;gCAEpD,MAAM;4BACV,KAAK,OAAO;gCACR,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;gCAChC,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC;gCAC7C,MAAM;4BACV,KAAK,cAAc;gCACf,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;gCAChC,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCAC/D,MAAM;4BACV,KAAK,kBAAkB,CAAC;4BACxB,KAAK,aAAa;gCACd,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;gCAChC,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;gCACxC,qBAAqB,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gCAC/D,MAAM;;;;4BAIV;gCACI,IAAI,MAAM,CAAC,IAAI,IAAI,WAAW,EAAE;oCAC5B,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC;oCAChC,qBAAqB,CAAC,UAAU,GAAG,IAAI,CAAC;oCACxC,qBAAqB,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;oCACpE,qBAAqB,CAAC,kBAAkB,CAAC,oBAAoB,GAAG,qBAAqB,CAAC,WAAW,CAAC;oCAClG,qBAAqB,CAAC,kBAAkB,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;oCACnF,qBAAqB,CAAC,kBAAkB,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC;oCAC/E,qBAAqB,CAAC,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC;oCAEzD,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,qBAAqB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;iCACnG;qCAAM;oCACH,qBAAqB,GAAG,IAAI,CAAC;iCAChC;gCACD,MAAM;yBACb;wBAED,IAAI,SAAS,CAAC,SAAS,EAAE;4BACrB,qBAAqB,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;yBAChD;qBACJ;yBAAM;wBACH,OAAO,IAAI,CAAC;qBACf;oBACD,OAAO,qBAAqB,CAAC;iBAChC;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,IAAI,CAAC;iBACf;;;;;;;;QAGE,qDAAwB;;;;;;sBAAC,WAA8B,EAC1D,SAAqB,EAAE,qBAA2C;gBAClE,IAAI;;oBACA,IAAI,KAAK,CAAa;;oBACtB,IAAI,YAAY,GAAW,CAAC,CAAC,CAAC;;oBAC9B,IAAI,gBAAgB,GAAW,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;oBAC9D,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,qBAAqB,CAAC,WAAW,GAAA,CAAC,CAAC;oBAClF,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAA,CAAC;wBAC7B,YAAY,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAA;qBAC5E,CAAC,CAAC;oBACH,qBAAqB,CAAC,aAAa,GAAG,YAAY,CAAA;iBACrD;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;;;;;;;;;QASE,qDAAwB;;;;;;;sBAAC,WAA8B,EAAE,mBAAuC,EAAE,SAAc;gBACnH,QAAQ,mBAAmB,CAAC,KAAK;oBAC7B,KAAK,cAAc;;wBAEf,IAAI,KAAK,CAAa;;wBACtB,IAAI,cAAc,GAAW,GAAG,CAAC;wBACjC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,mBAAmB,CAAC,oBAAoB,GAAA,CAAC,CAAC;wBACzF,KAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,UAAA,CAAC;4BAC7B,cAAc,GAAG,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAC;yBAC9E,CAAC,CAAC;wBACH,mBAAmB,CAAC,MAAM,CAAC,YAAY,GAAG,cAAc,CAAC;wBACzD,MAAM;oBACV,KAAK,iBAAiB;;;;;wBAKlB,MAAM;oBACV,KAAK,OAAO;;wBACR,IAAI,KAAK,CAAa;wBACtB,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,mBAAmB,CAAC,oBAAoB,GAAA,CAAC,CAAC;wBACzF,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,cAAc,EAAE;4BAC5C,mBAAmB,CAAC,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;yBAC9F;wBACD,IAAI,SAAS,CAAC,WAAW,EAAE;4BACvB,mBAAmB,CAAC,MAAM,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAA;yBACjE;wBACD,MAAM;oBACV;wBACI,MAAM;iBACb;;;;;;QASE,8CAAiB;;;;sBAAC,WAAuB;gBAC5C,IAAI;oBACA,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACpC,OAAO,WAAW,CAAC;iBACtB;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,WAAW,CAAC;iBACtB;;;;;;;QASE,8CAAiB;;;;;sBAAC,WAAuB;;;gBAC5C,IAAI,UAAU,CAAqB;;gBACnC,IAAI,wBAAwB,GAAGC,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAE9D,IAAI,WAAW,CAAC,gBAAgB,KAAK,SAAS,EAAE;oBAC5C,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;iBAChD;gBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1D,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;;oBAC/C,IAAI,KAAK,GAAuB,WAAW,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;;oBAChE,IAAI,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;oBAEnD,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;oBAC3D,QAAQ,KAAK,CAAC,KAAK;wBACf,KAAK,cAAc;;4BACf,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;;4BAE1E,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;4BACxE,MAAM;wBACV,KAAK,cAAc;;4BACf,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;4BAC1E,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;4BACzE,MAAM;wBACV,KAAK,gBAAgB;4BACjB,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;4BAC3D,MAAM;wBACV,KAAK,iBAAiB;;4BAClB,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;4BAC1E,IAAI,CAAC,+BAA+B,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;4BAChF,MAAM;wBACV,KAAK,wBAAwB;4BACzB,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;;4BAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;4BAC1E,IAAI,CAAC,6BAA6B,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;4BAC9E,MAAM;wBACV,KAAK,OAAO;;4BACR,IAAI,QAAQ,GAAG,IAAI,CAAC;4BACpB,OAAO,QAAQ,EAAE;;gCACb,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gCAC1E,QAAQ,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;6BACnG;4BACD,MAAM;wBACV,KAAK,gBAAgB;;4BACjB,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;4BAC1E,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;4BACvE,MAAM;wBACV,KAAK,cAAc;4BACf,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;4BAC3E,MAAM;wBACV;;4BAEI,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;;gCACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gCAC1E,IAAI,CAAC,8BAA8B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;6BAClF;4BACD,MAAM;qBACb;iBACJ;wCAEU,iBAAiB;;oBACxB,IAAI,gBAAgB,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;;oBAC/F,IAAI,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,iBAAiB,CAAC,EAAE,GAAA,CAAC,CAAC;oBAC/E,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,GAAG,gBAAgB,CAAC;;;;oBAH5F,KAAgC,IAAA,6BAAAD,SAAA,wBAAwB,CAAA,kEAAA;wBAAnD,IAAM,iBAAiB,qCAAA;gCAAjB,iBAAiB;qBAI3B;;;;;;;;;;;;;;;gBAED,OAAO,WAAW,CAAC;;;;;;;QAGhB,4CAAe;;;;;sBAAC,SAAwB,EAAE,YAAY;gBACzD,IAAI,YAAY;oBAAE,SAAS,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;;oBACjK,SAAS,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,OAAO,GAAA,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,OAAO,GAAA,CAAC,CAAC,KAAK,CAAC,GAAA,CAAC,CAAC;;;;;;;;;QAI9I,mDAAsB;;;;;;;sBAAC,QAAoB,EAAE,UAA8B,EAAE,KAAyB,EAAE,aAAsB;;gBACjI,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;gBAC1B,IAAI,iBAAiB,GAAW,CAAC,MAAM,CAAC,KAAK,CAAC;;gBAC9C,IAAI,iBAAiB,GAAW,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxG,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;;gBACjC,IAAI,QAAQ,GAAG,CAAC,CAAC;;gBACjB,IAAI,cAAc,CAAC;gBAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,iBAAiB,IAAI,iBAAiB,CAAA;oBAChF,QAAQ,IAAI,cAAc,CAAC;oBAC3B,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC5B,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,CAAC;;;;;;;;;;;;;;;iBAelE;gBAED,IAAI,iBAAiB,GAAG,QAAQ,IAAI,iBAAiB,GAAG,QAAQ,EAAE;;oBAE9D,OAAO,CAAC,KAAK,CAAC,4CAA4C,GAAG,iBAAiB,GAAG,MAAM,GAAG,QAAQ,CAAC,CAAC;oBACpG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,SAAS,IAAI,iBAAiB,GAAG,QAAQ,CAAC,CAAC;iBACtH;gBAED,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,GAAA,CAAC,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;oBACxC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;iBACtF;;;;;;;;QAIE,kDAAqB;;;;;;sBAAC,oBAAmC,EAAE,KAAyB,EAAE,WAAuB;;;gBAChH,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;gBACrC,IAAI,kBAAkB,GAAG,CAAC,CAAC;;gBAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;;gBAC1B,IAAI,sBAAsB,GAAG,CAAC,CAAC;;gBAC/B,IAAI,sBAAsB,GAAuB,EAAE,CAAC;;gBACpD,IAAI,kBAAkB,GAAG,EAAE,CAAC;;gBAC5B,IAAI,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;gBACvD,IAAI,UAAU,GAAG,CAAC,CAAC;;gBACnB,IAAI,UAAU,GAAG,CAAC,CAAC;wCAEV,OAAO;oBACZ,sBAAsB,GAAG,CAAC,CAAC;;oBAC3B,IAAI,WAAW,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,OAAO,GAAA,CAAC,CAAC,KAAK,CAAC;;oBAC9E,IAAI,cAAc,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;oBACpF,OAAO,sBAAsB,IAAI,cAAc,EAAE;wBAC7C,kBAAkB,IAAI,WAAW,CAAC;wBAClC,sBAAsB,EAAE,CAAC;;wBAEzB,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,OAAO,CAAC,EAAE,GAAA,CAAC,CAAC;wBACxE,IAAI,gBAAgB,EAAE;4BAClB,gBAAgB,CAAC,QAAQ,EAAE,CAAC;yBAC/B;6BACI;4BACD,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;yBAC5D;wBACD,IAAI,kBAAkB,GAAG,UAAU,IAAI,UAAU,EAAE;4BAC/C,UAAU,IAAI,kBAAkB,CAAC;4BACjC,OAAK,sCAAsC,CAAC,sBAAsB,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;4BACrG,iBAAiB,EAAE,CAAC;4BACpB,kBAAkB,GAAG,EAAE,CAAC;4BACxB,UAAU,GAAG,kBAAkB,GAAG,UAAU,CAAC;4BAC7C,kBAAkB,GAAG,CAAC,CAAC;yBAC1B;qBACJ;;;;oBAvBL,KAAoB,IAAA,yBAAAA,SAAA,oBAAoB,CAAA,0DAAA;wBAAnC,IAAI,OAAO,iCAAA;gCAAP,OAAO;qBAwBf;;;;;;;;;;;;;;;gBACD,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;;oBACnC,IAAI,aAAa,GAAG,aAAa,CAAC,iCAAiC,CAAC,WAAW,EAAE,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC7I,aAAa,CAAC,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;oBACnF,WAAW,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;iBAChD;;;;;;;;QAGL,mEAAsC;;;;;;YAAtC,UAAuC,sBAA0C,EAAE,UAAsB,EAAE,kBAAkB;;;gBACzH,IAAI,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;gBACvD,IAAI,QAAQ,CAAc;wCAEjB,YAAY;oBACjB,IAAI,YAAY,EAAE;;wBACd,IAAI,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,EAAE,GAAA,CAAC,CAAC;wBACvE,IAAI,YAAY,EAAE;4BAEd,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC;4BAChF,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE;gCAC7B,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;gCAEtF,QAAQ,GAAGC,WAAW,CAAC,YAAY,CAAC,CAAA;gCACpC,aAAa,CAAC,wBAAwB,CAAC,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;gCACxE,sBAAsB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gCACtC,OAAK,4BAA4B,CAAC,UAAU,EAAE,QAAQ,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;6BAClF;yBACJ;qBACJ;;mCAXW,gBAAgB;;oBAJhC,KAAyB,IAAA,uBAAAD,SAAA,kBAAkB,CAAA,sDAAA;wBAAtC,IAAI,YAAY,+BAAA;gCAAZ,YAAY;qBAgBpB;;;;;;;;;;;;;;;aACJ;;;;;;QAED,yDAA4B;;;;;YAA5B,UAA6B,oBAAwC,EAAE,wBAAwB;;gBAC3F,IAAI,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,wBAAwB,CAAC,EAAE,GAAA,CAAC,CAAA;gBACtF,IAAI,YAAY,EAAE;;oBACd,IAAI,gBAAgB,CAAiB;oBACrC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC;oBAChF,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE;wBAC7B,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;wBAClE,OAAOC,WAAW,CAAC,YAAY,CAAC,CAAC;qBACpC;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;;;;QAOM,4CAAe;;;;;;sBAAC,QAAoB,EAAE,UAA8B;;gBACvE,IAAI,cAAc,GAAG,IAAI,KAAK,EAAO,CAAC;gBACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,CAAC;wBACpD,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBAC1B,CAAC,CAAC;iBAEN;gBACD,OAAO,cAAc,CAAC;;;;;;;;;;;;QAWnB,oDAAuB;;;;;;;;;;sBAAC,QAAoB,EAAE,UAA8B,EAAE,KAAyB,EAAE,aAAsB,EAAE,WAAuB;;;gBAE3J,IAAI,eAAe,GAAG,KAAK,CAAC;gBAC5B,IAAI;;oBACA,IAAI,kBAAkB,GAAW,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC;;oBAC9D,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;;oBACrC,IAAI,eAAe,GAAG,IAAI,KAAK,EAAc,CAAC;;oBAC9C,IAAI,WAAW,GAAW,CAAC,CAAC;;oBAC5B,IAAI,iBAAe,GAAG,CAAC,CAAC;;oBACxB,IAAI,kBAAkB,GAAG,CAAC,CAAC;;oBAC3B,IAAI,wBAAsB,GAAG,IAAI,KAAK,EAAe,CAAC;;oBACtD,IAAI,aAAa,UAAe;oBAGhC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kBAAkB,EAAE,CAAC,EAAE,EAAE;;wBAE1C,IAAI,cAAc,GAAuB,IAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC;wBACrI,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;qBACxE;oBAED,IAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;oBAC/D,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;;wBAE5B,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;wBACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;4BAC7C,IAAI,YAAY,GAAe,eAAe,CAAC,CAAC,CAAC,CAAC;;4BAClD,IAAI,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;4BACjC,IAAI,MAAM,GAAG,WAAW,EAAE;gCACtB,WAAW,GAAG,MAAM,CAAC;6BACxB;yBACJ;;wBAED,IAAI,WAAW,GAAG,CAAC,EAAE;4BACjB,WAAW,GAAG,CAAC,CAAC;yBACnB;;wBAGD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;4BAC7C,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;4BAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;;gCAClC,IAAI,GAAG,GAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;gCACxB,kBAAkB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,GAAA,CAAC,CAAC,SAAS,CAAC;6BACjG;yBACJ;;;wBAGD,iBAAe,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,kBAAkB,CAAC,CAAC;wBAEjE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;4BAC7C,IAAI,KAAK,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;4BAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;;gCAClC,IAAI,GAAG,GAAQ,KAAK,CAAC,CAAC,CAAC,CAAC;gCACxB,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,MAAM;oCAC/C,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;wCAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;;4CACvB,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;;4CAG7B,MAAM,CAAC,SAAS,GAAG,KAAK,IAAI,KAAK,GAAG,iBAAe,GAAG,GAAG,CAAC,CAAC;4CAC3D,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC;yCAC/B;wCACD,KAAI,CAAC,8BAA8B,CAAC,wBAAsB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;qCACpF;yCACI;;wCAED,MAAM,CAAC,SAAS,GAAG,CAAC,CAAC;qCACxB;iCACJ,CAAC,CAAC;;gCAEH,eAAe,GAAG,IAAI,CAAC;6BAC1B;yBACJ;wBAED,IAAI,eAAe,EAAE;4BACjB,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;;4BAGnD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,wBAAsB,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;;;;;4BAK/F,aAAa,CAAC,iCAAiC,CAAC,WAAW,EAAE,wBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBACpI;qBAEJ;oBACD,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;iBAE3C;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;oBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;gBACD,OAAO,eAAe,CAAC;;;;;;;QAI3B,yDAA4B;;;;;YAA5B,UAA6B,eAA2B,EAAE,gBAAoC;;gBAC1F,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;oBAChD,IAAI,cAAc,GAAG,EAAE,CAAC;4CACb,SAAS;;wBAChB,IAAI,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,SAAS,CAAC,EAAE,GAAA,CAAC,CAAC;wBAC/D,IAAI,OAAO,EAAE;;4BACT,IAAI,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;4BAChF,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;4BACpE,IAAI,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,EAAE;gCACnC,cAAc,GAAG,CAAC,SAAS,CAAC,CAAC;gCAC7B,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;;6BAEzB;yBACJ;;;wBAVL,KAAwB,IAAA,KAAAD,SAAA,eAAe,CAAC,EAAE,CAAC,CAAA,gBAAA;4BAAtC,IAAM,SAAS,WAAA;kDAAT,SAAS;;;yBAWnB;;;;;;;;;;;;;;;oBACD,eAAe,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;iBACxC;aACJ;;;;;QAED,mDAAsB;;;;YAAtB,UAAuB,gBAAoC;gBACvD,gBAAgB,CAAC,OAAO,CAAC,UAAA,OAAO;oBAC5B,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;iBAC9B,CAAC,CAAC;aACN;;;;;;;QAED,yDAA4B;;;;;;YAA5B,UAA6B,UAAsB,EAAE,YAAyB,EAAE,QAAY;gBAAZ,yBAAA;oBAAA,YAAY;;;gBACxF,IAAI,cAAc,CAAC;gBACnB,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;oBAC/B,UAAU,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;iBACrC;gBAED,cAAc,GAAG,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,YAAY,CAAC,UAAU,GAAA,CAAC,CAAC;gBACzF,IAAI,cAAc,EAAE;oBAChB,cAAc,CAAC,QAAQ,KAAK,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC;iBAC9C;qBACI;oBACD,UAAU,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAA;iBAChG;aACJ;;;;;;;;QAGD,2DAA8B;;;;;;YAA9B,UAA+B,sBAA0C,EAAE,UAAsB,EAAE,wBAAwB;;gBACvH,IAAI,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;gBACzF,IAAI,YAAY,EAAE;;oBACd,IAAI,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;;oBAEvD,aAAa,CAAC,wBAAwB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;oBACxD,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC1C,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;iBAC/D;aAEJ;;;;;;;QAGD,iDAAoB;;;;;YAApB,UAAqB,oBAAwC,EAAE,wBAAwB;;gBAEnF,IAAI,YAAY,GAAG,oBAAoB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,wBAAwB,CAAC,EAAE,GAAA,CAAC,CAAA;gBACtF,IAAI,YAAY,EAAE;;oBACd,IAAI,gBAAgB,CAAiB;oBACrC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC;oBAChF,IAAI,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE;wBAC7B,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC;wBAClE,OAAOC,WAAW,CAAC,YAAY,CAAC,CAAC;qBACpC;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;;;;QAOM,2CAAc;;;;;;sBAAC,UAAsB,EAAE,EAAU;;gBACpD,IAAI,MAAM,GAAQ,UAAU,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,EAAE,GAAA,CAAC,CAAC;gBACnD,IAAI,MAAM,EAAE;oBACR,MAAM,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;iBACvC;qBAAM;oBACH,MAAM,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;oBACnC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;iBAC3B;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC;;;;;;;;;QAYlB,kDAAqB;;;;;;;sBAAC,UAA8B,EAAE,WAAmB,EAAE,aAAqB;;gBACnG,IAAI,UAAU,GAAG,IAAI,KAAK,EAAe,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACxC,IAAI;;wBACA,IAAI,YAAY,GAAgB,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC9C,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,CAAC,CAAA;wBACtC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;;4BAC5D,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC;;4BACzE,IAAI,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC;4BAC/E,IAAI,GAAG,IAAI,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,EAAE;;gCAC9C,IAAI,MAAM,GAAe,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;gCAC/C,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,oBAAoB,IAAI,aAAa,GAAA,CAAC,CAAA;gCAC3E,IAAI,WAAW,EAAE;;oCACb,IAAI,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC;oCACrD,IAAI,eAAe,EAAE;wCACjB,IAAI,eAAe,CAAC,MAAM,EAAE;4CACxB,IAAI,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,IAAI,WAAW,GAAA,CAAC,EAAE;gDAC7C,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;6CACjC;yCACJ;6CACI;4CACD,IAAI,eAAe,IAAI,WAAW,EAAE;gDAChC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;6CACjC;yCACJ;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;oBAAC,WAAM,GAAG;iBACd;gBACD,OAAO,UAAU,CAAC;;;;;;;QAQf,iDAAoB;;;;;sBAAC,SAA6B;gBACrD,IAAI;oBACA,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,IAAI,KAAK,EAAE;wBAC3D,OAAO,IAAI,CAAC;qBACf;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAA;oBACpC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;gBAGD,OAAO,KAAK,CAAC;;;;;;;;;QAGV,oDAAuB;;;;;;;sBAAC,UAA8B,EAAE,KAAyB,EAAE,WAAuB,EAAE,YAAqB;;gBACpI,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAO,CAAC;;gBAChC,IAAI,iBAAiB,GAAuB,EAAE,CAAC;;gBAC/C,IAAI,gBAAgB,GAAe,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;;gBAC3D,IAAI,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC;;gBAChD,IAAI,iBAAiB,GAAG,CAAC,CAAC;gBAE1B,IAAI;;oBAEA,gBAAgB,GAAG,UAAU,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG;wBAC1C,OAAO,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;qBAC/E,EAAE,CAAC,CAAC,GAAG,gBAAgB,CAAC;;oBAGzB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,YAAY;wBAClC,IAAI,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,GAAG,IAAI,YAAY,CAAC,UAAU,GAAA,CAAC,EAAE;4BAC9D,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;yBACxC;qBACJ,CAAC,CAAC;;oBAGH,QAAQ,GAAG,IAAI,CAAC,2BAA2B,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;;oBAG7E,OAAO,iBAAiB,GAAG,gBAAgB,IAAI,iBAAiB,GAAG,QAAQ,CAAC,MAAM,EAAE;wBAChF,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;wBAClH,iBAAiB,EAAE,CAAC;qBACvB;;oBAGD,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;iBAC5F;gBACD,OAAO,KAAK,EAAE;iBAEb;;;;;;;;;;;;;;;QAcE,oDAAuB;;;;;;;;;;;;;sBAAC,UAAsB,EAAE,KAAyB,EAAE,WAAuB,EAAE,YAAqB;;gBAC5H,WAAW,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;;gBACnC,IAAI,UAAU,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;;gBAC5C,IAAI,YAAY,GAAG,CAAC,CAAC;;gBACrB,IAAI,kBAAkB,GAAG,CAAC,CAAC;;gBAC3B,IAAI,iBAAiB,GAAG,CAAC,CAAC;;gBAC1B,IAAI,UAAU,GAAG,CAAC,CAAC;;gBACnB,IAAI,kBAAkB,GAAG,EAAE,CAAC;;gBAC5B,IAAI,sBAAsB,GAAuB,EAAE,CAAC;;gBACpD,IAAI,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gBACtD,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC;gBACjC,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;gBACtD,YAAY,CAAC,iBAAiB,GAAG,CAAC,CAAA;wCAIvB,QAAQ;oBACf,kBAAkB,IAAI,QAAQ,CAAC,SAAS,CAAC;oBACzC,YAAY,EAAE,CAAC;;oBACf,IAAI,gBAAgB,GAAG,kBAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE,GAAA,CAAC,CAAC;oBACzE,IAAI,gBAAgB,EAAE;wBAClB,gBAAgB,CAAC,QAAQ,EAAE,CAAC;qBAC/B;yBACI;wBACD,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;qBAC7D;oBAED,IAAI,YAAY,KAAK,UAAU,EAAE;wBAC7B,UAAU,IAAI,kBAAkB,CAAC;wBACjC,OAAK,sCAAsC,CAAC,sBAAsB,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;wBACrG,iBAAiB,EAAE,CAAC;wBACpB,kBAAkB,GAAG,EAAE,CAAC;wBACxB,YAAY,GAAG,CAAC,CAAC;qBACpB;;;;;oBAjBL,KAAuB,IAAA,eAAAD,SAAA,UAAU,CAAA,sCAAA;wBAA5B,IAAM,QAAQ,uBAAA;gCAAR,QAAQ;qBAkBlB;;;;;;;;;;;;;;;gBAED,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;;oBACnC,IAAI,aAAa,GAAG,YAAY,CAAC,iCAAiC,CAAC,WAAW,EAAE,sBAAsB,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;oBAC5I,YAAY,CAAC,2BAA2B,CAAC,KAAK,EAAE,aAAa,EAAE,iBAAiB,CAAC,CAAC;oBAClF,WAAW,CAAC,eAAe,CAAC,GAAG,YAAY,CAAC;iBAC/C;;;;;;;;;;QASE,oDAAuB;;;;;;;;sBAAC,QAAoB,EAAE,UAA8B,EAAE,KAAyB,EAAE,aAAsB;;gBAClI,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;;gBAE1B,IAAI,cAAc,GAAW,MAAM,CAAC,QAAQ,CAAC;;gBAE7C,IAAI,aAAa,CAAS;;gBAC1B,IAAI,UAAU,GAAW,MAAM,CAAC,KAAK,CAAC;;gBACtC,IAAI,cAAc,GAAW,CAAC,CAAC,UAAU,KAAK,CAAC,cAAc,CAAC,CAAA;gBAC9D,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAEhC,IAAI,aAAa,IAAI,cAAc,EAAE;;oBACjC,IAAI,aAAa,GAAG,cAAc,IAAI,CAAC,EAAE,CAExC;yBAAM;;wBACH,IAAI,OAAO,GAAW,aAAa,GAAG,cAAc,CAAC;wBACrD,aAAa,GAAG,aAAa,GAAG,OAAO,CAAC;;qBAE3C;oBAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,EAAE,EAAE;wBACpC,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,EAAE;4BACxC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,cAAc,CAAC;4BACvC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAC/B;qBACJ;oBACD,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,GAAA,CAAC,EAAE;wBAChC,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;wBACxC,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;qBACtF;iBACJ;;;;;;;QAOE,uDAA0B;;;;;sBAAC,WAAuB;gBACrD,IAAI;;oBACA,IAAI,UAAU,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAC;;oBACpF,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;oBAExC,WAAW,CAAC,gBAAgB,GAAG,UAAU,CAAC;iBAC7C;gBAAC,WAAM;iBAEP;;;;;;;QAOE,yDAA4B;;;;;sBAAC,WAAuB;;gBACvD,IAAI,mBAAmB,CAAe;gBACtC,mBAAmB,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,IAAI,WAAW,GAAA,CAAC,CAAC;gBACnF,IAAI,mBAAmB,EAAE;;oBACrB,IAAI,QAAQ,GAA8B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBACtC,IAAI,WAAW,GAAuB,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,oBAAoB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAA,CAAC,CAAC;wBACzI,IAAI,CAAC,WAAW,EAAE;4BACd,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;yBAClD;qBACJ;oBACD,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;iBAC5E;qBAAM;;oBACH,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;oBACvC,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC;oBACnC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;oBAEnE,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACjD;;;;;;;;;;QAUE,2DAA8B;;;;;;;;sBAAC,QAAoB,EAAE,UAA8B,EAAE,KAAyB,EAAE,aAAsB;;gBACzI,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC;;gBAC5B,IAAI,EAAE,GAAW,CAAC,CAAC;;gBACnB,IAAI,EAAE,GAAW,CAAC,CAAC;;gBACnB,IAAI,CAAC,GAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;;gBACxC,IAAI,CAAC,GAAW,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;gBAChD,IAAI,QAAQ,GAAW,CAAC,CAAC;;gBACzB,IAAI,MAAM,GAAY,KAAK,CAAC;gBAE5B,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpC,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACvC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACnC;;gBAKD,IAAI,CAAC,GAAW,CAAC,CAAC;gBAClB,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,GAAA,CAAC,CAAA;gBACtG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;;oBACrB,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;oBAC7B,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE;wBAElC,EAAE,GAAG,CAAC,CAAC;wBACP,EAAE,GAAG,CAAC,CAAC;wBAEP,OAAO,EAAE,GAAG,CAAC,EAAE;4BAEX,EAAE,EAAE,CAAC;4BACL,CAAC,EAAE,CAAC;yBACP;wBACD,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;4BAErB,IAAI,QAAQ,IAAI,CAAC,EAAE;gCACf,MAAM,GAAG,IAAI,CAAC;gCACd,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;6BAC7B;iCAAM;gCACH,MAAM,GAAG,IAAI,CAAC;;gCAGd,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;6BACrE;4BACD,EAAE,EAAE,CAAC;4BACL,CAAC,EAAE,CAAC;yBACP;qBAEJ;;;;oBAID,IAAI,MAAM,EAAE;wBACR,IAAI,CAAC,2BAA2B,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;qBACvF;;;;;;;;iBAWJ;;;;;;;;;;;QAQE,wDAA2B;;;;;;;;;sBAAC,QAAoB,EAAE,UAA8B,EAAE,KAAyB,EAAE,UAAmB,EAAE,aAAsB;;gBAG3J,IAAI,cAAc,GAAW,CAAC,CAAC;;gBAE/B,IAAI,SAAS,GAAW,CAAC,CAAC;gBAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;oBACxC,IAAI,GAAG,GAAgB,UAAU,CAAC,CAAC,CAAC,CAAC;;oBACrC,IAAI,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAA,CAAC;wBACnD,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,GAAA,EAAE,CAAC,CAAC,CAAC;;oBACvD,IAAI,mBAAmB,CAAC;oBACxB,mBAAmB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC;;oBAGvF,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,GAAG,YAAY,CAAC;;;oBAGhF,IAAI,CAAC,IAAI,CAAC,+BAA+B,CAAC,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,aAAa,EAAE;wBACxF,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,EAAE;4BAC5D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;yBACxE;wBACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,EAAE;4BAC3D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;yBACvE;wBACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,EAAE;4BAC/D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;yBAC3E;wBACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,eAAe,GAAA,CAAC,EAAE;4BAC9D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,eAAe,GAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;yBAC1E;wBACD,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,cAAc,GAAA,CAAC,EAAE;4BAC7D,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,cAAc,GAAA,CAAC,CAAC,KAAK,GAAG,EAAE,CAAA;yBACzE;wBACD,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;;;wBAGpC,SAAS,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,mBAAmB,GAAA,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;qBAChK;yBAAM;wBACH,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;wBAC3D,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,cAAc,EAAE,YAAY,EAAE,mBAAmB,EAAE,aAAa,CAAC,CAAC;;wBAEzG,IAAI,CAAC,aAAa,EAAE;4BAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC;yBAC/F;6BAAM;;4BAEH,cAAc,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,mBAAmB,GAAA,CAAC,CAAC,KAAK,GAAG,mBAAmB,CAAC,CAAA;yBACnH;qBAEJ;oBACD,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,cAAc,CAAC,CAAC;oBAC1D,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;oBAC9C,IAAI,CAAC,6BAA6B,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;;iBAEzD;;;;;;QAIE,oDAAuB;;;;sBAAC,GAAgB;gBAC3C,IAAI;oBACA,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;wBACvF,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;qBACnB,CAAC,CAAC;iBACN;gBAAC,WAAM;iBAEP;;;;;;QAGE,sDAAyB;;;;sBAAC,GAAgB;gBAC7C,IAAI;oBACA,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;wBAC1F,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;qBACnB,CAAC,CAAC;iBACN;gBAAC,WAAM;iBAEP;;;;;;;;QAQE,0DAA6B;;;;;;sBAAC,GAAgB,EAAE,QAAgB;gBACnE,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,QAAQ,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;;;;;;;;QAStJ,4DAA+B;;;;;;sBAAC,QAAoB,EAAE,GAAgB;;gBAEzE,IAAI,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,GAAA,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,GAAA,CAAC,CAAC;gBAC/I,IAAI,cAAc,EAAE;oBAChB,OAAO,KAAK,CAAC;iBAChB;qBAAM;oBACH,OAAO,IAAI,CAAC;iBACf;;;;;;;;QAQE,kDAAqB;;;;;;sBAAC,QAAoB,EAAE,GAAgB;gBAC/D,IAAI;;oBACA,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAC;;oBACxE,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,EAAE,IAAI,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,IAAI,MAAM,GAAA,CAAC,CAAC,MAAM,CAAC;;oBACvF,IAAI,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,CAAC;oBAC7E,OAAO,CAAC,WAAW,GAAG,CAAC,UAAU,CAAC;iBACrC;gBAAC,WAAM;oBACJ,OAAO,CAAC,CAAC;iBACZ;;;;;;;;;;;QASE,6CAAgB;;;;;;;;;sBAAC,GAAgB,EAAE,aAAqB,EAAE,eAAuB,EAAE,cAAsB,EAAE,aAAsB;gBACpI,IAAI;;oBACA,IAAI,gBAAgB,CAAS;;oBAC7B,IAAI,aAAa,CAAS;;oBAE1B,IAAI,aAAa,EAAE;wBACf,gBAAgB,GAAG,cAAc,CAAC;wBAClC,aAAa,GAAG,CAAC,gBAAgB,GAAG,CAAC,eAAe,CAAC;qBACxD;yBAAM;wBACH,gBAAgB,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,mBAAmB,GAAA,CAAC,CAAC,KAAK,CAAC;wBAC3F,aAAa,GAAG,CAAC,gBAAgB,GAAG,CAAC,aAAa,GAAG,CAAC,eAAe,CAAC;qBACzE;oBAGD,OAAO,aAAa,CAAC;iBACxB;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;oBACxC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;;;;;;;;QAaE,gDAAmB;;;;;;sBAAC,GAAgB,EAAE,UAAkB;gBAC3D,IAAI;;;oBAGA,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,EAAE,QAAQ,EAAE,CAAC;;oBAElH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;iBACzL;gBAAC,WAAM;iBACP;;;;;;;;;QA0EE,8CAAiB;;;;;;;sBAAC,GAAgB,EAAE,KAAyB,EAAE,gBAAwB;;gBAK1F,IAAI,qBAAqB,CAAiB;;gBAC1C,IAAI,oBAAoB,CAAiB;;gBACzC,IAAI,mBAAmB,CAAiB;gBAGxC,qBAAqB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,CAAC;gBAClF,oBAAoB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,eAAe,GAAA,CAAC,CAAC;gBAChF,mBAAmB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,cAAc,GAAA,CAAC,CAAC;gBAE9E,IAAI,qBAAqB,EAAE,CAE1B;qBAAM;oBACH,qBAAqB,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC9C,oBAAoB,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC7C,mBAAmB,GAAG,IAAI,eAAe,EAAE,CAAC;oBAC5C,qBAAqB,CAAC,cAAc,GAAG,gBAAgB,CAAA;oBACvD,oBAAoB,CAAC,cAAc,GAAG,eAAe,CAAA;oBACrD,mBAAmB,CAAC,cAAc,GAAG,cAAc,CAAA;oBAEnD,qBAAqB,CAAC,KAAK,GAAG,EAAE,CAAA;oBAChC,oBAAoB,CAAC,KAAK,GAAG,EAAE,CAAA;oBAC/B,mBAAmB,CAAC,KAAK,GAAG,EAAE,CAAA;oBAE9B,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;oBACrC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;oBACpC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;iBAEtC;gBAGD,qBAAqB,CAAC,KAAK,GAAG,qBAAqB,CAAC,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;gBAC/E,mBAAmB,CAAC,KAAK,GAAG,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;gBACzF,oBAAoB,CAAC,KAAK,GAAG,oBAAoB,CAAC,KAAK,GAAG,gBAAgB,CAAC,QAAQ,EAAE,GAAG,GAAG,CAAC;;gBAG5F,IAAI,UAAU,GAAG,qBAAqB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBAC1E,IAAI,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;gBACpE,IAAI,SAAS,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAExE,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;oBACvC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,iBAAiB,GAAG,EAAE,CAAC,CAAC;oBAClF,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,eAAe,GAAG,EAAE,CAAC,CAAC;oBAChF,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC;iBACpF;;;;;;;;QAGL,sDAAyB;;;;;;YAAzB,UAA0B,cAAsC,EAAE,cAAsB,EAAE,aAAqB;;gBAC3G,IAAI,gBAAgB,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,cAAc,GAAA,CAAC,CAAC;gBACpF,IAAI,gBAAgB,EAAE;oBAClB,gBAAgB,CAAC,KAAK,GAAG,aAAa,CAAC;iBAC1C;qBACI;oBACD,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;oBACzC,gBAAgB,CAAC,cAAc,GAAG,cAAc,CAAC;oBACjD,gBAAgB,CAAC,KAAK,GAAG,aAAa,CAAC;oBACvC,cAAc,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;iBACzC;aACJ;;;;;;;QAOO,iDAAoB;;;;;;sBAAC,mBAAuC,EAAE,WAAuB;;gBACzF,IAAI;;oBACA,IAAI,UAAU,CAAqB;oBACnC,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG;wBACrC,IAAI,GAAG,CAAC,eAAe,KAAK,SAAS,EAAE;4BACnC,KAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;yBAClC;wBACD,IAAI,EAAE,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAAE;4BACvB,IAAI,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;;;gCAGvF,OAAO,GAAG,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,oBAAoB,IAAI,mBAAmB,CAAC,oBAAoB,GAAA,CAAC,CAAC;6BAC9I;iCAAM;gCACH,OAAO,KAAK,CAAC;6BAChB;yBACJ;6BACI;4BACD,OAAO,KAAK,CAAC;yBAChB;qBACJ,CAAC,CAAC;oBACH,OAAO,UAAU,CAAC;iBACrB;gBAAC,WAAM;oBACJ,OAAO,IAAI,CAAC;iBACf;;;;;;QAGE,iDAAoB;;;;sBAAC,YAAyB;gBACjD,IAAI;;oBACA,IAAI,gBAAgB,CAAkB;oBACtC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAA;oBACjF,IAAI,gBAAgB,EAAE;wBAClB,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;qBACrE;iBACJ;gBAAC,WAAM;iBAEP;;;;;;;;QAOG,wDAA2B;;;;;;sBAAC,UAA8B,EAAE,aAAsB;;gBAEtF,IAAI,QAAQ,GAAG,IAAI,KAAK,EAAO,CAAC;gBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;oBACxC,IAAI,GAAG,GAAgB,UAAU,CAAC,CAAC,CAAC,CAAC;;oBACrC,IAAI,SAAS,CAAS;;oBACtB,IAAI,WAAW,CAAS;oBACxB,SAAS,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;;oBAG3E,IAAI,aAAa,EAAE;wBACf,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAA;qBAChF;yBAAM;wBACH,WAAW,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,OAAO,GAAA,CAAC,CAAC,KAAK,CAAA;qBAC5E;oBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;wBAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;qBAC1E;iBACJ;gBACD,OAAO,QAAQ,CAAC;;;;;;;;;QAsCb,mDAAsB;;;;;;;sBAAC,WAAuB,EAAE,aAA0B;;;;;;;;;;;;;;;;;;;;;;;QAsE1E,mDAAsB;;;;;sBAAC,WAAuB;;gBACjD,IAAI,kBAAkB,GAAG,CAAC,CAAC;gBAC3B,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE;oBAC9D,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,cAAc,GAAA,CAAC,CAAC,KAAK,IAAI,CAAC,GAAA,CAAC;wBAC1H,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,cAAc,GAAA,CAAC,CAAC,KAAK,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC,GAAA,EAAE,CAAC,CAAC,CAAA;iBAC5L;;gBAED,OAAO,kBAAkB,CAAC;;;;;;;;QAQvB,8DAAiC;;;;;;sBAAC,OAAmB,EAAE,cAAiC;;gBAE3F,IAAI,kBAAkB,GAAW,OAAO,CAAC,SAAS,CAAC;;gBAEnD,IAAI,uBAAuB,GAAW,CAAC,CAAC;;gBAExC,IAAI,gBAAgB,GAAG,IAAI,CAAC,iCAAiC,CAAC,cAAc,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;gBAElG,IAAI,OAAO,CAAC,SAAS,EAAE;oBACnB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;wBAClD,IAAI,UAAU,GAAa,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;;wBAEjD,IAAI,mBAAmB,GAAG,IAAI,CAAC,4BAA4B,CAAC,UAAU,EAAE,gBAAgB,CAAC,CAAC;wBAE1F,IAAI,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE;;4BAChC,IAAI,SAAS,GAAG,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,SAAS,CAAC;4BACxD,uBAAuB,IAAI,IAAI,CAAC,oCAAoC,CAAC,kBAAkB,EAAE,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,mBAAmB,EAAE,cAAc,CAAC,CAAC;yBAC3J;qBACJ;iBACJ;;;;gBAMD,uBAAuB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC,CAAC,CAAC;gBACzE,OAAO,uBAAuB,CAAC;;;;;;;;QAQ5B,4DAA+B;;;;;;sBAAC,2BAAgD,EAAE,aAAiC;;gBACtH,IAAI,oBAAoB,GAAG,IAAI,KAAK,EAAgB,CAAC;gBACrD,IAAI,2BAA2B,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;wBAC9C,IAAI,SAAS,GAAG,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC;wBACxC,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE;;4BAClF,IAAI,aAAa,GAAG,SAAS,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC;4BACzE,IAAI,aAAa,EAAE;;gCACf,IAAI,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wDACpC,EAAE;;oCACP,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;;oCACzB,IAAI,UAAU,GAAG,2BAA2B,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,KAAK,GAAA,CAAC,CAAC;oCAC/E,IAAI,UAAU,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,KAAK,GAAA,CAAC,EAAE;wCACvE,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;qCACxC;;gCALL,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,EAAE;4CAAjC,EAAE;iCAMV;6BACJ;yBACJ;qBACJ;iBACJ;gBACD,OAAO,oBAAoB,CAAC;;;;;;;;QAQzB,wEAA2C;;;;;;sBAAC,YAA+B,EAAE,aAAiC;;gBACjH,IAAI,2BAA2B,GAAG,IAAI,CAAC,iCAAiC,CAAC,YAAY,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;gBAEnH,OAAO,IAAI,CAAC,+BAA+B,CAAC,2BAA2B,EAAE,aAAa,CAAC,CAAC;;;;;;;;;;;QAOrF,4DAA+B;;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EAC5F,SAAmB,EAAE,YAAsB;;gBAG3C,aAAa,CAAC,aAAa,CAAC,qCAAqC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAC9F,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;oBACvC,IAAI,SAAS,CAAa;oBAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE;wBACvB,SAAS,GAAG,IAAI,KAAK,EAAO,CAAC;wBAC7B,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACjC;yBAAM;wBACH,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;qBAC7B;oBAED,SAAS,CAAC,SAAS,CAAC,CAAC;iBACxB,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACnC,CAAC,CAAC;;;;;;;;QAQJ,yDAA4B;;;;;;sBAAC,UAAoB,EAAE,gBAAqC;;gBAE3F,IAAI,eAAe,GAAG,IAAI,KAAK,EAAgB,CAAC;gBAChD,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;oBACjD,IAAI,WAAW,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;;oBACvC,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAExD,QAAQ,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE;wBAC/B,KAAK,SAAS;;4BAEV,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,IAAI,MAAM,EAAE;gCAC5H,WAAW,CAAC,KAAK,GAAG,OAAO,GAAG,WAAW,CAAC,KAAK,GAAG,YAAY,CAAC;6BAClE;iCACI;gCACD,WAAW,CAAC,KAAK,GAAG,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC;6BACvD;;4BACD,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;4BAC5C,IAAI,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,EAAE;gCAC3C,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;6BACrC;4BACD,MAAM;qBACb;iBACJ;gBACD,OAAO,eAAe,CAAC;;;;;;;;;QAOpB,8DAAiC;;;;;;;sBAAC,cAAiC,EAAE,SAAiB,EAAE,KAAa;;gBACxG,IAAI,gBAAgB,GAAwB,IAAI,KAAK,EAAgB,CAAC;;gBACtE,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBAErB,IAAI,cAAc,EAAE;oBAChB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;wBAC/C,IAAI,eAAe,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;;wBACzC,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;;wBACnD,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;wBAC/C,IAAI,eAAe,CAAC,MAAM,IAAI,SAAS,IAAI,GAAG,IAAI,OAAO,IAAI,GAAG,IAAI,eAAe,CAAC,KAAK,IAAI,KAAK,EAAE;4BAChG,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,eAAe,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;gCAClE,IAAI,gBAAgB,GAAG,eAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;gCAE7D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,gBAAgB,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;oCAC9D,IAAI,WAAW,GAAG,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oCACpD,IAAI,WAAW,CAAC,YAAY,EAAE;;wCAC1B,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;wCACxD,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,YAAY,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,EAAE;4CACzE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;yCACtC;qCACJ;iCACJ;6BACJ;yBACJ;qBACJ;iBACJ;gBAED,OAAO,gBAAgB,CAAC;;;;;;;;;;;QASrB,iEAAoC;;;;;;;;;sBAAC,kBAA0B,EAAE,SAAwB,EAAE,gBAAwB,EAAE,cAAmC,EAAE,cAAiC;;;gBAC9L,IAAI,mBAAmB,CAAC;;gBACxB,IAAI,eAAe,CAAC;;gBACpB,IAAI,iBAAiB,GAAG,CAAC,CAAC;;gBAC1B,IAAI,kBAAkB,GAAW,gBAAgB,GAAG,kBAAkB,CAAC;;gBACvE,IAAI,cAAc,GAAG,CAAC,CAAC;;oBACvB,KAAmB,IAAA,cAAAA,SAAA,SAAS,CAAA,oCAAA,2DAAE;wBAAzB,IAAM,IAAI,sBAAA;wBACX,mBAAmB,GAAG,EAAE,CAAC;wBACzB,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC;wBACxE,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC;wBACpF,IAAI,eAAe,IAAI,eAAe,CAAC,KAAK,EAAE;4BAC1C,mBAAmB,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;yBAC1D;gDACU,QAAQ;4BACf,IAAI,mBAAmB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,QAAQ,CAAC,WAAW,GAAA,CAAC,EAAE;;gCAC3D,IAAI,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,QAAQ,CAAC,WAAW,GAAA,CAAC,CAAC;gCAC5E,iBAAiB,IAAI,CAAC,cAAc,GAAG,OAAK,qCAAqC,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,kBAAkB,CAAC,CAAC;;6BAE1H;;;;4BALL,KAAuB,IAAA,mBAAAA,SAAA,cAAc,CAAA,8CAAA;gCAAhC,IAAM,QAAQ,2BAAA;sDAAR,QAAQ;;;6BAMlB;;;;;;;;;;;;;;;qBACJ;;;;;;;;;;;;;;;gBACD,OAAO,iBAAiB,CAAC;;;;;;QAG7B,kEAAqC;;;;YAArC,UAAsC,KAAK;gBACvC,IAAI;;oBACA,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;oBAClD,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;wBACjF,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;qBACzC;iBACJ;gBAAC,WAAM;iBACP;gBACD,OAAO,CAAC,CAAC;aACZ;;;;;;;QAOM,iEAAoC;;;;;;sBAAC,OAAmB,EAAE,cAAiC;;gBAC9F,IAAI,kBAAkB,GAAG,CAAC,CAAA;gBAC1B,IAAI,cAAc,EAAE;oBAChB,kBAAkB,GAAG,IAAI,CAAC,iCAAiC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;iBACxF;gBAED,IAAI,kBAAkB,GAAG,CAAC,EAAE;;oBACxB,IAAI,qBAAqB,GAAiB,IAAI,YAAY,EAAE,CAAC;oBAC7D,qBAAqB,CAAC,MAAM,GAAG,cAAc,CAAA;oBAC7C,qBAAqB,CAAC,KAAK,GAAG,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBAE5D,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;iBACrD;gBAED,OAAO,OAAO,CAAC;;;;;;;;;;;QAWZ,sDAAyB;;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EACtF,SAAmB,EAAE,YAAsB;gBAC3C,aAAa,CAAC,aAAa,CAAC,+BAA+B,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACxF,IAAI,cAAc,CAAC;oBACnB,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC;oBACvE,SAAS,CAAC,cAAc,CAAC,CAAC;iBAC7B,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACnC,CAAC,CAAC;;;;;;;;;;;QAWJ,0DAA6B;;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EAC1F,SAAmB,EAAE,YAAsB;;gBAE3C,aAAa,CAAC,wBAAwB,CAAC,mCAAmC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACvG,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACrE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACxB,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB,CAAC,CAAC;;;;;;;;;;;QAWJ,uDAA0B;;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EACvF,SAAmB,EAAE,YAAsB;gBAE3C,aAAa,CAAC,wBAAwB,CAAC,gCAAgC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACpG,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB,CAAC,CAAC;;;;;;;;;;;QAWJ,iDAAoB;;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EACjF,SAAmB,EAAE,YAAsB;;gBAE3C,aAAa,CAAC,wBAAwB,CAAC,0BAA0B,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC9F,SAAS,EAAE,CAAC;iBACf,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB,CAAC,CAAC;;;;;;QAIJ,6CAAgB;;;;sBAAC,KAAyB;gBAC7C,IAAI,KAAK,EAAE;;oBACP,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,IAAI,CAAC,GAAA,CAAC;wBACrG,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC,GAAA,EAAE,CAAC,CAAC,CAAC;oBACtG,IAAI,SAAS,IAAI,CAAC,EAAE;wBAChB,OAAO,CAAC,CAAC;qBACZ;yBAAM;wBACH,OAAO,SAAS,CAAC;qBACpB;iBACJ;qBAAM;oBACH,OAAO,CAAC,CAAC;iBACZ;;iCA7hFT;QA+hFC;;;;;;;QCjhFG;4BAHsC,IAAIF,eAAY,EAAE;oCAC7B,IAAI;YAG3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,wBAAwB,EAAE,CAAA;aAClC;SAEJ;;;;QAED,+CAAgB;;;YAAhB;;gBACI,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;gBACvD,IAAI,WAAW,CAAC;;gBAChB,IAAI,IAAI,GAAY,IAAI,CAAC;;gBACzB,IAAI,MAAM,CAAC;gBAEX,IAAI,WAAW,EAAE;oBACb,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;wBACpF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;wBAEzD,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,IAAI,SAAS,EAAE;4BACnE,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;yBAC/B;qBACJ;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;QAEM,uDAAwB;;;;gBAE3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBACpF,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;;gBAIrC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACjB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAA;;;;;;;;;;;;;;;;;;;QAmBjH,wCAAS;;;YAAT;gBACI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAChB,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACnC;qBACI;oBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;iBAC3E;aACJ;;;;QAED,2CAAY;;;YAAZ;;gBACI,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;gBACvD,IAAI,WAAW,CAAC;gBAEhB,IAAI,WAAW,EAAE;oBACb,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,WAAW,CAAC,WAAW,EAAE;wBACzB,OAAO,WAAW,CAAC,WAAW,CAAC;qBAClC;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;QAEM,wCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;QAInB,yDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAcH,sCAAO;;;;sBAAC,QAAQ;;;;;oCAEb,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAA;;gCAAzC,SAAS,GAAG,SAA6B,CAAA;gCACzC,sBAAO,SAAS,EAAA;;;;;;;;;QAKb,mCAAI;;;;sBAAC,MAAc;;gBACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;gBAChD,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI,CAAC,gBAAgB;oBAC3B,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBAEpB,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAA;iBACvH,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,qGAAqG,CAAC,CAAA;iBACrH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;QAGA,kCAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;QAG1B,oCAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,4CAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;;;;;QAGnD,sCAAO;;;;gBACV,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;;;;QAGzB,gDAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;;QAGlB,uCAAQ;;;;sBAAC,EAAE;;gBACd,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAC7B,OAAO,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACvC,CAAC,CAAC;;;;;QAGA,4CAAa;;;;;gBAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;oBACtD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG;wBACvB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC9D,CAAC,CAAC;iBACN,CAAC,CAAC,IAAI,CAAC,UAAA,UAAU;oBACd,OAAO,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC7C,CAAC,CAAC;;;oBAlLVH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;mCALD;;;;;;;QCSA;QAKI,gCAAY,QAAQ;2BAJF,IAAI,MAAM,EAAE;uCAES,KAAK;YAGxC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;YAC3B,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACjC;;;;QAGM,uDAAsB;;;;;gBACzB,IAAI,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;gBAClF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE;;oBACxC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;;wBAC5D,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,gBAAgB,GAAA,CAAC,CAAC;wBACzF,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE;4BACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;yBACnC;qBACJ;iBACJ;;;;;;;;QAIQ,yDAAwB;;;;;;sBAAC,eAA6B,EAAE,SAAc,EAAE,cAA6B;;;;;;;gCAE9E,KAAAK,SAAA,eAAe,CAAC,gBAAgB,CAAA;;;;;gCAArD,iBAAiB;gCACxB,qBAAM,IAAI,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,EAAA;;gCAAjF,SAAiF,CAAA;;;;;;;;;;;;;;;;;;;;;;gCAG5D,KAAAA,SAAA,eAAe,CAAC,cAAc,CAAA;;;;;gCAA5C,UAAU;;;;gCACI,KAAAA,SAAA,UAAU,CAAC,MAAM,CAAA;;;;;gCAA3B,MAAM;gCACb,qBAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,cAAc,CAAC,EAAA;;gCAAtE,SAAsE,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCAG9E,sBAAO,EAAE,EAAC;;;;;;;;;;;QAID,mDAAkB;;;;;;sBAAC,eAA6B,EAAE,SAAc,EAAE,cAA6B;;;;;;;gCACxG,IAAI,CAAC,sBAAsB,EAAE,CAAC;sCAC1B,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,CAAC,CAAA;oCAA7I,wBAA6I;gCAC7I,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;;;;;;gDAEvB,MAAM,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;gDAC3C,WAAW,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gDAC5D,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,OAAO,IAAI,WAAW,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;sDACnF,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CAAA;oDAArC,wBAAqC;qDACjC,CAAC,OAAK,mBAAmB;oDAAzB,wBAAyB;gDACzB,QAAQ,WAAW,CAAC,CAAC,CAAC;oDAClB,KAAK,IAAI;wDACL,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;wDACtC,MAAM;oDACV,KAAK,IAAI;wDACL,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;wDACtC,MAAM;oDACV,KAAK,IAAI;wDACL,YAAY,CAAC,MAAM,GAAG,YAAY,CAAC,EAAE,CAAC;wDACtC,MAAM;oDACV,QAAQ;iDACX;;;;gDAIO,qBAAqB,GAAG,IAAI,oBAAoB,EAAE,CAAC;gDACtC,qBAAM,qBAAqB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAA;;gDAA5D,UAAU,GAAG,SAA+C;gDAC5D,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;gDACtD,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oDAClE,WAAa,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC,MAAM,CAAC,CAAC;oDACzF,YAAY,CAAC,MAAM,GAAG,OAAK,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,GAAG,QAAM,EAAE,CAAC,CAAC,CAAC;oDAC1E,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAA,YAAY;wDAC9C,YAAY,CAAC,KAAK,GAAG,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,GAAG,QAAM,EAAE,CAAC,CAAC,CAAA;qDAC1E,CAAC,CAAC;iDACN;;;;gDAGD,OAAO,CAAC,GAAG,CAAC,+BAA+B,GAAG,IAAE,CAAC,OAAO,GAAG,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;;;sDAK1F,YAAY,KAAK,SAAS,CAAA;oDAA1B,wBAA0B;gDAC1B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;;oDAEnC,qBAAM,OAAK,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,EAAA;;gDAAvE,SAAuE,CAAC;;;;;;;gCAzCvE,CAAC,GAAG,CAAC;;;sCAAE,CAAC,GAAG,eAAe,CAAC,cAAc,CAAC,MAAM,CAAA;;;;;;;gCAAE,CAAC,EAAE,CAAA;;;gCA4C1D,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;gCAC/C,iBAAiB,CAAC,QAAQ,GAAG,aAAa,CAAC;gCAC3C,iBAAiB,CAAC,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;gCAC7D,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;;;qCAE3D,eAAe;oCAAf,wBAAe;gCACf,qBAAM,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,SAAS,EAAE,cAAc,CAAC,EAAA;;gCAA/E,SAA+E,CAAC;;oCAEpF,sBAAO,EAAE,EAAC;;;;;;;;;;;QAGD,2DAA0B;;;;;;sBAAC,MAAoB,EAAE,SAAc,EAAE,cAA6B;;;;;;sCACnG,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,KAAK,SAAS,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,CAAC,CAAA;oCAAjH,wBAAiH;gCAC7G,YAAY,GAAG,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,cAAc,CAAC,SAAS,GAAA,CAAC,CAAC;sCACvG,YAAY,KAAK,SAAS,CAAA;oCAA1B,wBAA0B;gCAC1B,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;;oCAEnC,qBAAM,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,cAAc,CAAC,EAAA;;gCAAvE,SAAuE,CAAC;;oCAGhF,sBAAO,EAAE,EAAC;;;;;;;;;;;QAID,0DAAyB;;;;;;sBAAC,MAAoB,EAAE,SAAc,EAAE,cAA6B;;;;;;gCAClG,MAAM,GAAW,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;gCACpD,aAAa,GAAiB,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;sCAEjE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;oCAA7B,wBAA6B;gCACzB,KAAK,GAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCAClI,qBAAM,aAAa,CAAC,yBAAyB,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,EAAA;;gCAA9F,MAAM,GAAG,SAAqF;gCAClG,IAAI,MAAM,IAAI,MAAM,IAAI,CAAC,EAAE;oCACnB,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;oCACnC,WAAW,CAAC,OAAO,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;oCACzD,WAAW,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oCAC/B,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;oCAC5B,WAAW,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;oCAC7B,MAAM,CAAC,YAAY,GAAG,WAAW,CAAC;iCACrC;;;;;;;qCAvIb;QA4IC;;;;;;;QC5HG;SAAiB;;;;;;;;;QAGV,kDAAuB;;;;;;;;sBAACE,gBAA4B,EAAE,SAAiB,EAAE,SAAiB,EAC7F,UAAoB,EAAE,WAAqB;;gBAC3C,IAAI,IAAI,CAAC;gBACT,IAAI,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;gBACjCA,gBAAa,CAAC,aAAa,CAAC,6BAA6B,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAEvF,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC3C,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;QAIJ,mDAAwB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,WAAmB,EAChG,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,KAAK,CAAC,8BAA8B,GAAG,SAAS,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAC9F,IAAI,WAAW,CAAM;oBACrB,WAAW,GAAG,IAAI,CAAC;oBAEnB,UAAU,CAAC,WAAW,CAAC,CAAC;iBAC3B,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;QAIJ,sCAAW;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAC9D,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,KAAK,CAAC,wBAAwB,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGpE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAE7B,UAAU,CAAC,KAAK,CAAC,CAAC;iBACrB,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;;QAMJ,8CAAmB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,SAAc,EACtF,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,aAAa,CAAC,gCAAgC,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAG/F,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;oBACxC,IAAI,UAAU,CAAa;oBAC3B,IAAI,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,EAAE;;wBAErD,UAAU,GAAG,IAAI,KAAK,CAAM,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;qBAC/D;yBAAM;wBACH,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAC;qBAC/C;oBACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,UAAU,CAAC,UAAU,CAAC,CAAC;iBAC1B,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;;;;;;;QAMX,8CAAmB;;;;;;;;;;;;;YAAnB,UAAoBA,gBAA4B,EAAE,SAAyB,EAAE,QAAgB,EAAE,SAAiB,EAC5G,UAAoB,EAAE,WAAqB,EAAc,WAAkB,EAAc,eAAsB,EAAc,QAAc,EAAc,cAAoB;;sCAAlG;;;0CAAoC;;;kCAA4B;;;wCAAkC;;;gBAC7K,IAAI,SAAS,CAAC;gBACd,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;gBAClM,IAAI,SAAS,IAAI,IAAI,EAAE;oBACnBA,gBAAa,CAAC,aAAa,CAAC,+BAA+B,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;wBAE9F,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;qBAC/B,EACG,UAAA,GAAG;;wBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;qBAClC,CAAC,CAAC;iBACV;qBAAM;oBACH,WAAW,CAAC,iCAAiC,CAAC,CAAC;iBAClD;aACJ;;;;;;;;;;;;;;QAID,gDAAqB;;;;;;;;;;;;YAArB,UAAsBA,gBAA4B,EAAE,UAAkB,EAAE,kBAAkB,EAAE,OAAe,EAAE,SAAiB,EAC1H,UAAoB,EAAE,WAAqB,EAAc,WAAkB,EAAc,cAA4B;;sCAA1C;;;wCAA0C;;;gBACrH,IAAI,SAAS,CAAiB;;gBAC9B,IAAI,SAAS,CAAC;gBACd,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,UAAU,EAAE,SAAS,EAAE,kBAAkB,CAAC,CAAC;gBAEtF,SAAS,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;gBACvI,IAAI,SAAS,IAAI,IAAI,EAAE;oBACnBA,gBAAa,CAAC,aAAa,CAAC,+BAA+B,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;wBAE9F,UAAU,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;qBAC/B,EACG,UAAA,GAAG;;wBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC/B,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;qBAClC,CAAC,CAAC;iBACV;qBAAM;oBACH,WAAW,CAAC,iCAAiC,CAAC,CAAC;iBAClD;aAEJ;;;;;;;;;;QAOD,8DAAmC;;;;;;;;YAAnC,UAAoCA,gBAA4B,EAAE,UAAkB,EAAE,SAAiB,EACnG,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,KAAK,CAAC,0CAA0C,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEzG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;iBAC1B,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;aACV;;;;;;;;;;;;;QAKD,6CAAkB;;;;;;;;;;;YAAlB,UAAmBA,gBAA4B,EAAE,OAAe,EAAE,WAAmB,EAAE,SAAiB,EAAE,QAAgB,EACtH,UAAoB,EAAE,WAAqB,EAAc,cAA4B;;wCAAA;;;gBAErF,IAAI,KAAK,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;gBAClGA,gBAAa,CAAC,aAAa,CAAC,mCAAmC,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE9G,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;oBAEjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;aACV;;;;;;;;;;;;QAED,iDAAsB;;;;;;;;;;;YAAtB,UAAuBA,gBAA4B,EAAE,OAAe,EAAE,WAAmB,EAAE,SAAiB,EAAE,QAAgB,EAC1H,UAAoB,EAAE,WAAqB,EAAc,cAA4B;;wCAAA;;;gBAErF,IAAI,KAAK,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,cAAc,EAAE,CAAC;gBAClGA,gBAAa,CAAC,aAAa,CAAC,mCAAmC,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE9G,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBAEvB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBAC1B,CAAC,CAAC;aACV;;;;;;;;;;QAGD,kDAAuB;;;;;;;;YAAvB,UAAwBA,gBAA4B,EAAE,SAAiB,EAAE,QAAQ,EAC7E,UAAoB,EAAE,WAAqB;gBAD/C,iBAqBC;;;gBAfG,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,IAAI,EAAE;oBAC5CA,gBAAa,CAAC,KAAK,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;wBAC3E,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;wBAC5B,KAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,CAAC;;;wBAGzC,UAAU,CAAC,QAAQ,CAAC,CAAC;qBACxB,EACG,UAAA,KAAK;;wBAED,WAAW,CAAC,KAAK,CAAC,CAAC;qBACtB,CAAC,CAAC;iBACV;qBAAM;oBACH,UAAU,CAAC,QAAQ,CAAC,CAAC;iBACxB;aACJ;;;;;;QAGD,oDAAyB;;;;YAAzB,UAA0B,SAAS;gBAC/B,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;aACnE;;;;;;;;QAID,oDAAyB;;;;;;YAAzB,UAA0B,SAAiB,EAAE,SAAiB,EAAE,kBAAkB;;gBAC9E,IAAI,cAAc,GAAW,EAAE,CAAC;;gBAChC,IAAI,aAAa,CAAC;;gBAElB,IAAI,SAAS,GAAG,IAAI,KAAK,EAAW,CAAC;;gBACrC,IAAI,QAAQ,CAAU;;gBACtB,IAAI,cAAc,CAAS;;;gBAK3B,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,eAAe,CAAC;gBAE7D,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC3B,OAAO,SAAS,IAAI,EAAE,EAAE;wBAEpB,cAAc,GAAG,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBAC5D,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC,aAAa,GAAG,aAAa,CAAC,SAAS,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,cAAc,CAAC,QAAQ,EAAE,GAAA,CAAC,CAAC;wBAErH,cAAc,GAAG,aAAa,CAAC,QAAQ,CAAC;wBACxC,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;4BAChD,QAAQ,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,aAAa,CAAC,WAAW,CAAC,CAAC;4BAC1E,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;yBAC5B;;;qBAKJ;iBACJ;qBAAM;oBACH,OAAO,IAAI,CAAC;iBACf;gBACD,OAAO,SAAS,CAAC;aACpB;;;;;;QAGD,gDAAqB;;;;YAArB,UAAsB,SAAS;gBAA/B,iBAWC;gBAVG,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;oBACnC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC1C,SAAS,CAAC,SAAS,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;wBACrD,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;qBACtD;yBAAM;wBACH,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,IAAI;4BAC5B,KAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;yBACpC,CAAC,CAAC;qBACN;iBACJ;aACJ;;;;;;;;;;;;;QAGD,wCAAa;;;;;;;;;;;YAAb,UAAcA,gBAA4B,EAAE,SAAiB,EAAE,WAAmB,EAAE,WAAmB,EAAE,SAAuB,EAAE,UAAoB,EAAE,WAAqB,EAAE,WAA4B;gBAA5B,4BAAA;oBAAA,mBAA4B;;;gBACvM,IAAI,IAAI,CAAC;gBACT,IAAI,GAAG,EAAE,cAAc,EAAE,WAAW,EAAE,cAAc,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;gBAExHA,gBAAa,CAAC,wBAAwB,CAAC,wBAAwB,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEpG,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,KAAK;;oBAED,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;;;QAGD,8CAAmB;;;;;;;;;YAAnB,UAAoBA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAC1E,UAAoB,EAAE,WAAqB,EAAE,SAAc;gBAC3DA,gBAAa,CAAC,aAAa,CAAC,gCAAgC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE1F,IAAI,QAAQ,GAAQ,IAAI,CAAC;;oBACzB,IAAI,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;oBACpE,uBAAuB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,SAAS,EAAEA,gBAAa,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;wBACjF,UAAU,CAAC,QAAQ,CAAC,CAAC;qBACxB,CAAC,CAAC;iBAEN,EACG,UAAA,KAAK;;oBAED,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;;;QAED,oDAAyB;;;;;;;;;YAAzB,UAA0BA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAChF,UAAoB,EAAE,WAAqB,EAAE,SAAc;gBAC3DA,gBAAa,CAAC,aAAa,CAAC,sCAAsC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEhG,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,KAAK;;oBAED,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;;QAED,kDAAuB;;;;;;;;YAAvB,UAAwBA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAC9E,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,KAAK,CAAC,oCAAoC,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEzF,UAAU,CAAC,IAAI,CAAC,CAAC;iBACxB,EACG,UAAA,KAAK;;oBAED,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;QAGM,8CAAmB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,KAAU,EAAE,UAAoB,EAAE,WAAqB;gBAC/HA,gBAAa,CAAC,aAAa,CAAC,mCAAmC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE9F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;;QAIX,mDAAwB;;;;;;;;YAAxB,UAAyBA,gBAA4B,EAAE,SAAiB,EAAE,KAAa,EACnF,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,KAAK,CAAC,qCAAqC,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAG/F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,KAAK;;oBAED,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;;QAGD,8CAAmB;;;;;;;;YAAnB,UAAoBA,gBAA4B,EAAE,SAAiB,EAAE,WAAmB,EACpF,UAAoB,EAAE,WAAqB;;gBAC3C,IAAI,KAAK,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;gBAE1CA,gBAAa,CAAC,aAAa,CAAC,uCAAuC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAElG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC3C,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;aACV;;;;;;;;;;QAGD,4CAAiB;;;;;;;;YAAjB,UAAkBA,gBAA4B,EAAE,SAAiB,EAAE,YAAoB,EACnF,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,KAAK,CAAC,8BAA8B,GAAG,SAAS,GAAG,GAAG,GAAG,YAAY,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE/F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;aACV;;;;;;;;;;;QAGD,oDAAyB;;;;;;;;;YAAzB,UAA0BA,gBAA4B,EAAE,SAAiB,EAAE,YAAoB,EAAE,MAAc,EAC3G,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,gBAAgB,CAAC,sCAAsC,GAAG,SAAS,GAAG,GAAG,GAAG,YAAY,GAAG,GAAG,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAExI,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;aACV;;;;;;;;;;QAIM,6CAAkB;;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAChF,UAAoB,EAAE,WAAqB,EAAE,SAAc;;gBAC3D,IAAI,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAEpE,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW;oBAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;gBAEnG,OAAO,CAAC,GAAG,CAACA,gBAAa,CAAC,CAAC;gBAC3BA,gBAAa,CAAC,aAAa,CAAC,+BAA+B,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACzF,IAAI,SAAS,GAAQ,IAAI,CAAC;oBAC1B,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAEA,gBAAa,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;wBAClF,UAAU,CAAC,SAAS,CAAC,CAAC;qBACzB,CAAC,CAAC;iBAEN,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;;;QAKL,kDAAuB;;;;;;;;;YAA7B,UAA8BA,gBAA4B,EAAE,SAAiB,EAAE,IAAY,EACvF,SAAc,EAAE,SAAwB,EAAE,OAAqB;gBAA/C,0BAAA;oBAAA,gBAAwB;;gBAAE,wBAAA;oBAAA,aAAqB;;;;;;;gCAG3D,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gCAEpE,IAAI,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,IAAI,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,GAAG,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;gCAC3H,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW;oCAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;gCAE5F,qBAAMA,gBAAa,CAAC,aAAa,CAAC,+BAA+B,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAvG,IAAI,GAAG,SAAgG,CAAC;gCACxG,qBAAM,uBAAuB,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,EAAEA,gBAAa,CAAC,EAAA;;gCAAhF,SAAgF,CAAC;gCACjF,sBAAO,IAAI,EAAC;;;;aACf;;;;;;;;;QAIK,yDAA8B;;;;;;;YAApC,UAAqCA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAAE,SAAc;;;;;;gCACvG,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gCAGpE,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW;oCAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;gCAEvF,qBAAMA,gBAAa,CAAC,aAAa,CAAC,sCAAsC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAnH,SAAS,GAAG,SAAuG,CAAC;gCACpH,qBAAM,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAEA,gBAAa,CAAC,EAAA;;gCAArF,SAAqF,CAAC;gCACtF,sBAAO,SAAS,EAAC;;;;aACpB;;;;;;;;;;QAID,kDAAuB;;;;;;;;YAAvB,UAAwBA,gBAA4B,EAAE,SAAiB,EAAE,SAAiB,EACtF,UAAoB,EAAE,WAAqB;;gBAC3C,IAAI,IAAI,CAAC;gBACT,IAAI,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;gBACjCA,gBAAa,CAAC,aAAa,CAAC,4BAA4B,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEtF,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC3C,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;iBAC3B,CAAC,CAAC;aACV;;;;;;;;;;QAGD,+CAAoB;;;;;;;;YAApB,UAAqBA,gBAA4B,EAAE,SAAiB,EAAE,OAAe,EACjF,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,KAAK,CAAC,iCAAiC,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAG7F,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;wBACxB,UAAU,CAAC,IAAI,CAAC,CAAC;qBACpB;yBACI;wBACD,UAAU,CAAC,KAAK,CAAC,CAAC;qBACrB;iBACJ,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;aACV;;;;;;;;;QAGM,mDAAwB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,OAAe,EAC5F,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,KAAK,CAAC,0CAA0C,GAAG,SAAS,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGtG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;oBAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;wBACxB,UAAU,CAAC,IAAI,CAAC,CAAC;qBACpB;yBACI;wBACD,UAAU,CAAC,KAAK,CAAC,CAAC;qBACrB;iBACJ,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;QAIJ,wDAA6B;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAC3F,UAAoB,EAAE,WAAqB;;gBAG3CA,gBAAa,CAAC,aAAa,CAAC,0CAA0C,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGpG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC;oBACrD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,IAAI,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;wBACxB,UAAU,CAAC,IAAI,CAAC,CAAC;qBACpB;yBACI;wBACD,UAAU,CAAC,KAAK,CAAC,CAAC;qBACrB;iBACJ,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;QAIJ,mDAAwB;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAC3E,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,KAAK,CAAC,qCAAqC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGjF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACjB,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;;;;;;;;;;;;QAKX,oDAAyB;;;;;;;;;YAAzB,UAA0BA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAChF,UAAoB,EAAE,WAAqB,EAAE,SAAc;;gBAC3D,IAAI,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAEpE,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW;oBAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;gBACnGA,gBAAa,CAAC,aAAa,CAAC,sCAAsC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEhG,IAAI,SAAS,GAAQ,IAAI,CAAC;oBAC1B,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAEA,gBAAa,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;wBAClF,UAAU,CAAC,IAAI,CAAC,CAAC;qBACpB,CAAC,CAAC;iBAEN,EACG,UAAA,KAAK;oBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBAEnB,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACpC,CAAC,CAAC;aACV;;;;;;;;;;;QAED,2DAAgC;;;;;;;;;;YAAhC,UAAiCA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EACvF,UAAoB,EAAE,WAAqB,EAAE,SAAc,EAAE,WAAmB;;gBAChF,IAAI,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,SAAS,CAAC,CAAC;gBAEpE,IAAI,WAAW,IAAI,CAAC,EAAE;oBAClB,IAAI,SAAS,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,CAAC,WAAW;wBAAE,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC,WAAW,CAAC;oBAC5IA,gBAAa,CAAC,oBAAoB,CAAC,sCAAsC,GAAG,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;wBAEpH,IAAI,SAAS,GAAQ,IAAI,CAAC;wBAC1B,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAEA,gBAAa,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;4BAClF,UAAU,CAAC,IAAI,CAAC,CAAC;yBACpB,CAAC,CAAC;qBAEN,EACG,UAAA,KAAK;wBACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;wBAEnB,IAAI,KAAK,CAAC,KAAK,EAAE;4BACb,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;yBACpC;6BACI;4BACD,WAAW,CAAC,KAAK,CAAC,CAAC;yBACtB;qBACJ,CAAC,CAAC;iBACV;qBAAM;oBACH,WAAW,CAAC,KAAK,CAAC,CAAC;iBACtB;aACJ;;;;;;;;;QAED,mDAAwB;;;;;;;;YAAxB,UAAyB,eAA+B,EAAE,SAAiB,EAAE,IAAY,EAAE,UAAoB,EAAE,WAAqB;gBAClI,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;;gBACvC,IAAI,SAAS,GAAG,eAAe,CAAC,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBACtB,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBACjD,UAAU,CAAC,MAAM,CAAC,CAAC;iBACtB,EAAE,UAAA,KAAK;oBACJ,WAAW,CAAC,KAAK,CAAC,CAAC;iBACtB,CAAC,CAAC;aACN;;;;;;;;QAED,0DAA+B;;;;;;;YAA/B,UAAgC,cAAmB,EAAE,KAAa,EAC9D,UAAoB,EAAE,aAAuB;;gBAC7C,IAAI,YAAY,GAAG,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,SAAS,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,IAAI,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAA,CAAC,IAAI,SAAS,GAAA,CAAC,IAAI,SAAS,GAAA,CAAC,CAAC;;gBAClN,IAAI,aAAa,GAAGD,WAAW,CAAC,YAAY,CAAC,CAAC;gBAE9C,IAAI,YAAY,IAAI,SAAS,EAAE;;oBAC3B,IAAI,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAA,CAAC,IAAI,SAAS,GAAA,CAAC,CAAA;oBACtH,aAAa,CAAC,cAAc,GAAG,EAAE,CAAC;oBAClC,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC3C,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;oBAC5B,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;oBAC1B,UAAU,CAAC,aAAa,CAAC,CAAA;iBAC5B;qBACI;oBACD,aAAa,CAAC,iCAAiC,CAAC,CAAC;iBACpD;aAEJ;;;;;;;;;QAGM,2CAAgB;;;;;;;;sBAACC,gBAA4B,EAAE,SAAiB,EACnE,UAAoB,EAAE,WAAqB,EAAE,SAA4B;gBAA5B,0BAAA;oBAAA,oBAA4B;;gBAEzEA,gBAAa,CAAC,KAAK,CAAC,6BAA6B,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE3F,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC;iBAC1C,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;;QAIJ,kDAAuB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,KAAU,EACtF,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,aAAa,CAAC,oCAAoC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE/F,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;iBAClD,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;QASE,wDAA6B;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,KAAU;;;;;;;gCAKvF,qBAAMA,gBAAa,CAAC,aAAa,CAAC,oCAAoC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA7G,IAAI,GAAG,SAAsG,CAAC;gCAC9G,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;gCACvB,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;QAMb,8CAAmB;;;;;sBAAC,OAA4B,EAAE,GAAG;gBACxD,IAAI;;oBACA,IAAI,mBAAmB,CAAe;oBACtC,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,UAAA,GAAG;;wBAClC,IAAI,KAAK,GAAY,KAAK,CAAC;wBAC3B,GAAG,CAAC,cAAc,CAAC,OAAO,CAAC,UAAA,GAAG;4BAE1B,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE;gCACjB,KAAK,GAAG,IAAI,CAAC;6BAChB;yBACJ,CAAC,CAAC;wBACH,OAAO,KAAK,CAAC;qBAChB,CAAC,CAAC;oBACH,mBAAmB,CAAC,cAAc,GAAG,mBAAmB,CAAC,cAAc,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,GAAG,IAAI,GAAG,GAAA,CAAC,CAAC;oBACtG,OAAO,mBAAmB,CAAC;iBAC9B;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,IAAI,CAAC;iBACf;;;;;;;QAKE,+CAAoB;;;;;sBAAC,QAA4B,EAAE,OAAO;;gBAC7D,IAAI,YAAY,CAAc;gBAC9B,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAA,IAAI,IAAI,OAAA,IAAI,CAAC,WAAW,IAAI,OAAO,GAAA,CAAC,CAAC;gBAClE,OAAO,YAAY,CAAC;;;;;;;;;;QAIjB,sDAA2B;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,KAAU,EAC1F,UAAoB,EAAE,WAAqB;gBAE3CA,gBAAa,CAAC,aAAa,CAAC,wCAAwC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEnG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC3C,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;;QAIX,uDAA4B;;;;;;;YAA5B,UAA6BA,gBAA4B,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBACrHA,gBAAa,CAAC,KAAK,CAAC,yCAAyC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAErF,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;oBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC5B;oBAED,UAAU,CAAC,KAAK,CAAC,CAAC;iBACrB,EACG,UAAA,GAAG;;oBAEC,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;;QAKD,uDAA4B;;;;;;;;YAA5B,UAA6BA,gBAA4B,EAAE,SAAiB,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBACxIA,gBAAa,CAAC,KAAK,CAAC,yCAAyC,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEvG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;oBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC5B;oBAED,UAAU,CAAC,KAAK,CAAC,CAAC;iBACrB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;QAED,iDAAsB;;;;;;;YAAtB,UAAuBA,gBAA4B,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBAC/GA,gBAAa,CAAC,KAAK,CAAC,mCAAmC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE/E,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;oBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC5B;oBAED,UAAU,CAAC,KAAK,CAAC,CAAC;iBACrB,EACG,UAAA,GAAG;;oBAEC,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;QAED,kDAAuB;;;;;;;;YAAvB,UAAwBA,gBAA4B,EAAE,SAAiB,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBACnIA,gBAAa,CAAC,KAAK,CAAC,oCAAoC,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAElG,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;oBAClD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC5B,KAAK,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;qBAC5B;oBAED,UAAU,CAAC,KAAK,CAAC,CAAC;iBACrB,EACG,UAAA,GAAG;;oBAEC,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;;QAID,2CAAgB;;;;;;;YAAhB,UAAiBA,gBAA4B,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBACzGA,gBAAa,CAAC,KAAK,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACzE,IAAI,MAAM,CAAC;oBACX,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC1B,UAAU,CAAC,MAAM,CAAC,CAAC;iBACtB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;aACV;;;;;;;;QAGM,mDAAwB;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBACxHA,gBAAa,CAAC,KAAK,CAAC,qCAAqC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACjF,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;;;;;;;;;QAIJ,iDAAsB;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,UAAoB,EAAE,WAAqB;gBACtHA,gBAAa,CAAC,KAAK,CAAC,mCAAmC,GAAG,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC/E,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;;;;;;;QAKE,mDAAwB;;;;;sBAACA,gBAA4B,EAAE,SAAiB;;;;;oCAGjE,qBAAMA,gBAAa,CAAC,KAAK,CAAC,+BAA+B,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAlG,aAAa,GAAG,SAAkF,CAAC;gCACnG,sBAAO,aAAa,CAAC,CAAC,CAAC,EAAC;;;;;;;;;;QAGf,oDAAyB;;;;;sBAACA,gBAA4B,EAAE,SAAiB;;;;;;;gCAIvE,qBAAMA,gBAAa,CAAC,KAAK,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA3E,IAAI,GAAG,SAAoE,CAAC;gCAC5E,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;;;;;;;;;QAIb,2CAAgB;;;;;;;;;;;;;sBAACA,gBAA4B,EAAE,QAAgB,EAAE,QAAgB,EAAE,UAAU,EAAE,SAAiB,EAAE,IAAY,EAAE,OAAe,EAAE,UAAkB,EACtK,UAAoB,EAAE,WAAqB;;gBAE3C,IAAI,SAAS,CAAC;gBACd,SAAS,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAC;gBACnJA,gBAAa,CAAC,wBAAwB,CAAC,6BAA6B,GAAG,QAAQ,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,KAAK;;oBAEvG,UAAU,EAAE,CAAC;iBAChB,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;QAKE,wDAA6B;;;;;sBAACA,gBAA4B,EAAE,SAAiB;;;;;oCAGtE,qBAAMA,gBAAa,CAAC,KAAK,CAAC,qCAAqC,GAAG,SAAS,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAxG,aAAa,GAAG,SAAwF,CAAC;gCACzG,sBAAO,aAAa,EAAC;;;;;;;;;;;;;QAKZ,8CAAmB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,KAAU,EAAE,UAAoB,EAAE,WAAqB;;;wBAErIA,gBAAa,CAAC,aAAa,CAAC,gCAAgC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;;4BAG3F,UAAU,CAAC,IAAI,CAAC,CAAC;yBACpB,EACG,UAAA,GAAG;;4BAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;4BACjB,WAAW,EAAE,CAAC;yBACjB,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;QAgBX,4CAAiB;;;;;;;;YAAjB,UAAkBA,gBAA4B,EAAE,QAAgB,EAAE,UAAoB,EAAE,WAAqB;gBACzGA,gBAAa,CAAC,KAAK,CAAC,8BAA8B,GAAG,QAAQ,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACzE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;iBAChC,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;aACV;;;;;;;;;;;;;;;;;;QAUD,oDAAyB;;;;;;;;;YAAzB,UAA0BA,gBAA4B,EAAE,QAAgB,EAAE,IAAS,EAAE,UAAoB,EAAE,WAAqB;;gBAE5HA,gBAAa,CAAC,aAAa,CAAC,sCAAsC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC/F,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBAC3C,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;aACV;;;;;;;;;;;QAUM,8CAAmB;;;;;;;;;;sBAACA,gBAA4B,EAAE,QAAgB,EAAE,cAAsB,EAAE,IAAS,EACxG,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,aAAa,CAAC,yBAAyB,GAAG,QAAQ,GAAG,GAAG,GAAG,cAAc,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACzG,IAAI,SAAS,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACjD,UAAU,CAAC,SAAS,CAAC,CAAC;iBACzB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;;;;;;QAGJ,sDAA2B;;;;;;;;sBAACA,gBAA4B,EAAE,QAAgB,EAAE,IAAS,EACxF,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,oBAAoB,CAAC,qCAAqC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACrG,IAAI,SAAS,GAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;oBACjD,UAAU,CAAC,SAAS,CAAC,CAAC;iBACzB,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;iBAC9C,CAAC,CAAC;;;;;;;;;;QAIL,iCAAM;;;;;;;;YAAZ,UAAaA,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAAE,QAAgB,EAAE,QAAgB;;;;;;gCAEnG,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;gCAC/F,qBAAMA,gBAAa,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAzF,IAAI,GAAG,SAAkF,CAAA;gCACzF,sBAAO,IAAI,EAAA;;;;aACd;;;;;;;;;;;;;;;;;;QAYK,4CAAiB;;;;;;;;;YAAvB,UAAwBA,gBAA4B,EAAE,SAAiB,EAAE,SAAiB,EAAE,SAAiB,EAAE,GAAW;;;;;;gCAElH,IAAI,GAAG,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;gCACnE,qBAAMA,gBAAa,CAAC,aAAa,CAAC,uBAAuB,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAtG,IAAI,GAAG,SAA+F,CAAA;gCACtG,sBAAO,IAAI,EAAA;;;;aACd;;;;;;;;;;QAGY,+CAAoB;;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAC7E,UAAkB,EAAE,SAAiB,EAAE,GAAW,EAAE,WAAqB;;;wBACzEA,gBAAa,CAAC,wBAAwB,CAAC,0BAA0B,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,GAAG,GAAG,EAAE,UAAU,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;4BAEnI,WAAW,CAAC,IAAI,CAAC,CAAC;yBACrB,EACG,UAAA,KAAK;;4BAED,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;yBACnC,CAAC,CAAC;;;;;;;;;;QAGL,qDAA0B;;;;;YAAhC,UAAiCA,gBAA4B,EAAE,IAAI;;;;;oCAGxD,qBAAMA,gBAAa,CAAC,wBAAwB,CAAC,+BAA+B,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAtG,IAAI,GAAG,SAA+F,CAAA;gCACtG,sBAAO,IAAI,EAAA;;;;aACd;;;;;;;;;;;;QAOK,0DAA+B;;;;;;YAArC,UAAsCA,gBAA4B,EAAE,IAAI;;;;;oCAG7D,qBAAMA,gBAAa,CAAC,wBAAwB,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA3G,IAAI,GAAG,SAAoG,CAAA;gCAC3G,sBAAO,IAAI,EAAA;;;;aACd;;;;;;;QAGK,mDAAwB;;;;;;YAA9B,UAA+BA,gBAA4B,EAAE,SAAiB,EAAE,MAAc;;;;;;gCACtF,KAAK,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;gCAE/C,qBAAMA,gBAAa,CAAC,aAAa,CAAC,6BAA6B,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA1F,IAAI,GAAG,SAAmF,CAAA;gCAC1F,sBAAO,IAAI,EAAC;;;;aACf;;;;;;;;;;QAUM,6CAAkB;;;;;;;;;sBAAC,QAAgB,EAAEA,gBAA4B,EACpE,IAAS,EAAE,SAAmB,EAAE,YAAsB;;gBAItDA,gBAAa,CAAC,aAAa,CAAC,iCAAiC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC1F,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;iBACrD,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACnC,CAAC,CAAC;;;;;;;;;;;;QAIL,+CAAoB;;;;;;;;;;YAA1B,UAA2B,WAA0B,EAAE,SAAiB,EAAE,UAAkB,EAAE,IAAY,EAAE,QAAgB,EAAE,OAAe,EAAE,OAAe;;;;;;gCAEtJ,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAA;gCACvH,qBAAM,WAAW,CAAC,aAAa,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA1F,WAAW,GAAG,SAA4E,CAAA;gCAC1F,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gCACrC,sBAAO,WAAW,EAAA;;;;aACrB;;;;;;;;;QAEK,+CAAoB;;;;;;;;YAA1B,UAA2B,WAA0B,EAAE,SAAiB,EAAE,UAAkB,EAAE,UAAkB,EAAE,MAAc;;;;;;gCAExH,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;gCACzF,qBAAM,WAAW,CAAC,aAAa,CAAC,yBAAyB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA1F,WAAW,GAAG,SAA4E,CAAA;gCAC1F,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gCACrC,sBAAO,WAAW,EAAA;;;;aACrB;;;;;;;;QAEK,6CAAkB;;;;;;;YAAxB,UAAyB,WAA0B,EAAE,SAAiB,EAAE,UAAkB,EAAE,MAAc;;;;;;gCAElG,IAAI,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;gCAChE,qBAAM,WAAW,CAAC,aAAa,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAxF,WAAW,GAAG,SAA0E,CAAA;gCACxF,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gCACrC,sBAAO,WAAW,EAAA;;;;aACrB;;;;;;;;;;QAGM,6CAAkB;;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,KAAa,EAAE,UAAkB,EACxG,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,KAAK,CAAC,mCAAmC,GAAG,SAAS,GAAG,GAAG,GAAG,KAAK,GAAG,GAAG,GAAG,UAAU,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAChH,UAAU,EAAE,CAAC;iBAChB,EACG,UAAA,GAAG;;oBAEC,WAAW,EAAE,CAAC;iBACjB,CAAC,CAAC;;;;;;;;;;QAGJ,oDAAyB;;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,wBAAgC,EAAE,WAAuB,EAAE,YAAsB;gBAC/JA,gBAAa,CAAC,wBAAwB,CAAC,sCAAsC,GAAG,SAAS,GAAG,GAAG,GAAG,wBAAwB,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACnJ,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;iBACjE,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;oBAChD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC9D,CAAC,CAAC;;;;;;;;;QAGJ,wDAA6B;;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,WAAuB,EAAE,YAAsB;gBACjIA,gBAAa,CAAC,wBAAwB,CAAC,0CAA0C,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACtH,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;iBACjE,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAA;oBACpD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;oBAClB,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC9D,CAAC,CAAC;;;;;;;;QAGE,gDAAqB;;;;;;sBAACA,gBAA4B,EAAE,SAAiB,EAAE,WAAuB;;;;;oCAE5F,qBAAMA,gBAAa,CAAC,wBAAwB,CAAC,kCAAkC,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA5H,IAAI,GAAG,SAAqH;gCAChI,sBAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAA;;;;;;;;;;;;QASxD,qDAA0B;;;;;;;sBAACA,gBAA4B,EAAE,QAAgB,EAAE,IAAS;;;;;;;gCAG9E,qBAAMA,gBAAa,CAAC,wBAAwB,CAAC,gCAAgC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAlH,IAAI,GAAG,SAA2G;gCACtH,sBAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,SAAS,EAAC;;;gCAGlE,OAAO,CAAC,KAAK,CAAC,GAAC,CAAC,CAAC;gCACjB,sBAAO,IAAI,EAAC;;;;;;;;;;;;;;;QAYb,mDAAwB;;;;;;;;;sBAACA,gBAA4B,EAAE,QAAgB,EAAE,IAAS,EACrF,SAAmB,EAAE,YAAsB;gBAC3CA,gBAAa,CAAC,wBAAwB,CAAC,8BAA8B,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAClG,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;oBACC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB,CAAC,CAAC;;QAtiCXC;YACkDC,WAAAC,WAAQ,EAAE,CAAA,EAAsBD,WAAAC,WAAQ,EAAE,CAAA,EAA0BD,WAAAC,WAAQ,EAAE,CAAA,EAAkBD,WAAAC,WAAQ,EAAE,CAAA;;6CADzH,aAAa,EAAa,KAAK,kBAClD,QAAQ,EAAe,QAAQ;;mEAe9C;QAIDF;YACkDC,WAAAC,WAAQ,EAAE,CAAA,EAAsBD,WAAAC,WAAQ,EAAE,CAAA;;6CADvD,aAAa,kCAClC,QAAQ,EAAe,QAAQ;;qEAoB9C;QAuBDF;YACkDC,WAAAC,WAAQ,EAAE,CAAA;;6CAD1B,aAAa,kCAC/B,QAAQ,EAAe,QAAQ;;kEAY9C;QAEDF;YACkDC,WAAAC,WAAQ,EAAE,CAAA;;6CADtB,aAAa,kCACnC,QAAQ,EAAe,QAAQ;;sEAY9C;+BAxLL;;;;;;;;IC8BA,IAAMN,QAAM,GAAG,OAAO,CAAC;;IACvB,IAAI,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAE3C,QAAA;QAWI,sBAAY,gBAAgC,EAAE,eAA8B,EAAE,SAAiB;2BAVtE,IAAI,MAAM,EAAE;mCAEA,IAAI;gCACV,KAAK;kCACJ,CAAC,CAAC;qCACC,CAAC;kCACZ,EAAE;YAKtB,IAAI,CAAC,eAAe,GAAG,gBAAgB,CAAC;YACxC,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC/B;;;;;;QAKM,yCAAkB;;;;;sBAAC,YAAwB;gBAC9C,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,EAAE;oBAClC,YAAY,CAAC,cAAc,GAAG,IAAI,CAAC;oBACnC,YAAY,CAAC,KAAK,GAAG,IAAI,KAAK,EAAe,CAAC;iBACjD;;;;;;;;;;;;QAGE,2CAAoB;;;;;;;;;;sBAAC,SAAiB,EAAE,aAA4B,EAAE,WAAuB,EAChG,SAAc,EAAE,SAAmB,EAAE,YAAsB,EAAE,cAA8B;gBAA9B,+BAAA;oBAAA,qBAA8B;;gBAC3F,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;gBACrC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;gBAEhE,aAAa,CAAC,wBAAwB,CAAC,sBAAsB,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAC9K,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;oBACpC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;oBACxC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;oBAChD,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,cAAc,CAAA;;oBAG3D,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;oBACpD,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;oBAE9C,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;iBAC3C,EACG,UAAA,GAAG;;oBAEC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;oBAClC,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC;iBACpC,CAAC,CAAC;;;;;;;;;;QAGE,kDAA2B;;;;;;;;sBAAC,SAAiB,EAAE,aAA4B,EAAE,WAAuB,EAC7G,SAAc,EAAE,cAA8B;gBAA9B,+BAAA;oBAAA,qBAA8B;;;;;;;;gCAE1C,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;gCAErD,qBAAM,aAAa,CAAC,wBAAwB,CAAC,sBAAsB,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA5L,IAAI,GAAG,SAAqL;gCAC5L,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;gCACpC,WAAW,CAAC,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;gCACxC,WAAW,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;;gCAGhD,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,CAAC;gCACpD,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;gCAE9C,sBAAO,WAAW,EAAC;;;gCAGnB,sBAAO,IAAI,EAAC;;;;;;;;;;;;;QAKP,8CAAuB;;;;;;;sBAAC,SAAiB,EAAE,aAA4B,EAAE,WAA8B,EAAE,SAAc;;;;;;;gCAE5H,qBAAM,aAAa,CAAC,wBAAwB,CAAC,6BAA6B,GAAG,SAAS,GAAG,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA5L,SAA4L,CAAC;gCAE7L,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;;QAOb,yCAAkB;;;;;;sBAAC,SAAc,EAAE,WAAuB,EAAE,cAAuB;gBACtF,IAAI,SAAS,IAAI,IAAI,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,IAAI,IAAI,IAAI,EAAE;oBACjF,IAAI,cAAc,EAAE;wBAChB,WAAW,CAAC,UAAU,CAAC,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC;wBAC9D,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,IAAI,CAAC,EAAE;4BAClF,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;yBACtE;qBACJ;yBACI;wBACD,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,UAAU,CAAC,SAAS,CAAA;wBAChE,WAAW,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;qBAClE;iBACJ;;;;;;;;;;;;;;;;QAIE,kDAA2B;;;;;;;;;;;;;;sBAAC,OAAe,EAAE,YAAyB,EACzE,eAA6B,EAAE,SAAmB,EAAE,YAAsB,EAAE,SAAc,EAAE,SAAiB,EAC7G,YAAyB,EAAE,WAA8B,EAAE,YAAwB,EAAE,wBAAoC;;gBAApC,yCAAA;oBAAA,+BAAoC;;;gBAEzH,IAAI,WAAW,CAAa;;gBAC5B,IAAI,WAAW,CAAS;;gBACxB,IAAI,mBAAmB,CAAe;gBACtC,mBAAmB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;gBAExD,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;;;gBAGxL,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAM,MAAM;;;;;;oCACjD,WAAW,GAAG,MAAM,CAAC;oCACjB,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;0CACnG,eAAe,IAAI,CAAC,CAAA;wCAApB,wBAAoB;;oCAEpB,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;;oCAItE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,EAAE,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;oCACvK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;oCACpC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;oCACrJ,qBAAM,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,EAAA;;oCAAlE,SAAkE,CAAC;oCACnE,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;oCAErC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,CAAC,CAAC;oCACrJ,qBAAM,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,EAAA;;oCAAlE,SAAkE,CAAC;oCACnE,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;;;;;;iBAI5C,EAAE,UAAM,KAAK;;;;;0CACN,KAAK,CAAC,MAAM,IAAI,KAAK,CAAA;wCAArB,wBAAqB;;oCACrB,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;oCACtJ,qBAAM,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,EAAA;;oCAAlE,SAAkE,CAAC;oCACnE,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;;oCAErC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oCACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oCACnB,YAAY,EAAE,CAAC;;;;;;iBAEtB,CAAC,CAAC;;;;;;;;;;;;;;;;QAKA,gCAAS;;;;;;;;;;;;;;sBAAC,YAAyB,EACtC,eAA6B,EAAE,SAAmB,EAAE,YAAsB,EAAE,SAAc,EAAE,SAAiB,EAC7G,YAAyB,EAAE,WAA8B,EAAE,YAAwB,EAAE,wBAAoC,EAAE,cAAkB;gBAAxD,yCAAA;oBAAA,+BAAoC;;gBAAE,+BAAA;oBAAA,kBAAkB;;;gBAE7I,IAAI,WAAW,GAAe,YAAY,CAAC;;gBAE3C,IAAI,mBAAmB,CAAe;gBACtC,mBAAmB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;gBAExD,IAAI,WAAW,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC/B,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,EAAE,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,wBAAwB,CAAC,CAAC;oBACtJ,IAAI,SAAS;wBACT,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;wBAErC,OAAO,WAAW,CAAC;iBAE1B;qBAAM;;oBACH,IAAI,eAAe,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC,KAAK,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;oBACvG,IAAI,eAAe,IAAI,CAAC,EAAE;;wBAEtB,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC,eAAe,IAAI,YAAY,CAAC,SAAS,CAAC;wBAErE,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,EAAE,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,mBAAmB,CAAC,IAAI,IAAI,EAAE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC;wBACvK,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;wBACpC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;wBACrK,IAAI,SAAS;4BACT,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;4BAErC,OAAO,WAAW,CAAC;qBAC1B;yBAAM;wBACH,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,wBAAwB,EAAE,cAAc,CAAC,CAAC;wBACrK,IAAI,SAAS;4BACT,SAAS,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;;4BAErC,OAAO,WAAW,CAAC;qBAC1B;iBACJ;;;;;;;;QAOE,4CAAqB;;;;;;sBAAC,WAA+B,EAAE,SAAuB,EAAE,YAAyB;;;gBAC5G,IAAI,IAAI,GAAgB,IAAI,CAAC;;gBAC7B,IAAI,QAAQ,GAAW,CAAC,CAAC;gBACzB,YAAY,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gBAChC,IAAI,WAAW,KAAK,SAAS,IAAI,SAAS,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAEhF,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,IAAI,KAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAA,CAAC,CAAC;oBACpH,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,EAAE;;wBAEpC,IAAI,CAAC,+BAA+B,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC;wBAC7G,IAAI,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE;4BACtG,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC;4BACrC,QAAQ,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;;yBAE9E,AAEA;qBACJ;iBACJ;gBACD,OAAO,QAAQ,CAAC;;;;;;QAGpB,0CAAmB;;;;YAAnB,UAAoB,YAAyB;;gBACzC,IAAI,QAAQ,GAAG,CAAC,CAAC;;gBACjB,IAAI,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAA;gBAE9E,IAAI,WAAW,EAAE;oBACb,QAAQ,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC;iBACjC;gBAED,IAAI,QAAQ,GAAG,CAAC,EAAE;oBACd,OAAO,IAAI,CAAC;iBACf;qBACI;oBACD,OAAO,KAAK,CAAC;iBAChB;aAEJ;;;;;;;QAOM,yCAAkB;;;;;;sBAAC,YAAyB,EAAE,WAA+B;;gBAChF,IAAI,KAAK,GAAY,KAAK,CAAC;gBAC3B,IAAI;oBACA,IAAI,WAAW,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,IAAI,YAAY,CAAC,EAAE,GAAA,CAAC,EAAE;wBACxD,KAAK,GAAG,IAAI,CAAC;qBAChB;iBACJ;gBAAC,WAAM;iBAEP;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAQV,yCAAkB;;;;;;sBAAC,IAAiB,EAAE,WAAuB;;gBAChE,IAAI,KAAK,GAAY,KAAK,CAAC;gBAC3B,IAAI;;oBACA,IAAI,UAAU,GAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,OAAO,GAAA,CAAC,CAAC,KAAK,CAAC;;oBAClF,IAAI,WAAW,GAAW,WAAW,CAAC,MAAM,CAAC;oBAE7C,IAAI,WAAW,IAAI,UAAU,EAAE;wBAC3B,KAAK,GAAG,IAAI,CAAC;qBAChB;iBAGJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;oBACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;gBACD,OAAO,KAAK,CAAC;;;;;;;;;;;;;;QAKV,+CAAwB;;;;;;;;;;;;sBAAC,WAAuB,EAAE,OAAe,EACpE,SAAc,EAAE,SAAiB,EAAE,aAAqB,EAAE,SAAmB,EAAE,YAAsB,EACnG,WAA+B,EAAE,YAAgC;;gBAAjE,4BAAA;oBAAA,kBAA+B;;gBAAE,6BAAA;oBAAA,mBAAgC;;;gBAEnE,IAAI,WAAW,CAAS;gBACxB,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;;;gBAGpC,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,KAAK,EAAE;oBACtC,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAExL,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;wBAC3C,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;wBAC7D,KAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;qBACzH,EAAE,UAAA,KAAK;wBACJ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;;4BACvB,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;4BAC7D,KAAI,CAAC,2BAA2B,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;yBACzH;6BAAM;4BACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;4BACnC,YAAY,EAAE,CAAC;yBAClB;qBACJ,CAAC,CAAC;iBACN;;;;;;;;;;;;QAGE,kDAA2B;;;;;;;;;;sBAAC,WAAuB,EAAE,OAAe,EACvE,SAAc,EAAE,WAAwB,EAAE,SAAmB,EAAE,YAAsB,EAAE,YAAyB;gBAChH,IAAI,WAAW,EAAE;;oBACb,IAAI,aAAa,CAAc;oBAC/B,IAAI,YAAY,EAAE;wBACd,aAAa,GAAG,YAAY,CAAC;qBAChC;yBAAM;wBACH,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;wBAClC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;qBAC/B;;oBAED,IAAI,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAClM,IAAI,CAAC,uBAAuB,CAAC,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;;;wBAGzF,OAAO,CAAC,+BAA+B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;4BACpE,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;4BACxB,SAAS,EAAE,CAAC;yBACf,CAAC,CAAC,KAAK,CAAC,UAAA,CAAC;4BACN,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;4BACxB,SAAS,EAAE,CAAC;yBACf,CAAC,CAAC;qBACN,CAAC,CAAC,KAAK,CAAC,UAAA,CAAC;wBACN,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;wBACd,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;wBAClE,SAAS,EAAE,CAAC;;;qBAGf,CAAC,CAAC;iBACN;qBACI;oBACD,SAAS,EAAE,CAAC;iBACf;;;;;;;;;;;;QAKE,mCAAY;;;;;;;;;;sBAAC,WAAuB,EAAE,OAAe,EACxD,SAAc,EAAE,SAAiB,EAAE,aAAqB,EAAE,SAAmB,EAAE,YAAsB;;gBAErG,IAAI,WAAW,CAAS;;;gBAGxB,IAAI,aAAa,CAAC,WAAW,EAAE,IAAI,KAAK,EAAE;oBACtC,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;oBAExL,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;wBAC3C,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;wBAC7D,SAAS,EAAE,CAAC;qBACf,EAAE,UAAA,KAAK;wBACJ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;;4BACvB,OAAO,CAAC,0BAA0B,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;4BAC7D,SAAS,EAAE,CAAC;yBACf;6BAAM;4BACH,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;4BACnC,YAAY,EAAE,CAAC;yBAClB;qBACJ,CAAC,CAAC;iBACN;;;;;;;;QAIQ,sCAAe;;;;;;sBAAC,OAAe,EAAE,SAAc,EAAE,SAAiB;;;;;;gCAE3E,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gCACxL,qBAAM,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAA;;gCAAjC,SAAiC,CAAC;;;;;;;;;;;;;;QAK/B,6CAAsB;;;;;;;;sBAAC,OAAe,EAAE,SAAiB,EAAE,YAAwB,EAAE,gBAAgB,EAAE,UAAU;;gBAEpH,IAAI,YAAY,CAAC,cAAc,KAAK,SAAS,IAAI,YAAY,CAAC,cAAc,IAAI,IAAI,EAAE;;oBAClF,IAAI,SAAS,GAAG,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,EAAE,CAAA;oBACvK,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;wBACtD,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;qBAC/B,CAAC,CAAA;;oBAGF,SAAS,GAAG,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,CAAA;oBACzJ,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;wBACtD,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;qBACjC,CAAC,CAAA;iBACL;;;;;;;;QAMQ,+CAAwB;;;;;;sBAAC,OAAe,EAAE,SAAc,EAAE,SAAiB;;;;;;;gCAKpF,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gCAE3K,qBAAM,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EAAA;;gCAAtD,UAAU,GAAG,SAAyC,CAAC;gCACvD,sBAAO,UAAU,EAAC;;;;;;;;;;;;;QAIT,uCAAgB;;;;;;;;sBAAC,SAAiB,EAAE,OAAe,EAAE,eAAoB,EAAE,gBAAqB,EAAE,SAAmB;;;;;;;gCAK1H,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,IAAI,EAAE,eAAe,CAAC,cAAc,CAAC,SAAS,EAAE,eAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gCACtN,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,CAAC,SAAS,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gCAC1M,qBAAM,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC,EAAA;;gCAA5D,UAAU,GAAG,SAA+C;gCAEhE,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC;gCACvD,UAAU,CAAC,IAAI,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,CAAC;gCACvD,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC;gCAC1B,qBAAM,OAAO,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,UAAU,CAAC,EAAA;;gCAAxE,SAAwE,CAAC;gCACzE,SAAS,EAAE,CAAC;;;;gCAEZ,SAAS,EAAE,CAAC;;;;;;;;;;;;QAQb,sDAA+B;;;;;sBAAC,WAAuB;;;;;;;;;;;;;;;gBAiB1D,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;;;;;;QAKjC,wCAAiB;;;;sBAAC,WAAuB;;gBAG5C,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;;oBAGzB,IAAI,UAAU,GAAG,KAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,EACtG,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;;oBAE7F,IAAI,YAAY,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;oBAClF,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;wBACpB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;qBACnK;yBAAM;wBACH,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC;qBAC7E;oBAMD,KAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC;iBACtG,CAAC,CAAC;gBACH,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;;;;;;;QAInC,oDAA6B;;;;;sBAAC,YAAyB,EAAE,WAAmB;;gBAC/E,IAAI,cAAc,GAAW,CAAC,CAAC;gBAC/B,IAAI;oBACA,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG;wBACjC,cAAc,GAAG,CAAC,CAAC,cAAc,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;qBAC1D,CAAC,CAAC;iBACN;gBAAC,WAAM;iBAEP;gBACD,QAAQ,CAAC,CAAC,WAAW,KAAK,CAAC,cAAc,CAAC,EAAE;;;;;;;;;;;;;;QA8BzC,8CAAuB;;;;;;;;;;;;sBAAC,YAAwB,EAAE,iBAAyB,EAAE,IAAY,EAAE,IAAY,EAC1G,eAA2B,EAAE,KAAa,EAAE,WAAmB;gBAE/D,YAAY,CAAC,WAAW,GAAG,iBAAiB,CAAC;gBAC7C,YAAY,CAAC,SAAS,GAAG,EAAE,CAAC;gBAC5B,YAAY,CAAC,YAAY,GAAG,EAAE,CAAC;gBAC/B,YAAY,CAAC,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACtD,YAAY,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gBAC1D,YAAY,CAAC,UAAU,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;gBACvC,YAAY,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC;gBAC9C,YAAY,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC;gBAC5B,YAAY,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC;gBAClC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;gBACzB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC;gBACzB,YAAY,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC7B,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBACxB,YAAY,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACtC,YAAY,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;;;QAIpC,4CAAqB;;;;;;;;;;sBAAC,eAA6B,EAAE,YAAyB,EAAE,SAAc,EAAE,YAAyB,EAAE,WAA8B,EAAE,YAAwB,EAAE,wBAAoC;gBAApC,yCAAA;oBAAA,+BAAoC;;;gBAE5N,IAAI,WAAW,CAAC;gBAChB,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtB,WAAW,GAAG,YAAY,CAAC;iBAC9B;qBAAM;oBACH,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;iBAClC;gBAED,WAAW,CAAC,KAAK,GAAGA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5D,WAAW,CAAC,WAAW,GAAG,CAAC,CAAC;gBAC5B,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;gBACjD,WAAW,CAAC,IAAI,GAAG,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC;gBACjD,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,SAAS,CAAC;gBACvD,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAEvB,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC;gBACnD,WAAW,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC;gBACjD,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC;gBAElD,WAAW,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;gBACrC,WAAW,CAAC,UAAU,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;;;gBAOtC,IAAI,WAAW,CAAC,YAAY,IAAI,EAAE,IAAI,YAAY,IAAI,IAAI,EAAE;oBACxD,WAAW,CAAC,YAAY,GAAG,UAAU,CAAC;oBACtC,WAAW,CAAC,SAAS,GAAG,QAAQ,CAAC;iBACpC;gBAED,IAAI,YAAY,CAAC,WAAW,IAAI,EAAE,IAAI,YAAY,CAAC,QAAQ,IAAI,EAAE,EAAE;oBAC/D,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC;oBACpD,WAAW,CAAC,SAAS,GAAG,YAAY,CAAC,QAAQ,CAAC;iBACjD;gBAGD,IAAI,YAAY,CAAC,SAAS,IAAI,EAAE,IAAI,YAAY,IAAI,IAAI,EAAE;oBACtD,WAAW,CAAC,WAAW,GAAG,OAAO,CAAC;iBACrC;qBACI;oBACD,IAAI,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE;wBAC9B,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC;qBACpD;iBACJ;;gBAGD,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAA;;;gBAKtK,OAAO,WAAW,CAAC;;;;;;;;QAMhB,sCAAe;;;;;sBAAC,YAAyB,EAAE,OAAqB;gBACnE,IAAI;oBACA,YAAY,CAAC,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,QAAQ,IAAI,eAAe,GAAA,CAAC,CAAC,KAAK,CAAC;oBACzG,YAAY,CAAC,cAAc,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,QAAQ,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC;oBAC1G,YAAY,CAAC,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,QAAQ,IAAI,QAAQ,GAAA,CAAC,CAAC,KAAK,CAAC;iBAChG;gBAAC,WAAM;iBAEP;gBACD,OAAO,YAAY,CAAC;;;;;;;;;;;;;QAIjB,4CAAqB;;;;;;;;;;;sBAAC,WAAuB,EAAE,eAA6B,EAC/E,YAAyB,EAAE,YAAyB,EAAE,WAA8B,EAAE,SAAc,EAAE,wBAAoC,EAAE,cAAkB;gBAAxD,yCAAA;oBAAA,+BAAoC;;gBAAE,+BAAA;oBAAA,kBAAkB;;;;gBAG9J,WAAW,CAAC,KAAK,GAAGA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5D,IAAI,WAAW,CAAC,WAAW,IAAI,EAAE,IAAI,YAAY,CAAC,SAAS,IAAI,EAAE,EAAE;oBAC/D,WAAW,CAAC,WAAW,GAAG,YAAY,CAAC,SAAS,CAAC;iBACpD;;gBAGD,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,wBAAwB,CAAC,CAAA;gBAEnL,OAAO,WAAW,CAAC;;;;;;;;;;;;;;;QAGhB,gDAAyB;;;;;;;;;;;;;sBAAC,WAAuB,EAAE,eAA6B,EACnF,gBAAoC,EAAE,YAAyB,EAC/D,YAAyB,EAAE,WAA8B,EAAE,SAAc,EAAE,iBAA8B,EAAE,cAAkB,EAAE,wBAAoC;gBAAxD,+BAAA;oBAAA,kBAAkB;;gBAAE,yCAAA;oBAAA,+BAAoC;;;gBAGnK,IAAI,WAAW,GAAG,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,UAAU,GAAA,CAAC,CAAA;gBACxF,IAAI,WAAW,CAAC,iBAAiB,CAAC,EAAE;oBAChC,OAAO,WAAW,CAAC,iBAAiB,CAAC,CAAC;iBACzC;gBACD,IAAI,WAAW,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,OAAO,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,KAAK,IAAI,EAAE,WAAW,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE;oBAC1M,WAAW,CAAC,iBAAiB,CAAC,GAAG,iCAAiC,GAAG,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC;oBACvG,YAAY,CAAC,SAAS,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;iBACzE;;gBAED,IAAI,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;gBACrC,WAAW,CAAC,KAAK,GAAGA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC5D,YAAY,GAAG,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;gBAE1L,IAAI,WAAW,CAAC,cAAc,CAAC,EAAE;oBAC7B,OAAO,WAAW,CAAC,cAAc,CAAC,CAAC;iBACtC;gBACD,IAAI,iBAAiB,EAAE;;oBAEnB,YAAY,CAAC,UAAU,GAAG,iBAAiB,CAAC,EAAE,CAAC;iBAClD;gBAED,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE;;oBAC/B,IAAI,cAAc,CAAsB;oBACxC,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;oBACzD,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;;wBAI7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;4BAC5C,IAAI,aAAa,GAAiB,cAAc,CAAC,CAAC,CAAC,CAAC;;4BACpD,IAAI,eAAe,CAAc;4BAEjC,IAAI,aAAa,CAAC,YAAY,EAAE;gCAC5B,eAAe,GAAG,aAAa,CAAC,YAAY,CAAC;6BAChD;iCACI;gCACD,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;gCAClD,eAAe,CAAC,SAAS,GAAG,aAAa,CAAC,QAAQ,CAAC;6BACtD;4BACD,eAAe,CAAC,UAAU,GAAG,aAAa,CAAC,YAAY,CAAC;4BACxD,eAAe,CAAC,SAAS,GAAG,eAAe,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;;4BAE/E,eAAe,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;4BAE/F,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;4BAC9D,IAAI;;gCACA,IAAI,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,KAAK,GAAA,CAAC,CAAC;gCAC7F,IAAI,UAAU,IAAI,UAAU,CAAC,KAAK,EAAE;oCAChC,eAAe,CAAC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;iCACnD;6BACJ;4BACD,OAAM,CAAC,EAAE;gCACL,OAAO,CAAC,IAAI,CAAC,6CAA6C,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;6BACtF;4BACD,IAAI,CAAC,yBAAyB,CAAC,WAAW,EAAE,aAAa,CAAC,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,EAAE,wBAAwB,CAAC,CAAC;yBACzL;qBACJ;;oBAGD,IAAI,YAAY,CAAC,aAAa,IAAI,CAAC,CAAC,EAAE;wBAClC,YAAY,CAAC,EAAE,GAAG,YAAY,CAAC,aAAa,CAAC;qBAChD;;oBAED,IAAI,YAAY,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE;wBAC/B,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;wBAClD,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,cAAc,CAAC;qBAC7D;oBACD,IAAI,wBAAwB,IAAI,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE;wBACjE,wBAAwB,CAAC,OAAO,CAAC,UAAA,GAAG;4BAChC,YAAY,CAAC,mBAAmB,CAAC,IAAI,cAAM,GAAG,EAAE,CAAC;yBACpD,CAAC,CAAC;qBACN;oBAED,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;iBAExC;qBACI;oBACD,WAAW,CAAC,cAAc,CAAC,GAAG,YAAY,CAAC,cAAc,CAAC,CAAC;iBAC9D;gBACD,YAAY,CAAC,cAAc,GAAG,YAAY,CAAC,EAAE,CAAC;;;;;;;QAIlD,uDAAgC;;;;YAAhC,UAAiC,eAA6B;gBAA9D,iBAkBC;;gBAjBG,IAAI,kBAAkB,GAAG,CAAC,CAAC;;gBAC3B,IAAI,mBAAmB,GAAG,CAAC,CAAC;;gBAC5B,IAAI,eAAe,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;gBAE5E,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,UAAA,OAAO;;oBACpD,IAAI,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC;;oBACnE,IAAI,eAAe,GAAG,KAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;oBAC7E,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;oBACnE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAA;oBAClE,mBAAmB,KAAK,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;iBAC3F,CAAC,CAAC;gBAEH,IAAI,mBAAmB,GAAG,eAAe,EAAE;oBACvC,kBAAkB,GAAG,GAAG,IAAI,eAAe,GAAG,GAAG,GAAG,mBAAmB,CAAC,CAAC;iBAC5E;gBACD,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;gBACjC,OAAO,kBAAkB,CAAC;aAC7B;;;;;;QAOM,0CAAmB;;;;;sBAAC,aAA2B;gBAClD,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;;;;;;;;;;QAG3D,wDAAiC;;;;;;;;sBAAC,WAAuB,EAAE,sBAA0C,EAAE,MAAc,EAAE,KAAK,EAAE,SAAiB;;;gBAClJ,IAAI,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;gBAGtC,aAAa,CAAC,UAAU,GAAG,MAAM,CAAC;gBAClC,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC;gBACzB,aAAa,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9E,aAAa,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;gBACpF,aAAa,CAAC,MAAM,GAAG,OAAO,CAAC;gBAG/B,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAACA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC3G,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBAC1E,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;;gBAErE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;;;gBAItE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBACvE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBACrE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;gBACnE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC;gBACzE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;gBAC9D,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC;gBAClE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;gBACjE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC,CAAC;gBAChE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;;gBAGnE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;gBAChF,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC;gBACrE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC,CAAC;gBACnE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;gBACjE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;gBACpE,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;gBACpG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;gBAC3F,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;gBAClG,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,KAAK,GAAG,SAAS,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;gBAE9F,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACtC,sBAAsB,CAAC,OAAO,CAAC,UAAA,QAAQ;oBACnC,QAAQ,CAAC,EAAE,GAAG,CAAC,KAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzE,QAAQ,CAAC,UAAU,GAAG,aAAa,CAAC,EAAE,CAAC;oBACvC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;iBACpC,CAAC,CAAC;gBAEH,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,CAAC;gBACtC,OAAO,aAAa,CAAC;;;;;;QAGzB,0CAAmB;;;;YAAnB,UAAoB,WAAuB;;;gBACvC,IAAI,qBAAqB,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,MAAM;;oBACvD,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC;;oBACzE,IAAI,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,kBAAkB,GAAA,CAAC,CAAC;oBACnF,OAAO,WAAW,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,CAAC,IAAI,EAAE,aAAa,IAAI,aAAa,CAAC,KAAK,IAAI,MAAM,CAAC,CAAA;iBACpG,CAAC,CAAC;gBAEH,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC;gBAC1B,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC;;;oBAGtB,KAAqB,IAAA,0BAAAC,SAAA,qBAAqB,CAAA,4DAAA,+FAAE;wBAAvC,IAAM,MAAM,kCAAA;wBACb,WAAW,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC;wBAC1F,WAAW,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;qBACtF;;;;;;;;;;;;;;;aACJ;;;;;;;;;;;;;QAGM,oDAA6B;;;;;;;;;;;;sBAAC,WAAuB,EAAE,eAA6B,EACvF,gBAAoC,EAAE,YAAyB,EAC/D,YAAyB,EAAE,WAA8B,EAAE,SAAc,EAAE,iBAA0C,EAAE,cAAkB;gBAA9D,kCAAA;oBAAA,6BAA0C;;gBAAE,+BAAA;oBAAA,kBAAkB;;;gBAEzI,IAAI,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;;gBACrC,IAAI,aAAa,CAAe;;gBAChC,IAAI,eAAe,GAAG,CAAC,CAAC;;gBACxB,IAAI,eAAe,CAAC;;gBACpB,IAAI,mBAAmB,CAAqB;;gBAC5C,IAAI,oBAAoB,GAAW,CAAC,CAAC;;gBACrC,IAAI,iBAAiB,GAAW,CAAC,CAAC;;gBAClC,IAAI,cAAc,GAAW,CAAC,CAAC;;gBAG/B,eAAe,GAAG,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;gBACzF,IAAI,cAAc,GAAG,CAAC,EAAE;oBACpB,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBAC/C,mBAAmB,CAAC,oBAAoB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,cAAc,GAAG,GAAG,CAAC;oBACxH,mBAAmB,CAAC,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,mBAAmB,CAAC,oBAAoB,CAAC;oBACnI,mBAAmB,CAAC,wBAAwB,GAAG,EAAE,CAAC;iBACrD;qBACI;oBACD,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;iBACpI;;gBAGD,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,CAAC,EAAE;oBACvD,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,mBAAmB,EAAE,YAAY,CAAC,CAAC;;oBAGlF,iBAAiB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC;oBAC3D,mBAAmB,CAAC,kBAAkB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAE9H,cAAc,GAAG,mBAAmB,CAAC,oBAAoB,CAAC;oBAC1D,mBAAmB,CAAC,oBAAoB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;oBAClI,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;;oBAG3G,YAAY,CAAC,YAAY,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;;oBAG1G,aAAa,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;oBAElD,YAAY,CAAC,UAAU,GAAG,aAAa,CAAC,GAAG,CAAC;oBAC5C,YAAY,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;oBACvC,YAAY,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5E,YAAY,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAClF,YAAY,CAAC,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC;oBAC5C,YAAY,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;oBACnD,YAAY,CAAC,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC;oBACjD,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;;oBACtD,IAAI,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,WAAW,EAAE,YAAY,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC1K,IAAI,YAAY,CAAC,SAAS,IAAI,CAAC,EAAE;wBAC7B,eAAe,GAAG,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC;qBACzD;yBAAM;wBACH,eAAe,GAAG,CAAC,CAAC;qBACvB;oBAED,oBAAoB,GAAG,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,WAAW,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,CAAC,SAAS,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;;oBAGrK,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAACD,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;oBAC1G,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC;oBACjF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;oBAChG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;oBAC/E,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;oBACvF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;oBACjG,IAAI,YAAY,CAAC,UAAU,EAAE;wBACzB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;qBACvF;oBACD,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,gBAAgB,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;;oBAEtG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC;oBAC/E,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;oBAC5E,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;oBACxF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC,CAAC;oBACzF,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAC;oBACxE,IAAI,CAAC,qBAAqB,CAAC,YAAY,EAAE,eAAe,CAAC,kBAAkB,CAAC,CAAA;oBAC5E,IAAI,CAAC,2BAA2B,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;oBAC5D,IAAI,CAAC,wBAAwB,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;oBAC7D,IAAI,CAAC,0BAA0B,CAAC,mBAAmB,EAAE,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;;;oBAI3F,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;oBAC3F,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;oBAChG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC,CAAC;;oBAElL,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe,GAAG,cAAc,EAAE,QAAQ,EAAE,EAAE,kBAAkB,CAAC,CAAC,CAAC;oBACjH,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;oBACpG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;oBACtG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,QAAQ,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;oBACxF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;;;oBAKtF,IAAI,eAAe,CAAC,eAAe,EAAE;wBACjC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;qBACvE;yBAAM;wBACH,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;qBAC1E;oBAGD,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;;oBAGpE,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,WAAW,CAAC,KAAK,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC,CAAA;oBACpH,WAAW,CAAC,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC,SAAS,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC;;;oBAIhI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBACnF,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAA;iBACzC;qBACI;oBACD,YAAY,CAAC,cAAc,CAAC,GAAG,sBAAsB,CAAC;iBACzD;gBAED,OAAO,YAAY,CAAC;;;;;;;QAOjB,iDAA0B;;;;;sBAAC,mBAAuC;gBACrE,IAAI,mBAAmB,CAAC,wBAAwB,EAAE;;oBAC9C,IAAI,gBAAgB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,IAAI,IAAI,aAAa,GAAA,CAAC,CAAC;oBACvG,IAAI,gBAAgB,EAAE;wBAClB,OAAO,IAAI,CAAC;qBACf;iBACJ;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAMV,8CAAuB;;;;;;sBAAC,KAAK,EAAE,QAAQ;gBAC1C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAClB,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC;oBACzC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;iBACvC;qBAAM;oBACH,OAAO,CAAC,CAAC;iBACZ;;;;;;;;QASE,+CAAwB;;;;;;sBAAC,YAAyB,EAAE,SAAiB;;;;gBAMxE,IAAI,QAAQ,GAAG,CAAC,CAAC;;gBACjB,IAAI,iBAAiB,GAAG,CAAC,CAAC;;gBAC1B,IAAI,cAAc,CAAA;;gBAElB,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;;gBAG/D,IAAI,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;;oBAEtC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBACxE,iBAAiB,GAAG,QAAQ,GAAG,cAAc,CAAC;iBACjD;qBACI;;oBAED,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;oBACrG,QAAQ,GAAG,iBAAiB,CAAC;iBAChC;gBAED,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,SAAS,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;gBACnE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,gBAAgB,CAAC,CAAC;gBACvG,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC;;gBAG1J,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;;;gBAG1H,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,iBAAiB,CAAC,QAAQ,EAAE,EAAE,mBAAmB,CAAC,CAAC;gBACpF,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,QAAQ,EAAE,EAAE,UAAU,CAAC,CAAC;gBAClE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAEA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjF,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;gBACpJ,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,iBAAiB,CAAC,CAAC;gBAC7J,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,aAAa,CAAC,CAAC;;;;;;;;;QAUzP,iDAA0B;;;;;;sBAAC,YAAyB,EAAE,QAAgB;;gBACzE,IAAI,SAAS,GAAG,CAAC,CAAC;gBAClB,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;oBAC1D,IAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBAC/C,SAAS,GAAG,SAAS,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;iBACjD;gBACD,OAAO,SAAS,CAAC;;;;;;;QAGb,sCAAe;;;;;sBAAC,YAAyB,EAAE,QAAgB;;gBAC/D,IAAI,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,aAAa,GAAA,CAAC,CAAC;;gBAC5F,IAAI,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,gBAAgB,GAAA,CAAC,CAAC;;gBAClG,IAAI,mBAAmB,GAAW,CAAC,CAAC;gBACpC,IAAI,iBAAiB,IAAI,oBAAoB,EAAE;oBAC3C,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,oBAAoB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,QAAQ,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,WAAW,GAAA,CAAC,CAAC,KAAK,CAAC,CAAC;iBAChP;gBACD,OAAO,mBAAmB,CAAC;;;;;;;;QAGvB,oCAAa;;;;;;sBAAC,YAAyB,EAAE,KAAa,EAAE,SAAiB;;gBAC7E,IAAI,IAAI,CAAkB;gBAC1B,IAAI,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,SAAS,GAAA,CAAC,CAAC;gBACvE,IAAI,IAAI,EAAE;;oBAEN,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;iBACtB;qBAAM;;oBAEH,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;iBAC7E;;;;;;;;;QASG,yCAAkB;;;;;;;sBAAC,QAAgB,EAAE,YAAyB,EAAE,YAAoB;gBACxF,IAAI;;oBACA,IAAI,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC,KAAK,CAAC;oBACxF,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBACnD;gBAAC,WAAM;oBACJ,OAAO,CAAC,CAAC;iBACZ;;;;;;;;;QASG,yCAAkB;;;;;;;sBAAC,QAAgB,EAAE,YAAyB,EAAE,SAAiB;gBACrF,IAAI;oBACA,IAAI,CAAC,QAAQ,IAAI,CAAC,EAAE;wBAChB,OAAO,CAAC,CAAC;qBACZ;;oBACD,IAAI,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,SAAS,GAAA,CAAC,CAAC,KAAK,CAAC;oBAClF,OAAO,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC;iBAC7B;gBAAC,WAAM;oBACJ,OAAO,CAAC,CAAC;iBACZ;;;;;;;;QAQE,uCAAgB;;;;;;sBAAC,YAAyB,EAAE,YAAqC;gBACpF,IAAI;;oBACA,IAAI,kBAAkB,CAA0B;oBAChD,kBAAkB,GAAG,YAAY,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,GAAA,CAAC,CAAC;oBAC9E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,kBAAkB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAChD,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;qBAC7G;iBAEJ;gBAAC,WAAM;iBAEP;;;;;;;;QAUE,4CAAqB;;;;;;sBAAC,YAAyB,EAAE,YAAqC;gBACzF,IAAI;oBACA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC1C,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;qBAC1G;iBACJ;gBAAC,WAAM;iBAEP;;;;;;;QAIE,kDAA2B;;;;;sBAAC,YAAyB,EAAE,YAAyB;gBACnF,IAAI;oBACA,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC5D,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,SAAS,GAAG,YAAY,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;qBACjJ;iBACJ;gBAAC,WAAM;iBAEP;;;;;;;;;QAWE,uDAAgC;;;;;;;sBAAC,mBAAuC,EAAE,SAAiB,EAAE,SAAgB;gBAAhB,0BAAA;oBAAA,gBAAgB;;;gBAChH,IAAI,QAAQ,GAAW,EAAE,CAAC;;gBAC1B,IAAI,IAAI,GAAW,EAAE,CAAC;;gBACtB,IAAI,QAAQ,GAAW,EAAE,CAAC;;gBAC1B,IAAI,IAAI,CAAC;gBACT,IAAI,mBAAmB,IAAI,mBAAmB,CAAC,wBAAwB,IAAI,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChI,IAAI,SAAS,EAAE;wBACX,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,GAAA,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,kBAAkB,IAAI,IAAI,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;4BACxH,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;4BACzC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;4BACtC,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;yBAC3E,CAAC,CAAC;qBACN;yBACI;wBACD,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,QAAQ,GAAA,CAAC,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,kBAAkB,IAAI,IAAI,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,KAAK;4BACzH,QAAQ,GAAG,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;4BACzC,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;4BACtC,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;yBAC3E,CAAC,CAAC;qBACN;oBACD,IAAI,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAA;oBAC/D,OAAO,IAAI,CAAC;iBACf;gBACD,OAAO,IAAI,CAAC;;;;;;;;;QAWT,iDAA0B;;;;;;;sBAAC,mBAAuC,EAAE,YAAyB,EAAE,SAAiB;;gBACnH,IAAI,IAAI,GAAG,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAA;gBAChF,IAAI,IAAI,EAAE;oBACN,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;oBAC1E,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC;oBACnE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;;oBAGzE,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;;oBAClD,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAE1D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;wBACvC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC,CAAC;wBAClF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY,GAAG,EAAE,CAAC,CAAC,CAAC;wBAC5E,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,EAAE,CAAC,CAAC,CAAC;qBACnF;iBACJ;gBAED,IAAI,GAAG,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;gBACnF,IAAI,IAAI,EAAE;oBACN,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC;oBAChF,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;oBACzE,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC;iBAClF;;;;;;;;QASE,+CAAwB;;;;;;sBAAC,eAAe,EAAE,YAAyB;gBACtE,IAAI,eAAe,IAAI,eAAe,CAAC,KAAK,KAAK,SAAS,EAAE;oBACxD,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;iBACtF;;;;;;;;QAQE,+CAAwB;;;;;;sBAAC,eAA6B,EAAE,SAAiB;gBAC5E,IAAI;;oBACA,IAAI,iBAAiB,CAAmB;;oBACxC,IAAI,YAAY,GAAG,EAAE,CAAC;oBACtB,IAAI,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB;wBAC/D,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAE5E,iBAAiB,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,SAAS,IAAI,CAAC,CAAC,IAAI,GAAA,CAAC,CAAC;wBACnH,IAAI,iBAAiB,EAAE;4BACnB,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;4BAChF,YAAY,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;yBAC7F;qBACJ;oBACD,OAAO,YAAY,CAAC;iBACvB;gBAAC,WAAM;oBACJ,OAAO,IAAI,CAAC;iBACf;;;;;;;QAGE,sDAA+B;;;;;sBAAC,aAA2B,EAAE,SAAiB;gBACjF,IAAI;;oBACA,IAAI,iBAAiB,CAAmB;;oBACxC,IAAI,YAAY,GAAG,EAAE,CAAC;oBACtB,IAAI,aAAa,CAAC,YAAY,CAAC,gBAAgB,IAAI,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;wBAEvG,iBAAiB,GAAG,aAAa,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,SAAS,IAAI,CAAC,CAAC,IAAI,GAAA,CAAC,CAAC;wBAC/F,IAAI,iBAAiB,EAAE;4BACnB,aAAa,CAAC,YAAY,CAAC,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC;4BAC5D,YAAY,GAAG,EAAE,QAAQ,EAAE,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC;yBAC7F;qBACJ;oBACD,OAAO,YAAY,CAAC;iBACvB;gBAAC,WAAM;oBACJ,OAAO,IAAI,CAAC;iBACf;;;;;;;;QAOE,kDAA2B;;;;;;sBAAC,mBAAuC,EAAE,QAAgB;;gBACxF,IAAI,YAAY,GAAG,KAAK,EAAmB,CAAC;gBAE5C,IAAI,mBAAmB,CAAC,wBAAwB,EAAE;oBAC9C,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;wBAC7E,IAAI,cAAc,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;wBAEtE,IAAI,cAAc,CAAC,OAAO,EAAE;;4BACxB,IAAI,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;4BAClC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;4BACvC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;4BAC1B,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;yBAC5B;qBACJ;iBACJ;gBAED,OAAO,YAAY,CAAC;;;;;;;;QAIjB,mDAA4B;;;;;;sBAAC,WAAuB,EAAE,mBAAuC,EAAE,YAAyB;;gBAC3H,IAAI,mBAAmB,IAAI,IAAI,IAAI,mBAAmB,CAAC,wBAAwB,IAAI,IAAI,EAAE;oBACrF,mBAAmB,CAAC,wBAAwB,CAAC,OAAO,CAAC,UAAA,QAAQ;wBACzD,IAAI,QAAQ,CAAC,kBAAkB,IAAI,IAAI,EAAE;;4BAErC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;;4BAE/D,IAAI,gBAAgB,CAAkB;4BACtC,gBAAgB,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAA;4BACjF,IAAI,gBAAgB,EAAE;gCAClB,gBAAgB,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;6BACzE;iCACI;gCACD,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;6BAC5G;4BACD,KAAI,CAAC,sCAAsC,CAAC,WAAW,EAAE,QAAQ,CAAC,kBAAkB,CAAC,CAAC;yBACzF;qBACJ,CAAC,CAAC;iBACN;;;;;;;;QAME,6DAAsC;;;;;;sBAAC,WAAuB,EAAE,mBAAuC;gBAC1G,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE;oBAC/B,WAAW,CAAC,gBAAgB,GAAG,IAAI,KAAK,EAAsB,CAAC;iBAClE;gBACD,IAAI,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,oBAAoB,IAAI,mBAAmB,CAAC,oBAAoB,GAAA,CAAC,EAAE,CAE/G;qBAAM;oBAEH,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;iBAC1D;gBACD,IAAI,WAAW,CAAC,gBAAgB,EAAE;oBAC9B,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;iBAClD;;;;;;;QAQE,mDAA4B;;;;;sBAAC,WAAuB;;gBACvD,IAAI,mBAAmB,CAAe;gBACtC,mBAAmB,GAAG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,IAAI,WAAW,GAAA,CAAC,CAAC;gBACnF,IAAI,mBAAmB,EAAE;;oBACrB,IAAI,QAAQ,GAA8B,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;oBAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBACtC,IAAI,WAAW,GAAuB,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,oBAAoB,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,oBAAoB,GAAA,CAAC,CAAC;wBACzI,IAAI,CAAC,WAAW,EAAE;4BACd,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;yBAClD;qBACJ;oBACD,mBAAmB,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;iBAC5E;qBAAM;;oBACH,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;oBACvC,aAAa,CAAC,MAAM,GAAG,WAAW,CAAC;oBACnC,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;oBAEnE,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACjD;;;;;;;;;;;QAKE,0CAAmB;;;;;;;;;sBAAC,WAAuB,EAAE,eAA6B,EAC7E,YAAyB,EAAE,WAA8B,EAAE,SAAc,EAAE,YAAyB;;gBACpG,IAAI,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;;gBACnD,IAAI,MAAM,GAAG,IAAI,KAAK,EAAU,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBACvB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBACzB,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxB,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAEtB,IAAI;oBACA,IAAI,WAAW,IAAI,IAAI,EAAE;;wBACrB,IAAI,QAAQ,CAAa;;wBACzB,IAAI,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;wBAE1E,QAAQ,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;wBACrH,mBAAmB,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,QAAQ,EAAE,eAAe,EAAE,WAAW,CAAC,CAAC;wBAEpG,OAAO,mBAAmB,CAAC;qBAC9B;yBAAM;wBACH,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;qBACxD;iBAEJ;gBAAC,WAAM;oBACJ,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBAC/C,mBAAmB,CAAC,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC;oBACxF,mBAAmB,CAAC,oBAAoB,GAAG,CAAC,CAAC;oBAC7C,mBAAmB,CAAC,wBAAwB,GAAG,IAAI,CAAC;oBACpD,OAAO,mBAAmB,CAAC;iBAC9B;;;;;;;;QAIE,yCAAkB;;;;;;sBAAC,mBAAuC,EAAE,QAAgB,EAAE,YAAyB;;gBAC1G,IAAI;;oBACA,IAAI,uBAAuB,CAA8B;oBACzD,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;oBAC3B,IAAI,mBAAmB,CAAC,wBAAwB,IAAI,IAAI,EAAE;wBACtD,uBAAuB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,UAAU,IAAI,IAAI,GAAA,CAAC,CAAC;wBAEjH,IAAI,uBAAuB,IAAI,IAAI,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;4BACvE,uBAAuB,CAAC,OAAO,CAAC,UAAA,KAAK;gCACjC,KAAI,CAAC,cAAc,IAAI,CAAC,CAAC,CAAA;gCACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM;oCAAE,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gCAEpE,IAAI,KAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,CAAC,wBAAwB,CAAC,EAAE;oCAClF,KAAI,CAAC,cAAc,GAAG,KAAK,CAAC,WAAW,CAAC;iCAC3C;gCACD,KAAI,CAAC,sBAAsB,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;6BAC9D,CAAC,CAAC;yBACN;qBACJ;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;;;;;;QAGE,mCAAY;;;;sBAAC,mBAAuC;;gBACvD,IAAI;;oBACA,IAAI,uBAAuB,CAA8B;oBACzD,IAAI,mBAAmB,CAAC,wBAAwB,IAAI,IAAI,EAAE;wBACtD,uBAAuB,GAAG,mBAAmB,CAAC,wBAAwB,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,cAAc,IAAI,KAAK,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,GAAA,CAAC,CAAC;wBAEhJ,IAAI,uBAAuB,IAAI,uBAAuB,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC/D,uBAAuB,CAAC,OAAO,CAAC,UAAA,KAAK;gCACjC,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;6BAC1E,CAAC,CAAC;4BACH,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;yBAC9C;qBACJ;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;;;;;;QAGL,uCAAgB;;;;YAAhB,UAAiB,GAAe;;gBAC5B,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACjC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;wBAC/B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;qBACvB;iBACJ;aACJ;;;;;;;QAED,6CAAsB;;;;;;YAAtB,UAAuB,KAA2B,EAAE,YAAyB,EAAE,QAAgB;;gBAC3F,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC;gBAC9D,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,EAAE;oBAC3B,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;oBACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,iBAAiB,GAAG,YAAY,CAAC;iBACzC;qBACI;oBACD,IAAI,CAAC,yBAAyB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;oBACpD,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,OAAO;wBAC5B,OAAO,CAAC,QAAQ,GAAG,YAAY,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;qBACvD,CAAC,CAAC;oBACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC7B;gBACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,UAAU,CAAC;aAC3C;;;;;;QAED,gDAAyB;;;;;YAAzB,UAA0B,KAA2B,EAAE,YAAyB;gBAC5E,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7B,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAA,OAAO;wBAC5B,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC;qBACxC,CAAC,CAAC;iBACN;aACJ;;;;;;;QAED,kDAA2B;;;;;;YAA3B,UAA4B,KAAK,EAAE,YAAyB,EAAE,QAAgB;gBAC1E,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,EAAE;oBAClC,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBAC9E,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;iBACrC;qBACI;oBACD,IAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;oBAC9E,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO;wBAClC,OAAO,CAAC,QAAQ,GAAG,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC;qBACnD,CAAC,CAAC;oBACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;iBAC7B;gBACD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC;aACjD;;;;;;QAED,yDAAkC;;;;;YAAlC,UAAmC,SAAS,EAAE,YAAyB;gBACnE,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,SAAS,CAAC,OAAO,CAAC,UAAA,OAAO;wBACrB,OAAO,CAAC,UAAU,GAAG,YAAY,CAAC,EAAE,CAAC;qBACxC,CAAC,CAAC;iBACN;aACJ;;;;;;;QAGD,6CAAsB;;;;;YAAtB,UAAuB,aAAmC,EAAE,uBAAoD;;gBAC5G,IAAI,aAAa,CAAC,KAAK,IAAI,KAAK,EAAE;;oBAC9B,IAAI,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,GAAA,CAAC,CAAC;;wBACzG,KAAoB,IAAA,uBAAAC,SAAA,kBAAkB,CAAA,sDAAA,sFAAE;4BAAnC,IAAM,KAAK,+BAAA;4BACZ,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,EAAE;gCACtB,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,KAAK,IAAI,KAAK,IAAI,aAAa,CAAC,KAAK,IAAI,KAAK,CAAC,EAAE;oCAC1E,OAAO,IAAI,CAAC;iCACf;6BACJ;yBACJ;;;;;;;;;;;;;;;iBACJ;gBAED,OAAO,KAAK,CAAC;aAChB;;;;;;;;;QAIY,wCAAiB;;;;;;;;sBAAC,SAAc,EACzC,YAAyB,EAAE,YAAyB,EAAE,OAAgB,EAAE,WAAuB;;;;;;;gCAE3F,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gCAC1B,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;sCACrB,IAAI,CAAC,eAAe,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAA;oCAA/D,wBAA+D;gCACtD,CAAC,GAAG,CAAC;;;sCAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAA;;qCACvC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG;oCAA3B,wBAA2B;;gCAE3B,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;oCAClC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;iCAC7D;;gCAED,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;gCAChC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;gCAC7D,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC;gCACrC,qBAAM,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,EAAA;;gCAAjH,SAAiH,CAAC;;;gCAVzE,CAAC,EAAE,CAAA;;;;;gCAexD,OAAO,CAAC,GAAG,CAAC,IAAE,CAAC,CAAC;;;gCAEpB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;;;;;;;;;;;;;;;QAQnB,uCAAgB;;;;;;;;;sBAAC,KAAK,EAAE,SAAc,EAC/C,YAAyB,EAAE,YAAyB,EAAE,OAAgB,EAAE,WAAuB;;;;;oCAShF,qBAAM,IAAI,CAAC,0BAA0B,CAAC,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,SAAS,CAAC,EAAA;;;;;gCAAxH,YAAY,GAAG,SAAyG,CAAC;;;;;;;;;;;;;;;;;QAMhH,iDAA0B;;;;;;;;;sBAAC,KAAK,EAAE,WAAuB,EAAE,YAAyB,EAAE,YAAyB,EAAE,OAAgB,EAAE,SAAc;;;;;;gCACtJ,SAAS,GAAiB,IAAI,CAAC;gCACvB,qBAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAA;;gCAAnF,SAAS,GAAG,SAAuE,CAAC;gCACpF,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gCACzB,IAAI,SAAS,IAAI,IAAI,EAAE;;;;;oCAMnB,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;iCAC7I;gCACD,sBAAO,WAAW,EAAC;;;;;;;;;;;;;QAIV,uCAAgB;;;;;;;;sBAAC,IAAI,EAAE,OAAgB,EAAE,WAAuB,EAAE,SAAc,EAAE,eAAsB;gBAAtB,gCAAA;oBAAA,sBAAsB;;;;;;;gCAC7G,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;gCAE3C,SAAS,GAAiB,IAAI,CAAC;gCAC/B,uBAAuB,GAAG,IAAI,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;sCAGtE,CAAC,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,WAAW,CAAA;oCAAjD,wBAAiD;gCAC7C,YAAY,GAAG,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;gCAChC,qBAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,EAAA;;gCAAxD,SAAS,GAAG,SAA4C,CAAC;gCACzD,SAAS,GAAG,iBAAiB,CAAC,mBAAmB,CAAC,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;;oCAE7E,qBAAM,iBAAiB,CAAC,uBAAuB,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,EAAA;;gCAAjJ,SAAS,GAAG,SAAqI,CAAC;;;gCAEtJ,IAAI,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,CAAC,IAAI,eAAe,EAAE;oCAChE,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,eAAe,CAAC;iCAC5D;gCAED,qBAAM,uBAAuB,CAAC,kBAAkB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,EAAA;;gCAA5F,SAA4F,CAAC;;gCAE7F,sBAAO,SAAS,EAAC;;;;;;;;;;QAId,0CAAmB;;;;;sBAAC,WAAmB,EAAE,UAAkB;;gBAE9D,IAAI,UAAU,GAAW,UAAU,CAAC;gBACpC,IAAI;;oBACA,IAAI,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;;oBACrC,IAAI,UAAU,CAAC;oBACf,IAAI,WAAW,IAAI,EAAE,EAAE;wBACnB,UAAU,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;wBACxD,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,GAAG;;4BAErC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,YAAY,EAAE;gCACnC,UAAU,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;6BACnD;iCACI;gCACD,UAAU,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;6BAC/C;yBACJ,CAAC,CAAC;qBACN;;iBAEJ;gBAAC,WAAM;oBACJ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;iBACvB;;gBAGD,OAAO,UAAU,CAAC;;;;;;;;;;QAIf,iDAA0B;;;;;;;;sBAAC,WAAmB,EAAE,YAAyB,EAC5E,UAAkB,EAAE,QAAgB,EAAE,sBAA8B;gBACpE,IAAI;;oBACA,IAAI,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;;oBACrC,IAAI,aAAa,CAAe;;oBAChC,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;;oBACvD,IAAI,cAAc,GAAG,cAAc,CAAC;;oBACpC,IAAI,uBAAuB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;;oBACrF,IAAI,UAAU,CAAC;;oBACf,IAAI,cAAc,GAAW,CAAC,CAAC;oBAC/B,IAAI,WAAW,IAAI,EAAE,EAAE;wBACnB,UAAU,GAAG,YAAY,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;;wBAGxD,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;;4BAChE,IAAI,YAAY,GAAG,CAAC,CAAC;;4BACrB,IAAI,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;4BAC3C,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;4BACnC,aAAa,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;4BACzC,aAAa,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;4BACvC,IAAI,GAAG,CAAC,CAAC,CAAC,WAAW,IAAI,YAAY,EAAE;;gCACnC,YAAY,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;gCACjE,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gCAC1D,IAAI,aAAa,CAAC,KAAK,GAAG,YAAY,EAAE;oCACpC,aAAa,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;iCAC3F;qCACI;oCACD,aAAa,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;iCAC5F;6BACJ;iCACI;;gCACD,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;gCAC5B,aAAa,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;;;;;;;6BAO7D;;4BAID,aAAa,CAAC,IAAI,GAAG,cAAc,CAAC;4BACpC,cAAc,GAAG,CAAC,CAAC,cAAc,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;4BAG5D,cAAc,GAAG,CAAC,CAAC,cAAc,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;;4BAG5D,IAAI,SAAS,CAAe;4BAC5B,SAAS,GAAG,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,GAAA,CAAC,CAAC;4BAChG,IAAI,SAAS,EAAE;;gCAEX,YAAY,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW,GAAA,CAAC,CAAC;6BACrH;4BACD,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;yBACjD;;;qBAIJ;;oBAGD,IAAI,cAAc,IAAI,CAAC,EAAE;;wBAErB,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;;wBACvD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,cAAc,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;wBACpG,IAAI,UAAU,IAAI,CAAC,EAAE;4BACjB,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;yBACvD;;wBAGD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,uBAAuB,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC;qBAC5E;yBAAM;wBACH,OAAO,CAAC,CAAC;qBACZ;iBAEJ;gBAAC,WAAM;oBACJ,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBACpB,OAAO,CAAC,CAAC;iBACZ;;;;;;;;;;;;;;;;;;;QAWL,2CAAoB;;;;;;;;;YAApB,UAAqB,YAAyB,EAAE,UAAkB;gBAC9D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE;;oBAC1D,IAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;;oBAG/C,IAAI,UAAU,GAAG,CAAC,EAAE;;;wBAGhB,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE;4BACzC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC;4BACxC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;4BAC5E,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;yBAClC;;qBAEJ;;yBAEI;;;wBAGD,IAAI,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,EAAE;4BACzC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC;4BACxC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,GAAG,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;4BAC5E,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;yBAClC;;qBAEJ;;oBAGD,IAAI,UAAU,IAAI,CAAC,EAAE;wBACjB,MAAM;qBACT;iBACJ;aACJ;;;;;;QAGM,qCAAc;;;;;sBAAC,MAAc,EAAE,SAAiB;;gBACnD,IAAI,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;gBAC7C,gBAAgB,CAAC,cAAc,GAAG,SAAS,CAAC;gBAC5C,gBAAgB,CAAC,KAAK,GAAG,MAAM,CAAC;gBAChC,OAAO,gBAAgB,CAAC;;;;;;;QAKf,4CAAqB;;;;;sBAAC,WAAuB,EAAE,SAAc;;;;wBACtE,IAAI,CAAC,WAAW,CAAC,aAAa,KAAK,WAAW,CAAC,aAAa,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,MAAM,IAAI,eAAe,GAAA,CAAC,CAAC,EAAE;4BAC5H,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;4BAClE,WAAW,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;4BACjE,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;yBACvC;;;;;;;;;;;;QAKQ,uCAAgB;;;;;;;sBAAC,SAAiB,EAAE,OAAe,EAAE,SAAc,EAAE,eAA2B;;;;;;;gCAIjG,eAAe,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;gCAGzC,KAAK,GAAY,IAAI,CAAC;gCAE1B,WAAW,GAAG,OAAO,CAAC,oBAAoB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gCAErK,qBAAM,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,EAAA;;;gCAA5D,gBAAgB,GAAG,SAAyC,CAAC;;gCAG7D,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oCAC7C,IAAI,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EAAE;wCAC7E,KAAK,GAAG,KAAK,CAAC;wCACd,MAAM;qCACT;iCACJ;gCAED,IAAI,KAAK,EAAE;;oCAEP,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wCACnD,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;4CAC3D,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,UAAU;4CAC3E,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,EAAE;4CACnK,KAAK,GAAG,KAAK,CAAC;4CACd,MAAM;yCACT;qCACJ;iCACJ;gCAED,KAAK,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,CAAC;gCAC3D,sBAAO,KAAK,EAAC;;;gCAEb,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;gCACtC,OAAO,CAAC,GAAG,CAAC,IAAE,CAAC,CAAC;gCAChB,KAAK,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;gCAC9C,sBAAO,KAAK,EAAC;;;;;;;;;;;;QAOd,8CAAuB;;;;;;sBAAC,WAAuB,EAAE,aAAqB,EAAE,aAAqB;gBAChG,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;gBACtF,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC,CAAC;;;;;;;QAInF,0CAAmB;;;;;sBAAC,MAAM,EAAE,KAAK;;gBACpC,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;gBACvC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;gBAC9B,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;gBAE5B,OAAO,aAAa,CAAC;;;;;;;;;;;;QAKlB,8CAAuB;;;;;;;;;;sBAAC,WAAuB,EAAE,OAAe,EACnE,SAAc,EAAE,SAAiB,EAAE,SAAmB,EAAE,YAAsB,EAAE,SAAS;;gBAEzF,IAAI,SAAS,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,EAAE;oBAEtD,WAAW,CAAC,KAAK,GAAG,IAAI,KAAK,EAAe,CAAC;oBAC7C,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;iBAC7G;qBAAM;oBACH,IAAI,SAAS,IAAI,CAAC,EAAE;wBAEhB,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;4BACtD,KAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;gCACjE,WAAW,GAAG,IAAI,UAAU,EAAE,CAAC;gCAC/B,SAAS,CAAC,WAAW,CAAC,CAAC;6BAC1B,CAAC,CAAC;yBACN,CAAC,CAAC;qBACN;yBAAM;wBACH,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;4BACzB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;yBAC7E,CAAC,CAAC;wBACH,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;qBAC7G;iBACJ;;;;;;;;;;;;;;;;;;;QAIE,2CAAoB;;;;;;;;;;;;;;;;;sBAAC,WAAuB,EAAE,OAAe,EAChE,SAAc,EAAE,SAAiB,EAAE,SAAmB,EACtD,YAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,EACzE,WAAwB,EAAE,WAA8B,EAAE,YAA6B;;gBAA7B,6BAAA;oBAAA,oBAA6B;;gBAEvF,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,WAAW,CAAC,QAAQ,KAAK,SAAS,IAAI,aAAa,IAAI,KAAK,KAAK,YAAY,EAAE;oBAElG,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,IAAI,IAAI,OAAA,EAAE,IAAI,CAAC,UAAU,IAAI,UAAU,IAAI,IAAI,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,GAAA,CAAC,CAAC;;oBAE1I,IAAI,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC;oBACtC,aAAa,CAAC,SAAS,GAAG,CAAC,CAAC;oBAC5B,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;iBAClI;qBAAM;;oBAEH,IAAI,SAAS,IAAI,CAAC,EAAE;wBAChB,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,UAAU,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,GAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,GAAG,SAAS,CAAC;wBACzK,IAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;qBAClI;yBAAM;wBACH,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;4BACzH,KAAI,CAAC,wBAAwB,CAAC,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;yBACpJ,CAAC,CAAC;qBACN;iBAKJ;;;;;;;;;;;;;;;QAQQ,oCAAa;;;;;;;;;;;;sBAAC,WAAuB,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAc,EAChG,SAAiB,EAAE,WAAwB,EAAE,WAA8B;;;;;;gCACzE,SAAS,GAAiB,IAAI,CAAC;gCAC/B,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;gCACrC,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;gCAE/B,YAAY,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,UAAU,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,KAAK,GAAA,CAAC,CAAC;gCACtH,IAAI,YAAY,EAAE;oCACd,YAAY,CAAC,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC;iCACpD;gCAGD,WAAW,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,EAAE,GAAG,CAAC,UAAU,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE,IAAI,KAAK,IAAI,GAAG,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,GAAA,CAAC,CAAC;gCAE7I,qBAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,CAAC,UAAU,CAAC,EAAA;;gCAA1G,SAAS,GAAG,SAA8F,CAAC;gCAC3G,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;gCAC7D,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;gCAC/H,sBAAO,EAAE,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,YAAY,EAAE,EAAC;;;;;;;;;;;QAGrE,8CAAuB;;;;;;YAAvB,UAAwB,WAAuB,EAAE,UAAU,EAAE,IAAI;gBAC7D,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,UAAU,IAAI,UAAU,IAAI,GAAG,CAAC,IAAI,IAAI,IAAI,GAAA,CAAC,CAAA;aACzF;;;;;;QAGM,kCAAW;;;;;sBAAC,WAAuB,EAAE,SAAuB;gBAC/D,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,UAAU,IAAI,SAAS,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,GAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC;;;;;;QAG3J,uCAAgB;;;;sBAAC,WAAuB;gBAC3C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE;oBAC9D,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,IAAI,CAAC,GAAA,CAAC;wBACjG,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC,GAAA,EAAE,CAAC,CAAC,CAAA;iBACxG;qBAAM;oBACH,OAAO,CAAC,CAAC;iBACZ;;;;;;;QAKE,qCAAc;;;;;sBAAC,WAAuB,EAAE,WAAmB;;;gBAE9D,IAAI,WAAW,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;oBACrC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,WAAW,IAAI,WAAW,GAAA,CAAC,CAAC,OAAO,CAAC,UAAA,GAAG;wBAClF,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,KAAK,GAAA,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC,CAAC;qBAC1H,CAAC,CAAC;iBACN;;;;;;QAIE,oCAAa;;;;sBAAC,WAAuB;gBACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI;oBAChH,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;;wBACzB,IAAI,QAAQ,CAAkB;wBAC9B,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,SAAS,GAAA,CAAC,CAAC;wBAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,IAAI,EAAE;4BAC5C,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;yBACxB;qBACJ,CAAC,CAAA;;;;;;QAQH,oCAAa;;;;sBAAC,WAAuB;;;gBAExC,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;oBAClC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,UAAA,GAAG;;wBAC7B,IAAI,IAAI,CAAqB;wBAC7B,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,GAAA,CAAC,CAAC;wBAEnE,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,IAAI,EAAE;4BACpC,IAAI,CAAC,OAAO,CAAC,UAAA,GAAG;gCACZ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;6BACjH,CAAC,CAAC;yBAEN;qBAEJ,CAAC,CAAC;iBACN;;;;;;QAIE,oCAAa;;;;sBAAC,WAAuB;gBACxC,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,IAAI,WAAW,CAAC,KAAK,IAAI,IAAI;oBAChH,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;;wBACzB,IAAI,QAAQ,CAAkB;wBAC9B,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,SAAS,GAAA,CAAC,CAAC;wBAClE,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,IAAI,IAAI,EAAE;4BAC5C,QAAQ,CAAC,KAAK,GAAG,GAAG,CAAC;yBACxB;qBACJ,CAAC,CAAA;;;;;;;;;;;QAcG,8CAAuB;;;;;;;;;sBAAC,WAAuB,EAAE,SAAc,EACxE,YAAyB,EAAE,YAAyB,EAAE,OAAgB;;;;oCAEtE,qBAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC,EAAA;;gCAAzF,SAAyF,CAAC;;;;;;;;;;;;;;QAOvF,8CAAuB;;;;;;;;sBAAC,WAAuB,EAAE,YAAyB,EAAE,WAA8B,EAAE,SAAc;gBAE7H,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;gBACnD,IAAI,CAAC,iBAAiB,CAAC,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;;;;;;;;;QAGvE,wCAAiB;;;;;;;sBAAC,WAAuB,EAAE,YAAyB,EAAE,WAA8B,EAAE,SAAc;gBACvH,IAAI;;oBACA,IAAI,mBAAmB,GAAG,IAAI,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;;oBAClE,IAAI,WAAW,GAAG,IAAI,KAAK,EAAU,CAAC;;oBACtC,IAAI,QAAQ,CAAa;;oBACzB,IAAI,mBAAmB,GAAG,IAAI,kBAAkB,EAAE,CAAC;oBACnD,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC1B,QAAQ,GAAG,mBAAmB,CAAC,oBAAoB,CAAC,WAAW,EAAE,IAAI,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAC/G,mBAAmB,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,QAAQ,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;oBAEjG,IAAI,mBAAmB,IAAI,IAAI,EAAE;wBAC7B,WAAW,CAAC,SAAS,GAAG,mBAAmB,CAAC,WAAW,CAAC;wBACxD,IAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;qBACvE;iBACJ;gBAAC,WAAM;iBAEP;;;;;;;;QAQE,mDAA4B;;;;;;sBAAC,WAAuB,EAAE,mBAAuC;;gBAChG,IAAI,IAAI,GAAG,IAAI,CAAC,gCAAgC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;gBACzE,IAAI,IAAI,IAAI,IAAI,EAAE;;oBACd,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;oBACvC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,mBAAmB,CAAC,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAA;oBAC3G,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAE9C,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;oBACrE,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;oBAE9C,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC9D,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBACjD;;;;;;;;;QAMC,0DAAmC;;;;;;YAAzC,UAA0C,aAA4B,EAAE,SAAiB,EAAE,WAAmB;;;;;oCAC/F,qBAAM,aAAa,CAAC,KAAK,CAAC,8BAA8B,GAAG,SAAS,GAAG,GAAG,GAAG,WAAW,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAA5G,IAAI,GAAG,SAAqG;gCAChH,sBAAO,IAAI,EAAC;;;;aACf;;;;;;;QAEY,gDAAyB;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU;;;;;;;gCAInF,qBAAM,aAAa,CAAC,aAAa,CAAC,+BAA+B,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAxG,IAAI,GAAG,SAAiG,CAAC;gCACzG,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;;;;QAWb,6CAAsB;;;;;;;;sBAAC,OAAqB,EAAE,QAAgB,EAAE,YAAwB,EAAE,SAAmB;;gBAChH,IAAI,WAAW,GAAe,YAAY,CAAC;;gBAC3C,IAAI,oBAAoB,CAAsB;;gBAC9C,IAAI,mBAAmB,CAAe;gBACtC,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;;gBAEhD,IAAI,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;gBAC5F,IAAI,cAAc,EAAE;oBAChB,cAAc,CAAC,QAAQ,GAAG,cAAc,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBAC7D,cAAc,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,CAAC;oBAC9G,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;iBACrG;qBAAM;oBACH,oBAAoB,GAAG,IAAI,mBAAmB,EAAE,CAAC;oBACjD,oBAAoB,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzC,oBAAoB,CAAC,UAAU,GAAG,mBAAmB,CAAC,GAAG,CAAC;oBAC1D,oBAAoB,CAAC,MAAM,GAAG,mBAAmB,CAAC,OAAO,CAAC;oBAC1D,oBAAoB,CAAC,KAAK,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACrG,oBAAoB,CAAC,EAAE,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClG,oBAAoB,CAAC,KAAK,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;oBAExG,WAAW,CAAC,mBAAmB,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;iBAC9D;gBACD,YAAY,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC;gBACnE,SAAS,CAAC,WAAW,CAAC,CAAC;;;;;;;;;;;;;QAQ3B,kDAA2B;;;;;;YAA3B,UAA4B,oBAAyC,EAAE,YAAwB;;gBAC3F,IAAI,cAAc,GAAG,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,IAAI,oBAAoB,CAAC,UAAU,GAAA,CAAC,CAAC;gBACjH,IAAI,cAAc,EAAE;oBAChB,cAAc,CAAC,QAAQ,GAAG,CAAC,CAAC;oBAC5B,cAAc,CAAC,KAAK,GAAG,CAAC,CAAC;iBAC5B;gBACD,YAAY,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC;gBACnE,OAAO,YAAY,CAAC;aACvB;;;;;;;;;;QAMD,uDAAgC;;;;;YAAhC,UAAiC,WAAuB;gBACpD,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,mBAAmB,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,oBAAoB;oBAClG,OAAO,IAAI,GAAG,oBAAoB,CAAC,KAAK,CAAC;iBAC5C,EAAE,CAAC,CAAC,CAAA;gBACL,OAAO,WAAW,CAAC;aACtB;;;;;;;;;;;;QAOD,8CAAuB;;;;;;YAAvB,UAAwB,uBAAmD,EAAE,OAAqB;;gBAC9F,IAAI,cAAc,GAAG,uBAAuB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,GAAG,GAAA,CAAC,CAAC;gBACtG,OAAO,cAAc,CAAC;aACzB;;;;;;;;;;;;QAOD,0CAAmB;;;;;;YAAnB,UAAoB,eAAe,EAAE,iBAA6B;;gBAC9D,IAAI,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,UAAU,IAAI,eAAe,CAAC,UAAU,GAAA,CAAC,CAAC;gBAC7F,IAAI,QAAQ,EAAE;oBACV,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;wBACtB,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;4BACpB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC;yBACnB;qBACJ,CAAC,CAAC;oBAEH,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG;wBAC7B,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC;wBACd,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC;qBAChB,CAAC,CAAC;iBACN;aACJ;;;;;;;;;;QAMD,gDAAyB;;;;;YAAzB,UAA0B,WAAuB;;gBAC7C,IAAI,UAAU,GAAG,CAAC,CAAC;;gBACnB,IAAI,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;;gBAChE,IAAI,qBAAqB,GAAG,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;gBAE5E,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,KAAK,GAAG,qBAAqB,GAAG,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC1H,IAAI,UAAU,IAAI,CAAC,EAAE;oBACjB,IAAI,qBAAqB,GAAG,CAAC,EAAE;wBAC3B,IAAI,CAAC,sBAAsB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;qBACxD;yBACI;wBACD,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;qBACzD;iBACJ;gBAED,OAAO,WAAW,CAAC;aACtB;;;;;;;;;;QAMD,8CAAuB;;;;;YAAvB,UAAwB,WAAuB;;gBAC3C,IAAI,eAAe,GAAG,CAAC,CAAC;gBACxB,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;;oBACzB,IAAI,YAAY,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC;oBACzE,IAAI,YAAY,EAAE;wBACd,eAAe,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;qBAC1C;iBACJ,CAAC,CAAC;gBAEH,OAAO,eAAe,CAAC;aAC1B;;;;;;;;;;QAMD,oDAA6B;;;;;YAA7B,UAA8B,WAAuB;;gBACjD,IAAI,qBAAqB,GAAG,CAAC,CAAC;gBAC9B,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,GAAG;oBACzB,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,UAAA,GAAG;wBACxB,qBAAqB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;qBACvC,CAAC,CAAC;iBACN,CAAC,CAAC;gBAEH,OAAO,qBAAqB,CAAC;aAChC;;;;;;;;;;;;QAOD,6CAAsB;;;;;;YAAtB,UAAuB,UAAkB,EAAE,WAAuB;;;gBAC9D,IAAI,MAAM,GAAG,KAAK,CAAC;;oBACnB,KAAgB,IAAA,KAAAA,SAAA,WAAW,CAAC,KAAK,CAAA,gBAAA,4BAAE;wBAA9B,IAAI,GAAG,WAAA;;4BACR,KAAgB,IAAA,KAAAA,SAAA,GAAG,CAAC,YAAY,CAAA,gBAAA,4BAAE;gCAA7B,IAAI,GAAG,WAAA;gCACR,IAAI,UAAU,GAAG,CAAC,EAAE;oCAChB,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;iCAChC;qCACI;oCACD,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;iCAChC;gCACD,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;gCACtC,MAAM,GAAG,IAAI,CAAC;gCACd,MAAM;6BACT;;;;;;;;;;;;;;;wBACD,IAAI,MAAM,EAAE;4BACR,MAAM;yBACT;qBACJ;;;;;;;;;;;;;;;aACJ;;;;;;;;;;;;QAOD,8CAAuB;;;;;;YAAvB,UAAwB,UAAkB,EAAE,WAAuB;;;gBAC/D,IAAI,iBAAiB,CAAkB;;oBACvC,KAAgB,IAAA,KAAAA,SAAA,WAAW,CAAC,KAAK,CAAA,gBAAA,4BAAE;wBAA9B,IAAI,GAAG,WAAA;wBACR,iBAAiB,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,cAAc,IAAI,YAAY,GAAA,CAAC,CAAC;wBAC1E,IAAI,iBAAiB,IAAI,CAAC,iBAAiB,CAAC,KAAK,GAAG,CAAC,EAAE;4BACnD,IAAI,UAAU,GAAG,CAAC,EAAE;gCAChB,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;6BAC1E;iCACI;gCACD,iBAAiB,CAAC,KAAK,GAAG,CAAC,CAAC,iBAAiB,CAAC,KAAK,GAAG,IAAI,EAAE,QAAQ,EAAE,CAAC;6BAC1E;4BACD,MAAM;yBACT;qBACJ;;;;;;;;;;;;;;;aACJ;;;;;;;;;QAEM,kDAA2B;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,KAAU,EAC1F,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,iCAAiC,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC5F,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC9C,CAAC,CAAC;;2BApuEf;QAuuEC;;;;;;ACpuED,QAAA;;;;;;;;;;;QAGW,4BAAY;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,SAAc,EAC/E,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,qBAAqB,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAEpF,IAAI,WAAW,CAAC;oBAChB,WAAW,GAAG,IAAI,CAAC;oBACnB,IAAI,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE;wBACjD,WAAW,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;qBACtE;oBACD,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;;QAUJ,+BAAe;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,IAAS,EAC7E,UAAoB,EAAE,WAAqB;gBAC3C,aAAa,CAAC,aAAa,CAAC,wBAAwB,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAElF,IAAI,WAAW,CAAC;oBAChB,WAAW,GAAG,IAAI,CAAC;oBACnB,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;wBACnD,WAAW,CAAC,SAAS,CAAC,MAAM,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;qBAC1E;oBACD,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;QAIJ,6BAAa;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,SAAc,EAChF,UAAoB,EAAE,WAAqB;;gBAG3C,aAAa,CAAC,aAAa,CAAC,sBAAsB,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAErF,IAAI,QAAQ,CAAC;oBACb,QAAQ,GAAG,IAAI,CAAC;oBAEhB,IAAI,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE;wBAC/C,QAAQ,CAAC,SAAS,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;qBAClE;oBAED,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,UAAA,IAAI;wBACjC,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE;4BAC/B,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;yBAClC;qBACJ,CAAC,CAAC;oBAGH,UAAU,CAAC,QAAQ,CAAC,CAAC;iBACxB,EACG,UAAA,GAAG;;oBAEC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBAClC,CAAC,CAAC;;;;;;;;;;QAMJ,qCAAqB;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,YAAiB,EAC3F,UAAoB,EAAE,WAAqB;gBAE3C,aAAa,CAAC,wBAAwB,CAAC,8BAA8B,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAE3G,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBAEvB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBAC1B,CAAC,CAAC;;;;;;;;;;QAKJ,+BAAe;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,YAAiB,EACrF,UAAoB,EAAE,WAAqB;gBAE3C,aAAa,CAAC,wBAAwB,CAAC,wBAAwB,GAAG,SAAS,EAAE,YAAY,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAErG,UAAU,CAAC,IAAI,CAAC,CAAC;iBACpB,EACG,UAAA,GAAG;oBACC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBAEvB,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBAC1B,CAAC,CAAC;;;oBA1Gf;QA6GC;;;;;;QCxGD;;QAOI,4BAAY,UAAe,EAAE,UAAkB;oCAHZ,IAAI;;YAInC,IAAI,KAAK,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,CAAA;YACzD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;SACvB;;;;;;QAGY,4CAAe;;;;;sBAAC,aAA4B,EAAE,QAAgB;;;;;;;gCAEnE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;gCACvB,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;gCAE/C,WAAW,GAAG,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;qCAC/C,CAAC,WAAW;oCAAZ,wBAAY;gCACG,qBAAM,iBAAiB,CAAC,wBAAwB,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAA;;gCAAvF,WAAW,GAAG,SAAyE,CAAC;gCACxF,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAC,QAAQ,CAAC,CAAA;;;gCAGpD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;;gCAElC,sBAAO,IAAI,CAAC,gBAAgB,EAAC;;;gCAE7B,OAAO,CAAC,GAAG,CAAC,IAAE,CAAC,CAAC;;;;;;;;;;;;;QAOjB,kDAAqB;;;;;;sBAAC,OAAW,EAAE,UAAkB;gBACxD,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;;;QAMrE,wDAA2B;;;;;;sBAAC,OAAW,EAAE,UAAkB;gBAC9D,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBACvB,cAAc,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,EAAE,OAAO,CAAC,CAAC;;;;;;;;QAMtD,iDAAoB;;;;;;sBAAC,UAAkB;;gBAC1C,IAAI,QAAQ,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC;;gBAC9D,IAAI,QAAQ,CAAK;gBACjB,IAAG,QAAQ,EAAC;oBACR,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAChC,OAAO,QAAQ,CAAC;iBACnB;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,uDAA0B;;;;sBAAC,UAAkB;;gBAChD,IAAI,QAAQ,GAAG,cAAc,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,CAAC;;gBAC/D,IAAI,QAAQ,CAAK;gBACjB,IAAG,QAAQ,EAAC;oBACR,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;oBAChC,OAAO,QAAQ,CAAC;iBACnB;gBACD,OAAO,IAAI,CAAC;;;;;;QAIT,wCAAW;;;;sBAAC,WAA8B;;gBAE7C,IAAI,WAAW,KAAK,SAAS,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,EAAE,KAAK,SAAS,IAAI,WAAW,CAAC,EAAE,IAAI,IAAI,EAAE;oBAE5G,IAAI,WAAW,CAAC,WAAW,KAAK,SAAS,IAAI,WAAW,CAAC,WAAW,IAAI,IAAI,IAAI,WAAW,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,EAAE;;4BAC1H,KAAmB,IAAA,KAAAA,SAAA,WAAW,CAAC,WAAW,CAAA,gBAAA,4BAAE;gCAAvC,IAAM,IAAI,WAAA;gCACX,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;;6BAE9B;;;;;;;;;;;;;;;qBACJ;iBACJ;;;;;;QAKE,4CAAe;;;;sBAAC,WAA8B;;gBACjD,IAAI,KAAK,GAAY,KAAK,CAAC;gBAC3B,IAAI,WAAW,KAAK,SAAS,EAAE;oBAC3B,IAAG;wBACC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;wBACrC,QAAQ,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE;4BAC9C,KAAK,SAAS;gCACV,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAA;gCAC9E,MAAM;4BACV,KAAK,WAAW;gCACZ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;gCACzG,MAAM;4BACV,KAAK,SAAS;gCACV,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;gCACnF,MAAM;4BACV,KAAK,KAAK;gCACN,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gCACrG,MAAM;4BACV;gCACI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gCAC3I,MAAM;yBACb;qBACJ;oBAAA,OAAO,EAAE,EAAC;wBACP,OAAO,CAAC,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC,CAAA;qBAChC;iBACJ;gBACD,IAAG,KAAK,EAAC;oBACL,IAAI,CAAC,gBAAgB,GAAG,WAAW,CAAC,YAAY,CAAC;oBACjD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;iBACjC;gBACD,OAAO,KAAK,CAAC;;;;;;;QAGV,oCAAO;;;;;sBAAC,MAAM,EAAE,MAAM;gBACzB,IAAI,MAAM,IAAI,MAAM,EAAE;oBAClB,OAAO,IAAI,CAAC;iBACf;gBACD,OAAO,KAAK,CAAC;;;;;;;QAIJ,kDAAqB;;;;;sBAAC,aAA4B,EAAE,QAAgB;;;;;;;gCAEzE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;gCACvB,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;gCAE/C,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,CAAC,CAAC;qCACrD,CAAC,WAAW;oCAAZ,wBAAY;gCACG,qBAAM,iBAAiB,CAAC,yBAAyB,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAA;;gCAAxF,WAAW,GAAG,SAA0E,CAAC;gCACzF,IAAI,CAAC,2BAA2B,CAAC,WAAW,EAAC,QAAQ,CAAC,CAAA;;oCAG1D,sBAAO,WAAW,EAAC;;;gCAEnB,OAAO,CAAC,GAAG,CAAC,IAAE,CAAC,CAAC;;;;;;;iCAjJ5B;QAqJC;;;;;;ACrJD,QAAA;;;4BAAA;QASC;;;;;;ACTD,QAGA;;yBAQmB,IAAI,YAAY,EAAE;;2BAXrC;QAgBC;;;;;;AChBD,QAAA;;;+BAAA;QAGC;;;;;;ACAD,QAAA;;0BAWoB,IAAI,KAAK,EAAU;;0BAdvC;QAkBC;;;;;;AChBD,QAAA;;;gCAFA;QASC;;;;;;ACPD,QAAA;;;2BAFA;QAWC;;;;;;ACXD,QAAA;;;8BAAA;QAMC;;;;;;ACJD,QAAA;;kCAUmC,KAAK;4BACX,KAAK;kCAEC,KAAK;8BACT,KAAK;;yBAhBpC;QAoBC;;;;;;ACjBD,QAAA;QAGI,4BAAY,YAAyB;YACjC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;SACrC;;;;QAEM,yCAAY;;;;gBACf,OAAO,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;;;;;QAG7C,wCAAW;;;;gBACd,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;;;;;QAG5C,oCAAO;;;;gBACV,OAAO,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC;;;;;QAGxC,mCAAM;;;;gBACT,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;;;;;;QAItC,mDAAsB;;;;sBAAC,QAAgB;gBAC3C,IAAI;;oBACA,IAAI,UAAU,GAAqB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,QAAQ,IAAI,QAAQ,GAAA,CAAC,CAAC;oBAC7G,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,IAAI,IAAI,EAAE;wBAChD,OAAO,UAAU,CAAC,KAAK,CAAC;qBAC3B;oBACD,OAAO,KAAK,CAAC;iBAChB;gBAAA,WAAK;oBACF,OAAO,KAAK,CAAC;iBAChB;;iCApCT;QAwCC;;;;;;QC7BD;QAUI,qBAAY,UAAkB,EAAE,WAAuB,EAAE,WAAgB,EAAE,SAAkB;6BANjE,GAAG;8BACV,IAAI,UAAU,EAAE;6BAIT,KAAK;YAE7B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;;;;QAEM,0CAAoB;;;;gBACvB,OAAO,IAAI,CAAC,gBAAgB,CAAC;;;;;;;;;QAIpB,qCAAe;;;;;;;sBAAC,eAA+B,EAAE,aAA4B,EAAE,QAAa,EAAE,SAAc;;;;;;gCACrH,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;gCAE1B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oCACd,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC;iCACxB;qCACI;oCACD,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;iCACvC;gCACG,MAAM,GAAkB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gCAE9B,qBAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAA;;gCAAlG,OAAO,GAAG,SAAwF;gCAEtG,sBAAO,OAAO,EAAC;;;;;;;;;;;;;;;QAUN,iDAA2B;;;;;;;;;;sBAAC,eAA+B,EAAE,aAA4B,EAAE,QAAa,EAAE,MAAqB,EAAE,YAAgC,EAAE,MAAoB;gBAAtD,6BAAA;oBAAA,mBAAgC;;gBAAE,uBAAA;oBAAA,YAAoB;;;;;;;gCAE5L,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC;gCACtB,KAAK,GAAG,CAAC,CAAC;gCAEV,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;gCAC3C,aAAa,GAAG,IAAI,YAAY,CAAC,eAAe,EAAE,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;gCAEtF,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gCAET,CAAC,GAAG,CAAC;;;sCAAE,CAAC,GAAG,KAAK,CAAA;;gCACjB,IAAI,GAAW,MAAM,CAAC,CAAC,CAAC,CAAC;qCACzB,IAAI;oCAAJ,wBAAI;gCAEJ,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;qCACnC,IAAI,CAAC,SAAS;oCAAd,wBAAc;gCACV,IAAI,GAAG,EAAE,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,EAAE,CAAC;gCAClF,qBAAM,iBAAiB,CAAC,8BAA8B,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAA;;gCAAhH,OAAO,GAAG,SAAsG,CAAC;;;gCAEjH,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;gCAC5B,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC;sCACpD,YAAY,IAAI,YAAY,CAAC,WAAW,CAAA;oCAAxC,wBAAwC;gCAC9B,qBAAM,iBAAiB,CAAC,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,EAAA;;gCAAtJ,OAAO,GAAG,SAA4I,CAAC;;oCAG7I,qBAAM,iBAAiB,CAAC,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAA;;gCAAlI,OAAO,GAAG,SAAwH,CAAC;;;gCAI3I,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gCAC7C,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;;;gCAExF,KAAK,EAAE,CAAC;gCACR,IAAI,CAAC,QAAQ,GAAG,KAAK,GAAG,GAAG,GAAG,KAAK,CAAC;gCACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;;;gCAxBtC,CAAC,EAAE,CAAA;;qCA0B9B,sBAAO,IAAI,CAAC,UAAU,EAAC;;;;;;;;;;QAIpB,uCAAiB;;;;;sBAAC,OAAqB,EAAE,WAAuB;gBACnE,IAAI,WAAW,CAAC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,MAAM,IAAI,IAAI,EAAE;oBAC1D,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;oBACnE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,OAAO,CAAC,UAAA,iBAAiB;wBAC7E,iBAAiB,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC;qBAChD,CAAC,CAAC;iBACN;;;;;;;;;;QAIE,uCAAiB;;;;;;;;sBAAC,OAAqB,EAAE,WAAuB,EAAE,aAA2B,EAAE,QAAa,EAAE,YAAgC;gBAAhC,6BAAA;oBAAA,mBAAgC;;;gBACjJ,IAAI,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;gBACrC,YAAY,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC;gBAC9C,IAAI,WAAW,CAAC,UAAU,EAAE;oBACxB,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;iBACpD;gBACD,YAAY,GAAG,aAAa,CAAC,eAAe,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;gBAEpE,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;oBAGnC,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,qBAAqB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;;oBAE5H,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;oBACpC,IAAI,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;iBAE/C;qBAAM;oBACH,aAAa,CAAC,qBAAqB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;iBAC7G;gBACD,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;;;;;;;QAOhC,uCAAiB;;;;;sBAAC,WAAuB;gBAC5C,IAAI;;oBACA,IAAI,SAAS,GAAG,WAAW,CAAC,SAAS,CAAA;oBACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBACvC,IAAI,aAAa,GAAG,IAAI,YAAY,EAAE,CAAC;wBACvC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;4BAChC,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,KAAK,EAAgB,CAAC;yBAC7D;wBACD,aAAa,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAC7C,aAAa,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBACzC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;qBACrD;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;oBACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;;;;;;;QAOE,+CAAyB;;;;;sBAAC,WAAuB;gBACpD,IAAI;;oBACA,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;oBACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBACtC,IAAI,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;wBACzC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;4BAChC,IAAI,CAAC,UAAU,CAAC,aAAa,GAAG,IAAI,KAAK,EAAiB,CAAC;yBAC9D;wBACD,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACvC,cAAc,CAAC,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBACvC,cAAc,CAAC,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBAClD,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;qBACtD;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;oBACvC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;;;;;;;QAOE,sCAAgB;;;;;sBAAC,WAAuB;gBAC3C,IAAI;;oBACA,IAAI,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAA;oBAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBACtC,IAAI,gBAAgB,GAAG,IAAI,eAAe,EAAE,CAAC;wBAE7C,gBAAgB,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;wBACvD,gBAAgB,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;wBAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;;qBAExF;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;oBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;;;;;;QAKE,+BAAS;;;;sBAAC,SAAc;gBAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC;gBAC5B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;;;;;;QAMlC,mCAAa;;;;sBAAC,IAAY;gBAC7B,IAAI;;oBACA,IAAI,WAAW,GAAe,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;oBAClJ,IAAI,OAAO,GAAkB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAExD,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;wBAC7C,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;qBAC9C;yBAAM;wBACH,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;qBAC9C;oBAED,OAAO,WAAW,CAAC;iBACtB;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;oBACxD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,IAAI,CAAC;iBACf;;;;;;;QAOE,oCAAc;;;;;sBAAC,OAAsB;;gBACxC,IAAI,QAAQ,GAAe,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;;gBACpD,IAAI,WAAW,GAAe,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;gBAElJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACtC,QAAQ,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU;wBAC1B,KAAK,UAAU;4BACX,WAAW,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;4BACtD,MAAM;wBACV,KAAK,QAAQ;4BACT,WAAW,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;4BACpD,MAAM;wBACV,KAAK,KAAK;4BACN,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;4BAChD,MAAM;wBACV,KAAK,UAAU;;4BACX,IAAI,GAAG,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACvF,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BAChC,MAAM;wBACV,KAAK,OAAO;;4BACR,IAAI,KAAK,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;4BACzF,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC9B,MAAM;wBACV,KAAK,aAAa;;4BACd,IAAI,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;;4BAC1C,IAAI,IAAI,GAAW,GAAG,CAAC;;4BACvB,IAAI,IAAI,CAAS;4BAEjB,IAAI,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;gCAC9B,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gCAC3B,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;6BAC9B;iCAAM;gCACH,IAAI,GAAG,KAAK,CAAC;6BAChB;;4BAED,IAAI,OAAO,GAAG,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;4BAC/E,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;4BACnC,MAAM;wBACV;4BACI,MAAM;qBACb;iBACJ;gBACD,OAAO,WAAW,CAAC;;;;;;;QAOhB,oCAAc;;;;;sBAAC,OAAsB;;gBACxC,IAAI,WAAW,GAAe,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;;gBAGlJ,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrB,WAAW,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;iBAChC;gBACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrB,WAAW,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBACtC;gBAED,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrB,WAAW,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBACpC;gBACD,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrB,WAAW,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;iBACvC;gBACD,OAAO,WAAW,CAAC;;0BArS3B;QAySC;;;;;;QC/RD;;;;;;;;;;;;;QAWiB,kEAAkC;;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EAAE,WAAmB,EAChH,KAAK,EAAE,IAAI,EAAE,eAA2B;;;;;;gCAEpC,SAAS,GAAG,IAAI,YAAY,CAAA;gCAChC,SAAS,CAAC,MAAM,GAAG,YAAY,CAAC;gCAChC,SAAS,CAAC,KAAK,GAAG,WAAW,CAAC;;;;gCAGtB,cAAc,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gCACvC,qBAAM,cAAc,CAAC,mCAAmC,CAAC,aAAa,EAAE,SAAS,EAAE,WAAW,CAAC,EAAA;;gCAArH,mBAAmB,GAAG,SAA+F,CAAC;;gCAGtH,mBAAmB,CAAC,SAAS,GAAG,mBAAmB,CAAC,SAAS,CAAC;gCAC9D,mBAAmB,CAAC,YAAY,GAAG,mBAAmB,CAAC,YAAY,CAAC;gCAE7D,qBAAM,IAAI,CAAC,iCAAiC,CAAC,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAA;;gCAA3I,IAAI,GAAG,SAAoI,CAAC;;;;gCAIrI,qBAAM,IAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,eAAe,CAAC,EAAA;;gCAAjH,IAAI,GAAG,SAA0G,CAAC;;oCAEtH,sBAAO,IAAI,EAAC;;;;;;;;;;;;;;;QAWH,4DAA4B;;;;;;;;;;sBAAC,aAA4B,EAAE,SAAiB,EACrF,KAAU,EAAE,IAAS,EAAE,SAAuB,EAAE,eAA2B;;;;;;gCAG3E,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gCAChD,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gCACxD,QAAQ,GAAG,aAAa,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gCAChG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;;gCAGvC,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC;gCAC9B,QAAQ,CAAC,YAAY,GAAG,UAAU,CAAC;gCAElB,qBAAM,aAAa,CAAC,2BAA2B,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAA;;gCAAtG,UAAU,GAAG,SAAyF;gCAC1G,sBAAO,UAAU,EAAC;;;;;;;;;;;;;;;;QAYT,iEAAiC;;;;;;;;;;;sBAAC,aAA4B,EAAE,UAAsB,EAAE,SAAiB,EAClH,KAAU,EAAE,IAAS,EAAE,SAAuB,EAAE,eAA2B;;;;;;;gCAG3E,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;gCAChD,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;gCAExD,QAAQ,GAAG,aAAa,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;gCACtG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gCAEtB,qBAAM,aAAa,CAAC,2BAA2B,CAAC,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,EAAA;;gCAAtG,UAAU,GAAG,SAAyF;gCAC1G,sBAAO,UAAU,EAAC;;;;;;;;;QAGtB,8CAAc;;;;YAAd,UAAe,eAA2B;;gBACtC,IAAI,YAAY,GAAG,IAAI,WAAW,EAAE,CAAC;gBACrC,YAAY,CAAC,SAAS,GAAG,CAAC,CAAC;gBAC3B,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC;gBACnC,eAAe,CAAC,OAAO,CAAC,UAAA,CAAC;oBACrB,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAA;iBACnC,CAAC,CAAA;gBACF,OAAO,YAAY,CAAC;aACvB;oCArGL;QAuGC;;;;;;ACrGD,QAAA;;;;;;;;;;;;;QAIW,uCAAe;;;;;;;;;;sBAAC,aAA4B,EAAC,SAAiB,EAAE,UAAiB,EAAE,UAAiB,EACvG,KAAU,EAAE,SAAmB,EAAE,YAAsB;gBACvD,aAAa,CAAC,wBAAwB,CAAC,qBAAqB,GAAG,SAAS,GAAG,GAAG,GAAG,UAAU,GAAG,GAAG,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBAGjI,SAAS,CAAC,IAAI,CAAC,CAAC;iBACnB,EACG,UAAA,GAAG;;oBAEC,YAAY,CAAC,GAAG,CAAC,CAAC;iBACrB,CAAG,CAAC;;4BAhBjB;QAmBC;;;;;;ACnBD,QAAA;;;kCAAA;QAIC;;;;;;ACJD,QAAA;;;+BAAA;QAWC;;;;;;ACXD,QAAA;;;8BAAA;QAMC;;;;;;ACHD,QAAA;;uCAIiC,IAAI,KAAK,EAAuB;0BAGtC,SAAS;;4BAVpC;QAWC;;;;;;ACTD,QAAA;;;;;;;;;;;;QAUW,4DAAmC;;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EAChG,SAAmB,EAAE,YAAsB;;gBAG3C,aAAa,CAAC,aAAa,CAAC,yCAAyC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;;oBACpG,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;;oBAC1C,IAAI,YAAY,CAAY;oBAC5B,IAAG,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAC;wBAC/B,YAAY,GAAG,IAAI,KAAK,EAAO,CAAC;wBAChC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAC1C;yBAAI;wBACH,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;qBACtC;oBAED,SAAS,CAAC,YAAY,CAAC,CAAC;iBACzB,EACC,UAAA,GAAG;oBACD,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;iBACjC,CAAC,CAAC;;;;;;;;;;QAGA,wCAAe;;;;;;;;sBAAC,aAA4B,EAAE,QAAgB,EAAE,IAAS,EAC9E,SAAmB,EAAE,YAAsB;;gBAG3C,aAAa,CAAC,aAAa,CAAC,qBAAqB,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAChF,SAAS,CAAC,IAAI,CAAC,CAAC;iBACjB,EACC,UAAA,GAAG;oBACD,YAAY,CAAC,GAAG,CAAC,CAAC;iBACnB,CAAC,CAAC;;6BA1Cb;QA4CC;;;;;;AC5CD;QAeI;4BAHsC,IAAIF,eAAY,EAAE;YAIpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;gBACtB,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,SAAS,GAAG,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;SACJ;;;;QAIM,mDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,4BAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;;QAI1B,oCAAW;;;;;sBAAC,EAAU,EAAE,QAAa;;gBACxC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;gBAElB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;gBAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAC3B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oBAC9C,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC5B,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC,EAAE,UAAA,KAAK;oBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;wBACvB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACxB,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;qBACtC;yBAAM;wBACH,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;4BAC/B,MAAM,CAAC,KAAK,CAAC,CAAC;yBACjB,CAAC,CAAC;qBACN;iBACJ,CAAC,CAAC;;;;;QAaA,qCAAY;;;;gBACf,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;;;;;QAGrB,0CAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGjE,mCAAU;;;;gBACb,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,iDAAwB;;;;gBAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;;;;;;QAGnD,gCAAO;;;;sBAAC,UAAmB;;gBAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAA,QAAQ;oBACjC,UAAU,CAAC;;wBACP,IAAI,MAAM,GAAG,KAAI,CAAC,0BAA0B,EAAE,CAAC;wBAC/C,KAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC9E,UAAU,CAAC,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,CAAC;qBAC7B,EAAE,IAAI,CAAC,CAAC;iBACZ,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;oBAClB,UAAU,CAAC,EAAC,MAAM,EAAC,OAAO,EAAE,MAAM,EAAC,GAAG,EAAC,CAAC,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;QAEA,sCAAa;;;;;gBAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;oBACtD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG;wBAC7E,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC9D,CAAC,CAAC;iBACN,CAAC,CAAC,IAAI,CAAC,UAAA,UAAU;oBACd,OAAO,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC7C,CAAC,CAAC;;;;;;QAGA,+BAAM;;;;sBAAC,KAAa;;gBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAChC,OAAO,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACvC,CAAC,CAAC;;;oBA5GVH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;6BARD;;;;;;;ACAA;QAgBI,sBAAmB,iBAAkC;YAAlC,sBAAiB,GAAjB,iBAAiB,CAAiB;4BAHf,IAAIG,eAAY,EAAE;kCAqIjC;aAEtB;YAnIG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;gBACtB,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;SACJ;;;;QAGM,iDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,0BAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;;QAI1B,kCAAW;;;;;sBAAC,EAAU,EAAE,QAAa;;gBACxC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;gBAElB,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAC3B,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC5B,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;iBACtC,EAAE,UAAA,KAAK;oBACJ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,EAAE;wBACvB,OAAO,KAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;qBACvD;yBAAM;wBACH,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;4BAC/B,MAAM,CAAC,KAAK,CAAC,CAAC;yBACjB,CAAC,CAAC;qBACN;iBACJ,CAAC,CAAC;;;;;;QAGA,8BAAO;;;;sBAAC,UAAmB;;gBAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,UAAA,QAAQ;oBACjC,UAAU,CAAC;;wBACP,IAAI,MAAM,GAAG,KAAI,CAAC,0BAA0B,EAAE,CAAC;wBAC/C,KAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC9E,UAAU,CAAC,EAAC,MAAM,EAAC,IAAI,EAAC,CAAC,CAAC;qBAC7B,EAAE,IAAI,CAAC,CAAC;iBACZ,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;oBAClB,UAAU,CAAC,EAAC,MAAM,EAAC,OAAO,EAAE,MAAM,EAAC,GAAG,EAAC,CAAC,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBACpB,CAAC,CAAC;;;;;QAGA,oCAAa;;;;gBAChB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;;;;;QAGnB,oCAAa;;;;gBAChB,IAAI;;oBACA,IAAI,MAAM,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;oBAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;iBACjF;gBAAC,WAAK;iBAEN;;;;;QAIE,wCAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGjE,iCAAU;;;;gBACb,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,oCAAa;;;;;gBAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;oBACtD,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAA,CAAC,CAAC,GAAG,CAAC,UAAU,GAAG;wBAC7E,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC9D,CAAC,CAAC;iBACN,CAAC,CAAC,IAAI,CAAC,UAAA,UAAU;oBACd,OAAO,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC7C,CAAC,CAAC;;;;;;;;;QAQA,oCAAa;;;;;;;sBAAC,OAAc;;;gBAG/B,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC9B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;oBACtD,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACtB,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;oBAC3B,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAA,OAAO;wBACxB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;wBACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAA;wBAC7D,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,CAAA;wBACvE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC9F,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,CAAA;qBACxH,CAAC,CAAC;oBACH,OAAO,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC,IAAI,OAAO,GAAA,CAAC;yBAC3J,GAAG,CAAE,UAAA,GAAG;;wBAEL,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC9D,CAAC,CAAC;iBACN,CAAC,CAAC,IAAI,CAAC,UAAA,UAAU;oBAEd,OAAO,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC7C,CAAC,CAAC;;;;;;QAIA,mCAAY;;;;sBAAC,YAAiB;gBACjC,IAAI;;oBACA,IAAI,MAAM,CAAa;oBACvB,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;oBAE5E,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,CAAC,CAAA;iBACzF;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACnB;;;;;;QAQE,6BAAM;;;;sBAAC,KAAa;;gBACvB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAChC,OAAO,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACvC,CAAC,CAAC;;;oBAnJVH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;wBALQW,qBAAgB;;;;2BAJzB;;;;;;;;QCUI,0BAAoB,eAA+B;YAA/B,oBAAe,GAAf,eAAe,CAAgB;SAElD;;;;;;;;;QAQM,wCAAa;;;;;;;;sBAAC,QAAQ,EAAE,SAAiB,EAAE,sBAAgC,EAAE,yBAAmC;;gBACnH,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAEf,sBAAsB,CAAC,KAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;iBAC1E,EAAE,UAAA,KAAK;oBACJ,yBAAyB,CAAC,KAAK,CAAC,CAAC;oBACjC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACtB,CAAC,CAAC;;;;;;;;QAQA,2CAAgB;;;;;;sBAAC,SAAiB,EAAE,UAAsB;gBAC7D,IAAI;oBACA,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,IAAI,SAAS,IAAI,EAAE,EAAE;wBACjB,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAA,CAAC;4BAC5B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACf,IAAI,CAAC,CAAC,QAAQ,EAAE;gCACZ,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM;oCAClB,CAAC,CAAC,QAAQ,GAAG,IAAI,KAAK,CAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;gCAC5C,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,IAAI,SAAS,GAAA,CAAC,IAAI,IAAI,CAAA;6BAChE;iCAAM;gCACH,OAAO,KAAK,CAAC;6BAChB;yBACJ,CAAC,CAAC;wBACH,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;qBAC3B,AACA;iBACJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;oBACtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;oBAChB,OAAO,UAAU,CAAC;iBACrB;gBAED,OAAO,UAAU,CAAC;;;;;;QAGf,wCAAa;;;;sBAAC,GAAU;gBAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;;;;;;;;;;QASlC,kDAAuB;;;;;;;;sBAAC,QAAQ,EAAE,KAAK,EAAE,eAAyB,EAAE,kBAA4B;;gBACnG,IAAI,KAAK,CAAA;gBACT,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;oBACvC,IAAI;wBACA,KAAK,GAAG,CAAC,CAAC,gBAAgB,CAAC;wBAC3B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,GAAA,CAAC,CAAC;wBAClI,eAAe,CAAC,KAAK,CAAC,CAAC;qBAC1B;oBAAC,WAAK;wBACH,KAAK,GAAG,IAAI,KAAK,EAAO,CAAC;wBACzB,eAAe,CAAC,KAAK,CAAC,CAAC;qBAC1B;iBAEJ,EAAE,UAAA,KAAK;oBACJ,kBAAkB,CAAC,KAAK,CAAC,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACtB,CAAC,CAAC;;;;;;;;;;QASA,yCAAc;;;;;;;;sBAAC,QAAgB,EAAE,cAAsB,EAAE,iBAAmC,EAAE,SAAmB;;gBAEpH,IAAI,YAAY,CAAC;;gBACjB,IAAI,mBAAmB,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC;gBAClE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBACrD,YAAY,GAAG,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;oBAC1G,SAAS,CAAC,YAAY,CAAC,CAAC;iBAE3B,EAAE,UAAA,KAAK;oBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;iBACtB,CAAC,CAAC;;;;;;;;QAiCM,oDAAyB;;;;;;sBAAC,QAAgB,EAAE,KAAK;;;;;;;gCAIlD,GAAG,GAAG,WAAW,CAAC;gCACX,qBAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,EAAA;;gCAA9C,QAAQ,GAAG,SAAmC,CAAC;gCAC/C,IAAI,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,IAAI,SAAS,EAAE;oCACnD,QAAQ,GAAG,IAAI,KAAK,CAAM,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;iCAC5D;qCAAM;oCACH,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC;iCAC5C;gCAEG,WAAW,GAAG,EAAE,WAAW,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,IAAI,KAAK,GAAA,CAAC,EAAE,EAAE,CAAC;gCAC1F,sBAAO,WAAW,EAAC;;;gCAEnB,sBAAO,IAAI,EAAC;;;;;;;oBApJvBX,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;wBAPQ,cAAc;;;;+BADvB;;;;;;;;ICQA,IAAMI,QAAM,GAAG,OAAO,CAAC;;;QAQnB,2BAAoB,eAA+B,EAAU,cAA6B,EAC9E;YADQ,oBAAe,GAAf,eAAe,CAAgB;YAAU,mBAAc,GAAd,cAAc,CAAe;YAC9E,kBAAa,GAAb,aAAa;kCAsGD;aAEvB;SAtGA;;;;;;;;QAQM,0CAAc;;;;;;;sBAAC,EAAE,EAAE,wBAAkC,EAAE,2BAAqC;;;gBAE/F,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;;oBAErC,wBAAwB,CAAC,OAAO,CAAC,CAAC;iBACrC,EAAE,UAAA,KAAK;;;oBAEJ,KAAI,CAAC,qBAAqB,CAAC,EAAE,EAAE,wBAAwB,EAAE,2BAA2B,CAAC,CAAC;iBACzF,CAAC,CAAC;;;;;;;;QAIA,iDAAqB;;;;;;sBAAC,EAAE,EAAE,wBAAkC,EAAE,2BAAqC;;;gBAGtG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;oBACnC,wBAAwB,CAAC,OAAO,CAAC,CAAC;iBACrC,EAAE,UAAA,KAAK;oBACJ,2BAA2B,CAAC,KAAK,CAAC,CAAC;iBACtC,CAAC,CAAC;;;;;;;;;QASA,sCAAU;;;;;;;sBAAC,QAAgB,EAAE,YAAwB,EAAE,wBAAkC;;gBAE5F,IAAI,YAAY,CAAC,IAAI,EAAE;oBACnB,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;iBAChE;qBAAM;oBACH,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,EAAE;wBACzH,YAAY,CAAC,IAAI,GAAG,EAAE,CAAC;wBACvB,KAAI,CAAC,eAAe,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;qBAChE,CAAC,CAAC;iBACN;;;;;;;;QAGE,2CAAe;;;;;;sBAAC,YAAwB,EAAE,wBAAkC,EAAE,OAAW;;gBAAX,wBAAA;oBAAA,WAAW;;gBAC5F,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;oBAC/E,KAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;;;;;;;;;;;;;oBAOzH,KAAI,CAAC,aAAa,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;;iBAG9D,EAAE,UAAA,KAAK;oBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBACnB,IAAI,SAAS,GAAWA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;oBACpE,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC,CAAC,CAAC;oBAClK,IAAI,OAAO,IAAI,CAAC,EAAE;wBACd,KAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;wBACnC,KAAI,CAAC,eAAe,CAAC,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;qBACnE;yBAAM;wBACH,wBAAwB,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAA;qBACpF;iBACJ,CAAC,CAAC;;;;;;;;;QAOA,yCAAa;;;;;;;sBAAC,YAAwB,EAAE,wBAAkC,EAAE,OAAmB;;gBAAnB,wBAAA;oBAAA,WAAmB;;;;;gBAIlG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;oBAC7E,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACf,wBAAwB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBAC/C,EAAE,UAAA,KAAK;oBACJ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;oBACnB,IAAI,SAAS,GAAWA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;oBACpE,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;oBAChK,IAAI,OAAO,IAAI,CAAC,EAAE;wBACd,KAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;wBACnC,KAAI,CAAC,aAAa,CAAC,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;qBACjE;yBAAM;wBACH,wBAAwB,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAA;qBACpF;iBACJ,CAAC,CAAC;;;;;QAUA,+CAAmB;;;;gBACtB,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;;;;;QAIhC,yCAAa;;;;gBAChB,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;;;;;;QAIpC,6CAAiB;;;;sBAAC,EAAE;gBACvB,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;;QAM/B,yCAAa;;;;;sBAAC,EAAE;;gBACnB,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;;oBAChC,IAAI,OAAO,GAAe,IAAI,CAAC;oBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAC/C,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC;wBACnC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;wBAC/B,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;qBACzC;oBACD,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;oBACxB,KAAI,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;iBACrC,CAAC,CAAC;;;;;;QAGA,yCAAa;;;;sBAAC,WAAqB;gBACtC,OAAO,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;;;;;QAG5C,yCAAa;;;;sBAAC,WAAqB;gBACtC,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;;;;;;QAG9C,sCAAU;;;;sBAAC,IAAY;;gBAS1B,IAAI,MAAM,CAAC;;gBACX,IAAI,MAAM,CAAC;gBACX,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC9B,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBACrB,IAAI,GAAG,MAAM,GAAG,EAAE,GAAG,MAAM,CAAC;gBAC5B,OAAO,IAAI,CAAC;;;;;;;;;;QAST,sCAAU;;;;;;;;sBAAC,EAAE,EAAE,YAAY,EAAE,wBAAkC,EAAE,OAAW;;gBAAX,wBAAA;oBAAA,WAAW;;gBAE/E,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;;;oBAEhE,KAAI,CAAC,aAAa,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;iBAC9D,EAAE,UAAA,KAAK;;oBACJ,IAAI,SAAS,GAAWA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;oBACpE,YAAY,CAAC,OAAO,CAAC,UAAU,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;oBAC7J,IAAI,OAAO,IAAI,CAAC,EAAE;wBACd,KAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;wBACnC,KAAI,CAAC,UAAU,CAAC,EAAE,EAAE,YAAY,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC;qBAClE;yBAAM;wBACH,wBAAwB,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAA;qBACpF;iBACJ,CAAC,CAAC;;;;;;;;QASM,2CAAe;;;;;;sBAAC,EAAE,EAAE,YAAY;;;;oCACzC,qBAAM,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,EAAA;;gCAAnE,SAAmE,CAAC;gCACpE,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;;;;;;;;;QAGpC,oDAAwB;;;;gBAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,wBAAwB,EAAE,CAAC;;;;;;;;;QAG3D,iDAAqB;;;;;;;YAArB,UAAsB,QAAQ,EAAE,OAAO,EAAE,SAAc,EAAE,WAAqB;;gBAC1E,IAAI,WAAW,GAAG,IAAI,KAAK,EAAc,CAAC;;gBAC1C,IAAI,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAE3D,IAAI,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,EAAE;oBACpC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAE1B,aAAa,CAAC,uBAAuB,CAAC,QAAQ,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;wBAC/F,IAAI,CAAC,EAAE;4BACH,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;yBAC3B;6BAAM;4BACH,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;yBAC5B;qBACJ,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;wBAClB,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC3B,CAAC,CAAC;iBACN;aACJ;;;;;;;;QAMM,2DAA+B;;;;;;;sBAAC,QAAQ,EAAE,SAAc,EAAE,WAAqB;;;gBAElF,IAAI,WAAW,GAAG,IAAI,KAAK,EAAc,CAAC;;gBAC1C,IAAI,aAAa,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC3D,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,UAAA,MAAM;;oBAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;;4BACzC,IAAI,SAAS,GAAe,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;4BAC/C,IAAI,KAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,EAAE;gCACtC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;6BACxC;yBACJ;qBACJ;;oBAED,aAAa,CAAC,uBAAuB,CAAC,QAAQ,EAAE,KAAI,CAAC,cAAc,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;;;wBAG/F,IAAI,CAAC,EAAE;;;4BAEH,KAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;4BACrC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;yBAC3B;6BAAM;;;;4BAIH,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;yBAC5B;qBACJ,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;wBAClB,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;qBAC3B,CAAC,CAAC;iBACN,CAAC,CAAC,KAAK,CAAC,UAAU,GAAG;oBAClB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjB,WAAW,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;iBAC3B,CAAC,CAAC;;;;;;;QAOA,gDAAoB;;;;;sBAAC,SAAqB;;gBAC7C,IAAI,QAAQ,GAAY,IAAI,CAAC;gBAC7B,IAAI,SAAS,IAAI,SAAS,CAAC,YAAY,IAAI,WAAW,IAAI,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC;oBACnH,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACjD,QAAQ,GAAG,KAAK,CAAC;iBACpB;gBACD,OAAO,QAAQ,CAAC;;;;;;QAIb,uDAA2B;;;;sBAAC,WAAuB;gBACtD,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;;oBAClC,IAAI,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,UAAA,GAAG,IAAI,OAAA,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,IAAI,CAAC,GAAA,CAAC;wBACjH,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAA,GAAG,IAAI,OAAA,GAAG,CAAC,cAAc,IAAI,UAAU,GAAA,CAAC,CAAC,KAAK,CAAC,GAAA,EAAE,CAAC,CAAC,CAAC;oBACtG,IAAI,SAAS,IAAI,CAAC,EAAE;wBAChB,OAAO,CAAC,CAAC;qBACZ;yBAAM;wBACH,OAAO,SAAS,CAAC;qBACpB;iBACJ;qBAAM;oBACH,OAAO,CAAC,CAAC;iBACZ;;;;;;QAQQ,6CAAiB;;;;;;;;;;;gCAElB,WAAW,GAAG,IAAI,KAAK,EAAc,CAAC;gCAC7B,qBAAM,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,EAAA;;gCAAhD,MAAM,GAAG,SAAuC;gCACpD,KAAS,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oCACzC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,QAAQ,EAAE;wCAC/B,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;qCACxC;iCACJ;gCACD,sBAAO,WAAW,EAAC;;;gCAEnB,sBAAO,IAAI,EAAC;;;;;;;;;;QAQb,oDAAwB;;;;;gBAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;;;;;;;QAG7C,wCAAY;;;;;sBAAC,SAAiB,EAAE,GAAW;;gBAC9C,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAA;gBACnE,OAAO,IAAI,CAAC;;;;;;;QAGT,wCAAY;;;;;sBAAC,SAAiB,EAAE,GAAW;gBAC9C,OAAO,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAA;;;;;;;;;;QAOzD,oDAAwB;;;;;;;;sBAAC,OAAe,EAAE,SAAiB,EAAE,KAAa,EAAE,WAAqB;;gBACpG,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;oBACtC,IAAI,CAAC,EAAE;;wBACH,IAAI,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;wBAC/C,iBAAiB,CAAC,oBAAoB,CAAC,KAAI,CAAC,cAAc,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;qBAC1H;iBACJ,CAAC,CAAA;;;;;;;;;QASO,2CAAe;;;;;;;sBAAC,SAAiB,EAAE,GAAW,EAAE,UAAkB;;;;;;gCACvE,KAAK,GAAW,GAAG,CAAC;;;;gCAER,qBAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAA;;gCAAnE,KAAK,GAAG,SAA2D;gCACvE,IAAI,KAAK,EAAE;oCACH,WAAW,GAAQ,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,IAAI,UAAU,GAAA,CAAC,CAAC;oCACzE,IAAI,WAAW,CAAC,KAAK,EAAE;wCACnB,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;qCAC1C;iCACJ;;;;;oCAEL,sBAAO,KAAK,EAAC;;;;;;;;;;;;;QAQV,oCAAQ;;;;;;;;sBAAC,KAAa,EAAE,UAAkB,EAAE,SAAiB,EAAE,GAAW;;gBAC7E,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,IAAI;;oBAC3D,IAAI,KAAK,GAAe,IAAI,CAAC,MAAM,CAAC;;oBACpC,IAAI,WAAW,GAAQ,KAAK,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,IAAI,UAAU,GAAA,CAAC,CAAC;oBAClE,IAAI,WAAW,EAAE;;wBACb,IAAI,QAAQ,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;;wBAC/C,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;wBACnC,IAAI,QAAQ,GAAG,QAAQ,EAAE;4BACrB,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;yBAC7B;qBACJ;yBAAM;wBACH,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;qBAC1D;oBACD,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;oBACvC,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE;wBAC3C,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;qBACnD;iBACJ,EAAE,UAAA,KAAK;;oBACJ,IAAI,KAAK,GAAG,IAAI,KAAK,EAAO,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAA;oBACvD,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;oBACvC,IAAI,UAAU,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE;wBAC3C,YAAY,CAAC,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;qBACnD;iBACJ,CAAC,CAAC;;;;;;;;;;QAOC,sCAAU;;;;;;;;sBAAC,KAAiB,EAAE,SAAiB,EAAE,GAAW,EAAE,OAAW;;gBAAX,wBAAA;oBAAA,WAAW;;;gBAC7E,IAAI,SAAS,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;gBACnC,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC;oBAC3E,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;iBACrB,EAAE,UAAA,KAAK;;oBACJ,IAAI,SAAS,GAAWA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;oBACpE,YAAY,CAAC,OAAO,CAAC,gBAAgB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;oBACtI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;oBACnB,IAAI,OAAO,IAAI,CAAC,EAAE;wBACd,KAAI,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;qBAC5C;iBACJ,CAAC,CAAC;;;;;;QAGA,yCAAa;;;;sBAAC,OAAe;gBAChC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;;;;;;;;;;QAO/B,0CAAc;;;;;;;;sBAAC,QAAgB,EAAE,SAAiB,EAAE,SAAiB,EAAE,GAAW;;;;;;;gCAI5E,qBAAM,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,EAAA;;gCAAvE,SAAS,GAAG,SAA2D,CAAC;gCACpE,WAAW,GAAQ,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,SAAS,IAAI,SAAS,GAAA,CAAC,CAAC;gCAC5E,IAAI,WAAW,EAAE;oCACb,IAAI,GAAG,WAAW,CAAC,KAAK,CAAC;oCACzB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oCAC7B,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;iCACpD;qCAAM;;;oCAIH,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;iCAC7D;;;;;;gCAID,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;;oCAE9D,sBAAO,IAAI,EAAC;;;;;;;;;;QAIhB,+CAAmB;;;;;YAAnB,UAAoB,IAAI,EAAE,SAAS;gBAC/B,IAAI,SAAS,CAAC,WAAW,EAAE,IAAI,aAAa,EAAE;;oBAC1C,IAAI,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;oBAC1D,IAAI,UAAU,IAAI,IAAI,EAAE;;wBACpB,IAAI,SAAS,GAAWA,QAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAA;wBACpE,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC7B,YAAY,CAAC,OAAO,CAAC,gBAAgB,GAAG,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC;qBAC3H;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;;;;;QAEa,oCAAQ;;;;;;;sBAAC,QAAgB,EAAE,SAAiB,EAAE,SAAiB,EAAE,GAAW;;;;;;gCAClF,iBAAiB,GAAG,IAAI,gBAAgB,EAAE,CAAC;gCAEtC,qBAAM,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,CAAC,EAAA;;gCAA5G,MAAM,GAAG,SAAmG,CAAC;gCAC7G,sBAAO,MAAM,EAAC;;;;;;;;;;;QASX,kCAAM;;;;;;sBAAC,IAAI,EAAE,GAAG;gBACnB,OAAO,SAAS,GAAG,IAAI,GAAG,GAAG,CAAC;;;oBA1drCJ,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;wBAXQ,cAAc;wBAGd,aAAa;wBAEb,YAAY;;;;gCANrB;;;;;;;;QCOE,wBAAoB,cAA6B;YAA7B,mBAAc,GAAd,cAAc,CAAe;SAChD;;;;;;;QAMY,wDAA+B;;;;;;sBAAC,SAAiB,EAAE,SAAc;;;;;;;gCAE/D,qBAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,oDAAoD,GAAG,SAAS,EAAE,SAAS,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAvI,IAAI,GAAG,SAAgI;gCAC3I,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;;;QASH,mEAA0C;;;;;;;sBAAC,SAAiB,EAAE,SAAc,EAAE,OAAe;;;;;;;gCAE3F,qBAAM,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,oDAAoD,GAAG,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAvJ,IAAI,GAAG,SAAgJ;gCAC3J,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;;QASH,yDAAgC;;;;;;sBAAC,SAAiB,EAAE,IAAS;;;;;;;;gCAG3D,qBAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,qDAAqD,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAnI,IAAI,GAAG,SAA4H;gCACnI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gCAC3C,sBAAO,IAAI,EAAC;;;gCAGZ,sBAAO,IAAI,EAAC;;;;;;;;;;;;;;QAIhB,6DAAoC;;;;;;;;YAApC,UAAqCO,gBAA4B,EAAE,SAAiB,EAAE,IAAS,EAAE,UAAoB,EAAE,WAAqB;gBAE1IA,gBAAa,CAAC,wBAAwB,CAAC,yDAAyD,GAAG,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBACvI,UAAU,EAAE,CAAC;iBACd,EACC,UAAA,KAAK;oBACH,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC7B,CAAC,CAAC;aACN;;oBA7DFP,aAAU,SAAC;wBACV,UAAU,EAAE,MAAM;qBACnB;;;;;wBAJQ,aAAa;;;;6BADtB;;;;;;;ACAA,QAAA;;;2BAAA;QASC;;;;;;ACTD,QAAA;;;+BAAA;QAIC;;;;;;;QCMG,qBAAmBO,gBAA4B;YAA5B,kBAAa,GAAbA,gBAAa,CAAe;SAE9C;;;;;;;QASY,4CAAsB;;;;;;sBAAC,SAAiB,EAAE,IAAS;;;;;oCACjD,qBAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,qCAAqC,GAAG,SAAS,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAA;;gCAAlH,IAAI,GAAG,SAA2G;gCACtH,sBAAO,IAAI,EAAC;;;;;;;;;;;;;QAGhB,uDAAiC;;;;;;;;YAAjC,UAAkCA,gBAA4B,EAAE,QAAgB,EAAE,IAAS,EACvF,UAAoB,EAAE,WAAqB;gBAC3CA,gBAAa,CAAC,aAAa,CAAC,uCAAuC,GAAG,QAAQ,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAClG,UAAU,EAAE,CAAC;iBACd,EACC,UAAA,KAAK;oBACH,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC9C,CAAC,CAAC;aACN;;;;;;;;;QAED,2CAAqB;;;;;;;;YAArB,UAAsBA,gBAA4B,EAAE,QAAgB,EAAE,IAAS,EAC/E,UAAoB,EAAE,WAAqB;gBACzCA,gBAAa,CAAC,aAAa,CAAC,oCAAoC,GAAG,QAAQ,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,UAAA,IAAI;oBAC5I,UAAU,CAAC,IAAI,CAAC,CAAC;iBAClB,EACC,UAAA,KAAK;oBACH,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;iBAC9C,CACF,CAAA;aACJ;;oBAzCJP,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;wBALQ,aAAa;;;;0BADtB;;;;;;;ACAA,QAAA;;;4BAAA;QAKC;;;;;;;QCUG;4BAJsC,IAAIG,eAAY,EAAE;oCAC7B,IAAI;+BACT,KAAK;YAGvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;YAClD,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACnC;SACJ;;;;QAED,2CAAgB;;;YAAhB;;gBACI,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;gBACvD,IAAI,WAAW,CAAC;;gBAChB,IAAI,IAAI,GAAY,IAAI,CAAC;;gBACzB,IAAI,MAAM,CAAC;gBAEX,IAAI,WAAW,EAAE;oBACb,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;wBACpF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;wBAEzD,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,IAAI,SAAS,EAAE;4BACnE,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;yBAC/B;qBACJ;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;QAEM,mDAAwB;;;;gBAE3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClD,IAAI,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9E,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAGrC,IAAI,CAAC,eAAe,EAAE,CAAA;gBACtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAA;;;;;QAIlH,0CAAe;;;YAAf;gBACI,IAAI,IAAI,CAAC,WAAW,EAAE;;oBAClB,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpC,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,GAAG,SAAS,GAAG,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;qBACzF;yBACI;wBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;qBACvE;iBACJ;qBACI;oBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;iBACvE;aACJ;;;;QAED,oCAAS;;;YAAT;gBACI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAChB,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACnC;qBACI;oBACD,IAAI,CAAC,eAAe,EAAE,CAAA;iBACzB;aACJ;;;;QAED,uCAAY;;;YAAZ;;gBACI,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;gBACvD,IAAI,WAAW,CAAC;gBAEhB,IAAI,WAAW,EAAE;oBACb,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,WAAW,CAAC,WAAW,EAAE;wBACzB,OAAO,WAAW,CAAC,WAAW,CAAC;qBAClC;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;QAEM,oCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;QAInB,qDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;QAIT,iDAAsB;;;;;gBACzB,IAAI,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChF,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,IAAI,EAAE;;oBACxC,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACnC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE;;wBAC5D,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,SAAS,GAAA,CAAC,CAAC;wBAClF,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,EAAE;4BACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;yBAC3B;qBACJ;iBACJ;;;;;;QAGQ,kCAAO;;;;sBAAC,QAAQ;;;;;oCAEb,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAA;;gCAAzC,SAAS,GAAG,SAA6B,CAAA;gCACzC,sBAAO,SAAS,EAAA;;;;;;;;;QAKb,+BAAI;;;;sBAAC,MAAc;;gBACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;gBAChD,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI,CAAC,gBAAgB;oBAC3B,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBAEpB,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAA;iBACtH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;QAGA,8BAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;QAG1B,gCAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,wCAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;;;;;QAGnD,kCAAO;;;;gBACV,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;;;;;QAGzB,4CAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;;QAGlB,oCAAS;;;;sBAAC,EAAE;;gBACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;oBAC7B,OAAO,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;iBACvC,CAAC,CAAC;;;;;QAGA,wCAAa;;;;;gBAChB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,OAAO;oBACtD,OAAO,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,UAAA,GAAG;wBACvB,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;qBAC9D,CAAC,CAAC;iBACN,CAAC,CAAC,IAAI,CAAC,UAAA,UAAU;oBACd,OAAO,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;iBAC7C,CAAC,CAAC;;;oBAvLVH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;+BALD;;;;;;;;QCcI;4BAJsC,IAAIG,eAAY,EAAE;oCAE7B,IAAI;YAG3B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,wBAAwB,EAAE,CAAA;aAClC;SACJ;;;;QAED,+CAAgB;;;YAAhB;;gBACI,IAAI,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;;gBACvD,IAAI,WAAW,CAAC;;gBAChB,IAAI,IAAI,GAAY,IAAI,CAAC;;gBACzB,IAAI,MAAM,CAAC;gBAEX,IAAI,WAAW,EAAE;oBACb,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBACtC,IAAI,WAAW,CAAC,MAAM,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,EAAE;wBACpF,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;wBAEzD,IAAI,MAAM,CAAC,aAAa,IAAI,IAAI,IAAI,MAAM,CAAC,aAAa,IAAI,SAAS,EAAE;4BACnE,IAAI,GAAG,MAAM,CAAC,aAAa,CAAC;yBAC/B;qBACJ;iBACJ;gBACD,OAAO,IAAI,CAAC;aACf;;;;QAEM,uDAAwB;;;;gBAE3B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBACnF,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;gBACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBAErC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAA;;;;;QAIlH,wCAAS;;;YAAT;gBACI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;oBAChB,IAAI,CAAC,wBAAwB,EAAE,CAAC;iBACnC;qBACI;oBACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;iBAC1E;aACJ;;;;QAEM,wCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;QAInB,yDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,mCAAI;;;;sBAAC,MAAc;;gBACtB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;;gBAChD,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI,CAAC,gBAAgB;oBAC3B,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBACpB,OAAO,CAAC,GAAG,CAAC,6GAA6G,CAAC,CAAA;iBAC7H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,2GAA2G,CAAC,CAAA;iBAC3H,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;QAGA,kCAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;QAG1B,oCAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,4CAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;;;;;QAGnD,gDAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;QAKZ,sCAAO;;;;;;;;oCAEJ,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAA;;gCAAzC,SAAS,GAAG,SAA6B,CAAA;gCACzC,sBAAO,SAAS,EAAA;;;;;;oBAnHvBH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;mCALD;;;;;;;;QCaI;4BAHsC,IAAIG,eAAY,EAAE;8BAChB,IAAIA,eAAY,EAAE;YAGtD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,SAAS,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;;gBACnF,IAAI,SAAS,CAAS;;gBAGtB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,mGAAmG,CAAC,CAAA;aACnH;SACJ;;;;;QAEM,2CAAS;;;;sBAAC,SAAS;;gBACtB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,GAAG,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;;;;;QAI9D,4DAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,sCAAI;;;;sBAAC,MAAc;;;gBACtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;iBAC1H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;;iBAEnB,CAAC,CAAC;;;;;;QAGA,4CAAU;;;;sBAAC,cAAuB;;gBAErC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBACpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;iBAC1H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;oBACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;;iBAEnB,CAAC,CAAC;;;;;;QAIM,2CAAS;;;;sBAAC,MAAc;;;;;;;gCAC7B,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gCAEpE,qBAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE,EAClD,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;wCAEpB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wCACpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;wCACvH,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;qCACnC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;wCACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;wCACpB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;;qCAEnB,CAAC,EAAA;;gCAVF,SAUE,CAAC;gCAEH,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAA;;gCAA7B,SAA6B,CAAC;;;;;;;;;;QAsB3B,qCAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;QAG1B,wCAAM;;;;sBAAC,EAAU;;gBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,UAAA,GAAG;oBAC1B,OAAO,KAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;iBACpC,CAAC,CAAC;;;;;QAGA,uCAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,+CAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;;;;;QAGnD,mDAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;QAGlB,gDAAc;;;;;gBACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;qBACtE,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAChB,IAAI,MAAM,CAAC,OAAO,EAAE;wBAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;wBACpB,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAChC;;iBAEJ,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;QAGvC,mDAAiB;;;;gBACpB,OAAO,IAAI,CAAC,UAAU,CAAC;;;oBAvJ9BH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;sCALD;;;;;;;ACAA;QAaI;4BAHsC,IAAIG,eAAY,EAAE;0BACpB,IAAIA,eAAY,EAAE;YAGlD,IAAG,CAAC,IAAI,CAAC,cAAc,EAAE;gBACrB,SAAS,GAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,cAAc,GAAG,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;;gBACnF,IAAI,SAAS,CAAQ;gBAErB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,cAAc,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACvE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,mGAAmG,CAAC,CAAA;aACnH;SACJ;;;;QAEM,2CAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;QAInB,4DAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAG,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAC;oBACtD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,sCAAI;;;;sBAAC,MAAc;;;gBACtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBAEpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;iBAC1H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;QAGA,4CAAU;;;;;gBACb,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;qBACtE,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;;oBAEZ,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;;iBAGhC,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;;;;;;QAGvC,qCAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;QAG1B,uCAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,YAAY,EAAE,IAAI,EAAC,CAAC,CAAC;;;;;QAGhD,+CAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;;;;;QAGjD,mDAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;QAGlB,2CAAS;;;;gBACZ,OAAO,IAAI,CAAC,MAAM,CAAC;;;oBAtF1BH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACnB;;;;;sCALH;;;;;;;ACAA;QAeI;4BAFsC,IAAIG,eAAY,EAAE;YAGpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;;gBACtB,IAAI,SAAS,CAAS;gBACtB,SAAS,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3G,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,iBAAiB,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;gBACjF,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;aAC9B;SACJ;;;;QAGM,wDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;QAGT,uCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;;QAGnB,iCAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;;QAI1B,4CAAc;;;;sBAAC,KAAa;gBAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;;;;;QAI7B,+CAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;;QAGlB,kCAAI;;;;sBAAC,MAAc;;;gBAEtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE,IAAI;iBACd,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBAEpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;iBAC1H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;;QAIA,+CAAiB;;;;;sBAAC,UAAkB,EAAE,WAAmB;gBAC5D,OAAO,UAAU,GAAG,GAAG,GAAG,WAAW,CAAC;;;oBAzE7CH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;kCAPD;;;;;;;ACGA;;6BAQwB;gBAChB,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE;gBACvC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA,EAAE;gBACvC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE;gBACzC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA,EAAE;gBACzC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBAC1C,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACzC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAA,EAAE;gBACxC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACxC,IAAI,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA,EAAE;gBACvC,GAAG,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,IAAI,CAAA,EAAE;gBACpC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAA,EAAE;aAEjD;;;;;;;;QAQM,4CAAe;;;;;;sBAAC,SAAuB,EAAE,QAAsB;gBAClE,IAAI;oBACA,IAAI,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,GAAA,CAAC,EAAE;wBAC9D,OAAO,IAAI,CAAC;qBACf;yBAAM;wBACH,OAAO,KAAK,CAAC;qBAChB;iBACJ;gBAAC,WAAK;oBACH,OAAO,KAAK,CAAC;iBAChB;;;;;;;;;QAWE,+CAAkB;;;;;;;sBAAC,SAAuB,EAAE,QAAsB,EAAE,YAAyB;gBAChG,IAAI;;oBACA,IAAI,KAAK,GAAW,IAAI,CAAC;;oBACzB,IAAI,aAAa,GAAoB,SAAS,CAAC,YAAY,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,OAAO,IAAI,QAAQ,CAAC,IAAI,GAAA,CAAC,CAAC;oBAClG,IAAI,aAAa,EAAE;wBACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;4BACpD,IAAI,eAAe,GAAmB,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;;4BAEpE,IAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,EAAG,IAAI,CAAC,aAAa,CAAC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EAAC;gCACxJ,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;6BAC/D;iCAAI;gCACD,KAAK,GAAG,KAAK,CAAC;6BACjB;yBACJ;qBACJ;iBACJ;gBAAC,WAAK;iBAEN;gBACD,OAAO,KAAK,CAAC;;;;;;;;QAOT,6CAAgB;;;;;;sBAAC,OAAc,EAAE,YAAwB;gBAC7D,IAAG;oBACC,IAAG,OAAO,IAAI,EAAE,EAAE;;wBACd,IAAI,OAAO,GAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBACtC,IAAG,OAAO,CAAC,MAAM,EAAC;4BACd,QAAO,OAAO,CAAC,MAAM;gCACjB,KAAK,UAAU;oCACX,YAAY,CAAC,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;oCACvC,MAAM;6BACb;yBACJ;qBACJ;iBACJ;gBAAA,OAAM,EAAE,EAAC;iBAET;;;;;;;;QAYG,0CAAa;;;;;;sBAAC,SAAiB,EAAE,QAAsB;;gBAC3D,IAAI,MAAM,GAAW,EAAE,CAAC;gBACxB,IAAI;;oBACA,IAAI,KAAK,GAAW,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,QAAQ,KAAK,CAAC,WAAW,EAAE;wBACvB,KAAK,KAAK;4BACN,MAAM,GAAG,QAAQ,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,QAAQ,IAAI,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAA,CAAC,CAAC,KAAK,CAAC;4BAC5F,MAAM;wBACV,KAAK,OAAO;4BACR,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;4BACjC,MAAM;wBACV;4BACI,IAAG,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gCACtC,MAAM,GAAG,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;6BAC9C;4BACD,MAAM;qBACb;iBACJ;gBAAC,WAAK;iBAEN;gBACD,OAAO,MAAM,CAAC;;;oBAtHrBA,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;iCAPD;;;;;;;ACAA;IAEA,IAAMI,QAAM,GAAG,OAAO,CAAC;AAEvB,QAAA;;;;;;;;QACW,iDAAkB;;;;;sBAAC,IAAI,EAAE,QAAkB;gBAC9C,IAAI;;oBACA,IAAI,IAAI,CAAa;;oBAErB,IAAI,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;;oBACnD,IAAI,MAAM,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;oBACnD,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBAEjB,IAAI,MAAM,IAAI,MAAM,EAAE;;wBAClB,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;;wBAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;wBAC1C,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;wBACrB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;wBACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;4BAClC,IAAI,GAAG,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;4BAC3B,IAAI,GAAG,EAAE;;gCACL,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;gCAC9C,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gCACtB,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO,EAAE;;oCAEnD,QAAQ,CAAC,GAAG,CAAC,CAAC;iCACjB;6BACJ;yBACJ;qBACJ;iBAEJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;oBACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;;;;;;;;QAME,6CAAc;;;;;;sBAAC,IAAI,EAAE,MAAc,EAAE,QAAkB;gBAC1D,IAAI;;oBACA,IAAI,IAAI,CAAa;oBAErB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;;wBAClC,IAAI,GAAG,GAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC3B,IAAI,GAAG,EAAE;4BACL,IAAI,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE;;gCAEpF,QAAQ,CAAC,GAAG,CAAC,CAAC;6BACjB;yBACJ;qBACJ;iBAEJ;gBAAC,OAAO,EAAE,EAAE;oBACT,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;oBACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;iBAClB;;;;;;QAMG,6CAAc;;;;sBAAC,KAAa;;gBAEhC,IAAI,CAAC,GAAGA,QAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBAEzC,OAAO,CAAC,CAAC;;mCApEjB;QAsEC;;;;;;;QCzDG;4BAFsC,IAAID,eAAY,EAAE;YAGpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,IAAI,CAAC,wBAAwB,EAAE,CAAA;aAClC;SACJ;;;;QAEM,+CAAwB;;;;gBAE3B,SAAS,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAChF,IAAI,SAAS,CAAS;gBAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,WAAW,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACpE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,gGAAgG,CAAC,CAAA;;;;;QAI1G,gCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;QAInB,iDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,2BAAI;;;;sBAAC,MAAc;;;gBACtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK;iBACf,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBACpB,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAA;iBACvH,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,qGAAqG,CAAC,CAAA;iBACrH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;QAGA,0BAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;QAG1B,4BAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,oCAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC;;;;;QAGnD,wCAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;QAKZ,8BAAO;;;;;;;;oCAEJ,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAA;;gCAAzC,SAAS,GAAG,SAA6B,CAAA;gCACzC,sBAAO,SAAS,EAAA;;;;;;oBApFvBH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;2BALD;;;;;;;;QCaI;4BAFsC,IAAIG,eAAY,EAAE;YAGpD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,wBAAwB,EAAE,CAAA;aACjC;SACJ;;;;QAEM,uDAAwB;;;;gBAE3B,SAAS,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,CAAC,aAAa,GAAG,SAAS,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;;gBAClF,IAAI,SAAS,CAAS;gBAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,aAAa,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;gBACtE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,mGAAmG,CAAC,CAAA;;;;;QAI7G,wCAAS;;;;;gBACZ,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC5D,OAAO,IAAI,CAAC,SAAS,CAAC;;;;;QAInB,yDAA0B;;;;;gBAC7B,IAAI,cAAc,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;;gBAC7D,IAAI,cAAc,CAAC;gBACnB,IAAI,cAAc,KAAK,SAAS,IAAI,cAAc,IAAI,IAAI,EAAE;oBACxD,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBAC5C,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,KAAK,SAAS,IAAI,cAAc,CAAC,cAAc,CAAC,QAAQ,IAAI,IAAI,EAAE;wBACxG,OAAO,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC;qBACjD;iBACJ;gBACD,OAAO,IAAI,CAAC;;;;;;QAGT,mCAAI;;;;sBAAC,MAAc;;;gBACtB,IAAI,cAAc,GAAG,IAAI,OAAO,CAAC,MAAM,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;gBAEpE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,EAAE;oBACzC,IAAI,EAAE,KAAK;oBACX,KAAK,EAAE,KAAK;iBACf,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAA,MAAM;oBACpB,OAAO,CAAC,GAAG,CAAC,0GAA0G,CAAC,CAAA;iBAC1H,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,UAAA,MAAM;oBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,wGAAwG,CAAC,CAAA;iBACxH,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAU,GAAG;oBACxB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;;iBAEvB,CAAC,CAAC;;;;;;QAGA,kCAAG;;;;sBAAC,EAAU;gBACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;;;;;QAG1B,oCAAK;;;;gBACR,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;;;;;QAGlD,4CAAa;;;;gBAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,YAAY,EAAE,KAAK,EAAC,CAAC,CAAC;;;;;QAGjD,gDAAiB;;;;gBACpB,OAAO,IAAI,CAAC,QAAQ,CAAC;;;;;QAKZ,sCAAO;;;;;;;;oCAEL,qBAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAA;;gCAAxC,SAAS,GAAE,SAA6B,CAAA;gCACxC,sBAAO,SAAS,EAAA;;;;;;oBApFvBH,aAAU,SAAC;wBACR,UAAU,EAAE,MAAM;qBACrB;;;;;mCALD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"sf-reglanegociom3.umd.js.map","sources":["node_modules/tslib/tslib.es6.js","ng://sf-reglanegociom3/lib/ConexionSQL/posts.service.ts","ng://sf-reglanegociom3/lib/Convert/xmlToJSon.class.ts","ng://sf-reglanegociom3/lib/rnm3/Data/m3-couch-maestro.ts","ng://sf-reglanegociom3/lib/rnm3/Data/m3-data.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/filtros.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdAdicionales.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdLista.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdGeneral.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdGrp.type.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-p-impuestos.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-pdetalle-items.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-pdinamicas.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-penc-fp.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-penc-items.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-p-envios.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-f-trabajo.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-procesos.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-precepcion.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-per-x-proceso.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-ot-clasificaciones.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-fe.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-proceso.interface.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3PromoProcesada.class.ts","ng://sf-reglanegociom3/lib/rnm3/Miscelanea/MathTF.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/promociones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-configlp.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-load-l-precio.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/M3Maestro.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reg-service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-trx.interface.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-lista-precio.service.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/m3-din-procesos.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/M3PrdPackDet.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Ubicacion/M3UbiAdicionales.type.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Ubicacion/M3Ubicacion.type.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3CONDIAGRUPACION.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3CONDIPROMO.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3DETCONDIPROMO.class.ts","ng://sf-reglanegociom3/lib/rnm3/Promociones/Models/M3ENCPROMO.class.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-ubicacion.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reg-masivo.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reg-masivo-akz.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-reverso.service.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-pdinam-by-actividad.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/m3-din-by-actividad.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-saldos-x-cuenta.ts","ng://sf-reglanegociom3/lib/rnm3/Registro/m3-reg-trx.ts","ng://sf-reglanegociom3/lib/rnm3/Cupones/cupones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/Service/bd-offline.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/Service/bd-offline-log.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/service-m3-maestro-offline.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/service-m3-proceso-offline.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-notificaciones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Notificaciones/M3Nofiticaciones.model.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/m3-presentaciones.ts","ng://sf-reglanegociom3/lib/rnm3/Services/ConsultasM3/m3-consultas.service.ts","ng://sf-reglanegociom3/lib/rnm3/Maestro/Ubicacion/m3-teclas-rapidas.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-prds.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-codsprd.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-promociones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-ubicaciones.service.ts","ng://sf-reglanegociom3/lib/rnm3/Notificaciones/notificaciones-m3.service.ts","ng://sf-reglanegociom3/lib/rnm3/Services/m3-pack-by-tipo.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/Service/filtros-diario.service.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-perxtipo.ts","ng://sf-reglanegociom3/lib/rnm3/Offline/couch-dinamxprocesos.ts"],"sourcesContent":["/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)\r\n t[p[i]] = s[p[i]];\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","import { Http, RequestOptions, Headers } from '@angular/http'\r\nimport { HttpClient } from '@angular/common/http'\r\nimport 'rxjs/add/operator/map'\r\nimport { Injectable } from '@angular/core';\r\nimport { Observable } from 'rxjs';\r\nimport { Response } from '@angular/http/src/static_response'\r\nimport { timeout, map } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PostServiceM3 {\r\n idkatios: string\r\n servidor: string;\r\n servidorPersonas: string;\r\n servidorGenerales: string;\r\n servidorM3: string;\r\n servidorFEMX: string;\r\n servidorDocumentos: string;\r\n servidorContable: string;\r\n servidorPrestamo: string;\r\n WebBase: string;\r\n constructor(\r\n private http: Http,\r\n private httpClient: HttpClient\r\n ) {\r\n this.cargaInicial();\r\n }\r\n\r\n public cargaInicial() {\r\n\r\n var json: any;\r\n let sConfigJSON = sessionStorage.getItem(\"ConfigJSON\");\r\n if (sConfigJSON) {\r\n let jConfigJSON = JSON.parse(sConfigJSON);\r\n if (jConfigJSON.ServidorPersonas) {\r\n json = jConfigJSON;\r\n }\r\n }\r\n else {\r\n json = require('G:/Desarrollo/BD/WE8/config.json');\r\n }\r\n this.servidorPersonas = json.ServidorPersonas;\r\n this.servidor = json.Servidor;\r\n this.servidorGenerales = json.ServidorGenerales;\r\n this.servidorM3 = json.ServidorM3;\r\n this.servidorFEMX = json.ServidorFEMX;\r\n this.servidorDocumentos = json.ServidorDocumentos;\r\n this.servidorContable = json.ServidorContable;\r\n this.servidorPrestamo = json.ServidorPrestamo;\r\n this.WebBase = json.WebBase;\r\n }\r\n\r\n\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n async getConfigJson(idKatios: string) {\r\n try {\r\n let resp = await this.getWithBodyGenerales('Generales/getConfigJson/' + idKatios, null).toPromise();\r\n var respuesta: any = JSON.parse(resp.toString());\r\n this.respOk_getConfigJson(respuesta);\r\n }\r\n catch (err) {\r\n console.log(err);\r\n }\r\n }\r\n\r\n respOk_getConfigJson(json) {\r\n this.servidorPersonas = json.ServidorPersonas;\r\n this.servidor = json.Servidor;\r\n this.servidorGenerales = json.ServidorGenerales;\r\n this.servidorM3 = json.ServidorM3;\r\n this.servidorFEMX = json.ServidorFEMX;\r\n this.servidorDocumentos = json.ServidorDocumentos;\r\n this.servidorContable = json.ServidorContable;\r\n this.servidorPrestamo = json.ServidorPrestamo;\r\n this.WebBase = json.WebBase;\r\n }\r\n\r\n getURLServer() {\r\n return this.servidor;\r\n }\r\n\r\n getURLServerDocs() {\r\n return this.servidorDocumentos;\r\n }\r\n\r\n ///httpGet\r\n httpGet(urlGet: string, iServidor: string) {\r\n return this.http.get(iServidor + urlGet).map(res => {\r\n return res.json();\r\n });\r\n }\r\n\r\n\r\n ///httpGet\r\n httpGetWithTimeOut(urlGet: string, iServidor: string, timeoutTime: number) {\r\n return this.http.get(iServidor + urlGet).pipe(\r\n timeout(timeoutTime)\r\n ).map(res => {\r\n return res.json();\r\n });\r\n }\r\n\r\n httpGetWithBody(urlGet: string, iServidor: string, parametros: any) {\r\n const headers = new Headers();\r\n\r\n headers.append('Content-Type', 'application/json');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n params: parametros\r\n }).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n httpGetWithBodyTimeOut(urlGet: string, iServidor: string, parametros: any, timeoutTime: number) {\r\n const headers = new Headers();\r\n\r\n headers.append('Content-Type', 'application/json');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n params: parametros\r\n })\r\n .pipe(\r\n timeout(timeoutTime)\r\n )\r\n .map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n http_get_blob(urlGet: string, iServidor: string, parametros: any) {\r\n const headers = new Headers();\r\n\r\n //headers.append('Content-Type', 'application/json'); \r\n //headers.append('Response Tyoe', 'blob');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n responseType: \"blob\",\r\n params: parametros\r\n }).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n http_get_arraybuffer(urlGet: string, iServidor: string, parametros: any) {\r\n const headers = new Headers();\r\n\r\n //headers.append('Content-Type', 'application/json'); \r\n //headers.append('Response Tyoe', 'blob');\r\n\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(iServidor + urlGet,\r\n {\r\n responseType: \"arraybuffer\",\r\n params: parametros\r\n }).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n\r\n\r\n getPrestamo(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorPrestamo);\r\n }\r\n\r\n public getWithBodyM3TimeOut(urlGet: string, params: any, timeoutTime: number) {\r\n return this.httpGetWithBodyTimeOut(urlGet, this.servidorM3, params, timeoutTime);\r\n }\r\n\r\n getWithBodyPrestamo(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorPrestamo, params);\r\n }\r\n\r\n public getWithBodyM3(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorM3, params);\r\n }\r\n\r\n getWithBodyPersonas(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorPersonas, params);\r\n }\r\n\r\n getWithBodyGenerales(urlGet: string, params: any) {\r\n return this.httpGetWithBody(urlGet, this.servidorGenerales, params);\r\n }\r\n\r\n getWithBodyDocumento(urlGet: string, params: any) {\r\n const headers = new Headers();\r\n\r\n //headers.append('Content-Type', 'application/json');\r\n headers.append('responseType', 'ResponseContentType.Blob');\r\n\r\n //const options = new RequestOptions({headers: headers, body: {\"correo\": \"params\"}, params:myParams});\r\n\r\n return this.httpClient.get(this.servidorDocumentos + urlGet,\r\n {\r\n params: params\r\n }).map(res => {\r\n return res;\r\n });\r\n\r\n }\r\n\r\n get_blob_Documentos(urlGet: string, params: any) {\r\n return this.http_get_blob(urlGet, this.servidorDocumentos, params);\r\n }\r\n\r\n get_arraybuffer_Documentos(urlGet: string, params: any) {\r\n return this.http_get_arraybuffer(urlGet, this.servidorDocumentos, params);\r\n }\r\n\r\n getPosts(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidor);\r\n }\r\n\r\n getPersonas(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorPersonas);\r\n }\r\n\r\n getGenerales(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorGenerales);\r\n }\r\n\r\n getM3(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorM3);\r\n }\r\n\r\n getM3WithTimeOut(urlGet: string, timeOut: number) {\r\n return this.httpGetWithTimeOut(urlGet, this.servidorM3, timeOut);\r\n }\r\n\r\n\r\n\r\n\r\n getDocumentos(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorDocumentos);\r\n }\r\n\r\n\r\n getContable(urlGet: string) {\r\n return this.httpGet(urlGet, this.servidorContable);\r\n }\r\n ///End httpGet\r\n\r\n getPostsWithOutJson(urlGet: string) {\r\n return this.http.get(this.servidor + urlGet).map(res => {\r\n return res;\r\n });\r\n }\r\n\r\n\r\n postServiceHttp(urlGet: string, params) {\r\n return this.http.post(this.servidor + urlGet, params).map(\r\n res => {\r\n return res.statusText;\r\n }\r\n );\r\n }\r\n ///postServiceResponseHttp\r\n postServiceResponseHttp(urlGet: string, params) {\r\n return this.http.post(this.servidor + urlGet, params).map(res => {\r\n return res.json();\r\n });\r\n }\r\n\r\n postServiceResponseHttpCallService(urlGet: string, params, iServidor) {\r\n return this.http.post(iServidor + urlGet, params).map(res => {\r\n return res.json();\r\n });\r\n }\r\n postServiceResponseHttpPrestamos(urlGet: string, params) {\r\n return this.postServiceResponseHttpCallService(urlGet, params, this.servidorPrestamo);\r\n }\r\n ///End postServiceResponseHttp\r\n\r\n\r\n ///postServiceHttpOptions\r\n postServiceHttpOptionsCallService(urlGet: string, params, headers, iServidor) {\r\n let options = new RequestOptions({ headers: headers });\r\n\r\n return this.http.post(iServidor + urlGet, params, options).map(\r\n res => {\r\n return res;\r\n }\r\n );\r\n }\r\n\r\n postServiceHttpOptions(urlGet: string, params, headers) {\r\n return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidor);\r\n }\r\n\r\n postServiceHttpOptionsM3(urlGet: string, params, headers) {\r\n return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidorM3);\r\n }\r\n\r\n postServiceHttpOptionsDocs(urlGet: string, params, headers) {\r\n return this.postServiceHttpOptionsCallService(urlGet, params, headers, this.servidorDocumentos);\r\n }\r\n\r\n ///End postServiceHttpOptions\r\n\r\n ///postServiceHttpResFull\r\n postServiceHttpResFullCallService(urlGet: string, params, iServidor) {\r\n return this.http.post(iServidor + urlGet, params).map(\r\n res => {\r\n\r\n return res;\r\n }\r\n );\r\n }\r\n\r\n postServiceHttpResFull(urlGet: string, params) {\r\n return this.postServiceHttpResFullCallService(urlGet, params, this.servidor);\r\n }\r\n\r\n\r\n\r\n postServiceHttpResFullPersonas(urlGet: string, params) {\r\n return this.postServiceWebApi(urlGet, params, this.servidorPersonas);\r\n }\r\n\r\n postServiceHttpResFullM3(urlGet: string, params) {\r\n return this.postServiceWebApi(urlGet, params, this.servidorM3);\r\n }\r\n\r\n postServiceHttpResFullFEMX(urlGet: string, params) {\r\n return this.postServiceWebApi(urlGet, params, this.servidorFEMX);\r\n }\r\n\r\n postServiceHttpResFullGenerales(urlGet: string, params) {\r\n return this.postServiceHttpResFullCallService(urlGet, params, this.servidorGenerales);\r\n }\r\n\r\n postServiceHttpResFullPrestamos(urlGet: string, params) {\r\n return this.postServiceHttpResFullCallService(urlGet, params, this.servidorPrestamo);\r\n }\r\n ///End postServiceHttpResFull\r\n postServiceWebApi(urlGet: string, params, iServidor) {\r\n const headers = new Headers();\r\n headers.append('Content-Type', 'application/json');\r\n const options = new RequestOptions({ headers: headers });\r\n\r\n return this.http.post(iServidor + urlGet, params, options).map(\r\n res => {\r\n\r\n return res;\r\n }\r\n );\r\n }\r\n}\r\n","export class xmlToJsonTF{\r\n\r\n convertXmlToJson(inputXml){\r\n \r\n const parseString = require('xml2js').parseString;\r\n const xml = inputXml;\r\n let resultado;\r\n parseString(xml, (err, result) => {\r\n resultado= result;\r\n });\r\n return resultado;\r\n }\r\n\r\n replaceCharXml(inputXml){\r\n let gt = />/gi; \r\n let lt = /</gi;\r\n let quot = /"/gi;\r\n let resultado = inputXml.replace(gt,\">\");\r\n resultado = resultado.replace(lt,\"<\");\r\n resultado = resultado.replace(quot,\"'\");\r\n\r\n return resultado;\r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core'\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3CouchMaestro {\r\n public oDataM3Procesos: M3Procesos;\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n var sIdkatios: string;\r\n var sTipoHub: string;\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n sTipoHub = this.GetTipoHubFromSession();\r\n if (sIdkatios) {\r\n if (sTipoHub && sTipoHub.toUpperCase().trim() == \"WEB\") {\r\n this.database = new PouchDB(\"infomEcc_\" + sIdkatios.toLowerCase().trim(), { auto_compaction: true });\r\n this.sync(this.GetServer() + \"infomEcc_\" + sIdkatios.toLowerCase().trim());\r\n this.isInstantiated = true;\r\n console.log(\"INSTANCEECC!!¡\")\r\n }\r\n else {\r\n this.database = new PouchDB(\"infom_\" + sIdkatios.toLowerCase().trim(), { auto_compaction: true });\r\n this.sync(this.GetServer() + \"infom_\" + sIdkatios.toLowerCase().trim());\r\n this.isInstantiated = true;\r\n console.log(\"INSTANCE!!¡\")\r\n }\r\n }\r\n }\r\n }\r\n\r\n //Funcion que traera el tipo de hub\r\n public GetTipoHubFromSession() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Tipo) {\r\n return oSUbicacion.M3HUBS[0].Tipo;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public GetDataPouchBD(isKey: string) {\r\n return this.database.get(isKey);\r\n }\r\n\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public sync(remote: string) {\r\n // let remoteDatabase = new PouchDB(remote);\r\n\r\n // let options = {\r\n // retry: true\r\n // };\r\n\r\n // let options2 = {\r\n // live: true,\r\n // retry: true\r\n // };\r\n\r\n // //this.autenticacionServer(remoteDatabase);\r\n // this.database.sync(remoteDatabase, {\r\n // options2\r\n // }).on('complete', change => {\r\n // console.log(\"Completo:\" + change)\r\n // }).on('change', change => {\r\n // this.listener.emit(change);\r\n // }).on('error', error => {\r\n // this.database.sync(remoteDatabase, options2);\r\n // });\r\n\r\n\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n //armar key de documento que se quiere consultar\r\n public GetKeyDocumentoDB(isIDKatios: string, isDocumento: string) {\r\n return isIDKatios + \"?\" + isDocumento;\r\n }\r\n\r\n\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core'\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3Data {\r\n public oDataM3Procesos: M3Procesos;\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.database = new PouchDB(\"CarritoCompras\", { auto_compaction: true });\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Adicionar en BD pouch.\r\n public AddToPouchBDCarritoCompras(id: string, document: any) {\r\n document._id = id;\r\n return this.get(id).then(result => {\r\n document._rev = result._rev;\r\n return this.database.put(document);\r\n }, error => {\r\n if (error.status == \"404\") {\r\n return this.database.put(document);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n });\r\n\r\n }\r\n\r\n //Adicionar en BD pouch, Async.\r\n public async AddToPouchBDCarritoComprasAsync(id: string, document: any) {\r\n document._id = id;\r\n try {\r\n var result = await this.get(id);\r\n document._rev = result._rev;\r\n await this.database.put(document);\r\n } catch (error) {\r\n if (error.status == \"404\") {\r\n await this.database.put(document);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n }\r\n\r\n // return this.get(id).then(result => {\r\n // document._rev = result._rev;\r\n // return this.database.put(document);\r\n // }, error => {\r\n // if (error.status == \"404\") {\r\n // return this.database.put(document);\r\n // } else {\r\n // return new Promise((resolve, reject) => {\r\n // reject(error);\r\n // });\r\n // }\r\n // });\r\n }\r\n\r\n\r\n //Obtener informacion de base de datos.\r\n public GetDataPouchBD(isKey: string) {\r\n return this.database.get(isKey);\r\n }\r\n\r\n //Obtener informacion de base de datos.\r\n public Delete(isKey: string) {\r\n this.database.get(isKey).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n let options = {\r\n retry: true\r\n };\r\n\r\n let options2 = {\r\n live: true,\r\n retry: true\r\n };\r\n\r\n //this.autenticacionServer(remoteDatabase);\r\n this.database.sync(remoteDatabase, {\r\n options\r\n }).on('complete', change => {\r\n this.database.sync(remoteDatabase, options2);\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n }).on('error', error => {\r\n this.database.sync(remoteDatabase, options2);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n //armar key de carrito de compras, teniendo en cuenta el IDKatios, tdoc y ndoc.\r\n public GetKeyCarritoCompras(isIDKatios: string, isTdoc: string, isNdoc: string, isUbicacion: string, isIdHub: string) {\r\n return \"CC?\" + isIDKatios + \"?\" + isUbicacion + \"?\" + isIdHub + \"?\" + isTdoc + \"?\" + isNdoc;\r\n }\r\n\r\n //Destruir y reconstruir la base de datos pouchDB\r\n public ReserBD() {\r\n this.database.destroy().then(x => {\r\n this.database = new PouchDB('CarritoCompras', { auto_compaction: true });\r\n });\r\n }\r\n\r\n\r\n}\r\n","export class Filtros {\r\n public Atributo:string;\r\n public Valor:string;\r\n\r\n constructor(isAtributo:string, isValor:string){\r\n this.Atributo = isAtributo;\r\n this.Valor = isValor;\r\n }\r\n}\r\n","export class M3PrdAdicionales{\r\n SKP1:string;\r\n ATRIBUTO:string;\r\n VALOR:string;\r\n NIVEL1:number;\r\n NIVEL2:number;\r\n}","import { M3Presentaciones } from \"./m3-presentaciones\";\r\n\r\nexport class M3PrdLista{\r\n IDLISTA:string;\r\n SKU:string;\r\n LOTE:string;\r\n PRECIO:number;\r\n LB: number;\r\n LC: number;\r\n LD: number;\r\n SUBINDICE: string;\r\n PORIGINAL: number;\r\n public M3Presentaciones = new Array<M3Presentaciones>();\r\n}","import { M3PrdLista } from \"./M3PrdLista.type\";\r\nimport { M3PrdPackDet } from \"./M3PrdPackDet\";\r\nimport { M3CodsXPRD } from \"./M3CodsXPRD.type\";\r\nimport { M3PrdPackReglas } from \"./M3PrdPackReglas\";\r\nexport class M3PrdGeneral {\r\n SKU: string;\r\n LOTE: string;\r\n NOMBRE1: string;\r\n NOMBRELARGO: string;\r\n ACT1CTBL: string;\r\n ACT2CTBL: string;\r\n CTBLDPRD: string;\r\n CTBLDIMPPRD: string;\r\n SKP1: string;\r\n SKP2: string;\r\n SKP3: string;\r\n SKP4: string;\r\n SKP5: string;\r\n DISPONIBLE: number;\r\n DISPONIBLERef: number;\r\n M3PACK: Array<M3PrdPackDet> = null;\r\n M3PackReglas: Array<M3PrdPackReglas> = null;\r\n LoM3ListaPrecio = new Array<M3PrdLista>();\r\n LoM3PrdLista = new M3PrdLista();\r\n M3Cods = new Array<M3CodsXPRD>();\r\n Impuestos = new Array<M3PRDImpuestos>();\r\n}\r\n\r\nexport class M3PRDImpuestos {\r\n CodImp: string;\r\n Metodologia: string;\r\n Valor: number;\r\n}","import { M3PrdGeneral } from \"./M3PrdGeneral.type\";\r\nimport { M3PrdAdicionales } from \"./M3PrdAdicionales.type\";\r\nimport { M3PrdPackByTipo } from \"./m3-pack-by-tipo\";\r\nimport { M3PUnidMedida } from \"./m3p-unid-medida\";\r\nimport { M3PrdGrpAsociado } from \"./M3PrdGrpAsociado\";\r\n\r\nexport class TypeM3PrdGrp {\r\n SKP1: string;\r\n RATING: number;\r\n FICHATECNICA: string;\r\n MARCA: string;\r\n CLASIFICACION: string;\r\n NOMBRE: string;\r\n TIPO: string;\r\n Cantidad: number;\r\n CamposAdicionales: string;\r\n LoM3PrdGeneral = new Array<M3PrdGeneral>();\r\n LoM3PrdAdicionales = new Array<M3PrdAdicionales>();\r\n M3PACKBYTIPO = new Array<M3PrdPackByTipo>();\r\n M3PrdGrpAsociado:Array<M3PrdGrpAsociado> = null;\r\n\r\n listImagenes = new Array<any>();\r\n Impuestos = new Array<TypeImpuestosPRD>();\r\n M3PUnidMedida: M3PUnidMedida;\r\n\r\n encontradoLocal: boolean = true;\r\n\r\n\r\n constructor() {\r\n\r\n\r\n }\r\n\r\n\r\n}\r\n\r\nexport class TypeImpuestosPRD {\r\n CodImp: string;\r\n Metodologia: string;\r\n Valor: string\r\n}","export class M3PImpuestos{\r\n public Porcentaje:number;\r\n public Valor:number;\r\n public LimiteOpuesto:number;\r\n public CodImpuesto:string;\r\n public Base:number;\r\n}\r\n","export class M3PDetalleItems {\r\n public NombreConcepto: string;\r\n public Valor: string;\r\n}\r\n\r\nexport class M3PItemsWEB {\r\n public dCantidad: number;\r\n public dPrecioTotal: number;\r\n public BisProductoPromo: boolean = false;\r\n public BisObsequio: boolean = false;\r\n\r\n public Unidad: string = \"\";\r\n public ClavePrdSRV: string = \"\";\r\n public ClavePrdUnidad: string = \"\";\r\n public IdProceso: string = \"\";\r\n public observacion: string = \"\";\r\n\r\n public SubEstado_o: string = \"\";\r\n public Estado_o: string = \"\";\r\n public PathImagen: string = \"\";\r\n\r\n public IDEncRepetido: number = -1;\r\n public IDEncProcesado: number = -1;\r\n public IDEncPadre: number = -1;\r\n public TipoAgrupacion: string = \"\";\r\n public CodigoBarras: string = \"\";\r\n public CamposAdicionales = [];\r\n}\r\n\r\nexport class M3PDetalleCupon {\r\n public IdCupon: string;\r\n public Cantidad: number;\r\n}\r\n","export class M3PDinamicas {\r\n public Valor:string;\r\n public Nombre:string;\r\n}","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PEncFP {\r\n public Valor:number;\r\n public Descripcion:string;\r\n public Estado:string;\r\n public IdTipoPago:number; //1: Efectivo 2: Tarjeta de crédito 3: Tarjeta Debito 4: PSE\r\n public ID:number;\r\n public ValCambio:number;\r\n public ValOtraClasi:number =0;\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n\r\n\r\n //Variables SoloFront\r\n public APLCambio:string;\r\n public APLFidelizacion:string;\r\n public dejar_borrar:boolean = true;\r\n\r\n}","import { M3PDetalleItems, M3PDetalleCupon } from \"./m3-pdetalle-items\";\r\nimport { M3PImpuestos } from \"./m3-p-impuestos\";\r\nimport { PromocionCombinada } from \"../Promociones/Models/M3PromoProcesada.class\";\r\nimport { M3PEnvios } from \"./m3-p-envios\";\r\nimport { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PEncItems {\r\n public IdProducto: string;\r\n public Lote: string;\r\n public ID: number;\r\n public Orden: number;\r\n public Nombre: string;\r\n public CodigoBarras: string;\r\n public IdEnvio:number;\r\n public DISPONIBLE: number = 0;\r\n public PathImage:string;\r\n public M3DET = new Array<M3PDetalleItems>(); \r\n public M3DetCupones = new Array<M3PDetalleCupon>();\r\n public M3PImpuestos = new Array<M3PImpuestos>();\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n\r\n //Estas propiedades no son replica a base de datos, son para uso interno.\r\n public PromoCombinadas = new Array<PromocionCombinada>();\r\n\r\n public IdEncPadre:number;\r\n public TipoAgrupacion:string = \"\";\r\n\r\n //Obtener el precio unitaria\r\n public GetPriceUnit() {\r\n return this.M3DET.find(det => det.NombreConcepto == \"PUNIT\").Valor;\r\n }\r\n\r\n //Obtener el precio unitaria, con descuentos incluidos\r\n public GetPriceUnitNeto() {\r\n return this.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor;\r\n }\r\n\r\n\r\n //Obtener el precio unitaria, con descuentos incluidos\r\n public SetPriceUnitNeto(iValor) {\r\n this.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = iValor;\r\n }\r\n\r\n\r\n //Obtener el precio total.\r\n public GetPriceTotal() {\r\n return this.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n }\r\n}\r\n","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PEnvios{\r\n public IdEnvio:number;\r\n public IdFormaEnvio:number;\r\n public NombreFEnvio:string;\r\n public Direccion:string;\r\n public Pais:string;\r\n public Ciudad:string;\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n}","export class M3FTrabajo{\r\n public IdHub:number;\r\n public IdUbic:number;\r\n public IdHubPre:number;\r\n public IdUbicPre:number;\r\n}","import { M3PEncItems } from \"./m3-penc-items\";\r\nimport { M3PEncFP } from \"./m3-penc-fp\";\r\nimport { M3PDinamicas } from \"./m3-pdinamicas\";\r\nimport { M3PromCombinadaXProceso } from \"./m3-prom-comb\";\r\nimport { M3FTrabajo } from \"./m3-f-trabajo\";\r\nimport { M3PEnvios } from \"./m3-p-envios\";\r\nimport { M3PRecepcion } from \"./m3-precepcion\";\r\nimport { PromocionCombinada } from \"../Promociones/Models/M3PromoProcesada.class\";\r\nimport { M3PerXProceso } from \"./m3-per-x-proceso\";\r\nimport { M3RegistroTrx } from \"./m3-reg-trx\";\r\nimport { M3OtClasificaciones } from \"./m3-ot-clasificaciones\";\r\nimport * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\nexport class M3Procesos {\r\n public IdM3:string;\r\n public Fecha:string;\r\n public TipoTercero:number;\r\n public TDoc:string;\r\n public NDoc:string;\r\n public Ubic1:number;\r\n public Ubic2:number;\r\n public ValorNeto:number =0;\r\n public Valor:number =0;\r\n public ValOtraClasi:number =0;\r\n public SubEstadoDes:string;\r\n public EstadoDes:string;\r\n public SubEstadoAnt:string;\r\n public EstadoAnt:string;\r\n public TMIdProceso:string;\r\n public IDDiario:string;\r\n public IDDiarioCierre:string;\r\n public IDHub:number;\r\n public TipoTRX:string;\r\n public M3ENC = new Array<M3PEncItems>();\r\n public M3OtClasificaciones = new Array<M3OtClasificaciones>();\r\n public lM3PDinamicas = new Array<M3PDinamicas>();\r\n public M3PerXProceso = new Array<M3PerXProceso>();\r\n public lM3PEncFP = new Array<M3PEncFP>();\r\n public M3FTrabajo = new M3FTrabajo();\r\n public M3PEnvios = new Array<M3PEnvios>();\r\n public M3PRecepcion = new Array<M3PRecepcion>();\r\n public lM3RegistroTrx = new Array<M3RegistroTrx>();\r\n public espera: boolean;\r\n public fechaHora: Date;\r\n \r\n public FechaHoraEstado:string;\r\n public IdEstado:string;\r\n\r\n\r\n //Estas propiedades no son replica a base de datos, son para uso interno.\r\n //public lM3PromCombinada = new Array<M3PromCombinadaXProceso>();\r\n\r\n public PromosCombinadas = new Array<PromocionCombinada>();\r\n\r\n public AplPagoEnLinea:boolean = false;\r\n\r\n public AplDesdeServer:boolean = false;\r\n\r\n public ndocUActivo:string; //JAGM 20191017 Nuevos parametros,para llevar el registro del usuario activo, que creo este proceso\r\n public tdocUActivo:string;//JAGM 20191017 Nuevos parametros,para llevar el registro del usuario activo, que creo este proceso\r\n //public bAPLCombinadasAcum:boolean = false;\r\n\r\n constructor(){\r\n this.Fecha =moment(new Date()).format('YYYY-MM-DD');\r\n }\r\n\r\n}","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\nexport class M3PRecepcion{\r\n public IdRecepcion:number;\r\n public IdEnc:number;\r\n public Cantidad:number;\r\n public Fecha:Date; \r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n public Estado: string;\r\n}","export class M3PerXProceso{\r\n public TipoPersona:string;\r\n public Tdoc:string;\r\n public Ndoc:string; \r\n public Nombre:string;\r\n public DescTipoP:string;\r\n}\r\n","export class M3OtClasificaciones{\r\n public ID:number;\r\n public IdProducto:string;\r\n public Valor:number;\r\n public Nombre:string;\r\n public Cantidad:number;\r\n public Orden:number;//Variable de ordenamiento en el front\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\nexport class ServiceM3FE {\r\n\r\n public add_proceso_generarFE(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3FE/add_proceso_generarFE/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public add_proceso_generarNC(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3FE/add_proceso_generarNC/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public async addProcesoGenerarFEAsync(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any) {\r\n let json;\r\n let resp;\r\n\r\n try {\r\n resp = PostServiceM3.postServiceHttpResFullM3(\"M3FE/add_proceso_generarFE/\" + sIDKatios, jData).toPromise();\r\n json = JSON.parse(resp)\r\n return json;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n public generarCartaPorte(PostServiceM3: PostServiceM3, sIDKatios: string, idm3: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullFEMX(\"FEMX/generarCartaPorte/\" + sIDKatios + \"/\" + idm3, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public generarFEAnticipos(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullFEMX(\"FEMX/generarFEAnticipos/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public generarNCAnticipos(PostServiceM3: PostServiceM3, sIDKatios: string, \r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullFEMX(\"FEMX/generarNCAnticipos/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n async getInfoFacturaElectronica(PostServiceM3: PostServiceM3, id_katios: string) {\r\n var Info;\r\n var data = { 'idKatios': id_katios.trim() };\r\n Info = await PostServiceM3.getWithBodyM3('M3FE/getInfoFacturaElectronica', data).toPromise()\r\n return JSON.parse(Info)\r\n }\r\n\r\n async getHtmlFromFE(PostServiceM3: PostServiceM3, idKatios: string, idM3: string) {\r\n let resp;\r\n let data = { 'idM3': idM3 };\r\n resp = await PostServiceM3.getWithBodyM3('M3FE/getHtmlFromFE/' + idKatios, data).toPromise()\r\n\r\n return resp;\r\n }\r\n\r\n async IU_InfoFacturaElectronica(PostServiceM3: PostServiceM3, id_katios: string, oFactura: any, uTActivo: string, uNActivo: string) {\r\n var Info;\r\n var data = { 'idKatios': id_katios.trim(), 'oFactura': oFactura, 'uTActivo': uTActivo, 'uNActivo': uNActivo };\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3FE/IU_InfoFacturaElectronica', data).toPromise()\r\n return Info\r\n }\r\n\r\n public delInsSeriesxUbic(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3FE/delInsSeriesxUbic/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json()); \r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n funcionError(JSON.parse(JSON.parse(err[\"_body\"]).Message).RESPUESTA[\"0\"]);\r\n });\r\n }\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\n\r\nexport class M3ProcesoService {\r\n\r\n public add_procesoEA(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"ProcesosM3/add_procesoEA/\" + sIDKatios, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n\r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n M3Get_ProcesosPorCantidad(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('ProcesosM3/M3Get_ProcesosPorCantidad/' + sIDKatios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var olProcesos;\r\n olProcesos = JSON.parse(resp);\r\n\r\n if (olProcesos.RESPUESTA.TP.length === undefined) {\r\n olProcesos.RESPUESTA.TP = new Array(olProcesos.RESPUESTA.TP);\r\n }\r\n\r\n oFuncionOK(olProcesos);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n public M3Get_ActividadesYProcesos(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3Get_ActividadesYProcesos/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var olProcesos;\r\n olProcesos = JSON.parse(resp.toString());\r\n\r\n //Si las actividades no vienen como un array, convertirlo\r\n if (olProcesos.RESPUESTA.ACTIVIDADES.length === undefined) {\r\n olProcesos.RESPUESTA.ACTIVIDADES = new Array(olProcesos.RESPUESTA.ACTIVIDADES);\r\n }\r\n\r\n //Si los procesos no vienen como un array, convertirlo\r\n olProcesos.RESPUESTA.ACTIVIDADES.forEach(Actividad => {\r\n if (Actividad.PROCESOS !== undefined && Actividad.PROCESOS.length === undefined) {\r\n Actividad.PROCESOS = new Array(Actividad.PROCESOS);\r\n }\r\n });\r\n\r\n oFuncionOK(olProcesos);\r\n },\r\n err => {\r\n console.log(err);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n public M3Get_M3ProcesosByIdProceso(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any, sIdProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3Get_M3ProcesosByIdProceso/' + sIDKatios + '/' + sIdProceso, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var olProcesosM3;\r\n olProcesosM3 = JSON.parse(resp.toString());\r\n\r\n //Si las actividades no vienen como un array, convertirlo\r\n if (olProcesosM3.RESPUESTA.SUBESTADOS.length === undefined) {\r\n olProcesosM3.RESPUESTA.SUBESTADOS = new Array(olProcesosM3.RESPUESTA.SUBESTADOS);\r\n }\r\n\r\n //Si los procesos no vienen como un array, convertirlo\r\n olProcesosM3.RESPUESTA.SUBESTADOS.forEach(subs => {\r\n if (subs.M3PROCESOS !== undefined && subs.M3PROCESOS.length === undefined) {\r\n subs.M3PROCESOS = new Array(subs.M3PROCESOS);\r\n }\r\n });\r\n\r\n oFuncionOK(olProcesosM3);\r\n },\r\n err => {\r\n //console.log(JSON.parse(err._body).Message);\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n\r\n //Obtener informacion de M3procesos, desde el iddiario.\r\n public async GetM3ProcesosByIdDiario(PostServiceM3: PostServiceM3, sIDKatios: string, sIdDiario: string) {\r\n\r\n var oData;\r\n oData = { \"IdDiario\": sIdDiario };\r\n var oM3Proceso;\r\n oM3Proceso = await PostServiceM3.getWithBodyM3('ProcesosM3/GetM3ProcesosByIdDiario/' + sIDKatios, oData).toPromise();\r\n\r\n return oM3Proceso;\r\n }\r\n\r\n //Obtener informacion de M3procesos, Teniendo el IDM3. \r\n public M3Get_M3ProcesosByIdM3(PostServiceM3: PostServiceM3, sIDKatios: string, sIDM3: string, sIdProceso: string, sUbicacion: string,\r\n oFuncionOK: Function, oFuncionErr: Function, ubicExterno = false, bAPLPagosPD = false) {\r\n\r\n var oData;\r\n oData = { \"IdM3\": sIDM3, \"IdProceso\": sIdProceso };\r\n if (bAPLPagosPD) {\r\n oData.bAPLPagosPD = true;\r\n }\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/GetProcesoM3ByIdM3/' + sIDKatios, oData).subscribe(resp => {\r\n var oM3Procesos: any;\r\n oM3Procesos = resp;\r\n\r\n //Validar que la ubicacion actuales valida para el proceso\r\n //pcastro, se comentarea porque no funciona con tf, retorna para TF SIEMPRE NULL, no se maneja ubicaciones\r\n //Se coloca dif a 0, por version TF, que no utiliza funcionalidad de Ubicaciones\r\n if (oM3Procesos.M3FTrabajo.IdUbicPre.toString() != \"0\" && oM3Procesos.M3FTrabajo.IdUbicPre.toString() != sUbicacion.toString()) {\r\n if (!ubicExterno) {\r\n oM3Procesos = null;\r\n }\r\n }\r\n oFuncionOK(oM3Procesos);\r\n },\r\n err => {\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Retoma el proceso que tiene por dinamica _IDM3Retomado el idm3 envaido por parametro\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param sIDM3 \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public getM3ProcesosByIdM3Retomado(PostServiceM3: PostServiceM3, sIDKatios: string, sIDM3: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n var oData;\r\n oData = { \"idM3Retomado\": sIDM3 };\r\n\r\n PostServiceM3.getWithBodyM3('ProcesosM3/getM3ProcesosByIdM3Retomado/' + sIDKatios, oData).subscribe(resp => {\r\n\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Obtener proceso M3, teniendo en cuenta el Id M3 y Idproceso\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param sIDM3 \r\n * @param sIdProceso \r\n * @param sUbicacion \r\n */\r\n public async M3Get_M3ProcesosByIdM3Async(PostServiceM3: PostServiceM3, sIDKatios: string, sIDM3: string,\r\n sIdProceso: string, sUbicacion: string, bAPLPagosPD: boolean = false) {\r\n\r\n var oData;\r\n oData = { \"IdM3\": sIDM3, \"IdProceso\": sIdProceso };\r\n var resp;\r\n if (bAPLPagosPD) {\r\n oData.bAPLPagosPD = true;\r\n }\r\n resp = await PostServiceM3.getWithBodyM3('ProcesosM3/GetProcesoM3ByIdM3/' + sIDKatios, oData).toPromise();\r\n return resp;\r\n\r\n }\r\n\r\n /**\r\n * Obtener proceso M3, teniendo en cuenta el IdDiario\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param idDiario \r\n */\r\n public async m3_getProcesoM3ByIdDiarioAsync(PostServiceM3: PostServiceM3, sIDKatios: string, idDiario: string) {\r\n var oData;\r\n oData = { \"idDiario\": idDiario };\r\n var resp: any = await PostServiceM3.getWithBodyM3('ProcesosM3/m3_getProcesoM3ByIdDiario/' + sIDKatios, oData).toPromise();\r\n return resp;\r\n }\r\n\r\n\r\n ///Obtiene la esturcturas de las capturas dinamicas asociadas aun proceos y un idproceso\r\n public m3_get_data_capt_dinam(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n ///oData = {\"id_proceso\":\"\",\"id_sub_proceso\":\"\"};\r\n PostServiceM3.getWithBodyM3('ProcesosM3/m3_get_data_capt_dinam/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n // /**\r\n // * Retorna el RPTemplate para el armado del Reporte\r\n // * @param PostServiceM3 \r\n // * @param id_katios \r\n // * @param id_rep \r\n // */\r\n // public async get_template_reporte(PostServiceM3: PostServiceM3, id_katios: string, id_rep: string) {\r\n // var oData;\r\n // var resp;\r\n // var oJson;\r\n // oData = { \"id_rep\": id_rep };\r\n // try {\r\n // resp = await PostServiceM3.getWithBodyM3('ProcesosM3/get_template_reporte/' + id_katios, oData).toPromise();\r\n // oJson = JSON.parse(resp);\r\n // return oJson;\r\n // }\r\n // catch{\r\n // return null;\r\n // }\r\n // }\r\n\r\n /**\r\n * Obtener los procesos asociados a una persona\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param oData \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public M3GetProcesoByPersona(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3GetProcesoByPersona/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n\r\n public M3GetProcesoByIdDiarioCierre(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3GetProcesoByIdDiarioCierre/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Obtener informacion de procesos Off line\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param oData \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public M3GetProcesosOffLine(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('ProcesosM3/M3GetProcesosOffLine/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n /**\r\n * Retoena el TDetalleProceso de un proceso dado\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param oData \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public m3_detalleProcesoByProceso(PostServiceM3: PostServiceM3, id_katios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/m3_detalleProcesoByProceso/' + id_katios, oData).subscribe(resp => {\r\n oFuncionOK(JSON.parse(resp.toString()).RESPUESTA.Detalle);\r\n },\r\n err => {\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n public validarExistenciaProceso(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/validarExistenciaProceso/' + idKatios, data).subscribe(resp => {\r\n var oProducto: any = JSON.parse(resp.toString());\r\n oFuncionOK(oProducto);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n}","export class PromocionProcesada {\r\n public PrecioTotal: number; //Precio incluyendo las promociones\r\n public PrecioTotalPromocion: number;\r\n public ValorTotalMonedero: number = 0;\r\n public ListPromocionesAsociadas = new Array<PromocionesAsociadas>();\r\n}\r\n\r\nexport class PromocionesAsociadas {\r\n public IDPromocion: number;\r\n public Nombre;\r\n public Valor;\r\n public ValorPorcentaje = 0;\r\n public ListObsSKU = new Array<any>();\r\n public PromocionCombinada: PromocionCombinada = null;\r\n public ValorMonedero: number = 0;\r\n public IdCupon: string = null;\r\n public Regla: string;\r\n public Aplicada: boolean;\r\n public Tipo: string;\r\n public ReglaObseq: string;\r\n public CantidadObseq: number;\r\n public flags = { formaPago: false };\r\n public lIdActivaPromo: Array<number>;\r\n}\r\n\r\nexport class PromocionCombinada {\r\n public IdPromocionXProceso: number;\r\n public IdPromocionCombinada: number;\r\n public Tipo2: string;\r\n public Nombre: string;\r\n public Accion: any;\r\n //public IdCondicion:string; //Esto para agrupacion de la promocion de combo.\r\n}","export class MathTF {\r\n constructor() {\r\n\r\n }\r\n\r\n public round(a: any, decimals: number) {\r\n let multiploDe10 = Math.pow(10, decimals);\r\n return Math.round(+a * multiploDe10) / multiploDe10;\r\n }\r\n\r\n public roundV2(a: any, decimals: number) {\r\n return parseFloat((+(Math.round(+(a + 'e' + decimals)) + 'e' + -decimals)).toFixed(decimals));\r\n }\r\n \r\n public toFixed(number, decimals) {\r\n var x = Math.pow(10, Number(decimals) + 1);\r\n return (Number(number) + (1 / x)).toFixed(decimals)\r\n }\r\n}","import { M3ENCPROMO } from './Models/M3ENCPROMO.class';\r\nimport { M3Ubicacion } from '../Maestro/Ubicacion/M3Ubicacion.type';\r\nimport { M3CONDIAGRUPACION } from './Models/M3CONDIAGRUPACION.class';\r\nimport { M3CONDIPROMO } from './Models/M3CONDIPROMO.class';\r\nimport { TypeM3PrdGrp } from '../Maestro/M3PrdGrp.type';\r\nimport { M3DETCONDIPROMO } from './Models/M3DETCONDIPROMO.class';\r\nimport { PromocionesAsociadas, PromocionProcesada, PromocionCombinada } from './Models/M3PromoProcesada.class';\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport { M3PromCombinadaXProceso } from '../Registro/m3-prom-comb';\r\nimport { M3PEncItems } from '../Registro/m3-penc-items';\r\nimport { M3PEncFP } from '../Registro/m3-penc-fp';\r\nimport { M3PDinamicas } from '../Registro/m3-pdinamicas';\r\nimport { PostServiceM3 } from '../../ConexionSQL/posts.service';\r\nimport { _iterableDiffersFactory } from '@angular/core/src/application_module';\r\nimport { M3PDetalleItems, M3PItemsWEB } from '../Registro/m3-pdetalle-items';\r\nimport * as moment_ from 'moment';\r\nimport { M3PrdGeneral } from '../Maestro/M3PrdGeneral.type';\r\nimport { MathTF } from '../Miscelanea/MathTF.class';\r\nimport { M3PerXProceso } from '../Registro/m3-per-x-proceso';\r\nimport * as _ from \"lodash\";\r\nimport { M3RegService } from '../Services/m3-reg-service';\r\nimport { M3PrdLista } from '../Maestro/M3PrdLista.type';\r\n\r\nconst moment = moment_;\r\nexport class promocionesService {\r\n public oMathTF: MathTF = new MathTF();\r\n public goDataUser: any;\r\n public goDataAdicional: M3PItemsWEB;\r\n public goM3ENCPROMO: Array<M3ENCPROMO>;\r\n\r\n constructor(oDataUser: any, oDataAdicional: M3PItemsWEB) {\r\n this.goDataUser = oDataUser;\r\n this.goDataAdicional = oDataAdicional;\r\n }\r\n\r\n public operators = {\r\n '<': function (a, b) { return a < b },\r\n '>': function (a, b) { return a > b },\r\n '<=': function (a, b) { return a <= b },\r\n '>=': function (a, b) { return a >= b },\r\n 'IGUAL': function (a, b) { return a == b },\r\n 'DIFF': function (a, b) { return a != b },\r\n 'EN': function (a, b) { return a === b },\r\n 'AND': function (a, b) { return a && b },\r\n 'OR': function (a, b) { return a || b },\r\n '*': function (a, b) { return true },\r\n 'MOD': function (a, b) { return a % b == 0 },\r\n // ...\r\n };\r\n\r\n\r\n //--------------------------> Inicio Obtener informacion de promocion <--------------------------------\r\n //Verificar promociones, ingresando como parametro la informacion del producto a validar, Ubicacion\r\n public VerificarPromociones(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, lTiposPromo: Array<any>) {\r\n var jResp;\r\n var aResps = new Array<any>();\r\n var aPromociones = new Array<any>();\r\n var hoy = new Date();\r\n this.goM3ENCPROMO = oM3ENCPROMO;\r\n if (oM3ENCPROMO) {\r\n oM3ENCPROMO.filter(x => lTiposPromo.find(promo => x.Tipo == promo)).forEach(encabezadoPromo => {\r\n var dVigencia = new Date(encabezadoPromo.Vigencia);\r\n var dInicio = new Date(encabezadoPromo.Inicio);\r\n\r\n //JAGM 20191023, se quita Tipo Manual, y se deja el nuevo parametro.\r\n if (this.validarEstadosEncPromo(encabezadoPromo) && (encabezadoPromo.Estado && dVigencia >= hoy && dInicio <= hoy)) {\r\n /////// Validacion: 1. Si es diferente a Manual, no valida Variable estados manuales. De lo contrario lo valida. --- 2. Si el estado el estado es verdadero y la vigencia es mayor o igual a la fecha del momento\r\n aResps = new Array<any>();\r\n encabezadoPromo.M3CONDIAGRUPACION.forEach(agrupacion => {\r\n jResp = this.VerificarAgrupacionPromo(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, agrupacion, encabezadoPromo);\r\n if (jResp) {\r\n aResps.push(jResp);\r\n }\r\n });\r\n\r\n jResp = this.GetJRespFromArray(aResps, encabezadoPromo.Tipo, encabezadoPromo.Tipo2);\r\n if (jResp.APLCondicion) {\r\n //Validacion de accion, si existe, sino existe se agrega del papa. Se envia como referencia jresp\r\n this.ValidarAccion(jResp, encabezadoPromo.JAdicionales);\r\n this.RetomarValoresPromocion(encabezadoPromo, jResp);\r\n aPromociones.push(jResp);\r\n }\r\n }\r\n\r\n });\r\n return aPromociones;\r\n } else {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n validarEstadosEncPromo(encabezadoPromo: M3ENCPROMO): boolean {\r\n let estado = true;\r\n\r\n if (encabezadoPromo.EsManual && !encabezadoPromo.EstadoManuales) {\r\n estado = false;\r\n }\r\n\r\n if (encabezadoPromo.EsAplCupon && !encabezadoPromo.EstadoAplCupon) {\r\n estado = false;\r\n }\r\n\r\n return estado;\r\n }\r\n\r\n //Verificar agrupacion de promociones, ingresando como parametro la informacion del producto a validar, Ubicacion\r\n public VerificarAgrupacionPromo(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, agrupacion: M3CONDIAGRUPACION, oM3EncPromo: M3ENCPROMO) {\r\n var jResp;\r\n var aResps = new Array<any>();\r\n for (var i = 0; i < agrupacion.M3CONDIPROMO.length; i++) {\r\n var condicion: M3CONDIPROMO;\r\n var jAdicionales;\r\n condicion = agrupacion.M3CONDIPROMO[i];\r\n jAdicionales = JSON.parse(condicion.JAdicionales);\r\n if (!jAdicionales.ROOT.ACTIVIDAD || jAdicionales.ROOT.ACTIVIDAD == \"REGISTRO\") {\r\n jResp = this.VerificarCondicionesPromo(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, condicion);\r\n\r\n if (oM3EncPromo.Tipo == \"COMBINADA\" && oM3EncPromo.Tipo2 == \"COMBO\" && jResp.APLCondicion && agrupacion.Operador.trim().toUpperCase() == \"OR\") {\r\n aResps.push(jResp);\r\n } else if (agrupacion.Operador.trim().toUpperCase() == \"AND\" && !jResp.APLCondicion) {\r\n //La condicion NO se cumple\r\n jResp = this.ValidarRespuesta(null);\r\n return jResp;\r\n } else if (agrupacion.Operador.trim().toUpperCase() == \"OR\" && jResp.APLCondicion) {\r\n //La condicion se cumple\r\n return jResp;\r\n } else {\r\n //Se debe guardar la información. Si siempre fueron OR y FALSE, se debe comparar como un AND.\r\n aResps.push(jResp);\r\n }\r\n } else {\r\n return null;\r\n }\r\n }\r\n return this.GetJRespFromArray(aResps, oM3EncPromo.Tipo, oM3EncPromo.Tipo2);\r\n\r\n\r\n }\r\n\r\n //Verificar condicion de promociones.\r\n public VerificarCondicionesPromo(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, condicion: M3CONDIPROMO) {\r\n var jAdicionaes;\r\n var jResp;\r\n jAdicionaes = JSON.parse(condicion.JAdicionales);\r\n jResp = this.VerificarCondicionContraData(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, condicion, jAdicionaes);\r\n this.ValidarAccion(jResp, condicion.JAdicionales);\r\n this.AgregarCondicionOK(jResp, condicion);\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Agregar a json de respuesta si se genero OK la informacion de la condicion\r\n * @param jResp \r\n * @param condicion \r\n */\r\n public AgregarCondicionOK(jResp, condicion: M3CONDIPROMO) {\r\n if (jResp.APLCondicion) {\r\n jResp.IDCondicion = condicion.IdCondicion;\r\n }\r\n }\r\n\r\n\r\n //Verifica condicion, contra data ingresada.\r\n public VerificarCondicionContraData(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion, condicion: M3CONDIPROMO, jAdicionales): any {\r\n var objectFinded;\r\n var jResp;\r\n try {\r\n\r\n switch (jAdicionales.ROOT.Estructura.Est) {\r\n //Va a estructura de producto adicional\r\n case \"LoM3PrdAdicionales\":\r\n objectFinded = oTypeM3PrdGrp.LoM3PrdAdicionales.find(adic => adic.ATRIBUTO.trim() == condicion.Concepto.trim() && this.operators[jAdicionales.ROOT.Estructura.Operacion](adic.VALOR.trim(), condicion.Valor.trim()))\r\n objectFinded.JAdicionales = JSON.stringify(jAdicionales);\r\n jResp = this.ValidarRespuesta(objectFinded);\r\n break;\r\n case \"PRDTO\":\r\n jResp = this.VerificarInfoProducto(oTypeM3PrdGrp.LoM3PrdGeneral[0], condicion, jAdicionales);\r\n break;\r\n case \"PRDGRP\":\r\n jResp = this.VerificarInfoProductoPRDGRP(oTypeM3PrdGrp, condicion, jAdicionales);\r\n break;\r\n case \"M3DETCONDIPROMO\":\r\n jResp = this.VerificacionM3DetalleCondicion(oM3Procesos, oTypeM3PrdGrp, oM3Ubicacion, condicion.M3DETCONDIPROMO, condicion.Concepto, jAdicionales);\r\n break;\r\n case \"PROCESO\":\r\n jResp = this.VerificarInfoProceso(oM3Procesos, condicion, jAdicionales);\r\n break;\r\n case \"ID_PAGO\":\r\n jResp = this.VerificarProcesoFormaPago(oM3Procesos, condicion, jAdicionales);\r\n break;\r\n case \"ID_LISTAP\":\r\n jResp = this.verificarProcesoListaPrecio(oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista, condicion, jAdicionales);\r\n break;\r\n case \"USER\":\r\n jResp = this.VerificarInfoUserData(condicion, jAdicionales)\r\n break;\r\n case \"ADICIONAL\":\r\n jResp = this.VerificarInfoAdicional(condicion, jAdicionales)\r\n break;\r\n\r\n // case \"CARACTERISTICAS\":\r\n // //Esta promoción esta diseñada para que sea procesada al final de la transacción\r\n // jResp = this.VerificarClasificacionesProceso(oM3Procesos, condicion.M3DETCONDIPROMO, jAdicionales);\r\n break;\r\n default:\r\n console.log(\"No Entro por Detalle!\");\r\n jResp = this.GenerarRespuesta(false, null);\r\n break;\r\n }\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n public GetJRespFromArray(aResps: Array<any>, tipo, tipo2) {\r\n var bAPLCondicion;\r\n var jResp;\r\n if (aResps.length > 0) {\r\n //LLega a este punto, por alguna de 2 razones: \r\n //1. La condición es un OR y todos son FALSE\r\n //2. La condición es un AND y todos son TRUE\r\n bAPLCondicion = aResps.filter(resp => resp.APLCondicion);\r\n if (!bAPLCondicion) {\r\n jResp = this.ValidarRespuesta(null);\r\n } else {\r\n if (tipo == \"COMBINADA\" && tipo2 == \"COMBO\") {\r\n let arregloCondiciones = [];\r\n bAPLCondicion.forEach(condicion => {\r\n if (condicion.IDCondicion.length >= 0) {\r\n condicion.IDCondicion.forEach(idCon => {\r\n if (!arregloCondiciones.find(x => x == idCon)) arregloCondiciones.push(idCon);\r\n });\r\n }\r\n else {\r\n if (!arregloCondiciones.find(x => x == condicion.IDCondicion)) arregloCondiciones.push(condicion.IDCondicion);\r\n }\r\n });\r\n return { APLCondicion: true, Accion: null, IDCondicion: arregloCondiciones };\r\n }\r\n else {\r\n var aRespTMP = new Array<any>();\r\n //Verificar si alguno de los arreglos tiene accion diferente a null\r\n aRespTMP = aResps.filter(resp => resp.Accion != null);\r\n if (aRespTMP.length > 0) {\r\n //Usar el ultimo item, que tenga la acción\r\n jResp = aRespTMP[aRespTMP.length - 1];\r\n } else {\r\n jResp = aResps[aResps.length - 1];\r\n }\r\n }\r\n\r\n }\r\n\r\n //Si la promo depende de la forma de pago añade esta información\r\n if (aResps.find(x => x.FormaPago)) {\r\n jResp[\"FormaPago\"] = true;\r\n }\r\n }\r\n else {\r\n jResp = this.ValidarRespuesta(null);\r\n }\r\n return jResp;\r\n }\r\n\r\n //Generar Respuesta de condicion.\r\n public GenerarRespuesta(bAPLPromo: boolean, jAdicionales) {\r\n var jResp;\r\n jResp = { \"APLCondicion\": bAPLPromo, \"Accion\": null };\r\n if (jAdicionales != null && jAdicionales.ROOT.Accion !== undefined) {\r\n jResp.Accion = jAdicionales.ROOT.Accion;\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n /**\r\n * Verificar clasificaciones por proceso.\r\n * @param oM3Procesos Procesos de M3\r\n * @param detCondiciones Condiciones de promociones\r\n * @param jAdicionales JSON \r\n */\r\n public VerificarClasificacionesProceso(oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, lPrecios: Array<any>, bEsAcumulable: boolean) {\r\n var jResp: any = null;\r\n try {\r\n var valores: Array<any> = combi.Accion.Valores;\r\n //var iCantidadReal: number = lPrecios.length;\r\n var bEntro: boolean = false;\r\n valores = valores.sort((a, b) => (a.Cantidad < b.Cantidad) ? 1 : ((b.Cantidad < a.Cantidad) ? -1 : 0));\r\n\r\n this.AplicarPromoByValores(valores, lPrecios, lPrecios.length);//JAGM 20190731, funcion recursiva para calcular los precios nuevos.\r\n\r\n if (lPrecios.length > 0 && lPrecios.find(x => x.Aplicado == true)) {\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, false, bEsAcumulable);\r\n }\r\n\r\n } catch (ex) {\r\n jResp = this.GenerarRespuesta(false, null);\r\n console.log(\"VerificarClasificacionesProceso\");\r\n console.log(ex);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Verificar clasificaciones por proceso.\r\n * @param oM3Procesos Procesos de M3\r\n * @param detCondiciones Condiciones de promociones\r\n * @param jAdicionales JSON \r\n */\r\n public procesarCaracteristicaParcial(oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, lPrecios: Array<any>, bEsAcumulable: boolean) {\r\n var jResp: any = null;\r\n try {\r\n var valores: Array<any> = combi.Accion.Valores;\r\n valores = valores.sort((a, b) => a.Cantidad - b.Cantidad);\r\n for (let i = 0; i < lPrecios.length; i++) {\r\n let valorPromo = i < valores.length ? valores[i].Valor : 0\r\n lPrecios[i].PUNITNETO = +lPrecios[i].PUNITNETO - ((+lPrecios[i].PUNITNETO) * ((+valorPromo) / 100));\r\n lPrecios[i].Aplicado = true;\r\n }\r\n\r\n if (lPrecios.length > 0 && lPrecios.find(x => x.Aplicado == true)) {\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, false, bEsAcumulable);\r\n }\r\n\r\n } catch (ex) {\r\n jResp = this.GenerarRespuesta(false, null);\r\n console.log(\"VerificarClasificacionesProceso\");\r\n console.log(ex);\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n private AplicarPromoByValores(valores: Array<any>, lPrecios: Array<any>, residuoEntrante: number) {\r\n var iCantidadReal: number = residuoEntrante;// JAGM 20190731 nuevo parametro = lPrecios.length;\r\n\r\n for (var i = 0; i < valores.length; i++) {//JAGM 20190730 se agrega funcionalidad para que se pueda tener varios valores.\r\n var iCantidadPromo: number = valores[i].Cantidad;\r\n var valorPromo: number = valores[i].Valor;\r\n if (iCantidadReal >= iCantidadPromo) { //JAGM 20190426 SE CAMBIA, ANTES ESTABA LA FUNCIONALIDAD DE CANTIDAD REAL VS CANTIDAD PROMOCION.\r\n var Residuo: number = 0;\r\n if (iCantidadReal % iCantidadPromo == 0) {\r\n } else {\r\n Residuo = iCantidadReal % iCantidadPromo;\r\n this.AplicarPromoByValores(valores, lPrecios, Residuo);\r\n iCantidadReal = iCantidadReal - Residuo;\r\n }\r\n for (var i = +lPrecios.length - +residuoEntrante; i < +lPrecios.length - +Residuo; i++) {\r\n lPrecios[i].PUNITNETO = +lPrecios[i].PUNITNETO - ((+lPrecios[i].PUNITNETO) * ((+valorPromo) / 100));\r\n lPrecios[i].Aplicado = true;\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Armar nuevo arreglo, teniendo en cuenta el arreglo entrante. Se recorre de atras hacia adelante y se va creando el nuevo arreglo\r\n * @param lPrecios \r\n * @param residuo \r\n */\r\n public ArmarNuevoArrayDesdeResiduo(lPrecios: Array<any>, residuo) {\r\n var lPreciosResiduo = new Array<any>();\r\n try {\r\n\r\n for (var i = lPrecios.length - 1; i > residuo; i--) {\r\n lPreciosResiduo.push(lPrecios[i]);\r\n }\r\n } catch (ex) {\r\n console.log(\"ArmarNuevoArratDesdeResiduo\");\r\n console.log(ex);\r\n }\r\n\r\n return lPreciosResiduo;\r\n\r\n }\r\n\r\n\r\n /**\r\n * Validar promociones por procesos, teniendo en cuenta la informacion del M3 procesos\r\n * @param oM3Procesos M3 Procesos Objeto, con la informacion de todos los M3Procesos\r\n * @param condicion Objeto con informacion de condicion\r\n * @param jAdicionales JSON de informacion adicional\r\n */\r\n public VerificarInfoProceso(oM3Procesos: M3Procesos, condicion: M3CONDIPROMO, jAdicionales) {\r\n var jResp: any;\r\n if (oM3Procesos[condicion.Concepto] && this.operators[jAdicionales.ROOT.Estructura.Operacion](oM3Procesos[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Valida si el proceso tiene una forma de pago que cumpla con la condicion entrante, hace un pass true, la logica se hace desde la forma de pago\r\n * @param oM3Procesos \r\n * @param condicion \r\n * @param jAdicionales \r\n */\r\n public VerificarProcesoFormaPago(oM3Procesos: M3Procesos, condicion: M3CONDIPROMO, jAdicionales) {\r\n let jResp = this.GenerarRespuesta(true, jAdicionales);\r\n jResp[\"FormaPago\"] = true;\r\n return jResp;\r\n }\r\n\r\n verificarProcesoListaPrecio(oListaPrecio: M3PrdLista, condicion: M3CONDIPROMO, jAdicionales) {\r\n try {\r\n var jResp: any;\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](oListaPrecio[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Validar promociones por procesos, teniendo en cuenta la informacion del M3 procesos\r\n * @param oM3Procesos M3 Procesos Objeto, con la informacion de todos los M3Procesos\r\n * @param condicion Objeto con informacion de condicion\r\n * @param jAdicionales JSON de informacion adicional\r\n */\r\n public VerificarInfoProducto(oM3PrdGeneral: M3PrdGeneral, condicion: M3CONDIPROMO, jAdicionales) {\r\n try {\r\n var jResp: any;\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](oM3PrdGeneral[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n\r\n }\r\n\r\n\r\n /**\r\n * Verificar informacion de producto agrupado.\r\n * @param oTypeM3PrdGrp \r\n * @param condicion \r\n * @param jAdicionales \r\n */\r\n public VerificarInfoProductoPRDGRP(oTypeM3PrdGrp: TypeM3PrdGrp, condicion: M3CONDIPROMO, jAdicionales) {\r\n try {\r\n var jResp: any;\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](oTypeM3PrdGrp[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } catch {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n\r\n }\r\n\r\n\r\n /**\r\n * Verificar informacion adicional, esta informacion adicional esta en una variable global: goDataAdicional\r\n * @param condicion Objeto con informacion de condicion\r\n * @param jAdicionales JSON de informacion adicional\r\n */\r\n public VerificarInfoAdicional(condicion: M3CONDIPROMO, jAdicionales) {\r\n var jResp: any;\r\n if (this.goDataAdicional[condicion.Concepto] !== undefined && this.operators[jAdicionales.ROOT.Estructura.Operacion](this.goDataAdicional[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n if (jAdicionales.ROOT.Estructura.Operacion == \"MOD\" && +this.goDataAdicional[condicion.Concepto] > +condicion.Valor) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Verificar informacion contra usuario data.\r\n * @param condicion \r\n * @param jAdicionales \r\n */\r\n public VerificarInfoUserData(condicion: M3CONDIPROMO, jAdicionales) {\r\n var jResp: any;\r\n if (this.goDataUser.UsuarioSistema[condicion.Concepto] !== undefined && this.operators[jAdicionales.ROOT.Estructura.Operacion](this.goDataUser.UsuarioSistema[condicion.Concepto], condicion.Valor.trim())) {\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n\r\n } else if (this.goDataUser.UsuarioSistema[condicion.Concepto] && this.goDataUser.UsuarioSistema[condicion.Concepto].includes(',')) {\r\n for (const element of this.goDataUser.UsuarioSistema[condicion.Concepto].split(',')) {\r\n if (this.operators[jAdicionales.ROOT.Estructura.Operacion](element, condicion.Valor.trim())) {\r\n return this.GenerarRespuesta(true, jAdicionales);\r\n }\r\n }\r\n return this.GenerarRespuesta(false, null);\r\n }\r\n else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n //Verificar contra el detalle de la condición\r\n public VerificacionM3DetalleCondicion(oM3Procesos: M3Procesos, oTypeM3PrdGrp: TypeM3PrdGrp, oM3Ubicacion: M3Ubicacion,\r\n detCondiciones: Array<M3DETCONDIPROMO>, conceptoCondicion: string, jAdicionalesCondicion) {\r\n var jResp;\r\n var odetCondicionesFinded;\r\n switch (conceptoCondicion.trim()) {\r\n case \"PRD_SKP1\":\r\n\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, oTypeM3PrdGrp.SKP1));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_SKP1+2\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, oTypeM3PrdGrp.SKP1 + oTypeM3PrdGrp.LoM3PrdGeneral[0].SKP2));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_SKU\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oTypeM3PrdGrp.LoM3PrdGeneral[0].SKU.toString()));\r\n\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_DISP\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](oTypeM3PrdGrp.LoM3PrdGeneral[0].DISPONIBLE.toString(), det.Valor.toString()));\r\n\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"PRD_TIPO\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oTypeM3PrdGrp.TIPO.toString()));\r\n\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n\r\n case \"PER_PROCESO\"://* Solo valida una detCondicion\r\n let perXProceso: M3PerXProceso;\r\n odetCondicionesFinded = undefined;\r\n perXProceso = oM3Procesos.M3PerXProceso.find(x => x.TipoPersona == detCondiciones[0].Valor.toString())\r\n if (jAdicionalesCondicion.ROOT.Estructura.Operacion == \"EN\" && perXProceso) {\r\n odetCondicionesFinded = detCondiciones[0];\r\n } else if (jAdicionalesCondicion.ROOT.Estructura.Operacion == \"DIFF\" && !perXProceso) {\r\n odetCondicionesFinded = detCondiciones[0];\r\n }\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"ALMACEN\":\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oM3Ubicacion.IDUbicacion.toString()));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"HORARIO_HORA\":\r\n var oTimeNow: Date = new Date();\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), oTimeNow.getHours().toString()));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"LoM3PrdAdicionales\":\r\n if (jAdicionalesCondicion.ROOT.Estructura.Concepto !== undefined) {\r\n try {\r\n var VlrAdi = oTypeM3PrdGrp.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == jAdicionalesCondicion.ROOT.Estructura.Concepto).VALOR\r\n\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor.toString(), VlrAdi.toString()));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n } catch {\r\n jResp = this.ValidarRespuesta(null);\r\n }\r\n } else {\r\n jResp = this.ValidarRespuesta(null);\r\n }\r\n break;\r\n default:\r\n //Procesos\r\n switch (conceptoCondicion.split(\"_\")[0].trim()) {\r\n case \"PROC\":\r\n var property = conceptoCondicion.split(\"_\")[1].trim();\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, oM3Procesos[property]));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n case \"USER\":\r\n var property = conceptoCondicion.split(\"_\")[1].trim();\r\n odetCondicionesFinded = detCondiciones.find(det => this.operators[jAdicionalesCondicion.ROOT.Estructura.Operacion](det.Valor, this.goDataUser.UsuarioSistema[property]));\r\n jResp = this.ValidarRespuesta(odetCondicionesFinded);\r\n break;\r\n default:\r\n console.log(\"No Entro por Detalle!\");\r\n jResp = this.GenerarRespuesta(false, null);\r\n break;\r\n }\r\n break;\r\n\r\n }\r\n return jResp;\r\n }\r\n\r\n\r\n\r\n\r\n //Validar respuesta, con objeto a validar\r\n public ValidarRespuesta(objectValidate) {\r\n var jResp;\r\n var jAdicionales;\r\n if (objectValidate) {\r\n jAdicionales = JSON.parse(objectValidate.JAdicionales);\r\n //JAGM 20190625 Agregar seccion de validaciones.\r\n var bResp = this.ValidacionesByJAdicionales(jAdicionales)\r\n if (bResp) {\r\n //Se envia en adicionales, el json de la informacion encontrada del detalle.\r\n jResp = this.GenerarRespuesta(true, jAdicionales);\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n\r\n } else {\r\n jResp = this.GenerarRespuesta(false, null);\r\n }\r\n return jResp;\r\n }\r\n\r\n /**\r\n * Validar reglas configuradas desde JSON de Adicionales\r\n * @param jAdicionales \r\n */\r\n public ValidacionesByJAdicionales(jAdicionales: any) {\r\n var bResp = true;\r\n try {\r\n //console.log(\"***********************************ValidacionesByJAdicionales\")\r\n //console.log(jAdicionales)\r\n if (jAdicionales.ROOT.VALIDACIONES && jAdicionales.ROOT.VALIDACIONES.TIPO) {\r\n switch (jAdicionales.ROOT.VALIDACIONES.TIPO) {\r\n case \"VIGENCIA\":\r\n bResp = this.ValidarVigencia(jAdicionales.ROOT.VALIDACIONES.VAL1, jAdicionales.ROOT.VALIDACIONES.VAL2);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(\"***********************************Error\");\r\n console.log(ex);\r\n }\r\n return bResp;\r\n }\r\n\r\n public ValidarVigencia(val1: Date, val2: Date) {\r\n\r\n var FechaActual = new Date();\r\n // console.log(val1)\r\n // console.log(val2)\r\n\r\n // var dVal1 = new Date(val1);\r\n // var dVal2 = new Date(val2);\r\n\r\n // console.log(dVal1)\r\n // console.log(dVal2)\r\n\r\n\r\n var nFechaActual: number = +this.GetFechaNumber(FechaActual); //+(FechaActual.getFullYear() + \"\" + FechaActual.getMonth() + \"\" + FechaActual.getDate());\r\n var nVal1: number = +this.GetFechaNumber(val1); //+(dVal1.getFullYear() + \"\" + dVal1.getMonth() + \"\" + (+dVal1.getDate() + 1) );\r\n var nVal2: number = +this.GetFechaNumber(val2) //+(dVal2.getFullYear() + \"\" + dVal2.getMonth() + \"\" + (+dVal2.getDate() + 1) );\r\n if (nFechaActual >= nVal1 && nFechaActual <= nVal2) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n public GetFechaNumber(date: Date) {\r\n var d = moment(date).format('YYYYMMDD');\r\n return d;\r\n }\r\n\r\n\r\n //Validar accion, si no tiene cargada una. Esta accion se carga jerarquicamente.\r\n public ValidarAccion(jResp, jAdicionales) {\r\n var jsonAdic = JSON.parse(jAdicionales);\r\n if (jResp.Accion == null && jsonAdic.ROOT.Accion !== undefined) {\r\n jResp.Accion = jsonAdic.ROOT.Accion;\r\n }\r\n }\r\n\r\n //Retomar información \r\n public RetomarValoresPromocion(oM3ENCPROMO: M3ENCPROMO, jResp) {\r\n jResp.Promocion = {};\r\n jResp.Promocion.Nombre = oM3ENCPROMO.Nombre;\r\n jResp.Promocion.ID = oM3ENCPROMO.IdPromocion;\r\n //Si no tuvo ninguna accion\r\n if (jResp.Accion == null) {\r\n jResp.Accion = { \"Tipo2\": oM3ENCPROMO.Tipo2, \"Tipo\": oM3ENCPROMO.Tipo };\r\n } else {\r\n /// Retomar desde el encabezado promo, si no existe el tipo y Tipo2\r\n if (!jResp.Accion.Tipo2) {\r\n jResp.Accion.Tipo2 = oM3ENCPROMO.Tipo2;\r\n }\r\n if (!jResp.Accion.Tipo) {\r\n jResp.Accion.Tipo = oM3ENCPROMO.Tipo;\r\n }\r\n }\r\n }\r\n //--------------------------> Fin Obtener informacion de promocion <--------------------------------\r\n\r\n //--------------------------> Inicio Procesamiento de promocion <--------------------------------\r\n\r\n\r\n //Procesamiento de promoción, teniendo en cuenta la informacion del producto a aplicar la promocion y las promociones a aplicar\r\n public ProcesarPromocion(JPromociones: Array<any>, oTypeM3PrdGrp: TypeM3PrdGrp, oM3ENCPROMO: Array<M3ENCPROMO>, gsIdKatios = null): PromocionProcesada {\r\n var oPromocionProcesada = new PromocionProcesada();\r\n let splitPrecio = this.goDataUser.UsuarioSistema.IDLPrecio.split(\"-\");\r\n var oListaFinded = oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3ListaPrecio.find(lPre => lPre.IDLISTA == splitPrecio[0]);\r\n let precioMonedero = 0;\r\n let listaAplicada = \"Valor\";\r\n if (oListaFinded && splitPrecio && splitPrecio.length > 1) {\r\n switch (splitPrecio[1]) {\r\n case \"LB\":\r\n listaAplicada = \"LB\";\r\n oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oListaFinded.LB;\r\n break;\r\n case \"LC\":\r\n listaAplicada = \"LC\";\r\n oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oListaFinded.LC;\r\n break;\r\n case \"LD\":\r\n listaAplicada = \"LD\";\r\n oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oListaFinded.LD;\r\n break;\r\n }\r\n }\r\n oPromocionProcesada.PrecioTotal = oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n if (gsIdKatios != null && gsIdKatios == \"CTN\") {\r\n precioMonedero = oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3ListaPrecio.find(x => x.IDLISTA == \"2\").PRECIO;\r\n }\r\n return this.ProcesarPromoGeneral(JPromociones, oTypeM3PrdGrp.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO, oPromocionProcesada, oM3ENCPROMO, precioMonedero, listaAplicada);\r\n }\r\n\r\n /**\r\n * Procesamiento de promocion que se hacen validas despues de registrar todos los productos.\r\n * @param JPromociones \r\n * @param oM3Procesos \r\n */\r\n public ProcesarPromoAfter(JPromociones: Array<any>, oM3Procesos: M3Procesos, oM3ENCPROMO: Array<M3ENCPROMO>): PromocionProcesada {\r\n try {\r\n var oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotal = oM3Procesos.ValorNeto;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n return this.ProcesarPromoGeneral(JPromociones, oM3Procesos.ValorNeto, oPromocionProcesada, oM3ENCPROMO);\r\n } catch {\r\n return null;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Procesamiento de promocion en general\r\n * @param JPromociones \r\n * @param nPrecio \r\n * @param oPromocionProcesada \r\n */\r\n public ProcesarPromoGeneral(JPromociones: Array<any>, nPrecio: number, oPromocionProcesada: PromocionProcesada, oM3ENCPROMO: Array<M3ENCPROMO>, precioMonedero = 0, listaAplicada = \"Valor\"): PromocionProcesada {\r\n var oPromocionesAsociadas: PromocionesAsociadas;\r\n var oListaPromosAsoc = new Array<PromocionesAsociadas>();\r\n let precioAsignado = nPrecio;\r\n for (var _i = 0; _i < JPromociones.length; _i++) {\r\n //JPromociones.forEach(promocion => {\r\n var promocion = JPromociones[_i];\r\n // if (promocion.Accion != null && promocion.Accion.Tipo2 != null && promocion.Accion.Tipo2 == \"MONEDERO\" && precioMonedero > 0) {\r\n // oPromocionProcesada.PrecioTotal = precioMonedero;\r\n // }\r\n oPromocionesAsociadas = this.ProcesarPromoByTipo(promocion, precioAsignado, oPromocionProcesada, oM3ENCPROMO, listaAplicada);\r\n if (oPromocionesAsociadas) {\r\n oListaPromosAsoc.push(oPromocionesAsociadas);\r\n }\r\n\r\n }\r\n this.ValidarMejorPromocion(oListaPromosAsoc, oPromocionProcesada, precioMonedero);\r\n\r\n // if (oPromocionesAsociadas != null) {\r\n // oPromocionProcesada.ListPromocionesAsociadas.push(oPromocionesAsociadas);\r\n // oPromocionProcesada.PrecioTotal = Math.round(((+oPromocionProcesada.PrecioTotal) - oPromocionesAsociadas.Valor) * 100) / 100;\r\n // oPromocionProcesada.PrecioTotalPromocion = Math.round(((+oPromocionProcesada.PrecioTotalPromocion) + oPromocionesAsociadas.Valor) * 100) / 100;\r\n // oPromocionProcesada.ValorTotalMonedero += oPromocionesAsociadas.ValorMonedero;\r\n // }\r\n\r\n if (oPromocionProcesada.PrecioTotal < 0) {\r\n oPromocionProcesada.PrecioTotal = 0;\r\n }\r\n //FS 20190725 Redodneo de los valores totales\r\n // oPromocionProcesada.PrecioTotal = oPromocionProcesada.PrecioTotal;\r\n // oPromocionProcesada.PrecioTotalPromocion = oPromocionProcesada.PrecioTotalPromocion;\r\n return oPromocionProcesada;\r\n }\r\n\r\n /**\r\n * Validacion de mejor opcion, teniendo en cuenta las promociones procesadas.\r\n * @param oListaPromosAsoc Lista de promociones procesadas\r\n * @param oPromocionProcesada Promocion procesada, que retornará a flujo.\r\n */\r\n public ValidarMejorPromocion(oListaPromosAsoc: Array<PromocionesAsociadas>, oPromocionProcesada: PromocionProcesada, monedero: number): PromocionProcesada {\r\n let promoAsociadaRestringido = oListaPromosAsoc.find(x => x.Tipo == \"RESTRICCION\");\r\n //Si el producto esta restringido le da mayor prioridad a esta promoción\r\n if (!promoAsociadaRestringido) {\r\n //1. Suma de todas las promociones Acumulables\r\n //var dPromoACM: number = 0;\r\n //dPromoACM = this.GetMaxXRegla(oListaPromosAsoc, \"ACM\", oPromocionProcesada);\r\n let dPromoEXC = this.GetMaxXRegla(oListaPromosAsoc, \"EXC\", oPromocionProcesada);\r\n let dPromoACMDIN = this.GetMaxXRegla(oListaPromosAsoc, \"ACMDIN\", oPromocionProcesada);\r\n //Promociones No Acumulables\r\n\r\n if (dPromoACMDIN < dPromoEXC) {\r\n this.aplicaPromoEXC(oListaPromosAsoc, oPromocionProcesada, dPromoEXC);\r\n }\r\n else {\r\n this.aplicaPromoACMDIN(oListaPromosAsoc, oPromocionProcesada, dPromoACMDIN);\r\n }\r\n oPromocionProcesada.ListPromocionesAsociadas = oListaPromosAsoc//.push(oListaPromosAsoc.find(x => x.Valor == dPromoEXC));\r\n\r\n //Recorrer todas las promociones Acumulables\r\n for (const promo of oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACM\" && !x.flags.formaPago)) {\r\n promo.Aplicada = true;\r\n if (promo.ValorPorcentaje > 0) {\r\n if (monedero != 0 && promo.Tipo == \"MONEDERO\") {\r\n let nuevoValorDescuento = ((+monedero) * promo.ValorPorcentaje / 100);\r\n oPromocionProcesada.PrecioTotal = (+monedero) - nuevoValorDescuento;\r\n oPromocionProcesada.PrecioTotalPromocion = (+oPromocionProcesada.PrecioTotalPromocion) + nuevoValorDescuento;\r\n } else {\r\n let nuevoValorDescuento = ((+oPromocionProcesada.PrecioTotal) * promo.ValorPorcentaje / 100);\r\n oPromocionProcesada.PrecioTotal = (+oPromocionProcesada.PrecioTotal) - nuevoValorDescuento;\r\n oPromocionProcesada.PrecioTotalPromocion = (+oPromocionProcesada.PrecioTotalPromocion) + nuevoValorDescuento;\r\n }\r\n }\r\n else {\r\n oPromocionProcesada.PrecioTotal = ((+oPromocionProcesada.PrecioTotal) - promo.Valor);\r\n oPromocionProcesada.PrecioTotalPromocion = ((+oPromocionProcesada.PrecioTotalPromocion) + promo.Valor);\r\n }\r\n oPromocionProcesada.ValorTotalMonedero += promo.ValorMonedero;\r\n }\r\n\r\n ///////FUNCIONALIDAD PRODRIA FUNCIONAR MÃS ADELANTE, SI SE QUIERE AGRUPAR LAS PROMOCIONES ACM Y EXC\r\n // if(dPromoACM == 0 && dPromoEXC == 0){\r\n // throw new Error('No se encontraron promociones');\r\n // }else{\r\n // if(dPromoACM > dPromoEXC){\r\n // //Gana promociones acumulativas.\r\n // oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACM\").forEach(x => x.Aplicada = true); // Marcacion de promocion aplicada\r\n // oPromocionProcesada.ListPromocionesAsociadas = oListaPromosAsoc;//.filter(x => x.Regla.trim().toUpperCase() == \"ACM\")\r\n // oPromocionProcesada.PrecioTotal = Math.round(((+oPromocionProcesada.PrecioTotal) - dPromoACM) * 100) / 100;\r\n // oPromocionProcesada.PrecioTotalPromocion = Math.round(((+oPromocionProcesada.PrecioTotalPromocion) + dPromoACM) * 100) / 100;\r\n // oPromocionProcesada.ValorTotalMonedero += oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACM\").reduce((acc, cur) => (acc) + (+cur.ValorMonedero), 0);\r\n // }else{\r\n // //Gana promociones excluyentes.\r\n // oListaPromosAsoc.find(x => x.Valor == dPromoEXC).Aplicada = true; // Marcacion de promocion aplicada\r\n // oPromocionProcesada.ListPromocionesAsociadas = oListaPromosAsoc//.push(oListaPromosAsoc.find(x => x.Valor == dPromoEXC));\r\n // oPromocionProcesada.PrecioTotal = Math.round(((+oPromocionProcesada.PrecioTotal) - dPromoEXC) * 100) / 100;\r\n // oPromocionProcesada.PrecioTotalPromocion = Math.round(((+oPromocionProcesada.PrecioTotalPromocion) + dPromoEXC) * 100) / 100;\r\n // oPromocionProcesada.ValorTotalMonedero += oListaPromosAsoc.find(x => x.Valor == dPromoEXC).ValorMonedero;\r\n // }\r\n // }\r\n }\r\n else {\r\n oPromocionProcesada.ListPromocionesAsociadas = new Array<PromocionesAsociadas>(promoAsociadaRestringido);\r\n oPromocionProcesada.PrecioTotal = 0;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n oPromocionProcesada.ValorTotalMonedero = 0;\r\n }\r\n\r\n\r\n return oPromocionProcesada;\r\n }\r\n\r\n aplicaPromoEXC(oListaPromosAsoc: Array<PromocionesAsociadas>, oPromocionProcesada: PromocionProcesada, valorPromoEXC: number) {\r\n let promoExc: PromocionesAsociadas;\r\n if (valorPromoEXC > 0) {\r\n promoExc = oListaPromosAsoc.find(x => x.Valor == valorPromoEXC || x.ValorMonedero == valorPromoEXC);\r\n promoExc.Aplicada = true; // Marcacion de promocion aplicada\r\n oPromocionProcesada.PrecioTotal = ((+oPromocionProcesada.PrecioTotal) - promoExc.Valor);\r\n oPromocionProcesada.PrecioTotalPromocion = ((+oPromocionProcesada.PrecioTotalPromocion) + promoExc.Valor);\r\n oPromocionProcesada.ValorTotalMonedero += promoExc.ValorMonedero;\r\n }\r\n }\r\n aplicaPromoACMDIN(oListaPromosAsoc: Array<PromocionesAsociadas>, oPromocionProcesada: PromocionProcesada, valorPromoACMDIN: number) {\r\n if (valorPromoACMDIN > 0) {\r\n for (let promo of oListaPromosAsoc.filter(x => x.Regla == \"ACMDIN\")) {\r\n promo.Aplicada = true;\r\n oPromocionProcesada.ValorTotalMonedero += promo.ValorMonedero;\r\n }\r\n oPromocionProcesada.PrecioTotal = ((+oPromocionProcesada.PrecioTotal) - valorPromoACMDIN);\r\n oPromocionProcesada.PrecioTotalPromocion = ((+oPromocionProcesada.PrecioTotalPromocion) + valorPromoACMDIN);\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Obtener el maximo valor segun la regla a comparar\r\n * @param oListaPromosAsoc \r\n * @param sRegla \r\n */\r\n public GetMaxXRegla(oListaPromosAsoc: Array<PromocionesAsociadas>, sRegla: string, oPromocionProcesada: PromocionProcesada) {\r\n var result: number = 0;\r\n try {\r\n switch (sRegla) {\r\n // case \"ACM\":\r\n // result = oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == sRegla && !x.flags.formaPago).reduce((acc, cur) => (acc) + (+cur.Valor), 0);\r\n // break;\r\n case \"ACMDIN\":\r\n let precioActual = oPromocionProcesada.PrecioTotal;\r\n let valorTotalDescuento = 0;\r\n for (const promo of oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == \"ACMDIN\" && (!x.flags.formaPago || x.Tipo == \"MONEDERO\"))) {\r\n if (promo.ValorPorcentaje > 0) {\r\n let nuevoValorDescuento = (precioActual * promo.ValorPorcentaje / 100);\r\n precioActual -= nuevoValorDescuento;\r\n valorTotalDescuento += nuevoValorDescuento;\r\n }\r\n else {\r\n precioActual -= promo.Valor;\r\n valorTotalDescuento += promo.Valor;\r\n }\r\n }\r\n result = valorTotalDescuento;\r\n break;\r\n case \"EXC\":\r\n result = Math.max.apply(Math, oListaPromosAsoc.filter(x => x.Regla.trim().toUpperCase() == sRegla && (!x.flags.formaPago || x.Tipo == \"MONEDERO\")).map(function (o) { return o.Valor > o.ValorMonedero ? o.Valor : o.ValorMonedero; }))\r\n break;\r\n }\r\n } catch {\r\n }\r\n return result;\r\n }\r\n\r\n\r\n //Procesar promocion segun el tipo \r\n public ProcesarPromoByTipo(promocion: any, Precio: number, oPromocionProcesada: PromocionProcesada, oM3ENCPROMO: Array<M3ENCPROMO>, listaAplicada = \"Valor\"): PromocionesAsociadas {\r\n try {\r\n var Accion;\r\n var oPromocionesAsociadas = new PromocionesAsociadas();\r\n if (promocion.Accion != null && promocion.Promocion != undefined) {\r\n oPromocionesAsociadas.IDPromocion = promocion.Promocion.ID;\r\n oPromocionesAsociadas.Nombre = promocion.Promocion.Nombre;\r\n Accion = promocion.Accion;\r\n if (Accion.Regla) {\r\n oPromocionesAsociadas.Regla = Accion.Regla;\r\n } else {\r\n oPromocionesAsociadas.Regla = \"EXC\";\r\n }\r\n\r\n oPromocionesAsociadas.Tipo = Accion.Tipo2;\r\n let valorAplicar = Accion.Valor;\r\n if (Accion[listaAplicada]) {\r\n valorAplicar = Accion[listaAplicada];\r\n }\r\n\r\n switch (Accion.Tipo2.trim().toUpperCase()) {\r\n case \"DTO_%\":\r\n oPromocionesAsociadas.ListObsSKU = null\r\n oPromocionesAsociadas.ValorPorcentaje = +valorAplicar\r\n oPromocionesAsociadas.Valor = (+Precio) * ((+valorAplicar) / 100);\r\n break;\r\n case \"DTO_VALOR\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Valor = valorAplicar;\r\n break;\r\n case \"DTO_EXACT\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Valor = (+Precio) - (+valorAplicar);\r\n break;\r\n case \"OBSEQ\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = Accion.OBSEQUIOS;\r\n oPromocionesAsociadas.ReglaObseq = Accion.ReglaObseq;\r\n this.ValidarCantidadObsequios(oM3ENCPROMO, Accion.OBSEQUIOS, oPromocionesAsociadas);\r\n //validar cantidad vs cantidad de obsquios\r\n break;\r\n case \"MONEDERO\":\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ValorMonedero = +Accion.Valor;\r\n //FS 20190827 Ya no se guarda el valor total del monedero si no unicamente el porcentaje... oPromocionesAsociadas.ValorMonedero = (+oPromocionProcesada.PrecioTotal) * ((+Accion.Valor) / 100);\r\n break;\r\n case \"CUPON\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.IdCupon = Accion.Valor;\r\n break;\r\n case \"ACTIVA_PROMO\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.lIdActivaPromo = Accion.Valor.split(',');\r\n break;\r\n case \"RESTRICCION_PAGO\":\r\n case \"RESTRICCION\":\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.Tipo = Accion.Tipo2.trim().toUpperCase();\r\n break;\r\n // case \"MOD_CANTIDAD\":\r\n // //this.AplicarReglaModCantidad(oPromocionesAsociadas, oPromocionProcesada, Accion);\r\n // break;\r\n default:\r\n if (Accion.Tipo == \"COMBINADA\") {\r\n oPromocionesAsociadas.Valor = 0;\r\n oPromocionesAsociadas.ListObsSKU = null;\r\n oPromocionesAsociadas.PromocionCombinada = new PromocionCombinada();\r\n oPromocionesAsociadas.PromocionCombinada.IdPromocionCombinada = oPromocionesAsociadas.IDPromocion;\r\n oPromocionesAsociadas.PromocionCombinada.Tipo2 = Accion.Tipo2.trim().toUpperCase();\r\n oPromocionesAsociadas.PromocionCombinada.Nombre = oPromocionesAsociadas.Nombre;\r\n oPromocionesAsociadas.PromocionCombinada.Accion = Accion;\r\n\r\n this.ValidarCamposAdicionales(oM3ENCPROMO, oPromocionesAsociadas.PromocionCombinada, promocion);\r\n } else {\r\n oPromocionesAsociadas = null;\r\n }\r\n break;\r\n }\r\n\r\n if (promocion.FormaPago) {\r\n oPromocionesAsociadas.flags.formaPago = true;\r\n }\r\n } else {\r\n return null;\r\n }\r\n return oPromocionesAsociadas;\r\n } catch (ex) {\r\n console.log(ex);\r\n return null;\r\n }\r\n }\r\n\r\n public ValidarCantidadObsequios(oM3ENCPROMO: Array<M3ENCPROMO>,\r\n obsequios: Array<any>, oPromocionesAsociadas: PromocionesAsociadas) {\r\n try {\r\n var promo: M3ENCPROMO;\r\n var ValorCantPRD: number = -1;\r\n var ValorCantPRDReal: number = this.goDataAdicional.dCantidad;\r\n promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionesAsociadas.IDPromocion);\r\n promo.M3CONDIAGRUPACION.forEach(x => {\r\n ValorCantPRD = +x.M3CONDIPROMO.find(x => x.Concepto == \"dCantidad\").Valor\r\n });\r\n oPromocionesAsociadas.CantidadObseq = ValorCantPRD\r\n } catch (ex) {\r\n console.log(ex)\r\n }\r\n }\r\n\r\n /**\r\n * Validar campos adicionales en promociones\r\n * @param oM3ENCPROMO \r\n * @param oPromocionCombinada \r\n * @param promocion \r\n */\r\n public ValidarCamposAdicionales(oM3ENCPROMO: Array<M3ENCPROMO>, oPromocionCombinada: PromocionCombinada, promocion: any) {\r\n switch (oPromocionCombinada.Tipo2) {\r\n case \"OBSEQ_CIERRE\":\r\n //Agregar Cantidad.\r\n var promo: M3ENCPROMO;\r\n var sValorCantidad: string = \"1\";\r\n promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionCombinada.IdPromocionCombinada);\r\n promo.M3CONDIAGRUPACION.forEach(x => {\r\n sValorCantidad = x.M3CONDIPROMO.find(x => x.Concepto == \"dCantidad\").Valor;\r\n });\r\n oPromocionCombinada.Accion.CantidadObsq = sValorCantidad;\r\n break;\r\n case \"XCARACTERISTICA\":\r\n // var promo: M3ENCPROMO;\r\n // promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionCombinada.IdPromocionCombinada);\r\n // var jAdic:any = JSON.parse(promo.JAdicionales);\r\n // oPromocionCombinada.Accion.Clasificacion = jAdic.ROOT.Accion.Caracteristica;\r\n break;\r\n case \"COMBO\":\r\n var promo: M3ENCPROMO;\r\n promo = oM3ENCPROMO.find(x => x.IdPromocion == oPromocionCombinada.IdPromocionCombinada);\r\n if (!oPromocionCombinada.Accion.NumCondiciones) {\r\n oPromocionCombinada.Accion.NumCondiciones = promo.M3CONDIAGRUPACION[0].M3CONDIPROMO.length;\r\n }\r\n if (promocion.IDCondicion) {\r\n oPromocionCombinada.Accion.IdCondicion = promocion.IDCondicion\r\n }\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n //--------------------------> Fin Procesamiento de promocion <--------------------------------\r\n\r\n\r\n //--------------------------> Inicio Procesamiento Combinada <--------------------------------\r\n\r\n //Procesar promociones combinadas\r\n public ProcesarCombinada(oM3Procesos: M3Procesos) {\r\n try {\r\n this.PromoCombinadasV2(oM3Procesos);\r\n return oM3Procesos;\r\n } catch (ex) {\r\n console.log(\"ProcesarCombinada\");\r\n console.log(ex);\r\n return oM3Procesos;\r\n }\r\n\r\n }\r\n\r\n /////////////////////////////V2 COMBINADA\r\n /**\r\n * Procesamiento de promociones combinadas, teniendo en cuenta la lista de promociones combinadas de M3Procesos\r\n * @param ioM3Proceso Objeto M3 Procesos, el cual se recorrerá la informacion de lista de promociones combinadas\r\n */\r\n public PromoCombinadasV2(ioM3Proceso: M3Procesos) {\r\n var oListEncab: Array<M3PEncItems>;\r\n let encConLaCantidadOriginal = _.cloneDeep(ioM3Proceso.M3ENC);\r\n\r\n if (ioM3Proceso.PromosCombinadas === undefined) {\r\n this.GetCombinadasFromDinamicas(ioM3Proceso);\r\n }\r\n\r\n for (var i = 0; i < ioM3Proceso.PromosCombinadas.length; i++) {\r\n this.AddDinamicaProcesoCombinadas(ioM3Proceso);\r\n var combi: PromocionCombinada = ioM3Proceso.PromosCombinadas[i];\r\n var esAcumulable = this.GetEsAcumulablePromo(combi)\r\n ///Obtener todos los Encabezados que aplican a la promocion a la que se esta iterando\r\n oListEncab = this.GetEncabezadoByCombi(combi, ioM3Proceso);\r\n switch (combi.Tipo2) {\r\n case \"MOD_CANTIDAD\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n //Esta promocion es: 3 gaseosas por $500\r\n this.AplicarReglaModCantidad(lPrecios, oListEncab, combi, esAcumulable);\r\n break;\r\n case \"OBSEQ_CIERRE\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.ProcesarPromoObsqCierre(lPrecios, combi, ioM3Proceso, esAcumulable);\r\n break;\r\n case \"OBSEQ_SUMTOTAL\":\r\n this.procesarObseqSumTotal(oListEncab, combi, ioM3Proceso);\r\n break;\r\n case \"XCARACTERISTICA\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.VerificarClasificacionesProceso(oListEncab, combi, lPrecios, esAcumulable);\r\n break;\r\n case \"XCARACTERISTICAPARCIAL\":\r\n this.ordenarListaEnc(oListEncab, esAcumulable);\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.procesarCaracteristicaParcial(oListEncab, combi, lPrecios, esAcumulable);\r\n break;\r\n case \"COMBO\":\r\n let aplCombo = true;\r\n while (aplCombo) {\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n aplCombo = this.PromocionCombinadaCombo(lPrecios, oListEncab, combi, esAcumulable, ioM3Proceso);\r\n }\r\n break;\r\n case \"DTO_VALORTOTAL\":\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.AplReglaCombValorTotal(lPrecios, oListEncab, combi, esAcumulable);\r\n break;\r\n case \"PROD_APLDESC\":\r\n this.procesarProductoAplDesc(oListEncab, combi, ioM3Proceso, esAcumulable);\r\n break;\r\n default:\r\n //Esta promocion es para 2x1, 3x1, 4x2, ...\r\n if (oListEncab && oListEncab.length > 0) {\r\n var lPrecios = this.ProcesarPromoCombyByListEnc(oListEncab, esAcumulable);\r\n this.CalcularPromocionesByListaPrec(lPrecios, oListEncab, combi, esAcumulable);\r\n }\r\n break;\r\n }\r\n }\r\n //Se reestablece la cantidad original para que no se quede en un buvle infinito\r\n for (const oM3PEncOriginales of encConLaCantidadOriginal) {\r\n let cantidadOriginal = oM3PEncOriginales.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\").Valor;\r\n let productoActual = ioM3Proceso.M3ENC.find(x => x.ID == oM3PEncOriginales.ID);\r\n productoActual.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\").Valor = cantidadOriginal;\r\n }\r\n\r\n return ioM3Proceso;\r\n }\r\n\r\n public ordenarListaEnc(olistaEnc: M3PEncItems[], esAcumulable) {\r\n if (esAcumulable) olistaEnc.sort((a, b) => (+b.M3DET.find(x => x.NombreConcepto == 'PUNITNETO').Valor) - (+a.M3DET.find(x => x.NombreConcepto == 'PUNITNETO').Valor));\r\n else olistaEnc.sort((a, b) => (+b.M3DET.find(x => x.NombreConcepto == 'PUNIT').Valor) - (+a.M3DET.find(x => x.NombreConcepto == 'PUNIT').Valor));\r\n\r\n }\r\n\r\n public AplReglaCombValorTotal(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean) {\r\n var Accion = combi.Accion;\r\n var cantidadDescPromo: number = +Accion.Valor;\r\n let precioTotalCompra: number = lPrecios.reduce(function (a, b) { return a + Number(b.PUNITNETO); }, 0);\r\n console.debug(precioTotalCompra);\r\n let descAcum = 0;\r\n let descProdActual;\r\n\r\n for (var i = 0; i < lPrecios.length; i++) {\r\n descProdActual = (lPrecios[i].PUNITNETO / precioTotalCompra) * cantidadDescPromo //40\r\n descAcum += descProdActual;\r\n lPrecios[i].Aplicado = true;\r\n lPrecios[i].PUNITNETO = lPrecios[i].PUNITNETO - descProdActual;\r\n // if (cantidadDescPromo > 0) {\r\n // lPrecios[i].Aplicado = true;\r\n // if (lPrecios[i].PUNITNETO < cantidadDescPromo) {\r\n // cantidadDescPromo -= lPrecios[i].PUNITNETO;\r\n // lPrecios[i].PUNITNETO = 0;\r\n // }\r\n // else{\r\n // lPrecios[i].PUNITNETO -= cantidadDescPromo;\r\n // cantidadDescPromo = 0;\r\n // }\r\n // }\r\n // else {\r\n // break;\r\n // }\r\n }\r\n\r\n if (cantidadDescPromo > descAcum || cantidadDescPromo < descAcum) {\r\n //find del ultimo \r\n console.debug(\"Encontre diferencia en promos combinadas: \" + cantidadDescPromo + \" vs \" + descAcum);\r\n lPrecios[lPrecios.length - 1].PUNITNETO = lPrecios[lPrecios.length - 1].PUNITNETO - (cantidadDescPromo - descAcum);\r\n }\r\n\r\n if (lPrecios.find(x => x.Aplicado)) {\r\n console.debug(\"AplicarReglaModCantidad\")\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, true, bEsAcumulable);\r\n }\r\n }\r\n\r\n\r\n public procesarObseqSumTotal(productosAplicaPromo: M3PEncItems[], combi: PromocionCombinada, oM3Procesos: M3Procesos) {\r\n let valorPromo = +combi.Accion.Valor;\r\n let sumaValorProductos = 0;\r\n let cantidadObsequios = 0;\r\n let cantidadProductoActual = 1;\r\n let productosHijosDelCombo: Array<M3PEncItems> = [];\r\n let productosRevisados = [];\r\n let oM3RegService = new M3RegService(null, null, null);\r\n let valorCombo = 0;\r\n let diferencia = 0;\r\n\r\n for (let encItem of productosAplicaPromo) {\r\n cantidadProductoActual = 1;\r\n let pUnitActual = +encItem.M3DET.find(x => x.NombreConcepto == \"PUNIT\").Valor;\r\n let cantidadActual = +encItem.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor;\r\n while (cantidadProductoActual <= cantidadActual) {\r\n sumaValorProductos += pUnitActual;\r\n cantidadProductoActual++;\r\n\r\n let productoRevisado = productosRevisados.find(x => x.Id == encItem.ID);\r\n if (productoRevisado) {\r\n productoRevisado.Cantidad++;\r\n }\r\n else {\r\n productosRevisados.push({ Id: encItem.ID, Cantidad: 1 });\r\n }\r\n if (sumaValorProductos + diferencia >= valorPromo) {\r\n valorCombo += sumaValorProductos;\r\n this.agregarProductoAProductosHijosSumTotal(productosHijosDelCombo, oM3Procesos, productosRevisados);\r\n cantidadObsequios++;\r\n productosRevisados = [];\r\n diferencia = sumaValorProductos - valorPromo;\r\n sumaValorProductos = 0;\r\n }\r\n }\r\n }\r\n if (productosHijosDelCombo.length > 0) {\r\n let productoCombo = oM3RegService.loadM3PEncItemsFromPromocionCombo(oM3Procesos, productosHijosDelCombo, combi.Accion.Codigo, valorCombo, 1);\r\n oM3RegService.armarListaObsequiosCombiSKU(combi, productoCombo, cantidadObsequios);\r\n oM3Procesos[\"oM3RegService\"] = oM3RegService;\r\n }\r\n }\r\n\r\n agregarProductoAProductosHijosSumTotal(productosHijosDelCombo: Array<M3PEncItems>, oM3Proceso: M3Procesos, productosRevisados) {\r\n let oM3RegService = new M3RegService(null, null, null);\r\n let prodHijo: M3PEncItems;\r\n\r\n for (let prodRevisado of productosRevisados) {\r\n if (prodRevisado) {\r\n let oM3PEncItems = oM3Proceso.M3ENC.find(x => x.ID == prodRevisado.Id);\r\n if (oM3PEncItems) {\r\n var oM3PDetalleItems: M3PDetalleItems// = new M3PDetalleItems();\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\");\r\n if (+oM3PDetalleItems.Valor > 0) {\r\n oM3PDetalleItems.Valor = (+oM3PDetalleItems.Valor - prodRevisado.Cantidad).toString();\r\n\r\n prodHijo = _.cloneDeep(oM3PEncItems)\r\n oM3RegService.ValoresCalculadosProceso(prodHijo, prodRevisado.Cantidad);\r\n productosHijosDelCombo.push(prodHijo);\r\n this.agregarAProductosQuitarCombi(oM3Proceso, prodHijo, prodRevisado.Cantidad);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n getProdutoPromoComboSumTotal(productosEnM3Proceso: Array<M3PEncItems>, oPrecioDelProductoActual): M3PEncItems {\r\n let oM3PEncItems = productosEnM3Proceso.find(x => x.ID == oPrecioDelProductoActual.ID)\r\n if (oM3PEncItems) {\r\n var oM3PDetalleItems: M3PDetalleItems// = new M3PDetalleItems();\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\");\r\n if (+oM3PDetalleItems.Valor > 0) {\r\n oM3PDetalleItems.Valor = (+oM3PDetalleItems.Valor - 1).toString();\r\n return _.cloneDeep(oM3PEncItems);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Lista de precios\r\n * @param lPrecios \r\n * @param oListEncab \r\n */\r\n public GetListaPrecios(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>) {\r\n var lPreciosFilter = new Array<any>();\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n lPrecios.filter(y => y.ID == oListEncab[i].ID).forEach(x => {\r\n lPreciosFilter.push(x);\r\n });\r\n\r\n }\r\n return lPreciosFilter;\r\n }\r\n\r\n /**\r\n * Promocion de combo, x productos, y productos, ... n productos \r\n * por $1000\r\n * @param lPrecios \r\n * @param oListEncab \r\n * @param combi \r\n * @param bEsAcumulable \r\n */\r\n public PromocionCombinadaCombo(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean, ioM3Proceso: M3Procesos): boolean {\r\n\r\n let flagAplicoPromo = false;\r\n try {\r\n var nNumeroCondiciones: number = +combi.Accion.NumCondiciones;\r\n var ValorPromo = +combi.Accion.Valor;\r\n var ListCondiciones = new Array<Array<any>>();\r\n var minimoItems: number = 0;\r\n let porcentajePromo = 0;\r\n let valorTotalSinPromo = 0;\r\n let productosHijosDelCombo = new Array<M3PEncItems>();\r\n let oM3RegService: M3RegService;\r\n\r\n\r\n for (var i = 1; i <= nNumeroCondiciones; i++) {\r\n //Buscar condicion 1.\r\n var ListPromoCombi: Array<M3PEncItems> = this.BuscarEncByPromoYCond(oListEncab, i.toString(), combi.IdPromocionCombinada.toString());\r\n ListCondiciones.push(this.GetListaPrecios(lPrecios, ListPromoCombi));\r\n }\r\n\r\n this.filtrarListaCondicionesCombo(ListCondiciones, oListEncab);\r\n if (ListCondiciones.length > 0) {\r\n //Buscar el valor menor de las items agregadas\r\n minimoItems = ListCondiciones[0].length;\r\n for (var j = 1; j < ListCondiciones.length; j++) {//Comienza desde 1 porque el 0 ya se valido en la anterior linea\r\n var itemsPrecios: Array<any> = ListCondiciones[j];\r\n var newMin = itemsPrecios.length;\r\n if (newMin < minimoItems) {\r\n minimoItems = newMin;\r\n }\r\n }\r\n //Los combos deben procesarse de a uno para su correcto funcionamiento\r\n if (minimoItems > 1) {\r\n minimoItems = 1;\r\n }\r\n\r\n //Recorre todos los precios de los productos de la promo para saber cual es el valor roal de la promo\r\n for (var k = 0; k < ListCondiciones.length; k++) {\r\n var condi = ListCondiciones[k];\r\n for (var l = 0; l < minimoItems; l++) {\r\n var enc: any = condi[l];\r\n valorTotalSinPromo += +lPrecios.find(x => x.ID == enc.ID && x.Indice == enc.Indice).PUNITNETO;\r\n }\r\n }\r\n\r\n //Calcula el valor del porcentaje de la promo a partir del calor del combo y de la suma de los precios originales de los productos\r\n porcentajePromo = 100 - (+ValorPromo * 100 / valorTotalSinPromo);\r\n\r\n for (var k = 0; k < ListCondiciones.length; k++) {\r\n var condi = ListCondiciones[k];\r\n for (var l = 0; l < minimoItems; l++) {\r\n var enc: any = condi[l];\r\n lPrecios.filter(x => x.ID == enc.ID).forEach(precio => {\r\n if (precio.Indice == enc.Indice) {\r\n if (!precio.PromoAplicada) {\r\n let valor = precio.PUNITNETO;\r\n\r\n //Modifica el precio de los productos a su nuevo valor con la promocion aplicada\r\n precio.PUNITNETO = valor - (valor * porcentajePromo / 100);\r\n precio.PromoAplicada = true;\r\n }\r\n this.agregarProductoAProductosHijos(productosHijosDelCombo, ioM3Proceso, precio);\r\n }\r\n else {\r\n //En las promos por combo no aplican el precio de los otros productos que no hacen parte del combo :)\r\n precio.PUNITNETO = 0;\r\n }\r\n });\r\n //lPrecios.find(x => x.ID == enc.ID && x.Indice == enc.Indice).PUNITNETO = -1;\r\n flagAplicoPromo = true;\r\n }\r\n }\r\n\r\n if (flagAplicoPromo) {\r\n oM3RegService = new M3RegService(null, null, null);\r\n //let productoPromoCombiExistente = ioM3Proceso.M3ENC.find(x => x.IdProducto == combi.Accion.Codigo);\r\n // if (!productoPromoCombiExistente) {\r\n this.CalculateTotalPriceFromList(lPrecios, productosHijosDelCombo, combi, true, bEsAcumulable);\r\n // }\r\n // else {\r\n // this.CalculateTotalPriceFromList(lPrecios, productosHijosDelCombo, combi, true, bEsAcumulable);\r\n // }\r\n oM3RegService.loadM3PEncItemsFromPromocionCombo(ioM3Proceso, productosHijosDelCombo, combi.Accion.Codigo, combi.Accion.Valor, 1);\r\n }\r\n\r\n }\r\n this.limpiarEncItemPrdCondi(oListEncab);\r\n\r\n } catch (ex) {\r\n console.log(\"PromocionCombinadaCombo\")\r\n console.log(ex)\r\n }\r\n return flagAplicoPromo;\r\n\r\n }\r\n\r\n filtrarListaCondicionesCombo(listCondiciones: Array<any>, oM3PEncItemsList: Array<M3PEncItems>) {\r\n for (let _i = 0; _i < listCondiciones.length; _i++) {\r\n let nuevaCondicion = [];\r\n for (const condicion of listCondiciones[_i]) {\r\n let encItem = oM3PEncItemsList.find(x => x.ID == condicion.ID);\r\n if (encItem) {\r\n let detCantidad = encItem.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor;\r\n encItem[\"PrdCondi\"] = encItem[\"PrdCondi\"] ? encItem[\"PrdCondi\"] : 0;\r\n if (detCantidad > encItem[\"PrdCondi\"]) {\r\n nuevaCondicion = [condicion];\r\n encItem[\"PrdCondi\"]++;\r\n break;\r\n }\r\n }\r\n }\r\n listCondiciones[_i] = nuevaCondicion;\r\n }\r\n }\r\n\r\n limpiarEncItemPrdCondi(oM3PEncItemsList: Array<M3PEncItems>) {\r\n oM3PEncItemsList.forEach(element => {\r\n delete element[\"PrdCondi\"];\r\n });\r\n }\r\n\r\n agregarAProductosQuitarCombi(oM3Proceso: M3Procesos, oM3PEncItems: M3PEncItems, cantidad = 1) {\r\n let productoQuitar;\r\n if (!oM3Proceso[\"ProductosCombi\"]) {\r\n oM3Proceso[\"ProductosCombi\"] = [];\r\n }\r\n\r\n productoQuitar = oM3Proceso[\"ProductosCombi\"].find(x => x.ID == oM3PEncItems.IdProducto);\r\n if (productoQuitar) {\r\n productoQuitar.Cantidad += (-1 * cantidad);\r\n }\r\n else {\r\n oM3Proceso[\"ProductosCombi\"].push({ ID: oM3PEncItems.IdProducto, Cantidad: (-1 * cantidad) })\r\n }\r\n }\r\n\r\n //Agrega el producto de la lista de entrada a un arreglo de productos que posteriormente sera los productos hijos del producto Combo\r\n agregarProductoAProductosHijos(productosHijosDelCombo: Array<M3PEncItems>, oM3Proceso: M3Procesos, oPrecioDelProductoActual) {\r\n let oM3PEncItems = this.getProdutoPromoCombo(oM3Proceso.M3ENC, oPrecioDelProductoActual);\r\n if (oM3PEncItems) {\r\n let oM3RegService = new M3RegService(null, null, null);\r\n //La cantidad disminuye pero este movimiento se reversa al terminar de validar esta promo\r\n oM3RegService.ValoresCalculadosProceso(oM3PEncItems, 1);\r\n productosHijosDelCombo.push(oM3PEncItems);\r\n this.agregarAProductosQuitarCombi(oM3Proceso, oM3PEncItems);\r\n }\r\n\r\n }\r\n\r\n //Disminuye en uno la cantidad del producto y retorna un clon de este\r\n getProdutoPromoCombo(productosEnM3Proceso: Array<M3PEncItems>, oPrecioDelProductoActual): M3PEncItems {\r\n let productosDelCombo = new Array<M3PEncItems>();\r\n let oM3PEncItems = productosEnM3Proceso.find(x => x.ID == oPrecioDelProductoActual.ID)\r\n if (oM3PEncItems) {\r\n var oM3PDetalleItems: M3PDetalleItems// = new M3PDetalleItems();\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\");\r\n if (+oM3PDetalleItems.Valor > 0) {\r\n oM3PDetalleItems.Valor = (+oM3PDetalleItems.Valor - 1).toString();\r\n return _.cloneDeep(oM3PEncItems);\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n /**\r\n * Agregar en hashmap de precios\r\n * @param hmlPrecios \r\n * @param ID \r\n */\r\n public AddtoHmPrecios(hmlPrecios: Array<any>, ID: string) {\r\n var finded: any = hmlPrecios.find(x => x.ID == ID);\r\n if (finded) {\r\n finded.Indice = +finded.Indice + +1;\r\n } else {\r\n finded = { \"ID\": ID, \"Indice\": 0 };\r\n hmlPrecios.push(finded);\r\n }\r\n return finded.Indice;\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Buscar encabezados que tenga la promocion y condicion enviada como parametro\r\n * @param oListEncab \r\n * @param IdCondicion \r\n * @param idPromociones \r\n */\r\n public BuscarEncByPromoYCond(oListEncab: Array<M3PEncItems>, IdCondicion: string, idPromociones: string) {\r\n var oEncFinded = new Array<M3PEncItems>();\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n try {\r\n var oM3PEncItems: M3PEncItems = oListEncab[i];\r\n console.debug(oM3PEncItems.IdEncPadre)\r\n if (!oM3PEncItems.IdEncPadre || !(oM3PEncItems.IdEncPadre > 0)) {\r\n var det = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"PROMOCOMBI\");\r\n var detCantidad = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\");\r\n if (det && detCantidad && +detCantidad.Valor > 0) {\r\n var promos: Array<any> = JSON.parse(det.Valor);\r\n var promoFinded = promos.find(x => x.IdPromocionCombinada == idPromociones)\r\n if (promoFinded) {\r\n var condicionFinded = promoFinded.Accion.IdCondicion;\r\n if (condicionFinded) {\r\n if (condicionFinded.length) {\r\n if (condicionFinded.find(x => x == IdCondicion)) {\r\n oEncFinded.push(oM3PEncItems);\r\n }\r\n }\r\n else {\r\n if (condicionFinded == IdCondicion) {\r\n oEncFinded.push(oM3PEncItems);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n } catch { }\r\n }\r\n return oEncFinded;\r\n }\r\n\r\n\r\n /**\r\n * Validación si la promoción que llega como parametro, es acumulable o no\r\n * @param promocion \r\n */\r\n public GetEsAcumulablePromo(promocion: PromocionCombinada) {\r\n try {\r\n if (promocion.Accion.Regla && promocion.Accion.Regla == \"ACM\") {\r\n return true;\r\n }\r\n } catch (ex) {\r\n console.log(\"Error GetEsAcumulable\")\r\n console.log(ex)\r\n }\r\n\r\n\r\n return false;\r\n }\r\n\r\n public procesarProductoAplDesc(oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, ioM3Proceso: M3Procesos, esAcumulable: boolean) {\r\n let lPrecios = new Array<any>();\r\n let prodsAplDescuento: Array<M3PEncItems> = [];\r\n let skuAplDescuentos: Array<any> = combi.Accion.skuAplDesc; //[{SKU:\"XXXXXX\"}, {SKU:\"YYYYYYY\"}]\r\n let maxNumDescuentos = +combi.Accion.maxNumDesc;\r\n let contDescAplicados = 0;\r\n\r\n try {\r\n //Calcula el numero maximo de descinetos que puede aplicar la promo que es combi.Accion.maxNumDesc multiplicado por la cantidad de productos que palican la promo en el proceso\r\n maxNumDescuentos = oListEncab.reduce((acc, cur) => {\r\n return acc + +cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n }, 0) * maxNumDescuentos;\r\n\r\n //De los productos del proceso filtro los productos que aplicaran el descuento segun los SKU configurados en combi.Accion.skuAplDesc\r\n ioM3Proceso.M3ENC.forEach(oM3PEncItems => {\r\n if (skuAplDescuentos.find(x => x.SKU == oM3PEncItems.IdProducto)) {\r\n prodsAplDescuento.push(oM3PEncItems);\r\n }\r\n });\r\n\r\n //Cálculo de los precios unitarios de los productos a los que la promo aplicara descuento\r\n lPrecios = this.ProcesarPromoCombyByListEnc(prodsAplDescuento, esAcumulable);\r\n\r\n //Aplica tantos descuentos se puedan a plaicar a cada valor de lPrecio\r\n while (contDescAplicados < maxNumDescuentos && contDescAplicados < lPrecios.length) {\r\n lPrecios[contDescAplicados].PUNITNETO -= (+lPrecios[contDescAplicados].PUNITNETO) * ((+combi.Accion.Valor) / 100);\r\n contDescAplicados++;\r\n }\r\n\r\n //Recalcula los valores del producto aplicando el descuento\r\n this.CalculateTotalPriceFromList(lPrecios, prodsAplDescuento, combi, true, esAcumulable);\r\n }\r\n catch (error) {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Procesamiento de obsequios en el cierre\r\n * Valida toda la lista de encabezados, teniendo en cuenta la cantidad ingresada en el carrito de compras\r\n * Valida la promoción, por cada cuantos productos ingresados, cuántos obsequios se pueden dar.\r\n * Trae todos los obsequios que se ingresaron en el carrito de compras, los lista\r\n * coloca en valor 0 los obsequios que selecciono automaticamente el algoritmo\r\n * Recalculo de precios, impuestos y demas valores totales.\r\n * @param oListEncab Lista de los productos ingresados al carrito que tienen obsequio\r\n * @param combi Información de promoción de obsequios\r\n * @param ioM3Proceso Proceso con todos los productos e información.\r\n */\r\n public ProcesarPromoObsqCierre(oListEncab: Array<any>, combi: PromocionCombinada, ioM3Proceso: M3Procesos, esAcumulable: boolean) {\r\n ioM3Proceso['ProductosCombi'] = [];\r\n let cantPorObs = +combi.Accion.CantidadObsq; //Por cada cuantos productos con la promoción se dará el obsequio.\r\n let cantAgregada = 0;\r\n let sumaValorProductos = 0;\r\n let cantidadObsequios = 0;\r\n let valorCombo = 0;\r\n let productosRevisados = [];\r\n let productosHijosDelCombo: Array<M3PEncItems> = [];\r\n let m3RegService = new M3RegService(null, null, null);\r\n m3RegService.obsequiosExc = true;\r\n m3RegService.oListaObsequios = combi.Accion.OBSEQUIOS;\r\n m3RegService.obsequiosCantidad = 0\r\n // var cantObsequios: number = 0; //Cantidad de obsequios que se dará por esta compra.\r\n\r\n\r\n for (const producto of oListEncab) {\r\n sumaValorProductos += producto.PUNITNETO;\r\n cantAgregada++;\r\n let productoRevisado = productosRevisados.find(x => x.Id == producto.ID);\r\n if (productoRevisado) {\r\n productoRevisado.Cantidad++;\r\n }\r\n else {\r\n productosRevisados.push({ Id: producto.ID, Cantidad: 1 });\r\n }\r\n\r\n if (cantAgregada === cantPorObs) {\r\n valorCombo += sumaValorProductos;\r\n this.agregarProductoAProductosHijosSumTotal(productosHijosDelCombo, ioM3Proceso, productosRevisados);\r\n cantidadObsequios++;\r\n productosRevisados = [];\r\n cantAgregada = 0;\r\n }\r\n }\r\n if (!combi.Accion.Codigo) console.error('El código del combo no esta configurado en M3DETCONDIPROMO')\r\n if (productosHijosDelCombo.length > 0 && combi.Accion.Codigo) {\r\n let productoCombo = m3RegService.loadM3PEncItemsFromPromocionCombo(ioM3Proceso, productosHijosDelCombo, combi.Accion.Codigo, valorCombo, 1);\r\n m3RegService.armarListaObsequiosCombiSKU(combi, productoCombo, cantidadObsequios);\r\n ioM3Proceso[\"oM3RegService\"] = m3RegService;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Aplicar reglas, respecto a la cantidad ingresada.\r\n * @param oPromocionesAsociadas \r\n * @param oPromocionProcesada \r\n */\r\n public AplicarReglaModCantidad(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean) {\r\n var Accion = combi.Accion;\r\n\r\n var iCantidadPromo: number = Accion.Cantidad; //Ejemplo : 3\r\n //var iCantidadAPLPromo: number; //Numero real de aplicacion de promociones, Si aplica resta el residuo.\r\n var iCantidadReal: number; //Cantidad real ingresada.\r\n var ValorPromo: number = Accion.Valor;\r\n var valorPromoUnit: number = (+ValorPromo) / (+iCantidadPromo)\r\n iCantidadReal = lPrecios.length;\r\n\r\n if (iCantidadReal >= iCantidadPromo) { //JAGM 20190426 SE CAMBIA, ANTES ESTABA LA FUNCIONALIDAD DE CANTIDAD REAL VS CANTIDAD PROMOCION.\r\n if (iCantidadReal % iCantidadPromo == 0) {\r\n //iCantidadAPLPromo = iCantidadReal / iCantidadPromo;\r\n } else {\r\n var Residuo: number = iCantidadReal % iCantidadPromo;\r\n iCantidadReal = iCantidadReal - Residuo;\r\n //iCantidadAPLPromo = iCantidadReal / iCantidadPromo;\r\n }\r\n\r\n for (var i = 0; i < iCantidadReal; i++) {\r\n if (lPrecios[i].PUNITNETO > valorPromoUnit) {\r\n lPrecios[i].PUNITNETO = valorPromoUnit;\r\n lPrecios[i].Aplicado = true;\r\n }\r\n }\r\n if (lPrecios.find(x => x.Aplicado)) {\r\n console.debug(\"AplicarReglaModCantidad\")\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, true, bEsAcumulable);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Cargar combinadas desde dinamicas\r\n * @param ioM3Proceso \r\n */\r\n public GetCombinadasFromDinamicas(ioM3Proceso: M3Procesos) {\r\n try {\r\n var sCombinada = ioM3Proceso.lM3PDinamicas.find(x => x.Nombre == \"COMBINADA\").Valor;\r\n var oCombinada = JSON.parse(sCombinada);\r\n\r\n ioM3Proceso.PromosCombinadas = oCombinada;\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar a dinamicas proceso de combinadas\r\n * @param ioM3Proceso \r\n */\r\n public AddDinamicaProcesoCombinadas(ioM3Proceso: M3Procesos) {\r\n var oM3PDinamicasFinded: M3PDinamicas;\r\n oM3PDinamicasFinded = ioM3Proceso.lM3PDinamicas.find(x => x.Nombre == \"COMBINADA\");\r\n if (oM3PDinamicasFinded) {\r\n var arrPromo: Array<PromocionCombinada> = JSON.parse(oM3PDinamicasFinded.Valor);\r\n for (var i = 0; i < arrPromo.length; i++) {\r\n var oPromoCombi: PromocionCombinada = ioM3Proceso.PromosCombinadas.find(x => x.IdPromocionCombinada == arrPromo[i].IdPromocionCombinada);\r\n if (!oPromoCombi) {\r\n ioM3Proceso.PromosCombinadas.push(arrPromo[i]);\r\n }\r\n }\r\n oM3PDinamicasFinded.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n } else {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas.Nombre = \"COMBINADA\";\r\n oM3PDinamicas.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n\r\n ioM3Proceso.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Calcular promociones, segun la lista de precios dividida.\r\n * @param lPrecios Lista de precios, contra este objeto se iterará y se ordenará de mayor a menor\r\n * @param oListEncab \r\n * @param combi \r\n */\r\n public CalcularPromocionesByListaPrec(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bEsAcumulable: boolean) {\r\n var TipoPromo = combi.Tipo2;\r\n var ix: number = 0;\r\n var iy: number = 0;\r\n var x: number = +TipoPromo.split(\"X\")[1]\r\n var y: number = +TipoPromo.split(\"X\")[0] - (+x);\r\n var residuoX: number = 0;\r\n var bEntro: boolean = false;\r\n\r\n if (x.toString().split(\".\").length > 1) {\r\n residuoX = +x.toString().split(\".\")[1];\r\n x = +x.toString().split(\".\")[0];\r\n }\r\n\r\n ///Se itera el arreglo de principio a fin y de fin a principio... \r\n ///Conforme se recorre el arreglo de fin a prinicio, se va dando la promoción a los productos de menor valor.\r\n ///Si la promoción esta incompleta, los productos de la mitad quedan sin promoción \r\n var i: number = 0;\r\n lPrecios = lPrecios.sort((a, b) => a.PUNITNETO < b.PUNITNETO ? 1 : a.PUNITNETO > b.PUNITNETO ? -1 : 0)\r\n if (lPrecios.length > 0) {\r\n var j = +lPrecios.length - 1;\r\n while (i < lPrecios.length && j >= i) {\r\n\r\n ix = 0;\r\n iy = 0;\r\n\r\n while (ix < x) {\r\n\r\n ix++;\r\n i++;\r\n }\r\n while (iy < y && j >= i) {\r\n\r\n if (residuoX == 0) {\r\n bEntro = true;\r\n lPrecios[j].PUNITNETO = 0.01;\r\n } else {\r\n bEntro = true;\r\n ///Para las promocion como: 2X1.5, ...\r\n //Esta soportando solo para: 2X1.5\r\n lPrecios[j].PUNITNETO = +lPrecios[j].PUNITNETO * (+residuoX / 10);\r\n }\r\n iy++;\r\n j--;\r\n }\r\n\r\n }\r\n //Calcular precios totales\r\n //Teniendo en cuenta la informacion de los precios unitarios.\r\n //JGAM 20191023, funcionalidad de que solo entra acá cuando se cambio algun precio\r\n if (bEntro) {\r\n this.CalculateTotalPriceFromList(lPrecios, oListEncab, combi, false, bEsAcumulable);\r\n }\r\n\r\n\r\n // for (var i = 0; i < oListEncab.length; i++) {\r\n // var enc: M3PEncItems = oListEncab[i];\r\n // enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor = lPrecios.filter(x => x.ID == enc.ID).\r\n // reduce((acc, cur) => (+acc) + (+cur.PUNITNETO), 0);\r\n\r\n // this.SetValorPromociones(enc);\r\n // this.AgregarListaPromo(enc, combi);\r\n // }\r\n }\r\n }\r\n /**\r\n * Calcular precio total teniendo en cuenta la lista de precios\r\n * @param lPrecios Lista de precios a tener en cuenta\r\n * @param oListEncab Lista de encabezados\r\n * @param combi Promocion combinada\r\n */\r\n public CalculateTotalPriceFromList(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada, bAplValida: boolean, bEsAcumulable: boolean) {\r\n //Calcular precios totales\r\n //Teniendo en cuenta la informacion de los precios unitarios.\r\n var dValorPromoAnt: number = 0;\r\n //var dValorPromoAntAcum: number = 0;\r\n var dValorAct: number = 0;\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n var enc: M3PEncItems = oListEncab[i];\r\n var dPrecioNuevo = lPrecios.filter(x => x.ID == enc.ID).\r\n reduce((acc, cur) => (+acc) + (+cur.PUNITNETO), 0);\r\n var precioTotalAnterior;\r\n precioTotalAnterior = enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n\r\n //JAGM 20190718 SE QUITA VALIDACION, POR FLUJO QUE SI SE DEVUELVE TRAE LA PROMO, PERO SI SE BORRA. if (dPrecioNuevo < precioTotalAnterior) { // Se agrega validacion de precio, para escoger el mejor. No pueden a ver 2 promociones.\r\n enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor = dPrecioNuevo;\r\n //enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALREAL\").Valor = dPrecioNuevo;\r\n //Limpiar promociones\r\n if ((this.ValidarSiTodosAPLPromoCombinada(lPrecios, enc) || !bAplValida) && !bEsAcumulable) {\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PROMOC\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PROMOC\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PRO_COMBI\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PRO_COMBI\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"VAL_PRO_COMBI\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"VAL_PRO_COMBI\").Valor = \"\"\r\n }\r\n if (enc.M3DET.find(det => det.NombreConcepto == \"ID_PRO_COMBI\")) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"ID_PRO_COMBI\").Valor = \"\"\r\n }\r\n this.QuitarLasPromosDirectas(enc);\r\n this.QuitarLasPromosCombinadas(enc);\r\n // enc.M3DET.find(det => det.NombreConcepto == \"NOMB_PROMOC\").Valor = \"\";\r\n // enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\").Valor = \"\";\r\n dValorAct = ((+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor) - (+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor))\r\n } else {\r\n dValorPromoAnt = this.GetValorPromoAnterior(lPrecios, enc);\r\n dValorAct = this.GetValorPromoACt(enc, dValorPromoAnt, dPrecioNuevo, precioTotalAnterior, bEsAcumulable);\r\n //JAGM 20190730 se agrega para promociones acumulables. acumulab\r\n if (!bEsAcumulable) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"VAL_PROMOC\").Valor = dValorPromoAnt.toString();\r\n } else {\r\n //Es acumulable, utilizar la información \r\n dValorPromoAnt = (+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor - precioTotalAnterior)\r\n }\r\n\r\n }\r\n this.SetValorPromociones(enc, dValorAct + dValorPromoAnt);\r\n this.AgregarListaPromo(enc, combi, dValorAct);\r\n this.RecalcularPrecioUnitFromTotal(enc, dPrecioNuevo);\r\n //}\r\n }\r\n }\r\n\r\n\r\n public QuitarLasPromosDirectas(enc: M3PEncItems) {\r\n try {\r\n enc.M3DET.filter(x => x.NombreConcepto.toUpperCase().startsWith(\"VAL_PROMOC_\")).forEach(det => {\r\n det.Valor = \"0\";\r\n });\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n public QuitarLasPromosCombinadas(enc: M3PEncItems) {\r\n try {\r\n enc.M3DET.filter(x => x.NombreConcepto.toUpperCase().startsWith(\"VAL_PRO_COMBI_\")).forEach(det => {\r\n det.Valor = \"0\";\r\n });\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Recalcular precio unitario, a partir de un nuevo precio Total.\r\n * @param enc \r\n * @param newPrice \r\n */\r\n public RecalcularPrecioUnitFromTotal(enc: M3PEncItems, newPrice: number) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = (+newPrice / +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor).toString();\r\n }\r\n\r\n\r\n /**\r\n * Valida si todos los precios de un producto se cambiaron o no.\r\n * @param lPrecios Lista con todos los items\r\n * @param enc \r\n */\r\n public ValidarSiTodosAPLPromoCombinada(lPrecios: Array<any>, enc: M3PEncItems) {\r\n //Check, si alguno de la lista de precio es igual al precio anterior\r\n var precioAnterior = lPrecios.filter(x => x.ID == enc.ID).find(x => x.PUNITNETO == enc.M3DET.find(x => x.NombreConcepto == \"PUNITNETO\").Valor);\r\n if (precioAnterior) {\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valores de promociones dependiendo del numero de items que no se modificaron\r\n * @param lPrecios \r\n * @param enc \r\n */\r\n public GetValorPromoAnterior(lPrecios: Array<any>, enc: M3PEncItems) {\r\n try {\r\n var dValor = enc.M3DET.find(x => x.NombreConcepto == \"PUNITNETO\").Valor;\r\n var numeroItems = lPrecios.filter(x => x.ID == enc.ID && x.PUNITNETO == dValor).length;\r\n var dUnitPromo = enc.M3DET.find(x => x.NombreConcepto == \"VUNITPROMO\").Valor;\r\n return +numeroItems * +dUnitPromo;\r\n } catch {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valor de la promocion que se esta procesando actualmente\r\n * @param enc \r\n * @param valorPromoAnt \r\n * @param valotTotalNuevo \r\n */\r\n public GetValorPromoACt(enc: M3PEncItems, valorPromoAnt: number, valotTotalNuevo: number, precioTotalAnt: number, bEsAcumulable: boolean) {\r\n try {\r\n var valorTotalSinDto: number;\r\n var valorPromoAct: number;\r\n //JAGM 20190730 si viene acumulable utilizar el precio anterior, teniendo en cuenta el dto.\r\n if (bEsAcumulable) {\r\n valorTotalSinDto = precioTotalAnt;\r\n valorPromoAct = +valorTotalSinDto - +valotTotalNuevo;\r\n } else {\r\n valorTotalSinDto = +enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor;\r\n valorPromoAct = +valorTotalSinDto - +valorPromoAnt - +valotTotalNuevo;\r\n }\r\n\r\n\r\n return valorPromoAct;\r\n } catch (ex) {\r\n console.log(\"Error GetValorPromoACt: \");\r\n console.log(ex);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n\r\n\r\n\r\n /**\r\n * Setear el valor de la promocion\r\n * @param enc Encabezado de items\r\n */\r\n public SetValorPromociones(enc: M3PEncItems, valorPromo: number) {\r\n try {\r\n //enc.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor = ((+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALSINDTO\").Valor) - (+enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor)).toString();\r\n //FS 20190725 Redondeo del valor de promocion\r\n enc.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor = (Math.round(valorPromo * 100) / 100).toString();\r\n //JAGM 20190618 Se agrega el valor unitario de la promoción\r\n enc.M3DET.find(det => det.NombreConcepto == \"VUNITPROMO\").Valor = (+(Math.round(valorPromo * 100) / 100) / +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor).toString();\r\n } catch {\r\n }\r\n }\r\n\r\n\r\n // /**\r\n // * Setear el valor de la promocion\r\n // * @param enc Encabezado de items\r\n // */\r\n // public SetValorPromocionesFromListaPrecios(enc: M3PEncItems, lPrecios: Array<any>) {\r\n // try {\r\n // enc.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor = lPrecios.filter(x => x.ID == enc.ID && x.PUNITNETO == dValor)\r\n // } catch{\r\n // }\r\n // }\r\n\r\n\r\n // public CalcularPromocionesByListaPrecBeta(lPrecios: Array<any>, oListEncab: Array<M3PEncItems>, combi: PromocionCombinada) {\r\n // if (lPrecios.length > 0) {\r\n // var TipoPromo = combi.Tipo2;\r\n // var iSizePrec: number = lPrecios.length;\r\n // var iMitad: number;\r\n\r\n // var residuoX: number = 0;\r\n // var x: number = +TipoPromo.split(\"X\")[1]\r\n // var y: number = +TipoPromo.split(\"X\")[0] - (+x);\r\n // var iDto: number;\r\n\r\n // if (x.toString().split(\".\").length > 1) {\r\n // residuoX = +x.toString().split(\".\")[1];\r\n // }\r\n\r\n // iMitad = (+y) / (+iSizePrec);\r\n // iMitad = Math.ceil((+iMitad) * (+x)) - 1;\r\n\r\n // lPrecios = lPrecios.sort((a, b) => a.PUNITNETO < b.PUNITNETO ? 1 : a.PUNITNETO > b.PUNITNETO ? -1 : 0)\r\n\r\n // var iX = 0;\r\n // if (lPrecios.length > 0) {\r\n // iDto = iMitad;\r\n // while (iDto < iSizePrec) {\r\n // if (residuoX == 0) {\r\n // lPrecios[iDto].PUNITNETO = 0;\r\n // iDto++;\r\n // } else {\r\n // ///Para las promocion como: 2X1.5, ...\r\n // //Esta soportando solo para: 2X1.5\r\n // lPrecios[iDto].PUNITNETO = +lPrecios[iDto].PUNITNETO * (+residuoX / 10);\r\n // // while(iX < x){\r\n // // lPrecios[iDto].PUNITNETO = +lPrecios[iDto].PUNITNETO * (+residuoX / 10);\r\n // // iX++;\r\n // // iDto++;\r\n // // }\r\n // // iX = 0;\r\n\r\n // }\r\n\r\n // }\r\n\r\n // //Calcular precios totales\r\n // //Teniendo en cuenta la informacion de los precios unitarios.\r\n // for (var i = 0; i < oListEncab.length; i++) {\r\n // var enc: M3PEncItems = oListEncab[i];\r\n // enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor = lPrecios.filter(x => x.ID == enc.ID).\r\n // reduce((acc, cur) => (+acc) + (+cur.PUNITNETO), 0);\r\n // }\r\n // }\r\n // }\r\n // }\r\n\r\n /**\r\n * Adicionar a lista de detalle el: NOMB_PROMOC, VAL_PROMOC y ID_PROMOC\r\n * @param enc \r\n * @param combi \r\n */\r\n public AgregarListaPromo(enc: M3PEncItems, combi: PromocionCombinada, dValorPromoCombi: number) {\r\n var detNombres: string;\r\n var detValores: string;\r\n var detIds: string;\r\n\r\n var oM3PDetalleItemsNames: M3PDetalleItems// = new M3PDetalleItems();\r\n var oM3PDetalleItemsVals: M3PDetalleItems// = new M3PDetalleItems();\r\n var oM3PDetalleItemsIds: M3PDetalleItems// = new M3PDetalleItems();\r\n\r\n\r\n oM3PDetalleItemsNames = enc.M3DET.find(d => d.NombreConcepto == \"NOMB_PRO_COMBI\");\r\n oM3PDetalleItemsVals = enc.M3DET.find(d => d.NombreConcepto == \"VAL_PRO_COMBI\");\r\n oM3PDetalleItemsIds = enc.M3DET.find(d => d.NombreConcepto == \"ID_PRO_COMBI\");\r\n\r\n if (oM3PDetalleItemsNames) {\r\n\r\n } else {\r\n oM3PDetalleItemsNames = new M3PDetalleItems();\r\n oM3PDetalleItemsVals = new M3PDetalleItems();\r\n oM3PDetalleItemsIds = new M3PDetalleItems();\r\n oM3PDetalleItemsNames.NombreConcepto = \"NOMB_PRO_COMBI\"\r\n oM3PDetalleItemsVals.NombreConcepto = \"VAL_PRO_COMBI\"\r\n oM3PDetalleItemsIds.NombreConcepto = \"ID_PRO_COMBI\"\r\n\r\n oM3PDetalleItemsNames.Valor = \"\"\r\n oM3PDetalleItemsVals.Valor = \"\"\r\n oM3PDetalleItemsIds.Valor = \"\"\r\n\r\n enc.M3DET.push(oM3PDetalleItemsNames)\r\n enc.M3DET.push(oM3PDetalleItemsVals)\r\n enc.M3DET.push(oM3PDetalleItemsIds)\r\n\r\n }\r\n\r\n\r\n oM3PDetalleItemsNames.Valor = oM3PDetalleItemsNames.Valor + combi.Nombre + \",\";\r\n oM3PDetalleItemsIds.Valor = oM3PDetalleItemsIds.Valor + combi.IdPromocionCombinada + \",\";\r\n oM3PDetalleItemsVals.Valor = oM3PDetalleItemsVals.Valor + dValorPromoCombi.toString() + \",\";\r\n\r\n //Ahora se agrega una dinamica por atributo de la promo para facilitar la retoma de esta información\r\n let listNombre = oM3PDetalleItemsNames.Valor.replace(/.$/, \"\").split(\",\");\r\n let listId = oM3PDetalleItemsIds.Valor.replace(/.$/, \"\").split(\",\");\r\n let listValor = oM3PDetalleItemsVals.Valor.replace(/.$/, \"\").split(\",\");\r\n\r\n for (let _i = 0; _i < listId.length; _i++) {\r\n this.actualizarOCrearPDinamica(enc.M3DET, listNombre[_i], \"NOMB_PRO_COMBI_\" + _i);\r\n this.actualizarOCrearPDinamica(enc.M3DET, listNombre[_i], \"ID_PRO_COMBI_\" + _i);\r\n this.actualizarOCrearPDinamica(enc.M3DET, listNombre[_i], \"VAL_PRO_COMBI_\" + _i);\r\n }\r\n }\r\n\r\n actualizarOCrearPDinamica(arrayDinamicas: Array<M3PDetalleItems>, nombreDinamica: string, ValorDinamica: string) {\r\n let oM3PDetalleItems = arrayDinamicas.find(x => x.NombreConcepto == nombreDinamica);\r\n if (oM3PDetalleItems) {\r\n oM3PDetalleItems.Valor = ValorDinamica;\r\n }\r\n else {\r\n oM3PDetalleItems = new M3PDetalleItems();\r\n oM3PDetalleItems.NombreConcepto = nombreDinamica;\r\n oM3PDetalleItems.Valor = ValorDinamica;\r\n arrayDinamicas.push(oM3PDetalleItems);\r\n }\r\n }\r\n\r\n /**\r\n * Obtener la lista de encabezados, que aplican a la lista combinada que tiene\r\n * @param oPromocionCombinada Objeto de promocion combianda\r\n * @param ioM3Proceso Objeto de M3Proceso\r\n */\r\n private GetEncabezadoByCombi(oPromocionCombinada: PromocionCombinada, ioM3Proceso: M3Procesos) {\r\n try {\r\n var oListEncab: Array<M3PEncItems>;\r\n oListEncab = ioM3Proceso.M3ENC.filter(enc => {\r\n if (enc.PromoCombinadas === undefined) {\r\n this.SetPromoCombinadaENC(enc);\r\n }\r\n if (!(enc.IdEncPadre > 0)) {\r\n if (enc.PromoCombinadas && +enc.M3DET.find(d => d.NombreConcepto == \"CANTIDAD\").Valor > 0) {\r\n //JAGM 20191208 se cambia validacion, para que tenga en cuenta cualquier promocion combinada\r\n // return enc.PromoCombinadas.length > 0 && enc.PromoCombinadas[0].IdPromocionCombinada == oPromocionCombinada.IdPromocionCombinada\r\n return enc.PromoCombinadas.length > 0 && enc.PromoCombinadas.find(x => x.IdPromocionCombinada == oPromocionCombinada.IdPromocionCombinada);\r\n } else {\r\n return false;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n });\r\n return oListEncab;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n public SetPromoCombinadaENC(oM3PEncItems: M3PEncItems) {\r\n try {\r\n var oM3PDetalleItems: M3PDetalleItems;\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"PROMOCOMBI\")\r\n if (oM3PDetalleItems) {\r\n oM3PEncItems.PromoCombinadas = JSON.parse(oM3PDetalleItems.Valor);\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Crear lista de precios y id de encabezado, teniendo en cuenta la informacion lista de encabezados\r\n * @param oListEncab Lista de encabezados a procesar\r\n */\r\n private ProcesarPromoCombyByListEnc(oListEncab: Array<M3PEncItems>, bEsAcumulable: boolean) {\r\n ///DesAcoplar lista de encabezados a precios totales\r\n var lPrecios = new Array<any>();\r\n for (var i = 0; i < oListEncab.length; i++) {\r\n var enc: M3PEncItems = oListEncab[i];\r\n var nCantidad: number;\r\n var nPrecioUnit: number;\r\n nCantidad = +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n\r\n //JAGM 20190730 valida si la promocion es acumulable.\r\n if (bEsAcumulable) {\r\n nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor\r\n } else {\r\n nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNIT\").Valor\r\n }\r\n for (var j = 0; j < nCantidad; j++) {\r\n lPrecios.push({ \"Indice\": j, \"PUNITNETO\": nPrecioUnit, \"ID\": enc.ID });\r\n }\r\n }\r\n return lPrecios;\r\n\r\n }\r\n\r\n\r\n // /**\r\n // * Crear lista de precios y id de encabezado, teniendo en cuenta la informacion lista de encabezados\r\n // * @param oListEncab Lista de encabezados a procesar\r\n // */\r\n // private ProcesarPromoCombyByListEnc(oListEncab: Array<M3PEncItems>, bEsAcumulable: boolean) {\r\n // ///DesAcoplar lista de encabezados a precios totales\r\n // var lPrecios = new Array<any>();\r\n // for (var i = 0; i < oListEncab.length; i++) {\r\n // var enc: M3PEncItems = oListEncab[i];\r\n // var nCantidad: number;\r\n // var nPrecioUnit: number;\r\n // nCantidad = +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n\r\n // //JAGM 20190730 valida si la promocion es acumulable.\r\n // if (bEsAcumulable) {\r\n // nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor\r\n // } else {\r\n // nPrecioUnit = +enc.M3DET.find(det => det.NombreConcepto == \"PUNIT\").Valor\r\n // }\r\n // for (var j = 0; j < nCantidad; j++) {\r\n // lPrecios.push({ \"Indice\": j, \"PUNITNETO\": nPrecioUnit, \"ID\": enc.ID });\r\n // }\r\n // }\r\n // return lPrecios;\r\n\r\n // }\r\n ///////////////////////////////FIN V2 COMBINADA\r\n\r\n\r\n /**\r\n * ProcesarCombinadaXporY\r\n * Procesar promocion combinada que se llevan x productos por el precion de y productos.\r\n */\r\n public ProcesarCombinadaXporY(oM3Procesos: M3Procesos, m3EncAgregado: M3PEncItems) {\r\n var m3EncsConPromo: Array<M3PEncItems>;\r\n var m3CombinadaxProceso: M3PromCombinadaXProceso;\r\n\r\n //Valida si el producto agregado, tiene una misma promocion activa en la factura.\r\n // if (oM3Procesos.lM3PromCombinada != null && oM3Procesos.lM3PromCombinada.length > 0) {\r\n // m3CombinadaxProceso = oM3Procesos.lM3PromCombinada.find(combinadas => combinadas.IdPromocion == m3EncAgregado.PromoCombinadas[0].IdPromocionCombinada && combinadas.Terminada == false);\r\n // //Valida si ya existe un proceso.\r\n // if (m3CombinadaxProceso != null) {\r\n // m3EncAgregado.PromoCombinadas[0].IdPromocionXProceso = m3CombinadaxProceso.IdPromocionXProceso;\r\n // //Trae los Encabezados con la promocion \r\n // m3EncsConPromo = oM3Procesos.M3ENC.filter(encs => encs.PromoCombinadas != null && encs.PromoCombinadas.length > 0 && encs.PromoCombinadas[0].IdPromocionXProceso == m3CombinadaxProceso.IdPromocionXProceso);\r\n // this.RecalcularPromoXPorY(m3EncsConPromo, m3CombinadaxProceso);\r\n // } else {\r\n // this.AgregarPromocionCombinadaAProceso(oM3Procesos, m3EncAgregado.PromoCombinadas[0]);\r\n // }\r\n // } else {\r\n // oM3Procesos.lM3PromCombinada = new Array<M3PromCombinadaXProceso>();\r\n // this.AgregarPromocionCombinadaAProceso(oM3Procesos, m3EncAgregado.PromoCombinadas[0]);\r\n // }\r\n }\r\n\r\n\r\n //recalcular promocion, dependiendo de la informacion de los encabezados.\r\n //1.Validar si ya estan todos los items para recalcular la promocion\r\n //2. Ordenar los encabezados de mayor a menor precio.\r\n //3. Dejar el precio de los items de menor precion en 0\r\n // public RecalcularPromoXPorY(m3EncsConPromo: Array<M3PEncItems>, m3CombinadaxProceso: M3PromCombinadaXProceso) {\r\n // var oPromocionCombinada: PromocionCombinada;\r\n // var varx: number;\r\n // var vary: number;\r\n // var parteDecY: number = 0;\r\n // oPromocionCombinada = m3EncsConPromo[0].PromoCombinadas[0];\r\n\r\n // varx = parseFloat(oPromocionCombinada.Tipo2.trim().toUpperCase().split(\"_\")[1].split(\"X\")[0]);\r\n // vary = parseFloat(oPromocionCombinada.Tipo2.trim().toUpperCase().split(\"_\")[1].split(\"X\")[1]);\r\n\r\n // if (String(vary).includes(\".\")) {\r\n // parteDecY = parseFloat(oPromocionCombinada.Tipo2.trim().toUpperCase().split(\"_\")[1].split(\"X\")[1].split(\".\")[1]);\r\n // vary = parseFloat(String(vary).split(\".\")[0]);\r\n // }\r\n\r\n // if (varx == m3EncsConPromo.length) {\r\n // m3CombinadaxProceso.Terminada = true;\r\n // //Ordenar los encabezados por precio mayor a menor\r\n // m3EncsConPromo = m3EncsConPromo.sort((a, b) =>\r\n // (a.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor < b.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor) ? 1 :\r\n // ((b.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor < a.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor) ? -1 : 0));\r\n\r\n // for (let i = 0; i < m3EncsConPromo.length; i++) {\r\n // //Valida si ya \r\n // if (parteDecY != 0 && (+i) == (+vary)) {\r\n // console.log(parteDecY);\r\n // m3EncsConPromo[i].M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = ((+m3EncsConPromo[i].M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor) * (+(+parteDecY) / 100)).toString();\r\n // } else if ((+i) + 1 > vary) {\r\n // m3EncsConPromo[i].M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor = \"0\";\r\n // }\r\n // }\r\n // }\r\n\r\n\r\n\r\n // }\r\n\r\n //--------------------------> Fin Procesamiento Combinada <--------------------------------\r\n\r\n /**\r\n * Retorna el total de puntos de fidelizacion en la transacción redondeados hacÃa abajo\r\n * @param oM3Procesos \r\n */\r\n public get_total_fidelizacion(oM3Procesos: M3Procesos) {\r\n let total_fidelizacion = 0;\r\n if (oM3Procesos !== undefined && oM3Procesos.M3ENC !== undefined) {\r\n total_fidelizacion = oM3Procesos.M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"FIDELIZACION\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (((+cur.M3DET.find(det => det.NombreConcepto == \"FIDELIZACION\").Valor) / 100) * (+cur.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor)), 0)\r\n }\r\n //Se redondeara no aca sino en la suma total del fidelizacion de cada forma de pago\r\n return total_fidelizacion;\r\n }\r\n\r\n /**\r\n * Obtiene el valor del fidelizacion de un proceso, evaluando cada forma de pago\r\n * @param proceso \r\n * @param list_enc_promo \r\n */\r\n public get_value_fidelizacion_by_proceso(proceso: M3Procesos, list_enc_promo: Array<M3ENCPROMO>) {\r\n\r\n var pago_total_proceso: number = proceso.ValorNeto;\r\n //var max_value_fidelizacion: number = this.get_total_fidelizacion(proceso);\r\n var real_value_fidelizacion: number = 0;\r\n\r\n var list_condi_promo = this.get_list_condi_promo_by_actividad(list_enc_promo, \"PAGO\", \"MONEDERO\");\r\n\r\n if (proceso.lM3PEncFP) {\r\n for (var _i = 0; _i < proceso.lM3PEncFP.length; _i++) {\r\n var forma_pago: M3PEncFP = proceso.lM3PEncFP[_i];\r\n let promoAplicada: M3CONDIPROMO;\r\n let aplica_fidelizacion = this.validate_condi_by_forma_pago(forma_pago, list_condi_promo);\r\n\r\n if (aplica_fidelizacion.length > 0) {\r\n let valorPago = forma_pago.Valor - forma_pago.ValCambio;\r\n real_value_fidelizacion += this.calculate_fidelizacion_by_forma_pago(pago_total_proceso, proceso.M3ENC, valorPago, aplica_fidelizacion, list_enc_promo);\r\n }\r\n }\r\n }\r\n\r\n // if (real_value_fidelizacion > max_value_fidelizacion) {\r\n // real_value_fidelizacion = max_value_fidelizacion;\r\n // }\r\n real_value_fidelizacion = this.oMathTF.round(real_value_fidelizacion, 2);\r\n return real_value_fidelizacion;\r\n }\r\n\r\n /**\r\n * Retorna las restricciones Activas de tipo de pago a partir de Array<M3CONDIPROMO>\r\n * @param listCondiPromoTPRestringido .\r\n * @param listM3EncItem \r\n */\r\n public getRestriccionesTipoPagoActivas(listCondiPromoTPRestringido: Array<M3CONDIPROMO>, listM3EncItem: Array<M3PEncItems>): Array<M3CONDIPROMO> {\r\n let restriccionesActivas = new Array<M3CONDIPROMO>();\r\n if (listCondiPromoTPRestringido.length > 0) {\r\n for (let _i = 0; _i < listM3EncItem.length; _i++) {\r\n let listM3Det = listM3EncItem[_i].M3DET;\r\n if (+listM3EncItem[_i].M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor > 0) {\r\n let idPromociones = listM3Det.find(x => x.NombreConcepto == \"ID_PROMOC\");\r\n if (idPromociones) {\r\n let idPromo = idPromociones.Valor.split(\",\");\r\n for (let _k = 0; _k < idPromo.length; _k++) {\r\n let promo = +idPromo[_k];\r\n let condiPromo = listCondiPromoTPRestringido.find(x => x.IdPromocion == promo);\r\n if (condiPromo && !restriccionesActivas.find(x => x.IdPromocion == promo)) {\r\n restriccionesActivas.push(condiPromo)\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return restriccionesActivas;\r\n }\r\n\r\n /**\r\n * Retorna las restricciones Activas para los productos del proceso actual\r\n * @param listEncPromo \r\n * @param listM3EncItem \r\n */\r\n public getRestriccionesTipoPagoActivasFromEncPromo(listEncPromo: Array<M3ENCPROMO>, listM3EncItem: Array<M3PEncItems>) {\r\n let listCondiPromoTPRestringido = this.get_list_condi_promo_by_actividad(listEncPromo, \"PAGO\", \"RESTRICCION_PAGO\");\r\n\r\n return this.getRestriccionesTipoPagoActivas(listCondiPromoTPRestringido, listM3EncItem);\r\n }\r\n\r\n\r\n /**\r\n * Retorna los movimientos realizados por un m3saldosxcuenta\r\n */\r\n public m3_get_movimientos_fidelizacion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n\r\n //var data = { \"id_m3\": idm3, \"id_proceso\": proceso };\r\n PostServiceM3.getWithBodyM3(\"M3/m3_get_movimientos_fidelizacion/\" + idkatios, data).subscribe(resp => {\r\n var movs = JSON.parse(resp.toString());\r\n var resp_movs: Array<any>;\r\n if (!movs.MOVS.MOV.length) {\r\n resp_movs = new Array<any>();\r\n resp_movs.push(movs.MOVS.MOV);\r\n } else {\r\n resp_movs = movs.MOVS.MOV;\r\n }\r\n\r\n funcionOK(resp_movs);\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Valida si la forma de pago cumple alguna condicion de fidelizacion\r\n * @param forma_pago \r\n * @param list_condi_promo: listado de condiciones de fidelizacion\r\n */\r\n public validate_condi_by_forma_pago(forma_pago: M3PEncFP, list_condi_promo: Array<M3CONDIPROMO>) {\r\n //return list_condi_promo[0];\r\n let promosAplicadas = new Array<M3CONDIPROMO>();\r\n for (let _i = 0; _i < list_condi_promo.length; _i++) {\r\n var condi_promo = list_condi_promo[_i];\r\n var jAdicionales = JSON.parse(condi_promo.JAdicionales);\r\n\r\n switch (condi_promo.Concepto.trim()) {\r\n case \"ID_PAGO\":\r\n //Si el operador es DIFF crea una expresion regula para excluir lo tipodepago configurados\r\n if (jAdicionales.ROOT.Estructura && jAdicionales.ROOT.Estructura.Operacion && jAdicionales.ROOT.Estructura.Operacion == \"DIFF\") {\r\n condi_promo.Valor = \"^(?!(\" + condi_promo.Valor + \")\\\\b)\\\\w+$\";\r\n }\r\n else {\r\n condi_promo.Valor = \"^(\" + condi_promo.Valor + \")$\";\r\n }\r\n var re = new RegExp(condi_promo.Valor, \"i\");\r\n if (re.test(forma_pago.IdTipoPago.toString())) {\r\n promosAplicadas.push(condi_promo);\r\n }\r\n break;\r\n }\r\n }\r\n return promosAplicadas;\r\n }\r\n\r\n /**\r\n * Retorna el listado de condiciones validas para una actividad dada\r\n * @param list_enc_promo \r\n */\r\n public get_list_condi_promo_by_actividad(list_enc_promo: Array<M3ENCPROMO>, actividad: string, tipo2: string): Array<M3CONDIPROMO> {\r\n var list_condi_promo: Array<M3CONDIPROMO> = new Array<M3CONDIPROMO>();\r\n var hoy = new Date();\r\n\r\n if (list_enc_promo) {\r\n for (let _k = 0; _k < list_enc_promo.length; _k++) {\r\n var encabezadoPromo = list_enc_promo[_k];\r\n var dVigencia = new Date(encabezadoPromo.Vigencia);\r\n var dInicio = new Date(encabezadoPromo.Inicio);\r\n if (encabezadoPromo.Estado && dVigencia >= hoy && dInicio <= hoy && encabezadoPromo.Tipo2 == tipo2) {\r\n for (let _i = 0; _i < encabezadoPromo.M3CONDIAGRUPACION.length; _i++) {\r\n let condi_agrupacion = encabezadoPromo.M3CONDIAGRUPACION[_i];\r\n\r\n for (let _j = 0; _j < condi_agrupacion.M3CONDIPROMO.length; _j++) {\r\n let condi_promo = condi_agrupacion.M3CONDIPROMO[_j];\r\n if (condi_promo.JAdicionales) {\r\n var jAdicionales = JSON.parse(condi_promo.JAdicionales);\r\n if (jAdicionales.ROOT.ACTIVIDAD && jAdicionales.ROOT.ACTIVIDAD == actividad) {\r\n list_condi_promo.push(condi_promo);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return list_condi_promo;\r\n }\r\n\r\n /**\r\n * Calcula el valor del fidelizacion de una forma de pago de acuerdo a su porcentaje respecto el valor total del proceso\r\n * @param pago_total_proceso \r\n * @param max_value_fidelizacion \r\n * @param value_forma_pago \r\n */\r\n public calculate_fidelizacion_by_forma_pago(pago_total_proceso: number, listM3Enc: M3PEncItems[], value_forma_pago: number, promosAplicada: Array<M3CONDIPROMO>, list_enc_promo: Array<M3ENCPROMO>) {\r\n let listPromosAplicadas;\r\n let detalleIdPromoc;\r\n let valorFidelizacion = 0;\r\n let percent_forma_pago: number = value_forma_pago / pago_total_proceso;\r\n var precioProducto = 0;\r\n for (const item of listM3Enc) {\r\n listPromosAplicadas = [];\r\n detalleIdPromoc = item.M3DET.find(x => x.NombreConcepto == \"ID_PROMOC\");\r\n precioProducto = +item.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n let precioSR = item.M3DET.find(det => det.NombreConcepto == \"PRECIOSR\");\r\n if (precioSR != null && precioSR.Valor != null) {\r\n precioProducto = +precioSR.Valor;\r\n }\r\n if (detalleIdPromoc && detalleIdPromoc.Valor) {\r\n listPromosAplicadas = detalleIdPromoc.Valor.split(\",\");\r\n }\r\n for (const promoApl of promosAplicada) {\r\n if (listPromosAplicadas.find(x => +x == promoApl.IdPromocion)) {\r\n let promo = list_enc_promo.find(x => x.IdPromocion == promoApl.IdPromocion);\r\n let valor = this.validarRedondeo(promo, precioProducto * this.getPorcentajeFidelizacionFromEncPromo(promo) / 100) * (percent_forma_pago);\r\n valorFidelizacion += valor;\r\n break;\r\n }\r\n }\r\n }\r\n return valorFidelizacion;\r\n }\r\n\r\n getPorcentajeFidelizacionFromEncPromo(promo) {\r\n try {\r\n let jAdicionales = JSON.parse(promo.JAdicionales);\r\n if (jAdicionales.ROOT && jAdicionales.ROOT.Accion && jAdicionales.ROOT.Accion.Valor) {\r\n return jAdicionales.ROOT.Accion.Valor;\r\n }\r\n } catch {\r\n }\r\n return 0;\r\n }\r\n\r\n validarRedondeo(promo, valor: number) {\r\n try {\r\n let jAdicionales = JSON.parse(promo.JAdicionales);\r\n if (jAdicionales.ROOT && jAdicionales.ROOT.Accion && jAdicionales.ROOT.Accion.Redondeo) {\r\n return this.oMathTF.round(valor, +jAdicionales.ROOT.Accion.Redondeo);\r\n }\r\n } catch {\r\n return valor;\r\n }\r\n return valor;\r\n }\r\n\r\n /**\r\n * Adiciona una dinamica con el valor de la fidelización de dicho proceso y retorna dicho proceso\r\n * @param proceso \r\n * @param list_enc_promo \r\n */\r\n public add_dinamica_fidelizacion_to_proceso(proceso: M3Procesos, list_enc_promo: Array<M3ENCPROMO>): M3Procesos {\r\n var value_fidelizacion = 0\r\n if (list_enc_promo) {\r\n value_fidelizacion = this.get_value_fidelizacion_by_proceso(proceso, list_enc_promo);\r\n }\r\n\r\n if (value_fidelizacion > 0) {\r\n var dinamica_fidelizacion: M3PDinamicas = new M3PDinamicas();\r\n dinamica_fidelizacion.Nombre = \"FIDELIZACION\"\r\n dinamica_fidelizacion.Valor = value_fidelizacion.toString();\r\n\r\n proceso.lM3PDinamicas.push(dinamica_fidelizacion);\r\n }\r\n\r\n return proceso;\r\n }\r\n\r\n /**\r\n * Valida la existencia de un documento de fidelizacion en la tabla M3SaldosXCuenta\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param documento \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public validate_doc_fidelizacion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.getWithBodyM3(\"M3/validate_doc_fidelizacion/\" + idkatios, data).subscribe(resp => {\r\n var saldo_x_cuenta;\r\n saldo_x_cuenta = JSON.parse(resp.toString()).RESPUESTA.M3SaldosXCuenta;\r\n funcionOK(saldo_x_cuenta);\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Actualiza el saldo sumandole el valor enviado\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public actualizar_saldo_fidelizacion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n //data = {\"documento\":documento, \"valor_movimiento\":valor_moviento, \"pago\":pago }\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/actualizar_saldo_fidelizacion/\" + idkatios, data).subscribe(resp => {\r\n data.pago.idDiario = resp[\"_body\"].replace('\"', '').replace('\"', '');\r\n funcionOK(data.pago);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n /**\r\n * Genera Un bono de devolucion por el valor dado\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data = {\"proceso\",proceso,\"valor\":valor}\r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public m3_generar_bono_devolucion(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/m3_generar_bono_devolucion/\" + idkatios, data).subscribe(resp => {\r\n funcionOK(resp);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n /**\r\n * Crea un nuevo registro en la tabla SaldoXCuenta\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public m3InsertSaldoXCuenta(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n //var data = { 'Documento': this.documento, 'TDocTitular': '5', 'NDocTitular': this.ndoc_cliente, 'NomCuenta': 'FIDELIZACION', 'ValCuenta': 0 }\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/m3InsertSaldoXCuenta/\" + idkatios, data).subscribe(resp => {\r\n funcionOK();\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n\r\n public getCantidadTotal(M3ENC: Array<M3PEncItems>) {\r\n if (M3ENC) {\r\n var dCantidad = M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (+cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor), 0);\r\n if (dCantidad == 0) {\r\n return 0;\r\n } else {\r\n return dCantidad;\r\n }\r\n } else {\r\n return 0;\r\n }\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchConfigLPService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private idkatios: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private aplSyncCouchAuto = true;\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n\r\n }\r\n\r\n getFlagSyncCouch() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n let flag: boolean = true;\r\n let config;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Configuracion) {\r\n config = JSON.parse(oSUbicacion.M3HUBS[0].Configuracion);\r\n\r\n if (config.SyncCouchAuto != null && config.SyncCouchAuto != undefined) {\r\n flag = config.SyncCouchAuto;\r\n }\r\n }\r\n }\r\n return flag;\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"ConfigLP_\" + this.idkatios, { auto_compaction: true });\r\n console.debug(\"adapter\")\r\n console.debug(this.database.adapter);\r\n var sIdkatios: string;\r\n\r\n // this.validarPaquetes()\r\n this.syncCouch();\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE CONFIGLP *****************************************\")\r\n\r\n }\r\n\r\n // validarPaquetes() {\r\n // if (this.aplPaquetes) {\r\n // let ubicacion = this.getUbicacion();\r\n // if (ubicacion) {\r\n // this.sync(this.GetServer() + \"prdsa\" + ubicacion + \"_\" + this.idkatios.toLowerCase());\r\n // }\r\n // else {\r\n // this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n // }\r\n // }\r\n // else {\r\n // this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n // }\r\n // }\r\n\r\n syncCouch() {\r\n if (!this.idkatios) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"configlp_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n\r\n getUbicacion() {\r\n let sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n let oSUbicacion;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.IDUbicacion) {\r\n return oSUbicacion.IDUbicacion;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n // public GetKatiosM3FromSession() {\r\n // var Katios = sessionStorage.getItem(\"ConfigKatios\" + this.idkatios.toUpperCase());\r\n // if (Katios !== undefined && Katios != null) {\r\n // var jKatiosM3 = JSON.parse(Katios);\r\n // if (jKatiosM3 && jKatiosM3.KatiosM3 && jKatiosM3.KatiosM3.aplPaqs) {\r\n // this.aplPaquetes = jKatiosM3.KatiosM3.aplPaqs\r\n // }\r\n // }\r\n // }\r\n\r\n public async Destroy(idkatios) {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n\r\n\r\n\r\n public sync(remote: string) {\r\n this.aplSyncCouchAuto = this.getFlagSyncCouch();\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: this.aplSyncCouchAuto,\r\n retry: true\r\n }).on('complete', change => {\r\n\r\n console.log(\"********************************** COMPLETO CAMBIO CONFIGLP *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO CONFIGLP *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getInfo() {\r\n return this.database.info();\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public deleteLp(id) {\r\n this.database.get(id).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.map(row => {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n\r\n}","import { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3RegService } from \"./m3-reg-service\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3PrdLista } from \"../Maestro/M3PrdLista.type\";\r\nimport { M3PrdGeneral } from \"../Maestro/M3PrdGeneral.type\";\r\nimport { CouchConfigLPService } from \"../Offline/couch-configlp.service\";\r\nimport { MathTF } from \"../Miscelanea/MathTF.class\";\r\nimport { M3PrdAdicionales } from \"../Maestro/M3PrdAdicionales.type\";\r\n\r\nexport class ServiceLoadListaPrecio {\r\n private oMathTF = new MathTF();\r\n private gsidkatios: string;\r\n private aplPreciosDinamicos: boolean = false;\r\n\r\n constructor(idkatios) {\r\n this.gsidkatios = idkatios;\r\n this.GetKatiosM3FromSession();\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetKatiosM3FromSession() {\r\n let Katios = localStorage.getItem(\"ConfigKatios\" + this.gsidkatios.toUpperCase());\r\n if (Katios !== undefined && Katios != null) {\r\n var jKatiosM3 = JSON.parse(Katios);\r\n if (jKatiosM3 && jKatiosM3.Katios && jKatiosM3.Katios.KatiosM3) {\r\n let apl = jKatiosM3.Katios.KatiosM3.find(x => x.Llave.toUpperCase() == \"APLLPDINAMICOS\");\r\n if (apl && apl.Valor == \"1\") {\r\n this.aplPreciosDinamicos = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n ///Asignar lista de precios, segun lista de precios asociado a usuario por cada ujno de los productos hijos\r\n public async AsignarListaPrecioM3Pack(ProductoMaestro: TypeM3PrdGrp, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n\r\n for (const oM3PrdGrpAsociado of ProductoMaestro.M3PrdGrpAsociado) {\r\n await this.AsignarListaPrecio(oM3PrdGrpAsociado.M3GRP, oDataUser, oPostServiceM3)\r\n }\r\n\r\n for (const prdGeneral of ProductoMaestro.LoM3PrdGeneral) {\r\n for (const m3Pack of prdGeneral.M3PACK) {\r\n await this.AsignarListaPrecio(m3Pack.M3GRP, oDataUser, oPostServiceM3)\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n ///Asignar lista de precios, segun lista de precios asociado a usuario.\r\n public async AsignarListaPrecio(ProductoMaestro: TypeM3PrdGrp, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n this.GetKatiosM3FromSession();\r\n if (oDataUser != null && oDataUser.UsuarioSistema && oDataUser.UsuarioSistema.IDLPrecio !== undefined && oDataUser.UsuarioSistema.IDLPrecio != -1 && ProductoMaestro) {\r\n for (var i = 0; i < ProductoMaestro.LoM3PrdGeneral.length; i++) {\r\n var prdGrl = ProductoMaestro.LoM3PrdGeneral[i];\r\n let splitPrecio = oDataUser.UsuarioSistema.IDLPrecio.split(\"-\");\r\n var oListaFinded = prdGrl.LoM3ListaPrecio.find(lPre => lPre.IDLISTA == splitPrecio[0]);\r\n if (oListaFinded && splitPrecio && splitPrecio.length > 1) {\r\n if (!this.aplPreciosDinamicos) {\r\n switch (splitPrecio[1]) {\r\n case \"LB\":\r\n oListaFinded.PRECIO = oListaFinded.LB;\r\n break;\r\n case \"LC\":\r\n oListaFinded.PRECIO = oListaFinded.LC;\r\n break;\r\n case \"LD\":\r\n oListaFinded.PRECIO = oListaFinded.LD;\r\n break;\r\n default:\r\n }\r\n }\r\n else {\r\n try {\r\n let oCouchConfigLPService = new CouchConfigLPService();\r\n let listaCouch = await oCouchConfigLPService.get(splitPrecio[0])\r\n let jConfigLP = JSON.parse(listaCouch.JConfiguracion);\r\n if (jConfigLP && jConfigLP.Factores && jConfigLP.Factores.length > 0) {\r\n let factor = parseFloat(jConfigLP.Factores.find(x => x.Nombre == splitPrecio[1]).Factor);\r\n oListaFinded.PRECIO = this.oMathTF.round(oListaFinded.PRECIO * factor, 2);\r\n oListaFinded.M3Presentaciones.forEach(presentacion => {\r\n presentacion.VALOR = this.oMathTF.round(presentacion.VALOR * factor, 2)\r\n });\r\n }\r\n }\r\n catch (Ex) {\r\n console.log(\"error en asignarlistaprecio: \" + Ex.message + \" - \" + splitPrecio[0])\r\n }\r\n }\r\n }\r\n\r\n if (oListaFinded !== undefined) {\r\n prdGrl.LoM3PrdLista = oListaFinded;\r\n } else {\r\n await this.ValidarDataFromInventario(prdGrl, oDataUser, oPostServiceM3);\r\n }\r\n }\r\n let oM3PrdAdicionales = new M3PrdAdicionales();\r\n oM3PrdAdicionales.ATRIBUTO = \"LISTAPRECIO\";\r\n oM3PrdAdicionales.VALOR = oDataUser.UsuarioSistema.IDLPrecio;\r\n ProductoMaestro.LoM3PrdAdicionales.push(oM3PrdAdicionales);\r\n }\r\n if (ProductoMaestro) {\r\n await this.AsignarListaPrecioM3Pack(ProductoMaestro, oDataUser, oPostServiceM3);\r\n }\r\n return \"\";\r\n }\r\n\r\n public async AsignarListaPrecioAGeneral(prdGrl: M3PrdGeneral, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n if (oDataUser != null && oDataUser.UsuarioSistema.IDLPrecio !== undefined && oDataUser.UsuarioSistema.IDLPrecio != -1) {\r\n var oListaFinded = prdGrl.LoM3ListaPrecio.find(lPre => lPre.IDLISTA == oDataUser.UsuarioSistema.IDLPrecio);\r\n if (oListaFinded !== undefined) {\r\n prdGrl.LoM3PrdLista = oListaFinded;\r\n } else {\r\n await this.ValidarDataFromInventario(prdGrl, oDataUser, oPostServiceM3);\r\n }\r\n }\r\n return \"\";\r\n }\r\n\r\n\r\n public async ValidarDataFromInventario(prdGrl: M3PrdGeneral, oDataUser: any, oPostServiceM3: PostServiceM3) {\r\n var sLista: string = oDataUser.UsuarioSistema.IDLPrecio;\r\n var oM3RegService: M3RegService = new M3RegService(null, null, null);\r\n //Validar si es un valor de inventario.\r\n if (sLista.split('_')[0] == \"INV\") {\r\n var jData: any = { \"ubicacion\": oDataUser.UsuarioSistema.UBICACION, \"sku\": prdGrl.SKU, \"lote\": prdGrl.LOTE, \"concepto\": sLista.split('_')[1] };\r\n var precio = await oM3RegService.GetConceptoM3SaldosItemUb(oPostServiceM3, this.gsidkatios, jData);\r\n if (precio && precio != 0) {\r\n var oM3PrdLista = new M3PrdLista();\r\n oM3PrdLista.IDLISTA = oDataUser.UsuarioSistema.IDLPrecio;\r\n oM3PrdLista.LOTE = prdGrl.LOTE;\r\n oM3PrdLista.PRECIO = precio;\r\n oM3PrdLista.SKU = prdGrl.SKU;\r\n prdGrl.LoM3PrdLista = oM3PrdLista;\r\n }\r\n }\r\n }\r\n\r\n\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n//import { sessionWE8 } from \"../../../Session/session.class\";\r\nimport { Filtros } from \"../Maestro/filtros\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\";\r\nimport { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { ServiceListaPrecio } from \"./m3-lista-precio.service\";\r\nimport { ServiceLoadListaPrecio } from \"./m3-load-l-precio.service\";\r\nimport * as _ from \"lodash\";\r\nimport { Optional } from \"@angular/core\";\r\nimport { ɵangular_packages_platform_browser_platform_browser_a } from \"@angular/platform-browser\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\n\r\nexport class ServiceM3Maestro {\r\n\r\n\r\n constructor() { }\r\n\r\n //Trae el m3procesos segpun el idprestamo\r\n public getM3ProcesosPorCredito(PostServiceM3: PostServiceM3, sIDKatios: string, idProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n var data;\r\n data = { 'idProceso': idProceso }\r\n PostServiceM3.getWithBodyM3('M3/getM3ProcesosPorCredito/' + sIDKatios, data).subscribe(resp => {\r\n\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End \r\n\r\n //Trae el m3procesos segpun el idprestamo\r\n public getM3ProcesoByIdPrestamo(PostServiceM3: PostServiceM3, sIDKatios: string, sIdPrestamo: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3/getM3ProcesoByIdPrestamo/' + sIDKatios + '/' + sIdPrestamo).subscribe(resp => {\r\n var oM3Procesos: any;\r\n oM3Procesos = resp;\r\n\r\n oFuncionOK(oM3Procesos);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End \r\n\r\n //rae el TIPO, SKP1, NOMBRE de la tabla prdgrp\r\n public m3GetPRDGRP(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getM3PRDGRP/' + sIDKatios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var oData = JSON.parse(resp);\r\n\r\n oFuncionOK(oData);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End \r\n\r\n\r\n //Obtener la cantidad disponible de producto, teniendo en cuenta el SKP1 y la ubicación.\r\n //La data debe tener una estructura: {\"UBICACION\":\"1111\", \"SKP1\":\"9999a\"}\r\n public M3GetCantidadBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, oDataSend: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetCantidadBySKP1/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var oData = JSON.parse(resp.toString());\r\n var goDataDisp: Array<any>;\r\n if (oData.RESPUESTA.DISPONIBILIDAD.length === undefined) {\r\n //No es array\r\n goDataDisp = new Array<any>(oData.RESPUESTA.DISPONIBILIDAD);\r\n } else {\r\n goDataDisp = oData.RESPUESTA.DISPONIBILIDAD;\r\n }\r\n console.log(goDataDisp);\r\n oFuncionOK(goDataDisp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End \r\n\r\n\r\n\r\n //Obtener la lista de producto, teniendo en cuenta, un array de filtros.\r\n GetListaPrdXFiltros(PostServiceM3: PostServiceM3, olFiltros: Array<Filtros>, sIDLista: string, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() idUbicacion = \"-1\", @Optional() aplUltimoFiltro = true, @Optional() topLimit = \"0\", @Optional() filtrarInvUbic = \"0\") {\r\n var oDataSend;\r\n oDataSend = { \"Filtros\": JSON.stringify(olFiltros), \"IdLista\": sIDLista, \"IdUbicacion\": idUbicacion, \"aplUltimoFiltro\": aplUltimoFiltro, \"topLimit\": topLimit, \"filtrarInvUbic\": filtrarInvUbic };\r\n if (olFiltros != null) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/Get_ListPRDFiltros/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp, olFiltros);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n } else {\r\n oFuncionErr(\"No hay filtros para la busqueda\");\r\n }\r\n }\r\n\r\n\r\n //Obtener lista de productos, segun la categoria.\r\n GetListaPrdXCategoria(PostServiceM3: PostServiceM3, sCategoria: string, oDataClasificacion, IdLista: string, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() idUbicacion = \"-1\", @Optional() filtrarInvUbic: string = \"0\") {\r\n var olFiltros: Array<Filtros>;\r\n var oDataSend;\r\n olFiltros = this.FindFilterInClasificacion(sCategoria, sIDKatios, oDataClasificacion);\r\n\r\n oDataSend = { \"Filtros\": JSON.stringify(olFiltros), \"IdLista\": IdLista, \"IdUbicacion\": idUbicacion, \"filtrarInvUbic\": filtrarInvUbic };\r\n if (olFiltros != null) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/Get_ListPRDFiltros/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp, olFiltros);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err.error.Message);\r\n oFuncionErr(err.error.Message);\r\n });\r\n } else {\r\n oFuncionErr(\"No hay filtros para la busqueda\");\r\n }\r\n\r\n }//End GetListaPrdXCategoria\r\n\r\n\r\n\r\n\r\n\r\n //Obtener lista de productos, segun la categoria.\r\n GetListaPrdXCategoriaWithOutFilters(PostServiceM3: PostServiceM3, sCategoria: string, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/M3GetListaProdByClasificacion/' + sIDKatios + '/' + sCategoria).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp, null);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End GetListaPrdXCategoria\r\n\r\n\r\n\r\n //Obtener lista de productos, segun el nombre o descripción.\r\n GetListaPrdXNombre(PostServiceM3: PostServiceM3, sNombre: string, idUbicacion: string, sIDKatios: string, sIDLista: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() filtrarInvUbic: string = \"0\") {\r\n\r\n var oData = { \"IdLista\": sIDLista, \"idUbicacion\": idUbicacion, \"filtrarInvUbic\": filtrarInvUbic };\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetListaProdByNombre/' + sIDKatios + '/' + sNombre, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err);\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n cargarListPrdByGeneric(PostServiceM3: PostServiceM3, sNombre: string, idUbicacion: string, sIDKatios: string, sIDLista: string,\r\n oFuncionOK: Function, oFuncionErr: Function, @Optional() filtrarInvUbic: string = \"0\") {\r\n\r\n var oData = { \"IdLista\": sIDLista, \"idUbicacion\": idUbicacion, \"filtrarInvUbic\": filtrarInvUbic };\r\n PostServiceM3.getWithBodyM3('M3Maestro/cargarListPrdByGeneric/' + sIDKatios + '/' + sNombre, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err.error);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error);\r\n });\r\n }\r\n\r\n //cargar informacion de clasificacion\r\n cargarInfoClasificacion(PostServiceM3: PostServiceM3, sIDKatios: string, jsonResp,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n //var osessionWE8 = new sessionWE8();\r\n\r\n //jsonResp = osessionWE8.GetDataCLASIFICACION(sIDKatios);\r\n if (jsonResp === undefined || jsonResp == null) {\r\n PostServiceM3.getM3(\"M3Maestro/M3GetClasificacion/\" + sIDKatios).subscribe(resp => {\r\n jsonResp = JSON.parse(resp);\r\n this.ValidarArrayClasificacion(jsonResp);\r\n //osessionWE8.SetDataCLASIFICACION(jsonResp, sIDKatios);\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(jsonResp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(error);\r\n });\r\n } else {\r\n oFuncionOK(jsonResp);\r\n }\r\n }//End cargarInfoClasificacion\r\n\r\n //Validar que la clasificacion, esten como array.\r\n ValidarArrayClasificacion(oDataClas) {\r\n this.RecursiveConvertArray(oDataClas.RESPUESTA.CLASIFICACIONES);\r\n }\r\n\r\n\r\n //Aplicar filtros a la categoria entrante.\r\n FindFilterInClasificacion(sClasFind: string, sIDKatios: string, oDataClasificacion) {\r\n var sClasificacion: string = \"\";\r\n var oDataFiltrada;\r\n //var osessionWE8 = new sessionWE8();\r\n var olFiltros = new Array<Filtros>();\r\n var oFiltros: Filtros;\r\n var filtroAtributo: string;\r\n\r\n //console.log(sClasFind);\r\n //oDataClasificacion = osessionWE8.GetDataCLASIFICACION(sIDKatios);\r\n\r\n oDataFiltrada = oDataClasificacion.RESPUESTA.CLASIFICACIONES;\r\n\r\n if (sClasFind.length % 3 == 0) {\r\n while (sClasFind != \"\") {\r\n\r\n sClasificacion = sClasificacion + sClasFind.substring(0, 3);\r\n sClasFind = sClasFind.substring(3);\r\n oDataFiltrada = oDataFiltrada.CATEGORIA.find(filtro => filtro.CLASIFICACION.toString() == sClasificacion.toString());\r\n\r\n filtroAtributo = oDataFiltrada.ATRIBUTO;\r\n if (!filtroAtributo.toUpperCase().includes(\"ROOT\")) {\r\n oFiltros = new Filtros(oDataFiltrada.ATRIBUTO, oDataFiltrada.Descripcion);\r\n olFiltros.push(oFiltros);\r\n }\r\n\r\n\r\n //oDataRespCla = this.RecursiveClasificacion(oDataClasificacion.RESPUESTA.CLASIFICACIONES.CATEGORIA, sClasFind);\r\n //console.log(oDataRespCla);\r\n }\r\n } else {\r\n return null;\r\n }\r\n return olFiltros;\r\n }\r\n\r\n //Recursividad, para validar que todos los nodos, sean tipo array\r\n RecursiveConvertArray(oDataClas) {\r\n if (oDataClas.CATEGORIA !== undefined) {\r\n if (oDataClas.CATEGORIA.length === undefined) {\r\n oDataClas.CATEGORIA = new Array(oDataClas.CATEGORIA);\r\n this.RecursiveConvertArray(oDataClas.CATEGORIA[0]);\r\n } else {\r\n oDataClas.CATEGORIA.forEach(clas => {\r\n this.RecursiveConvertArray(clas);\r\n });\r\n }\r\n }\r\n }\r\n\r\n //Adiciona un producto\r\n m3AddProducto(PostServiceM3: PostServiceM3, sIDKatios: string, tdocUActivo: string, ndocUActivo: string, oM3PrdGrp: TypeM3PrdGrp, oFuncionOK: Function, oFuncionErr: Function, disabledWeb: boolean = false) {\r\n var data;\r\n data = { 'sTdocUsuario': tdocUActivo, 'sNdocUsuario': ndocUActivo, 'oM3PrdGrp': oM3PrdGrp, 'disabledWeb': disabledWeb };\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/addProducto/\" + sIDKatios.trim(), data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n //Obtener producto por SKP1.\r\n M3GetProductoBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n PostServiceM3.getWithBodyM3(\"M3Maestro/M3GetProductoBySKP1/\" + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var producto: any = resp;\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n oServiceLoadListaPrecio.AsignarListaPrecio(producto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(producto);\r\n });\r\n\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n //Obtener producto random por SKP1.\r\n M3GetProductoRandomBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n PostServiceM3.getWithBodyM3(\"M3Maestro/M3GetProductoRandomBySKP1/\" + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n //Obtener producto por SKP1.\r\n M3GetCatAsociadasBySKP1(PostServiceM3: PostServiceM3, sIDKatios: string, skp1: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3(\"M3Maestro/M3GetCatAsociadasBySKP1/\" + sIDKatios + '/' + skp1).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n ///Get Imagenes enviando en la oData: {\"Path\":\"xxx\", \"SKU\":\"SKUxxx\"}\r\n public M3GetImagenesByPath(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Maestro/Get_M3MultimediaByPath/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n //obtener informacion de plantillas, desde servidor... \r\n Get_M3SKPlantillaBySKUID(PostServiceM3: PostServiceM3, sIDKatios: string, SKUID: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3(\"M3Maestro/Get_M3SKPlantillaBySKUID/\" + sIDKatios + \"/\" + SKUID).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n //Obtener información de productos, desde codigo de barras\r\n GetInfoByFilterCode(PostServiceM3: PostServiceM3, sIDKatios: string, sFilterCode: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n var oData = { \"FILTERCODE\": sFilterCode };\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetSKP1PrdsByFiltersCode/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End GetInfoByFilterCode \r\n\r\n //Obtiene el objeto M3Ubicaciones para la ubicacion y idkatios dados\r\n get_M3Ubicaciones(PostServiceM3: PostServiceM3, sIDKatios: string, sIdUbicacion: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_M3Ubicaciones/' + sIDKatios + '/' + sIdUbicacion).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err);\r\n });\r\n }//End get_M3Ubicaciones\r\n\r\n //Obtiene el objeto M3Ubicaciones para la ubicacion y idkatios dados\r\n get_M3UbicacionesCompleta(PostServiceM3: PostServiceM3, sIDKatios: string, sIdUbicacion: string, sIdHub: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3WithTimeOut('M3Maestro/get_M3UbicacionesCompleta/' + sIDKatios + '/' + sIdUbicacion + '/' + sIdHub, 10000).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err);\r\n });\r\n }//End get_M3UbicacionesCompleta\r\n\r\n\r\n //rae el producto de acuerdo al SKU\r\n public M3GetProductoBySKU(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n\r\n console.log(PostServiceM3);\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetProductoBySKU/' + sIDKatios, data).subscribe(resp => {\r\n var oProducto: any = resp;\r\n oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(oProducto);\r\n });\r\n\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n //rae el producto de acuerdo al SKU\r\n async M3GetProductoBySKUAsync(PostServiceM3: PostServiceM3, sIDKatios: string, sSKU: string,\r\n oDataUser: any, Ubicacion: string = \"-1\", sAplExc: string = \"1\") {\r\n var data;\r\n var resp;\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n data = { 'SKU': sSKU, \"UBICACION\": Ubicacion == \"-1\" ? oDataUser.UsuarioSistema.UBICACION : Ubicacion, 'AplExc': sAplExc };\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n\r\n resp = await PostServiceM3.getWithBodyM3('M3Maestro/M3GetProductoBySKU/' + sIDKatios, data).toPromise();\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(resp, oDataUser, PostServiceM3);\r\n return resp;\r\n }\r\n\r\n\r\n //Obtener producto especfico teniendo en cuenta codigo.\r\n async Get_M3ProductoEspecByCodeAsync(PostServiceM3: PostServiceM3, sIDKatios: string, data: any, oDataUser: any) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n var oProducto: any;\r\n\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n\r\n oProducto = await PostServiceM3.getWithBodyM3(\"M3Maestro/Get_M3ProductoEspecByCode/\" + sIDKatios, data).toPromise();\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3);\r\n return oProducto;\r\n }\r\n\r\n\r\n //Trae los registros que se encuentren en M3Procesos que se encuentren con estadogeneral proceso\r\n M3getRegistrosEnProceso(PostServiceM3: PostServiceM3, sIDKatios: string, idProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n var data;\r\n data = { 'idProceso': idProceso }\r\n PostServiceM3.getWithBodyM3('M3/get_RegistrosEnProceso/' + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err._bSody);\r\n });\r\n }\r\n\r\n //Obtiene el top 20 de productos que coincidad con el sNombre ingresado\r\n get_M3PrdGrpByNombre(PostServiceM3: PostServiceM3, sIDKatios: string, sNombre: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_M3PrdGrpByNombre/' + sIDKatios + '/' + sNombre).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var jResp = JSON.parse(resp).RESPUESTA.M3GRP;\r\n if (jResp.length === undefined) {\r\n resp = new Array(jResp);\r\n oFuncionOK(resp);\r\n }\r\n else {\r\n oFuncionOK(jResp);\r\n }\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }//End get_M3PrdGrpByNombre\r\n\r\n //Obtiene el top 20 de productos agrupados que coincidad con el sNombre ingresado\r\n public GetM3PrdAgrupadoByNombre(PostServiceM3: PostServiceM3, sIDKatios: string, sNombre: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_m3_prd_by_nombre_agrupado/' + sIDKatios + '/' + sNombre).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var jResp = JSON.parse(resp).RESPUESTA.M3GRP;\r\n if (jResp.length === undefined) {\r\n resp = new Array(jResp);\r\n oFuncionOK(resp);\r\n }\r\n else {\r\n oFuncionOK(jResp);\r\n }\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n //Obtiene el top 20 de productos agrupados que coincidad con el sNombre ingresado y que no esten exlcuidos (M3ExcPrdXUbic)\r\n public get_m3_prd_by_nombre_agrupado(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n //data = {nombre:'asdasd', idUbicacion:'1'}\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_m3_prd_by_nombre_agrupado/' + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n var jResp = JSON.parse(String(resp)).RESPUESTA.M3GRP;\r\n if (jResp.length === undefined) {\r\n resp = new Array(jResp);\r\n oFuncionOK(resp);\r\n }\r\n else {\r\n oFuncionOK(jResp);\r\n }\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n if (err._body) {\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n } else {\r\n if (err.error && err.error.Message) {\r\n oFuncionErr(err.error.Message);\r\n }\r\n else {\r\n oFuncionErr(err);\r\n }\r\n }\r\n });\r\n }\r\n\r\n ///Obtiene el path base donde se encuentra alojadas las imagenes en el servidor\r\n public get_PathServidorImagenes(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_PathServidorImagenes/' + sIDKatios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n\r\n console.log(resp)\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }//End get_PathServidorImagenes\r\n\r\n\r\n //Obtener producto especfico teniendo en cuenta codigo.\r\n Get_M3ProductoEspecByCode(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n if (oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n PostServiceM3.getWithBodyM3(\"M3Maestro/Get_M3ProductoEspecByCode/\" + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oProducto: any = resp;\r\n oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(resp);\r\n });\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n //Ejecutar funcion de error\r\n oFuncionErr(error.error.Message);\r\n });\r\n }\r\n\r\n Get_M3ProductoEspecByCodeTimeOut(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function, oDataUser: any, timeoutTime: number) {\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(sIDKatios);\r\n\r\n if (timeoutTime != 0) {\r\n if (oDataUser && oDataUser.UsuarioSistema && oDataUser.UsuarioSistema.FechaPrecio) data.fechaLPrecio = oDataUser.UsuarioSistema.FechaPrecio;\r\n PostServiceM3.getWithBodyM3TimeOut(\"M3Maestro/Get_M3ProductoEspecByCode/\" + sIDKatios, data, timeoutTime).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oProducto: any = resp;\r\n oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, PostServiceM3).then(x => {\r\n oFuncionOK(resp);\r\n });\r\n\r\n },\r\n error => {\r\n console.log(error);\r\n //Ejecutar funcion de error\r\n if (error.error) {\r\n oFuncionErr(error.error.Message);\r\n }\r\n else {\r\n oFuncionErr(\"404\");\r\n }\r\n });\r\n } else {\r\n oFuncionErr(\"404\");\r\n }\r\n }\r\n\r\n get_DocsFromCouchMaestro(oM3CouchMaestro: M3CouchMaestro, sIdKatios: string, sDoc: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n console.log(\"get_DocsFromCouchMaestro\")\r\n var sIdKeyDoc = oM3CouchMaestro.GetKeyDocumentoDB(sIdKatios, sDoc);\r\n console.log(sIdKeyDoc)\r\n oM3CouchMaestro.GetDataPouchBD(sIdKeyDoc).then(result => {\r\n oFuncionOK(result);\r\n }, error => {\r\n oFuncionErr(error);\r\n });\r\n }\r\n\r\n GetProductoEspecByCodeFromCouch(jProductsCouch: any, sCode: string,\r\n oFuncionOK: Function, oFuncionError: Function) {\r\n var jProductsFil = jProductsCouch.find(x => x.LoM3PrdGeneral != undefined && x.LoM3PrdGeneral.find(w => w.M3Cods != undefined && w.M3Cods.find(y => String(y.Valor) == String(sCode)) != undefined) != undefined);\r\n var product_clone = _.cloneDeep(jProductsFil);\r\n\r\n if (jProductsFil != undefined) {\r\n var jPrdEsp = jProductsFil.LoM3PrdGeneral.find(w => w.M3Cods.find(y => String(y.Valor) == String(sCode)) != undefined)\r\n product_clone.LoM3PrdGeneral = [];\r\n product_clone.LoM3PrdGeneral.push(jPrdEsp);\r\n console.log(\"product_clone\")\r\n console.log(product_clone)\r\n oFuncionOK(product_clone)\r\n }\r\n else {\r\n oFuncionError(\"No se encontró nungún registro.\");\r\n }\r\n\r\n }\r\n\r\n ///Obtiene los Tipos de procesos desde el servidor\r\n public get_TiposProceso(PostServiceM3: PostServiceM3, sIDKatios: string,\r\n oFuncionOK: Function, oFuncionErr: Function, actividad: string = 'Ventas') {\r\n\r\n PostServiceM3.getM3('M3Maestro/get_TiposProceso/' + sIDKatios + '/' + actividad).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp).RESPUESTA);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_TiposProceso\r\n\r\n ///Obtiene la Info de un proceso a partir de un idProceso y un IdM3\r\n public get_InfoPersona_Proceso(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_InfoPersona_Proceso/' + sIDKatios, jData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(String(resp)).RESPUESTA);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_InfoProceso\r\n\r\n /**\r\n * Obtiene la Info de un proceso a partir de un idProceso y un IdM3 de manera sincrónica\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param jData \r\n */\r\n public async get_InfoPersona_Proceso_async(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any) {\r\n var json;\r\n var resp;\r\n\r\n try {\r\n resp = await PostServiceM3.getWithBodyM3('M3Maestro/get_InfoPersona_Proceso/' + sIDKatios, jData).toPromise();\r\n json = JSON.parse(resp)\r\n return json;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n //Obtener un producto agrupado, teniendo una lista de producto agrupados y un sku\r\n public GetM3PrdGrpFromList(ListPrd: Array<TypeM3PrdGrp>, sku): TypeM3PrdGrp {\r\n try {\r\n var oTypeM3PrdGrpResult: TypeM3PrdGrp;\r\n oTypeM3PrdGrpResult = ListPrd.find(prd => {\r\n var bResp: boolean = false;\r\n prd.LoM3PrdGeneral.forEach(prd => {\r\n\r\n if (prd.SKU === sku) {\r\n bResp = true;\r\n }\r\n });\r\n return bResp;\r\n });\r\n oTypeM3PrdGrpResult.LoM3PrdGeneral = oTypeM3PrdGrpResult.LoM3PrdGeneral.filter(gen => gen.SKU == sku);\r\n return oTypeM3PrdGrpResult;\r\n } catch (ex) {\r\n console.log(ex);\r\n return null;\r\n }\r\n }\r\n\r\n\r\n ///Obtener de una lista de ubicaciones, una ubicacion en particular, teniendo en cuenta el IdUbicacion\r\n public GetUbicacionFromList(ListUbic: Array<M3Ubicacion>, sIdUbic) {\r\n var oM3Ubicacion: M3Ubicacion;\r\n oM3Ubicacion = ListUbic.find(ubic => ubic.IDUbicacion == sIdUbic);\r\n return oM3Ubicacion;\r\n }\r\n\r\n ///Obtiene los datos de facturacion tal como el codigo postal y el regimen fiscal asociado a un RFC\r\n public getDatosFacturacionFromRFC(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/getDatosFacturacionFromRFC/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End getDatosFacturacionFromRFC\r\n\r\n public actualizarRFC(PostServiceM3: PostServiceM3, IdKatios: string, oData,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3('M3Maestro/actualizarRFC/' + IdKatios, oData).subscribe(posts => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(posts);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n\r\n }\r\n\r\n ///Obtiene el Xml de configuracion de la empresa a partir del idubicacion\r\n public get_XmlConfig_x_IdUbicacion(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_XmlConfig_x_IdUbicacion/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_XmlConfig_x_IdUbicacion\r\n\r\n ///Obtiene el Xml de configuracion de la empresa a partir del idubicacion\r\n public getCFDIsXProceso(PostServiceM3: PostServiceM3, sIDKatios: string, oData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/getCFDIsXProceso/' + sIDKatios, oData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err);\r\n });\r\n }//End get_XmlConfig_x_IdUbicacion\r\n\r\n ///Obtiene los atributos en m3clasifica a partir de un idkatios\r\n get_clasification_attributes(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_clasification_attributes/' + id_katios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.ATTRIBUTES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n\r\n\r\n ///Obtiene las categorias en m3clasifica a partir de un idkatios y un atributo\r\n get_clasification_categories(PostServiceM3: PostServiceM3, id_katios: string, attribute: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_clasification_categories/' + id_katios + \"/\" + attribute).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.CATEGORIES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n getOpcionesAdicionales(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getOpcionesAdicionales/' + id_katios).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.ATTRIBUTES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n getAtributosAdicionales(PostServiceM3: PostServiceM3, id_katios: string, attribute: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getAtributosAdicionales/' + id_katios + \"/\" + attribute).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var jResp = JSON.parse(resp).RESPUESTA.CATEGORIES;\r\n if (jResp.length === undefined) {\r\n jResp = new Array(jResp);\r\n }\r\n\r\n oFuncionOK(jResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n\r\n ///Obtiene la informacion de tipos de envio.\r\n M3GetFormasEnvio(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/M3GetFormasEnvio/' + id_katios).subscribe(resp => {\r\n var jsResp;\r\n jsResp = JSON.parse(resp);\r\n oFuncionOK(jsResp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n ///Obtinie todas las M3Ubicaciones asociadas a un id_katios\r\n public get_ubicaciones_complete(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_ubicaciones_complete/' + id_katios).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n ///Obtinie todas las M3Ubicaciones asociadas a un id_katios\r\n public get_ubicaciones_simple(PostServiceM3: PostServiceM3, id_katios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/get_ubicaciones_simple/' + id_katios).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n\r\n ///Obtinie todas las M3Ubicaciones asociadas a un id_katios\r\n public async M3GET_LISTAPRECIOS_ASync(PostServiceM3: PostServiceM3, id_katios: string) {\r\n var oRecListaPrec: any;\r\n\r\n oRecListaPrec = await PostServiceM3.getM3('M3Maestro/M3GET_LISTAPRECIOS/' + id_katios).toPromise();\r\n return oRecListaPrec[0];\r\n }\r\n\r\n public async GetEncabezadoListasPrecio(PostServiceM3: PostServiceM3, sIDKatios: string) {\r\n var resp;\r\n\r\n try {\r\n resp = await PostServiceM3.getM3('M3/GetConfigLP/' + sIDKatios).toPromise();\r\n return resp;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n public registrarColonia(PostServiceM3: PostServiceM3, IdKatios: string, sColonia: string, sCodPostal, sTelefono: string, ndoc: string, sLinea1: string, sCodestado: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n var oDataSend;\r\n oDataSend = { \"sColonia\": sColonia, \"sCodPostal\": sCodPostal, \"sTelefono\": sTelefono, \"ndoc\": ndoc, \"sLinea1\": sLinea1, \"sCodestado\": sCodestado };\r\n PostServiceM3.postServiceHttpResFullM3('M3Maestro/registrarColonia/' + IdKatios, oDataSend).subscribe(posts => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK();\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n\r\n }\r\n\r\n ///Obtener promociones \r\n public async M3_GetPromocionesMaestroAsync(PostServiceM3: PostServiceM3, id_katios: string) {\r\n var oRecListaPrec: any;\r\n\r\n oRecListaPrec = await PostServiceM3.getM3('M3Maestro/M3_GetPromocionesMaestro/' + id_katios).toPromise();\r\n return oRecListaPrec;\r\n }\r\n\r\n\r\n ///Obtener Dinamicas por actividad \r\n public async M3GetDinByActividad(PostServiceM3: PostServiceM3, id_katios: string, oData: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/M3GetDinByActividad/' + id_katios, oData).subscribe(resp => {\r\n //var jsResp:any = resp;\r\n //jsResp = JSON.parse(jsResp);\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr();\r\n });\r\n\r\n\r\n // var oRecListaPrec: any;\r\n\r\n // oRecListaPrec = await PostServiceM3.getWithBodyM3('M3Maestro/M3GetDinByActividad/' + id_katios, oData).toPromise();\r\n // return oRecListaPrec;\r\n }\r\n\r\n /**\r\n * Retorna la info basica de las ubicaciones con Hub tipo WEB activos en el momento\r\n * @param PostServiceM3 \r\n * @param idKatios \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n getUbicacionesWeb(PostServiceM3: PostServiceM3, idKatios: string, oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3Maestro/getUbicacionesWeb/' + idKatios).subscribe(resp => {\r\n oFuncionOK(JSON.parse(resp));\r\n },\r\n err => {\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna la info basica de las ubicaciones con Hub tipo WEB activos en el momento que abarquen un codpostal en concreto\r\n * @param PostServiceM3 \r\n * @param idKatios \r\n * @param data \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n getUbicacionesByCodPostal(PostServiceM3: PostServiceM3, idKatios: string, data: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n //data = { \"codPostal\": string };\r\n PostServiceM3.getWithBodyM3('M3Maestro/getUbicacionesByCodPostal/' + idKatios, data).subscribe(resp => {\r\n oFuncionOK(JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna el path de la factura electrónica a partir de un IdDiario asociado al proceso \r\n * @param PostServiceM3 \r\n * @param idKatios \r\n * @param data \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public getPathFEFromDiario(PostServiceM3: PostServiceM3, idKatios: string, tipoGeneracion: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/getPathFEFromDiario/' + idKatios + '/' + tipoGeneracion, data).subscribe(resp => {\r\n var respuesta: any = JSON.parse(resp.toString());\r\n oFuncionOK(respuesta);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(err);\r\n });\r\n }\r\n\r\n public getDiarioAdicionalesxDiario(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyGenerales('Diario/getDiarioAdicionalesxDiario/' + idKatios, data).subscribe(resp => {\r\n var respuesta: any = JSON.parse(resp.toString());\r\n oFuncionOK(respuesta);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n console.log(err);\r\n oFuncionErr(JSON.parse(err._body).Message);\r\n });\r\n }\r\n\r\n\r\n async IU_Hub(PostServiceM3: PostServiceM3, id_katios: string, oHub: any, uTActivo: string, uNActivo: string) {\r\n var Info;\r\n var data = { 'idKatios': id_katios.trim(), 'oHub': oHub, 'uTActivo': uTActivo, 'uNActivo': uNActivo };\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3Maestro/IU_Hub', data).toPromise()\r\n return Info\r\n }\r\n\r\n\r\n\r\n /**\r\n * Obtener el ctivo desde servidor\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param idproceso \r\n * @param ubicacion \r\n * @param hub \r\n */\r\n async GetCtivoBYProceso(PostServiceM3: PostServiceM3, id_katios: string, idproceso: string, ubicacion: string, hub: string) {\r\n var Info;\r\n var data = { 'idproceso': idproceso, 'ubicacion': ubicacion, 'hub': hub };\r\n Info = await PostServiceM3.getWithBodyM3('M3/GetCtivoBYProceso/' + id_katios.trim(), data).toPromise()\r\n return Info\r\n }\r\n\r\n\r\n public async ValidarCtivosVSLocal(PostServiceM3: PostServiceM3, id_katios: string,\r\n infProceso: string, ubicacion: string, hub: string, funcionResp: Function) {\r\n PostServiceM3.postServiceHttpResFullM3('M3/ValidarCtivosVSLocal/' + id_katios + '/' + ubicacion + '/' + hub, infProceso).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n funcionResp(resp);\r\n },\r\n error => {\r\n //Ejecutar funcion de error\r\n funcionResp({ \"error\": error });\r\n });\r\n }\r\n\r\n async GenerarAutorizacionCuentas(PostServiceM3: PostServiceM3, data) {\r\n var Info;\r\n\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3/GenerarAutorizacionCuentas', data).toPromise()\r\n return Info\r\n }\r\n\r\n /**\r\n * Valida si el codigo ingresado corresponde al documento y si el codigo esta en estado activo\r\n * @param PostServiceM3 \r\n * @param data \r\n */\r\n async validacionAutorizacionM3Cuentas(PostServiceM3: PostServiceM3, data) {\r\n var Info;\r\n\r\n Info = await PostServiceM3.postServiceHttpResFullM3('M3/validacionAutorizacionM3Cuentas', data).toPromise()\r\n return Info\r\n }\r\n\r\n\r\n async VerificarPagoTarjetaBBVA(PostServiceM3: PostServiceM3, sIDKatios: string, sIdKey: string) {\r\n var jData = { \"Idkatios\": sIDKatios, \"idKey\": sIdKey }\r\n var Info;\r\n Info = await PostServiceM3.getWithBodyM3('M3/VerificarPagoTarjetaBBVA', jData).toPromise()\r\n return Info;\r\n }//End get_InfoProceso\r\n\r\n /**\r\n * FS 20190813: Retorna los codigos de los SKP(skpToFind) y su respectivo significado para un producto dado\r\n * @param idKatios \r\n * @param PostServiceM3 \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public getDescripcionSKPs(idKatios: string, PostServiceM3: PostServiceM3,\r\n data: any, funcionOK: Function, funcionError: Function) {\r\n\r\n //let data = {\"SKP1\":\"SKP1\", SKPToFind: 2 }};\r\n\r\n PostServiceM3.getWithBodyM3(\"M3Consultas/getDescripcionSKPs/\" + idKatios, data).subscribe(resp => {\r\n funcionOK(data.SKP1, JSON.parse(resp.toString()));\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n\r\n\r\n async getTotalesCierreCaja(postService: PostServiceM3, sIdKatios: string, subicacion: string, shub: string, susuario: string, sFechaI: string, sFechaF: string) {\r\n var secopciones: any;\r\n var data = { 'idKatios': sIdKatios, 'ubicacion': subicacion, 'hub': shub, 'usuario': susuario, 'FechaI': sFechaI, 'FechaF': sFechaF }\r\n secopciones = await postService.getWithBodyM3('M3/getTotalesCierreCaja', data).toPromise()\r\n secopciones = JSON.parse(secopciones)\r\n return secopciones\r\n }\r\n\r\n async getCierresxUbicacion(postService: PostServiceM3, sIdKatios: string, subicacion: string, sIdProceso: string, sFecha: string) {\r\n var secopciones: any;\r\n var data = { 'idKatios': sIdKatios, 'ubicacion': subicacion, 'idProceso': sIdProceso, 'Fecha': sFecha }\r\n secopciones = await postService.getWithBodyM3('M3/getCierresxUbicacion', data).toPromise()\r\n secopciones = JSON.parse(secopciones)\r\n return secopciones\r\n }\r\n\r\n async getCierresxEmpresa(postService: PostServiceM3, sIdKatios: string, sIdProceso: string, sFecha: string) {\r\n var secopciones: any;\r\n var data = { 'idKatios': sIdKatios, 'idProceso': sIdProceso, 'Fecha': sFecha }\r\n secopciones = await postService.getWithBodyM3('M3/getCierresxEmpresa', data).toPromise()\r\n secopciones = JSON.parse(secopciones)\r\n return secopciones\r\n }\r\n\r\n //Trae el m3procesos segpun el idprestamo\r\n public simularpagoEnlinea(PostServiceM3: PostServiceM3, sIDKatios: string, sIdM3: string, sIdProceso: string,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getM3('M3/ValidacionPagoIntegracionTest/' + sIDKatios + '/' + sIdM3 + '/' + sIdProceso).subscribe(resp => {\r\n oFuncionOK();\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr();\r\n });\r\n }\r\n\r\n public validarPrdsMismoProveedor(PostServiceM3: PostServiceM3, id_katios: string, nombreAdicionalProveedor: string, oM3Procesos: M3Procesos, oFuncionResp: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/validarPrdsMismoProveedor/\" + id_katios + \"/\" + nombreAdicionalProveedor, oM3Procesos).subscribe(resp => {\r\n oFuncionResp(JSON.parse(JSON.parse(resp['_body']).toString()))\r\n },\r\n err => {\r\n //Ejecutar funcion de error \r\n console.error(\"Error validarPrdsMismoProveedor\")\r\n console.error(err)\r\n oFuncionResp(JSON.parse(JSON.parse(err['_body']).Message));\r\n });\r\n }\r\n\r\n public validarRestriccionInvNegativo(PostServiceM3: PostServiceM3, id_katios: string, oM3Procesos: M3Procesos, oFuncionResp: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/validarRestriccionInvNegativo/\" + id_katios, oM3Procesos).subscribe(resp => {\r\n oFuncionResp(JSON.parse(JSON.parse(resp['_body']).toString()))\r\n },\r\n err => {\r\n //Ejecutar funcion de error \r\n console.error(\"Error validarRestriccionInvNegativo\")\r\n console.error(err)\r\n oFuncionResp(JSON.parse(JSON.parse(err['_body']).Message));\r\n });\r\n }\r\n\r\n public async getInfoPrdGastosEnvio(PostServiceM3: PostServiceM3, id_katios: string, oM3Procesos: M3Procesos) {\r\n\r\n let resp = await PostServiceM3.postServiceHttpResFullM3(\"M3Maestro/getInfoPrdGastosEnvio/\" + id_katios, oM3Procesos).toPromise();\r\n return JSON.parse(JSON.parse(resp['_body']).toString()).RESPUESTA\r\n }\r\n\r\n /**\r\n * Genera una saldoxcuenta aleatorio por el valor dado\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data = {\"proceso\",proceso,\"valor\":valor,\"nombreDoc\": nombreDoc}\r\n */\r\n public async m3_generar_M3SXC_aleatorio(PostServiceM3: PostServiceM3, idkatios: string, data: any) {\r\n\r\n try {\r\n let resp = await PostServiceM3.postServiceHttpResFullM3(\"M3/m3_generar_M3SXC_aleatorio/\" + idkatios, data).toPromise();\r\n return JSON.parse(JSON.parse(resp['_body']).toString()).RESPUESTA;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Actualiza un concepto del M3_saldosItemUb\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public M3_actualizarConceptoSIU(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/M3_actualizarConceptoSIU/\" + idkatios, data).subscribe(resp => {\r\n funcionOK(resp);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n\r\n public procesoAlCierreUbic(PostServiceM3: PostServiceM3, id_katios: string, jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/procesoAlCierreUbic/\" + id_katios, jData).subscribe(resp => {\r\n funcionOK(resp)\r\n },\r\n err => {\r\n //Ejecutar funcion de error \r\n console.error(\"Error procesoAlCierreUbic\")\r\n console.error(err)\r\n funcionError(err);\r\n });\r\n }\r\n\r\n public get_ProcesosAbiertos(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.getWithBodyM3('M3Maestro/get_ProcesosAbiertos/' + sIDKatios, jData).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(JSON.parse(String(resp)).RESPUESTA);\r\n },\r\n err => {\r\n //Ejecutar funcion de error \r\n console.error(\"Error get_ProcesosAbiertos\")\r\n console.error(err)\r\n oFuncionErr(err);\r\n });\r\n }//End get_InfoProceso\r\n\r\n}\r\n","import { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { M3PEncItems } from \"../Registro/m3-penc-items\";\r\nimport { M3PrdGeneral } from \"../Maestro/M3PrdGeneral.type\";\r\nimport * as moment_ from 'moment';\r\nimport { M3PDetalleItems, M3PItemsWEB, M3PDetalleCupon } from \"../Registro/m3-pdetalle-items\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3Data } from \"../Data/m3-data\";\r\nimport { DEFAULT_VALUE_ACCESSOR } from \"@angular/forms/src/directives/default_value_accessor\";\r\nimport { xmlToJsonTF } from \"../../Convert/xmlToJSon.class\";\r\nimport { M3PImpuestos } from \"../Registro/m3-p-impuestos\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { M3ENCPROMO } from \"../Promociones/Models/M3ENCPROMO.class\";\r\nimport { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { promocionesService } from \"../Promociones/promociones.service\";\r\nimport { PromocionProcesada, PromocionesAsociadas, PromocionCombinada } from \"../Promociones/Models/M3PromoProcesada.class\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { M3PDinamicas } from \"../Registro/m3-pdinamicas\";\r\nimport { ServiceListaPrecio } from \"./m3-lista-precio.service\";\r\nimport { ServiceLoadListaPrecio } from \"./m3-load-l-precio.service\";\r\nimport { a } from \"@angular/core/src/render3\";\r\nimport { M3Presentaciones } from \"../Maestro/m3-presentaciones\";\r\nimport { stringify } from \"@angular/compiler/src/util\";\r\nimport { M3PrdPackDet } from \"../Maestro/M3PrdPackDet\";\r\nimport { M3PrdAdicionales } from \"../Maestro/M3PrdAdicionales.type\";\r\nimport { M3OtClasificaciones } from \"../Registro/m3-ot-clasificaciones\";\r\nimport { M3PrdLista } from \"../Maestro/M3PrdLista.type\";\r\nimport { MathTF } from \"../Miscelanea/MathTF.class\";\r\nimport { ECANCELED } from \"constants\";\r\nimport * as xml2js from 'xml2js';\r\n\r\nconst moment = moment_;\r\nvar bigDecimal = require('js-big-decimal');\r\n\r\nexport class M3RegService {\r\n public oMathTF: MathTF = new MathTF();\r\n private oM3CouchMaestro: M3CouchMaestro;\r\n public oListaObsequios: Array<any> = null;\r\n public obsequiosExc: boolean = false;\r\n public obsequioOPromo: number = -1;\r\n public obsequiosCantidad: number = 0;\r\n public lIdActivaPromo = [];\r\n private GoPostServiceM3: PostServiceM3;\r\n private gsIdkatios;\r\n\r\n constructor(ioM3CouchMaestro: M3CouchMaestro, IsPostServiceM3: PostServiceM3, sIdkatios: string) {\r\n this.oM3CouchMaestro = ioM3CouchMaestro;\r\n this.GoPostServiceM3 = IsPostServiceM3;\r\n this.gsIdkatios = sIdkatios;\r\n }\r\n\r\n /**\r\n * Validar numero de items agregados. si es mayor a 1.000 prende parametro \r\n */\r\n public ValidarNumeroItems(olM3Procesos: M3Procesos) {\r\n if (olM3Procesos.M3ENC.length > 1000) {\r\n olM3Procesos.AplDesdeServer = true;\r\n olM3Procesos.M3ENC = new Array<M3PEncItems>();\r\n }\r\n }\r\n\r\n public ProcesamientoService(sIDKatios: string, PostServiceM3: PostServiceM3, oM3Procesos: M3Procesos,\r\n oDataUser: any, funcionOK: Function, funcionError: Function, aplRetomarInfo: boolean = true) {\r\n this.ValidarNumeroItems(oM3Procesos);\r\n this.RetomarInformacion(oDataUser, oM3Procesos, aplRetomarInfo);\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3/RegistroEventoM3/\" + sIDKatios + \"/\" + oDataUser.UsuarioSistema.NDOC + \"/\" + oDataUser.UsuarioSistema.TDOC, oM3Procesos).subscribe(resp => {\r\n var oJson = JSON.parse(resp.json());\r\n oM3Procesos.IdM3 = oJson.RESPUESTA.IDM3;\r\n oM3Procesos.IDDiario = oJson.RESPUESTA.IDDIARIO;\r\n oM3Procesos.IDDiarioCierre = oJson.RESPUESTA.IDDIARIOCIERRE\r\n\r\n //Actualizacion de estados.\r\n oM3Procesos.SubEstadoAnt = oM3Procesos.SubEstadoDes;\r\n oM3Procesos.EstadoAnt = oM3Procesos.EstadoDes;\r\n\r\n funcionOK(oM3Procesos, oJson.RESPUESTA);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n console.error(err.json().Message);\r\n funcionError(err.json().Message);\r\n });\r\n }\r\n\r\n public async procesamiento_service_async(sIDKatios: string, PostServiceM3: PostServiceM3, oM3Procesos: M3Procesos,\r\n oDataUser: any, aplRetomarInfo: boolean = true) {\r\n try {\r\n this.RetomarInformacion(oDataUser, oM3Procesos, aplRetomarInfo);\r\n\r\n var resp = await PostServiceM3.postServiceHttpResFullM3(\"M3/RegistroEventoM3/\" + sIDKatios + \"/\" + oDataUser.UsuarioSistema.NDOC + \"/\" + oDataUser.UsuarioSistema.TDOC, oM3Procesos).toPromise();\r\n var oJson = JSON.parse(resp.json());\r\n oM3Procesos.IdM3 = oJson.RESPUESTA.IDM3;\r\n oM3Procesos.IDDiario = oJson.RESPUESTA.IDDIARIO;\r\n\r\n //Actualizacion de estados.\r\n oM3Procesos.SubEstadoAnt = oM3Procesos.SubEstadoDes;\r\n oM3Procesos.EstadoAnt = oM3Procesos.EstadoDes;\r\n\r\n return oM3Procesos;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n public async RegistroEventoM3OffLine(sIDKatios: string, PostServiceM3: PostServiceM3, oM3Procesos: Array<M3Procesos>, oDataUser: any) {\r\n try {\r\n await PostServiceM3.postServiceHttpResFullM3(\"M3/RegistroEventoM3OffLine/\" + sIDKatios + \"/\" + oDataUser.UsuarioSistema.NDOC + \"/\" + oDataUser.UsuarioSistema.TDOC, oM3Procesos).toPromise();\r\n\r\n return true;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n ///Retomar informacion para el proceso.\r\n public RetomarInformacion(oDataUser: any, oM3Procesos: M3Procesos, aplRetomarInfo: boolean) {\r\n if (oDataUser != null && oM3Procesos.IdM3 !== undefined && oM3Procesos.IdM3 != null) {\r\n if (aplRetomarInfo) {\r\n oM3Procesos.M3FTrabajo.IdHub = oDataUser.UsuarioSistema.IDHUB;\r\n if (oM3Procesos.M3FTrabajo.IdUbic == undefined || oM3Procesos.M3FTrabajo.IdUbic == 0) {\r\n oM3Procesos.M3FTrabajo.IdUbic = oDataUser.UsuarioSistema.UBICACION;\r\n }\r\n }\r\n else {\r\n oM3Procesos.M3FTrabajo.IdUbic = oM3Procesos.M3FTrabajo.IdUbicPre\r\n oM3Procesos.M3FTrabajo.IdHub = oM3Procesos.M3FTrabajo.IdHubPre;\r\n }\r\n }\r\n }\r\n\r\n //Procesamiento de datos en base de datos pouchDB.\r\n public ProcesamientoServicePouchDB(oM3Data: M3Data, oM3PItemsWEB: M3PItemsWEB,\r\n prodGRPSelected: TypeM3PrdGrp, funcionOK: Function, funcionError: Function, oDataUser: any, sIDKatios: string,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, ioM3Procesos: M3Procesos, oM3PDinamicasByActividad: any = null) {\r\n\r\n var oM3Procesos: M3Procesos;\r\n var sKeyCarrito: string;\r\n var productUnitSelected: M3PrdGeneral;\r\n productUnitSelected = prodGRPSelected.LoM3PrdGeneral[0];\r\n //Obtener key de carrito de compras\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n //Cargar detalle de items\r\n //Guardar en BD PouchDB\r\n oM3Data.GetDataPouchBD(sKeyCarrito).then(async result => {\r\n oM3Procesos = result;\r\n let cantidad_actual = this.validarExistaProducto(oM3Procesos.M3ENC, productUnitSelected, oM3PItemsWEB);\r\n if (cantidad_actual != 0) {\r\n //let cantidad_actual = this.getCantidad(oM3Procesos, productUnitSelected);\r\n oM3PItemsWEB.dCantidad = (+cantidad_actual) + +oM3PItemsWEB.dCantidad;\r\n\r\n //let M3Enc = this.get_M3ENC_by_idprd_lote(oM3Procesos, productUnitSelected.SKU, productUnitSelected.LOTE);\r\n\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(prod => !(prod.IdProducto == productUnitSelected.SKU && prod.Lote == productUnitSelected.LOTE && !(prod.IdEncPadre > 0)));\r\n this.RecalcularPrecios(oM3Procesos);\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad);\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n } else {\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad);\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n }\r\n\r\n //console.log(oDataCarritoCompras);\r\n }, async error => {\r\n if (error.status == \"404\") {//No existe el carrito \r\n oM3Procesos = this.LoadM3ProcesoEmptyPDB(prodGRPSelected, oM3PItemsWEB, oDataUser, oM3Ubicacion, oM3ENCPROMO, ioM3Procesos, oM3PDinamicasByActividad);\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n } else {\r\n console.log(\"Error no controlado\");\r\n console.log(error);\r\n funcionError();\r\n }\r\n });\r\n }\r\n\r\n\r\n //Agregar a carrito producto.\r\n public addtocart(oM3PItemsWEB: M3PItemsWEB,\r\n prodGRPSelected: TypeM3PrdGrp, funcionOK: Function, funcionError: Function, oDataUser: any, sIDKatios: string,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, ioM3Procesos: M3Procesos, oM3PDinamicasByActividad: any = null, valorDescuento = 0) {\r\n\r\n var oM3Procesos: M3Procesos = ioM3Procesos;\r\n var sKeyCarrito: string;\r\n var productUnitSelected: M3PrdGeneral;\r\n productUnitSelected = prodGRPSelected.LoM3PrdGeneral[0];\r\n //JAGM 20190722 se agrega para cuando es el primer producto que se agregará\r\n if (oM3Procesos.M3ENC.length == 0) {\r\n oM3Procesos = this.LoadM3ProcesoEmptyPDB(prodGRPSelected, oM3PItemsWEB, oDataUser, oM3Ubicacion, oM3ENCPROMO, ioM3Procesos, oM3PDinamicasByActividad);\r\n if (funcionOK)\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n else\r\n return oM3Procesos;\r\n\r\n } else {\r\n let cantidad_actual = this.validarExistaProducto(oM3Procesos.M3ENC, productUnitSelected, oM3PItemsWEB);\r\n if (cantidad_actual != 0) {\r\n //let cantidad_actual = this.getCantidad(oM3Procesos, productUnitSelected);\r\n oM3PItemsWEB.dCantidad = (+cantidad_actual) + oM3PItemsWEB.dCantidad;\r\n\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(prod => !(prod.IdProducto == productUnitSelected.SKU && prod.Lote == productUnitSelected.LOTE && !(prod.IdEncPadre > 0)));\r\n this.RecalcularPrecios(oM3Procesos);\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad, valorDescuento);\r\n if (funcionOK)\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n else\r\n return oM3Procesos;\r\n } else {\r\n oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, prodGRPSelected, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PDinamicasByActividad, valorDescuento);\r\n if (funcionOK)\r\n funcionOK(oM3Procesos, oM3PItemsWEB);\r\n else\r\n return oM3Procesos;\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n //Valida que exista producto en los encabezados. True: Si existe, False de otro modo\r\n // Se cambia funcionalidad de return.\r\n public validarExistaProducto(oM3ListaEnc: Array<M3PEncItems>, oM3PrdGrl: M3PrdGeneral, oM3PItemsWEB: M3PItemsWEB): number {\r\n var oEnc: M3PEncItems = null;\r\n var cantidad: number = 0;\r\n oM3PItemsWEB.IDEncRepetido = -1;\r\n if (oM3ListaEnc !== undefined && oM3PrdGrl !== undefined && oM3ListaEnc.length > 0) {\r\n\r\n oEnc = oM3ListaEnc.find(enc => enc.IdProducto == oM3PrdGrl.SKU && !enc.IdEncPadre && this.getCantidadPositiva(enc));\r\n if (oEnc !== undefined && oEnc != null) {\r\n //JAGM 20190717 Validar ahora el precio.\r\n this.VerificarPrecioByNivelesGeneral(oM3PrdGrl, +oEnc.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor);\r\n if (this.ValidarPreciosPrds(oEnc, oM3PrdGrl.LoM3PrdLista) && !this.ValidarEstaPaquete(oEnc, oM3ListaEnc)) {\r\n oM3PItemsWEB.IDEncRepetido = oEnc.ID;\r\n cantidad = +oEnc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n //return true;\r\n } else {\r\n //return false;\r\n }\r\n }\r\n }\r\n return cantidad;\r\n }\r\n\r\n getCantidadPositiva(oM3PEncItems: M3PEncItems): boolean {\r\n let cantidad = 0;\r\n let detCantidad = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\")\r\n\r\n if (detCantidad) {\r\n cantidad = +detCantidad.Valor;\r\n }\r\n\r\n if (cantidad > 0) {\r\n return true;\r\n }\r\n else {\r\n return false;\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Valida que el encabezado con el producto agregado, sea un paquete\r\n * @param oM3PEncItems \r\n * @param oM3ListaEnc \r\n */\r\n public ValidarEstaPaquete(oM3PEncItems: M3PEncItems, oM3ListaEnc: Array<M3PEncItems>) {\r\n var bResp: boolean = false;\r\n try {\r\n if (oM3ListaEnc.find(x => x.IdEncPadre == oM3PEncItems.ID)) {\r\n bResp = true;\r\n }\r\n } catch {\r\n\r\n }\r\n return bResp;\r\n }\r\n\r\n /**\r\n * Validar los precios de los productos\r\n * @param oEnc \r\n * @param oM3PrdLista \r\n */\r\n public ValidarPreciosPrds(oEnc: M3PEncItems, oM3PrdLista: M3PrdLista) {\r\n var bResp: boolean = false;\r\n try {\r\n var dPrecioEnc: number = +oEnc.M3DET.find(x => x.NombreConcepto == \"PUNIT\").Valor;\r\n var dPrecioList: number = oM3PrdLista.PRECIO;\r\n\r\n if (dPrecioList == dPrecioEnc) {\r\n bResp = true;\r\n }\r\n\r\n\r\n } catch (ex) {\r\n console.log(\"Error ValidarPreciosPrds\")\r\n console.log(ex)\r\n }\r\n return bResp;\r\n }\r\n\r\n\r\n //Actualizacion de M3 procesos, con data lista para actualizar.\r\n public UpdateM3ProcesosWithData(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, tipoUbicacion: string, funcionOK: Function, funcionError: Function\r\n , m3Ubicacion: M3Ubicacion = null, oM3PItemsWEB: M3PItemsWEB = null) {\r\n //Guardar en BD PouchDB\r\n var sKeyCarrito: string;\r\n this.RecalcularPrecios(oM3Procesos);\r\n //Obtener key de carrito de compras\r\n //IDHUB\r\n if (tipoUbicacion.toUpperCase() == \"WEB\") {\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n oM3Data.GetDataPouchBD(sKeyCarrito).then(result => {\r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n this.procesarPromoAfterCarritoOk(oM3Procesos, oM3Data, oDataUser, m3Ubicacion, funcionOK, funcionError, oM3PItemsWEB);\r\n }, error => {\r\n if (error.status == \"404\") {//No existe el carrito \r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n this.procesarPromoAfterCarritoOk(oM3Procesos, oM3Data, oDataUser, m3Ubicacion, funcionOK, funcionError, oM3PItemsWEB);\r\n } else {\r\n console.log(\"Error no controlado\");\r\n funcionError();\r\n }\r\n });\r\n }\r\n }\r\n\r\n public procesarPromoAfterCarritoOk(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, m3Ubicacion: M3Ubicacion, funcionOK: Function, funcionError: Function, oM3PItemsWEB: M3PItemsWEB) {\r\n if (m3Ubicacion) {\r\n var loM3PItemsWEB: M3PItemsWEB;\r\n if (oM3PItemsWEB) {\r\n loM3PItemsWEB = oM3PItemsWEB;\r\n } else {\r\n loM3PItemsWEB = new M3PItemsWEB();\r\n loM3PItemsWEB.dCantidad = 1;\r\n }\r\n\r\n var sKeyCarrito = oM3Data.GetKeyCarritoCompras(this.gsIdkatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n this.ProcPromoAfterAddToCart(oM3Procesos, oDataUser, loM3PItemsWEB, m3Ubicacion, true).then(x => {\r\n // console.log(x);\r\n // console.log(oData);\r\n oM3Data.AddToPouchBDCarritoComprasAsync(sKeyCarrito, oM3Procesos).then(x => {\r\n funcionOK();\r\n }).catch(x => {\r\n funcionOK();\r\n });\r\n }).catch(x => {\r\n console.log(x)\r\n console.log(\"Error no controlado en procesarPromoAfterCarritoOk\");\r\n funcionOK();\r\n // this.oEncabezadoM3Component.RecargarCarrito();\r\n // this.LoadCart();\r\n });\r\n }\r\n else {\r\n funcionOK();\r\n }\r\n }\r\n\r\n\r\n //Actualizacion de M3 procesos, con data lista para actualizar.\r\n public updateAPouch(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, tipoUbicacion: string, funcionOK: Function, funcionError: Function) {\r\n //Guardar en BD PouchDB\r\n var sKeyCarrito: string;\r\n //Obtener key de carrito de compras\r\n //IDHUB\r\n if (tipoUbicacion.toUpperCase() == \"WEB\") {\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n oM3Data.GetDataPouchBD(sKeyCarrito).then(result => {\r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK();\r\n }, error => {\r\n if (error.status == \"404\") {//No existe el carrito \r\n oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, oM3Procesos);\r\n funcionOK();\r\n } else {\r\n console.log(\"Error no controlado\");\r\n funcionError();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n public async DeleteM3Proceso(oM3Data: M3Data, oDataUser: any, sIDKatios: string) {\r\n var sKeyCarrito: string;\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n await oM3Data.Delete(sKeyCarrito);\r\n }\r\n\r\n\r\n ///Eliminar documento de couch/pouch, inicio y actual\r\n public DelDocsStartAndCurrent(oM3Data: M3Data, sIDKatios: string, olM3Procesos: M3Procesos, UbicacionCurrent, HubCurrent) {\r\n //Eliminar Inicial\r\n if (olM3Procesos.IDDiarioCierre !== undefined && olM3Procesos.IDDiarioCierre != null) {\r\n var oDataUser = { \"UsuarioSistema\": { \"TDOC\": olM3Procesos.TDoc, \"NDOC\": olM3Procesos.NDoc, \"UBICACION\": olM3Procesos.Ubic1.toString(), \"IDHUB\": olM3Procesos.IDHub } }\r\n this.DeleteM3Proceso(oM3Data, oDataUser, sIDKatios).then(x => {\r\n console.log(\"Delete start\");\r\n })\r\n\r\n //Eliminar actual\r\n oDataUser = { \"UsuarioSistema\": { \"TDOC\": olM3Procesos.TDoc, \"NDOC\": olM3Procesos.NDoc, \"UBICACION\": UbicacionCurrent.toString(), \"IDHUB\": HubCurrent } }\r\n this.DeleteM3Proceso(oM3Data, oDataUser, sIDKatios).then(x => {\r\n console.log(\"Delete current\");\r\n })\r\n }\r\n\r\n }\r\n\r\n\r\n //Actualizacion de M3 procesos, con data lista para actualizar.\r\n public async GetCarritoComprasPouchDB(oM3Data: M3Data, oDataUser: any, sIDKatios: string) {\r\n //Guardar en BD PouchDB\r\n var sKeyCarrito: string;\r\n var oM3Proceso;\r\n //Obtener key de carrito de compras\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n oM3Proceso = await oM3Data.GetDataPouchBD(sKeyCarrito);\r\n return oM3Proceso;\r\n }\r\n\r\n //Trasladar información de carrito, dos usuarios\r\n public async MoveCartIntoUser(sIDKatios: string, oM3Data: M3Data, oDataUserOrigen: any, oDataUserDestino: any, funcionOK: Function) {\r\n var sKeyCarritoOrigen;\r\n var sKeyCarritoDestino;\r\n\r\n try {\r\n sKeyCarritoOrigen = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUserOrigen.UsuarioSistema.TDOC, oDataUserOrigen.UsuarioSistema.NDOC, oDataUserOrigen.UsuarioSistema.UBICACION, oDataUserOrigen.UsuarioSistema.IDHUB);\r\n sKeyCarritoDestino = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUserDestino.UsuarioSistema.TDOC, oDataUserDestino.UsuarioSistema.NDOC, oDataUserDestino.UsuarioSistema.UBICACION, oDataUserDestino.UsuarioSistema.IDHUB);\r\n let oM3Proceso = await oM3Data.GetDataPouchBD(sKeyCarritoOrigen);\r\n\r\n oM3Proceso.TDoc = oDataUserDestino.UsuarioSistema.TDOC;\r\n oM3Proceso.NDoc = oDataUserDestino.UsuarioSistema.NDOC;\r\n delete oM3Proceso[\"_rev\"];\r\n await oM3Data.AddToPouchBDCarritoCompras(sKeyCarritoDestino, oM3Proceso);\r\n funcionOK();\r\n } catch (error) {\r\n funcionOK();\r\n }\r\n }\r\n\r\n /**\r\n * Recalcular precios totales y de base\r\n * @param oM3Procesos \r\n */\r\n public RecalcularPreciosPromoCombinada(oM3Procesos: M3Procesos) {\r\n // var dPrecioTotal;\r\n // var dPrecioTotalBase;\r\n // var dValor: number = 0;\r\n // var dValorNeto: number = 0;\r\n\r\n\r\n // oM3Procesos.M3ENC.forEach(enc => {\r\n // dPrecioTotal = enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor //(+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) * (+enc.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor);\r\n // dPrecioTotalBase = this.CalcularPrecioBaseFromProceso(enc, dPrecioTotal);\r\n // enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTALBASE\").Valor = String(Math.round(dPrecioTotalBase * 100) / 100);\r\n // dValor = (+dValor) + (+dPrecioTotalBase);\r\n // dValorNeto = (+dValorNeto) + (+dPrecioTotal);\r\n // this.RecalculoImpuestos(enc, dPrecioTotalBase);\r\n // });\r\n // //oM3Procesos.Valor = dValor;\r\n // oM3Procesos.ValorNeto = dValorNeto;\r\n this.RecalcularPrecios(oM3Procesos);\r\n }\r\n\r\n\r\n //Recalcular precios. recorriendo los encabezados.\r\n public RecalcularPrecios(oM3Procesos: M3Procesos) {\r\n var valor = 0;\r\n var ValorNeto = 0;\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n //JAGM 20191010 se cambia el valor del precio unitario base, ya que al momento de llamar la función ValoresCalculadosProceso\r\n // se recalculo el precio total, dependiendo de este valor.\r\n let pTotalBase = this.CalculatePrecioBase(enc.M3DET.find(det => det.NombreConcepto == \"CTBLDIMPPRD\").Valor,\r\n this.oMathTF.round(enc.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor, 2));\r\n\r\n var dCantidadEnc = +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n if (+dCantidadEnc != 0) {\r\n enc.M3DET.find(det => det.NombreConcepto == \"PRECIOUNITBASE\").Valor = (+pTotalBase / +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor).toString();\r\n } else {\r\n enc.M3DET.find(det => det.NombreConcepto == \"PRECIOUNITBASE\").Valor = \"0\";\r\n }\r\n this.ValoresCalculadosProceso(enc, +enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor);\r\n });\r\n this.recalcularM3Proceso(oM3Procesos);\r\n }\r\n\r\n //Calcular precio base de un precio, teniendo el valor total o neto.\r\n public CalcularPrecioBaseFromProceso(oM3PEncItems: M3PEncItems, dPrecioNeto: number) {\r\n var dValorImpuesto: number = 1;\r\n try {\r\n oM3PEncItems.M3PImpuestos.forEach(imp => {\r\n dValorImpuesto = (+dValorImpuesto) + (+imp.Porcentaje);\r\n });\r\n } catch {\r\n\r\n }\r\n return ((+dPrecioNeto) / (+dValorImpuesto));\r\n }\r\n\r\n //Recalculo de valor de impuestos, cuando cambia el valor. Sea por cantidad, eliminación...\r\n // public RecalculoImpuestos(oM3PEncItems: M3PEncItems, dPrecioBase: number) {\r\n // var dTotalImpuesto: number = 0;\r\n // oM3PEncItems.M3PImpuestos.forEach(imp => {\r\n // imp.Valor = (+dPrecioBase) * (+imp.Porcentaje);\r\n // //JAGM 20180912 nuevo concepto\r\n // imp.Base = dPrecioBase;\r\n // dTotalImpuesto = (+dTotalImpuesto) + (+imp.Valor);\r\n // //Suma de precio base \r\n // dPrecioBase = (+dPrecioBase) + (+imp.Valor);\r\n // });\r\n // dTotalImpuesto = Math.round(dTotalImpuesto * 100) / 100;\r\n // oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"TOTALIMPUESTOS\").Valor = dTotalImpuesto.toString();\r\n // }\r\n\r\n\r\n /**\r\n * Creacion nuevo M3 procesos, este va vacio sin nisiquiera M3PEncItems. \r\n * Se utiliza principalmente para las creacion desde 0 un M3 Proceso. Que pasa de estados '' al primer estado\r\n * @param ioM3Procesos \r\n * @param idproceso_destino \r\n * @param tdoc \r\n * @param ndoc \r\n * @param estados_futuros \r\n * @param idHub \r\n * @param idUbicacion \r\n */\r\n public CreateM3NewProcesoEmpty(ioM3Procesos: M3Procesos, idproceso_destino: string, tdoc: string, ndoc: string,\r\n estados_futuros: Array<any>, idHub: string, idUbicacion: string) {\r\n\r\n ioM3Procesos.TMIdProceso = idproceso_destino;\r\n ioM3Procesos.EstadoAnt = \"\";\r\n ioM3Procesos.SubEstadoAnt = \"\";\r\n ioM3Procesos.EstadoDes = estados_futuros[0].E_Destino;\r\n ioM3Procesos.SubEstadoDes = estados_futuros[0].SE_Destino;\r\n ioM3Procesos.M3FTrabajo.IdHub = +idHub;\r\n ioM3Procesos.M3FTrabajo.IdUbic = +idUbicacion;\r\n ioM3Procesos.IDHub = +idHub;\r\n ioM3Procesos.Ubic1 = +idUbicacion;\r\n ioM3Procesos.TDoc = tdoc;\r\n ioM3Procesos.NDoc = ndoc;\r\n ioM3Procesos.TipoTercero = 1;\r\n ioM3Procesos.Ubic2 = -1;\r\n ioM3Procesos.M3FTrabajo.IdHubPre = -1;\r\n ioM3Procesos.M3FTrabajo.IdUbicPre = -1;\r\n }\r\n\r\n //Cuando se agrega por primera vez al carrito de compra.\r\n public LoadM3ProcesoEmptyPDB(prodGRPSelected: TypeM3PrdGrp, oM3PItemsWEB: M3PItemsWEB, oDataUser: any, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, ioM3Procesos: M3Procesos, oM3PDinamicasByActividad: any = null): M3Procesos {\r\n //sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION\r\n var oM3Procesos;\r\n if (ioM3Procesos != null) {\r\n oM3Procesos = ioM3Procesos;\r\n } else {\r\n oM3Procesos = new M3Procesos();\r\n }\r\n\r\n oM3Procesos.Fecha = moment(new Date()).format('YYYY-MM-DD');\r\n oM3Procesos.TipoTercero = 1;\r\n oM3Procesos.TDoc = oDataUser.UsuarioSistema.TDOC;\r\n oM3Procesos.NDoc = oDataUser.UsuarioSistema.NDOC;\r\n oM3Procesos.Ubic1 = oDataUser.UsuarioSistema.UBICACION;\r\n oM3Procesos.Ubic2 = -1;\r\n ///AGREGAR NUEVA FUNCIONALIDAD DE HUBS. FLUJO DE TRABAJO\r\n oM3Procesos.IDHub = oDataUser.UsuarioSistema.IDHUB;\r\n oM3Procesos.M3FTrabajo.IdHub = oM3Procesos.IDHub;\r\n oM3Procesos.M3FTrabajo.IdUbic = oM3Procesos.Ubic1;\r\n\r\n oM3Procesos.M3FTrabajo.IdHubPre = -1;\r\n oM3Procesos.M3FTrabajo.IdUbicPre = -1;\r\n\r\n ///FIN AGREGAR NUEVA FUNCIONALIDAD DE HUBS. FLUJO DE TRABAJO\r\n\r\n // oM3Procesos.SubEstadoAnt = \"\";\r\n // oM3Procesos.EstadoAnt = \"\";\r\n\r\n if (oM3Procesos.SubEstadoDes == \"\" && ioM3Procesos == null) {\r\n oM3Procesos.SubEstadoDes = \"Registro\";\r\n oM3Procesos.EstadoDes = \"Activo\";\r\n }\r\n\r\n if (oM3PItemsWEB.SubEstado_o != \"\" && oM3PItemsWEB.Estado_o != \"\") {\r\n oM3Procesos.SubEstadoDes = oM3PItemsWEB.SubEstado_o;\r\n oM3Procesos.EstadoDes = oM3PItemsWEB.Estado_o;\r\n }\r\n\r\n\r\n if (oM3PItemsWEB.IdProceso == \"\" && ioM3Procesos == null) {\r\n oM3Procesos.TMIdProceso = \"M3ECC\";\r\n }\r\n else {\r\n if (oM3PItemsWEB.IdProceso != \"\") {\r\n oM3Procesos.TMIdProceso = oM3PItemsWEB.IdProceso;\r\n }\r\n }\r\n\r\n //oM3Procesos.M3ENC.push(this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser));\r\n this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, null, 0, oM3PDinamicasByActividad)\r\n\r\n // oM3Procesos.Valor = oM3PItemsWEB.dPrecioTotal;\r\n // oM3Procesos.ValorNeto = oM3PItemsWEB.dPrecioTotal;\r\n\r\n return oM3Procesos;\r\n //this.ProcesamientoService(PostServiceM3, oM3Procesos, funcionOK, funcionError);\r\n }\r\n\r\n\r\n //Cargar nuevos adicionales adicionales\r\n public LoadAdicionales(oM3PItemsWEB: M3PItemsWEB, product: TypeM3PrdGrp): M3PItemsWEB {\r\n try {\r\n oM3PItemsWEB.ClavePrdSRV = product.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == \"CLAVEPRODSERV\").VALOR;\r\n oM3PItemsWEB.ClavePrdUnidad = product.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == \"CLAVEUNIDAD\").VALOR;\r\n oM3PItemsWEB.Unidad = product.LoM3PrdAdicionales.find(adi => adi.ATRIBUTO == \"UNIDAD\").VALOR;\r\n } catch {\r\n\r\n }\r\n return oM3PItemsWEB;\r\n }\r\n\r\n //Cargar procesos, retomando desde data\r\n public LoadM3ProcesoFromData(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oM3PDinamicasByActividad: any = null, valorDescuento = 0): M3Procesos {\r\n // oM3Procesos.Valor = (+oM3Procesos.Valor) + (+oM3PItemsWEB.dPrecioTotal);\r\n // oM3Procesos.ValorNeto = oM3Procesos.Valor;\r\n oM3Procesos.Fecha = moment(new Date()).format('YYYY-MM-DD');\r\n if (oM3Procesos.TMIdProceso == \"\" && oM3PItemsWEB.IdProceso != \"\") {\r\n oM3Procesos.TMIdProceso = oM3PItemsWEB.IdProceso;\r\n }\r\n\r\n //oM3Procesos.M3ENC.push(this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser));\r\n this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, null, valorDescuento, oM3PDinamicasByActividad)\r\n\r\n return oM3Procesos;\r\n }\r\n\r\n public LoadM3PEncItemsFromPrdGrl(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oencabezadoItems: Array<M3PEncItems>, oM3PItemsWEB: M3PItemsWEB,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oPadreM3PEncItems: M3PEncItems, valorDescuento = 0, oM3PDinamicasByActividad: any = null) {\r\n\r\n //Validacion de Inventario.\r\n let adiVentaNeg = prodGRPSelected.LoM3PrdAdicionales.find(x => x.ATRIBUTO == \"VENTANEG\")\r\n if (oM3Procesos[\"InventarioError\"]) {\r\n delete oM3Procesos[\"InventarioError\"];\r\n }\r\n if (oM3Procesos.TMIdProceso.toUpperCase() == \"M3ECC\" && prodGRPSelected.LoM3PrdGeneral[0].DISPONIBLE < oM3PItemsWEB.dCantidad && oM3Ubicacion.M3HUBS[0].Tipo == \"WEB\" && !(adiVentaNeg && adiVentaNeg.VALOR)) {\r\n oM3Procesos[\"InventarioError\"] = 'No hay inventario para agregar ' + oM3PItemsWEB.dCantidad + ' Items';\r\n oM3PItemsWEB.dCantidad = prodGRPSelected.LoM3PrdGeneral[0].DISPONIBLE;\r\n } //else {\r\n\r\n var oM3PEncItems = new M3PEncItems();\r\n oM3Procesos.Fecha = moment(new Date()).format('YYYY-MM-DD');\r\n oM3PEncItems = this.LoadM3PEncItemsFromPrdGrlItem(oM3Procesos, prodGRPSelected, oM3Procesos.M3ENC, oM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oPadreM3PEncItems, valorDescuento);\r\n\r\n if (oM3Procesos[\"MensajeError\"]) {\r\n delete oM3Procesos[\"MensajeError\"];\r\n }\r\n if (oPadreM3PEncItems) {\r\n //Tiene un encabezado padre.\r\n oM3PEncItems.IdEncPadre = oPadreM3PEncItems.ID;\r\n }\r\n\r\n if (!oM3PEncItems[\"MensajeError\"]) {\r\n var olM3PrdPackDet: Array<M3PrdPackDet>;\r\n olM3PrdPackDet = prodGRPSelected.LoM3PrdGeneral[0].M3PACK\r\n if (olM3PrdPackDet && olM3PrdPackDet.length > 0) {\r\n\r\n //let valorDescuentoPack = this.calcularPorcentajeDescuentoCombo(prodGRPSelected);\r\n\r\n for (var i = 0; i < olM3PrdPackDet.length; i++) {\r\n var oM3PrdPackDet: M3PrdPackDet = olM3PrdPackDet[i];\r\n var packM3PItemsWEB: M3PItemsWEB;\r\n\r\n if (oM3PrdPackDet.oM3PItemsWEB) {\r\n packM3PItemsWEB = oM3PrdPackDet.oM3PItemsWEB;\r\n }\r\n else {\r\n packM3PItemsWEB = Object.assign({}, oM3PItemsWEB);\r\n packM3PItemsWEB.dCantidad = oM3PrdPackDet.Cantidad;\r\n }\r\n packM3PItemsWEB.PathImagen = oM3PrdPackDet.gsPathImagen;\r\n packM3PItemsWEB.dCantidad = packM3PItemsWEB.dCantidad * oM3PItemsWEB.dCantidad;\r\n //this.CalcularPreciosPCKG(oM3PrdPackDet);\r\n packM3PItemsWEB.IDEncRepetido = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"ID\") + i + 2; //Esto funciona si tiene solo 2 niveles\r\n //Si esto se cumple este producto es un pack y tiene productos asociados.\r\n oM3PrdPackDet.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = 0;\r\n try {\r\n let prdGeneral = oM3PrdPackDet.M3GRP.LoM3PrdGeneral[0].M3Cods.find(x => x.IdCodigo == \"UPC\");\r\n if (prdGeneral && prdGeneral.Valor) {\r\n packM3PItemsWEB.CodigoBarras = prdGeneral.Valor;\r\n }\r\n }\r\n catch(e) {\r\n console.warn(\"no añadi codigo de barras a producto hijo: \" + oM3PrdPackDet.SKUHIJO)\r\n }\r\n this.LoadM3PEncItemsFromPrdGrl(oM3Procesos, oM3PrdPackDet.M3GRP, oM3Procesos.M3ENC, packM3PItemsWEB, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PEncItems, 0, oM3PDinamicasByActividad);\r\n }\r\n }\r\n\r\n //JAGM 20190623, esto es cuando se modifica la cantidad de prodcutos existentes.\r\n if (oM3PItemsWEB.IDEncRepetido != -1) {\r\n oM3PEncItems.ID = oM3PItemsWEB.IDEncRepetido;\r\n }\r\n //JAGM 2019 envio de padre desde instruccion mas arriba\r\n if (oM3PItemsWEB.IDEncPadre != -1) {\r\n oM3PEncItems.IdEncPadre = oM3PItemsWEB.IDEncPadre;\r\n oM3PEncItems.TipoAgrupacion = oM3PItemsWEB.TipoAgrupacion;\r\n }\r\n if (oM3PDinamicasByActividad && oM3PDinamicasByActividad.length > 0) {\r\n oM3PDinamicasByActividad.forEach(din => {\r\n oM3PEncItems.M3PDinamByActividad.push({... din});\r\n });\r\n }\r\n\r\n oM3Procesos.M3ENC.push(oM3PEncItems);\r\n\r\n }\r\n else {\r\n oM3Procesos[\"MensajeError\"] = oM3PEncItems[\"MensajeError\"];\r\n }\r\n oM3PItemsWEB.IDEncProcesado = oM3PEncItems.ID;\r\n //}\r\n }\r\n\r\n calcularPorcentajeDescuentoCombo(prodGRPSelected: TypeM3PrdGrp) {\r\n let valorDescuentoPack = 0;\r\n let valorItemsComboSuma = 0;\r\n let valorFinalCombo = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO;\r\n\r\n prodGRPSelected.LoM3PrdGeneral[0].M3PACK.forEach(prdPack => {\r\n let cantidad = prdPack.M3GRP.Cantidad ? prdPack.M3GRP.Cantidad : 1;\r\n let infNivelesPrcio = this.VerificarPrecioByNiveles(prdPack.M3GRP, cantidad);\r\n console.debug(prdPack.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.IDLISTA)\r\n console.debug(prdPack.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO)\r\n valorItemsComboSuma += (prdPack.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO * cantidad);\r\n });\r\n\r\n if (valorItemsComboSuma > valorFinalCombo) {\r\n valorDescuentoPack = 100 - (valorFinalCombo * 100 / valorItemsComboSuma);\r\n }\r\n console.debug(valorDescuentoPack)\r\n return valorDescuentoPack;\r\n }\r\n\r\n\r\n /**\r\n * Recalculo de precios de hijos del paquete\r\n * @param oM3PrdPackDet \r\n */\r\n public CalcularPreciosPCKG(oM3PrdPackDet: M3PrdPackDet) {\r\n oM3PrdPackDet.M3GRP.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = 0;\r\n }\r\n\r\n public loadM3PEncItemsFromPromocionCombo(oM3Procesos: M3Procesos, productosHijosDelCombo: Array<M3PEncItems>, codigo: string, valor, dCantidad: number) {\r\n let productoCombo = new M3PEncItems();\r\n\r\n productoCombo.IdProducto = codigo;\r\n productoCombo.Lote = \"1\";\r\n productoCombo.ID = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"ID\") + 1; //JAGM, cambio de ID, caso cuando se agrega prd:1, prd:2 y de nuevo prd:1. En este caso en lógica anterior, se hace remove de item. y los ID quedaban repetidos.\r\n productoCombo.Orden = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"Orden\") + 1;\r\n productoCombo.Nombre = `Combo - ${productosHijosDelCombo.map(x=> x.IdProducto).join('-')}`;\r\n\r\n\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(moment(new Date()).format('YYYY-MM-DDTHH:mm:ss'), \"FECHAIN\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"true\", \"ESPRODPROMOCOMBO\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"true\", \"ESPRODPROMO\")); // TRUE-> SI ES UN PRODUCTO POR PROMOCION, FALSE-> DE OTRO MODO\r\n //Detalles de factura electronica\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"ENCPROMO\", \"TIPO_PRD\"));\r\n /**FIN INFORMACION GENERAL */\r\n\r\n //** INICIO VALORES UNITARIOS */\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PRECIOUNITBASE\")); //Precio Sin impuestos\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUESTOS\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUNIT\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PUNITSINIMPUESTO\"));//Sin descuento incluido Y sin Impuestos\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PUNIT\"));//Sin descuento incluido ------ Nunca Cambia\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"PUNITNETO\"));//Con descuento incluido------ Nunca Cambia\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"VUNITPROMO\"));//Unitario Promocion ------ Nunca Cambia\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"UNITFIDEL\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUNIT\"));\r\n //** FIN VALORES UNITARIOS */\r\n\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(dCantidad.toString(), \"CANTIDAD\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALIMPUESTOS\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"FIDELIZACION\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(\"0\", \"TOTALPROMO\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle(valor, \"CTBLDIMPPRD\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"PRECIOTOTALSINDTO\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"SUBTOTAL\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"PRECIOTOTALBASE\"));\r\n productoCombo.M3DET.push(this.LoadM3PDetalle((+valor * dCantidad).toString(), \"PRECIOTOTAL\"));\r\n\r\n oM3Procesos.M3ENC.push(productoCombo);\r\n productosHijosDelCombo.forEach(producto => {\r\n producto.ID = +this.GetMaxAtributoFromLista(oM3Procesos.M3ENC, \"ID\") + 1; //JAGM, cambio de ID, caso cuando se agrega prd:1, prd:2 y de nuevo prd:1. En este caso en lógica anterior, se hace remove de item. y los ID quedaban repetidos.\r\n producto.IdEncPadre = productoCombo.ID;\r\n oM3Procesos.M3ENC.push(producto);\r\n });\r\n\r\n this.recalcularM3Proceso(oM3Procesos);\r\n return productoCombo;\r\n }\r\n\r\n recalcularM3Proceso(oM3Procesos: M3Procesos) {\r\n let productosAplSumaValor = oM3Procesos.M3ENC.filter(oM3ENC => {\r\n let detCantidad = oM3ENC.M3DET.find(x => x.NombreConcepto == \"CANTIDAD\");\r\n let detEsPrdCombo = oM3ENC.M3DET.find(x => x.NombreConcepto == \"ESPRODPROMOCOMBO\");\r\n return detCantidad && +detCantidad.Valor > 0 && !(detEsPrdCombo && detEsPrdCombo.Valor == \"true\")\r\n });\r\n\r\n oM3Procesos.ValorNeto = 0;\r\n oM3Procesos.Valor = 0;\r\n\r\n //for (const oM3ENC of this.oM3Procesos.M3ENC.filter(enc => !enc.IdEncPadre || enc.IdEncPadre <= 0)) {\r\n for (const oM3ENC of productosAplSumaValor) {\r\n oM3Procesos.ValorNeto += +oM3ENC.M3DET.find(x => x.NombreConcepto == \"PRECIOTOTAL\").Valor;\r\n oM3Procesos.Valor += +oM3ENC.M3DET.find(x => x.NombreConcepto == \"SUBTOTAL\").Valor;\r\n }\r\n }\r\n\r\n //Cargar M3Proceso encabezado items, desde producto general\r\n public LoadM3PEncItemsFromPrdGrlItem(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oencabezadoItems: Array<M3PEncItems>, oM3PItemsWEB: M3PItemsWEB,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oPadreM3PEncItems: M3PEncItems = undefined, valorDescuento = 0): M3PEncItems {\r\n\r\n var oM3PEncItems = new M3PEncItems();\r\n var oM3PrdGeneral: M3PrdGeneral;\r\n var dPRECIOUnitBase = 0;\r\n var infNivelesPrcio;\r\n var oPromocionProcesada: PromocionProcesada;\r\n var dTotalImpuestosTotal: number = 0;\r\n var dUnitarioMonedero: number = 0;\r\n var dUnitarioPromo: number = 0;\r\n //Verificar el precio a usar, usando la logica de niveles de precios.\r\n infNivelesPrcio = this.VerificarPrecioByNiveles(prodGRPSelected, oM3PItemsWEB.dCantidad);\r\n if (valorDescuento > 0) {\r\n oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotalPromocion = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO * valorDescuento / 100;\r\n oPromocionProcesada.PrecioTotal = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO - oPromocionProcesada.PrecioTotalPromocion;\r\n oPromocionProcesada.ListPromocionesAsociadas = [];\r\n }\r\n else {\r\n oPromocionProcesada = this.CalcularPromociones(oM3Procesos, prodGRPSelected, oM3Ubicacion, oM3ENCPROMO, oDataUser, oM3PItemsWEB);\r\n }\r\n\r\n //Valida si el producto está restingido\r\n if (!this.validarProductoRestringido(oPromocionProcesada)) {\r\n this.AsignarPromocionesCombinadas(oM3Procesos, oPromocionProcesada, oM3PEncItems);\r\n\r\n //Calculo del total de puntos y el valor total de la promoción por la cqantidad de productos de la misma referencia\r\n dUnitarioMonedero = oPromocionProcesada.ValorTotalMonedero; //Unitario Monedero\r\n oPromocionProcesada.ValorTotalMonedero = +bigDecimal.multiply(oPromocionProcesada.ValorTotalMonedero, oM3PItemsWEB.dCantidad); //No se utiliza, se deja para usos adelante\r\n\r\n dUnitarioPromo = oPromocionProcesada.PrecioTotalPromocion; //Promocion unitario\r\n oPromocionProcesada.PrecioTotalPromocion = +bigDecimal.multiply(oPromocionProcesada.PrecioTotalPromocion, oM3PItemsWEB.dCantidad); //No se utiliza, se deja para usos adelante\r\n oM3PEncItems.M3DetCupones = this.get_list_cupones_from_promo(oPromocionProcesada, +oM3PItemsWEB.dCantidad);\r\n\r\n //Calculo de precio total, despues de promociones\r\n oM3PItemsWEB.dPrecioTotal = +bigDecimal.multiply(oPromocionProcesada.PrecioTotal, oM3PItemsWEB.dCantidad);\r\n\r\n //Cargar producto \r\n oM3PrdGeneral = prodGRPSelected.LoM3PrdGeneral[0];\r\n\r\n oM3PEncItems.IdProducto = oM3PrdGeneral.SKU;\r\n oM3PEncItems.Lote = oM3PrdGeneral.LOTE;\r\n oM3PEncItems.ID = +this.GetMaxAtributoFromLista(oencabezadoItems, \"ID\") + 1; //JAGM, cambio de ID, caso cuando se agrega prd:1, prd:2 y de nuevo prd:1. En este caso en lógica anterior, se hace remove de item. y los ID quedaban repetidos.\r\n oM3PEncItems.Orden = +this.GetMaxAtributoFromLista(oencabezadoItems, \"Orden\") + 1;\r\n oM3PEncItems.Nombre = oM3PrdGeneral.NOMBRE1;\r\n oM3PEncItems.DISPONIBLE = oM3PrdGeneral.DISPONIBLE;\r\n oM3PEncItems.PathImage = oM3PItemsWEB.PathImagen;\r\n oM3PEncItems.CodigoBarras = oM3PItemsWEB.CodigoBarras;\r\n if (oM3Ubicacion && oM3Ubicacion.M3UbiAdicionales){\r\n let ubiImpFijo = oM3Ubicacion.M3UbiAdicionales.find(x => x.Atributo == \"IMPFIJO\");\r\n if (ubiImpFijo && ubiImpFijo.Valor != \"\"){\r\n oM3PrdGeneral.CTBLDIMPPRD = ubiImpFijo.Valor;\r\n }\r\n }\r\n let pTotalBase = this.CalculatePrecioBase(oM3PrdGeneral.CTBLDIMPPRD, this.oMathTF.round(bigDecimal.multiply(oPromocionProcesada.PrecioTotal, oM3PItemsWEB.dCantidad), 2));\r\n if (oM3PItemsWEB.dCantidad != 0) {\r\n dPRECIOUnitBase = pTotalBase / oM3PItemsWEB.dCantidad;\r\n } else {\r\n dPRECIOUnitBase = 0;\r\n }\r\n\r\n dTotalImpuestosTotal = this.LoadM3PImpuestosFromPrdGrl(oM3PrdGeneral.CTBLDIMPPRD, oM3PEncItems, pTotalBase, oM3PItemsWEB.dCantidad, oPromocionProcesada.PrecioTotal);\r\n /** INICIO INFORMACION GENERAL */\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(moment(new Date()).format('YYYY-MM-DDTHH:mm:ss'), \"FECHAIN\")); //------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDPRD, \"CTBLDPRD\")); //------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.BisObsequio.toString(), \"ESOBSEQUIO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.SKP1, \"PRD_ESTILO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDIMPPRD, \"CTBLDIMPPRD\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.observacion.toString(), \"OBSERVACION\")); //------ Nunca Cambia\r\n if (oM3PItemsWEB.PathImagen) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.PathImagen, \"PATHIMAGEN\"));\r\n }\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.BisProductoPromo.toString(), \"ESPRODPROMO\")); // TRUE-> SI ES UN PRODUCTO POR PROMOCION, FALSE-> DE OTRO MODO\r\n //Detalles de factura electronica\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(prodGRPSelected.TIPO, \"TIPO_PRD\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.Unidad, \"UNIDAD\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.ClavePrdSRV, \"CLAVEPRODSERV\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.ClavePrdUnidad, \"CLAVEUNIDAD\"));\r\n this.AddItemsInterfaz(oM3PEncItems, prodGRPSelected.LoM3PrdAdicionales);\r\n this.AdicionalesToDetalles(oM3PEncItems, prodGRPSelected.LoM3PrdAdicionales)\r\n this.camposAdicionalesToDetalles(oM3PEncItems, oM3PItemsWEB)\r\n this.LoadDetalleNivelesPrecio(infNivelesPrcio, oM3PEncItems);\r\n this.AddInfoPromocionesADetalle(oPromocionProcesada, oM3PEncItems, oM3PItemsWEB.dCantidad); // Lista de Promociones \r\n /**FIN INFORMACION GENERAL */\r\n\r\n //** INICIO VALORES UNITARIOS */\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dPRECIOUnitBase.toString(), \"PRECIOUNITBASE\")); //Precio Sin impuestos\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dTotalImpuestosTotal.toString(), \"TOTALIMPUESTOS\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle((this.oMathTF.round(this.GetUnitarioByTotal(oM3PItemsWEB.dCantidad, oM3PEncItems, \"TOTALIMPUESTOS\"), 2)).toString(), \"TOTALIMPUNIT\"));\r\n //oM3PEncItems.M3DET.push(this.LoadM3PDetalle((+oM3PrdGeneral.LoM3PrdLista.PRECIO - +dTotalImpuestosUnitario).toString(), \"PUNITSINIMPUESTO\"));//Sin descuento incluido Y sin Impuestos //------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle((+dPRECIOUnitBase + +dUnitarioPromo).toString(), \"PUNITSINIMPUESTO\"));//Sin descuento incluido Y sin Impuestos //------ Nunca Cambia //FS 20190725 Correccion en la fomra de calcularlo\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.LoM3PrdLista.PRECIO.toString(), \"PUNIT\"));//Sin descuento incluido ------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oPromocionProcesada.PrecioTotal.toString(), \"PUNITNETO\"));//Con descuento incluido------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dUnitarioMonedero.toString(), \"UNITFIDEL\"));//Unitario fidelizacion ------ Nunca Cambia\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(dUnitarioPromo.toString(), \"VUNITPROMO\"));//Unitario Promocion ------ Nunca Cambia\r\n if (this.gsIdkatios == \"CTN\") {\r\n let listaSR = prodGRPSelected.LoM3PrdGeneral[0].LoM3ListaPrecio.find(x => x.IDLISTA == \"2\");\r\n if (listaSR) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(prodGRPSelected.LoM3PrdGeneral[0].LoM3ListaPrecio.find(x => x.IDLISTA == \"2\").PRECIO.toString(), \"PRECIOSR\"));\r\n }\r\n }\r\n //** FIN VALORES UNITARIOS */\r\n\r\n // *** Informacion de acciones en el cliente ***\r\n if (prodGRPSelected.encontradoLocal) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(\"LOCAL\", \"CONSULTOEN\"));//Unitario Promocion ------ Nunca Cambia\r\n } else {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(\"SERVIDOR\", \"CONSULTOEN\"));//Unitario Promocion ------ Nunca Cambia\r\n }\r\n\r\n\r\n this.ValoresCalculadosProceso(oM3PEncItems, oM3PItemsWEB.dCantidad);\r\n\r\n //if (!oPadreM3PEncItems) {\r\n oM3Procesos.Valor = (+oM3Procesos.Valor) + (+oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"SUBTOTAL\").Valor) // (+oM3PItemsWEB.dPrecioTotal);\r\n oM3Procesos.ValorNeto = (+oM3Procesos.ValorNeto) + (+oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"PRECIOTOTAL\").Valor);\r\n //}\r\n\r\n //Verificar obsequios del producto que se ingreso al carrito de compras\r\n this.VerificarObsequios(oPromocionProcesada, oM3PItemsWEB.dCantidad, oM3PEncItems);\r\n this.turnOnPromos(oPromocionProcesada)\r\n }\r\n else {\r\n oM3PEncItems[\"MensajeError\"] = \"Producto Restringido\";\r\n }\r\n\r\n return oM3PEncItems;\r\n }\r\n\r\n /**\r\n * Retorna true si este producto se encuentra restringido\r\n * @param oPromocionProcesada \r\n */\r\n public validarProductoRestringido(oPromocionProcesada: PromocionProcesada): boolean {\r\n if (oPromocionProcesada.ListPromocionesAsociadas) {\r\n let promoRestringido = oPromocionProcesada.ListPromocionesAsociadas.find(x => x.Tipo == \"RESTRICCION\");\r\n if (promoRestringido) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }\r\n\r\n \r\n\r\n /**\r\n * Excluye todos los impuestos dejando solo el FIJO si es de la ubicacion dada \r\n */\r\n public GetMaxAtributoFromLista(lista, atributo) {\r\n if (lista.length > 0) {\r\n let listID = lista.map(x => x[atributo]);\r\n return Math.max.apply(Math, listID);\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Valores Calculados por proceso.\r\n * @param oM3PEncItems \r\n * @param dCantidad \r\n */\r\n public ValoresCalculadosProceso(oM3PEncItems: M3PEncItems, dCantidad: number) {\r\n /** INICIO VALORES DINAMICOS */\r\n // var dTotalImpuestos = (+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"TOTALIMPUNIT\"));\r\n // var dPrecioTotalSinDto = this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNIT\")\r\n // var dSubTotal = Math.round((+dPrecioTotalSinDto - +dTotalImpuestos) * 100) / 100;\r\n\r\n let subTotal = 0;\r\n let precioTotalSinDto = 0;\r\n let totalImpuestos\r\n //Agregar Impuestos\r\n totalImpuestos = this.agregarImpuesto(oM3PEncItems, dCantidad);\r\n\r\n //FS 20190725 Arreglo en el calculo de totales en caso de haber impuestos\r\n if (oM3PEncItems.M3PImpuestos.length > 0) {\r\n //Subtotal Sumas de las bases\r\n subTotal = this.oMathTF.round(((this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PRECIOUNITBASE\"), 2)) + (+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"VUNITPROMO\"))), 2);\r\n totalImpuestos = this.getValorTotalFromImpuestos(oM3PEncItems, \"Valor\");\r\n precioTotalSinDto = subTotal + totalImpuestos;\r\n }\r\n else {\r\n //Se asume que no hay impuestos entonces el subTotal es igual al precioTotalSinDto\r\n precioTotalSinDto = this.oMathTF.round(this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNIT\"), 2);\r\n subTotal = precioTotalSinDto;\r\n }\r\n this.InsUpdDetItem(oM3PEncItems, dCantidad.toString(), \"CANTIDAD\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(totalImpuestos, 2)).toString(), \"TOTALIMPUESTOS\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetUnitarioByTotal(dCantidad, oM3PEncItems, \"TOTALIMPUESTOS\"), 2)).toString(), \"TOTALIMPUNIT\");\r\n\r\n //La fidelizacion es un porcantaje por ende no debe multiplicarse this.InsUpdDetItem(oM3PEncItems, this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"UNITFIDEL\").toString(), \"FIDELIZACION\");\r\n this.InsUpdDetItem(oM3PEncItems, oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"UNITFIDEL\").Valor, \"FIDELIZACION\");\r\n //this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNITNETO\"), 2)).toString(), \"PRECIOTOTAL\");\r\n //this.InsUpdDetItem(oM3PEncItems, (+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PUNITNETO\")).toString(), \"PRECIOTOTALREAL\");\r\n this.InsUpdDetItem(oM3PEncItems, precioTotalSinDto.toString(), \"PRECIOTOTALSINDTO\");\r\n this.InsUpdDetItem(oM3PEncItems, subTotal.toString(), \"SUBTOTAL\");\r\n this.InsUpdDetItem(oM3PEncItems, moment(new Date()).format('YYYY-MM-DD'), \"FUT\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"VUNITPROMO\"), 2)).toString(), \"TOTALPROMO\");\r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round(+this.GetTotalByUnitario(dCantidad, oM3PEncItems, \"PRECIOUNITBASE\"), 2)).toString(), \"PRECIOTOTALBASE\"); //Precio Sin impuestos \r\n this.InsUpdDetItem(oM3PEncItems, (this.oMathTF.round((subTotal + +oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"TOTALIMPUESTOS\").Valor - +oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"TOTALPROMO\").Valor), 2)).toString(), \"PRECIOTOTAL\");\r\n\r\n /** FIN VALORES DINAMICOS */\r\n\r\n if (oM3PEncItems.M3PImpuestos.length > 0 && dCantidad == 0) {//Si la cantidad es 0 significa que se está borrando el item o es un obsequio, por lo que no tiene sentido que tenga M3PImpuesto\r\n oM3PEncItems.M3PImpuestos = [];\r\n }\r\n }\r\n\r\n /**\r\n * Retorna la sumatoria de los valores de un atributo dado del arreglo de impuestos\r\n * @param oM3PEncItems \r\n * @param atributo \r\n */\r\n public getValorTotalFromImpuestos(oM3PEncItems: M3PEncItems, atributo: string): number {\r\n let sumatoria = 0;\r\n for (let _i = 0; _i < oM3PEncItems.M3PImpuestos.length; _i++) {\r\n const impuesto = oM3PEncItems.M3PImpuestos[_i];\r\n sumatoria = sumatoria + (+impuesto[atributo]);\r\n }\r\n return this.oMathTF.round(sumatoria,2);\r\n }\r\n\r\n private agregarImpuesto(oM3PEncItems: M3PEncItems, cantidad: number) {\r\n let det_ctbld_imp_prd = oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"CTBLDIMPPRD\");\r\n let det_precio_unit_base = oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"PRECIOUNITBASE\");\r\n let valorTotalImpuestos: number = 0;\r\n if (det_ctbld_imp_prd && det_precio_unit_base) {\r\n valorTotalImpuestos = this.LoadM3PImpuestosFromPrdGrl(det_ctbld_imp_prd.Valor, oM3PEncItems, +bigDecimal.multiply(det_precio_unit_base.Valor, cantidad), cantidad, +oM3PEncItems.M3DET.find(det => det.NombreConcepto == \"PUNITNETO\").Valor);\r\n }\r\n return this.oMathTF.round(valorTotalImpuestos,2);\r\n }\r\n\r\n private InsUpdDetItem(oM3PEncItems: M3PEncItems, valor: string, sConcepto: string) {\r\n var oDet: M3PDetalleItems;\r\n oDet = oM3PEncItems.M3DET.find(det => det.NombreConcepto == sConcepto);\r\n if (oDet) {\r\n // Existe Actualiza\r\n oDet.Valor = valor;\r\n } else {\r\n //No existe agrega\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(valor.toString(), sConcepto));\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valor total\r\n * @param cantidad Nueva Cantidad \r\n * @param oM3PEncItems \r\n * @param DescUnitario \r\n */\r\n private GetTotalByUnitario(cantidad: number, oM3PEncItems: M3PEncItems, DescUnitario: string) {\r\n try {\r\n var unitario = oM3PEncItems.M3DET.find(det => det.NombreConcepto == DescUnitario).Valor;\r\n return +bigDecimal.multiply(unitario, cantidad);\r\n } catch {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener valor unitario\r\n * @param cantidad \r\n * @param oM3PEncItems \r\n * @param DescTotal \r\n */\r\n private GetUnitarioByTotal(cantidad: number, oM3PEncItems: M3PEncItems, DescTotal: string) {\r\n try {\r\n if (+cantidad == 0) {\r\n return 0;\r\n }\r\n var total = oM3PEncItems.M3DET.find(det => det.NombreConcepto == DescTotal).Valor;\r\n return +total / +cantidad;\r\n } catch {\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar detalles relacionados con la informacion de sw externo.\r\n * @param oM3PEncItems Objeto donde se guardará los nuevos atributos.\r\n * @param oAdicionales Desde donde se sacará la información.\r\n */\r\n public AddItemsInterfaz(oM3PEncItems: M3PEncItems, oAdicionales: Array<M3PrdAdicionales>) {\r\n try {\r\n var oAdicionalesFilter: Array<M3PrdAdicionales>;\r\n oAdicionalesFilter = oAdicionales.filter(a => a.ATRIBUTO.startsWith(\"CSIA_\"));\r\n for (var i = 0; i < oAdicionalesFilter.length; i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oAdicionalesFilter[i].VALOR, oAdicionalesFilter[i].ATRIBUTO));\r\n }\r\n\r\n } catch {\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Adicionar detalles \r\n * @param oM3PEncItems Objeto donde se guardará los nuevos atributos.\r\n * @param oAdicionales Desde donde se sacará la información.\r\n */\r\n public AdicionalesToDetalles(oM3PEncItems: M3PEncItems, oAdicionales: Array<M3PrdAdicionales>) {\r\n try {\r\n for (var i = 0; i < oAdicionales.length; i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oAdicionales[i].VALOR, \"ADC_\" + oAdicionales[i].ATRIBUTO));\r\n }\r\n } catch {\r\n\r\n }\r\n\r\n }\r\n\r\n public camposAdicionalesToDetalles(oM3PEncItems: M3PEncItems, oM3PItemsWEB: M3PItemsWEB) {\r\n try {\r\n for (var i = 0; i < oM3PItemsWEB.CamposAdicionales.length; i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PItemsWEB.CamposAdicionales[i].VALOR, \"CAMADC_\" + oM3PItemsWEB.CamposAdicionales[i].ATRIBUTO));\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n /**\r\n * Agregar informacion de promociones Nombre, ID. a detalle del encabezado de producto agregado\r\n * @param oPromocionProcesada Informacion de promociones procesadas\r\n * @param oM3PEncItems Encabezado de items\r\n */\r\n public GenerarInfoPromocionesProcesadas(oPromocionProcesada: PromocionProcesada, iCantidad: number, aplicadas = true) {\r\n var sNombres: string = \"\";\r\n var sIds: string = \"\";\r\n var sValores: string = \"\";\r\n var data;\r\n if (oPromocionProcesada && oPromocionProcesada.ListPromocionesAsociadas && oPromocionProcesada.ListPromocionesAsociadas.length > 0) {\r\n if (aplicadas) {\r\n oPromocionProcesada.ListPromocionesAsociadas.filter(x => x.Aplicada).filter(x => x.PromocionCombinada == null).forEach(promo => {\r\n sNombres = sNombres + promo.Nombre + \",\";\r\n sIds = sIds + promo.IDPromocion + \",\";\r\n sValores = sValores + bigDecimal.multiply(promo.Valor, iCantidad) + \",\";\r\n });\r\n }\r\n else {\r\n oPromocionProcesada.ListPromocionesAsociadas.filter(x => !x.Aplicada).filter(x => x.PromocionCombinada == null).forEach(promo => {\r\n sNombres = sNombres + promo.Nombre + \",\";\r\n sIds = sIds + promo.IDPromocion + \",\";\r\n sValores = sValores + bigDecimal.multiply(promo.Valor, iCantidad) + \",\";\r\n });\r\n }\r\n data = { \"NOMBRES\": sNombres, \"ID\": sIds, \"VALORES\": sValores }\r\n return data;\r\n }\r\n return null;\r\n }\r\n\r\n\r\n\r\n /**\r\n * Adicionar detalle de promociones\r\n * @param oM3PEncItems \r\n * @param sNombres \r\n * @param sIds \r\n */\r\n public AddInfoPromocionesADetalle(oPromocionProcesada: PromocionProcesada, oM3PEncItems: M3PEncItems, iCantidad: number) {\r\n var data = this.GenerarInfoPromocionesProcesadas(oPromocionProcesada, iCantidad)\r\n if (data) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.NOMBRES, \"NOMB_PROMOC\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.ID, \"ID_PROMOC\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.VALORES, \"VAL_PROMOC\"));\r\n\r\n //Ahora se agrega una dinamica por atributo de la promo para facilitar la retoma de esta información\r\n let listNombre = data.NOMBRES.replace(/.$/, \"\").split(\",\");\r\n let listId = data.ID.replace(/.$/, \"\").split(\",\");\r\n let listValor = data.VALORES.replace(/.$/, \"\").split(\",\");\r\n\r\n for (let _i = 0; _i < listId.length; _i++) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(listNombre[_i], \"NOMB_PROMOC_\" + _i));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(listId[_i], \"ID_PROMOC_\" + _i));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(listValor[_i], \"VAL_PROMOC_\" + _i));\r\n }\r\n }\r\n\r\n data = this.GenerarInfoPromocionesProcesadas(oPromocionProcesada, iCantidad, false)\r\n if (data) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.NOMBRES, \"NOMB_PROMOC_NOPRO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.ID, \"ID_PROMOC_NOPRO\"));\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(data.VALORES, \"VAL_PROMOC_NOPRO\"));\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Cargar a detalle informacion de niveles de precio\r\n * @param infNivelesPrcio Informacion de niveles de precio\r\n * @param oM3PEncItems Objeto donde se cargará la informacion\r\n */\r\n public LoadDetalleNivelesPrecio(infNivelesPrcio, oM3PEncItems: M3PEncItems) {\r\n if (infNivelesPrcio && infNivelesPrcio.NIVEL !== undefined) {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(infNivelesPrcio.NIVEL, \"NIVELPRECIO\"));\r\n }\r\n }\r\n\r\n /**\r\n * Verificar con que nivel de precio va a trabajar\r\n * @param prodGRPSelected El producto ingresado\r\n * @param iCantidad La cantidad de productos que va a ingresar\r\n */\r\n public VerificarPrecioByNiveles(prodGRPSelected: TypeM3PrdGrp, iCantidad: number) {\r\n try {\r\n var oM3Presentaciones: M3Presentaciones;\r\n var jRespNiveles = {};\r\n if (prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones &&\r\n prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones.length > 0) {\r\n\r\n oM3Presentaciones = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones.find(x => iCantidad >= x.TOPE);\r\n if (oM3Presentaciones) {\r\n prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oM3Presentaciones.VALOR;\r\n jRespNiveles = { \"PRECIO\": oM3Presentaciones.VALOR, \"NIVEL\": oM3Presentaciones.NIVELPRS };\r\n }\r\n }\r\n return jRespNiveles;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n public VerificarPrecioByNivelesGeneral(oM3PrdGeneral: M3PrdGeneral, iCantidad: number) {\r\n try {\r\n var oM3Presentaciones: M3Presentaciones;\r\n var jRespNiveles = {};\r\n if (oM3PrdGeneral.LoM3PrdLista.M3Presentaciones && oM3PrdGeneral.LoM3PrdLista.M3Presentaciones.length > 0) {\r\n\r\n oM3Presentaciones = oM3PrdGeneral.LoM3PrdLista.M3Presentaciones.find(x => iCantidad >= x.TOPE);\r\n if (oM3Presentaciones) {\r\n oM3PrdGeneral.LoM3PrdLista.PRECIO = oM3Presentaciones.VALOR;\r\n jRespNiveles = { \"PRECIO\": oM3Presentaciones.VALOR, \"NIVEL\": oM3Presentaciones.NIVELPRS };\r\n }\r\n }\r\n return jRespNiveles;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Retorna los cupones generados de la lista de promoprocesadas\r\n * @param oPromocionProcesada \r\n */\r\n public get_list_cupones_from_promo(oPromocionProcesada: PromocionProcesada, cantidad: number): Array<M3PDetalleCupon> {\r\n var list_cupones = Array<M3PDetalleCupon>();\r\n\r\n if (oPromocionProcesada.ListPromocionesAsociadas) {\r\n for (let _i = 0; _i < oPromocionProcesada.ListPromocionesAsociadas.length; _i++) {\r\n var promo_asociada = oPromocionProcesada.ListPromocionesAsociadas[_i];\r\n\r\n if (promo_asociada.IdCupon) {\r\n let cupon = new M3PDetalleCupon();\r\n cupon.IdCupon = promo_asociada.IdCupon;\r\n cupon.Cantidad = cantidad;\r\n list_cupones.push(cupon);\r\n }\r\n }\r\n }\r\n\r\n return list_cupones;\r\n }\r\n\r\n //Asignar a promociones combianas desde lo que se encontró al encabezado item, del producto seleccionado\r\n public AsignarPromocionesCombinadas(oM3Procesos: M3Procesos, oPromocionProcesada: PromocionProcesada, oM3PEncItems: M3PEncItems) {\r\n if (oPromocionProcesada != null && oPromocionProcesada.ListPromocionesAsociadas != null) {\r\n oPromocionProcesada.ListPromocionesAsociadas.forEach(promoAso => {\r\n if (promoAso.PromocionCombinada != null) {\r\n //Se agrega promocion combinada a encabezado de items.\r\n oM3PEncItems.PromoCombinadas.push(promoAso.PromocionCombinada);\r\n ///Agregar promociones combinadas\r\n var oM3PDetalleItems: M3PDetalleItems;\r\n oM3PDetalleItems = oM3PEncItems.M3DET.find(x => x.NombreConcepto == \"PROMOCOMBI\")\r\n if (oM3PDetalleItems) {\r\n oM3PDetalleItems.Valor = JSON.stringify(oM3PEncItems.PromoCombinadas);\r\n }\r\n else {\r\n oM3PEncItems.M3DET.push(this.LoadM3PDetalle(JSON.stringify(oM3PEncItems.PromoCombinadas), \"PROMOCOMBI\"));\r\n }\r\n this.AsignarPromocionesCombinadasAM3Proceso(oM3Procesos, promoAso.PromocionCombinada);\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Asignar promociones combiandas a M3 Proceso, este, valida que no exista un promocion anterior.\r\n */\r\n public AsignarPromocionesCombinadasAM3Proceso(oM3Procesos: M3Procesos, oPromocionCombinada: PromocionCombinada) {\r\n if (!oM3Procesos.PromosCombinadas) {\r\n oM3Procesos.PromosCombinadas = new Array<PromocionCombinada>();\r\n }\r\n if (oM3Procesos.PromosCombinadas.find(x => x.IdPromocionCombinada == oPromocionCombinada.IdPromocionCombinada)) {\r\n /////// existe\r\n } else {\r\n ////// No Existe\r\n oM3Procesos.PromosCombinadas.push(oPromocionCombinada);\r\n }\r\n if (oM3Procesos.PromosCombinadas) {\r\n this.AddDinamicaProcesoCombinadas(oM3Procesos);\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Adicionar a dinamicas proceso de combinadas\r\n * @param ioM3Proceso \r\n */\r\n public AddDinamicaProcesoCombinadas(ioM3Proceso: M3Procesos) {\r\n var oM3PDinamicasFinded: M3PDinamicas;\r\n oM3PDinamicasFinded = ioM3Proceso.lM3PDinamicas.find(x => x.Nombre == \"COMBINADA\");\r\n if (oM3PDinamicasFinded) {\r\n var arrPromo: Array<PromocionCombinada> = JSON.parse(oM3PDinamicasFinded.Valor);\r\n for (var i = 0; i < arrPromo.length; i++) {\r\n var oPromoCombi: PromocionCombinada = ioM3Proceso.PromosCombinadas.find(x => x.IdPromocionCombinada == arrPromo[i].IdPromocionCombinada);\r\n if (!oPromoCombi) {\r\n ioM3Proceso.PromosCombinadas.push(arrPromo[i]);\r\n }\r\n }\r\n oM3PDinamicasFinded.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n } else {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas.Nombre = \"COMBINADA\";\r\n oM3PDinamicas.Valor = JSON.stringify(ioM3Proceso.PromosCombinadas);\r\n\r\n ioM3Proceso.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n\r\n }\r\n\r\n //Calculo de promociones\r\n public CalcularPromociones(oM3Procesos: M3Procesos, prodGRPSelected: TypeM3PrdGrp,\r\n oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any, oM3PItemsWEB: M3PItemsWEB): PromocionProcesada {\r\n var oPromocionProcesada = new PromocionProcesada();\r\n var lTipos = new Array<string>();\r\n lTipos.push(\"DIRECTA\");\r\n lTipos.push(\"COMBINADA\");\r\n lTipos.push(\"MONEDERO\");\r\n lTipos.push(\"MANUAL\");\r\n try {\r\n if (oM3ENCPROMO != null) {\r\n var arrPromo: Array<any>;\r\n var opromocionesService = new promocionesService(oDataUser, oM3PItemsWEB);\r\n\r\n arrPromo = opromocionesService.VerificarPromociones(oM3Procesos, prodGRPSelected, oM3Ubicacion, oM3ENCPROMO, lTipos);\r\n oPromocionProcesada = opromocionesService.ProcesarPromocion(arrPromo, prodGRPSelected, oM3ENCPROMO, this.gsIdkatios);\r\n\r\n return oPromocionProcesada;\r\n } else {\r\n throw new Error('No hay informacion de promociones');\r\n }\r\n\r\n } catch {\r\n oPromocionProcesada = new PromocionProcesada();\r\n oPromocionProcesada.PrecioTotal = prodGRPSelected.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO;\r\n oPromocionProcesada.PrecioTotalPromocion = 0;\r\n oPromocionProcesada.ListPromocionesAsociadas = null;\r\n return oPromocionProcesada;\r\n }\r\n }\r\n\r\n //Verificar obsequios y agregarlos.\r\n public VerificarObsequios(oPromocionProcesada: PromocionProcesada, cantidad: number, oM3PEncItems: M3PEncItems) {\r\n try {\r\n var arrPromocionesAsociadas: Array<PromocionesAsociadas>;\r\n this.obsequiosCantidad = 0;\r\n if (oPromocionProcesada.ListPromocionesAsociadas != null) {\r\n arrPromocionesAsociadas = oPromocionProcesada.ListPromocionesAsociadas.filter(promo => promo.ListObsSKU != null);\r\n\r\n if (arrPromocionesAsociadas != null && arrPromocionesAsociadas.length > 0) {\r\n arrPromocionesAsociadas.forEach(promo => {\r\n this.obsequioOPromo == -1\r\n if (!promo.ListObsSKU.length) promo.ListObsSKU = [promo.ListObsSKU];\r\n\r\n if (this.validaSiTieneOtraPromo(promo, oPromocionProcesada.ListPromocionesAsociadas)) {\r\n this.obsequioOPromo = promo.IDPromocion;\r\n }\r\n this.armarListaObsequiosSKU(promo, oM3PEncItems, cantidad);\r\n });\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n public turnOnPromos(oPromocionProcesada: PromocionProcesada) {\r\n try {\r\n var arrPromocionesAsociadas: Array<PromocionesAsociadas>;\r\n if (oPromocionProcesada.ListPromocionesAsociadas != null) {\r\n arrPromocionesAsociadas = oPromocionProcesada.ListPromocionesAsociadas.filter(promo => promo.lIdActivaPromo && promo.lIdActivaPromo.length > 0);\r\n\r\n if (arrPromocionesAsociadas && arrPromocionesAsociadas.length > 0) {\r\n arrPromocionesAsociadas.forEach(promo => {\r\n this.lIdActivaPromo = this.lIdActivaPromo.concat(promo.lIdActivaPromo);\r\n });\r\n this.removeDuplicates(this.lIdActivaPromo);\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n removeDuplicates(arr: Array<any>) {\r\n var unique = [];\r\n for (let i = 0; i < arr.length; i++) {\r\n if (unique.indexOf(arr[i]) === -1) {\r\n unique.push(arr[i]);\r\n }\r\n }\r\n }\r\n\r\n armarListaObsequiosSKU(promo: PromocionesAsociadas, oM3PEncItems: M3PEncItems, cantidad: number) {\r\n let cantidadReal = Math.floor(cantidad / promo.CantidadObseq);\r\n if (promo.ReglaObseq == \"EXC\") {\r\n this.asignarIdEncPadreObsequio(promo, oM3PEncItems);\r\n this.obsequiosExc = true;\r\n this.obsequiosCantidad = cantidadReal;\r\n }\r\n else {\r\n this.asignarIdEncPadreObsequio(promo, oM3PEncItems);\r\n promo.ListObsSKU.forEach(element => {\r\n element.Cantidad = cantidadReal * +element.Cantidad;\r\n });\r\n this.obsequiosExc = false;\r\n }\r\n this.oListaObsequios = promo.ListObsSKU;\r\n }\r\n\r\n asignarIdEncPadreObsequio(promo: PromocionesAsociadas, oM3PEncItems: M3PEncItems) {\r\n if (promo.ListObsSKU.length > 0) {\r\n promo.ListObsSKU.forEach(element => {\r\n element.idEncPadre = oM3PEncItems.ID;\r\n });\r\n }\r\n }\r\n\r\n armarListaObsequiosCombiSKU(combi, oM3PEncItems: M3PEncItems, cantidad: number) {\r\n if (combi.Accion.ReglaObseq == \"EXC\") {\r\n this.asignarIdEncPadreObsequioCombinado(combi.Accion.OBSEQUIOS, oM3PEncItems);\r\n this.obsequiosExc = true;\r\n this.obsequiosCantidad = cantidad;\r\n }\r\n else {\r\n this.asignarIdEncPadreObsequioCombinado(combi.Accion.OBSEQUIOS, oM3PEncItems);\r\n combi.Accion.OBSEQUIOS.forEach(element => {\r\n element.Cantidad = cantidad * +element.Cantidad;\r\n });\r\n this.obsequiosExc = false;\r\n }\r\n this.oListaObsequios = combi.Accion.OBSEQUIOS;\r\n }\r\n\r\n asignarIdEncPadreObsequioCombinado(obsequios, oM3PEncItems: M3PEncItems) {\r\n if (obsequios.length > 0) {\r\n obsequios.forEach(element => {\r\n element.idEncPadre = oM3PEncItems.ID;\r\n });\r\n }\r\n }\r\n\r\n //Retorna true si hay otra promo aplicada donde ni la promo de obsequio o la aplicada son fijas y una de las dos es EXC\r\n validaSiTieneOtraPromo(promoObsequio: PromocionesAsociadas, arrPromocionesAsociadas: Array<PromocionesAsociadas>): boolean {\r\n if (promoObsequio.Regla != \"ACM\") {\r\n let oPromosNoObsequios = arrPromocionesAsociadas.filter(x => x.IDPromocion != promoObsequio.IDPromocion);\r\n for (const promo of oPromosNoObsequios) {\r\n if (promo.Regla != \"ACM\") {\r\n if (promo.Aplicada && (promo.Regla == \"EXC\" || promoObsequio.Regla == \"EXC\")) {\r\n return true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n\r\n //procesamiento de obsequios\r\n public async ProcesarObsequios(oDataUser: any,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean, oM3Procesos: M3Procesos) {\r\n try {\r\n this.obsequiosExc = false;\r\n this.obsequioOPromo = -1;\r\n if (this.oListaObsequios != null && this.oListaObsequios.length > 0) {\r\n for (let i = 0; i < this.oListaObsequios.length; i++) {\r\n if (this.oListaObsequios[i].SKU) {\r\n //JAGM 20190810 valida, cuantos productos se agrega en el obsequio.\r\n if (this.oListaObsequios[i].Cantidad) {\r\n oM3PItemsWEB.dCantidad = this.oListaObsequios[i].Cantidad;\r\n }\r\n //JAGM 20191112 se agreg funcionalidad de obsequios\r\n oM3PItemsWEB.BisObsequio = true;\r\n oM3PItemsWEB.IDEncPadre = this.oListaObsequios[i].idEncPadre;\r\n oM3PItemsWEB.TipoAgrupacion = \"OBSQ\";\r\n await this.GuardarPromocion(this.oListaObsequios[i], oDataUser, oM3PItemsWEB, oM3Ubicacion, EnLinea, oM3Procesos);\r\n }\r\n }\r\n }\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n this.oListaObsequios = null;\r\n }\r\n\r\n\r\n //Guardar promocion segun un sku\r\n //1. Buscar el producto segun el sku\r\n //2. Agregar el producto a m3procesos\r\n //3. Agregar al carrito de compras.\r\n public async GuardarPromocion(promo, oDataUser: any,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean, oM3Procesos: M3Procesos) {\r\n // 20181121 var sKeyCarrito;\r\n // 20181121 var oM3Procesos;\r\n var procesoPromo;\r\n //Obtener key de carrito de compras\r\n // 20181121 sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n\r\n\r\n // 20181121 oM3Procesos = await oM3Data.GetDataPouchBD(sKeyCarrito);\r\n procesoPromo = await this.AdicionarPromocionAProceso(promo, oM3Procesos, oM3PItemsWEB, oM3Ubicacion, EnLinea, oDataUser);\r\n //Guardar en pouch DB\r\n // 20181121 await oM3Data.AddToPouchBDCarritoCompras(sKeyCarrito, procesoPromo);\r\n }\r\n\r\n //Obtener los producto segun su SKU, sacando la informacion desde pouchDB.\r\n public async AdicionarPromocionAProceso(promo, oM3Procesos: M3Procesos, oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean, oDataUser: any) {\r\n var oProducto: TypeM3PrdGrp = null;\r\n oProducto = await this.GetProductoBySKU(promo.SKU, EnLinea, oM3Procesos, oDataUser);\r\n console.debug(oProducto);\r\n if (oProducto != null) {\r\n //Ya no se deja precio cero sino que como es obsequio simula un descuento del 100% \r\n //Producto.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = 0;\r\n //Agregar a m3procesos el obsequio.\r\n //oM3Procesos = this.LoadM3ProcesoFromData(oM3Procesos, oProducto, oM3PItemsWEB, oM3Ubicacion, null, null);\r\n\r\n oM3Procesos = this.addtocart(oM3PItemsWEB, oProducto, null, null, oDataUser, this.gsIdkatios, oM3Ubicacion, null, oM3Procesos, null, 100);//*Se manda valor de descuennto 100 %\r\n }\r\n return oM3Procesos;\r\n }\r\n\r\n //Obtener producto segun el SKU\r\n public async GetProductoBySKU(sSKU, EnLinea: boolean, oM3Procesos: M3Procesos, oDataUser: any, disponibleM3Enc = null) {\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var productos;\r\n var oProducto: TypeM3PrdGrp = null;\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(this.gsIdkatios);\r\n\r\n //oServiceListaPrecio.GenerateDataValidacion(oDataUser, oM3Procesos.TMIdProceso);\r\n if (!EnLinea && !oDataUser.UsuarioSistema.FechaPrecio) {\r\n var sIDProductos = this.gsIdkatios + \"?PRD\";\r\n productos = await this.oM3CouchMaestro.get(sIDProductos);\r\n oProducto = oServiceM3Maestro.GetM3PrdGrpFromList(productos.M3ListProductos.M3GRP, sSKU);\r\n } else {\r\n oProducto = await oServiceM3Maestro.M3GetProductoBySKUAsync(this.GoPostServiceM3, this.gsIdkatios, sSKU, oDataUser, oM3Procesos.Ubic1.toString());\r\n }\r\n if (oProducto.LoM3PrdGeneral[0].DISPONIBLE <= 0 && disponibleM3Enc) {\r\n oProducto.LoM3PrdGeneral[0].DISPONIBLE = disponibleM3Enc;\r\n }\r\n\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(oProducto, oDataUser, this.GoPostServiceM3);\r\n //oServiceListaPrecio.ValidarListaPrecios(oProducto, this.GoPostServiceM3, this.gsIdkatios);\r\n return oProducto;\r\n }\r\n\r\n //Calcular precio sin impuestos. La forma es calcular todo el valor del impuesto. EJ: 120.09 / 1.16. Si el valor del impuesto es: 16%\r\n public CalculatePrecioBase(CTBLDIMPPRD: string, dValorNeto: number) {\r\n //var dValorImpuesto: number = 1;\r\n var dValorBase: number = dValorNeto;\r\n try {\r\n var oxmlToJsonTF = new xmlToJsonTF();\r\n var jImpuestos;\r\n if (CTBLDIMPPRD != \"\") {\r\n jImpuestos = oxmlToJsonTF.convertXmlToJson(CTBLDIMPPRD);\r\n jImpuestos.IMPUESTOS.IMPUESTO.forEach(imp => {\r\n //JAGM 20190626 Cambio de calculo de base de los impuestos.\r\n if (imp.$.Metodologia == \"PORCENTAJE\") {\r\n dValorBase = (+dValorBase) / (1 + +imp.$.Valor);\r\n }\r\n else {\r\n dValorBase = (+dValorBase) - (+imp.$.Valor);\r\n }\r\n });\r\n }\r\n //console.log(oM3PEncItems.M3Impuestos);\r\n } catch {\r\n console.log(\"Catch\")\r\n }\r\n\r\n //return ((+dValorNeto) / (+dValorImpuesto));\r\n return dValorBase;\r\n }\r\n\r\n //Cargar información de impuestos, desde el producto general\r\n public LoadM3PImpuestosFromPrdGrl(CTBLDIMPPRD: string, oM3PEncItems: M3PEncItems,\r\n dValorNeto: number, cantidad: number, valorTotalProductoUnit: number) {\r\n try {\r\n var oxmlToJsonTF = new xmlToJsonTF();\r\n var oM3PImpuestos: M3PImpuestos;\r\n let valorBaseTotal = this.oMathTF.round(dValorNeto, 4);\r\n let valorNetoTotal = valorBaseTotal;\r\n let valorTotalProductoTotal = +bigDecimal.multiply(valorTotalProductoUnit, cantidad);\r\n var jImpuestos;\r\n var dTotalImpuesto: number = 0;\r\n if (CTBLDIMPPRD != \"\") {\r\n jImpuestos = oxmlToJsonTF.convertXmlToJson(CTBLDIMPPRD);\r\n\r\n //JAGM 20190626 Cambio en orden de los impuestos.\r\n for (var i = jImpuestos.IMPUESTOS.IMPUESTO.length - 1; i >= 0; i--) {\r\n let valorRealImp = 0;\r\n var imp = jImpuestos.IMPUESTOS.IMPUESTO[i];\r\n oM3PImpuestos = new M3PImpuestos();\r\n oM3PImpuestos.CodImpuesto = imp.$.CodImp;\r\n oM3PImpuestos.Porcentaje = imp.$.Valor;\r\n if (imp.$.Metodologia == \"PORCENTAJE\") {//PORCENTAJE\r\n valorRealImp = +bigDecimal.multiply(imp.$.Valor, valorNetoTotal);\r\n oM3PImpuestos.Valor = this.oMathTF.round(valorRealImp, 2);\r\n if (oM3PImpuestos.Valor < valorRealImp) {\r\n oM3PImpuestos.LimiteOpuesto = +Math.ceil(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n }\r\n else {\r\n oM3PImpuestos.LimiteOpuesto = +Math.floor(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n }\r\n }\r\n else {//FIJO\r\n valorRealImp = +imp.$.Valor;\r\n oM3PImpuestos.Valor = this.oMathTF.round(valorRealImp, 2);\r\n // if (oM3PImpuestos.Valor < valorRealImp) {\r\n // oM3PImpuestos.LimiteOpuesto = +Math.ceil(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n // }\r\n // else {\r\n // oM3PImpuestos.LimiteOpuesto = +Math.floor(+bigDecimal.multiply(valorRealImp, 100)) / 100;\r\n // }\r\n }\r\n\r\n\r\n //JAGM 20180912 Nuevo concepto de base\r\n oM3PImpuestos.Base = this.oMathTF.round(valorNetoTotal, 2);\r\n dTotalImpuesto = this.oMathTF.round((+dTotalImpuesto),2) + this.oMathTF.round((+oM3PImpuestos.Valor),2);\r\n //JAGM 20180912 Suma de Valor Neto\r\n valorNetoTotal = this.oMathTF.round((+this.oMathTF.round(valorNetoTotal, 2)) + this.oMathTF.round((+oM3PImpuestos.Valor),2), 2);\r\n \r\n ///Solo adicione a impuestos, cuando es total impuestos\r\n var impExiste: M3PImpuestos;\r\n impExiste = oM3PEncItems.M3PImpuestos.find(imp => imp.CodImpuesto == oM3PImpuestos.CodImpuesto);\r\n if (impExiste) {\r\n //Borra en item\r\n oM3PEncItems.M3PImpuestos = oM3PEncItems.M3PImpuestos.filter(imp => imp.CodImpuesto != oM3PImpuestos.CodImpuesto);\r\n }\r\n oM3PEncItems.M3PImpuestos.push(oM3PImpuestos);\r\n }\r\n // jImpuestos.IMPUESTOS.IMPUESTO.forEach(imp => {\r\n\r\n // });\r\n }\r\n\r\n //JAGM 20190726 se agrega validacion, ya que estaba quedando la resta, con valores como: 0.00000000001 = 1.1564564564e845 EJ\r\n if (dTotalImpuesto != 0) {\r\n //Diferencia redondeada a dos decimales\r\n dTotalImpuesto = this.oMathTF.round(dTotalImpuesto, 2);\r\n let diferencia = this.oMathTF.round((+valorTotalProductoTotal - +this.oMathTF.round(valorBaseTotal,2) - +dTotalImpuesto), 2);\r\n if (isNaN(diferencia)) {\r\n diferencia = this.oMathTF.round(+(+valorTotalProductoTotal - +this.oMathTF.round(valorBaseTotal, 2) - +dTotalImpuesto).toFixed(4),2);\r\n }\r\n if (diferencia != 0) {\r\n this.ajustadorDeImpuestos(oM3PEncItems, diferencia);\r\n }\r\n\r\n // \"TOTALIMPUESTOS\"\r\n return this.oMathTF.round((valorTotalProductoTotal - this.oMathTF.round(valorBaseTotal,2)), 2);\r\n } else {\r\n return 0;\r\n }\r\n\r\n } catch {\r\n console.log(\"Catch\")\r\n return 0;\r\n }\r\n }\r\n\r\n /**\r\n * FS 20190725\r\n * Corrige el valor que tomo el impuesto despues de haberse redondeado\r\n * Si al recorrer todos los impuestos la diferencia no se zanja, NI MODOS el error está en otra parte\r\n * Se crea esta función para resolver los errores de timbrado de factura electrónica\r\n * @param oM3PEncItems \r\n * @param diferencia Diferencia que se debe saldar para conseguir el valor total de impuestos requerido\r\n */\r\n ajustadorDeImpuestos(oM3PEncItems: M3PEncItems, diferencia: number) {\r\n for (let _i = 0; _i < oM3PEncItems.M3PImpuestos.length; _i++) {\r\n const impuesto = oM3PEncItems.M3PImpuestos[_i];\r\n //Si la diferencia es positiva quiere decir que la suma de los impuestos es menor a la real\r\n if (diferencia > 0) {\r\n //Si el impuesto se redondeo hacia abajo quiere decir que se pudo redondear hacia arriba\r\n //Entonces lo \"redondea hacia arriba\" y resta una centesima a la diferencia\r\n if (impuesto.Valor < impuesto.LimiteOpuesto) {\r\n impuesto.Valor = impuesto.LimiteOpuesto;\r\n impuesto.Base = this.oMathTF.round(impuesto.Valor / impuesto.Porcentaje, 2);\r\n diferencia = diferencia - 0.01;\r\n }\r\n //Si Valor>ValorReal quiere decir que redondeo hacia arriba y no debe modificar ese valor\r\n }\r\n //Si la diferencia es negativa quiere decir que la suma de los impuestos es mayor a la real\r\n else {\r\n //Si el impuesto se redondeo hacia arriba quiere decir que se pudo redondear hacia abajo\r\n //Entonces lo \"redondea hacia abajo\" y suma una centesima a la diferencia\r\n if (impuesto.Valor > impuesto.LimiteOpuesto) {\r\n impuesto.Valor = impuesto.LimiteOpuesto;\r\n impuesto.Base = this.oMathTF.round(impuesto.Valor / impuesto.Porcentaje, 2);\r\n diferencia = diferencia + 0.01;\r\n }\r\n //Si Valor<ValorReal quiere decir que redondeo hacia abajo y no debe modificar ese valor\r\n }\r\n\r\n //Si ya se saldo la diferencia rompe el ciclo dando por concluido el ajuste\r\n if (diferencia == 0) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n //Load por unidad detalle del m3proceso items.\r\n public LoadM3PDetalle(sValor: string, sConcepto: string): M3PDetalleItems {\r\n var oM3PDetalleItems = new M3PDetalleItems();\r\n oM3PDetalleItems.NombreConcepto = sConcepto;\r\n oM3PDetalleItems.Valor = sValor;\r\n return oM3PDetalleItems;\r\n }\r\n\r\n\r\n //Generar promocion combinada\r\n public async GenerarPromoCombinada(oM3Procesos: M3Procesos, oDataUser: any) {\r\n if (!oM3Procesos.lM3PDinamicas || (oM3Procesos.lM3PDinamicas && !oM3Procesos.lM3PDinamicas.find(x => x.Nombre == \"PUENTE_DIARIO\"))) {\r\n var opromocionesService = new promocionesService(oDataUser, null);\r\n oM3Procesos = opromocionesService.ProcesarCombinada(oM3Procesos);\r\n this.RecalcularPrecios(oM3Procesos);\r\n }\r\n }\r\n\r\n\r\n //Compare M3Procesos. (First: @Param: ilM3ProcesosSQL VS Second: Get From CouchDB/PouchDB)\r\n public async CompareM3Proceso(sIDKatios: string, oM3Data: M3Data, oDataUser: any, ilM3ProcesosSQL: M3Procesos) {\r\n var oResp;\r\n try {\r\n //Get data, from PouchDB/CouchDB\r\n var PropertyCompare = [\"ValorNeto\", \"Valor\"];\r\n var sKeyCarrito: string;\r\n var oM3ProcesosCOUCH: M3Procesos;\r\n var bResp: boolean = true;\r\n\r\n sKeyCarrito = oM3Data.GetKeyCarritoCompras(sIDKatios, oDataUser.UsuarioSistema.TDOC, oDataUser.UsuarioSistema.NDOC, oDataUser.UsuarioSistema.UBICACION, oDataUser.UsuarioSistema.IDHUB);\r\n //Get data, from PouchDB/CouchDB\r\n oM3ProcesosCOUCH = await oM3Data.GetDataPouchBD(sKeyCarrito);\r\n\r\n //Start Compare\r\n for (var i = 0; i < PropertyCompare.length; i++) {\r\n if (ilM3ProcesosSQL[PropertyCompare[i]] != oM3ProcesosCOUCH[PropertyCompare[i]]) {\r\n bResp = false;\r\n break;\r\n }\r\n }\r\n\r\n if (bResp) {\r\n //Compare: ID, IdProducto y CANTIDAD\r\n for (var j = 0; j < ilM3ProcesosSQL.M3ENC.length; j++) {\r\n if (oM3ProcesosCOUCH.M3ENC[j].ID != ilM3ProcesosSQL.M3ENC[j].ID ||\r\n oM3ProcesosCOUCH.M3ENC[j].IdProducto != ilM3ProcesosSQL.M3ENC[j].IdProducto ||\r\n oM3ProcesosCOUCH.M3ENC[j].M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor != ilM3ProcesosSQL.M3ENC[j].M3DET.find(x => x.NombreConcepto == \"CANTIDAD\").Valor) {\r\n bResp = false;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n oResp = { \"bResp\": bResp, \"M3Procesos\": oM3ProcesosCOUCH };\r\n return oResp;\r\n } catch (ex) {\r\n console.log(\"Error CompareM3Proceso\");\r\n console.log(ex);\r\n oResp = { \"bResp\": true, \"M3Procesos\": null };\r\n return oResp;\r\n }\r\n\r\n }\r\n\r\n\r\n //Adicionar comercial al proceso, lo adiciona al arreglo de dinamicos asociado al proceso.\r\n public AddComercialToM3Proceso(oM3Procesos: M3Procesos, TdocComercial: string, NdocComercial: string) {\r\n oM3Procesos.lM3PDinamicas.push(this.CreateTuplaDinamica(\"TCOMERCIAL\", TdocComercial));\r\n oM3Procesos.lM3PDinamicas.push(this.CreateTuplaDinamica(\"NCOMERCIAL\", NdocComercial));\r\n }\r\n\r\n //Creacion y retorno de tupla de dinamicos, atados a proceso m3.\r\n public CreateTuplaDinamica(nombre, valor) {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas.Nombre = nombre;\r\n oM3PDinamicas.Valor = valor;\r\n\r\n return oM3PDinamicas;\r\n }\r\n\r\n\r\n ///Actualiza la cantidad de \r\n public setCantidadALLYUPDCouch(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, funcionOK: Function, funcionError: Function, iCantidad) {\r\n\r\n if (iCantidad == 0 && oM3Procesos.IDDiario === undefined) {\r\n ///Aun no esta registrado el proceso como tal, se puede borrar de raiz\r\n oM3Procesos.M3ENC = new Array<M3PEncItems>();\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, \"WEB\", funcionOK, funcionError);\r\n } else {\r\n if (iCantidad == 0) {\r\n\r\n this.DeleteM3Proceso(oM3Data, oDataUser, sIDKatios).then(x => {\r\n this.GetCarritoComprasPouchDB(oM3Data, oDataUser, sIDKatios).then(res => {\r\n oM3Procesos = new M3Procesos();\r\n funcionOK(oM3Procesos);\r\n });\r\n });\r\n } else {\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor = iCantidad;\r\n });\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, \"WEB\", funcionOK, funcionError);\r\n }\r\n }\r\n }\r\n\r\n ///Se cantidad de un producto especifico\r\n public setCantidadYUPDCouch(oM3Procesos: M3Procesos, oM3Data: M3Data,\r\n oDataUser: any, sIDKatios: string, funcionOK: Function,\r\n funcionError: Function, idProducto, Lote, iCantidad, tipoUbicacion, IDEnc,\r\n m3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, forzarBorrad: boolean = false) {\r\n\r\n if ((iCantidad == 0 && oM3Procesos.IDDiario === undefined && tipoUbicacion == \"WEB\") || forzarBorrad) {\r\n ///Aun no esta registrado el proceso como tal, se puede borrar de raiz\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(prod => !(prod.IdProducto == idProducto && prod.ID == IDEnc) && !(prod.IdEncPadre == IDEnc));\r\n\r\n let loM3PItemsWEB = new M3PItemsWEB();\r\n loM3PItemsWEB.dCantidad = 0;\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError, m3Ubicacion);\r\n } else {\r\n // JAGM 20191021, no hacer lógica de promociones y varios, cuándo se borra el item.\r\n if (iCantidad == 0) {\r\n //Se toma en cuenta el prd y sus hijos con el IdEncPadre\r\n oM3Procesos.M3ENC.filter(enc => (enc.IdProducto == idProducto && enc.Lote == Lote && enc.ID == IDEnc) || enc.IdEncPadre == IDEnc).forEach(prd => {\r\n prd.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor = iCantidad;\r\n });\r\n\r\n //oM3Procesos.M3ENC.find(enc => enc.IdProducto == idProducto && enc.Lote == Lote && enc.ID == IDEnc).M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor = iCantidad;//Antigua logica\r\n\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError, m3Ubicacion);\r\n } else {\r\n this.setCantidadV2(oM3Procesos, idProducto, Lote, iCantidad, IDEnc, oDataUser, sIDKatios, m3Ubicacion, oM3ENCPROMO).then(resp => {\r\n this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError, m3Ubicacion, resp.M3PItemsWEB);\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n }\r\n //this.UpdateM3ProcesosWithData(oM3Procesos, oM3Data, oDataUser, sIDKatios, tipoUbicacion, funcionOK, funcionError);\r\n }\r\n\r\n //Cambiar cantidad de m3proceso\r\n //JAGM 20191018 Se agrega nueva funcionalidad a la cantidad: \r\n //1.Se borra el producto de la lista del proceso\r\n //2. Se agrega de nuevo el producto con la nueva cantidad.\r\n public async setCantidadV2(oM3Procesos: M3Procesos, idProducto, Lote, iCantidad, IDEnc, oDataUser: any\r\n , sIDKatios: string, m3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>) {\r\n var oProducto: TypeM3PrdGrp = null;\r\n var oM3PItemsWEB = new M3PItemsWEB();\r\n oM3PItemsWEB.dCantidad = iCantidad;\r\n //JAGM 20191114, Agregar imagen\r\n var oM3PEncItems = oM3Procesos.M3ENC.find(enc => enc.IdProducto == idProducto && enc.Lote == Lote && enc.ID == IDEnc);\r\n if (oM3PEncItems) {\r\n oM3PItemsWEB.PathImagen = oM3PEncItems.PathImage;\r\n }\r\n\r\n\r\n oM3Procesos.M3ENC = oM3Procesos.M3ENC.filter(enc => !(enc.IdProducto == idProducto && enc.Lote == Lote && (enc.ID == IDEnc || enc.IdEncPadre == IDEnc)));\r\n\r\n oProducto = await this.GetProductoBySKU(idProducto, true, oM3Procesos, oDataUser, oM3PEncItems.DISPONIBLE);\r\n oM3PItemsWEB = this.LoadAdicionales(oM3PItemsWEB, oProducto);\r\n oM3Procesos = this.addtocart(oM3PItemsWEB, oProducto, null, null, oDataUser, sIDKatios, m3Ubicacion, oM3ENCPROMO, oM3Procesos);\r\n return { \"M3Proceso\": oM3Procesos, \"M3PItemsWEB\": oM3PItemsWEB };\r\n }\r\n\r\n get_M3ENC_by_idprd_lote(oM3Procesos: M3Procesos, idProducto, Lote): M3PEncItems {\r\n return oM3Procesos.M3ENC.find(enc => enc.IdProducto == idProducto && enc.Lote == Lote)\r\n }\r\n\r\n //Obtener cantidad de un encabezado, producto especifico.\r\n public getCantidad(oM3Procesos: M3Procesos, oProducto: M3PrdGeneral) {\r\n return oM3Procesos.M3ENC.find(enc => enc.IdProducto == oProducto.SKU && enc.Lote == oProducto.LOTE).M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor;\r\n }\r\n\r\n public getCantidadTotal(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos !== undefined && oM3Procesos.M3ENC !== undefined) {\r\n oM3Procesos.M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (+cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor), 0)\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n //////REGION DE RECEPCION\r\n //Se agrega atributo de Current cantidad de recepcion\r\n public MergeRecepYEnc(oM3Procesos: M3Procesos, idRecepcion: number) {\r\n //oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDPRD, \"CTBLDPRD\"));\r\n if (oM3Procesos.M3PRecepcion.length > 0) {\r\n oM3Procesos.M3PRecepcion.filter(recep => recep.IdRecepcion == idRecepcion).forEach(rec => {\r\n oM3Procesos.M3ENC.find(enc => enc.ID == rec.IdEnc).M3DET.push(this.LoadM3PDetalle(rec.Cantidad.toString(), \"CURCREC\"));//CURRENT CANTIDAD RECEPCION\r\n });\r\n }\r\n }\r\n\r\n //Dejar los de talles de la variable: CURCREC en=0, Esto para flujos, donde agrega info procesa y ahà mismo agrega más.\r\n public RemoveCurCRec(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos !== undefined && oM3Procesos != null && oM3Procesos.M3ENC !== undefined && oM3Procesos.M3ENC != null)\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n var oDetalle: M3PDetalleItems;\r\n oDetalle = enc.M3DET.find(det => det.NombreConcepto == \"CURCREC\");\r\n if (oDetalle !== undefined && oDetalle != null) {\r\n oDetalle.Valor = \"0\";\r\n }\r\n })\r\n\r\n }\r\n\r\n //////FIN REGION DE RECEPCION\r\n\r\n ///////REGION ENTREGA\r\n //Se agrega atributo de Current cantidad de envio\r\n public MergeEntpYEnc(oM3Procesos: M3Procesos) {\r\n //oM3PEncItems.M3DET.push(this.LoadM3PDetalle(oM3PrdGeneral.CTBLDPRD, \"CTBLDPRD\"));\r\n if (oM3Procesos.M3PEnvios.length > 0) {\r\n oM3Procesos.M3PEnvios.forEach(env => {\r\n var lEnc: Array<M3PEncItems>;\r\n lEnc = oM3Procesos.M3ENC.filter(enc => enc.IdEnvio == env.IdEnvio);\r\n\r\n if (lEnc !== undefined && lEnc != null) {\r\n lEnc.forEach(enc => {\r\n enc.M3DET.push(this.LoadM3PDetalle(enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor, \"CURCENT\"));//CURRENT CANTIDAD RECEPCION\r\n });\r\n\r\n }\r\n\r\n });\r\n }\r\n }\r\n\r\n //Dejar los de talles de la variable: CURCREC en=0, Esto para flujos, donde agrega info procesa y ahà mismo agrega más.\r\n public RemoveCurCEnt(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos !== undefined && oM3Procesos != null && oM3Procesos.M3ENC !== undefined && oM3Procesos.M3ENC != null)\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n var oDetalle: M3PDetalleItems;\r\n oDetalle = enc.M3DET.find(det => det.NombreConcepto == \"CURCENT\");\r\n if (oDetalle !== undefined && oDetalle != null) {\r\n oDetalle.Valor = \"0\";\r\n }\r\n })\r\n\r\n }\r\n ///////FIN REGION ENTREGA\r\n\r\n\r\n /**\r\n * Promociones que se procesan despues de agregar al carrito\r\n * @param oM3Procesos \r\n * @param oDataUser \r\n * @param oM3PItemsWEB \r\n * @param oM3Ubicacion \r\n * @param EnLinea \r\n */\r\n public async ProcPromoAfterAddToCart(oM3Procesos: M3Procesos, oDataUser: any,\r\n oM3PItemsWEB: M3PItemsWEB, oM3Ubicacion: M3Ubicacion, EnLinea: boolean) {\r\n\r\n await this.ProcesarObsequios(oDataUser, oM3PItemsWEB, oM3Ubicacion, EnLinea, oM3Procesos);\r\n }\r\n\r\n /**\r\n * Procesar promociones despues de finalizar el registro\r\n * @param oM3Procesos \r\n */\r\n public ProcPromoAfterFinalizar(oM3Procesos: M3Procesos, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any) {\r\n\r\n this.GenerarPromoCombinada(oM3Procesos, oDataUser);\r\n this.PromoAfterProceso(oM3Procesos, oM3Ubicacion, oM3ENCPROMO, oDataUser);\r\n }\r\n\r\n public PromoAfterProceso(oM3Procesos: M3Procesos, oM3Ubicacion: M3Ubicacion, oM3ENCPROMO: Array<M3ENCPROMO>, oDataUser: any) {\r\n try {\r\n var opromocionesService = new promocionesService(oDataUser, null);\r\n var lTiposPromo = new Array<String>();\r\n var arrPromo: Array<any>;\r\n var oPromocionProcesada = new PromocionProcesada();\r\n lTiposPromo.push(\"AFTER\");\r\n arrPromo = opromocionesService.VerificarPromociones(oM3Procesos, null, oM3Ubicacion, oM3ENCPROMO, lTiposPromo);\r\n oPromocionProcesada = opromocionesService.ProcesarPromoAfter(arrPromo, oM3Procesos, oM3ENCPROMO);\r\n\r\n if (oPromocionProcesada != null) {\r\n oM3Procesos.ValorNeto = oPromocionProcesada.PrecioTotal;\r\n this.AddInfoPromocionesADinamicas(oM3Procesos, oPromocionProcesada);\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Agregar informacion de promociones a informacion dinamica del proceso\r\n * @param oM3Procesos \r\n * @param oPromocionProcesada \r\n */\r\n public AddInfoPromocionesADinamicas(oM3Procesos: M3Procesos, oPromocionProcesada: PromocionProcesada) {\r\n var data = this.GenerarInfoPromocionesProcesadas(oPromocionProcesada, 0);\r\n if (data != null) {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n oM3PDinamicas = this.CreateTuplaDinamica(\"VAL_PROMOC\", oPromocionProcesada.PrecioTotalPromocion.toString())\r\n oM3Procesos.lM3PDinamicas.push(oM3PDinamicas);\r\n\r\n oM3PDinamicas = this.CreateTuplaDinamica(\"NOMB_PROMOC\", data.NOMBRES)\r\n oM3Procesos.lM3PDinamicas.push(oM3PDinamicas);\r\n\r\n oM3PDinamicas = this.CreateTuplaDinamica(\"ID_PROMOC\", data.ID)\r\n oM3Procesos.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n\r\n\r\n }\r\n\r\n ///Obtiene el proceso asosiado a un idprestamos\r\n async get_m3_proceso_by_id_prestamo_async(PostServiceM3: PostServiceM3, id_katios: string, id_prestamo: string) {\r\n var resp = await PostServiceM3.getM3('M3/getM3ProcesoByIdPrestamo/' + id_katios + '/' + id_prestamo).toPromise();\r\n return resp;\r\n }\r\n\r\n public async GetConceptoM3SaldosItemUb(PostServiceM3: PostServiceM3, sIDKatios: string, jData: any) {\r\n var resp;\r\n\r\n try {\r\n resp = await PostServiceM3.getWithBodyM3('M3/GetConceptoM3SaldosItemUb/' + sIDKatios, jData).toPromise();\r\n return resp;\r\n }\r\n catch {\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Agrega o modifica la cantidad de un objeto M3OtClasificaciones dentro dela lista de un Proceso\r\n * @param product \r\n * @param cantidad \r\n * @param ioM3Procesos \r\n * @param funcionOK \r\n */\r\n public addProductoToOtrasClas(product: TypeM3PrdGrp, cantidad: number, ioM3Procesos: M3Procesos, funcionOK: Function) {\r\n var oM3Procesos: M3Procesos = ioM3Procesos;\r\n var oM3OtClasificaciones: M3OtClasificaciones;\r\n var productUnitSelected: M3PrdGeneral;\r\n productUnitSelected = product.LoM3PrdGeneral[0];\r\n\r\n let productoExiste = this.validarExistaOtraClasif(oM3Procesos.M3OtClasificaciones, product);\r\n if (productoExiste) {\r\n productoExiste.Cantidad = productoExiste.Cantidad + cantidad;\r\n productoExiste.Valor = +bigDecimal.multiply(productUnitSelected.LoM3PrdLista.PRECIO, productoExiste.Cantidad);\r\n productoExiste.Orden = this.GetMaxAtributoFromLista(oM3Procesos.M3OtClasificaciones, \"Orden\") + 1;\r\n } else {\r\n oM3OtClasificaciones = new M3OtClasificaciones();\r\n oM3OtClasificaciones.Cantidad = cantidad;\r\n oM3OtClasificaciones.IdProducto = productUnitSelected.SKU;\r\n oM3OtClasificaciones.Nombre = productUnitSelected.NOMBRE1;\r\n oM3OtClasificaciones.Valor = +bigDecimal.multiply(productUnitSelected.LoM3PrdLista.PRECIO, cantidad);\r\n oM3OtClasificaciones.ID = this.GetMaxAtributoFromLista(oM3Procesos.M3OtClasificaciones, \"ID\") + 1;\r\n oM3OtClasificaciones.Orden = this.GetMaxAtributoFromLista(oM3Procesos.M3OtClasificaciones, \"Orden\") + 1;\r\n\r\n oM3Procesos.M3OtClasificaciones.push(oM3OtClasificaciones);\r\n }\r\n ioM3Procesos = this.recalcularValOtraClasiM3Procesos(ioM3Procesos);\r\n funcionOK(oM3Procesos);\r\n }\r\n\r\n /**\r\n * Elimina un objeto M3OtClasificaciones poniendo su valor y cantidad en cero\r\n * @param oM3OtClasificaciones \r\n * @param ioM3Procesos \r\n */\r\n deleteProductoFromOtrasClas(oM3OtClasificaciones: M3OtClasificaciones, ioM3Procesos: M3Procesos): M3Procesos {\r\n let productoActual = ioM3Procesos.M3OtClasificaciones.find(x => x.IdProducto == oM3OtClasificaciones.IdProducto);\r\n if (productoActual) {\r\n productoActual.Cantidad = 0;\r\n productoActual.Valor = 0;\r\n }\r\n ioM3Procesos = this.recalcularValOtraClasiM3Procesos(ioM3Procesos);\r\n return ioM3Procesos;\r\n }\r\n\r\n /**\r\n * Recalcula el valor de M3Procesos.ValOtraClasi a partir de la sumatoria de los objetos dentro del arreglo M3Procesos.M3OtClasificaciones\r\n * @param oM3Procesos \r\n */\r\n recalcularValOtraClasiM3Procesos(oM3Procesos: M3Procesos) {\r\n oM3Procesos.ValOtraClasi = oM3Procesos.M3OtClasificaciones.reduce(function (suma, oM3OtClasificaciones) {\r\n return suma + oM3OtClasificaciones.Valor;\r\n }, 0)\r\n return oM3Procesos;\r\n }\r\n\r\n /**\r\n * Valida la existencia de un producto dentro de un la lista de M3OtClasificaciones\r\n * @param listM3OtClasificaciones \r\n * @param product \r\n */\r\n validarExistaOtraClasif(listM3OtClasificaciones: Array<M3OtClasificaciones>, product: TypeM3PrdGrp) {\r\n let productoExiste = listM3OtClasificaciones.find(x => x.IdProducto == product.LoM3PrdGeneral[0].SKU);\r\n return productoExiste;\r\n }\r\n\r\n /**\r\n * Limpia los detalles y los impuestos de un producto dado en un proceso de devolucion\r\n * @param productoBorrado \r\n * @param procesoDevolucion \r\n */\r\n deletePrdDevolucion(productoBorrado, procesoDevolucion: M3Procesos) {\r\n let producto = procesoDevolucion.M3ENC.find(x => x.IdProducto == productoBorrado.IdProducto);\r\n if (producto) {\r\n producto.M3DET.forEach(det => {\r\n if (!isNaN(+det.Valor)) {\r\n det.Valor = \"0\";\r\n }\r\n });\r\n\r\n producto.M3PImpuestos.forEach(imp => {\r\n imp.Valor = 0;\r\n imp.Base = 0;\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Ajusta los Valores en caso de encontrar diferencias para poder generar FE\r\n * @param oM3Procesos \r\n */\r\n ajustadorValoresCFDIFront(oM3Procesos: M3Procesos): M3Procesos {\r\n let diferencia = 0;\r\n let totalDescuentos = this.getValorTotalDescuentos(oM3Procesos);\r\n let totalImporteImpuestos = this.getValorTotalImporteImpuestos(oM3Procesos);\r\n\r\n diferencia = this.oMathTF.round(oM3Procesos.ValorNeto - (oM3Procesos.Valor + totalImporteImpuestos - totalDescuentos), 3);\r\n if (diferencia != 0) {\r\n if (totalImporteImpuestos > 0) {\r\n this.ajustadorImpuestosCFDI(diferencia, oM3Procesos);\r\n }\r\n else {\r\n this.ajustadorDescuentosCFDI(diferencia, oM3Procesos);\r\n }\r\n }\r\n\r\n return oM3Procesos;\r\n }\r\n\r\n /**\r\n * Retorna el valor total de promociones aplicadas en el proceso en cuestión\r\n * @param oM3Procesos \r\n */\r\n getValorTotalDescuentos(oM3Procesos: M3Procesos): number {\r\n let totalDescuentos = 0;\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n let detallePromo = enc.M3DET.find(x => x.NombreConcepto == \"TOTALPROMO\");\r\n if (detallePromo) {\r\n totalDescuentos += +detallePromo.Valor;\r\n }\r\n });\r\n\r\n return totalDescuentos;\r\n }\r\n\r\n /**\r\n * Retorna el valor total de impuestos cobrados en el proceso en cuestión\r\n * @param oM3Procesos \r\n */\r\n getValorTotalImporteImpuestos(oM3Procesos: M3Procesos): number {\r\n let totalImporteImpuestos = 0;\r\n oM3Procesos.M3ENC.forEach(enc => {\r\n enc.M3PImpuestos.forEach(imp => {\r\n totalImporteImpuestos += +imp.Valor;\r\n });\r\n });\r\n\r\n return totalImporteImpuestos;\r\n }\r\n\r\n /**\r\n * Mueve el valor de un impuesto en 0.01 y su correspondiente base para que cuadre los valores al timbrar la FE\r\n * @param diferencia \r\n * @param oM3Procesos \r\n */\r\n ajustadorImpuestosCFDI(diferencia: number, oM3Procesos: M3Procesos) {\r\n let ajusto = false;\r\n for (let enc of oM3Procesos.M3ENC) {\r\n for (let imp of enc.M3PImpuestos) {\r\n if (diferencia > 0) {\r\n imp.Valor = imp.Valor + 0.01;\r\n }\r\n else {\r\n imp.Valor = imp.Valor - 0.01;\r\n }\r\n imp.Base = imp.Valor / imp.Porcentaje;\r\n ajusto = true;\r\n break;\r\n }\r\n if (ajusto) {\r\n break;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Mueve el valor de un descuento en 0.01 para que cuadre los valores al timbrar la FE\r\n * @param diferencia \r\n * @param oM3Procesos \r\n */\r\n ajustadorDescuentosCFDI(diferencia: number, oM3Procesos: M3Procesos) {\r\n let detalleTotalPromo: M3PDetalleItems;\r\n for (let enc of oM3Procesos.M3ENC) {\r\n detalleTotalPromo = enc.M3DET.find(x => x.NombreConcepto == \"TOTALPROMO\");\r\n if (detalleTotalPromo && +detalleTotalPromo.Valor > 0) {\r\n if (diferencia > 0) {\r\n detalleTotalPromo.Valor = (+detalleTotalPromo.Valor - 0.01).toString();\r\n }\r\n else {\r\n detalleTotalPromo.Valor = (+detalleTotalPromo.Valor + 0.01).toString();\r\n }\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public getPrdsGeneralFromM3Proceso(PostServiceM3: PostServiceM3, sIdKatios: string, jData: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3/getPrdsGeneralFromM3Proceso/' + sIdKatios, jData).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n oFuncionErr(JSON.parse(err.error.Message));\r\n });\r\n }\r\n\r\n}\r\n","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\n\r\nexport class M3Trx {\r\n\r\n //Obtener informacion del diario de transacciones desde servicio rest M3Trx. Microservicio M3.\r\n public M3_GetDiario(PostServiceM3: PostServiceM3, sIDKatios: string, oDataSend: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Trx/M3_GetDiario/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oDataDiario;\r\n oDataDiario = resp;\r\n if (oDataDiario.RESPUESTA.data.length === undefined) {\r\n oDataDiario.RESPUESTA.data = new Array(oDataDiario.RESPUESTA.data);\r\n }\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n /**\r\n * Retorna el diario de transacciones detallado\r\n * @param PostServiceM3 \r\n * @param sIDKatios \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public m3_getDiarioTrx(PostServiceM3: PostServiceM3, sIDKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3('M3Trx/m3_getDiarioTrx/' + sIDKatios, data).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oDataDiario;\r\n oDataDiario = resp;\r\n if (oDataDiario.RESPUESTA.Diario.length === undefined) {\r\n oDataDiario.RESPUESTA.Diario = new Array(oDataDiario.RESPUESTA.Diario);\r\n }\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }\r\n\r\n //Obtener informacion de transaccion.\r\n public M3_GetInfoTRX(PostServiceM3: PostServiceM3, sIDKatios: string, oDataSend: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n //let data = { 'Top': top };\r\n PostServiceM3.getWithBodyM3('M3Trx/M3_GetInfoTRX/' + sIDKatios, oDataSend).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n var oDataTRX;\r\n oDataTRX = resp;\r\n\r\n if (oDataTRX.RESPUESTA.TIPOS.length === undefined) {\r\n oDataTRX.RESPUESTA.TIPOS = new Array(oDataTRX.RESPUESTA.TIPOS);\r\n }\r\n\r\n oDataTRX.RESPUESTA.TIPOS.forEach(tipo => {\r\n if (tipo.TRX.length === undefined) {\r\n tipo.TRX = new Array(tipo.TRX);\r\n }\r\n });\r\n\r\n\r\n oFuncionOK(oDataTRX);\r\n },\r\n err => {\r\n //Ejecutar funcion de error\r\n oFuncionErr(err.error.Message);\r\n });\r\n }//End \r\n\r\n\r\n\r\n //Cambio de estado de ubicacion\r\n public CambioEstadoUbicacion(PostServiceM3: PostServiceM3, sIDKatios: string, oM3Ubicacion: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3('M3Trx/CambioEstadoUbicacion/' + sIDKatios, oM3Ubicacion).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err._body);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err._body);\r\n });\r\n }//End \r\n\r\n\r\n //Cambio de estado de HUB\r\n public CambioEstadoHub(PostServiceM3: PostServiceM3, sIDKatios: string, oM3Ubicacion: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3('M3Trx/CambioEstadoHub/' + sIDKatios, oM3Ubicacion).subscribe(resp => {\r\n //Ejecutar funcion de procesamiento OK\r\n oFuncionOK(resp);\r\n },\r\n err => {\r\n console.log(err._body);\r\n //Ejecutar funcion de error\r\n oFuncionErr(err._body);\r\n });\r\n }//End \r\n\r\n}","import { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3PrecListPrecios } from \"../Maestro/m3-prec-list-precios.type\";\r\n\r\nexport class ServiceListaPrecio {\r\n\r\n private goData: any;\r\n private gsIdKatios: any;\r\n private lPreciosSelected: string = \"-1\";\r\n\r\n //Generar JSON genérico, para validar la lista de precio\r\n constructor(loged_user: any, sIdProceso: string){\r\n var oData = { \"USER\": loged_user, \"Proceso\": sIdProceso }\r\n this.goData = oData;\r\n }\r\n\r\n //Obtener lista de precios\r\n public async GetListaPrecios(PostServiceM3: PostServiceM3, IdKatios: string) {\r\n try {\r\n this.gsIdKatios = IdKatios;\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var oListPrecLP: M3PrecListPrecios;\r\n oListPrecLP = this.GetLPreciosInStorage(IdKatios);\r\n if(!oListPrecLP){\r\n oListPrecLP = await oServiceM3Maestro.M3GET_LISTAPRECIOS_ASync(PostServiceM3, IdKatios);\r\n this.SaveLPreciosInStorage(oListPrecLP,IdKatios)\r\n }\r\n \r\n this.ValidarAPLRegla(oListPrecLP);\r\n //this.FindLPrecio(oListPrecLP);\r\n return this.lPreciosSelected;\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n /**\r\n * Guardar la lista de precios teniendo en cuenta la llave: RegPrecio + idkatios\r\n */\r\n public SaveLPreciosInStorage(lPrecio:any, gsIdkatios: string){\r\n localStorage.setItem(\"RegPrecio\" + gsIdkatios, JSON.stringify(lPrecio));\r\n }\r\n\r\n /**\r\n * Guardar la lista de precios teniendo en cuenta la llave: RegPrecio + idkatios\r\n */\r\n public SaveConfigLPreciosInStorage(lPrecio:any, gsIdkatios: string){\r\n console.debug(lPrecio);\r\n sessionStorage.setItem(\"ConfigLP\" + gsIdkatios, lPrecio);\r\n }\r\n\r\n /***\r\n * Obtener lista de precios desde storage teniendo en cuenta la llave: RegPrecio + idkatios\r\n */\r\n public GetLPreciosInStorage(gsIdkatios: string){\r\n var sPrecios = localStorage.getItem(\"RegPrecio\" + gsIdkatios);\r\n var oPrecios:any;\r\n if(sPrecios){\r\n oPrecios = JSON.parse(sPrecios);\r\n return oPrecios;\r\n }\r\n return null;\r\n }\r\n\r\n public GetConfigLPreciosInStorage(gsIdkatios: string){\r\n var sPrecios = sessionStorage.getItem(\"ConfigLP\" + gsIdkatios);\r\n var oPrecios:any;\r\n if(sPrecios){\r\n oPrecios = JSON.parse(sPrecios);\r\n return oPrecios;\r\n }\r\n return null;\r\n }\r\n\r\n //Busucar la lista de precio, ingresa el objeto de precendencia de reglas de lista de precios\r\n public FindLPrecio(oListPrecLP: M3PrecListPrecios) {\r\n \r\n if (oListPrecLP !== undefined && oListPrecLP != null && oListPrecLP.ID !== undefined && oListPrecLP.ID != null) {\r\n \r\n if (oListPrecLP.PRECEDENCIA !== undefined && oListPrecLP.PRECEDENCIA != null && oListPrecLP.PRECEDENCIA.length !== undefined) {\r\n for (const prec of oListPrecLP.PRECEDENCIA) {\r\n this.ValidarAPLRegla(prec);\r\n //this.FindLPrecio(prec);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n //Validar reglas, ingresa el objeto de precendencia de reglas de lista de precios\r\n public ValidarAPLRegla(oListPrecLP: M3PrecListPrecios): boolean{\r\n var bResp: boolean = false;\r\n if (oListPrecLP !== undefined) {\r\n try{\r\n console.debug(oListPrecLP.Propiedad);\r\n switch (oListPrecLP.Propiedad.toUpperCase().trim()) {\r\n case \"EMPRESA\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.gsIdKatios.toString())\r\n break;\r\n case \"UBICACION\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.USER.UsuarioSistema.UBICACION.toString());\r\n break;\r\n case \"PROCESO\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.Proceso.toString());\r\n break;\r\n case \"HUB\":\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.USER.UsuarioSistema.IDHUB.toString());\r\n break;\r\n default:\r\n bResp = this.Compare(oListPrecLP.Valor.toString(), this.goData.USER.UsuarioSistema[oListPrecLP.Propiedad.toUpperCase().trim()].toString());\r\n break;\r\n }\r\n }catch (ex){\r\n console.error(\"error: \" + ex)\r\n }\r\n }\r\n if(bResp){\r\n this.lPreciosSelected = oListPrecLP.ListaPrecios;\r\n this.FindLPrecio(oListPrecLP);\r\n }\r\n return bResp;\r\n }\r\n \r\n public Compare(value1, value2) {\r\n if (value1 == value2) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n //Obtener configuracion/encabezado lista de precios\r\n public async GetConfigListaPrecios(PostServiceM3: PostServiceM3, IdKatios: string) {\r\n try {\r\n this.gsIdKatios = IdKatios;\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var oListPrecLP: M3PrecListPrecios;\r\n oListPrecLP = this.GetConfigLPreciosInStorage(IdKatios);\r\n if(!oListPrecLP){\r\n oListPrecLP = await oServiceM3Maestro.GetEncabezadoListasPrecio(PostServiceM3, IdKatios);\r\n this.SaveConfigLPreciosInStorage(oListPrecLP,IdKatios)\r\n }\r\n \r\n return oListPrecLP;\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n}","export class M3DinProcesos{\r\n public id_proceso:string;\r\n public id_sub_proceso:string;\r\n public id_dinamica:string;\r\n public tipo_dinam:string;\r\n public titulo:string;\r\n public estructura_destino: string;\r\n public VDefault: string;\r\n public Requerido:boolean;\r\n}","import { TypeM3PrdGrp } from \"./M3PrdGrp.type\";\r\nimport { M3PItemsWEB } from \"../Registro/m3-pdetalle-items\";\r\n\r\nexport class M3PrdPackDet {\r\n public LOTE: string;\r\n public LOTEHIJO: string;\r\n public SKUHIJO: string;\r\n public Cantidad: number;\r\n public TipoPack: string;\r\n public gsPathImagen: string;\r\n public oM3PItemsWEB: M3PItemsWEB;\r\n public M3GRP = new TypeM3PrdGrp();\r\n public Orden: number;\r\n public ValorAdicional: number;\r\n public IdGrp: string;\r\n\r\n}","export class M3UbiAdicionales{\r\n public Atributo:string;\r\n public Valor:string;\r\n}","import { M3UbiAdicionales } from \"./M3UbiAdicionales.type\";\r\nimport { M3Hubs } from \"./m3-hubs.type\";\r\n\r\nexport class M3Ubicacion{\r\n public IDUbicacion:string;\r\n public Nombre:string;\r\n public TipoUbicacion:string;\r\n public TDocAdmin:string;\r\n public NDocAdmin:string;\r\n public JConfiguracion:string;\r\n public Serie:string;\r\n public Estado:number;\r\n public DocumentoID:string;\r\n public M3UbiAdicionales:Array<M3UbiAdicionales>;\r\n public M3HUBS = new Array<M3Hubs>();\r\n public FechaTrabajo:Date;\r\n public APLUbicExternas:Boolean;\r\n \r\n}","import { M3CONDIPROMO } from \"./M3CONDIPROMO.class\";\r\n\r\nexport class M3CONDIAGRUPACION{\r\n public IdPromocion:number;\r\n public IdAgrupacion:number;\r\n public IdCondiciones:string;\r\n public Operador:string;\r\n\r\n public M3CONDIPROMO:Array<M3CONDIPROMO>;\r\n}","import { M3DETCONDIPROMO } from \"./M3DETCONDIPROMO.class\";\r\n\r\nexport class M3CONDIPROMO{\r\n public IdPromocion:number;\r\n public IdCondicion:number;\r\n public Concepto:string;\r\n public Valor:string;\r\n public JAdicionales:string;\r\n\r\n public M3DETCONDIPROMO: Array<M3DETCONDIPROMO>;\r\n\r\n}","export class M3DETCONDIPROMO{\r\n public IdPromocion:number;\r\n public IdCondicion:number;\r\n public Concepto:string;\r\n public Valor:string;\r\n public JAdicionales:string;\r\n}","import { M3CONDIAGRUPACION } from \"./M3CONDIAGRUPACION.class\";\r\n\r\nexport class M3ENCPROMO{\r\n public IdPromocion:number;\r\n public Nombre:string;\r\n public Tipo:string;\r\n public Tipo2:string;\r\n public Vigencia:Date;\r\n public Inicio:Date;\r\n public Estado:boolean;\r\n public JAdicionales:string;\r\n\r\n public EstadoManuales:boolean =false;\r\n public EsManual:boolean= false;\r\n\r\n public EstadoAplCupon:boolean =false;\r\n public EsAplCupon:boolean= false;\r\n public Tope:number;\r\n\r\n public M3CONDIAGRUPACION:Array<M3CONDIAGRUPACION>;\r\n}","import { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { M3UbiAdicionales } from \"projects/reglanegociom31/src/public_api\";\r\n\r\nexport class M3UbicacionService {\r\n\r\n private goM3Ubicacion: M3Ubicacion;\r\n constructor(oM3Ubicacion: M3Ubicacion) {\r\n this.goM3Ubicacion = oM3Ubicacion;\r\n }\r\n\r\n public GetDireccion() {\r\n return this.GetAdicionarByAtribute(\"DIRECCION\");\r\n }\r\n\r\n public GetTelefono() {\r\n return this.GetAdicionarByAtribute(\"TELEFONO\");\r\n }\r\n\r\n public GetLong() {\r\n return this.GetAdicionarByAtribute(\"LONG\");\r\n }\r\n\r\n public GetLat() {\r\n return this.GetAdicionarByAtribute(\"LAT\");\r\n }\r\n\r\n\r\n private GetAdicionarByAtribute(Atributo: string) {\r\n try {\r\n var oAdicional: M3UbiAdicionales = this.goM3Ubicacion.M3UbiAdicionales.find(adi => adi.Atributo == Atributo);\r\n if (oAdicional !== undefined && oAdicional != null) {\r\n return oAdicional.Valor;\r\n }\r\n return \"N/A\";\r\n }catch{\r\n return \"N/A\";\r\n }\r\n \r\n }\r\n\r\n}","import { M3PItemsWEB, M3PDetalleItems } from \"../Registro/m3-pdetalle-items\";\r\nimport { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3RegService } from \"./m3-reg-service\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { M3PDinamicas } from \"../Registro/m3-pdinamicas\";\r\nimport { M3PerXProceso } from \"../Registro/m3-per-x-proceso\";\r\nimport { M3Ubicacion } from \"../Maestro/Ubicacion/M3Ubicacion.type\";\r\nimport { ServiceLoadListaPrecio } from \"./m3-load-l-precio.service\";\r\nimport { CouchPRDSService } from \"../Offline/couch-prds.service\";\r\n\r\nexport class M3RegMasivo {\r\n\r\n private gsIdKatios: string;\r\n private reader: FileReader;\r\n private separador: string = \",\";\r\n private oM3Proceso = new M3Procesos();\r\n private progress: number;\r\n private ConfMasiva: any;\r\n public rounded_progress: number;\r\n public gbBarCode: boolean = false;\r\n constructor(isIdKatios: string, ioM3Proceso: M3Procesos, iConfMasiva: any, ibBarcode: boolean,\r\n private oCouchPRDSService: CouchPRDSService) {\r\n this.oM3Proceso = ioM3Proceso;\r\n this.gsIdKatios = isIdKatios;\r\n this.ConfMasiva = iConfMasiva;\r\n this.gbBarCode = ibBarcode;\r\n }\r\n\r\n public get_rounded_progress() {\r\n return this.rounded_progress;\r\n }\r\n\r\n ///Adicionar productos en masivo\r\n public async AdicionarMasivo(oM3CouchMaestro: M3CouchMaestro, PostServiceM3: PostServiceM3, oDatUser: any, oDataProc: any, oM3Ubicacion: M3Ubicacion = null) {\r\n this.GetReader(oDataProc);\r\n let csv: string;\r\n if (!this.reader) {\r\n csv = oDataProc.Text;\r\n }\r\n else {\r\n csv = this.reader.result.toString();\r\n }\r\n var arrCSV: Array<string> = csv.split(\"\\n\");\r\n\r\n var proceso: [M3Procesos, string] = await this.adicionar_masivo_from_array(oM3CouchMaestro, PostServiceM3, oDatUser, arrCSV, oM3Ubicacion);\r\n\r\n return proceso;\r\n }\r\n\r\n /**\r\n * Recorre y adiciona los productos en un array a un proceso\r\n * @param oM3CouchMaestro \r\n * @param PostServiceM3 \r\n * @param oDatUser \r\n * @param arrCSV \r\n */\r\n public async adicionar_masivo_from_array(oM3CouchMaestro: M3CouchMaestro, PostServiceM3: PostServiceM3, oDatUser: any, arrCSV: Array<string>, oM3Ubicacion: M3Ubicacion = null, aplExc: string = \"0\") {\r\n\r\n let total = arrCSV.length;\r\n let count = 0;\r\n var product: TypeM3PrdGrp\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var oM3RegService = new M3RegService(oM3CouchMaestro, PostServiceM3, this.gsIdKatios);\r\n var prdsFails: string = \"\";\r\n let prdfailactual = false;\r\n this.progress = 0;\r\n var result: any;\r\n let arrayResp: [M3Procesos, string] = [this.oM3Proceso, \"\"];\r\n for (var i = 0; i < total; i++) {\r\n prdfailactual = false;\r\n var line: string = arrCSV[i];\r\n if (line) {\r\n var oestructCSV: estructCSV;\r\n oestructCSV = this.SetEstructCSV(line);\r\n if (this.gbBarCode) {\r\n console.debug(\"fue local: \" + oestructCSV.sku);\r\n await this.oCouchPRDSService.get(oestructCSV.sku).then(async prd => {\r\n console.debug(\"obtuvo local\");\r\n console.debug(prd);\r\n\r\n var oServiceLoadListaPrecio = new ServiceLoadListaPrecio(this.gsIdKatios);\r\n await oServiceLoadListaPrecio.AsignarListaPrecio(prd.ListCods, oDatUser, PostServiceM3).then(x => {\r\n console.debug(\"asigno lp local\");\r\n console.debug(prd.ListCods);\r\n product = prd.ListCods;\r\n });\r\n\r\n }, async error => {\r\n console.error(\"error lp - intento server: \" + oestructCSV.sku + \": \" + error);\r\n var data = { \"id_ubicacion\": oDatUser.UsuarioSistema.UBICACION, \"Codigo\": oestructCSV.sku };\r\n try {\r\n product = await oServiceM3Maestro.Get_M3ProductoEspecByCodeAsync(PostServiceM3, this.gsIdKatios, data, oDatUser);\r\n } catch (err) {\r\n console.error(\"error catch lp: \" + oestructCSV.sku + \": \" + err);\r\n var errMsg: string = err.url;\r\n var prdFail = errMsg.substring(errMsg.indexOf(\"Codigo\") + 7);\r\n prdsFails += prdFail + \",\";\r\n prdfailactual = true;\r\n }\r\n });\r\n\r\n } else {\r\n console.debug(oM3Ubicacion);\r\n console.debug(oM3Ubicacion && oM3Ubicacion.IDUbicacion);\r\n if (oM3Ubicacion && oM3Ubicacion.IDUbicacion) {\r\n product = await oServiceM3Maestro.M3GetProductoBySKUAsync(PostServiceM3, this.gsIdKatios, oestructCSV.sku, oDatUser, oM3Ubicacion.IDUbicacion, aplExc);\r\n }\r\n else {\r\n product = await oServiceM3Maestro.M3GetProductoBySKUAsync(PostServiceM3, this.gsIdKatios, oestructCSV.sku, oDatUser, \"-1\", aplExc);\r\n }\r\n }\r\n\r\n console.debug(product);\r\n if (!prdfailactual && product) {\r\n this.setPrecioSiAPlica(product, oestructCSV);\r\n this.AddPrdToM3Proceso(product, oestructCSV, oM3RegService, oDatUser, oM3Ubicacion);\r\n } else {\r\n console.error(\"error product no se lleno: \" + oestructCSV.sku);\r\n }\r\n }\r\n count++;\r\n this.progress = count * 100 / total;\r\n this.rounded_progress = Math.round(this.progress * 100) / 100\r\n }\r\n arrayResp[0] = this.oM3Proceso;\r\n arrayResp[1] = prdsFails;\r\n return arrayResp;\r\n }\r\n\r\n //Cambiar precio de producto.\r\n public setPrecioSiAPlica(product: TypeM3PrdGrp, oestructCSV: estructCSV) {\r\n if (oestructCSV.precio !== NaN && oestructCSV.precio != null) {\r\n product.LoM3PrdGeneral[0].LoM3PrdLista.PRECIO = oestructCSV.precio;\r\n product.LoM3PrdGeneral[0].LoM3PrdLista.M3Presentaciones.forEach(oM3Presentaciones => {\r\n oM3Presentaciones.VALOR = oestructCSV.precio;\r\n });\r\n }\r\n }\r\n\r\n //Adicionar a m3proceso, producto especifico, se envia cantidad.\r\n public AddPrdToM3Proceso(product: TypeM3PrdGrp, oestructCSV: estructCSV, oM3RegService: M3RegService, oDatUser: any, oM3Ubicacion: M3Ubicacion = null) {\r\n var oM3PItemsWEB = new M3PItemsWEB();\r\n oM3PItemsWEB.dCantidad = oestructCSV.cantidad;\r\n if (oestructCSV.PathImagen) {\r\n oM3PItemsWEB.PathImagen = oestructCSV.PathImagen;\r\n }\r\n oM3PItemsWEB = oM3RegService.LoadAdicionales(oM3PItemsWEB, product);\r\n\r\n if (this.oM3Proceso.M3ENC.length == 0) {\r\n ///Primera vez \r\n ///NO SE ESTA ENVIANDO INFORMACION DE PROMOCIONES\r\n this.oM3Proceso = oM3RegService.LoadM3ProcesoEmptyPDB(product, oM3PItemsWEB, oDatUser, oM3Ubicacion, null, this.oM3Proceso);\r\n //Agregar dinamicas\r\n this.AdicionarDinamica(oestructCSV);\r\n this.AdicionarPersonasAProceso(oestructCSV);\r\n\r\n } else {\r\n oM3RegService.LoadM3ProcesoFromData(this.oM3Proceso, product, oM3PItemsWEB, oM3Ubicacion, null, oDatUser);\r\n }\r\n this.AdicionarDetalle(oestructCSV);\r\n }\r\n\r\n /**\r\n * Adicionar capturas dinamicas\r\n * @param oestructCSV Estructura con informacion de linea a agregar\r\n */\r\n public AdicionarDinamica(oestructCSV: estructCSV) {\r\n try {\r\n var dinamicas = oestructCSV.Dinamicas\r\n for (var i = 0; i < dinamicas.length; i++) {\r\n var oM3PDinamicas = new M3PDinamicas();\r\n if (!this.oM3Proceso.lM3PDinamicas) {\r\n this.oM3Proceso.lM3PDinamicas = new Array<M3PDinamicas>();\r\n }\r\n oM3PDinamicas.Nombre = dinamicas[i].Atributo;\r\n oM3PDinamicas.Valor = dinamicas[i].Valor;\r\n this.oM3Proceso.lM3PDinamicas.push(oM3PDinamicas);\r\n }\r\n } catch (ex) {\r\n console.log(\"Error adicionar dinamica\")\r\n console.log(ex)\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar personas a proceso\r\n * @param oestructCSV Estructura con informacion a agregar\r\n */\r\n public AdicionarPersonasAProceso(oestructCSV: estructCSV) {\r\n try {\r\n var personas = oestructCSV.Personas;\r\n for (var i = 0; i < personas.length; i++) {\r\n var oM3PerXProceso = new M3PerXProceso();\r\n if (!this.oM3Proceso.M3PerXProceso) {\r\n this.oM3Proceso.M3PerXProceso = new Array<M3PerXProceso>();\r\n }\r\n oM3PerXProceso.Tdoc = personas[i].Tdoc;\r\n oM3PerXProceso.Ndoc = personas[i].Ndoc;\r\n oM3PerXProceso.TipoPersona = personas[i].Atributo;\r\n this.oM3Proceso.M3PerXProceso.push(oM3PerXProceso);\r\n }\r\n } catch (ex) {\r\n console.log(\"Error adicionar personas\")\r\n console.log(ex)\r\n }\r\n }\r\n\r\n /**\r\n * Adicionar detalle al ultimo encabezado agregado.\r\n * @param oestructCSV Estructura con informacion de linea a agregar\r\n */\r\n public AdicionarDetalle(oestructCSV: estructCSV) {\r\n try {\r\n var detalles = oestructCSV.M3Det\r\n for (var i = 0; i < detalles.length; i++) {\r\n var oM3PDetalleItems = new M3PDetalleItems();\r\n\r\n oM3PDetalleItems.NombreConcepto = detalles[i].Atributo;\r\n oM3PDetalleItems.Valor = detalles[i].Valor;\r\n this.oM3Proceso.M3ENC[this.oM3Proceso.M3ENC.length - 1].M3DET.push(oM3PDetalleItems);\r\n //this.oM3Proceso.M3ENC.find(x => x.IdProducto == oestructCSV.)\r\n }\r\n } catch (ex) {\r\n console.log(\"Error adicionar detalle\")\r\n console.log(ex)\r\n }\r\n }\r\n\r\n\r\n ///Obtener y setear la informacion de archivo CSV y separador.\r\n public GetReader(oDataProc: any) {\r\n this.reader = oDataProc.CSV;\r\n this.separador = oDataProc.Separador;\r\n\r\n }\r\n\r\n\r\n ///Setear estrucutar de CSV\r\n public SetEstructCSV(line: string) {\r\n try {\r\n var oestructCSV: estructCSV = { \"cantidad\": null, \"precio\": null, \"sku\": null, \"PathImagen\": null, \"Dinamicas\": [], \"Personas\": [], \"M3Det\": [] };\r\n var oArrCSV: Array<string> = line.split(this.separador);\r\n\r\n if (this.ConfMasiva && this.ConfMasiva.Columnas) {\r\n oestructCSV = this.EstructDynamic(oArrCSV);\r\n } else {\r\n oestructCSV = this.EstructDefault(oArrCSV);\r\n }\r\n\r\n return oestructCSV;\r\n } catch (ex) {\r\n console.log(\"Error creando estructura. Revisar lineas\");\r\n console.log(ex);\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Estructura dinamica de cargue masiva\r\n * @param oArrCSV arreglo con informacion.\r\n */\r\n public EstructDynamic(oArrCSV: Array<string>) {\r\n var columnas: Array<any> = this.ConfMasiva.Columnas;\r\n var oestructCSV: estructCSV = { \"cantidad\": null, \"precio\": null, \"sku\": null, \"PathImagen\": null, \"Dinamicas\": [], \"Personas\": [], \"M3Det\": [] };\r\n\r\n for (var i = 0; i < columnas.length; i++) {\r\n switch (columnas[i].Estructura) {\r\n case \"Cantidad\":\r\n oestructCSV.cantidad = +oArrCSV[columnas[i].Posicion];\r\n break;\r\n case \"Precio\":\r\n oestructCSV.precio = +oArrCSV[columnas[i].Posicion];\r\n break;\r\n case \"SKU\":\r\n oestructCSV.sku = oArrCSV[columnas[i].Posicion];\r\n break;\r\n case \"DINAMICA\":\r\n var din = { \"Atributo\": columnas[i].Atributo, \"Valor\": oArrCSV[columnas[i].Posicion] };\r\n oestructCSV.Dinamicas.push(din);\r\n break;\r\n case \"M3DET\":\r\n var m3Det = { \"Atributo\": columnas[i].Atributo, \"Valor\": oArrCSV[columnas[i].Posicion] };\r\n oestructCSV.M3Det.push(m3Det);\r\n break;\r\n case \"TIPOPERSONA\":\r\n var valor = oArrCSV[columnas[i].Posicion];\r\n var tdoc: string = \"5\";\r\n var ndoc: string;\r\n\r\n if (valor.split(\"-\").length >= 2) {\r\n tdoc = valor.split(\"-\")[0];\r\n ndoc = valor.split(\"-\")[0];\r\n } else {\r\n ndoc = valor;\r\n }\r\n\r\n var persona = { \"Atributo\": columnas[i].Atributo, \"Tdoc\": tdoc, \"Ndoc\": ndoc };\r\n oestructCSV.Personas.push(persona);\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n return oestructCSV;\r\n }\r\n\r\n /**\r\n * Estructura default.\r\n * @param oArrCSV Arreglo con informacion\r\n */\r\n public EstructDefault(oArrCSV: Array<string>) {\r\n var oestructCSV: estructCSV = { \"cantidad\": null, \"precio\": null, \"sku\": null, \"PathImagen\": null, \"Dinamicas\": [], \"Personas\": [], \"M3Det\": [] };\r\n //var oArrCSV: Array<string> = line.split(this.separador);\r\n\r\n if (oArrCSV.length >= 1) {\r\n oestructCSV.sku = oArrCSV[0];\r\n }\r\n if (oArrCSV.length >= 2) {\r\n oestructCSV.cantidad = +oArrCSV[1];\r\n }\r\n\r\n if (oArrCSV.length >= 3) {\r\n oestructCSV.precio = +oArrCSV[2];\r\n }\r\n if (oArrCSV.length >= 4) {\r\n oestructCSV.PathImagen = oArrCSV[3];\r\n }\r\n return oestructCSV;\r\n }\r\n\r\n\r\n}\r\n\r\n\r\nexport interface estructCSV {\r\n sku: string;\r\n cantidad: number;\r\n precio: number;\r\n PathImagen: string;\r\n Dinamicas: Array<any>;\r\n Personas: Array<any>;\r\n M3Det: Array<any>;\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { M3RegService } from \"./m3-reg-service\";\r\nimport { M3PDinamicas } from \"../Registro/m3-pdinamicas\";\r\nimport { M3PItemsWEB } from \"../Registro/m3-pdetalle-items\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { ServiceM3Maestro } from \"./M3Maestro.service\";\r\nimport { async } from \"q\";\r\n\r\n\r\n\r\nexport class M3RegMasivoAKZService {\r\n\r\n\r\n /**\r\n * Agrega un EncItem y puede que una dinamica con el idprestamo a un proceso\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param id_prestamo \r\n * @param m3Prd \r\n * @param user \r\n */\r\n public async add_dinamica_idprestamo_to_proceso(PostServiceM3: PostServiceM3, id_katios: string, id_prestamo: string,\r\n m3Prd, user, otrosParametros: Array<any>) {\r\n var resp;\r\n var pdinamica = new M3PDinamicas\r\n pdinamica.Nombre = \"IdPrestamo\";\r\n pdinamica.Valor = id_prestamo;\r\n try {\r\n var response_proceso_m3: M3Procesos\r\n var m3_reg_service = new M3RegService(null, null, id_katios);\r\n response_proceso_m3 = await m3_reg_service.get_m3_proceso_by_id_prestamo_async(PostServiceM3, id_katios, id_prestamo);\r\n\r\n //Se dejan pegados los estados de destino\r\n response_proceso_m3.EstadoDes = response_proceso_m3.EstadoAnt;\r\n response_proceso_m3.SubEstadoDes = response_proceso_m3.SubEstadoAnt;\r\n\r\n resp = await this.add_pdinamica_to_existing_proceso(PostServiceM3, response_proceso_m3, id_katios, m3Prd, user, pdinamica, otrosParametros);\r\n\r\n } catch (err) {\r\n\r\n resp = await this.add_pdinamica_to_new_proceso(PostServiceM3, id_katios, m3Prd, user, pdinamica, otrosParametros);\r\n }\r\n return resp;\r\n }\r\n\r\n /**\r\n * Agrega un EncItem y dinamica con el idprestamo a un proceso nuevo\r\n * @param PostServiceM3 \r\n * @param id_katios \r\n * @param m3Prd \r\n * @param user \r\n * @param pdinamica \r\n */\r\n public async add_pdinamica_to_new_proceso(PostServiceM3: PostServiceM3, id_katios: string,\r\n m3Prd: any, user: any, pdinamica: M3PDinamicas, otrosParametros: Array<any>) {\r\n\r\n var oM3PItemsWEB;\r\n oM3PItemsWEB = this.GetM3PItemsWEB(otrosParametros);\r\n var oM3RegService = new M3RegService(null, null, id_katios);\r\n var response = oM3RegService.LoadM3ProcesoEmptyPDB(m3Prd, oM3PItemsWEB, user, null, null, null);\r\n response.lM3PDinamicas.push(pdinamica);\r\n\r\n //Se dejan pegados los estados de destino\r\n response.EstadoDes = \"Activo\";\r\n response.SubEstadoDes = \"Registro\";\r\n\r\n var m3_proceso = await oM3RegService.procesamiento_service_async(id_katios, PostServiceM3, response, user);\r\n return m3_proceso;\r\n }\r\n\r\n /**\r\n * Agrega un EncItem a un proceso existente\r\n * @param PostServiceM3 \r\n * @param m3_proceso \r\n * @param id_katios \r\n * @param m3Prd \r\n * @param user \r\n * @param pdinamica\r\n */\r\n public async add_pdinamica_to_existing_proceso(PostServiceM3: PostServiceM3, m3_proceso: M3Procesos, id_katios: string,\r\n m3Prd: any, user: any, pdinamica: M3PDinamicas, otrosParametros: Array<any>) {\r\n\r\n var oM3PItemsWEB;\r\n oM3PItemsWEB = this.GetM3PItemsWEB(otrosParametros);\r\n var oM3RegService = new M3RegService(null, null, id_katios);\r\n\r\n var response = oM3RegService.LoadM3ProcesoFromData(m3_proceso, m3Prd, oM3PItemsWEB, null, null, user);\r\n response.lM3PDinamicas.push(pdinamica);\r\n\r\n var m3_proceso = await oM3RegService.procesamiento_service_async(id_katios, PostServiceM3, response, user);\r\n return m3_proceso;\r\n }\r\n\r\n GetM3PItemsWEB(otrosParametros: Array<any>) {\r\n var oM3PItemsWEB = new M3PItemsWEB();\r\n oM3PItemsWEB.dCantidad = 1;\r\n oM3PItemsWEB.IdProceso = \"M3VENTA\";\r\n otrosParametros.forEach(x => {\r\n oM3PItemsWEB[x.Nombre] = x.Valor\r\n })\r\n return oM3PItemsWEB;\r\n }\r\n\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\nexport class M3ReversoServ{\r\n\r\n\r\n \r\n public ProcesarReverso(PostServiceM3: PostServiceM3,sIDKatios: string, tdocActivo:string, ndocActivo:string,\r\n jData: any, funcionOK: Function, funcionError: Function) {\r\n PostServiceM3.postServiceHttpResFullM3(\"M3Reverso/Reversar/\" + sIDKatios + \"/\" + ndocActivo + \"/\" + tdocActivo, jData).subscribe(resp => {\r\n //var oJson = JSON.parse(resp.json());\r\n \r\n funcionOK(resp);\r\n },\r\n err => {\r\n //this.enProceso = false;\r\n funcionError(err);\r\n }, );\r\n }\r\n\r\n}","export class M3PDinamByActividad{\r\n public IdDinamica:string;\r\n public Valor:string;\r\n public Nombre:string;\r\n}","export class M3DinByActividad{\r\n public IDActividad:string;\r\n public Actividad:string;\r\n public IDDinamica:string;\r\n public TipoDinamica:string;\r\n public Nombre:string;\r\n public Requerido:boolean;\r\n\r\n //Solo Presentacion\r\n public Valor:string;\r\n\r\n}","export class M3SaldosXCuenta{\r\n public Documento:string;\r\n public TDocTitular:number;\r\n public NDocTitular:string;\r\n public NomCuenta:string;\r\n public ValCuenta:number;\r\n}","import { M3PDinamByActividad } from \"./m3-pdinam-by-actividad\";\r\n\r\n\r\nexport class M3RegistroTrx {\r\n\r\n public Actividad:string;\r\n public ID:number;\r\n public M3PDinamByActividad = new Array<M3PDinamByActividad>();\r\n\r\n //Atributos unico del Front\r\n public Actual:string = undefined\r\n}","import { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\nexport class cuponesService {\r\n\r\n /**\r\n * Obtiene todos los cupones generados por un proceso\r\n * @param PostServiceM3 \r\n * @param idkatios \r\n * @param data \r\n * @param funcionOK \r\n * @param funcionError \r\n */\r\n public m3_get_cupones_generados_by_proceso(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n \r\n //var data = { \"id_m3\": idm3, \"id_proceso\": proceso };\r\n PostServiceM3.getWithBodyM3(\"M3/m3_get_cupones_generados_by_proceso/\" + idkatios, data).subscribe(resp => {\r\n var cupones = JSON.parse(resp.toString());\r\n var resp_cupones:Array<any>;\r\n if(!cupones.CUPONES.CUPON.length){\r\n resp_cupones = new Array<any>();\r\n resp_cupones.push(cupones.CUPONES.CUPON);\r\n }else{\r\n resp_cupones = cupones.CUPONES.CUPON;\r\n }\r\n \r\n funcionOK(resp_cupones);\r\n },\r\n err => {\r\n funcionError(err.error.Message);\r\n });\r\n }\r\n \r\n public getCuponByIdDet(PostServiceM3: PostServiceM3, idkatios: string, data: any,\r\n funcionOK: Function, funcionError: Function) {\r\n \r\n //var data = { \"idDetCupon\": idDetCupon};\r\n PostServiceM3.getWithBodyM3(\"M3/getCuponByIdDet/\" + idkatios, data).subscribe(resp => {\r\n funcionOK(resp);\r\n },\r\n err => {\r\n funcionError(err);\r\n });\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\nimport { fakeAsync } from '@angular/core/testing';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceOffLine {\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"Offline\" + katios, { auto_compaction: true });\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Adicionar en BD pouch.\r\n public AddDocument(id: string, document: any) {\r\n document._id = id;\r\n\r\n console.log(\"AddDocument\");\r\n return this.get(id).then(result => {\r\n console.log(\"AddDocument enconrtro document\");\r\n document._rev = result._rev;\r\n return this.database.put(document);\r\n }, error => {\r\n console.log(error.status);\r\n if (error.status == \"404\") {\r\n delete document[\"_rev\"];\r\n return this.database.put(document);\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n // public Destroy() {\r\n // this.database.destroy().then(function (response) {\r\n // setTimeout(() => {\r\n // this.database = new PouchDB(\"Offline\");\r\n // }, 2000);\r\n // }).catch(function (err) {\r\n // console.log(err);\r\n // });\r\n // }\r\n\r\n public DestroyTotal(){\r\n this.database.destroy();\r\n }\r\n\r\n public GetAllDocsDeleted() {\r\n return this.database.allDocs({ include_docs: true, deleted: true });\r\n }\r\n\r\n public GetAllDocs() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public GetAllDocsOffLineSinDocs() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public Destroy(funcionRep:Function) {\r\n this.database.destroy().then(response => {\r\n setTimeout(() => {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n funcionRep({\"Resp\":\"OK\"});\r\n }, 2000);\r\n }).catch(function (err) {\r\n funcionRep({\"Resp\":\"Error\", \"Desc\":err});\r\n console.log(err);\r\n });\r\n }\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.filter(row => !row.id.startsWith(\"CTIVOS\")).map(function (row) {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n public Delete(isKey: string) {\r\n this.database.get(isKey).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\nimport pouchdbsize from 'pouchdb-size';\r\nimport 'rxjs/add/operator/map';\r\nimport { M3DevicesService } from 'sf-reglanegocio-grl';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class bdOffLineLog {\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n \r\n\r\n constructor(public oM3DevicesService:M3DevicesService) {\r\n if (!this.isInstantiated) {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Adicionar en BD pouch.\r\n public AddDocument(id: string, document: any) {\r\n document._id = id;\r\n\r\n return this.get(id).then(result => {\r\n document._rev = result._rev;\r\n return this.database.put(document);\r\n }, error => {\r\n if (error.status == \"404\") {\r\n return this.database.put(document, { force: true });\r\n } else {\r\n return new Promise((resolve, reject) => {\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public Destroy(funcionRep:Function) {\r\n this.database.destroy().then(response => {\r\n setTimeout(() => {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n funcionRep({\"Resp\":\"OK\"});\r\n }, 2000);\r\n }).catch(function (err) {\r\n funcionRep({\"Resp\":\"Error\", \"Desc\":err});\r\n console.log(err);\r\n });\r\n }\r\n\r\n public closeInstance() {\r\n this.database.close();\r\n }\r\n\r\n public InstanceAgain() {\r\n try {\r\n var katios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"OfflineLog\" + katios, { auto_compaction: true });\r\n } catch{\r\n\r\n }\r\n }\r\n\r\n\r\n public GetAllDocsDeleted() {\r\n return this.database.allDocs({ include_docs: true, deleted: true });\r\n }\r\n\r\n public GetAllDocs() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.filter(row => !row.id.startsWith(\"CTIVOS\")).map(function (row) {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n /**\r\n * Elimina del Log los docs con fecha anterior o igual a {{maxDias}} de la fecha actual\r\n * Se concatena \" 00:00\" a la fecha por un error en la funcionalidad de \"new Date()\"\r\n * Se utiliza (1000 * 3600 * 24) para calcular el numero de milisegundos en un dÃa\r\n */\r\n public DeleteOldDocs(maxDias:number) {\r\n //let maxDias = 3;\r\n\r\n console.debug(\"DeleteOldDocs\")\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n console.debug(allDocs)\r\n this.AddLogSocket(allDocs);\r\n allDocs.rows.forEach(element => {\r\n console.debug(element.doc.Fecha);\r\n console.debug(element.doc.Fecha.substring(0, 10) + \" 00:00\")\r\n console.debug(new Date(element.doc.Fecha.substring(0, 10) + \" 00:00\"))\r\n console.debug(Date.now() - new Date(element.doc.Fecha.substring(0, 10) + \" 00:00\").getTime())\r\n console.debug((Date.now() - new Date(element.doc.Fecha.substring(0, 10) + \" 00:00\").getTime()) / (1000 * 3600 * 24))\r\n });\r\n return allDocs.rows.filter(row => Math.floor((Date.now() - new Date(row.doc.Fecha.substring(0, 10) + \" 00:00\").getTime()) / (1000 * 3600 * 24)) >= maxDias)\r\n .map( row => {\r\n //Llamar socket. \r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n \r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n\r\n public AddLogSocket(olM3Procesos: any) {\r\n try {\r\n var params: Array<any>;\r\n params = [{ \"nombre\": \"M3Proceso\", \"valor\": JSON.stringify(olM3Procesos) }];\r\n\r\n this.oM3DevicesService.Device_MPos(this.AddLogSocketOK, params, \"LOGM3Procesos\", null)\r\n } catch (ex) {\r\n console.log(ex);\r\n }\r\n }\r\n\r\n public AddLogSocketOK =()=>{\r\n\r\n }\r\n\r\n\r\n public Delete(isKey: string) {\r\n this.database.get(isKey).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { M3CouchMaestro } from \"../Data/m3-couch-maestro\"\r\nimport { variable } from \"@angular/compiler/src/output/output_ast\";\r\nimport { ServiceM3Maestro } from \"../Services/M3Maestro.service\";\r\nimport { AnyARecord } from \"dns\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3MaestroOffline {\r\n constructor(private oM3CouchMaestro: M3CouchMaestro) {\r\n\r\n }\r\n\r\n /**\r\n * Obtener formas de pago\r\n * @param idKatios Id de la Empresa \r\n * @param respOk_get_formas_pago Funcion con respuesta OK\r\n * @param respError_get_formas_pago Funcion con respuesta ERROR\r\n */\r\n public GetFormasPago(idKatios, idProceso: string, respOk_get_formas_pago: Function, respError_get_formas_pago: Function) {\r\n this.oM3CouchMaestro.get(\"FormasPago\").then(x => {\r\n console.log(x);\r\n\r\n respOk_get_formas_pago(this.FiltrarByProceso(idProceso, x.FormasPago));\r\n }, error => {\r\n respError_get_formas_pago(error);\r\n console.log(error);\r\n });\r\n }\r\n\r\n /**\r\n * Filtrar las formas de pago, dependiendo la informacion del proceso.\r\n * @param idProceso \r\n * @param formasPago \r\n */\r\n public FiltrarByProceso(idProceso: string, formasPago: Array<any>) {\r\n try {\r\n console.log(formasPago);\r\n if (idProceso != \"\") {\r\n formasPago = formasPago.filter(x => {\r\n console.log(x);\r\n if (x.PROCESOS) {\r\n if (!x.PROCESOS.length)\r\n x.PROCESOS = new Array<any>(x.PROCESOS);\r\n return x.PROCESOS.find(y => y.IdProceso == idProceso) != null\r\n } else {\r\n return false;\r\n }\r\n });\r\n console.log(formasPago);\r\n } else {\r\n }\r\n } catch (ex) {\r\n console.log(\"Error FiltrarByProceso\");\r\n console.log(ex);\r\n return formasPago;\r\n }\r\n\r\n return formasPago;\r\n }\r\n\r\n public GetEstructura(est:string) {\r\n return this.oM3CouchMaestro.get(est);\r\n }\r\n\r\n /**\r\n * Obtener dinámicas por actividad\r\n * @param idKatios Id de la empresa\r\n * @param LoadDinamicasOK Funcion de respuesta OK\r\n * @param LoadDinamicasError Funcion de respuesta ERROR\r\n */\r\n public GetDinamicasByACtividad(idKatios, oData, LoadDinamicasOK: Function, LoadDinamicasError: Function) {\r\n var dinam\r\n this.oM3CouchMaestro.get(\"DINBYACT\").then(x => {\r\n try {\r\n dinam = x.M3DinByActividad;\r\n dinam = dinam.filter(x => x.Actividad == oData.Actividad && x.IDActividad == oData.idActividad && x.IdProceso == oData.idProceso);\r\n LoadDinamicasOK(dinam);\r\n } catch{\r\n dinam = new Array<any>();\r\n LoadDinamicasOK(dinam);\r\n }\r\n\r\n }, error => {\r\n LoadDinamicasError(error);\r\n console.log(error);\r\n });\r\n }\r\n\r\n /**\r\n * Obtener informacion de ubicaciones\r\n * @param sIdUbicaciones Id de la ubicacion a buscar en base de datos NoSQL\r\n * @param oServiceM3Maestro Servicio maestro, esta tiene funcionalidad para buscar especificamente un ubicacion\r\n * @param FuncionOK Funcion que retoma la funcionalidad cuando es OK.\r\n */\r\n public GetUbicaciones(idkatios: string, sIdUbicaciones: string, oServiceM3Maestro: ServiceM3Maestro, FuncionOK: Function) {\r\n //Cargar informacion de ubicacion\r\n var oM3Ubicacion;\r\n var sIdUbicacionesCouch = idkatios.trim().toUpperCase() + \"?UBIC\";;\r\n this.oM3CouchMaestro.get(sIdUbicacionesCouch).then(result => {\r\n oM3Ubicacion = oServiceM3Maestro.GetUbicacionFromList(result.ListUbicaciones.M3UBICACION, sIdUbicaciones);\r\n FuncionOK(oM3Ubicacion);\r\n\r\n }, error => {\r\n console.log(error);\r\n });\r\n }\r\n\r\n\r\n \r\n\r\n // /**\r\n // * Obtener la informacion de las promociones\r\n // * @param sIDPromo Id de la promocion a buscar en base de datos NoSQL\r\n // * @param FuncionOK Funcion que retoma la funcionalidad cuando es OK.\r\n // */\r\n // public GetPromociones(idkatios: string, FuncionOK: Function) {\r\n // var ListPromo;\r\n // var sIDPromo = idkatios.trim().toUpperCase() + \"?Promociones\";\r\n // this.oM3CouchMaestro.get(sIDPromo).then(result => {\r\n // if(result.M3ENCPROMO){\r\n // ListPromo = result.M3ENCPROMO;\r\n // }else if(result.M3ListENCPROMO.M3ENCPROMO){\r\n // ListPromo = result.M3ListENCPROMO.M3ENCPROMO;\r\n // }else{\r\n // ListPromo = undefined;\r\n // }\r\n\r\n // FuncionOK(ListPromo);\r\n // }, error => {\r\n // console.log(error);\r\n // });\r\n // }\r\n\r\n /**\r\n * Obtener la informacion sincrónicamente de template. segun el reporte entrante \r\n * @param idkatios \r\n */\r\n public async Asyncget_template_reporte(idkatios: string, idrep) {\r\n try {\r\n var template;\r\n //var sID = idkatios.trim().toUpperCase() + \"?Templates\";\r\n var sID = \"TEMPLATES\";\r\n template = await this.oM3CouchMaestro.get(sID);\r\n if (template.RESPUESTA.RPTemplate.length == undefined) {\r\n template = new Array<any>(template.RESPUESTA.RPTemplate);\r\n } else {\r\n template = template.RESPUESTA.RPTemplate;\r\n }\r\n ///Se crean los nodos padre RESPUESTA y RPTemplate, para simular igual, como lo responde servidor.\r\n var templateUno = { \"RESPUESTA\": { \"RPTemplate\": template.find(t => t.IdRep == idrep) } };\r\n return templateUno;\r\n } catch{\r\n return null;\r\n }\r\n }\r\n\r\n\r\n\r\n} ","import { Injectable } from \"@angular/core\";\r\nimport { ServiceOffLine } from \"./Service/bd-offline.service\";\r\nimport { M3Procesos } from \"../Registro/m3-procesos\";\r\nimport { M3RegService } from \"../Services/m3-reg-service\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\nimport { ServiceM3Maestro } from \"../Services/M3Maestro.service\";\r\nimport { bdOffLineLog } from \"./Service/bd-offline-log.service\";\r\nimport * as moment_ from 'moment';\r\nconst moment = moment_;\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3ProcesosOffline {\r\n\r\n //private sKeyCtivos: string = \"CTIVOS\";\r\n constructor(private oServiceOffLine: ServiceOffLine, private oPostServiceM3: PostServiceM3,\r\n private obdOffLineLog: bdOffLineLog) {\r\n\r\n }\r\n\r\n /**\r\n * Obtener M3Procesos, segun el ID M3\r\n * @param id Id del Motor 3\r\n * @param ResponseOKLoadM3Procesos Respuesta OK de get de M3 procesos\r\n * @param ResponseErrorLoadM3Procesos Respuesta Error de get de M3 procesos\r\n */\r\n public GetProcesoById(id, ResponseOKLoadM3Procesos: Function, ResponseErrorLoadM3Procesos: Function) {\r\n //JAGM 20191108 cambio de donde traer el proceso lo trae desde offline\r\n this.oServiceOffLine.get(id).then(proceso => {\r\n //this.obdOffLineLog.get(id).then(proceso => {\r\n ResponseOKLoadM3Procesos(proceso);\r\n }, error => {\r\n //ResponseErrorLoadM3Procesos(error);\r\n this.GetProcesoByIdFromLog(id, ResponseOKLoadM3Procesos, ResponseErrorLoadM3Procesos);\r\n });\r\n }\r\n\r\n\r\n public GetProcesoByIdFromLog(id, ResponseOKLoadM3Procesos: Function, ResponseErrorLoadM3Procesos: Function) {\r\n //JAGM 20191108 cambio de donde traer el proceso lo trae desde offline\r\n //this.oServiceOffLine.get(id).then(proceso => {\r\n this.obdOffLineLog.get(id).then(proceso => {\r\n ResponseOKLoadM3Procesos(proceso);\r\n }, error => {\r\n ResponseErrorLoadM3Procesos(error);\r\n });\r\n }\r\n\r\n /**\r\n * Adicionar M3 Procesos\r\n * @param id Id del M3 Proceso\r\n * @param olM3Procesos Objeto M3 Procesos a agregar\r\n * @param ResponseOKLoadM3Procesos Funcion OK respuesta que atrapará.\r\n */\r\n public AddProceso(idkatios: string, olM3Procesos: M3Procesos, ResponseOKLoadM3Procesos: Function) {\r\n\r\n if (olM3Procesos.IdM3) {\r\n this.AddToDocOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n } else {\r\n this.GetIdM3Offline(idkatios, olM3Procesos.TMIdProceso, olM3Procesos.Ubic1.toString(), olM3Procesos.IDHub.toString()).then(id => {\r\n olM3Procesos.IdM3 = id;\r\n this.AddToDocOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n });\r\n }\r\n }\r\n\r\n public AddToDocOffline(olM3Procesos: M3Procesos, ResponseOKLoadM3Procesos: Function, intento = 0) {\r\n this.oServiceOffLine.AddDocument(olM3Procesos.IdM3.toString(), olM3Procesos).then(x => {\r\n this.SaveIdM3(olM3Procesos.IdM3, olM3Procesos.TMIdProceso, olM3Procesos.Ubic1.toString(), olM3Procesos.IDHub.toString());\r\n // this.AddLogOffline(olM3Procesos).then(x => {\r\n // this.SaveIdM3(olM3Procesos.IdM3, olM3Procesos.TMIdProceso, olM3Procesos.Ubic1.toString(), olM3Procesos.IDHub.toString());\r\n // ResponseOKLoadM3Procesos(olM3Procesos.IdM3);\r\n // }, error => {\r\n // console.log(error);\r\n // });\r\n this.AddLogOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n\r\n //ResponseOKLoadM3Procesos(olM3Procesos.IdM3);\r\n }, error => {\r\n console.log(error);\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLog\" + sFechaNow, JSON.stringify({ \"error\": error, \"olM3Procesos\": olM3Procesos, \"Intento\": intento, \"function\": \"AddToDocOffline\" }));\r\n if (intento == 0) {\r\n this.obdOffLineLog.InstanceAgain();\r\n this.AddToDocOffline(olM3Procesos, ResponseOKLoadM3Procesos, 1);\r\n } else {\r\n ResponseOKLoadM3Procesos({ \"Error\": \"Error en guardar en base de datos pcpal.\" })\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Adicionar log offline de procesos.\r\n * @param olM3Procesos \r\n */\r\n public AddLogOffline(olM3Procesos: M3Procesos, ResponseOKLoadM3Procesos: Function, intento: number = 0) {\r\n //Agregar a Log Socket\r\n //this.AddLogSocket(olM3Procesos)\r\n //return this.obdOffLineLog.AddDocument(olM3Procesos.IdM3.toString(), olM3Procesos)\r\n this.obdOffLineLog.AddDocument(olM3Procesos.IdM3.toString(), olM3Procesos).then(x => {\r\n console.log(x);\r\n ResponseOKLoadM3Procesos(olM3Procesos.IdM3);\r\n }, error => {\r\n console.log(error);\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLog\" + sFechaNow, JSON.stringify({ \"error\": error, \"olM3Procesos\": olM3Procesos, \"Intento\": intento, \"function\": \"AddLogOffline\" }));\r\n if (intento == 0) {\r\n this.obdOffLineLog.InstanceAgain();\r\n this.AddLogOffline(olM3Procesos, ResponseOKLoadM3Procesos, 1);\r\n } else {\r\n ResponseOKLoadM3Procesos({ \"Error\": \"Error en guardar en base de datos local.\" })\r\n }\r\n });\r\n }\r\n\r\n\r\n\r\n\r\n public AddLogSocketOK = () => {\r\n\r\n }\r\n\r\n public closeInstanceLogOff() {\r\n this.obdOffLineLog.closeInstance();\r\n }\r\n\r\n\r\n public GetOffLineLog() {\r\n return this.obdOffLineLog.GetAllDocs();\r\n }\r\n\r\n\r\n public Get1DocOffLineLog(id) {\r\n return this.obdOffLineLog.get(id);\r\n }\r\n\r\n /**\r\n * Reversar m3 proceso, en el log local.\r\n */\r\n public ReversarEnLog(id) {\r\n this.Get1DocOffLineLog(id).then(oM3P => {\r\n var oResult: M3Procesos = oM3P;\r\n for (var i = 0; i < oResult.lM3PEncFP.length; i++) {\r\n oResult.lM3PEncFP[i].ValCambio = 0;\r\n oResult.lM3PEncFP[i].Valor = 0;\r\n oResult.lM3PEncFP[i].ValOtraClasi = 0;\r\n }\r\n oResult.IdEstado = \"RV\";\r\n this.AddLogOffline(oResult, null);\r\n });\r\n }\r\n\r\n public DestruirBDLog(funcionResp: Function) {\r\n return this.obdOffLineLog.Destroy(funcionResp);\r\n }\r\n\r\n public DestruirBDOff(funcionResp: Function) {\r\n return this.oServiceOffLine.Destroy(funcionResp);\r\n }\r\n\r\n public SumarCtivo(idm3: string) {\r\n // var sPart1;\r\n // var sPart2;\r\n\r\n // sPart1 = idm3.substring(0, 8);\r\n // sPart2 = idm3.substring(8, idm3.length);\r\n // sPart2 = +sPart2 + 1;\r\n // idm3 = sPart1 + sPart2;\r\n // return idm3;\r\n var sPart1;\r\n var sPart2;\r\n sPart1 = idm3.substring(0, 9);\r\n sPart2 = idm3.substring(9);\r\n sPart2 = +sPart2 + 1;\r\n idm3 = sPart1 + \"\" + sPart2;\r\n return idm3;\r\n }\r\n\r\n /**\r\n * Actualizar el M3 Procesos, teniendo el Id del documento guardado en la BD NoSQL\r\n * @param id Id del documento Bd NoSQL\r\n * @param olM3Procesos M3 Procesos a almacenar / Actualizar\r\n * @param ResponseOKLoadM3Procesos Respuesta de OK.\r\n */\r\n public updProceso(id, olM3Procesos, ResponseOKLoadM3Procesos: Function, intento = 0) {\r\n\r\n this.oServiceOffLine.AddDocument(id.toString(), olM3Procesos).then(x => {\r\n //ResponseOKLoadM3Procesos(id);\r\n this.AddLogOffline(olM3Procesos, ResponseOKLoadM3Procesos);\r\n }, error => {\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLog\" + sFechaNow, JSON.stringify({ \"error\": error, \"olM3Procesos\": olM3Procesos, \"Intento\": intento, \"function\": \"updProceso\" }));\r\n if (intento == 0) {\r\n this.obdOffLineLog.InstanceAgain();\r\n this.updProceso(id, olM3Procesos, ResponseOKLoadM3Procesos, 1);\r\n } else {\r\n ResponseOKLoadM3Procesos({ \"Error\": \"Error en guardar en base de datos pcpal.\" })\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Actualizar el M3 Procesos, teniendo el Id del documento guardado en la BD NoSQL\r\n * @param id Id del documento Bd NoSQL\r\n * @param olM3Procesos M3 Procesos a almacenar / Actualizar\r\n */\r\n public async updProcesoAsync(id, olM3Procesos) {\r\n await this.oServiceOffLine.AddDocument(id.toString(), olM3Procesos);\r\n this.AddLogOffline(olM3Procesos, null);\r\n }\r\n\r\n public GetAllDocsOffLineSinDocs() {\r\n return this.oServiceOffLine.GetAllDocsOffLineSinDocs();\r\n }\r\n\r\n procesarTicketOffline(idkatios, proceso, oDataUser: any, funcionResp: Function) {\r\n var lM3Procesos = new Array<M3Procesos>();\r\n var oM3RegService = new M3RegService(null, null, idkatios);\r\n\r\n if (this.ValidarTicketCerrado(proceso)) {\r\n lM3Procesos.push(proceso);\r\n\r\n oM3RegService.RegistroEventoM3OffLine(idkatios, this.oPostServiceM3, lM3Procesos, oDataUser).then(x => {\r\n if (x) {\r\n funcionResp(true, \"OK\");\r\n } else {\r\n funcionResp(false, \"OK\");\r\n }\r\n }).catch(function (err) {\r\n funcionResp(false, err);\r\n });\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Valida procesos que se procesaron mientras se estaba fuera de linea\r\n */\r\n public ValidarProcesosAgregadosOffLine(idkatios, oDataUser: any, funcionResp: Function) {\r\n //console.log(\"Entro ValidarProcesosAgregadosOffLine\")\r\n var lM3Procesos = new Array<M3Procesos>();\r\n var oM3RegService = new M3RegService(null, null, idkatios);\r\n this.oServiceOffLine.GetAllDocs().then(result => {\r\n // handle result\r\n for (var i = 0; i < result.rows.length; i++) {\r\n if (result.rows[i].id && !result.rows[i].id.startsWith(\"CTIVOS\")) {\r\n var m3Proceso: M3Procesos = result.rows[i].doc;\r\n if (this.ValidarTicketCerrado(m3Proceso)) {\r\n lM3Procesos.push(result.rows[i].doc);\r\n }\r\n }\r\n }\r\n //console.log(\"Antes RegistroEventoM3OffLine\")\r\n oM3RegService.RegistroEventoM3OffLine(idkatios, this.oPostServiceM3, lM3Procesos, oDataUser).then(x => {\r\n // console.log(\"Dio Respuesta RegistroEventoM3OffLine\")\r\n // console.log(x)\r\n if (x) {\r\n //console.log(\"if 1\")\r\n this.oServiceOffLine.DeleteAllDocs();\r\n funcionResp(true, \"OK\");\r\n } else {\r\n //console.log(\"if 2\")\r\n //Respuesta con errores\r\n //this.oServiceOffLine.DeleteAllDocs();\r\n funcionResp(false, \"OK\");\r\n }\r\n }).catch(function (err) {\r\n funcionResp(false, err);\r\n });\r\n }).catch(function (err) {\r\n console.log(err);\r\n funcionResp(false, err);\r\n });\r\n }\r\n\r\n /**\r\n * Validacion de que el ticket esta cerrado.\r\n * @param m3Proceso \r\n */\r\n public ValidarTicketCerrado(m3Proceso: M3Procesos) {\r\n var bCerrado: boolean = true;\r\n if (m3Proceso.M3ENC != null && m3Proceso.lM3PEncFP != null) {\r\n if (m3Proceso && m3Proceso.SubEstadoAnt != \"Declinado\" && m3Proceso.M3ENC.length > 0 && m3Proceso.lM3PEncFP.length == 0 &&\r\n this.getCantidadTotalByM3Proceso(m3Proceso) > 0) {\r\n bCerrado = false;\r\n }\r\n }\r\n else {\r\n bCerrado = false;\r\n }\r\n\r\n return bCerrado;\r\n }\r\n\r\n\r\n public getCantidadTotalByM3Proceso(oM3Procesos: M3Procesos) {\r\n if (oM3Procesos && oM3Procesos.M3ENC) {\r\n var dCantidad = oM3Procesos.M3ENC.filter(enc => (+enc.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor) > 0).\r\n reduce((acc, cur) => (acc) + (+cur.M3DET.find(det => det.NombreConcepto == \"CANTIDAD\").Valor), 0);\r\n if (dCantidad == 0) {\r\n return 0;\r\n } else {\r\n return dCantidad;\r\n }\r\n } else {\r\n return 0;\r\n }\r\n }\r\n\r\n\r\n\r\n /**\r\n * Obtener todos los documentos Off line que se han guardado como offline.\r\n */\r\n public async GetAllDocsOffline() {\r\n try {\r\n var lM3Procesos = new Array<M3Procesos>();\r\n var result = await this.oServiceOffLine.GetAllDocs();\r\n for (var i = 0; i < result.rows.length; i++) {\r\n if (result.rows[i].id != \"CTIVOS\") {\r\n lM3Procesos.push(result.rows[i].doc);\r\n }\r\n }\r\n return lM3Procesos;\r\n } catch {\r\n return null;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Obtener todos los documentos Off line que se han guardado como offline.\r\n */\r\n public GetAllDocsOfflineDeleted() {\r\n return this.oServiceOffLine.GetAllDocsDeleted();\r\n }\r\n\r\n public deleteCtivos(ubicacion: string, hub: string) {\r\n var data = this.oServiceOffLine.Delete(this.GetKey(ubicacion, hub))\r\n return data;\r\n }\r\n\r\n public getAllCtivos(ubicacion: string, hub: string) {\r\n return this.oServiceOffLine.get(this.GetKey(ubicacion, hub))\r\n }\r\n\r\n\r\n /**\r\n * Valida los consecutivos que estan localmente vs los que estan en el servidor.\r\n */\r\n public ValidacionCtivosVSServer(ikatios: string, ubicacion: string, idHub: string, funcionResp: Function) {\r\n this.getAllCtivos(ubicacion, idHub).then(x => {\r\n if (x) {\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n oServiceM3Maestro.ValidarCtivosVSLocal(this.oPostServiceM3, ikatios, JSON.stringify(x), ubicacion, idHub, funcionResp);\r\n }\r\n })\r\n }\r\n\r\n /**\r\n * Obtener el consecutivo en el que va, el proceso offline que recibe como parametro\r\n * @param ubicacion \r\n * @param hub \r\n * @param sIdProceso \r\n */\r\n public async GetCtivoOffLine(ubicacion: string, hub: string, sIdProceso: string) {\r\n var ctivo: string = \"0\";\r\n try {\r\n var oData = await this.oServiceOffLine.get(this.GetKey(ubicacion, hub));\r\n if (oData) {\r\n var oDataFinded: any = oData.Ctivos.find(x => x.IdProceso == sIdProceso);\r\n if (oDataFinded.Ctivo) {\r\n ctivo = oDataFinded.Ctivo.substring(9);\r\n }\r\n }\r\n } catch { }\r\n return ctivo;\r\n }\r\n\r\n /**\r\n * Guardar id m3 \r\n * @param sIdM3 \r\n * @param sIdProceso \r\n */\r\n public SaveIdM3(sIdM3: string, sIdProceso: string, ubicacion: string, hub: string) {\r\n this.oServiceOffLine.get(this.GetKey(ubicacion, hub)).then(data => {\r\n var oData: Array<any> = data.Ctivos;\r\n var oDataFinded: any = oData.find(x => x.IdProceso == sIdProceso);\r\n if (oDataFinded) {\r\n var ctivoAnt = +oDataFinded.Ctivo.substring(9);\r\n var ctivoAct = +sIdM3.substring(9);\r\n if (ctivoAct > ctivoAnt) {\r\n oDataFinded.Ctivo = sIdM3;\r\n }\r\n } else {\r\n oData.push({ \"IdProceso\": sIdProceso, \"Ctivo\": sIdM3 })\r\n }\r\n this.SaveCtivos(oData, ubicacion, hub);\r\n if (sIdProceso.toUpperCase() == \"TICKETVENTA\") {\r\n localStorage.setItem(\"CtivoTicketVenta\", sIdM3);\r\n }\r\n }, error => {\r\n var oData = new Array<any>();\r\n oData.push({ \"IdProceso\": sIdProceso, \"Ctivo\": sIdM3 })\r\n this.SaveCtivos(oData, ubicacion, hub);\r\n if (sIdProceso.toUpperCase() == \"TICKETVENTA\") {\r\n localStorage.setItem(\"CtivoTicketVenta\", sIdM3);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Guardar ctivos, Idm3.\r\n * @param oData \r\n */\r\n private SaveCtivos(oData: Array<any>, ubicacion: string, hub: string, intento = 0) {\r\n var oDataSend = { \"Ctivos\": oData }\r\n this.oServiceOffLine.AddDocument(this.GetKey(ubicacion, hub), oDataSend).then(x => {\r\n console.log(\"OK\");\r\n }, error => {\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n localStorage.setItem(\"errorLogCtivos\" + sFechaNow, JSON.stringify({ \"error\": error, \"Ctivos\": oDataSend, \"function\": \"SaveCtivos\" }));\r\n console.log(error);\r\n if (intento == 0) {\r\n this.SaveCtivos(oData, ubicacion, hub, 1)\r\n }\r\n });\r\n }\r\n\r\n public DeleteOldDocs(maxDias: number) {\r\n this.obdOffLineLog.DeleteOldDocs(maxDias)\r\n }\r\n\r\n\r\n /**\r\n * Obtener informacion de Id m3, cuando esta fuera de linea\r\n */\r\n public async GetIdM3Offline(idkatios: string, idproceso: string, ubicacion: string, hub: string) {\r\n var oDataIdM3;\r\n var idM3;\r\n try {\r\n oDataIdM3 = await this.oServiceOffLine.get(this.GetKey(ubicacion, hub));\r\n var oDataFinded: any = oDataIdM3.Ctivos.find(x => x.IdProceso == idproceso);\r\n if (oDataFinded) {\r\n idM3 = oDataFinded.Ctivo;\r\n idM3 = this.SumarCtivo(idM3);\r\n idM3 = this.validarAumentoCtivo(idM3, idproceso);\r\n } else {\r\n // var date = new Date();\r\n // idM3 = date.getFullYear() + \"\" + date.getMonth() + \"\" + date.getDay() + \"\" + date.getHours() + \"\" + date.getMinutes() + \"\" + date.getSeconds() + \"\" + date.getMilliseconds();\r\n\r\n idM3 = this.GetCtivo(idkatios, idproceso, ubicacion, hub);\r\n }\r\n } catch {\r\n // var date = new Date();\r\n // idM3 = date.getFullYear() + \"\" + date.getMonth() + \"\" + date.getDay() + \"\" + date.getHours() + \"\" + date.getMinutes() + \"\" + date.getSeconds() + \"\" + date.getMilliseconds();\r\n idM3 = this.GetCtivo(idkatios, idproceso, ubicacion, hub);\r\n }\r\n return idM3;\r\n }\r\n\r\n\r\n validarAumentoCtivo(idM3, idproceso) {\r\n if (idproceso.toUpperCase() == \"TICKETVENTA\") {\r\n let ultimoIdM3 = localStorage.getItem(\"CtivoTicketVenta\");\r\n if (ultimoIdM3 == idM3) {\r\n var sFechaNow: string = moment(new Date()).format('YYYYMMDDTHHmmss')\r\n idM3 = this.SumarCtivo(idM3);\r\n localStorage.setItem(\"errorLogCtivos\" + sFechaNow, JSON.stringify({ \"idM3\": idM3, \"function\": \"validarAumentoCtivo\" }));\r\n }\r\n }\r\n return idM3;\r\n }\r\n\r\n private async GetCtivo(idkatios: string, idproceso: string, ubicacion: string, hub: string) {\r\n var oServiceM3Maestro = new ServiceM3Maestro();\r\n var sCtivo;\r\n sCtivo = await oServiceM3Maestro.GetCtivoBYProceso(this.oPostServiceM3, idkatios, idproceso, ubicacion, hub);\r\n return sCtivo;\r\n }\r\n\r\n\r\n /**\r\n * Obtener llave de pouchDB\r\n * @param ubic \r\n * @param hub \r\n */\r\n public GetKey(ubic, hub) {\r\n return \"CTIVOS_\" + ubic + hub;\r\n }\r\n\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { PostServiceM3 } from \"../../ConexionSQL/posts.service\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3NotifService {\r\n constructor(private oPostServiceM3: PostServiceM3) {\r\n }\r\n\r\n /**\r\n * Obtener la informacion de las notidicaciones por hub\r\n * @param sIDKatios Empresa\r\n */\r\n public async M3GetM3NotificacionesXHubObject(sIDKatios: string, oDataSend: any) {\r\n try {\r\n var resp = await this.oPostServiceM3.getWithBodyM3(\"M3NotifController/M3GetM3NotificacionesXHubObject/\" + sIDKatios, oDataSend).toPromise();\r\n return resp;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n\r\n /**\r\n * Obtener la informacion de las notidicaciones por hub\r\n * @param sIDKatios Empresa\r\n */\r\n public async M3GetM3NotificacionesXHubObjectWithTimeOut(sIDKatios: string, oDataSend: any, timeOut: number) {\r\n try {\r\n var resp = await this.oPostServiceM3.getWithBodyM3TimeOut(\"M3NotifController/M3GetM3NotificacionesXHubObject/\" + sIDKatios, oDataSend, timeOut).toPromise();\r\n return resp;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n /**\r\n * Obtener la informacion de las notidicaciones por hub de un idRep dado\r\n * @param sIDKatios \r\n * @param data \r\n */\r\n public async m3_get_notificacion_x_hub_object(sIDKatios: string, data: any) {\r\n //var data = {\"id_rep\":\"\", \"id_ubicacion\":\"\", \"id_hub\":\"\"}\r\n try {\r\n var resp = await this.oPostServiceM3.getWithBodyM3(\"M3NotifController/m3_get_notificacion_x_hub_object/\" + sIDKatios, data).toPromise();\r\n var data = JSON.parse(JSON.stringify(resp));\r\n return data;\r\n }\r\n catch{\r\n return null;\r\n }\r\n }\r\n\r\n guardarCambiosConfiguracionImpresion(PostServiceM3: PostServiceM3, sIDKatios: string, data: any, oFuncionOK: Function, oFuncionErr: Function) {\r\n\r\n PostServiceM3.postServiceHttpResFullM3(\"M3NotifController/guardarCambiosConfiguracionImpresion/\" + sIDKatios.trim(), data).subscribe(resp => {\r\n oFuncionOK();\r\n },\r\n error => {\r\n oFuncionErr(error[\"_body\"]);\r\n });\r\n }\r\n\r\n}","export class ModelM3Notif{\r\n public IdRep:string;\r\n public IDUbicacion:string;\r\n public IdHub:string;\r\n public Correr:string;\r\n public Tipo:number;\r\n public Condiciones:string;\r\n public Data:string;\r\n public ConfImp:string;\r\n}","export class M3Presentaciones{\r\n public NIVELPRS:string;\r\n public VALOR:number;\r\n public TOPE:number;\r\n}","import { Injectable } from \"@angular/core\";\r\nimport { PostServiceM3 } from \"../../../ConexionSQL/posts.service\";\r\nimport { reserveSlots } from \"@angular/core/src/render3/instructions\";\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n\r\nexport class M3Consultas {\r\n\r\n constructor(public PostServiceM3: PostServiceM3) {\r\n\r\n }\r\n\r\n /**\r\n * Obtener informacion de inventario, teniendo en cuenta los pack asociados \r\n * @param sIDKatios Empresa\r\n * @param data Json con informacion de SKP1 (Modelo) y Ubicacion \r\n * @param oFuncionOK \r\n * @param oFuncionErr \r\n */\r\n public async M3_GETINVENTARIOBYPACK(sIDKatios: string, data: any) {\r\n var resp = await this.PostServiceM3.getWithBodyM3(\"M3Consultas/M3_GETINVENTARIOBYPACK/\" + sIDKatios, data).toPromise();\r\n return resp;\r\n }\r\n\r\n validarInventarioNegativoProducto(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function) {\r\n PostServiceM3.getWithBodyM3(\"M3/validarInventarioNegativoProducto/\" + idKatios, data).subscribe(resp => {\r\n oFuncionOK();\r\n },\r\n error => {\r\n oFuncionErr(JSON.parse(error.error.Message));\r\n });\r\n }\r\n \r\n BuscarConceptoEnM3SIU(PostServiceM3: PostServiceM3, idKatios: string, data: any,\r\n oFuncionOK: Function, oFuncionErr: Function){\r\n PostServiceM3.getWithBodyM3(\"M3Consultas/M3_GETConceptoFromSIU/\" + idKatios + \"/\" + data.sUbicacion + \"/\" + data.sConcepto, {}).subscribe(resp => {\r\n oFuncionOK(resp);\r\n },\r\n error => {\r\n oFuncionErr(JSON.parse(error.error.Message));\r\n }\r\n )\r\n }\r\n\r\n \r\n\r\n\r\n}","export class TECLASRAPIDAS{\r\n public Componente:string;\r\n public Tecla:string;\r\n public Funcion:string;\r\n public IdElemento:string;\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchPRDSService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private idkatios: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private aplSyncCouchAuto = true;\r\n private aplPaquetes = false;\r\n\r\n constructor() {\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n this.GetKatiosM3FromSession();\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n }\r\n\r\n getFlagSyncCouch() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n let flag: boolean = true;\r\n let config;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Configuracion) {\r\n config = JSON.parse(oSUbicacion.M3HUBS[0].Configuracion);\r\n\r\n if (config.SyncCouchAuto != null && config.SyncCouchAuto != undefined) {\r\n flag = config.SyncCouchAuto;\r\n }\r\n }\r\n }\r\n return flag;\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n if (this.idkatios) this.GetKatiosM3FromSession();\r\n this.database = new PouchDB(\"PRD\" + this.idkatios, { auto_compaction: true });\r\n console.debug(\"adapter\")\r\n console.debug(this.database.adapter);\r\n var sIdkatios: string;\r\n\r\n this.validarPaquetes()\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE PRODUCTOS *****************************************\")\r\n\r\n }\r\n\r\n validarPaquetes() {\r\n if (this.aplPaquetes) {\r\n let ubicacion = this.getUbicacion();\r\n if (ubicacion) {\r\n this.sync(this.GetServer() + \"prdsa\" + ubicacion + \"_\" + this.idkatios.toLowerCase());\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"prds_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n\r\n syncCouch() {\r\n if (!this.idkatios) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n else {\r\n this.validarPaquetes()\r\n }\r\n }\r\n\r\n getUbicacion() {\r\n let sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n let oSUbicacion;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.IDUbicacion) {\r\n return oSUbicacion.IDUbicacion;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetKatiosM3FromSession() {\r\n var Katios = localStorage.getItem(\"ConfigKatios\" + this.idkatios.toUpperCase());\r\n if (Katios !== undefined && Katios != null) {\r\n var jKatiosM3 = JSON.parse(Katios);\r\n if (jKatiosM3 && jKatiosM3.Katios && jKatiosM3.Katios.KatiosM3) {\r\n let apl = jKatiosM3.Katios.KatiosM3.find(x => x.Llave.toUpperCase() == \"APLPAQS\");\r\n if (apl && apl.Valor == \"1\") {\r\n this.aplPaquetes = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async Destroy(idkatios) {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n\r\n\r\n\r\n public sync(remote: string) {\r\n this.aplSyncCouchAuto = this.getFlagSyncCouch();\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: this.aplSyncCouchAuto,\r\n retry: true\r\n }).on('complete', change => {\r\n\r\n console.log(\"********************************** COMPLETO CAMBIO PRODUCTOS *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PRODUCTOS *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getInfo() {\r\n return this.database.info();\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public deletePrd(id) {\r\n this.database.get(id).then(result => {\r\n return this.database.remove(result);\r\n });\r\n }\r\n\r\n public DeleteAllDocs() {\r\n this.database.allDocs({ include_docs: true }).then(allDocs => {\r\n return allDocs.rows.map(row => {\r\n return { _id: row.id, _rev: row.doc._rev, _deleted: true };\r\n });\r\n }).then(deleteDocs => {\r\n return this.database.bulkDocs(deleteDocs);\r\n });\r\n }\r\n\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchCodsPRDSService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private idkatios;\r\n private aplSyncCouchAuto = true;\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n }\r\n\r\n getFlagSyncCouch() {\r\n var sSUbicacion = sessionStorage.getItem(\"SUbicacion\");\r\n var oSUbicacion;\r\n let flag: boolean = true;\r\n let config;\r\n\r\n if (sSUbicacion) {\r\n oSUbicacion = JSON.parse(sSUbicacion);\r\n if (oSUbicacion.M3HUBS && oSUbicacion.M3HUBS[0] && oSUbicacion.M3HUBS[0].Configuracion) {\r\n config = JSON.parse(oSUbicacion.M3HUBS[0].Configuracion);\r\n\r\n if (config.SyncCouchAuto != null && config.SyncCouchAuto != undefined) {\r\n flag = config.SyncCouchAuto;\r\n }\r\n }\r\n }\r\n return flag;\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n this.idkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"codsprd_\" + this.idkatios, { auto_compaction: true });\r\n console.debug(\"adapter\")\r\n console.debug(this.database.adapter);\r\n\r\n this.sync(this.GetServer() + \"codsprd_\" + this.idkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE PRODUCTOS *****************************************\")\r\n\r\n }\r\n\r\n syncCouch() {\r\n if (!this.idkatios) {\r\n this.CrearPouchSincronizacion();\r\n }\r\n else {\r\n this.sync(this.GetServer() + \"codsprd_\" + this.idkatios.toLowerCase());\r\n }\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n this.aplSyncCouchAuto = this.getFlagSyncCouch();\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: this.aplSyncCouchAuto,\r\n retry: true\r\n }).on('complete', change => {\r\n console.log(\"********************************** COMPLETO CAMBIO CODS PRODUCTOS *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO CODS PRODUCTOS *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n\r\n\r\n public async Destroy() {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class CouchPromocionesService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private elementRem: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"promociones_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios: string;\r\n\r\n //this.sync(this.GetServer(sIdkatios));\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE PROMOCIONES *****************************************\")\r\n }\r\n }\r\n\r\n public GetServer(sIdkatios): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3 + \"promociones_\" + sIdkatios.toLowerCase();\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n console.log(change);\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n console.log(change);\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n console.log(err)\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public syncWithDB(remoteDatabase: PouchDB) {\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n console.log(change);\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n console.log(change);\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n console.log(err)\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n\r\n public async syncAwait(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n await this.database.replicate.from(remoteDatabase, {\r\n }).on('complete', change => {\r\n\r\n console.log(change);\r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n this.syncWithDB(remoteDatabase);\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n console.log(err)\r\n // boo, something went wrong!\r\n });\r\n\r\n await this.database.compact();\r\n }\r\n\r\n // public changes(remote: string){\r\n // let remoteDatabase = new PouchDB(remote);\r\n // remoteDatabase.changes({\r\n // since: 'now',\r\n // live: true,\r\n // include_docs: true\r\n // }).on('change', function (change) {\r\n // // change.id contains the doc id, change.doc contains the doc\r\n // if (change.deleted) {\r\n // // document was deleted\r\n // } else {\r\n // // document was added/modified\r\n // }\r\n // }).on('error', function (err) {\r\n // // handle errors\r\n // });\r\n // }\r\n\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public delete(id: string) {\r\n this.database.get(id).then(doc =>{\r\n return this.database.remove(doc);\r\n });\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public elementRemoved() {\r\n this.database.changes({ live: true, since: 'now', include_docs: true })\r\n .on('change', change => {\r\n if (change.deleted) {\r\n console.log(change);\r\n this.elementRem.emit(change);\r\n }\r\n //renderDocsSomehow();\r\n }).on('error', console.log.bind(console));\r\n }\r\n\r\n public getRemoveListener() {\r\n return this.elementRem;\r\n }\r\n\r\n\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n })\r\nexport class CouchUbicacionesService {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n private change: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if(!this.isInstantiated) {\r\n sIdkatios= this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"ubicaciones_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios:string;\r\n \r\n this.sync(this.GetServer() + \"ubicaciones_\" + sIdkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE UBICACIONES *****************************************\")\r\n }\r\n }\r\n \r\n public GetServer():string{\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession(){\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if(sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null){\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n } \r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n \r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n \r\n console.log(\"********************************** COMPLETO CAMBIO UBICACIONES *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO UBICACIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public ChangeItem() {\r\n this.database.changes({ live: true, since: 'now', include_docs: true })\r\n .on('change', change => {\r\n //if (change.deleted) {\r\n console.log(change);\r\n this.change.emit(change);\r\n //}\r\n //renderDocsSomehow();\r\n }).on('error', console.log.bind(console));\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({include_docs: true});\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({include_docs: false});\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public getChange() {\r\n return this.change;\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport { M3Procesos } from '../Registro/m3-procesos';\r\nimport PouchDB from 'pouchdb';\r\nimport 'rxjs/add/operator/map';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class M3NotificacionesAPP {\r\n public oDataM3Procesos: M3Procesos;\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n var sIdkatios: string;\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"notificaciones_\" + sIdkatios.toLowerCase().trim(), { auto_compaction: true });\r\n this.sync(this.GetServer() + \"notificaciones_\" + sIdkatios.toLowerCase().trim());\r\n this.isInstantiated = true;\r\n }\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n //Obtener informacion de base de datos.\r\n public GetDataPouchBD(isKey: string) {\r\n return this.database.get(isKey);\r\n }\r\n\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n public sync(remote: string) {\r\n \r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: true,\r\n retry: true\r\n }).on('complete', change => {\r\n \r\n console.log(\"********************************** COMPLETO CAMBIO PROMOCIONES *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO PROMOCIONES *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n //armar key de documento que se quiere consultar\r\n public GetKeyDocumentoDB(isIDKatios: string, isDocumento: string) {\r\n return isIDKatios + \"?\" + isDocumento;\r\n }\r\n\r\n\r\n}\r\n","import { TypeM3PrdGrp } from \"../Maestro/M3PrdGrp.type\";\r\nimport { M3PrdPackByTipo } from \"../Maestro/m3-pack-by-tipo\";\r\nimport { M3PackByReglas } from \"../Maestro/m3-pack-by-reglas\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { M3PItemsWEB } from \"../Registro/m3-pdetalle-items\";\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ServiceM3PackByipo {\r\n\r\n\r\n private operators = {\r\n '<': function (a, b) { return +a < +b },\r\n '>': function (a, b) { return +a > +b },\r\n '<=': function (a, b) { return +a <= +b },\r\n '>=': function (a, b) { return +a >= +b },\r\n 'IGUAL': function (a, b) { return a == b },\r\n 'DIFF': function (a, b) { return a != b },\r\n 'EN': function (a, b) { return a === b },\r\n 'AND': function (a, b) { return a && b },\r\n 'OR': function (a, b) { return a || b },\r\n '*': function (a, b) { return true },\r\n 'MOD': function (a, b) { return +a % +b == 0 },\r\n // ...\r\n };\r\n\r\n\r\n /**\r\n * Validar si el producto que será hijo, cumple con las caracteristicas\r\n * @param m3ProcPKG \r\n * @param producto \r\n */\r\n public ValidarSiEsTipo(m3ProcPKG: TypeM3PrdGrp, producto: TypeM3PrdGrp) {\r\n try {\r\n if (m3ProcPKG.M3PACKBYTIPO.find(x => x.DESTINO == producto.TIPO)) {\r\n return true;\r\n } else {\r\n return false;\r\n }\r\n } catch{\r\n return false;\r\n }\r\n\r\n }\r\n\r\n\r\n /**\r\n * Aplicacion de reglas de paquetes, teniendo en cuenta al información del producto ingresado.\r\n * @param m3ProcPKG \r\n * @param producto \r\n * @param oM3PItemsWEB \r\n */\r\n public GeneraValidaciones(m3ProcPKG: TypeM3PrdGrp, producto: TypeM3PrdGrp, oM3PItemsWEB: M3PItemsWEB) {\r\n try {\r\n var bResp:boolean = true;\r\n var oM3PACKBYTIPO: M3PrdPackByTipo = m3ProcPKG.M3PACKBYTIPO.find(x => x.DESTINO == producto.TIPO);\r\n if (oM3PACKBYTIPO) {\r\n for (var i = 0; oM3PACKBYTIPO.M3PACKREGLAS.length; i++) {\r\n var oM3PackByReglas: M3PackByReglas = oM3PACKBYTIPO.M3PACKREGLAS[i];\r\n //Se esta validando el papa del paquete.\r\n if(this.operators[oM3PackByReglas.Operacion](this.GetParametros(oM3PackByReglas.Param1, m3ProcPKG) , this.GetParametros(oM3PackByReglas.Param2, m3ProcPKG))){\r\n this.ValidacionAccion(oM3PackByReglas.Accion, oM3PItemsWEB);\r\n }else{\r\n bResp = false;\r\n }\r\n }\r\n }\r\n } catch{\r\n\r\n }\r\n return bResp;\r\n }\r\n\r\n /**\r\n * Validación de accion de reglas de paquete.\r\n * @param sAccion \r\n */\r\n private ValidacionAccion(sAccion:string, oM3PItemsWEB:M3PItemsWEB){\r\n try{\r\n if(sAccion != \"\") {\r\n var oAccion:any = JSON.parse(sAccion);\r\n if(oAccion.Accion){\r\n switch(oAccion.Accion){\r\n case \"Cantidad\":\r\n oM3PItemsWEB.dCantidad = oAccion.Valor;\r\n break;\r\n }\r\n }\r\n }\r\n }catch(ex){\r\n\r\n }\r\n \r\n\r\n\r\n }\r\n\r\n\r\n /**\r\n * Obtener información de parametros, teniendo en cuenta las reglas.\r\n * @param parametro \r\n * @param producto \r\n */\r\n private GetParametros(parametro: string, producto: TypeM3PrdGrp) {\r\n var sParam: string = \"\";\r\n try {\r\n var regla: string = parametro.split(\"_\")[0];\r\n switch (regla.toUpperCase()) {\r\n case \"ADI\":\r\n sParam = producto.LoM3PrdAdicionales.find(x => x.ATRIBUTO == parametro.split(\"_\")[1]).VALOR;\r\n break;\r\n case \"CONST\":\r\n sParam = parametro.split(\"_\")[1];\r\n break;\r\n default:\r\n if(regla.toUpperCase().startsWith(\"SKP\") ){\r\n sParam = producto.LoM3PrdGeneral[0][regla];\r\n }\r\n break;\r\n }\r\n } catch{\r\n\r\n }\r\n return sParam;\r\n }\r\n\r\n\r\n\r\n}","import * as moment_ from 'moment';\r\n\r\nconst moment = moment_;\r\n\r\nexport class FiltrosDiarioOffLine {\r\n public FiltrarByFechasOff(Data, AddToDoc: Function) {\r\n try {\r\n var rows: Array<any>;\r\n //var newRows = new Array<any>();\r\n var fechaI = sessionStorage.getItem(\"FechaItCOFF\");\r\n var fechaF = sessionStorage.getItem(\"FechaFtCOFF\");\r\n rows = Data.rows;\r\n\r\n if (fechaF && fechaI) {\r\n var iFInicio = this.GetFechaNumber(fechaI);\r\n var iFFinal = this.GetFechaNumber(fechaF);\r\n console.log(iFInicio)\r\n console.log(iFFinal)\r\n for (var i = 0; i < rows.length; i++) {\r\n var m3p: any = rows[i].doc;\r\n if (m3p) {\r\n var fechaProc = this.GetFechaNumber(m3p.Fecha)\r\n console.log(fechaProc)\r\n if (+fechaProc >= +iFInicio && +fechaProc <= +iFFinal) {\r\n //newRows.push(rows[i]);\r\n AddToDoc(m3p);\r\n }\r\n }\r\n }\r\n }\r\n\r\n } catch (ex) {\r\n console.log(\"FiltrarByFechasOff\")\r\n console.log(ex)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n public FiltrarByTexto(Data, sTexto: string, AddToDoc: Function) {\r\n try {\r\n var rows: Array<any>;\r\n\r\n rows = Data.rows;\r\n for (var i = 0; i < rows.length; i++) {\r\n var m3p: any = rows[i].doc;\r\n if (m3p) {\r\n if (m3p.IdM3.includes(sTexto) || (m3p.ndocUActivo && m3p.ndocUActivo.includes(sTexto))) {\r\n //newRows.push(rows[i]);\r\n AddToDoc(m3p);\r\n }\r\n }\r\n }\r\n\r\n } catch (ex) {\r\n console.log(\"FiltrarByFechasOff\")\r\n console.log(ex)\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n private GetFechaNumber(sdate: string) {\r\n //var date = new Date(sdate);\r\n var d = moment(sdate).format('YYYYMMDD');\r\n\r\n return d;\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n// @Injectable()\r\nexport class CouchPerxipo {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n\r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"perxtipo_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios: string;\r\n\r\n this.sync(this.GetServer() + \"perxtipo_\" + sIdkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE perxtipo *****************************************\")\r\n\r\n }\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: false,\r\n retry: false\r\n }).on('complete', change => {\r\n console.log(\"********************************** COMPLETO CAMBIO perxtipo *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO perxtipo *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({ include_docs: false });\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n\r\n\r\n public async Destroy() {\r\n var respuesta;\r\n respuesta = await this.database.destroy()\r\n return respuesta\r\n }\r\n}","import { Injectable, EventEmitter } from '@angular/core'\r\nimport PouchDB from 'pouchdb';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\n// @Injectable()\r\nexport class CouchDinamByProcesos {\r\n\r\n private isInstantiated: boolean;\r\n private database: any;\r\n private listener: EventEmitter<any> = new EventEmitter();\r\n\r\n constructor() {\r\n if (!this.isInstantiated) {\r\n this.CrearPouchSincronizacion()\r\n }\r\n }\r\n\r\n public CrearPouchSincronizacion() {\r\n \r\n sIdkatios = this.GetIdKatiosLVL1FromSession();\r\n this.database = new PouchDB(\"dinamxproc_\" + sIdkatios, { auto_compaction: true });\r\n var sIdkatios: string;\r\n\r\n this.sync(this.GetServer() + \"dinamxproc_\" + sIdkatios.toLowerCase());\r\n this.isInstantiated = true;\r\n console.log(\"********************************** INSTANCE dinamxproc_ *****************************************\")\r\n \r\n}\r\n\r\n public GetServer(): string {\r\n var json = JSON.parse(sessionStorage.getItem(\"ConfigJSON\"));\r\n return json.CouchDBM3;\r\n }\r\n\r\n //Idkatios que se carga, cuando se inicia el redireccionamiento hacia el WE8\r\n public GetIdKatiosLVL1FromSession() {\r\n var sSessionLVL1M3 = sessionStorage.getItem(\"SessionLVL1M3\");\r\n var oSessionLVL1M3;\r\n if (sSessionLVL1M3 !== undefined && sSessionLVL1M3 != null) {\r\n oSessionLVL1M3 = JSON.parse(sSessionLVL1M3);\r\n if (oSessionLVL1M3.UsuarioSistema.IDKATIOS !== undefined && oSessionLVL1M3.UsuarioSistema.IDKATIOS != null) {\r\n return oSessionLVL1M3.UsuarioSistema.IDKATIOS;\r\n }\r\n }\r\n return null;\r\n }\r\n\r\n public sync(remote: string) {\r\n let remoteDatabase = new PouchDB(remote, { auto_compaction: true });\r\n\r\n this.database.replicate.from(remoteDatabase, {\r\n live: false,\r\n retry: false\r\n }).on('complete', change => {\r\n console.log(\"********************************** COMPLETO CAMBIO dinamxproc_ *****************************************\")\r\n }).on('change', change => {\r\n this.listener.emit(change);\r\n console.log(\"********************************** CHANGE CAMBIO dinamxproc_ *****************************************\")\r\n }).on('error', function (err) {\r\n console.log(\"Error\")\r\n // boo, something went wrong!\r\n });\r\n }\r\n\r\n public get(id: string) {\r\n return this.database.get(id);\r\n }\r\n\r\n public fetch() {\r\n return this.database.allDocs({ include_docs: true });\r\n }\r\n\r\n public getEncabezado() {\r\n return this.database.allDocs({include_docs: false});\r\n }\r\n\r\n public getChangeListener() {\r\n return this.listener;\r\n }\r\n\r\n\r\n\r\n public async Destroy() {\r\n var respuesta;\r\n respuesta= await this.database.destroy()\r\n return respuesta\r\n }\r\n}"],"names":["_","timeout","Headers","RequestOptions","Injectable","Http","HttpClient","EventEmitter","moment","tslib_1.__values","_.cloneDeep","PostServiceM3","tslib_1.__decorate","tslib_1.__param","Optional","M3DevicesService"],"mappings":"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"}
|