From 7c9406682c80d90b15d51438e9d1be773138563b Mon Sep 17 00:00:00 2001 From: Samuele Locatelli Date: Thu, 4 Jun 2026 13:45:46 +0200 Subject: [PATCH] SPEC: - pulizia vecchio controller/repository globale - pulizia MpDataService - aggiunta file readme progetto - update refactor progetto e config --- MP.Data/Controllers/MpSpecRepository.cs | 2029 ----------------- .../Controllers/RecipeArchiveController.cs | 3 - MP.SPEC/Controllers/RecipeController.cs | 5 +- MP.SPEC/Data/MpDataService.cs | 22 +- MP.SPEC/MP.SPEC.csproj | 2 +- MP.SPEC/README.md | 89 + MP.SPEC/README.pdf | Bin 0 -> 116625 bytes MP.SPEC/Resources/ChangeLog.html | 2 +- MP.SPEC/Resources/VersNum.txt | 2 +- MP.SPEC/Resources/manifest.xml | 2 +- MP.SPEC/appsettings.Production.json | 2 +- MP.SPEC/appsettings.json | 2 +- MP.SPEC/refactor_repository.md | 119 +- MP.SPEC/refactor_repository.pdf | Bin 91727 -> 116116 bytes 14 files changed, 202 insertions(+), 2077 deletions(-) delete mode 100644 MP.Data/Controllers/MpSpecRepository.cs create mode 100644 MP.SPEC/README.md create mode 100644 MP.SPEC/README.pdf diff --git a/MP.Data/Controllers/MpSpecRepository.cs b/MP.Data/Controllers/MpSpecRepository.cs deleted file mode 100644 index 27b70da3..00000000 --- a/MP.Data/Controllers/MpSpecRepository.cs +++ /dev/null @@ -1,2029 +0,0 @@ -using Microsoft.Data.SqlClient; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using MP.Data.DbModels; -using NLog; -using System; -using System.Collections.Generic; -using System.Data; -using System.Linq; -using System.Threading.Tasks; - -namespace MP.Data.Controllers -{ - public class MpSpecController - { - protected readonly IDbContextFactory _ctxFactory; - protected readonly IDbContextFactory _ctxFactoryFL; - #region Public Constructors - - public MpSpecController( - IConfiguration configuration, - IDbContextFactory ctxFactory, - IDbContextFactory ctxFactoryFL) - { - _configuration = configuration; - _ctxFactory = ctxFactory; - _ctxFactoryFL = ctxFactoryFL; -#if false - string connStr = _configuration.GetConnectionString("MP.Data"); - options = new DbContextOptionsBuilder() - .UseSqlServer(connStr) - .Options; -#endif - Log.Info("Avviata classe MpSpecController"); - } - - #endregion Public Constructors - - #region Public Methods - -#if false - /// - /// Stacca un nuovo counter x il tipo richiesto - /// - /// - public async Task AnagCountersGetNextAsync(string cntType) - { - AnagCountersModel answ = new AnagCountersModel(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - bool outTable = true; - if (outTable) - { - var pCntType = new SqlParameter("@CntType", cntType); - var pLastNum = new SqlParameter - { - ParameterName = "@LastNum", - SqlDbType = SqlDbType.Int, - Direction = ParameterDirection.Output - }; - - var dbResult = await dbCtx - .DbSetAnagCount - .FromSqlRaw("EXEC dbo.stp_getNextNumb @CntType, @LastNum OUTPUT", pCntType, pLastNum) - .AsNoTracking() - .FirstOrDefaultAsync(); - if (dbResult != null) - { - answ = dbResult; - } - } - else - { - // se si volessero impiegare parametri OUTPUT (qui ne mancherebbe 1 nella stored x CntCode...) - var pCntType = new SqlParameter("@CntType", cntType); - var pLastNum = new SqlParameter - { - ParameterName = "@LastNum", - SqlDbType = SqlDbType.Int, - Direction = ParameterDirection.Output - }; - var pCntCode = new SqlParameter - { - ParameterName = "@CntCode", - SqlDbType = SqlDbType.NVarChar, - Direction = ParameterDirection.Output - }; - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC dbo.stp_getNextNumb @CntType, @LastNum OUTPUT, @CntCode OUTPUT", pCntType, pLastNum, pCntCode); - if (dbResult != 0) - { - answ.CntType = cntType; - answ.CntCode = $"{pCntCode.Value}"; - int lNum = 0; - int.TryParse($"{pLastNum.Value}", out lNum); - answ.LastNum = lNum; - } - } - return answ; - } - - /// - /// Restituisce l'anagrafica EVENTI generalmente disponibile per OGNI macchina - /// - /// Nome Table x filtro (std: EvList) - /// Nome Field x filtro (std: Common) - /// - public async Task> AnagEventiGeneralAsync(string TableName = "EvList", string FieldName = "Common") - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var pTableName = new SqlParameter("@TableName", TableName); - var pFieldName = new SqlParameter("@FieldName", FieldName); - var dbResult = await dbCtx - .DbSetVSEB - .FromSqlRaw("exec dbo.stp_vseb_getGenerallyAvailable @TableName, @FieldName", pTableName, pFieldName) - .AsNoTracking() - .ToListAsync(); - return dbResult ?? new(); - } - - - /// - /// Elenco Gruppi tipo Azienda - /// - /// - public Task> AnagGruppiAziendeAsync() - { - return AnagGruppiGetTipoAsync("AZIENDA"); - } - - /// - /// Delete record AnagraficaGruppi - /// - /// - public async Task AnagGruppiDeleteAsync(AnagGruppiModel updRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var dbRec = await dbCtx - .DbSetAnagGruppi - .AsNoTracking() - .Where(x => x.CodGruppo == updRec.CodGruppo) - .FirstOrDefaultAsync(); - // se trovato aggiorno descrizione (resto immutato x sicurezza!) - if (dbRec != null) - { - dbCtx.DbSetAnagGruppi.Remove(dbRec); - } - var numRes = await dbCtx.SaveChangesAsync(); - return numRes != 0; - } - - /// - /// Elenco Gruppi tipo Fasi - /// - /// - public Task> AnagGruppiFaseAsync() - { - return AnagGruppiGetTipoAsync("FASE"); - } - - - /// - /// Gruppi x tipo modalità Async - /// - /// - /// - public async Task> AnagGruppiGetTipoAsync(string tipoGruppo) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetAnagGruppi - .Where(x => x.TipoGruppo == tipoGruppo) - .AsNoTracking() - .OrderBy(x => x.CodGruppo) - .ToListAsync(); - } - - /// - /// Elenco Gruppi tipo REPARTO (x associazione Macchine-Operatori) in formato DTO con conteggi del numero record trovati - /// - /// - public async Task> AnagGruppiRepartoDtoAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - // in primis recupero i reparti... - var listReparti = await AnagGruppiGetTipoAsync("REPARTO"); - - // recupero TUTTE le macchine da DbSetGrp2Macc - var listMacc = await dbCtx - .DbSetGrp2Macc - .AsNoTracking() - .ToListAsync(); - // recupero TUTTI gli operatori da DbSetGrp2Oper - var listOpr = await dbCtx - .DbSetGrp2Oper - .AsNoTracking() - .ToListAsync(); - - return listReparti - .Select(x => new RepartiDTO() - { - CodGruppo = x.CodGruppo, - TipoGruppo = x.TipoGruppo, - DescrGruppo = x.DescrGruppo, - SelEnabled = x.SelEnabled, - CountMacc = listMacc.Where(y => y.CodGruppo == x.CodGruppo).Select(x => x.IdxMacchina).Distinct().Count(), - CountOpr = listOpr.Where(y => y.CodGruppo == x.CodGruppo).Select(x => x.MatrOpr).Distinct().Count() - }) - .ToList(); - } - - /// - /// Upsert record AnagraficaGruppi (solo codice/descrizione) - /// - /// - /// - public async Task AnagGruppiUpsertAsync(AnagGruppiModel updRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var dbRec = await dbCtx - .DbSetAnagGruppi - .AsNoTracking() - .Where(x => x.CodGruppo == updRec.CodGruppo) - .FirstOrDefaultAsync(); - // se trovato aggiorno descrizione (resto immutato x sicurezza!) - if (dbRec != null) - { - dbRec.DescrGruppo = updRec.DescrGruppo; - dbCtx.Entry(dbRec).State = EntityState.Modified; - } - // altrimenti aggiungo - else - { - await dbCtx.DbSetAnagGruppi.AddAsync(updRec); - } - var numRes = await dbCtx.SaveChangesAsync(); - - return numRes != 0; - } - - - /// - /// Elenco valori ammessi x Stati commessa (es Yacht Baglietto) - /// - /// - public Task> AnagStatiCommAsync() - { - return ListValuesFiltAsync("PODL", "StatoComm"); - } - - /// - /// Elenco valori ammessi x Tipo articoli - /// - /// - public Task> AnagTipoArtLvAsync() - { - return ListValuesFiltAsync("AnagArticoli", "Tipo"); - } - -#endif - -#if false - /// - /// Elenco codice articoli che abbiano dati Dossier - /// - /// - public async Task> ArticleWithDossierAsync() - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - return await dbCtx - .DbSetDossiers - .AsNoTracking() - .Select(i => i.CodArticolo) - .Distinct() - .ToListAsync(); - } - -#endif - -#if false - /// - /// Conteggio num articoli Async - /// - /// - public async Task ArticoliCountAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var result = await dbCtx - .DbSetArticoli - .CountAsync(); - return result; - } - - /// - /// Conteggio articoli data condizione ricerca - /// - /// - /// - /// - /// - public async Task ArticoliCountSearchAsync(string tipoArt = "*", string azienda = "*", string searchVal = "") - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - IQueryable query = dbCtx.DbSetArticoli.AsNoTracking(); - - // filtro tipo articolo - if (tipoArt != "*") - { - //query = query.Where(x => x.Tipo.ToLower() == tipoArt.ToLower()); - query = query.Where(x => EF.Functions.Like(x.Tipo, tipoArt)); - } - // filtro azienda - if (azienda != "*") - { - //query = query.Where(x => x.Azienda.ToLower() == azienda.ToLower()); - query = query.Where(x => EF.Functions.Like(x.Azienda, azienda)); - } - // filtro ricerca - if (!string.IsNullOrWhiteSpace(searchVal)) - { - string pattern = $"%{searchVal}%"; - query = query.Where(x => - EF.Functions.Like(x.CodArticolo, pattern) || - EF.Functions.Like(x.DescArticolo, pattern) || - EF.Functions.Like(x.Disegno, pattern)); - } - - return await query - .OrderBy(x => x.CodArticolo) - .CountAsync(); - } - - /// - /// Elenco tabella Articoli IMPIEGATI (da stored stp_ART_getUsed) Async - /// - /// - public async Task ArticoliCountUsedAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var result = await dbCtx - .DbSetCounter - .FromSqlRaw("EXEC stp_ART_CountUsed") - .AsNoTracking() - .ToListAsync(); - - return result.FirstOrDefault()?.NumCount ?? 0; - } - - /// - /// Eliminazione Record - /// - /// - /// - public async Task ArticoliDeleteRecordAsync(AnagArticoliModel currRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currVal = dbCtx - .DbSetArticoli - .Where(x => x.CodArticolo == currRec.CodArticolo) - .FirstOrDefault(); - dbCtx - .DbSetArticoli - .Remove(currVal); - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Restitusice elenco articoli dato tipo (es KIT) - /// - /// - /// - /// - /// - public async Task> ArticoliGetByTipoAsync(string tipo, string azienda = "*") - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetArticoli - .AsNoTracking() - .Where(x => x.Tipo.ToUpper() == tipo.ToUpper() && (azienda == "*" || x.Azienda.ToUpper() == azienda.ToUpper())) - .OrderBy(x => x.CodArticolo) - .ToListAsync(); - } - - /// - /// Elenco tabella Articoli da filtro - /// - /// - /// - /// - /// - /// - public async Task> ArticoliGetSearchAsync(int numRecord, string tipoArt = "*", string azienda = "*", string searchVal = "") - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - IQueryable query = dbCtx.DbSetArticoli - .AsNoTracking(); - - // filtro tipo articolo - if (tipoArt != "*") - { - //query = query.Where(x => x.Tipo.ToLower() == tipoArt.ToLower()); - query = query.Where(x => EF.Functions.Like(x.Tipo, tipoArt)); - } - // filtro azienda - if (azienda != "*") - { - //query = query.Where(x => x.Azienda.ToLower() == azienda.ToLower()); - query = query.Where(x => EF.Functions.Like(x.Azienda, azienda)); - } - // filtro ricerca - if (!string.IsNullOrWhiteSpace(searchVal)) - { - string pattern = $"%{searchVal}%"; - query = query.Where(x => - EF.Functions.Like(x.CodArticolo, pattern) || - EF.Functions.Like(x.DescArticolo, pattern) || - EF.Functions.Like(x.Disegno, pattern)); - } - - return await query - .OrderBy(x => x.CodArticolo) - .Take(numRecord) - .ToListAsync(); - } - - /// - /// Elenco tabella Articoli NON IMPIEGATI (da stored stp_ART_getUsed) Async - /// - /// - public async Task> ArticoliGetUnusedAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetArticoli - .FromSqlRaw("EXEC stp_ART_getNotUsed") - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Elenco tabella Articoli IMPIEGATI (da stored stp_ART_getUsed) Async - /// - /// - public async Task> ArticoliGetUsedAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetArticoli - .FromSqlRaw("EXEC stp_ART_getUsed") - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Elenco Articoli che sono in KIT Child - /// - /// - public async Task> ArticoliInKitAsync() - { - List dbResult = new List(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - dbResult = await dbCtx - .DbSetArticoli - .FromSqlRaw("EXEC stp_TempKIT_getArtChild") - .AsNoTracking() - .ToListAsync(); - return dbResult; - } - - /// - /// Update Record - /// - /// - /// - public async Task ArticoliUpdateRecord(AnagArticoliModel editRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currRec = dbCtx - .DbSetArticoli - .Where(x => x.CodArticolo == editRec.CodArticolo) - .FirstOrDefault(); - if (currRec != null) - { - currRec.Disegno = editRec.Disegno; - currRec.DescArticolo = editRec.DescArticolo; - currRec.Tipo = editRec.Tipo; - currRec.Azienda = editRec.Azienda; - dbCtx.Entry(currRec).State = EntityState.Modified; - } - else - { - dbCtx - .DbSetArticoli - .Add(editRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } -#endif -#if false - - /// - /// Elenco da tabella Config Async - /// - /// - public async Task> ConfigGetAllAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetConfig - .AsNoTracking() - .OrderBy(x => x.Chiave) - .ToListAsync() ?? new(); - } - - /// - /// Update record config - /// - /// - public async Task ConfigUpdateAsync(ConfigModel updRec) - { - bool fatto = false; - ConfigModel dbResult = new ConfigModel(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - dbResult = await dbCtx - .DbSetConfig - .Where(x => x.Chiave == updRec.Chiave) - .FirstOrDefaultAsync(); - if (dbResult != null) - { - dbResult.Valore = updRec.Valore; - fatto = await dbCtx.SaveChangesAsync() > 0; - } - return fatto; - } - - /// - /// Eliminazione di un dossier - /// - /// record dossier da eliminare - /// - public async Task DossiersDeleteRecordAsync(DossierModel currRec) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - var currVal = await dbCtx - .DbSetDossiers - .Where(x => x.IdxDossier == currRec.IdxDossier) - .FirstOrDefaultAsync(); - dbCtx - .DbSetDossiers - .Remove(currVal); - - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elenco ultimi n record DOssiers (che contengono ad esempio "salvataggi" di FLuxLog) dato - /// macchina (ordinato x data registrazione) - /// - /// * = tutte, altrimenti solo x una data macchina - /// * = tutti, altrimenti solo x un dato articolo - /// Data minima per estrazione records - /// Data Massima per estrazione records - /// Num max record recuperati - /// - public async Task> DossiersGetLastFiltAsync(string IdxMacchina, string CodArticolo, DateTime DtStart, DateTime DtEnd, int MaxRec) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - return await dbCtx - .DbSetDossiers - .AsNoTracking() - .Where(x => (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodArticolo == "*" || x.CodArticolo == CodArticolo) && (x.DtRif >= DtStart && x.DtRif <= DtEnd)) - .Include(m => m.MachineNav) - .Include(a => a.ArticoloNav) - .OrderByDescending(x => x.DtRif) - .Take(MaxRec) - .ToListAsync(); - } - - /// - /// insert di un record Dossier - /// - /// record dossier da modificare - /// - public async Task DossiersInsertAsync(DossierModel newRec) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - dbCtx - .DbSetDossiers - .AddAsync(newRec); - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Effettua salvataggio snapshot parametri (con stored) + svuota eventuale cache _redisConn - /// - /// macchina - /// Data min x selezione - /// Data MAX x selezione - public async Task DossiersTakeParamsSnapshotLastAsync(string idxMacchina, DateTime dtMin, DateTime dtMax) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - var pDtMin = new SqlParameter("@DtMin", dtMin); - var pDtMax = new SqlParameter("@DtMax", dtMax); - - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC stp_FL_TakeSnapshotLast @IdxMacchina,@DtMin,@DtMax", pIdxMacchina, pDtMin, pDtMax); - return dbResult != 0; - } - - /// - /// Update del campo VALORE di un dossier (che contiene json flux log serializzati) - /// - /// record dossier da modificare - /// - public async Task DossiersUpdateValoreAsync(DossierModel editRec) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - var currRec = await dbCtx - .DbSetDossiers - .Where(x => x.IdxDossier == editRec.IdxDossier) - .FirstOrDefaultAsync(); - if (currRec != null) - { - currRec.Valore = editRec.Valore; - dbCtx.Entry(currRec).State = EntityState.Modified; - } - else - { - await dbCtx - .DbSetDossiers - .AddAsync(editRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elenco valori link (x home e navMenu laterale) - /// - /// - public Task> ElencoLinkAsync() - { - return ListLinkFiltAsync("SpecLink"); - } - - /// - /// Aggiunta record EventList - /// - /// - /// - public async Task EvListInsertAsync(EventListModel newRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currRec = await dbCtx - .DbSetEvList - .AddAsync(newRec); - - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Funzione di Data Reduction x FluxLog - /// - /// - /// - /// - /// - /// - /// - /// Restitusice list dei record statistiche raccolti (da integrare a quelli rpesenti in Redis...) - /// - public async Task> FluxLogDataReduxAsync(string idxMaccSel, List fluxList, Periodo currPeriodo, Enums.ValSelection valMode, Enums.DataInterval intReq, int maxItem) - { - List procStats = new List(); - Log.Info($"Inizio FluxLogDataReduxAsync | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio:yyyy-MM-dd} --> {currPeriodo.Fine:yyyy-MM-dd}"); - TimeSpan step = TimeSpan.FromHours(1); - switch (intReq) - { - case Enums.DataInterval.minute: - step = TimeSpan.FromMinutes(1.00 / maxItem); - break; - - case Enums.DataInterval.hour: - step = TimeSpan.FromHours(1.00 / maxItem); - break; - - case Enums.DataInterval.day: - step = TimeSpan.FromDays(1.00 / maxItem); - break; - - default: - break; - } - - // setup parametri costanti x stored - var pIdxMacchina = new SqlParameter("@IdxMacchina", idxMaccSel); - var pOnlyTest = new SqlParameter("@OnlyTest", false); - - // dbContext condiviso - using var dbCtx = new MoonPro_FluxContext(_configuration); - // opzionalmente timeout comandi a 2 minuti... NON usato x ora e da testare - //dbCtx.Database.SetCommandTimeout(TimeSpan.FromMinutes(2)); - // processo 1:1 ogni flusso - foreach (var item in fluxList) - { - Log.Info($"FluxLogDataReduxAsync | Flux: {item}"); - int numRecProc = 0; - Stopwatch sw = new Stopwatch(); - sw.Start(); - // parametri x flusso - var pCodFlux = new SqlParameter("@CodFlux", item); - // inizializzo cursore timer - DateTime dtCursStart = currPeriodo.Inizio; - DateTime dtCursEnd = dtCursStart.Add(step); - bool setCompleted = false; - // li processo per intervallo richiesto, cercando dati nel periodo eselezionando VC - while (!setCompleted) - { - // ora recupero TUTTI i dati della macchina - var currFlux = await dbCtx - .DbSetFluxLog - .Where(x => (x.CodFlux == item) && (x.dtEvento >= dtCursStart && x.dtEvento < dtCursEnd) && (x.IdxMacchina == idxMaccSel)) - .ToListAsync(); - - int numRec = currFlux.Count; - numRecProc += numRec; - if (numRec > maxItem) - { - List listPeriodi = new List(); - - switch (valMode) - { - case Enums.ValSelection.First: - // recupero 2° item - var recStart = currFlux.Skip(1).FirstOrDefault(); - // salvo periodo! - listPeriodi.Add(new Periodo(recStart.dtEvento, dtCursEnd)); - break; - - case Enums.ValSelection.Last: - // recupero ultimo item - var recEnd = currFlux.LastOrDefault(); - // salvo periodo! - listPeriodi.Add(new Periodo(dtCursStart, recEnd.dtEvento)); - break; - - case Enums.ValSelection.Center: - int idx = 1; - // per iniziare mi metto a 1/(n+1) rec come step - var recCent = currFlux.Skip(idx / (maxItem + 1)).FirstOrDefault(); - listPeriodi.Add(new Periodo(dtCursStart, recCent.dtEvento)); - // salvo restanti periodi (se > 1)! - if (maxItem > 1) - { - for (int i = 2; i < maxItem; i++) - { - DateTime dtInizio = recCent.dtEvento; - recCent = currFlux.Skip(i / (maxItem + 1)).FirstOrDefault(); - listPeriodi.Add(new Periodo(dtInizio, recCent.dtEvento)); - } - } - // aggiungo ultimo... - listPeriodi.Add(new Periodo(recCent.dtEvento.AddSeconds(1), dtCursEnd)); - break; - - default: - break; - } - - // ciclo x tutti i periodi e chiamo stored... - foreach (var slot in listPeriodi) - { - // parametri x periodo (base) - var pDtStart = new SqlParameter("@DtStart", slot.Inizio); - var pDtEnd = new SqlParameter("@DtEnd", slot.Fine); - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC man.stp_ReduceFluxLog @IdxMacchina, @CodFlux, @DtStart, @DtEnd, @OnlyTest", pIdxMacchina, pCodFlux, pDtStart, pDtEnd, pOnlyTest); - } - } - - // incremento dt fine periodo - dtCursStart = dtCursEnd; - dtCursEnd = dtCursStart.Add(step); - setCompleted = dtCursStart >= currPeriodo.Fine; - } - // fermo cronometro e salvo su DB... - sw.Stop(); - StatDedupDTO currStat = new StatDedupDTO() - { - IdxMacchina = idxMaccSel, - CodFlux = item, - Interval = intReq, - Num4Int = maxItem, - NumRec = numRecProc, - ProcTime = sw.Elapsed.TotalSeconds - }; - procStats.Add(currStat); - } - Log.Info($"FINE FluxLogDataReduxAsync | idxMaccSel: {idxMaccSel} | periodo: {currPeriodo.Inizio:yyyy-MM-dd} --> {currPeriodo.Fine:yyyy-MM-dd}"); - return procStats; - } - - /// - /// Elenco ultimi n record flux log dato macchina e flusso (ordinato x data registrazione) - /// - /// Data massima x eventi - /// Data minima x eventi - /// * = tutte, altrimenti solo x una data macchina - /// *=tutti, altrimenti solo selezionato - /// numero massimo record da restituire - /// - public async Task> FluxLogGetLastFiltAsync(DateTime DtMax, DateTime DtMin, string IdxMacchina, string CodFlux, int MaxRec) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - return await dbCtx - .DbSetFluxLog - .AsNoTracking() - .Where(x => (x.dtEvento >= DtMin && x.dtEvento <= DtMax) && (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina) && (CodFlux == "*" || x.CodFlux == CodFlux)) - .OrderByDescending(x => x.dtEvento) - .Take(MaxRec) - .ToListAsync() ?? new(); - } - - /// - /// Elenco Gruppi - /// - /// - public async Task> FluxLogParetoAsync(string idxMacchina, DateTime dtFrom, DateTime dtTo) - { - using var dbCtx = new MoonPro_FluxContext(_configuration); - return await dbCtx - .DbSetFluxLog - .Where(x => (string.IsNullOrEmpty(idxMacchina) || x.IdxMacchina == idxMacchina) && (dtFrom <= x.dtEvento && x.dtEvento <= dtTo)) - .AsNoTracking() - .GroupBy(x => x.CodFlux) - .Select(g => new ParetoFluxLogDTO() { IdxMacchina = idxMacchina, CodFlux = g.Key, Qty = g.Count() }) - .OrderByDescending(x => x.Qty) - .ToListAsync() ?? new(); - } - - /// - /// Stored manutenzione del DB - /// - /// Esegue realmente il task - /// Aggiornamento statistiche - /// Salvataggio - /// def: 1000 - /// def: 10 - /// def: 50 - /// - public async Task ForceDbMaintAsync(bool doExec, bool doUpdStat, bool doSave, int minPgCnt, int minAvgFrag, int maxAvgFragReb) - { - Log.Info($"Inizio ForceDbMaintAsync on MoonProAdminContext"); - // uso context admin x query lunghe - using var dbCtx = new MoonProAdminContext(_configuration); - var pFlgExec = new SqlParameter("@FlgExec", doExec ? "Y" : "N"); - var pFlgUpdStat = new SqlParameter("@FlgUpdStat", doUpdStat ? "Y" : "N"); - var pFlgSave = new SqlParameter("@FlgSave", doSave ? "Y" : "N"); - var pMinPgCnt = new SqlParameter("@min_page_count", minPgCnt); - var pMinAvgFrag = new SqlParameter("@min_avg_fragmentation_in_percent", minAvgFrag); - var pMaxAvgFrag = new SqlParameter("@max_avg_fragmentation_per_rebuild", maxAvgFragReb); - - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC man.stp_Utility_Maintanance"); - //.ExecuteSqlRaw("EXEC man.stp_Utility_Maintanance @FlgExec, @FlgUpdStat, @FlgSave, @min_page_count, @min_avg_fragmentation_in_percent, @max_avg_fragmentation_per_rebuild", pFlgExec, pFlgUpdStat, pFlgSave, pMinPgCnt, pMinAvgFrag, pMaxAvgFrag); - Log.Info($"FINE ForceDbMaintAsync on MoonProAdminContext"); - return dbResult != 0; - } - - /// - /// Eliminazione di un record macchina dal gruppo - /// - /// - /// - public async Task Grp2MaccDeleteAsync(Gruppi2MaccModel rec2del) - { - bool answ = false; - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var dbRec = await dbCtx - .DbSetGrp2Macc - .Where(x => x.CodGruppo == rec2del.CodGruppo && x.IdxMacchina == rec2del.IdxMacchina) - .FirstOrDefaultAsync(); - if (dbRec != null) - { - dbCtx.DbSetGrp2Macc.Remove(dbRec); - int numDone = await dbCtx.SaveChangesAsync(); - answ = numDone != 0; - } - return answ; - } - - /// - /// Insert di un record macchina - /// - /// - /// - public async Task Grp2MaccInsertAsync(Gruppi2MaccModel upsRec) - { - bool answ = false; - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var dbRec = await dbCtx - .DbSetGrp2Macc - .Where(x => x.CodGruppo == upsRec.CodGruppo && x.IdxMacchina == upsRec.IdxMacchina) - .FirstOrDefaultAsync(); - if (dbRec == null) - { - await dbCtx.DbSetGrp2Macc.AddAsync(upsRec); - // salvo - int numDone = await dbCtx.SaveChangesAsync(); - answ = numDone != 0; - } - return answ; - } - - /// - /// Eliminazione di un record operatore dal gruppo - /// - /// - /// - public async Task Grp2OperDeleteAsync(Gruppi2OperModel rec2del) - { - bool answ = false; - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var dbRec = await dbCtx - .DbSetGrp2Oper - .Where(x => x.CodGruppo == rec2del.CodGruppo && x.MatrOpr == rec2del.MatrOpr) - .FirstOrDefaultAsync(); - if (dbRec != null) - { - dbCtx.DbSetGrp2Oper.Remove(dbRec); - int numDone = await dbCtx.SaveChangesAsync(); - answ = numDone != 0; - } - return answ; - } - - /// - /// Insert di un record operatore - /// - /// - /// - public async Task Grp2OperInsertAsync(Gruppi2OperModel upsRec) - { - bool answ = false; - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var dbRec = await dbCtx - .DbSetGrp2Oper - .Where(x => x.CodGruppo == upsRec.CodGruppo && x.MatrOpr == upsRec.MatrOpr) - .FirstOrDefaultAsync(); - if (dbRec == null) - { - await dbCtx.DbSetGrp2Oper.AddAsync(upsRec); - // salvo - int numDone = await dbCtx.SaveChangesAsync(); - answ = numDone != 0; - } - return answ; - } - - /// - /// Elimina record - /// - /// - public async Task IstKitDeleteAsync(IstanzeKitModel rec2del) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetInstKit - .Where(x => x.KeyKit == rec2del.KeyKit && x.KeyExtOrd == rec2del.KeyExtOrd) - .FirstOrDefaultAsync(); - // se ci fosse aggiorno... - if (actRec != null) - { - dbCtx - .DbSetInstKit - .Remove(actRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elenco istanze KIT da ricerca - /// - /// - /// - /// - public async Task> IstKitFiltAsync(string keyKit, string keyExtOrd) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetInstKit - .Where(x => (string.IsNullOrEmpty(keyKit) && string.IsNullOrEmpty(keyExtOrd)) || (x.KeyKit.Contains(keyKit) && !string.IsNullOrEmpty(keyKit)) || (x.KeyExtOrd.Contains(keyExtOrd) && !string.IsNullOrEmpty(keyExtOrd))) - .AsNoTracking() - .ToListAsync() ?? new(); - } - - /// - /// Effettua creazione istanza KIT - /// - /// Articolo KIT (fittizio) - /// Chiave x filtro conf su tab WKS - public async Task IstKitInsertByWKSAsync(string CodArtParent, string KeyFilt) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - - var pCodArtParent = new SqlParameter("@CodArtParent", CodArtParent); - var pKeyFilt = new SqlParameter("@KeyFilt", KeyFilt); - - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC dbo.stp_IstKit_insertByWKS @CodArtParent,@KeyFilt", pCodArtParent, pKeyFilt); - return dbResult != 0; - } - - /// - /// Esegue upsert record - /// - /// - public async Task IstKitUpsertAsync(IstanzeKitModel editRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetInstKit - .Where(x => x.KeyKit == editRec.KeyKit && x.KeyExtOrd == editRec.KeyExtOrd) - .FirstOrDefaultAsync(); - - // se ci fosse aggiorno... - if (actRec == null) - { - await dbCtx - .DbSetInstKit - .AddAsync(editRec); - } - else - { - actRec.CodArtParent = editRec.CodArtParent; - actRec.CodArtChild = editRec.CodArtChild; - actRec.QtyART = editRec.QtyART; - actRec.QtyKIT = editRec.QtyKIT; - dbCtx.Entry(actRec).State = EntityState.Modified; - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elenco giacenze - /// - /// id odl da cercare - /// - public async Task> ListGiacenzeAsync(int IdxOdl) - { - List dbResult = new List(); - using var dbCtx = new MoonPro_InveContext(_configuration); - dbResult = await dbCtx - .DbGiacenzeData - .Where(x => x.IdxOdl == IdxOdl) - .AsNoTracking() - .ToListAsync(); - return dbResult; - } - - /// - /// Elenco link JQM completo - /// - /// - /// - public async Task> ListLinkAllAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetLinkMenu - .AsNoTracking() - .OrderBy(x => x.Ordine) - .ToListAsync(); - } - - /// - /// Elenco link JQM dato filtro tipo, Async - /// - /// - /// - public async Task> ListLinkFiltAsync(string tipoLink) - { - List dbResult = new List(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetLinkMenu - .Where(x => x.TipoLink == tipoLink) - .AsNoTracking() - .OrderBy(x => x.Ordine) - .ToListAsync(); - } - -#endif - - /// - /// Elenco ODL filtrati x stato, articolo, KeyRich (che contiene stato) - /// - /// Stato ODL: true=in corso/completato - /// Cod articolo - /// KeyRich (parziale) da cercare (es cod stato x yacht) - /// Reparto selezionato - /// Macchina selezionata - /// Data inizio - /// Data fine - /// - public async Task> ListODLFiltAsync(bool inCorso, string codArt, string keyRichPart, string Reparto, string IdxMacchina, DateTime startDate, DateTime endDate) - { - List dbResult = new List(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - - var InCorso = new SqlParameter("@InCorso", inCorso); - var CodArt = new SqlParameter("@CodArt", codArt); - var KeyRich = new SqlParameter("@KeyRich", keyRichPart); - var CodGruppo = new SqlParameter("@CodGruppo", Reparto); - var IdxMacc = new SqlParameter("@IdxMacchina", IdxMacchina); - var DataFrom = new SqlParameter("@DataFrom", startDate); - var DataTo = new SqlParameter("@DataTo", endDate); - - return await dbCtx - .DbSetODLExp - .FromSqlRaw("EXEC stp_ODL_getByFiltSpec @InCorso, @CodArt, @KeyRich, @CodGruppo, @IdxMacchina, @DataFrom, @DataTo", InCorso, CodArt, KeyRich, CodGruppo, IdxMacc, DataFrom, DataTo) - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Recupero elenco PODL EXPL filtrati - /// - /// - /// True = aperti (=senza ODL) - /// - public async Task> ListPODL_ByCodArtAsync(string CodArticolo, bool OnlyAvail) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var pCodArticolo = new SqlParameter("@CodArticolo", CodArticolo); - var pOnlyAvail = new SqlParameter("@onlyAvail", OnlyAvail); - - return await dbCtx - .DbSetPODLExp - .FromSqlRaw("EXEC stp_PODL_getByCodArt @CodArticolo, @onlyAvail", pCodArticolo, pOnlyAvail) - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Elenco PODL in un istanza KIT dall'ID del parent - /// - /// IDX PODL parent - /// - public async Task> ListPODL_ByKitParentAsync(int IdxPodlParent) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var pIdxPodlParent = new SqlParameter("@IdxPodlParent", IdxPodlParent); - - return await dbCtx - .DbSetPODLExp - .FromSqlRaw("EXEC stp_PODL_getByParentKitIdx @IdxPodlParent", pIdxPodlParent) - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Elenco PODL per composizione KIT non avviati filtrati x articolo, KeyRich (che contiene stato) - /// - /// Solo lanciati (1) o ancora disponibili (0) - /// KeyRich (parziale) da cercare (es cod stato x yacht) - /// Macchina - /// Gruppo - /// - public async Task> ListPODL_KitFiltAsync(bool lanciato, string keyRichPart, string idxMacchina, string codGruppo, DateTime startDate, DateTime endDate) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var Lanc = new SqlParameter("@Lanciato", lanciato); - var KeyRich = new SqlParameter("@KeyRich", keyRichPart); - var CodGrp = new SqlParameter("@CodGruppo", codGruppo); - var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); - var DateFrom = new SqlParameter("@DtInizio", startDate); - var DateTo = new SqlParameter("@DtFine", endDate); - - return await dbCtx - .DbSetPODLExp - .FromSqlRaw("EXEC stp_PODL_getByFiltSpecKit @Lanciato, @KeyRich, @CodGruppo, @IdxMacchina, @DtInizio, @DtFine", Lanc, KeyRich, CodGrp, IdxMacc, DateFrom, DateTo) - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Elenco PODL non avviati filtrati x articolo, KeyRich (che contiene stato) - ASYNC - /// - /// Solo lanciati (1) o ancora disponibili (0) - /// KeyRich (parziale) da cercare (es cod stato x yacht) - /// Macchina - /// Gruppo - /// - public async Task> ListPODLFiltAsync(bool lanciato, string keyRichPart, string idxMacchina, string codGruppo, DateTime startDate, DateTime endDate) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var Lanc = new SqlParameter("@Lanciato", lanciato); - var KeyRich = new SqlParameter("@KeyRich", keyRichPart); - var CodGrp = new SqlParameter("@CodGruppo", codGruppo); - var IdxMacc = new SqlParameter("@IdxMacchina", idxMacchina); - var DateFrom = new SqlParameter("@DtInizio", startDate); - var DateTo = new SqlParameter("@DtFine", endDate); - - return await dbCtx - .DbSetPODLExp - .FromSqlRaw("EXEC stp_PODL_getByFiltSpec @Lanciato, @KeyRich, @CodGruppo, @IdxMacchina, @DtInizio, @DtFine", Lanc, KeyRich, CodGrp, IdxMacc, DateFrom, DateTo) - .AsNoTracking() - .ToListAsync(); - } - - /// - /// Elenco valori ammessi x tabella/colonna Async - /// - /// - /// - /// - public async Task> ListValuesFiltAsync(string tabName, string fieldName) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetListValues - .Where(x => x.TableName == tabName && x.FieldName == fieldName) - .AsNoTracking() - .OrderBy(x => x.ordinal) - .ToListAsync(); - } - - /// - /// Elenco Macchine dato operatore secondo gruppi (macchine/operatore) - /// - /// - /// - public async Task> MacchineByMatrOperAsync(int MatrOpr) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - if (MatrOpr == 0) - { - return await dbCtx - .DbSetMacchine - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - } - else - { - return await dbCtx - .DbSetGrp2Oper - .Where(g => g.MatrOpr == MatrOpr) - .Join(dbCtx.DbSetGrp2Macc, - g => g.CodGruppo, - m => m.CodGruppo, - (g, m) => m - ) - .Distinct() - .Join(dbCtx.DbSetMacchine, - g => g.IdxMacchina, - m => m.IdxMacchina, - (g, m) => m - ) - .Distinct() - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - } - } - - /// - /// Elenco da tabella Macchine filtro x gruppo - /// - /// - /// - public async Task> MacchineGetFiltAsync(string codGruppo) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - if (codGruppo == "*") - { - return await dbCtx - .DbSetMacchine - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - } - else - { - return await dbCtx - .DbSetGrp2Macc - .Where(g => g.CodGruppo == codGruppo) - .Join(dbCtx.DbSetMacchine, - g => g.IdxMacchina, - m => m.IdxMacchina, - (g, m) => m - ) - .AsNoTracking() - .OrderBy(x => x.IdxMacchina) - .ToListAsync(); - } - } - - /// - /// Elenco id MacchineModel che abbiano dati FLuxLog, nel periodo indicato - /// - /// - /// - /// - public async Task> MacchineWithFluxAsync(DateTime dtStart, DateTime dtEnd) - { - using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync(); - return await dbCtx - .DbSetFluxLog - .AsNoTracking() - .Where(x => x.dtEvento >= dtStart && x.dtEvento <= dtEnd) - .Select(i => i.IdxMacchina) - .Distinct() - .ToListAsync() ?? new(); - } - - /// - /// Elenco da tabella MappaStatoExplModel - /// - /// - public async Task> MseGetAllAsync(int maxAge = 2000) - { - List dbResult = new List(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - - var maxAgeSec = new SqlParameter("@maxAgeSec", maxAge); - - dbResult = await dbCtx - .DbSetMSE - .FromSqlRaw("EXEC stp_MSE_getData @maxAgeSec", maxAgeSec) - .AsNoTracking() - .ToListAsync(); - - return dbResult; - } - - /// - /// Elenco ODL dato batch selezionato - /// - /// Batch richiesto - /// - public async Task> OdlByBatchAsync(string batchSel) - { - using var dbCtx = new MoonPro_InveContext(_configuration); - return await dbCtx - .DbGiacenzeData - .AsNoTracking() - .Where(x => x.IdentRG == batchSel) - .Select(x => x.IdxOdl) - .ToListAsync(); - } - - /// - /// ODL da chiave - /// - /// - public async Task OdlByKeyAsync(int IdxOdl) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetODLExp - .AsNoTracking() - .FirstOrDefaultAsync(x => x.IdxOdl == IdxOdl); - } - - /// - /// Chiusura ODL con eventuale conferma pezzi - /// - /// idx odl da chiudere - /// idx macchina - /// matricola operatore - /// indica se confermare i pezzi prima di chiudere ODL - /// Conferma con rettifica (ev 121) x pezzi lasciati in macchina - /// Modo conferma produzione (0=periodo, 1=giorno, 2=turno) - /// - public async Task ODLCloseAsync(int idxOdl, string idxMacchina, int matrOpr, bool confPezzi, bool confRett, int modoConfProd) - { - bool fatto = false; - if (idxOdl > 0) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - DateTime adesso = DateTime.Now; - // preparo i parametri - var IdxODL = new SqlParameter("@IdxODL", idxOdl); - var IdxMacchina = new SqlParameter("@IdxMacchina", idxMacchina); - - // se richiesto confermo produzione - if (confPezzi) - { - var MatrApp = new SqlParameter("@MatrApp", idxMacchina); - - /* ---------------------------------- - * CONFERMA PEZZI - * - * condizioni da verificare: - * - gestione rettifica (ev121) / pezzi da LASCIARE in macchina - * - conferma a zero pezzi (setup) oppure con i pezzi fatti e non ancora confermati - * - * - * - * */ - - // recupero i dati dei pezzi da confermare... con DbSetPzProd + exec - // stp_PzProd_getByMacchina 'SIMUL_01' - - // stp_ConfermaProduzCompletaFull - /* - * @idxMacchina NVARCHAR(50), - @MatrApp INT, - @dataFrom DATETIME, - @dataTo DATETIME, - @pezziConf INT, - @pezziLasciati INT, -- pezzi lasciati = evento 121 (-) pre conferma e (+) dopo --> da lasciare in macchina post conferma - @pezziScar INT = 0, -- pezzi scartati (registrati da 2016.11.20) DA INDICARE COME VALORE > 0!!! sennò faccio ABS... - @TipoConf INT = 0, -- Tipo intervallo conferma: 0 = periodo intero, 1 = per giorni, 2 = per turni - @DataOraApp DATETIME = NULL, -- di norma GETDATE() nel programma - serve per ricalcolo - @TestConferma BIT = 1 -- TestConferma : 1 = verifica conf. duplicata e inserisci in ElencoConfermeProd, 0 = nessuna verifica e inserimento ( per ricalcolo ) - */ - } - - // ora chiudo ODL con stored SENZA ritorno... - try - { - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC stp_ODL_fineProd @IdxODL, @IdxMacchina", IdxODL, IdxMacchina); - fatto = dbResult != 0; - } - catch (Exception exc) - { - Log.Error($"Eccezione durante ODLCloseAsync{Environment.NewLine}{exc}"); - } - } - return fatto; - } - - /// - /// Recupero Odl CORRENTI - /// - /// - public async Task> OdlGetCurrentAsync() - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetODL - .Where(x => x.DataInizio != null && x.DataFine == null) - .ToListAsync(); - } - - /// - /// Statistiche ODL calcolate (da stored stp_STAT_ODL) - /// - /// - public async Task> OdlGetStatAsync(int IdxOdl) - { - List dbResult = new List(); - if (IdxOdl > 0) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var IdxODL = new SqlParameter("@IdxODL", IdxOdl); - - dbResult = await dbCtx - .DbSetStatOdl - .FromSqlRaw("EXEC stp_STAT_ODL @IdxODL", IdxODL) - .AsNoTracking() - .ToListAsync(); - } - return dbResult; - } - - /// - /// Elenco da tabella Operatori filtro x gruppo - /// - /// - /// - public async Task> OperatoriGetFiltAsync(string codGruppo) - { - List dbResult = new List(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - if (codGruppo == "*") - { - dbResult = await dbCtx - .DbOperatori - .AsNoTracking() - .OrderBy(x => x.MatrOpr) - .ToListAsync(); - } - else - { - dbResult = await dbCtx - .DbSetGrp2Oper - .Where(g => g.CodGruppo == codGruppo) - .Join(dbCtx.DbOperatori, - g => g.MatrOpr, - m => m.MatrOpr, - (g, m) => m - ) - .AsNoTracking() - .OrderBy(x => x.MatrOpr) - .ToListAsync(); - } - return dbResult; - } - - /// - /// Elenco parametri validi x una data macchina - /// - /// - /// - public async Task> ParametriGetFiltAsync(string IdxMacchina) - { - using var dbCtx = await _ctxFactoryFL.CreateDbContextAsync(); - return await dbCtx - .DbSetFluxLog - .AsNoTracking() - .Where(x => (IdxMacchina == "*" || x.IdxMacchina == IdxMacchina)) - .Take(1000) - .Select(i => i.CodFlux) - .Distinct() - .OrderBy(x => x) - .ToListAsync(); - } - - /// - /// Recupero PODL da chiave - /// - /// - /// - public async Task PODL_getByKeyAsync(int idxPODL) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetPODL - .AsNoTracking() - .Where(x => x.IdxPromessa == idxPODL) - .Include(a => a.ArticoloNav) - .FirstOrDefaultAsync() ?? new(); - } - - /// - /// Recupero PODL da IdxOdl - /// - /// - /// - public async Task PODL_getByOdlAsync(int idxODL) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetPODL - .AsNoTracking() - .Where(x => x.IdxOdl == idxODL) - .FirstOrDefaultAsync() ?? new(); - } - - /// - /// Dizionario associazione ODL/PODL - /// - /// - /// - public async Task> PODL_getDictOdlPodlAsync(List missingIds) - { - if (missingIds == null || !missingIds.Any()) - return new Dictionary(); - - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetPODL - .AsNoTracking() - .Where(x => missingIds.Contains(x.IdxOdl)) - .ToDictionaryAsync(x => x.IdxOdl, x => x.IdxPromessa); - } - - /// - /// Avvio setup ODL da PODL - /// - /// - /// - /// - /// - /// - /// - public async Task PODL_startSetup(PODLExpModel editRec, int matrOpr, double tcRich, int pzPallet, string note, DateTime dtEvent) - { - bool answ = false; - PODLModel recPODL = new PODLModel() - { - IdxPromessa = editRec.IdxPromessa, - KeyRichiesta = editRec.KeyRichiesta, - KeyBCode = editRec.KeyBCode, - IdxOdl = editRec.IdxOdl, - CodArticolo = editRec.CodArticolo, - CodGruppo = editRec.CodGruppo, - IdxMacchina = editRec.IdxMacchina, - NumPezzi = editRec.NumPezzi, - Tcassegnato = editRec.Tcassegnato, - DueDate = editRec.DueDate, - Priorita = editRec.Priorita, - PzPallet = editRec.PzPallet, - Note = editRec.Note, - CodCli = editRec.CodCli, - InsertDate = editRec.InsertDate - }; - - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currRec = await dbCtx - .DbSetPODL - .AsNoTracking() - .Where(x => x.IdxPromessa == recPODL.IdxPromessa) - .FirstOrDefaultAsync(); - - if (currRec != null) - { - // eseguo stored attrezzaggio - var IdxPromessa = new SqlParameter("@idxPromessa", recPODL.IdxPromessa); - var MatrOpr = new SqlParameter("@MatrOpr", matrOpr); - var IdxMacchina = new SqlParameter("@IdxMacchina", recPODL.IdxMacchina); - var TCRichAttr = new SqlParameter("@TCRichAttr", tcRich); - var PzPallet = new SqlParameter("@PzPallet", pzPallet); - var Note = new SqlParameter("@Note", note); - var DtEvento = new SqlParameter("@dtEvento", dtEvent); - var callResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC stp_ODL_inizioSetupPromessa @idxPromessa, @MatrOpr, @IdxMacchina, @TCRichAttr, @PzPallet, @Note, @dtEvento", IdxPromessa, MatrOpr, IdxMacchina, TCRichAttr, PzPallet, Note, DtEvento); - - answ = true; - } - return answ; - } - - /// - /// Chiamata salvataggio ricetta su DB - /// - /// - /// - /// - public async Task PODL_updateRecipe(int idxPODL, string recipeName) - { - bool answ = false; - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currRec = await dbCtx - .DbSetPODL - .Where(x => x.IdxPromessa == idxPODL) - .FirstOrDefaultAsync(); - - if (currRec != null) - { - currRec.Recipe = recipeName; - dbCtx.Entry(currRec).State = EntityState.Modified; - answ = await dbCtx.SaveChangesAsync() > 0; - } - return answ; - } - - /// - /// Eliminazione Record - /// - /// - /// - public async Task PODLDeleteRecordAsync(PODLExpModel currRec) - { - PODLModel recPODL = new PODLModel() - { - IdxPromessa = currRec.IdxPromessa, - KeyRichiesta = currRec.KeyRichiesta, - KeyBCode = currRec.KeyBCode, - IdxOdl = currRec.IdxOdl, - CodArticolo = currRec.CodArticolo, - CodGruppo = currRec.CodGruppo, - IdxMacchina = currRec.IdxMacchina, - NumPezzi = currRec.NumPezzi, - Tcassegnato = currRec.Tcassegnato, - DueDate = currRec.DueDate, - Priorita = currRec.Priorita, - PzPallet = currRec.PzPallet, - Note = currRec.Note, - CodCli = currRec.CodCli, - InsertDate = currRec.InsertDate - }; - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currVal = await dbCtx - .DbSetPODL - .Where(x => x.IdxPromessa == recPODL.IdxPromessa) - .FirstOrDefaultAsync(); - dbCtx - .DbSetPODL - .Remove(currVal); - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Effettua il task di eliminazione PODL KIT + istanze + riattivazione PODL originali disattivate tramite stored - /// - /// IdxPODL parent - public async Task PodlIstKitDeleteAsync(int IdxPODL) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var pIdxPODL = new SqlParameter("@IdxPODL", IdxPODL); - - var dbResult = await dbCtx - .Database - .ExecuteSqlRawAsync("EXEC dbo.stp_PodlIstKit_delete @IdxPODL", pIdxPODL); - return dbResult != 0; - } - - /// - /// Update Record - /// - /// - /// - public async Task PODLUpdateRecordAsync(PODLModel editRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var currRec = await dbCtx - .DbSetPODL - .Where(x => x.IdxPromessa == editRec.IdxPromessa) - .FirstOrDefaultAsync(); - if (currRec != null) - { - currRec.CodGruppo = editRec.CodGruppo; - currRec.CodArticolo = editRec.CodArticolo; - currRec.IdxMacchina = editRec.IdxMacchina; - currRec.KeyBCode = editRec.KeyBCode; - currRec.KeyRichiesta = editRec.KeyRichiesta; - currRec.NumPezzi = editRec.NumPezzi; - currRec.Tcassegnato = editRec.Tcassegnato; - currRec.Attivabile = editRec.Attivabile; - currRec.Note = editRec.Note; - dbCtx.Entry(currRec).State = EntityState.Modified; - } - else - { - await dbCtx - .DbSetPODL - .AddAsync(editRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Stato macchina (da key) - /// - /// - /// - public async Task StatoMacchinaAsync(string idxMacchina) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - return await dbCtx - .DbSetStatoMacc - .Where(x => x.IdxMacchina == idxMacchina) - .AsNoTracking() - .FirstOrDefaultAsync(); - } - - /// - /// Elimina record - /// - /// - public async Task TemplateKitDeleteAsync(TemplateKitModel rec2del) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetTempKit - .Where(x => x.CodArtParent == rec2del.CodArtParent && x.CodArtChild == rec2del.CodArtChild) - .FirstOrDefaultAsync(); - // se ci fosse aggiorno... - if (actRec != null) - { - dbCtx - .DbSetTempKit - .Remove(actRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elenco template KIT da ricerca - /// - /// - /// - /// - public async Task> TemplateKitFiltAsync(string KitCode, string codChild) - { - List dbResult = new List(); - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - dbResult = await dbCtx - .DbSetTempKit - .Where(x => (string.IsNullOrEmpty(KitCode) && string.IsNullOrEmpty(codChild)) || (x.CodArtParent.Contains(KitCode) && !string.IsNullOrEmpty(KitCode)) || (x.CodArtChild.Contains(codChild) && !string.IsNullOrEmpty(codChild))) - .AsNoTracking() - .ToListAsync(); - return dbResult; - } - - /// - /// Esegue upsert record - /// - /// - /// - public async Task TemplateKitUpsertAsync(TemplateKitModel editRec, string codAzienda) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - // verifico preliminarmente articolo... - var recArt = dbCtx - .DbSetArticoli - .FirstOrDefault(x => x.CodArticolo == editRec.CodArtParent); - // se mancasse... - if (recArt == null) - { - // aggiungo! - AnagArticoliModel newRecArt = new AnagArticoliModel() - { - CodArticolo = editRec.CodArtParent, - Tipo = "KIT", - DescArticolo = $"Articolo KIT - {DateTime.Now:yyyy-MM-dd HH:mm:ss}", - Disegno = "", - Azienda = codAzienda, - CurrRev = "", - ProdRev = "" - }; - dbCtx - .DbSetArticoli - .Add(newRecArt); - } - - // proseguo col KIT - var actRec = await dbCtx - .DbSetTempKit - .Where(x => x.CodArtParent == editRec.CodArtParent && x.CodArtChild == editRec.CodArtChild) - .FirstOrDefaultAsync(); - - // se NON ci fosse aggiungo... - if (actRec == null) - { - await dbCtx - .DbSetTempKit - .AddAsync(editRec); - } - else - { - actRec.Qty = editRec.Qty; - dbCtx.Entry(actRec).State = EntityState.Modified; - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Punteggio compatibilità KIT per KeyFilt indicato - /// - /// - /// - /// - public async Task> TksScoreAsync(string KeyFilt, int MaxResult) - { - List dbResult = new List(); - if (!string.IsNullOrEmpty(KeyFilt)) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var pKeyFilt = new SqlParameter("@KeyFilt", KeyFilt); - var pMaxRes = new SqlParameter("@maxResult", MaxResult); - dbResult = await dbCtx - .DbSetTksScore - .FromSqlRaw("EXEC stp_TKS_Search @KeyFilt, @maxResult", pKeyFilt, pMaxRes) - .AsNoTracking() - .ToListAsync(); - } - return dbResult; - } - -#if false - /// - /// Elenco Vocabolario di una lingua - /// - /// - public Dictionary VocabolarioGetLang(string lingua) - { - using var dbCtx = _ctxFactory.CreateDbContext(); - var rawList = dbCtx - .DbSetVocabolario - .AsNoTracking() - .Where(x => x.Lingua.ToLower() == lingua.ToLower()) - .OrderBy(x => x.Lemma) - .ToList(); - // Proietto in dizionario - return rawList - .DistinctBy(t => t.Lemma, StringComparer.OrdinalIgnoreCase) - .ToDictionary(t => t.Lemma, t => t.Traduzione, StringComparer.OrdinalIgnoreCase); - } - - /// - /// Upsert record Vocabolario - /// - /// - /// - public async Task VocabolarioUpsertAsync(VocabolarioModel upsRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetVocabolario - .Where(x => x.Lingua == upsRec.Lingua && x.Lemma == upsRec.Lemma) - .FirstOrDefaultAsync(); - - // se ci fosse aggiorno... - if (actRec == null) - { - dbCtx - .DbSetVocabolario - .Add(upsRec); - } - else - { - actRec.Traduzione = upsRec.Traduzione; - dbCtx.Entry(actRec).State = EntityState.Modified; - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elimina record - /// - /// - public async Task WipKitDeleteAsync(WipSetupKitModel rec2del) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetWipKit - .Where(x => x.KeyFilt == rec2del.KeyFilt && x.CodOrd == rec2del.CodOrd) - .FirstOrDefaultAsync(); - // se ci fosse aggiorno... - if (actRec != null) - { - dbCtx - .DbSetWipKit - .Remove(actRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } -#endif - - /// - /// Elimina record + vecchi della data-ora indicata - /// - /// - /// - public async Task WipKitDeleteOlderAsync(DateTime dateLimit) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetWipKit - .Where(x => x.DataIns < dateLimit) - .ToListAsync(); - // se ci fosse aggiorno... - if (actRec != null) - { - dbCtx - .DbSetWipKit - .RemoveRange(actRec); - } - return await dbCtx.SaveChangesAsync() > 0; - } - - /// - /// Elenco record WipSetupKit da KeyFilt - /// - /// - /// - public async Task> WipKitFiltAsync(string KeyFilt) - { - List dbResult = new List(); - // solo se filtro valido... - if (!string.IsNullOrEmpty(KeyFilt)) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - dbResult = await dbCtx - .DbSetWipKit - .Where(x => x.KeyFilt.Contains(KeyFilt)) - .AsNoTracking() - .ToListAsync(); - } - return dbResult; - } - - /// - /// Esegue upsert record - /// - /// - public async Task WipKitUpsertAsync(WipSetupKitModel editRec) - { - using var dbCtx = await _ctxFactory.CreateDbContextAsync(); - var actRec = await dbCtx - .DbSetWipKit - .Where(x => x.KeyFilt == editRec.KeyFilt && x.CodOrd == editRec.CodOrd) - .FirstOrDefaultAsync(); - - // se ci fosse aggiorno... - if (actRec == null) - { - dbCtx - .DbSetWipKit - .Add(editRec); - } - else - { - actRec.CodArt = editRec.CodArt; - actRec.DescArt = editRec.DescArt; - actRec.Qta = editRec.Qta; - actRec.DataIns = editRec.DataIns; - dbCtx.Entry(actRec).State = EntityState.Modified; - } - return await dbCtx.SaveChangesAsync() > 0; - } - - #endregion Public Methods - - #region Private Fields - - private static IConfiguration _configuration; - private static NLog.Logger Log = LogManager.GetCurrentClassLogger(); -#if false - private DbContextOptions options; -#endif - - #endregion Private Fields - } -} \ No newline at end of file diff --git a/MP.SPEC/Controllers/RecipeArchiveController.cs b/MP.SPEC/Controllers/RecipeArchiveController.cs index 31114e5c..1679e37b 100644 --- a/MP.SPEC/Controllers/RecipeArchiveController.cs +++ b/MP.SPEC/Controllers/RecipeArchiveController.cs @@ -15,7 +15,6 @@ namespace MP.SPEC.Controllers public RecipeArchiveController(IConfiguration configuration, MpDataService DataService) { Log.Info("Starting RecipeArchiveController"); - _configuration = configuration; DService = DataService; Log.Info("Avviata classe RecipeArchiveController"); } @@ -71,8 +70,6 @@ namespace MP.SPEC.Controllers #region Private Fields - private static IConfiguration _configuration = null!; - private static Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields diff --git a/MP.SPEC/Controllers/RecipeController.cs b/MP.SPEC/Controllers/RecipeController.cs index 860a4409..d28b37aa 100644 --- a/MP.SPEC/Controllers/RecipeController.cs +++ b/MP.SPEC/Controllers/RecipeController.cs @@ -14,10 +14,9 @@ namespace MP.SPEC.Controllers { #region Public Constructors - public RecipeController(IConfiguration configuration, MpDataService DataService) + public RecipeController(MpDataService DataService) { Log.Info("Starting RecipeController"); - _configuration = configuration; DService = DataService; Log.Info("Avviata classe RecipeController"); } @@ -66,8 +65,6 @@ namespace MP.SPEC.Controllers #region Private Fields - private static IConfiguration _configuration = null!; - private static Logger Log = LogManager.GetCurrentClassLogger(); #endregion Private Fields diff --git a/MP.SPEC/Data/MpDataService.cs b/MP.SPEC/Data/MpDataService.cs index 8ddbce9d..f16851c8 100644 --- a/MP.SPEC/Data/MpDataService.cs +++ b/MP.SPEC/Data/MpDataService.cs @@ -32,13 +32,13 @@ namespace MP.SPEC.Data private readonly IProductionRepository _productionRepository; public MpDataService( - IConnectionMultiplexer connMPlex, - IConfiguration configuration, - IFusionCache cache, - IAnagRepository anagRepository, - ISystemRepository systemRepository, - IDossierRepository dossierRepository, - IFluxLogRepository fluxLogRepository, + IConnectionMultiplexer connMPlex, + IConfiguration configuration, + IFusionCache cache, + IAnagRepository anagRepository, + ISystemRepository systemRepository, + IDossierRepository dossierRepository, + IFluxLogRepository fluxLogRepository, IProductionRepository productionRepository) { // salvataggio oggetti @@ -46,12 +46,6 @@ namespace MP.SPEC.Data redisConn = connMPlex; redisDb = redisConn.GetDatabase(); -#if false - // setup compoenti REDIS - redisConn = ConnectionMultiplexer.Connect(_configuration.GetConnectionString("Redis") ?? "localhost:6379"); - redisConnAdmin = ConnectionMultiplexer.Connect(_configuration.GetConnectionString("RedisAdmin") ?? "localhost:6379"); - redisDb = redisConn.GetDatabase(); -#endif // leggo cache lungo/cordo periodo int.TryParse(_configuration.GetValue("ServerConf:redisShortTimeCache"), out redisShortTimeCache); int.TryParse(_configuration.GetValue("ServerConf:redisLongTimeCache"), out redisLongTimeCache); @@ -2100,8 +2094,6 @@ namespace MP.SPEC.Data #region Private Properties - private static MpSpecController dbController { get; set; } = null!; - private static MpMongoController mongoController { get; set; } = null!; #endregion Private Properties diff --git a/MP.SPEC/MP.SPEC.csproj b/MP.SPEC/MP.SPEC.csproj index 5037cd5c..23f64e38 100644 --- a/MP.SPEC/MP.SPEC.csproj +++ b/MP.SPEC/MP.SPEC.csproj @@ -5,7 +5,7 @@ enable enable MP.SPEC - 8.16.2606.409 + 8.16.2606.410 1800a78a-6ff1-40f9-b490-87fb8bfc1394 en diff --git a/MP.SPEC/README.md b/MP.SPEC/README.md new file mode 100644 index 00000000..27f84734 --- /dev/null +++ b/MP.SPEC/README.md @@ -0,0 +1,89 @@ +# MP.SPEC + +MAPO SPEC: WebApp / Sito in versione dotNetCore 8 per la gestione del MES MAPO in particolare per le gestioni SPECiali (ina ttesa di finire di migrare SITE e ADM). + +Comprende funzionalità amministrative avanzate e funzionalità standard. + +## Sezioni Principali + +Sono gestiti + * Articoli + * Operatori + * Assegnazione Operatori/Macchine a reparti + * PODL (Promesse ODL) prima della produzione + * ODL (Ordini di lavoro) legate ad effettive attività di produzione + * Gestione speciale dei KIT + * Gestione Dossier (es caso Baglietto) + * Gestione Ricette (tramite dossier) + * Gestione Parametri macchina + * Gestione giacenze magazzino (ove gestite) + +Ci sono anche alcune pagine speciali di admin (ad esempio FluxLogStatus, usata per deduplicare i dati di FluxLog) + +## Architettura + +### Livello Dati (MP.Data) + +Il layer dati centralizzato in `MP.Data` fornisce: + +- **8 Repository**: Anag, Production, Dossier, FluxLog, System, MpVoc, MpMon, MpLand +- **Cache FusionCache** (Memory + Redis + DB) con invalidazione per tag +- **DI Registrations** attraverso `DataServiceCollectionExtensions` (`AddSpecDataLayer`, `AddLandDataLayer`, etc.) +- **MpDataService** come servizio singleton centrale per accesso a DB, Redis, MongoDB + +### Livello Applicazione (MP.SPEC) + +- **MpDataService** (Scoped, singleton in Program.cs): service wrapper sul DAL con caching FusionCache +- **Componenti Blazor Server**: layout interattivo server-side con `AddInteractiveServerComponents()` +- **API Controllers**: RecipeController, RecipeArchiveController per operazioni ricette +- **Autenticazione**: Windows Authentication (Negotiate) con Autorizzazione Blazor Server + +### Livello Infrastruttura + +- **SQL Server**: 4 DbContext (MoonProContext, MoonPro_VocContext, MoonPro_FluxContext, MoonPro_STATSContext) +- **MongoDB**: storage ricette +- **Redis**: caching distribuito (FusionCache) + backplane +- **OpenTelemetry**: tracing su Uptrace (abilitabile via conf) +- **MessagePipe**: broadcasting messaggi real-time + +## Refactoring Completati (Giugno 2026) + +### Repository Pattern - Decomposizione MpSpecController + +Il grande `MpSpecController/MpSpecRepository.cs` è stato scomposto in 8 repository specialistici: + +| # | Repository | Interfaccia | Metodi | DbContext | +|---|---|---|---|---| +| 1 | **Anag** | `IAnagRepository` | 26 | `MoonProContext` | +| 2 | **Production** | `IProductionRepository` | 32 | `MoonProContext` | +| 3 | **Dossier** | `IDossierRepository` | 6 | `MoonPro_FluxContext` | +| 4 | **FluxLog** | `IFluxLogRepository` | 3 | `MoonPro_FluxContext` | +| 5 | **System** | `ISystemRepository` | 7 | `MoonProContext` + `MoonProAdminContext` | +| 6 | **MpVoc** | `IMpVocRepository` | 3 | `MoonPro_VocContext` | +| 7 | **MpMon** | `IMpMonRepository` | 4 | `MoonProContext` | +| 8 | **MpLand** | `IMpLandRepository` | 6 | `MoonProContext` | + +Tutti i reference a `dbController.XXX()` nei servizi sono stati rimossi. I metodi originali rimangono nel file di repository come fallback documentato. + +### Migrazione FusionCache + +Tutti i metodi di lettura in `MpDataService.cs` sono stati migrati al pattern `GetOrFetchAsync()`: +- **L1 MemoryCache**: 1/3 della scadenza totale +- **L2 Redis (Distributed)**: TTL configurabile +- **L3 Database**: fetch diretto dal DbContext +- **Invalidazione**: per tag (es. `Utils.redisArtList`, `Utils.redisOdlByKey`) +- **48+ metodi** migrati o confermati corretti + +### Fix DI e Static State (MP.AppAuth) + +Risolto il null reference error originario (`Cannot provide a value for property 'AAService' on type 'CmpTop'`): + +- Rimpiazzati tutti i `static IConfiguration _configuration` con `readonly` istanza nei controllers +- `AppAuthService` ora riceve i controllers via constructor DI invece di crearli con `new()` +- Registrazioni DI centralizzate in `DataServiceCollectionExtensions.cs` +- Tutti i controllers e services mp.appauth registrati come Scoped + +### Build + +Tutte le 10 soluzioni compilano con successo (0 errori): +MP.SPEC, MP.Data, MP.Land, MP.MON, MP.TAB3, MP.Stats, MP.INVE, MP.IOC, MP.RIOC, MP.Prog, IobConf diff --git a/MP.SPEC/README.pdf b/MP.SPEC/README.pdf new file mode 100644 index 0000000000000000000000000000000000000000..a23a58a67e71e82a8161b2e36c8afa1150f4c5c3 GIT binary patch literal 116625 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�~?DJM*qrXbL_MPg|}B4bq&CV)>RUCLJzg?E__O$NJ; zUz^y=8-2h1vY!=kO+6)telqzlxlhv^Ngfl*;*?qa${ky`xKX3+M6`AG4xn^XLZ z2IfuigngbU-Kt2JGRx6C`e|Rtl)Gm|%0T2Bcd4Tyb{uj|{7Tj|k^2NIMec8{J@LTU zDb1YzfCk%r68ZzLs@yzEgct88BiXe`_ID^Z@gFolAgJ5K56pP4$+8Vg$tw9a(ZnH6 z`G}8}rV2k5xtYoH&^ojKqr+>1U#HK|t6VGlJ|epFUW5B}o+aM-qH30@z$i0U^@G_e zt>3(VIxYQrH4|g~r#i%LJI=kH#!bDQ(;^Zw;&Dw~kgZz;#xC>(FNT}6*# zZ135^L1yCj6*}qHmKNT<>bj*h@z~L;pipFSIHDoC%_X@-_Z91KuE(ov!`#t_U!HzD zYBjIKBPBhi%F{1+>m}zak)vfV~_`n?>8ILq!?P3y$6p;R@#9@j5vi;7=(^p6CY5Xp1GWK;e68BGT_e`}0V<1a&svdO1OJp2+L9OM_ze_o`DH?%DicY!|LD z{y9*W_x=9Z_(}hR3iK0qy)yIy+3X&Qx)AL-*C81{-gl<|oP7A8k1*HW9F_MzcNi#& zT1`**ZX&9Sdhu3vPpA}4K{?=LW=1EjU;{(#n!?}HX?k>F>N)Me$KCp*j%V>d7e|>Zvc?J6XheUtOrH`3H1OB1dg!-+hHu2u{0y^-2byi0@qX&thy#`l_0 z@Zer%wd8<9A#^#rZLi7i2wmb9 zo~DcYyd&|?@PI{!y1Szpf=}7V0(ihm)y&z!)yc%n838=G20R~TqGslT&;=h2<5M?t zb3yQ(umdhUhB-=MjwkfU_>Q}|$f~(4KQIRTsVo|?{J@tg@MssGjDx+)^6z8>5CY4; z1AZfj5XAf>gb>2~B#aP-{$lxW6wOSnjE*_DA#|79go2`i2St&hq9O;2 z7HF`QzeoKMU#tEe$55!{bO)RY7X}R*3`QFG8)3jNUj`ve#-sjl{hGpHd<7Q<;3E7U zZ29z>UIT)0#cT2i@Y~_iEcuDDnFsXV1oTUAwMe^+b*kv z0#O>*Lqf1&))jmB1`~!2MkvV?PJkj|vP&MwSumIpC@=_NDS;*wg&6J7c;ZiFMIbaG zm*aR0-(aG!!3YKOAKHOhs3Jfq;9!I%4J0w3$qICr%8sBIzR0Gei6_J1H z2ZlHT4TdJ%dj#VEicR2=_&?AC3Bxipp%}+?AHLCGU<7{K`t$>H2LXx!_n!d4NWka^ zhV?4{!4OG+P?Y29hi^0(qM!+-@*n;K^-x8CV&LdU2zD{?DS!uXkuY!(AQa~~`r#c7 zhA!awb@@*KjCcen29AD&=5MTiU|_HE9}Hdu2*o+Be)vX%;fnyFZ2r@KV8kOpF>v%F z7zt2(3V`T~s~-x6FM@>P99KVlqrvb6{I>P^4~%#OC}!;Y&prl!E8i6bD%6 z!DB)Q^!G|FB($!%MhH(Wgo0tQ5TOXgRSplbqhUBIL@1x7z}<3`5m>S05ugBYYp-jn z!Hxr8d!S)Z44z-h+N(lQ7qqS_u#wL)pdy68NQWhgFrm=I0J0FCphUv}S$JJBC5$Jg z&@ey-&#$E=u$XkPw^)uVtYGp8Pz0Fah1WGlV8_8RJPeV+^J|F&&GAB*sT6=d(6p)u zNLK_X4ID~^356EM^1^t)9Ss9_;dRBAFj#otLLC|gb>R86)LgMVRxrTwU{tMSwD7vn z7dsA)2jk-v<2VSF(ULq3sp#k>f%c149Sl##9*KeU9gtEa6e##TlNEpe=8Fc68;P+ z-geNc_`s(p47-tFOK~l^aL0q1g1FEp2m?~&pS@K;F`!5NyGe+hosj%1T0(tIn3mwV zwWPuq9ng${aRt!61S1DHf++`&5+tD~XQV5Qk>+858@wHrq;HU{+u$E+SKVVWH@WblfD-uO$URV_$cu+(Lj+z8J z)A;-Vl~5R^0U?)Vf)`N`#;&F9>U)V8cn9DK%wfQ{;4}mrK?T-7pCeI(QWDotP+J){ zF_-s8#`dX^1iRj=r*udH_>2eMFkRCsnCJv=#jcJ{IQE0B*|kPmr5wH}fMYh;@m*^? zSaf2ATaM1va|zh2U2B|Ga^aavgy7gu_?|S_yGBBNcz|;P%;}ih(nw4f8woX#;b={; z0gXj#s8tLG1*qxr7r;S+V9OX+U0AR8_i%8GAlU1Lc>yaLAP^`8JkG$@@85d?I~0J` zzr}(>1bBX};V=*ZcLLO12V}#f@gLo2B>Ha)D_B4Jw|MZxB-mkH<%E@7_&ppvwFtJi z;Z9g7IG~0H3@-?_qgRQwk_x}Yf@kPo_Q`QF0W>i%UqY>N1QO~j!!vH*^p2d{#_^J|41%n4Z0fJ}gT%5W#FZ;gQ+3Z4n@VhTLJmRNW)0n-A* zs0_&X#}b2J!x{@m0(fEs&OAX1EQiio^5MoDtke8E=8$lFBiI~kw)eUAO!JhD6XbFdE@VnNs z+UhnV5~2zKqG3`9>SDv^5rVBtTp6J@F)sWg;rI_;u$GMKa$qiE8`yx|u-(<)YyyC@ zZ3~d`)l3|gnfX! zPgsZ(7K8-b$g5OeUY0I573xT-^~a@<^p z)4h-cX$pU;j^!Bq->WXd4_BQaA4YvSvjHrE-C~BY4)`6I_`nfUBS35d1f)LB%@cx6 z@l^)KGt;8rlRrVSgt{~+HAJ!i*SOfe{b~a*zZJ{O33#jn7Y>1`02e<03Rhtux;~-< z62^4+4Wi2%9R9vpvks~Q5+rK?ego!^)no_g+*)al$8;E!`zzB4bNj547a{JsW6VmO3cBl zJ%S{UKUIb(9)HeWcvTkt2P!WY3Tt@tnYdVf2<2mEkww2=ZH2Vg<861FEY(I4&Rs zXq`#64t)9-z)z5shzIyFL^B9OfZOj-x&TMaMDPdm33xH=dgf&mjPkSM9$3W>T|n5d zs1+&TpN-~Sx=QR`zmp&+Kzs+faS{LlsKQyII%#9yV^e-8X8f;1c4Six=wffFmR ziXTOg-1R$Fu)HoH$sjHVEXfE`y8et6tYm*tlPNV0%}r06(nahb~xCYVcMM3Sv?%S8$LB|3%;@NYPpqk(db|Cn8}L zKZ+oM2?qQSVGL3mG$1@Cm%(VArdvlb@-KjYecUe;#2v%MFZd%M&;@I${5zSk^fn+~ zAhH+Ca0Hocm}G{<99FWwNoL`H0Q~FYf}vnsu-|D0f7%7QU@gPpQF%Q@!ao3hf?PA) zG{cg*;AsYbo(4sbiM0|dV3`Xh8AQc`$I9}#bsBCROQnAS`~<1Ie^&e$Tn4ZdENFln zfr!GGKmtC4CV}1RL9LG{hk}T9t5O+W@e?EjVj>bE#evSjZmjZGN%#*ceuC^a+=zr2 zWUEw$SNsH7d@$h0QrrOif*5JAm?TJV!(%#-@cNgFrGHTI6C{7FG94xZagrH!j~_*l zAox3(A#NcQFJL0V4Yv$wf04}an8Qf+S26bwfS(|lZ^`h63;^ zk|5y_ua>KBexe9cQU3@JT@>U11Pa3w#E1&#jA1AZ_*TXLV!|WH{l+ulLGuv+rV!B$ z1;GUH88ZPw{)10=1WAs#0f3JJ2!Fs1MUVoBF*QWD1OW`%k>@W_`yWhr>tj8lAl4*q z%)=k#gDzMLZ($Q2mf8tSco5MMo{P(fwAMIyOovJBzryW*FyRp-2jWHxL{?m7I@tYc z6hS`a@ASq}DVGfgF5_W_Bgmrs({NbH{>pIwV8SCv?ptLz%&G)lDZn49L=j|t;!$}$ zbNoM;@YcuLMB!s?!k^QGE?6r)R$>LSG+B-naF&P1%JR9jM!{n^O!e_MvGOl~pWxPJ zcz_?mWni`f^#%0COaKr!7x)aC1P=TJIa9b1iKR~AL?pa+CAi@d#<19}mH_8qS)zYq z*niN}MiHcNu2LBfflClxbrNLP!hj!3tzA}ob$LRVRSVr6gqvN{NN@=Yo*O9 z(_u0YCtBduD?v)>?_`E{Q34AEXeT9DG85$Z;)ywoWPcTN{{Z+2?qRgbaF|sIj^W@1 zHeo{QpRux@BH+e{>a$12TTfH+CiZGq^55r+4`78=5UAIphdj>*-<2thh59@DL(82J~y4T9`R z+-QLar>jf{ulNblVpo!R<+cSx&4U3yK{D*0hQmtsS26bwfS(|Ha+TpQw=Ur*2;UF@ zMR4acJSwlJNcac9Pmq+eN@YB^L*bA1qX_PW_B&Rvj94JaAkri(RtS<|@fdC$OQnAS z{Dhwb__L{v*@JIf%2q%^FdT7S=73rswHAesS}O!!g%ISKt_nd6#=sR7 zf|vLN`KBu&hyi9G1R=&LECkobrp2!%ym}@`AYT2bAY^A%AUZHn0ugIr(SagJGsU$W zmTQV*Ie4K;kZ`*CIZ{XhICY62fpe8e_$n26AxV(exN1B+ix^?pUO6a&gw@}{0d27c z);t)H3|ecAvq~;JcSM9?a0z|aTH`?*0H8r) zEik76`@%q02HyJtDGeM!Aca8_n&1v?zx{w`^(+hnPBcM+8?L@sRv?aFVIYSl$XtZ` z0V5pX2Z(UCl4EFs^gUd;V0+MEvKQD87>0Ccf>cy|e!%1bq%W5$FD=<f8asiCpLE&BmPc(@!%pbC)|n5OG76(K zAmktUK#;2U+Yfm1K?H`P==JTUhQ`v(aP)=a96`<*EFZ92y#an$y_*_(eT+IZb|@UV z;CQ({q8S<=(M$x6a|AaX!_JAnMO)SqoYP>@2GWn#iVobY$EzhA-PXq~L*wI?iNMkA zueoJ7T7uyU*K%F;&F`UbdA@e{;-1B8RxS7?Y72KNKOM{-v0V2G)IfVu+oDS)RKpF`;c_!^w|;KYu< zd*2C~AX{sdBk`29qHr)KxNF_&6%!-@yq+V-gIXmLo)wNL9M1_7XI71eXTA}I<1j(q z*Kgd!?k=|+si1>kkxG#Iv`Q*`TEfwsAdPSJS^|yX)1WasxS=7k5Ijx^5|^-e0r87) zYb8-Qs;`eyg~mG`9MuUjba1VQCFb4J_v!j7FYHioses*0 z;R7y5&06rYN=-bW3v7N0A8`4KwFbni=jzy9ANdHcH-X);;bJY9>1&CFfmw+92Q9fE z+8y8p5R!l+)HFgvOf29t1}gv9iw#YXu!9Y2EMEuLL2$SuNMXTs5XAby%@bhra+oCu zl9PTr2rC>Ah^sd*L$8migT@Ypt0x@u2<|qvN>4m!1?;{H*K_%bwLFej&(&oaDEL~V z;E5ZEH3b+AGlfFiqXC~mnc?t9u$B2cPVnX(9RCOsOIFzr?|^UsBuKZw9T3Y>!Syg4 z0SQuRRvdy64hTG`VGDQb^11ao1cVo0Fic$w$qIJ_LCy=-5!ij&aMXnFVu>cmwpe91 zJU5GgE!trk6Xeg}2|>(uO^`4+ck2ietpBJCp-BV?Ure!2i=asGmX)=G5gsV9+==Bj$&=79`lnJ^^wLD|M=T(9{id9jtl8!6m;RFGpu>Yg@ z!n|Ju{Rg#y;9VeT2NPF2GyCP285#laFyt_^=haZ-1e67~1_hE2x*-YO6aw~xS^f>s z-GUC7t{OC9VwQ=ReHStPElhh13LXT8e}TEljCr{QuroJ=oS5x^fvp>%&_iMn6^TJq z%uZ!MzXpVD;3hTZ`!Vlo!Q4OvYGcd{j@jW94bAdE2!n_W96>GMfbg4512ptN)i4i7 zVV20ytr*PPyaC=Iq&>zK7_`Bp3nUU&0!#@3$&0CrF&uh~P?)L%Q*>Y$i>_Y=YVC5|gAD#KX{DFsOjh8p;6#6d#y()L~u*hrsOm15rFM?-f6foCgy@YiW#!r|x5MVd?2acHQe{Zu6Ns8TO9ox=9|7K?a{>OYJ zbSnVZCKodVv?)0786zUJ00VLab3Fz(G21$0w@wC*nCmgl#BAjY1UVEbNDLWuW#3XL zte~A#0hKYSgT!!{kQhHAF$s@^_*gY3shiOB!Q*H=JQ)pUOwlz<=&(%qMaON(@O zcXzjRNrQBE3DQW1bT>%%r9%N}iSMAi&-=XVzt*R$xpU^s?6dct*>fh&{>@YMF+FX4 zGyOfn46xuQ`cJjR^i)qwPZjk9d;*yGlW{%mKs;e60B(a%w*RzZ@Z^#Wr2kdzlglmO zM);Q><|ozvbs_}1j=!rH!0%r}V}7!VCoi0Txt2VYf70KRX8>S)e>)52Cj)r;m>KxC z>#qSmeMkyi|J6J5lb)WweFHY!pRD%@;fnbQ;fnd`7_O&JC4f%mKj!@;?~}fsHe`X$ z=ZVhWt;>IQ&Ym{;fR&Y}4&g5t2yp$>`8+l8zxy}9YTMrz0Py?NbNsW?{gnTyiL?B( zTKAuh<|+S^p8vaA_gC(x)jFUv{LBB-(iU+2SAS2-B*67k{-^f*G;0T@J5TxknGQYi z^UrkXso(oM9RkJ+Py9T!=f6`1K)$E<0n5`1;lHD@r~Lmrb^$u)Km2I_*EApbcpL$0 z{(Wl$B%j`K|IPB)RQ_j>D5viLywQ{#i~&qt;CNmD1CkLa_E&REK4he>M61fsNIowJ)A}S*IYHFg8m!FkP&|#fQ zqZYIIMett_=?OStV~Hqf^?Hd42}AW{JWu^S$|)`(ka2nG@!-Lq#aTPXdAa2HvnGAV zebh12v6$!?>kGJccSF*Ib5UEb*F;CpG(gx3<6kSy_bh#R;NM(Iw_2U1N2l+!z}xXX zLzdMB^B?23UGrvF!s=1Cxs8%1MPlDvkiUzT_ua~sq!>$k$^ZVDJawX^34PO5eP)1t zwgai0Iuoz`yz=S?AqG9#mr~qCvT5mzGpmzOpSGUeNN4d`J4B5vAroOe-(|n6zE<68 zk$VGu75w~ksdQeE@|)-A)aO9l1m=YiPsi=VPuA8wUB!dj~=Q-(ftf8)Db$+*5D^EgL79y;vJ z<5%LBIFJphV#sPZ+hq3`WXAAq{PnuUj-U~T#HdO-;zf5>`L(J&(@wmw3<{?o8aPT9 zX?%5bl9Bz5Z`3={$SVyC#Hztdd#z{P*_Tiu)=JFBFV?6qpK-3?%;3RYz4SGJBJve{ z#>@2Vr9F~}9xJGuY`7hdu9puF(F~vMW5>$$OMS#{y@+?bZ<$`j*;8+u^dd4NLgI9< z&Dm6bzO27AMg6^ndfSurssXSQ6e4*$aY zg5QGgNCwt^=_o!UFFh|^GlQ@pu>ol_V#J+u$Jn*}w?OoU`lkB`cc1AA{U!cQZI+h9 zLNxLlk99w~F0HHwx;HiyGj=TNIo9?lNU<5aqoVdK^P!xcIri_cBM|~8vd@h>&FD}> zx+o%gVf0x|5b~IWu_I5Uf?N$oE7sq5bdoNGWprL9Q>}z%_=jcO3LK&*8Ia@=hh#{7 zVb`O4Ky*nZnWN6^mJ#n2(ih)eAvi>LqC>sOE^>QKfF9Lht`XSs(2ctaXGd;^o{r66 z)${V!h|8h@d=p@xkH{9U_#fTSY&*{;p zq?L-pjatK$A?^UiB;^2FDiNBNGw!00o2$vi9qZ=x1~PKQV% z7lE$ySp>GU5(mGs!zMitKh+-fEncrUc#T!2JroZDrG>cNZkg_j%Lf7TAbyCk#0y4t z@3r3~S-rwKmD9UL@J4_8@SZO$!YAk1a|kv(3TspjTu(0()cDBND*>2rd4t=)HxiLq zvi1?pn-5JuR|LX1+5-lHuIpa?h+b$Q=m_df zG82kBA@3!z@eH-cw#DnbPS(Tggl^~u2O=;{fCDLDAjw9aekaLRo_?gQPhYsJyH-yGP~jvobO@~7OjY($g$7gnE1M!hMD+! z5ViC@!%~thJ;NlK#;(w7D%-)nLzUw|fRi3c8~Jj2A@XIzi|`0pMl4Ani0-&={TCxYYAXqvTX_AKK4C9`qBM>Z3~H>Gi!-# zJ~o9|FGU7N)Y~HyFt2pBUWK1v{^%m@)x1I@U|Z>gv0`57zC+~m9qCQGBD7*!=@tQk z_N=NAx0lEpOpw<+fi6H0;R12Kg`b=%P!}G{mawBa>y|Klw^28YXv63e8kY@s2nLTIR)p#? zS%6QM4g}+{QwL&vi_d_|0HJO%Xo)Do@r0>(%doEAV$u@0?6&Oo>Y*LCSJDm1_N_-1 ztSyem3C{}q#RhbX;bBj>+pHUk$4T1>iH^asv8P^3i0X09$qStxJ_z(J8X+#j8rva< zPW!=Cw;O@&nlDhYyQue<8$uS&7{uDs=CFesY<*y`M#c4iy6##qOT7{dn0c*&?*A?As;~8bxYlGL#1X1_& zgY?#b1JQbGu3|g7b{R7}P+-3K>+=Luykg4ikbfUhbn<#Vvgm|9U=^jq?d>Ysgd05n zo46BnZ?bA2ATfbZb^objAxa0(w^@8%TSwp(!pxdA8 zwdE#%TK?_3L;ULngV=m*t08lWk$7x}AS!*ey1zK8aa?R9zWV@KDp`lo2JwkW+yImS zx>T+@dQbUDY<#hjFkg`38=_w%4EKmdRc4?O3FU9x&T3@Mm$#_m97{w{8jaUQQ~)*bPDxYY5(*N>Y+E}VQ~t}1$pme%nhsH?V+to?gele)m*8O5l&T%7-_(FdUKn+VWW@mjs7RkOY&e<06J>T5 z!&7uP!JB@3+mriQDUpP(dfB2@u2)%jXaju&bKU@x9y4sprb>+{g)F>OLEM>oTWZUp zq{vPJwbY+3nQlI|rJ=*HW{8 zv8oZ5Bd;GZ39yQ>E)kSZCsSLYVMp-B~Zw&7?mbL%f2cACCAEP8bQ4LhdmfiN8 zHRq@G$}M-Ew|FidQBzq3x^>*8NX_#(DS9kh7D%vkCBik0W$c!!={UUgu<*+n@X+DV z1aaT*ScbwNo3Ll~tjQf=V!a`5m`08=w zqWMU{6)Ie&Z;wq~TE(=^X~SvD4L>z$V;bJkF{9s}tK~;->F{tAs|;4xo&?0noUhsB zXV_FsvBdi}8S;<0M5=W|b?H_E63aUm+l}dsmF-7x+dIwc1NK`V1l3d2wFrXy3O+2E zfJdI!_r3gL;>>-ARFp?6qguHCeR;K5u2Mr@&n217w$6xr?Q#pFVHsL(ZHSs4{_4}g z3Hqk<*knb6qjn>KW%<~P`hqkD4lI|VktD_4L3`((JsH)^Q#;~M8RluPg)xhIQqt(v zU!iYr!M0>RQ@Y~i4HtCpzr20{y-s&mGW+x5x79rlv`&F&<|;D1=+G~yWdc{#^p%Kl z8d5(%kmV=?a#8#18gk2CKmT00@(OGf^s5g^@!NUhS*lv-1CzER^v9T+=FrzP4&Uv( z1)k&Ch_+Rv&F&n9u^4K)FQO0y)TMeE8D(cEnc{lYL=IY!##+al;u_C?Otprahsm;j za|dOKgII{oGqC20=-ss@5A)6B7%m_f+cT@f6~{BJV-|a9Xe}I(Z)}YKCd<%{BVdg2 z3O%41+ta^;)i@2?Grofjaiw36HsA{mUb~(Tj4E@3e}^TuR_~euOc5hEwPPJ|fhvNB z8t-|Bd#C=J-Oi*NqZ+o03BG8KhjR{|m0NOEk6X#|QLpnX0^9peTHcl0p>4O8>lzb} zmg^*)A1AsWuGt)aZ8P-S@8~kK^kw**MBusJf8FD}H=k0~j!EJkt7%~8X!y*|;iiJP z?#C2pco2*w>;j)fOmey=mQ)qpjMb?!GxMr*SX+X0&B^eQJ%oP?4gw^6U zJB=aa$VvGWnO4lriGY?GvJhZn!`SLF>;iYaK}+_NsC*}%vF}~@vAl28L8adgMj~75 zvk>ZWo9hlMcDr;o=5*z-r&iBC80zv31Z7!4I**LDwioHwT^y{NG&0M}CywehJ6)G- zUahY51})Bnue%to8tQJj8Pu0Wkq9sy!ow5;|d>=n6Sy6X5_-pE>N;{RM?owEyue|Rf@O{-zmZ9~sqf%8b5YhYtyyCC3x#8FIY4qiOaYlgBu<_vSy06Pliw!Y+`u!`fXFk_ zJNewgM~IBG-AUd1TK;mZPJbQ>jK+ zo;=;okelHF4;*N3Ab*SPxmiZ2&tWmZ4Af8))A*LXAItoEPN@SV&?ZU_c9sc zzPBfF)%!Z%c}pa}G%I7N!j>R>x%=K`;aXd>pkrO0SaNNl6de^sDsIZV-}hR)NeuWw z5*O(@Kl03GQpYKmO%;_jTM+91xiMe{9#|fiVFXbxjgRVUO{#NyzgOfQD5zJxt`B%a zcA%+p$4-ERMTT~6m=-&PurVO9(9lQ}bz`)ZoX^in=4q1B*WTj(t9n*@VO^S6;vlwl zpMr8|U*ltS+ONe>C62rdwS5yQ8_LA-aTk)J3eAO3ytk?D!rVAw9mIC7Z_Bwajcrf@Lu*m@^&FBr6n>sA+fA2Ng(tWdBd-0b!e zpNltE@li)-ei}x2T`bEttCn@h@!`F~>(}#8VCGLjUFskQV7n&t5gVDCQUpv9(M691-#r8@4P!)aXuTy8QU<| z3Xj2#X4>%B@Mu7iZorX#NEDpyT25l|e4)B7LDy?U*IS$7G0TkOx7-}@y?#w&$sgAq z*@m=2AAOtDFS1C7BB&CU#U6*-FvV}jjxf;>2ZXV>w${|q(RKB9b|cnj=$3HI8dTq zVMFARLv~)=Tz^4D>+S1f%XGEr`g{{Z`Z0^8)TLjq)nt7ByXotQ*So6~CAMFyWrg!w zT-6&?#|V}sC7Xi60{n72{XKnj%Eu1ucN)@>Mr>+I!g}b^$mG{J{h2o;Z!FUGO(+~K zHDfKz%)}7LzB@*<3&q;q1Q3f7y$!t_jgSaiC(}9~NS}~S%SH~NEI3XP9F;yLU#RaO zOMiX;PFsOW9G*NUCJt?YAX2*H(?#L8U*0?`&2%ZMi|B|qaa!WBv^X)FlChox{R4hN z3b@PY`5bCvA!H&P6RR$U55C#_q0c)S_(OXOjr1>=2_DEv>RLdSk zAR28eaZ2udR&V^lSLRXL;L2S}_)P zw4OTe(7w;FsoT40$|p_#`tc)0Svd05^$gc)#Isf_>sG!`Ev8b6v&{nVkduZASM}^# zkP=6$vDwe+rWC>5cp%E_T8GTvYV&sAC@X}FE!H@ z&#*(^`RPx$e#I4qy^33SW>M%zHfn1z%b2i7_cAUHdoh0Vc3R=eO?)|`3g`KCfO=4l zx2;qm2Vf}J`Rq=H%~8~?L;eF>hN+XY&!tXmKN7s^i_=1At)cbk^Wtl*;qfT?b&@Do z>6#K9xKXP#`%Si9I2-)UP)iZnM>C#XL|o$^Vk&zH*$irtUCKXVIa5#scWY5W>d z1i}%q9w3y8#>SCd_{=Y}fW$K1Ot)8I4NoR6sf}u=Mk)h^loXjwt0DO zmN~wuweTH2{>Ip6=cO!_BNnG4pNjP%+cU}vZL}=DN>_D-pBRVQn4cwLF-_u;x!uB~|9y+tLrd%Br=95$l)z`GR!pD!ZI&ddabpd-b7SX0C!?YiQ?CB`ONSuAqL zeO$_`IIFkSsVUyuX| zCG7ipg#25sm}agRem4Z1PYbP4h+;=X2m{EQx|{pc^!WVFx8WOnA(ny8@3G-Ub_G@_ z`q|@bi2Vo1cyQ{|LJ~MSM4;?L%$Q;*1A$ozrn1EwlJ#iAs#g76FGO9V$?omSu240) zu_FA5sIy`s0nvVxQg|*vIh7zbOXYp$)8EQQ_&fQL2mL=4ll-zh_OXk5pC5moLNMS7 z^|RyprvC0-!rO7dn75VbQ}~TtjV_QkJrW1jVbkrxLX&u}g1g*3y7bNXw~q?&IFgQu zv5MPFJN#c3<2fXsy0CDLT5l)%inf*88(H1*M2-9O`9C8jo5V90$>)?BD1&!M{SvOb@e7$0T>$bT+L;K3FFx&4wjtGP*Ae}D@{fYw(mBjOB z)I_~wbcppslSI>VJP;$_j%-+3PDgNN6YdxMD4t7;WdqmRo+FBhMNBM5d9;re6jGis zEu^DrffBsIartug=G3a+XXh()S=%i;d<79;uHpictWvlS#(sUV#C&jm?*74WKVVvC zGVN?rXEBxQtiCv|4&|31xA@v#F+LJ#qN)yJ{|4__!)yH(oriVZ>O zNEXb{*#4O12|kRDPhGufB`_yAiB zQQ#)gF~ptm{Tho17PfYyTm55pNxk@348VXUZE-+900@68NZ zHf6bfPd2B08`iKRyD|sKJ+B$f$oU<#L97S^dpdajV_?BCSJB3X@0;^Ux?dMVR3Gg9 zeR}u|ousPl94f7wg)M5)N)< zVlQR~DJ``QqLtxwE1P%7DYLHa;?l7z7o^Mzxe|}r5>{FCrMHI9@acTp?G&>ZO;G(r zU2OYMX>pDQu}vY6JR-C|zoKe%K3!HtMqyFj0L32q8kG)yDT3kT{CB4clep1#G;BY%c zy0wlgj&Zh)cS{A*F&UchPIre( zd`s5&{1{LlcgB{RoEYcXAssz}C4?zzE8uT7Bg=RU$4f&83TWWA4;QUUi8Ya9*YOQF z&(C@oThpfezjx?;v-@GO9ILy4IW{y_QOTXbd4Xp#jiDWpDldEIPG`NEFx`${MfZIR z=VirN6VCDvD$@CQCPY^mV$sG8MZt;>dZ(qq<#?ad0Jqv`yw_^9eW?He=ibJdabC>{fe4{_PIU&NPpx1yS(I^ zh1Sp0Unc2nrwfVqG4=?%OH$9TYW+MMy?XJ#O$`r-Wrw!baUG9Y9Wn#_jrI^C*{N~mh#uqFHS zh5V}txA#Bc_UyW;0>HR-{u2!~?b1pJ%pxLX=fE?W} zG%SNogyN4%Ivv?-z8j!apbsb$88q9=)l<`mbo3G78FZsW26l~%$k-yrh)L6-e%$sD z@t~0XO$3aq_9D-V;ey4%c!h17H`>is%`WD%i!Mi~u16&6+uM2}$fv}p&L;)Sg0Z1k z8Qk~d_G8k~js?+6cU8G?mSESz|8E30kq1KgM;Up~;UrcCY z&^r-?AkY%Vjs7t6J9bwyz4%dD{!6v?;LtjD88^pr8u>!k~AcfvDx&QK|J$x8&$+@f$NQD(;9O4>TC zTH|i@``>Ycuj&4yQ`27!_-y9f@zK<+Dyls zq5|FzVRp`m$ZKpAf`?ukec3K zxHQ2I((kguQhjM5m2gM;L1x)NsEDTE`t6=#fb=DIU8ps_b8%VmkkF6rvi$Uh#verS zEZ$${V4xk(+G5?UwKhV&vTG5mgALSiDP?4|aCh7UFpb)2)Tuf!B`SkZt<*)Bmw=WJ zCQtqzHvO*2!je@Y;7I26>n^NUm&I@}_yVrmNvjLQj<&8Xo#Oa?jS~iogbF!}3WRo#-HjW&^{e_yX^AdTbF$`3tJ0}#;j?Arr$9YZQ`wB@IG@5 zWVLCBS=Gs<#9d-9-OZ+>h7>gw`xHbKJuC+3eZRu1Q**ox9Scq*J*3pN? zcK1daXnshy%bJ6E?Ye(0X`Nq0Zvsg~nG8oHOW#&3Gm01CxUM@46HFq=pns2o02L908e0>BZiA!yDgr=TO4u!R*yy&OZ@%6?2J%hy)rH>Nk<#RCnF1tT^+>QLg z?C57!lMJW9JypgefVDl0lHD zZ-(>{&+B(E*-br(L~}5Y4VP*+#JGlh;0<_qm!CN&{L!T0JoZfmBZT^;Bk+ zLpY6iQ>1h^_NelVnraWuo^7^h6uZ1iz zSD=@ou@y?|b#Wr6|Nl3m}7}P;Dv{Cn;JE zyk`zPBTFir$=6xUx`}Au1516KW+H41LL`O^WE682Qz~2*7KSGj;}>Ts@E2qfd4;BJ z#(AfF*W9J9>v%zFGvk322WLuIl5JqErR+XBKx+x%vCVC=isfGJQHWfiRMxaW3{rBY zrc6!DLmjl%n5V8c!bz%%3z<&HQVrD*;3s5;}>lM+|vpC=!2IBhk>)!-J>YV zXPAQy>kAEZn(*=dwe~@jm=*H^*OHcGTNR56eI!wI6oK3$ki=>gzMVIp(~K`xYK~3y z!^rb$6NgJ|2TE@+2PxPf64tH_^P1ur7Mq6bTOmSYA+nUxRum&~X3um-gVj<=(j*+P zPIWf=3!wwG$M9bxz11Q#Ult?Cbi4E?ZtVkMPn4CAD2!L_y&EamNi2JyZ!~UqPgsd+ z?yeIXlBPeGESheFD%rJf`;ZwlHGI; z%Qfg7#2+djest4{%Bpi$@!SZ-)!RbU??jPtloYsrYR|3IjLM(bDe>T8K-EVSt)pa(RR3yGXFqU) zUx?IB+tZ;s+(qw)Nm!~zL;t!ET2tig{H? ziubeg)Nu&3Y*BiK!G>F=;w~N4QLnhgB zm(fuCaJXx`E>OY7~#*pd{wez@)LSRQuE{t70;k0@_kvS(#5%G;JI@r&V1(Qh_soRj`j*TwZ*tx z449Nm595oa>5C<^q+21VP}G#?GgHOkb#Z(kdGufX^Ov#k(wI;T)Hze6R~BQqoQK_} z28*F(&gaT#f%23DQEX=gK4oFgitDdLAX>+jwxmnk_AgLFiDEf-*KuX}Iynkgnoyx4 zI~6zS2i}hb6Ew$C-a5R9y8lA`g*`ny@RB5!Pu(EC%~^W?N@Sgy84s@)7xo&%ADNS? zGvGsBK1y;Zg&18~euHf!?c16ePfGh=*9P}D4ZBqbCe97ZHqIKeeHj|MIJ9*}95vN9xRmU9yflx^Hzo zFL{qHwMD~7^hrRAbFnugO$OG(l73n3H%bSK} z!_&081Bi)qdy4xPj5evYjXZ>=!F|~?9$|~)>oBrW@nG&fyPKcgxaqVhqAqf?!xQ~c zmHp+Phd$nX6{7^ciHYVhH*gg1&sfnErp>U4M8Nok(`$aCOR@ux%MKUb=5~<>`PssF zaBn&Da9w_2`@v|L>%>lUD7=_7t0-a`VJRf7eBNm-C^+*57ES}`NzprCIaK!0Qr!&d zb{06HZE{cProQrxy3h4`cxlbNkrRKJJx;9z7Pd&vdlPg)ZTdq-C4|%In+R-J4k*of zzprcEjBIJkj;?0$hoV4U3M#cyL`hpeUF)9u(O5lQ%g@$n*Zix+1BR5}Y5YIjH+~#o zii{FNXE}W`+v=SlkZtc$n}>L#(m%~*gsW`AwdgP_epoV=5!YYBhe219 zC~p87F`Gu&nwm<=ln_`X8ot~AnT6JJq7h!H-}TYBp3n0k@(bYyBMy6f@t8r_h8{}3 z#-sh8q<`{WeI2A{O4VqZz3#@B)jkk?~@DXx;1&}ff8jJu5S89vr zwZSYeE{?GhSf_4&ZPE-Ck6*Fv=Aa$^i2pdX+!`O&+3hnvp($2(XMA){*yb29cX{aU zL)v&>a(&s@uZet=yvQEp#@$BIsz}LSakH$AtR<@2K;zpiy74Js=4d=Z`{rFLxAV*N z(lC`TO?)=B+>Php!%(xcYt3^I9r+^+RiH%)ctZgsH}`aJWj0OX`~473+nQnJ?1o z@f<&lw;B48G)*EH+Tl+81-sfj^&F|v85!HPyR1bu1Ig1`xzO|G#_cikJ|p7azwJw% z{{$az{=7dGtyWVz-db$~pZpkl1yug;q}%oN-?nCVl7@ZZT^wIOX>Rif;$@-4oO!Le z;xnw)UBw{ZpNy}Ve#Yc^cHGz9Ww)l%3R{FCLz?<-$)uiU4!Yz9^VYM2D*<;<rD>vWs%TOO-y zA6!naGLQhT-W^kbSsn3)4fh)5Eo}8q@31|WfSQnQ`X+jpSD3=YPLk<@!sSyH0ZRKC zr_?8>DSJ%`xu0aNa2DrI^$k0vD?Xj!6>-LSmgcMrP(1V_(V2-*#(9&;cM|@lQkk*a6RAIx@%ONg3yy*u`6%A>KaSd*6D zr$4;9)920Fs8>%3o?ZgD=>%ntjyGwR1Izza?MXoTwhM@Az2PbAB_Z$Emp!ZkGPFU-+?kbLBN|;Pp@2 zrQz31RI+=+1eZVkfQU;qa_zoYQE-5#vW5i`WM6n z9Q6j%A?B#RZ<3p*&rt8g*rOxX9==-A?MIz7J2;CguT+bmNyK&9@g2KaDrqawf>0LQ zimgn@z7qGk?$AEs{?YO~C)hK87j9k5e!m97pTDwB=ynil{ouJbpj|N@!uee>yUAOl z`*2KT*k60Fd-$O~WPV^`9S?tWVtwg>$$-xqdQfCIgXMydWP6#Az-Nchk&ARY>U={} z(}&5x``MZcyo_0hZLkI2bn{ff+-BmDZ%|ED7Y3N#G_$CTwH9}Ek3E$&8`me!?Z!_c z;)lnDii(IuwSZtzZk4aTsoQYGs?8ixpiR_4&+XOPk6-uw%oNeb4=YzPmS^w6zGF>)E*lJRADGe1iBNvy`%;(Hn zM;jb3RdI*?5ne-M;-qgr+EeOXrn558u1Cv))>ulCzJ+-qauuEdBe*cR1ZBs>jAP!=0{m(r8a=#9m5S+w_O6+WV-o4s*)`Euv5J ztNAsK)024e-VZSA8yt%Dw|jHSu2v1Uu=9iDTy+I5Hcg>6}$ySNAKi> zCmEh`O6?%y?;i}k4i@v>GP8kzqmac-Yw?$Q)SPxQH69@}JJc6ko{^>;h#R{avJZSh z3eRq@iheW>%9alkBPdsQzu!hG8G-P>zNX~jI_^yKMc$3irWkY`4lCxw`zfElM$g^qePVRtss6W%%J=EE=BW- zQC3ycj|lpwzo1mNEs1XQ-=KxkYK9L?ufXamLi@RTHxZxTc2#IXrPLF)ojZq9IbNuK z&Tc^dpzIv(3$ucy2xF$xJCdHOm(yiL} zjq1f0eB6ZK)Yj^8T0V~+BjXXZoYdlZ^}KKpzLTH?m2cvFzhcTHec2Da;OMv9Sf-z3 zv*a`es9;A#Bv`4OY4iP(@IV4p3mA4PL69Z*I~da%iEpG1LZs8x%>)$p4u#{x8L@^M zp8~&;*T%5kTSwE%zVSHn@@Fk#f3U9aqkmJP)2E1vqm0fpTTmBE$SJws_JenTRLP`H ziTL5;yN6XM*Ii6YB)-*c(Z8-yYu;$i zc!%U4Tgc3qIaG^4swUG^*bG_ssq^%gT)at8LPfgR)N97_^J`Y~F8CAPY^{o&Yq`8b zR!z|6{mjH>ifbR9O12;_)*c$JAgk{4Q|l5vi_3jZ2XZjv@oslDXJ-fQjN$o8#UdSQ z4BSKrL*DLQ9DC^A^C97JV|EWSF*Bm>@-w<<<IRED&+VnhdHZ{4{xO|u$#w*nh z#z`D}_783*PBbhFT5GBq= zb2}$n2f))AxPJ6=Ct?uz^N&{1*wofoSsb`yrEls;#0s2M>1YUe-9MsuaDo7sI5xmP z`jNt88UWt_;^bg|Oj2|*wpJlxV*vqB5q}Z{_3gxr%}vdm0B{mU5ECaG3lrc}4mgUN z8w%K%0`A$2f1m#Ty{#LOCOsPmGl+wY1;AsVXJujnF#$*iOhf=|1t*B{@n}yb0K*&v zz$1cL0muADrU4gi<3~^bKYsN8^6LJ-hps&4{#)k1f&&Hr03EaFmFdHX;_rVGVgMdl{$gzXjL5u*@)FW~LGdnwo>9IC}I2)J| z^e7Yy5i18Hh=cJFpA^i=0peuk1W=GUSivAh)<@=nb^tK{$QTTB_gF%y(i4EWhp!!IO5e(u0 zKgQXBf{zh^BX%Yb=c8~y8W;p-=K$noV`hHh4Z!gLae~2s6#u%*&IXj=0FXie?SPoT ze_$C{0dW`~CHrq87@+*vngPE5DFKKC`oraa833RxSUEs|=>U?kGP8mJ#BKmg2!P%E z4>SK1W(5q95s-xm!24nTPYE_Kz#!|NYG46@0sfhZSlIx!p6VNrOYZ0u#VP2DcHXk+9)>V5{@n&O{zJ){$jrB=1uWqI6tal56(PK(K=y5p_? z47Wi~xPuK?KwH)Lf4seQbR4m=;5{CXnK5Q&W@d;vrWj*pW~P{#nb|Qj#LUdhF*CCr z$98t^yYKDZ-MjnF_t$sMOtqwvG(8%rMt!<}RnJ?p8LQo5LJk`|H`g+g4pW`<$<-A%7s#8PFgv1wW(g=}JdQ)hTmDEa? zON`SMPZ6C;Y;jSo8_sN8b$HjBH$kStt!rG(Vo?{TFCPSGmr5*B#+;I?QDO3yj8k+- z4Z9>ZB<89VA)V5m;-2Eqv(K~hy{K;?izKA|{W=(&N7S; zDi)NMgofq`g+JsAKvG9TSxf)?szM@lNf)9I3p-$Pv%Kc?#^JeRyX$$QWBdA#t>TZr ze=CI4d@H8QRhO1z01*Dj>;9py;}O%H^$1T(koiaeC1GQ`0iP+E$5Oxv8Q>zP-lO1f zvDG~dV)hzXcQ|!#K3z?q;!8wQ0xiPtVJ3d=BMpfU$OZxiCU@qKlD4gKp&Y&eY)%_9 z@jNPyI_d#sLfZO$Ray#2u8Spr;a?EUznV0nXQ3=4c z1&n0@Adu*kLL;@hP>+nSy**r033!6NGnR~?nny;ad5Ov31 zGX<9N_bJW0R&LWVY>RfRQeOnqe@`SVEj*IX1gVhf@jCPi;Oxu%?b6rR+W3RRFO>iS zz~>uDTK>Ql1ToO8Qfqwz?7_~D+OWF^6U`gG_6?j$b0M5j=Wt#Q0R$F@cz}@6QI7B~EPTV3qy7gt<~0e1q*^w@M{KO$(K-5n z79nf1!24d{fC21*2vc;}8Ve-02ttz>0>^+@D;$Fone1*h35N*%OFo=gKN)ND4zI_nasx^OtE0L}x4 z%uOMl2)m}E;E&HNV)ZPuCO{WJ`vvxxPW%+(3WOAhyu`_kv}Qn?4tdK(kh?Oj6kUUG=h{auy_yxh(r2 zbxqhPL)uM<2?O5AAj&$#tH6$3qSjB#;i)?49qmB%e!)7ttDxo^_Eusde;7l`O{B{@ zyyf0?&1qi;VF8-)J-+o_y?TiePSfQ+@;V}}UW^+G0VtF{J`WtC0I6M8O_aFjL;K)T z$+7c$?vJp$nO>?@#F>8VRrrk^C=WEZ;k%k6n=ryU1ioF|RkEXt;J97mlK>W-Q2HCf zY;pKvF-ID#wpkhuA_ae{bjl|cLir%iI#_K3)}~0WDt|7EPa7>d7eQD?dAlE^+BLyy z^+cNFPkl>79-52aAqB|K9$^JY&lFw$wxvt0KQAorR?a-?{`J1xo~OP?SVac9h;mR|=1Q6Z`bOOK+`HnIhQp3*TCjBCp?QxiD))j8U3w(C~=!I(RpavTd zcQWLbbZYE6Fes>m?I7_W+V`V*AZ&#c-LU$=+xOM(5b{9x1fUE(nBQP!2guz}`XFuh z9nV5i?<(FP`5=_;Ao{?V?-Jp-*J3x&|@S7I#BnQsN6SgVsexH*5`0G^l*Ajav ze5-`%DfG}+Ioj5oxIjvIA3$bafPA(Sz@jH;VFKO>dPlq?FWLx|X|g}+9ROdIo}`q< z<>kc=fSbUWzx+_Idur?g(D;tQMjJy2it#8$vuumvyk*!{{5hiLvoS8@za;<0mK$2( z1Vpf)xsiJ7nI%mncF}k%Kkfgmit`D1Q;dWkaw}156KfW6l@?TbalnD`{$ndgW*H?!{&`Y?>YMBdgl8+iaEn?;@h^R)>upE9?X~w zv)f9e%w60cxM%5R=@T3S8}jS~rkMpiRE^}J_!(v|>m zv{@Gr-G1PXXPDvKGTZL-#C<3JyBB2n`SS0Zx5)W-l{AJQxU7F|d_R2O{=DRQ#J8al zzG|G`UI!7#vv0zT00fdYKD98l+WJj&w)OG;oX+KJY>TkZ7P7Val{^OV-F8Ys-&O4} z`094QlRK^&M^#TYmO7-8Dp0vd zmhUB(q15f6E~Vvb>4tswwNloGQla94;pA(%oDJpK1p_Md`jLBKKv9BpS%4|Gt4jXt z-UfVAS5?5Lii&sB60=H9k|WUw%`_5vv;!mE)HO|WP3zN1zSY~tcnG|6LcFbE?#16w z?O=L)Ni@yXr3yP5*)YEPD~`(uaZ+RBcxEueH_MEjx)d{WPhVed5ui2qDg)uMsK{f> zLTSy6W%%LfMd-aht(}oRH(Z(M9?7U22-hxeDbiI7|4zi%Emh5;@+qka3U5kx$B_>R zREw)6NUot++@rUhPwC!!xKU zH88`CpwpG{iQ#byyJwBg0|>N&U42u4u%XNn#c|oR8ImGVkE~DoMZyTTpE_{~ACm!R>Kug-!9XSprZ56{7 z=&FMkl&@?fE=HGudztNsKyNi_r@ZfFcnQPsNDaxHDSAaat|<+yP{z&gzJj!ypX%`u zs&oUUv`BReFR=sa=|SUqDx_wH^i-kC=tn(0erfWor2Zpm zJ=hi{z`OCG z9ImDx?F&K6^4S;L=774Y@>_T1aJq74WEW%+>x%b33;-h5wEi|83~C0R0PDNo9W)^{ z_FKmg78tc`Mxp7sXksKsw8a7-b}`H`_IP~LaPB(*6uTH=+g?I3ZaSJud?y!~APZHs zKQ1X`cLOoa8xw&(g%tG;({q_-Tz}Dn1r4L=l>|>^)FaIkIe;?I4r!ju*&JVO52I1M ztXlPy^%}$aZir$-B*H=Oo4#H+kiktsG5}zClDS^VSeA2fz3h*jG2~2wN;53wrml6z zko9SX#T1*!`yeMki|`SGK#@c_{{m<#1#F0c4rqwEl1P>(FSAh?3S3u@zW>Fut#D_` zqi;u#twaVMs~wh2Wqa$%Y4ig(;dC@yUyho2^hgP-x85!1t`dUjx7VXc^`88JQ0rE4IYdJxIav?$XX*kJ9y zh>e`H1{meDTmv>(>p-#I0Q<8%LR6_bQGfUig+PX&#WAxTd|pUG#})xrg0YLh@ov1J zdA~*g#yiCb15G_2#Jr4COz*n+Dk#JEb63dAs6-DZmv7l5MQQmuGYhW5o`z|xE@+cs zy=J)rbciY%dp@Wm2$CXQW{FSW>k`{I9C&+0q99W!WLvvf}e+}N6=BdW;?tvkXfXY?yGp2 zH-+uEwdGlZ4Tq`7^Zcz`&KXm978d9<9jj^bp_CG$d_GkH`Vd`22f(3?YOc z?<`AzUX#i6uh(^2x6vkO3cn0mv>d6Uhst}yFBr(mnv6x+Ky_TsggL5*PnEoTicvwZ z^n==rz?V0%6biCfYI!?n*st>r5I(K9quguEL$rAMMBnVu1cZ8)qUFAUDu#*K<23yk zn5#E8BGAMmDVY@HhS*rKF9v3<17VRPj}=z3 zk5#iE0xA)}_e zlZwcWAJsrVO&E2I@S#m$rnqa9_#jExmOF4q|1D3}lQLS0{#$~KSnhy4!iOdS+%jE4 zD1P)0x~C$U6y;rw#8$#+E#+N{gdb(XPYNdqGJDyBI*G0L(Q|ZOii99^PX)4C*#oSI zPKE?X^fl%LUvxN`1Imbtlu@FHi&W{K673Z8v}mGa9TazR5f|~JZV{a{3Hs6pP!R&m z3AX5-U&y{uHb|1q$eJ`taLF84M%W~es-kU5hlKgQ7u)%w5(bLn2l7z%7Cy zVbmysAz8Xo0$aLRlI)&>O@mA{VlrX08a;zCK?^;DHo+`{Lnb(F6fuHBwpf(x5j}$` z!4f@#E`cvXK0#W9%r9b-EI|gnJViQ2!Uw%PRXRn2j*?B3Y@gDpQDRuOSchx~oi;IC zip(w|I&l;>0#nwcRU%ZTScL31IxZa=_-->rB7Fiu1P>)!F@91Z7=Gf|YQBMJmd)N(7e#1>cT=vsxjs~Jmpbll+*_0Rh15~j5fG@mDC_uH2QJ(SGFKao zQCG6spUVpB%A*X6B~KfIqq#GRxdKVq-4#o+)pwEYY?>)|;ghMddtg>OhISc$ zK&b9w4w$Mg)qMIQ!jjVt*$*@Oo(HtG0PpM{Z^=cXevk+q#L> z$H9J5xy)K~^Og43B*FS+K{UebaIOg9?u)baii`2}-zlS75nO8dzp+jXpsdP8a^b(` z>Z*Us)K&SGt^4&HPWiq)`Ss5CYkcNH%7~}fA^|HQuQaDSJ?9}YLB4j;1U!oCH}|VL zC&lpg>dL%k0f{-?_k}i8Ni-2%OUO1<7F`N#?4L9%; zY&P|cc-q=n$gDn`kKztNKqIJ|+#$5r5?BiBBe%m0`jFqj2kK+IU<4$AKBRX*0k!Qa zVa}wB;yXM6%y2%UJI=uGBsbo`9`YO9fNk`bXFk+3WR~{{Jf(EtVQ+6=!F3Ofx93_ zJ(FeH6FZ>;=V*9FQN@hWdsqKp)j3p!Xisg60w1s}2;V zt_$gH1aV=kO6=eQ6){$&cW8l%=pKQ+(7-qhO~oBnU>v$faPI(U8O?m2XdKrN1a2yyGWW5;aqWK9TkO5x6 z1vq(fmJ|`f09p_g1}y50JLU4{k!?m06` zG3wCkTyXD;_T$KB^F*}M3OM*aUeQ=Eq$%UYNHRpw10;ZOAbHRp+#nhYIt%J7#w^+_ z`mD=o*W7I>RX$lhMLr1$H3@kyx&iDghz1xA@F4SI4(l=ON;_ZjZlm{NcGtQ-WIFBI zi~}c?uMaD@lUe zR6RRwpLA`mfQzWR()i24?H0Y;Fu>WAt%*ml#<45ykIMC7_pEo@47fKGu*Mr)l(RMA z3;w(waLoYhjm=nieaqoD2=CjGqNBnG^ z6X*Tyc;Bz&-qHTlXA=#aRXyHEKKI$g2W#7>M+oPC^UQ<>fis!YBVFK@wI@EC6W~5Y zj`yFy)r4~55Wo%P_=taMfJ?wiyPUZ5<=?GL;KL%9Q(#NNMv3i#n-zYWKKM{Cs*`%^1e~xZR@YdcK zwFUR5Xo=s3+C02a)$F8brQJ%+!MF*nfbiVDol>-vE65(ZIv6*}lyjnLOFB`I=}4qeOw6FS zFVz>_%WHuULlKP`z)zI&(GykXloYWB{gLo_`l^U+Vht+G5g6Kzn1zJ6z4SL2WcC?! z`SboPu3fJoopo|u$Zh|H9@!&=Yf_LXL5c-NnjV?wjp*G+HR}{|!4YEtJB|xqiN>jJ zBR)lyD3aiz7{B%5?zh)NCXry-M)5{Tk^8CMf^zNY){1X=kzo7W&|&OyNR;*`UV`fC z>LY+t6O;DpdOIq?-*=RUTJ@bgXa9jYydtm;;ZsWs9|8ElVq3^ynIJ9D@@bCx@Ev^#S@!Sw)fABY04&>jz*Hz$g{MM=Fy!oavM zfVgfT(IX%(7Ba3IMC1!0@JitE0JAf99U#>MN#qMH@XB~|qPjCj-CGnFAVmxjCj=sT zhxTwm^mu@{Iq}_@^X@Gw>Me2)kh%uM`5_5-;d?yL@63JcEh6tN;tr4s3y`u0#Oc8h z5dw(_K}2290$$*ggugife+P)2IlrAbp&eydj|cP{3+5XOlp71~n=*WlMJRzY5D{E& zk#291J}}M=5Z3}3rw9IIpvMF7=EQSnj%#Pmxwojgw}`Q~$UHzQ3;gnzQiP1-0>AF4~v=4WD!3e9Hk4wL0^XEgPU?5 zMi|gBdJ9N@I)&MT7Z~3WK`~l}QHG=FAS}P;-E!vNavsFuBjjy^FloXYs+EyiJ7|&D z(EFGrO`b}<9zRzs=o|!P=LrRm6Z2&nxoFt^c<(~w98nQy4BRzEAi@){iyh&zc*0O< z+l?30$TEqD+D~+8r-L^%b2KivhQ-8wU6H%?r+R`YDJrUw z;@lsI1yCKy6h)?6jrN|vC@sXL9H65qmM}<|NT!p7Jr#JT$y7)FI!;u~rHm=b>ZFA> z!3O(RmPHk4m$pFj(W>hhGF|Q%GNAiq;8Y-a&!tTzDej0--}i+j($FrpO-?c*g$iV; zP5Vd2c5FrClg5b?-<^{aq&mKBiR~zs;)49Ib5*anl}mA5;YHsMURi`ZgDH*N66A-} z-5$*E(Ei<{nSHSDhNvLN4n9>jXUeVb$bzCJQc4?G(@t;hy z<5T?qG<|DwBW3fsQ;tL1?iq2oQn0Z}TF#xvXxcEnJHQb2OkmiTP@>XaVO(!U#mB~< zwrbLjrpo9PR)|vPY`^=gdW+7O&m61!zFv3}Wx=|>&_wdxYiP$lQHo0u)-@)Rm1=>t zwW8VRdP1>Es-a4X>5R<$ z6r&3Awa;gB-cGmYBf>)}RAC`hY5q!)Ik$*&ChumTQDAT@_Q%R@n9T7S1*nhF>Wop#w<#FLS z9G8=q9UZMJIWGgLX4BUi;P~#H67Jd$pZVk?Ou1O-5;cHk{w8v zD2DN$^G?)Eikd!mHgFIio3Hx^wgKevtf7%8#AtE5{I@o3XUVGJHsngABZUhX*nF!= zLi;PebEpwS;F-Qf7GOY>=txB)H0&gO;j$0s-c3sbO4SB-Wps9dOdX+ z*^-RQl4tyG(hSN7*6(1J70_W4D-Zd zEMJftH%%CU!KpGtO@Ojz#G^Q2&)6*7bv&$kqbYjfZ3lL$W)j5E+O zVzV@Q*1i5zR*vJg$%b+X&rggzbC+A?cGMlNNgsb@B8;mb1U&f7onf^udB>|v(U_1n zO%&i^=Rg5hV$( z+Th@40Gp2!Cdyb^8QI{&Z$3xov^m-D%hs#nF$PmGOLO;4F;Y)v3|E_UWz^)1r$}A3Sfv~d$axjC+O&&K z9b4SL`{IDRue3{3I+5bTQ;Vu7GZu=|Czv$;vHzO*U8NvuQoJdNVku^-`<`=Q)20hjGY=$GBUM=ChH13YUs z;bHPOJL)}%R83fb*L~Ddy!1PB-}+1ZmL}#wUYX#9(l_2RW;5Gu(AvB;83AQdf+4Dg zlK%>d6TxW>E`7A~-h1t2_jzwaLiZp2T;G)deyPhw1x+`(sd+eD$l-0)@}t;sM5`{; zfaA*2imel!7n-JkFM_tmwo(Up4M22cGfSNIxTZo*2w_Z7&A`LdDI_AcjGRJ_O$ z+L8^Y#qvMGua&WB?ZU-Pnv2sizCfF@g|Kx~(~RrjhuutC4me8Nh=p=!#CD$FWHRbn z_=&HaRrt;bw!3ezZ=5!(DQ@!$T^LNoz9L0kwf}rpBoyh30z_wUio+xNmlQJ7mSciw zBV<`ZXLql@VwGZ&{~XVy5w?-3FD`q{Q~Fdcs|06YE9r}nV{$Y?x38&Y;esp4EhFDF ziUKpFa`r(T=zEyxC>o|YD;kO>7<^?7qc<{!fsu5g>HS$X`u8O_de}h+yLJ0)6Vx~J zV`Lom4wu!J0E{cGyMFPjAFLS`a%|_qxn|Dqc4EHYl-~{Z=4u zLh z43r@@<^9Dx1;WBvoMir2t;yf}PWN5pPGPZ`Jl}oBekl~0TICoy8>!qEzd4dShsDr*@Stt`(se_D!+<4HV>O=0Tqe(k` z+&y@^^4gB?oQ{YH0**gV&!%azQ}kJ|aY5LIfMz3&*?G&Qbupi@aI@?jWibT5h1{>T z))pt6cK@ioi(x9_!9)NbUgyh(HojeXIDWCy(7wHJM5($GvxjnLq`zfYUzhl)v&P}K z8yxVBxTw^afB(>d+!`7R*EUxovLFEn_NbsjS%itG8(fA?1N@0Eb=N9JaIBK;(Raz0 zN$pkrs$Fj)gM1!pGa9nDkG6orB#57T!zEjNN6PN$*Lr8b6HW8VRV7XUU>D7X!Ivb2 zt`w~)#3IpPV@RaMg&+Icq!TJq`E@S(Go@-pq=}?FT+GNK>dy^dSl*maa?j6c9`omq zUiCdSXmV6eCdgu3!8$Kt8M7FEf<7k*i-fsP-KZjH6%t(0a$xh-C$76pb%>gvA!H6Fw&&9>y%@7JM~=0ln)u9<4KWJ+2&Zq8 zr^Wfys`Fd?)+7En?#JzoG|Rk3ky9Vb`t*w*tLr>r%2TeePo07CrL&*)Y}&Z`g)Zu(b@d0X(|lg@4M?y-JXta8r~H!=&#n?r4B1Bf5Wvckq^-R zD311To%W!*6YL7=23fKo{49|}k$GvZt?FS4P9{2p7n~n?FRKYeP3++iMk*=MEA%B{ z;`)Ty6!%(5IvcS{F_^7nj&&}UHNsVm3?<~ z>iH^9*l_Bka0!c2jtb?{$4mZ?g|`)aArq5l*FaW!17nW!lKW`rH!=(X` zelY@juB_ggZW4|ZJXB)sViQ#QY%hyT6%m`BEwYGodmI#=g*a(g+RO1iw9*HfS3dF8 zWTKz5J-{34Th<)#3SvC+9|+(2%t|rCsNYsfX>RpY6Vp)7Je}?`!>Fa}j2A^*?l$Qp zSO@pm)aAO36N7Er(R8u&EsOpNj&Wn7%Y*bahL$w=-AefY(Ki)2YG&RIsl`d7)OMx_)z3_c5xi6qBnGy%Q3Rt{sl1Xhz2{g)Ex)`KwjUjS zhaZ$7Mc7?9*!JW5)-0U3a3YvYvkm`0acT`!e@RdLB}m zzM7h=O)-=HHAkr>T^1Ec-{G1wsv-++7ck4wu1*jyq!Jy`Q#!|jFQWTkQ~DImSz+a{ zAG&v(EVgngV8Ubca?l07h%>yqNW)abb%lQtQ>x~s!=z(T`4nhG>qtemfgdYCj;n{; z@(>)nx}e$3xot2dCl>v?8+W@73=?tr6fa`q+KHqO*!+yw5&AVrI?uWL`0!78dY zUy`Vyg2<0mZA$WmnxcKU(M<^2VqtkZM|7f+-ZtuB_y}ZAZ z9Vs@Wu>On`t0<@RXnkH_Yr%vywF6+RORDZJv9VI?xsij4}4 z>2(d$rd*E``)qeKSSeQ-Tv``tQ3kW0A&X&+TPKl9$yfRufXt* zn5n;>QdLwIXlpO(;qSUay8^v=SE^yFLby3Kz-Zw_Dr`5?v*j1b}A9Xx@J~>jh^n3~idFyE-p0i4oM1aF>vwXi}Lq})3do4LMqmcFnjI6pTB?|ic8qr7BtCtO`_l`VBIP&NewY0i~ z(<%&%hbI-}H!wi~*uUk;SKy+?2CZUIffTLWA%|RODOJZKu50X(9qpvTLGDBP_-2L|&Xa?U|`au}fVuCCkMcfrx&0#``i+f5Gr{tRYEu z&@TsMb+M9JYyzKHv9uIAaYt7+Sm|BGc56K^K!_HP&jcfhMxa-Zm`g~x6tlwfa#VVt z)h(;PteWNaYF{5sN0ir?B-Ctbv1YI@SFp8FmJ(%8jvU+7&g2xTJhy9|w*uiB1ov8G zckB5s<(qOzcHYrWNh?_U7iUqUz9mX@+5Iw>!u6Mg+x|j(#mjWfM&L$TE9C_qhn?M6 za4PGv=zd@cj7+#JOZn#$Xiiortq5(!;-`Ke%$ zh&y6-r3SIS=&h^75W;t?!|M4W`?QTePsLk5+wpy#I@K&jrHyeXCoj;~YCHQ?zo*$sX1q?O$SZBvv4h(w zR0zB~CQeP#ObBUzPKQZ{DI*Dfa=}-F;(C)xhP*NM)R7(XpF|jDXe*J$604GGmg$mH zD0lsIIFJ5xw!rHLrF=qxFLK)gkvfSWs-ncWqKi20`~4Uqr!N#WZwBFpAkEX2PQJB0 zB6BhC2MQw2W!CzM&DPcZb#~L+(@W=?s_ZvwCpPdCPrifV7(Q{Bm{6gV)RY%7V&b~hO%tFH1b-{<{vEfI|*N5xF2}G z+H&D1=Ib@3ibfS_6v{GbP@H0oISp)c(AiSzd|}fqHlC1NQD#l_3+A3NrY{4vE#Lgi zA1<0#r|LU2K(}r8a6P<|6{H(hbG*z=V7`J!!QgH(K7aZtwW;Pj> zHyt>~*X8C-UE+z8(J)XeNbn=j`2pI|E+)HRyHHV-OrB&5iU&GFB+AXxrGf$;osKi* zRn937$EpN%@m^UU)W350DkrMEmkDdqY`Rx{hUiG`Z=>IF@{?=4p|Y}~G0)5F_{&6D z;w>-#&`l$^gy5q0%F69@h4NyOW~I^FmtY|%_*O|D;7TJK2s3{%2e_HIn^f%{)&>0NmNtPT|ZL%fm^jL^&ct{-L%3fW4s4#qt1A|#E z(UOl=2Ru0BBcjB-$eE*#iizv_bNFh}I+ZE(SSf6toFNta5;?ci!7nY>>w+7}mEJ9% z(^$W3MkPJj#TlJej zQ3p|ei9p9tRlyKT*!M=qkat`fM=cceO5qB0!lB5*v}dCn>0Cc#Vjv*e=pZ1vk2@Hs zSxoo7#)_&Oyc^D!{SgDg1^IG@BVVIKmb4m*yY&qk(%PCKiw_dc_cI@DyImjQmItY# zhy6H|?`&H{x8p^3`}M%+dp557OsK`0SeRR|=4a=JNJNd#tr`auyG&qTWaR+vkw#Ua zX+}Z|0>;n2?zUk?h<0Mkz-Z};rr`9|A#+!$(@MRTT`VqMD4(_@;7Apsm5YB~o0lQ` z#bqT;cQv&$k5e-aT64|sAv5IF1aYM@S~Mh;#bCVp41wa0Hxvi<8= zS%r)`4!<%NbHO^>FXC7$S($&c-By0!Y>3|aYjlmgoA3&IVa&u{)#s9*0WSJSE5+GJ z9lg7q`#05>=>eDlR}20jCc)?TXF0P_jnFV3j2cg@9w%^z+`l~HeswI}$*?@Pd+)ex z3*J0=nu+RkLlm@~SS(lnvd-M%!O@#0LRfjqMe(~|k#nCC2yXd+dxzNV0s9_iUm)lP za1=*fUsyy6#aRv22uF4R=Z=HQ)X&^I|7`gDmifWE`GyJ*3$qAVr+PXuIQ=#J)7vuB z5KV8780*vGYT&O?@|qLXxZy&$W=2~n;TFLQ5n|(s%}=~?wdOv(Vxg-l;GNrRO;%w7 z%4S$Xqm+;0YDm)9)quxUB6)J~$)mIPdHIyHcTYA~+<1x8w|*j>jrvio*Za!mOGxaT zHE~vd3zd!Cnffof;i*-86Q25K;M;%DHUEn~{3nh0PwZ0cpV+0iy`8hYjiEDG^?z`eykO{#mko^C{THqC zf59%fz>pZnKRL|*g?|DI|2ua1&+y~_ie3Ic0Hy!^i-S?3|A@@|ub|Su4Z#0on*RUiF1dKwNWkHJ znRvh)BJckNiu;!!(*GUj#LmI_ze90TkzgopY5Km^Hn}D$4RDq$YcN zKc2WeO85I-^hQ4s;@i=^@N{^mK-!OI9iP_v^4|Lv?)5&7EnUbrXkB~F{MIY{9`x=h zrEgSscREu^VFetQqw~qmw{W_`p4|6oMMU;>hI_v(9lB0mCOB)kVW^x0z@S zb2iBz)HeH8!t4MST1uezy@l;-Js+cAG8r902;wu%7FpKXAvCg(HR(!{aTTKqY1p7Y z|GlS9cD2sBUN?MT+AmL*HIwF5Nhg7#E~e3=2_G$Gk`4@RD_ z{(a&7%g^(_mfb%P+y4Z4{|%D+x4HNKnUed*bXWO5D7pWLu>G%V;vcN(f0}{+qU6As zC>NNi{_kcFD=Q~A@4wEUOCL`#CHMOL^EK1^hxgUwLHby{gM6Y48-*c9d;%(n43^Xg z8kP!`WRr$Q50-uh%^oezqd<7Ycx4G%H^zg3F2Asfnr@3b5~QrGMWK7GK0_g~{ND9v z=Fdm-QeI6>jn`TEaYbov#VH8nFAsp=adoQl@ga#vie~~as(y~K=PR{5%<^A?4bPj@ zUTja^RuBU42>VN!=QIj5-3@v=1O7_%>adxgZb};CZ{;8y)Iv`#9JeriizFcf)Hf&} zF$vgzd66TA!Sn@~Fx%OGbFu5YNC70*LX>y;x>@7DU)|^ew2<->)mkrq5ctc(u;lyB z-8pZ+%df%QXaEm3L*&ewU-cc4AzC#60*z&lnVmsw~{iJhXm67XP4V943fX z?#TtxlUc7q44mn084%0XuOf(8@g63gyGZc`)+a^w2fW+b8I&HEn`d*Litl2xW!wU9 zs*eK~zfJE`4{8x&^)6>88$}Gx26_>6H&sy$G5LphL;_E#|MDFoAXZ-g5C|U3Jh9#V}2ALX%v|R2}GktK4d}{-0G! zWGrTEX6&DGfgGyqhCII<>UWLASFUx3TOD(5p^_GwdLLSOjdIPpWqUp>ST#RuGBsT^ zTr{AcYoBj$W!YxiW?wRG2w$lA^MIb8*!tB7jAcFWphnoo3Hu2*NqMxiI*DQY6mi6; zx6t`mwN3`t#HgW(R=95eQpr1#Pa5Go!{QA`=o6aGaWh7Du+Y%z$VCt9!PM|j>kr#UY* zVNu1-VU%-&ybPyrfOtM~_8VvU_M9bgrq5uPFq=`{Fc%pWyO%~jU+VX-QJ_KZSF^)F znP*#ec2giOQU)6g`LOA@0FY)XImFKt&F_WX6mC-L%dpMl5c=e>B~Fx4^dLHe1pW^L zuIYZZ$pLhR&#+iDqFCdvePIto1>HnlGy9}OBCv-vlDu@N{T`D84A~)+nxT~GL5Hvf z*m4fosb`+_spi8BqOjD4q}XJ^(31l?O~$;br}mBY@}<`Vlb^GYErYarMhv*j_82CI z;e#FMQjNHT6=HamTLlJ$hrek3Bzjv2C8DEZXy)O7B;&x#$>?s9bc zj(vV7sC+H_Ei64oGQC``Lt#c7H`2>c-0Pi9_vd5}6F6qQo{;7rrzRsJY$IIR4=}HU z6sQ{VP9hDzO{K`bhEDu_@6oiUdERvCJ>=f@B6^{gphg2N?MmiIaoMEfQ3Ol zcdNl|MI&%x#?8Coc-kE-CY`+-%zt(SHEyir;Erk^3HET&`{>!K^SC9dy}+|7Lx(8_ z>x-~?O7pygE67lE1p8(&UJYWnRNnj|?|YM&lHuA#g{?vJ1BqHv{ry6HdoIP`RCr{` zc9(aF?1avhn3TwMb;GRlP%3WpFv~2~6lLdokS0wrC;5}g+0W4vL;w1)$h&8+aI97* zcW~Bx>>#bpVqikYWpTj-4sQ(I!30jLHRFi!1z!tM3_Ag82bB_GEO5%F$qzvbAf`?! z^@~d4x>GWG%Pk7E>k*r2-7^Za%QT30-Kzt&%UAGImthxb*9RY~*Do)jcE2EM#ayh+ zp&TEWPhFlt)38bef|45}WL4aFWv-0y>)l-d-9-OP|g4Sqg+NV+S!zh%6P6 zcZ;^&VCQ@ZeI6o_NxeM7FfTQ&BR>qWB5Jy&!)w~X@6J)wE(^xmeF4WG!t|`pj1hV* zsS?b(a)oJCSViZ{vU8l)NOJ}$Bl@SeUp=zL1!G%Bw69oGJd0IOi0|_UliU+ivLkVL zu?TRb&UX7GoZw+o6CKBJcwf5qd)=Sje?39Lgdg@sz?`87cxK8*CcE(;>-X$ zDl=%h3$%dRtwO(^alYYvD}Nj5bf6Z3{zSpc)kA7abxXs`6E^*h|UP@X`P5 z?M%tl&b4k`|FYaooxeh1Nrh8C<}Bj&b0Ock@-~l(Yl7FJB2oEp(W9+d3pa!2=CJ{HgM&(up#S!@T}(aMlNWT5iW~QBOalupqED_fNcJ zTyGpeFp$Ay;X8>x!7BWXrkCWE9iBD)BRT*_?7JB&^*daUvc&g()a2PbRLN)}F*MmzQp_T70&e`2 zbnu}QQ~WfJMjYxL?Xav^m@Jm=l|0Js6s1fg@WWp=TjaY4R>dg_&W~d_#M143P;~zG zzQp3}wQ@|-i74WTv==HlOC*s5(%Fe9g|bwSF&fJ|GPxt$J90CQc+UV$bP0@7nBxQB zb5Sl)?-)-AQ7=w(=`WlpRZH$+L$b@yf>d*M*?}@H!ox)YS0f;f`F9?y(z*Baa9S5( zs$G{?M!Z>xo*|QBaLAUyuk9$MhIqfiXw$zu@48Ip|Cud5rp*@Z>HFF=Z_lDIQ)-O; zjyGjdq;CvuwovN`eKgx;(Wld%R?Y0fY_2#^uV4Swe+Bx9Ts(3%A-HS+^hXc%QVRMN~^wy{tCy`U-E!a z)o%(G!-o&XZxDnJ#yZjTrz4s{l_w*bQI)4snqifvBdws7**FK=P^&q$z{kOo|0pY5^dp1INUa%GG87z>V=iD9nuS&1?kOf4x zhjL!neLvyfn!h4n_3NMTx8kGBx!(wTq<05-*F|*42%r7#T9w}(_Vozvj`?#7`zr?K z2Ip6d@UCM!{`b$Hz}Y#;?SB0mkS_v?Ap%(J%e+#36%gMZq!QeY?wRAhg>9MVzNN`6 zvEQlni0uv-xe@S%j5FrJ65O3&gL{DB z?oM!*;4XKv&)s{UQ|HvZx84sgRCU$#&};R-r>93)&-xiGD;W)8E{hrs;dIIv4W)QT zb;p<0rF4gvU2*s$PaQpN*2Q#(S1(H%4K#Rv>yAFWB=Ebob`9O;~EZbQcR;p>!7tT(R8Grq#h3&81zE+|Q(43U`;V zZbSOX8}&yVm9p+o66Le*m2^|45^5ggXj}fXTIN3y2*7h^Rt^6aK&}=MACyzEh$f z-SA3CJQD>_zH_rr#gZ-smNq&t{&q= zBF~236R9|eOg4Trm_Lqw8M9|G#X_O8t(vgwj7zD1_*W+ZsWKFhe&*bLLrNYQUj9z} zfgjM&g!>axvthxW!{XE2rDf3yRmKDb8UMH?=PxHfuQ>-pz2qOu$*q=?OG}s#Gb~+Z z96~}xC4lmMCN zbdm~^;UY)w{3cC0*&OC8B%?P+8~QfDQ`n%ul-@18 zFyVx?DJf1!SCUu9pF_u^iOHoy=gy3pEn`sWuKJEV_MSiFgVbF@#cf_MHn+Um^zA<_ zvA^aTzRJPrTrky+LH}WYRcbl&TwQkz7g?IP6tH)s%~on7+ga-HnX{Gr6!G9K7~3w4 z02yGE7-tEsk8b`_|3*?9fHKc0k_Y` zEkH!z{OaL;3K`}a4<69N30Lrm?r2Kvp8d5uP+%(sQb)5#Hys=9lgp@%@T1>Fa-n{g z9$U3$=-e#~L~PP0rwaX1!`R?BbjAV|47_SdK${XATZAC$D&!8a&C9p{$^`kiezm zi~5{mZNw)k*4m9aDSajp98P+PEZi&b2reBNs_cR{WwQB)O!FlU7#mB8?g}M+b@Q|5 zyk99W6%*fSheJQ=n|1`}6-_{o)|<w$zv{Lg3vY}&57G4vrG#o$^?h#6e6L!=Dk_Zc))nS>pv?|%-VbmT>Z~bgADrLPTfP-x%aC;tp zSGj_e$8&t7$WA&pwF;lT^SK`r<5wjEWBB0Mn4B5)faDB$2rM!a6CT^TLmdD8;NqqVH-YM^|K+pSwT3lUMce3FB3&he2r2MaJ4WsKat|g;8Fw z^>*KXu56V-o(F{e68*-g(iRM4Fv`D%-qjU%s1yX!j}zQx0vTukz>b&z029$?cBX8E zN^5I1w=YKO6`PdT@PUp(@#FBt;=j!&Dv3+_y5JY5K6~RW_nN4vR-;5$>IYR7>JEjc z%dLx)_m^Nyd1Fs*qV%@=bDVjZt1JOT)Rq9s6O|5jd^B?*Hc{c?#0Bx;G}I(W5gvu7 z3%Io04)y7FluZp26+0A1*vsb4^HR3VRbow2-yJCy(Ir@&7uzubE^MpOF`sEETjDov z7WS~28MM&wu~8yoVm>bczq7R8jlL_Y@XjG zu=X1Y@UtLS5YlqrIUzR)ev^BOi4i0ANNT_Tt~wy;aU;#~t^awxRBv|~V8A!Rs4ISQ zl5sQFyyR<9`xYT!zVPhEi-!{NOF_tYD3)$b_kc6`u!RF~dJw^1lV086TQaH3ON6vA zK|0{L$o{!(hikz|psAupNX^T>M@71ryZ9P<=m9xmp^ENwc}8_e#@>NYM?aNDXCj)U zC~qRlIJI0~v^vv%p458Y1Fcd$rMgHhqY|m-^I}|6W2{_BpH0^dH2H#xbA>hrya!us zIK%?+w_j_01Cn|%F(-tXCsNQJ7aBFqHr_2F%Q*}zm3hlrim!Lbip0PRV_m7c6w14l zSJEBEp)?sFzvifxnLy5y6v zjK@EjoHq*G^OecMQ~Y~x1Co_Z&GbY_ah4Y)F(gDdpZ87dGs8b;FV0h&eRpi|U92>9 zO&Nt=QP@_8_PC+3g2F<2AV9kLlETqcu~X=rK2gBfo}8|ukEN-lY%BLOf{n8ke?*(B z#Fe?q!p4M`Cj{DE~t_44>2C{D{9gi^&9UcHwoX1_aZ(K}SF(p6vCvh?78JzyQb*U6Oa-k49j+-E*=@%2i0|;87adL*3=;admsDSj^fTn+(g! z6pdeLCroG4xu~nN;}9Jws%#t5xg5y@qqfi)fk|7X3;GTrh8vQap#Lg|*hDU{C7EaT zjVTELZf(@FNPvA(!M?e2B~tab${N+0ZL3iXCZ>6%2OQMll=TD%omgjy86BGHst2>( z<^j&X%XbPDq4(;e-h47^+D{2fp*4~jV1~NOuoj~a10%qLiU&Sz z&ns6nGzql&4uXadE-zr*vyERjbFnkpD#?s<=(u{}22 zC=4iJg-BklDmWl(rXBDKDm+zRAOfp)-vs`+UEdD)dz=M#9h= zyC$iCnUtH8hE9cFMXSfD=F@ET(0)G}dp|O|@XqX?N^gx~hKuN%GfTz33CO&1-=@bf zc-Htg*Yy}$CwlKnQ>*tHmySVypV6`1?vHlcT9wzMZRw^jBcDA*d>>V3OE(5Dq){7K zRWGKSo%3RH*i4*fr6mkgsW8OoUno{g{W$y6u8BzPE-bVEn95bHXlly!shA7x3NLY; z+o;LschxwMJ7fpFN@&`}G!e!5%b}DthuO^naj6U>_P(%R<4{CV$k=NMHpfI2wh?j* zJe$!dA*j{7B&(LF-FLo_9TlWBpRrqri!T| z(I#LnY;s$4@UJhteL4kkLTbPyf4&0o2o@g93pro+(~Gls*UGNDnm4iy@bI2tM)~y2>Y^#YKt;6TLry0WiOF2LcI2?Sw>kS@ z2m-JChRy454AaI=HTcyHL%>K{O1(vF@o?YWCl%NV`r$cCK6we2y6NRwGV8OuLuqjb z*W&5ojquQYySmn&+--J)5m0{bYa${Ray)K7$>dZ*Xkzu=38MXJaGU047d~b9#nr}k zo{Yjq8iys|F&cViCtNngY|g5R_V*3OjgxKeg3nB6{p)IqRN$6a%b2I{sRJ1Ip-*~hWE?i+ol%L--+#%Dcg`JO4Yw2v zh9eopreu1@P9V`@yr;jD`Fdmu4O+G&M^cZ<{lIeS>`cDGt%!_Z2)A6m^);W_z4Kic z@oSL{>9pv6C>c z8+37<&enpvk%mmNz9l`vl>g~iy;KE5-AB55v1uFAn`soys41n7@A z)ULASR64E>QPv0Ya)YRk0QdyF1XR*ot1&`9JqFe>&ua&ILQIbIW8Nf{okSbVN$)n&N6mLF%6uYQT0=?I!=m(yvh zVdAq<;2`ze!eA|8StZ5%NXu6JQ|o8!`0JY+M$`&%%E7wUajg@d+v9B(jz(VVWvSaJ z&F6zXO(nWGC7HcLY8vNVM7y#2hB0Xzlq%-2N%|ia{2)Tf!;}`udF$Fd{?{im^dJ5B zik67L)gAAmU%f_YuDn$+QMhp4svLOCnh{jVeyN;G z<#1u9CBsobOMgW=uV;+Nr%}6|D2dt>7n;Io)?AmxsU?vI6@UVVoS?A`! znOeH{#neJ`bn~XtEh<;L=u4VNMj;Yyt%JS2tkkNQ*>}Okbpyl6SICZU5+dru;~f4D zEV${Vb91zPjL)wp{y0(>+vBkCUN28Af;IjgM=?LvzMqTy*)I8^$$~Ag5I06TimR_| z(C%M*nSXD5YU6b)SYj|M>@livP(3u$)%Uhz={=pRaBZ2E(Lg~+#0t`sl#CJi73!lJ zB1sZr+ziro^y|-uDp zVk+jLWBzg`R7TgWU02r(+wW^%8iyL?hat_c36~7lnr<$;iIq1=M8c}5n~I|ZwF|nq zB-d_MS?4m|)*(S(sohgjejg9F5yAwz_(xy%jV8t|+bhknZ(C}z8&tN_iQC_r6;evK z6|Lg0lIATx4ti}k#pDQitkO7C)V&|o7k%;cA1ii8?fF_+`<<5Rh7Z)rZY)e$Qk62k zkLZ!XH@@S-#De)A{B*GwDsYh-v6;q0Wuw=!ObNp!)780GXOpgGRe{-?(&Y@2h%;<~ zUhx1VT=bni@A>(}jeshd%l65*sgUZ_&lB6#+dmSHEudM)3t-RW2wDmc7>I_RI-&^wNygY z+sLs;PNMwXjG9znQnSCY;Dm2Po1pKOo;suL6Vpdw4}fG&ODbZ;oeJjSu^}(DFqo1l+`>8P1c;kpxT_r!;=}0OTJ}Pc)p)x-a|O zrZ(SZMiDtV-`(G0qWy}KEkto$GQ=2HVC5xfh{z#>OJkDR#w;iMvJ7yF*q1Xo2p}!x z^SLdyqws;=6F*^Cg2n~oI1RHh3~s3XsFIUvb2zhSX#zHn$j-P$;eZE&GEo?iD9y$bElAz};#bA$l%N=EdwF zZmvS^%J<8!(4a10*iu>QC6o1Ks~ew@Q>-fQ&8^mIgfd~S9{*ES(!+<#Np)>@(=DqR zY&L+KyWI99^0jZqfm@v=kI#M8p_WC!$_raIp7@klJBi19udbkXMxa*5SL=%oo8DTE zM!LlvmS!j{)s96Fc*;Q)-`n~}h5;8`sDCeI)sp`gm)W7eG~%f`##A%Px@3vqwoeLs z7yC>LN=E)m`WNg)JGZ8?MxQ=clegNK(7XPgy-A9AcvD&?I{5>n#zcl(BuF40Z|>pk zbU|Y69$(MkkoNj?tacn{l1v9RCVYya2$j-w_Uc_`o&v4vPdfZp^SWgp^Y~>SE;bv9 zbBT9OXPN1)R}ykWlD+NrJ?o-gr!57w@BKOu!hJ81AuW$eO1%_%yjj*GF6gLvln3jn z7+t4CC|P5kZllx!OomnRj47eSLGrP{3yI8QvoX6y`r}czej@I8bz&>t@4T9PH7@JN zY}~Nw!)Ic)SXRO37QHx|vm6{n_!HaCk`mE-xSGSz&`fN#pzb^y{l9Q=;ds771m!s92hKu zUNppa0)~f04P4Rwkds7MiH~l73ohLXPnE?nHo&}2d*=HolHew1_tIRq-^Eh%0aIC8 z)kwBuLJ+4lIF>__5wmyWkHVYGnsgrA9QPT~>SxF9Ic2Sg&_~sLA9jpo9?*3F!R71J zQ-U?@gSxdq+g_&*?xxpRrCp7sCR_N$e(fwbCsW1`X)Z#wY%NqvKyhq6bwl#Y9(NZ| zp|JYEJUyR&=24+1lOn%JQi^CFS-qS$qBdRLrT3fuYo^0F&)gy$AG*J7P>Iwd!;I--3U#8!TJ0y%xIquZpBbYY%i2 z+8XYyXU^e4{iM4MLq5VTgnx0!9}OW0JN}?l%znd&SaoU-Oj28g{%Kq#D#D zMN*;fCnq+{kMQN_2-h!Sj8$pMQ7mTba25`G>(dBYhEts(r)l}PvvZu}kXVK%iw+;# zq(mJDEoglW&=&Xv)Acf00+`f8)IuQ z)f|ZfC}Wv0!?0?6el0G_|(qTpx;vK<)6^6n1zCK@9*_Q_~Y&eYnimX| zbZDtDVpir=9~J|HoXIAtS4xiUyc)#Hb6|AFs(VV@zufn^1{4d{AKk$EfRe>9F;8~c zzzbgW=Guhf&2d=3nqrBXS|(kSjF=mnhOQ3#Zr-;cu$ zmnA6;?Z<=WS~$b6^%)rhF=M4u0uNO>oKpgNFZy4$B}{YQdpuG|s4i-wK8@BI%rtye zJKcY<*Y4V;LAy`u?{jw%!AhkL>E8n)pqPk{l4k`qg|=1=Hj%4WL~&Y(eK(ua;n4~^ z)D-FJQ9M_RP2_qNaSg?in%7zJguD~Op@lG}$ChbJ7L2ZKj1HK2Xa*pqH z`ti?6w8VobLB}}L%Une6H>VPMe ze1U4$Qu{$T0Z(&8cagTcktxht^YGzNI{zw%pH_Ve4r>M}x*qSNfQdEEtFx&QD97=k zw8lHZDaGXmUzaIF2moOGZEdr$88jidf`4h*owet!?e*p{yIJhe@l49%u7bl$9>KwB zQQi}a%^n79ItldpTQPupSIZHz-Z+SG#vCUVnckcFG(43mYcW*6gk^I7nt$=taL<4p zYunX(ed~rgfrwSh+z~zOUYMR*kosx$qDY=q@X`lo}b$ zD5NRsux8vJf=qvF{iaeCcZ0m(+4&v*?y3B*xz_yTD7!>Mo5S z#*;7|tL^MTgHz~;e(Ph_82Kz67u67H_&*JIR+7Ji(`FM@WN>&APMqRrWCbYBfAyN?3AVZ}I&2`0qdY;+6Eo;^wiFkjxg$u;Cl z?D4$Z?(`)oxBVOsefpAL>*EQp; z6f7n9WY0sm6d)+!eDb0&+es6Y4NcHQ8ZfG4GfmGdCH{FgO6}W5%{p5JFkIPKoZIXra8 zCNkp`=_$x1&x{iC6oY2iT_DGhZwtfHj+FdfeGxm{SvWxuV--({Dc9MiWAa`7w;fxM z!LyT^)wneaBXua^A!?N|xrN48m*(~IE}*^sMC*+_V-pU?u9H%O@wEu!)>1?xC!{pu z_v)Rd+*2jqyU?rk4259LA1&CNaxkQ|Y7MC$iO&1G{Y%OM{FAKuD`oMpfpjL2<-~13#_^Zc0@+sF|3Q=e z!@L5yO`tFg$gko8=~n+Rs{kN~>93;2MaIL)!ve~|0RACSae!2+f7n=m`vgHvAVcb} zOZAUE_-9~-jF0<&cLrL|1LB!D*+BLc8GxM&WLN#AyZ+NU5Y)uW`4{l|>s@jG!@&BN z5XA=Ks{kx~pa>8jNV4Juu}z>{4;zTY;sRk;AXp8=aPfgWEl@}Zlv?2dwg1n8xj|L@ z<=Qy^rf&Y#`#lPoVuK(B`z{d5j*8gc){kw0_ z5dfiA|6zD>fkZJrF80506$l$+2e5$*uzzp;caQ#2$lpf_RP%qNjs9KF-zxqATm4TU z)!zgEzfa)*Q+k4v6Y!t26aN{cN|7`-Bax*Folm3y9*LJcftjMttFeD~!Flx$i=a}& z4V=7N_hGZN@UMxxPxWtC1#H=r#ksP@@z4et7A%EJ1T!$d$!#-7EMjOb9$MxKA~hXL zB_F2NvmV{;Z7A@t+IIGRuR|^Cv6-8jD6wx2<>s;bY67-PPb(>k?H>BgsoLKOHlJzP zvk79iDbFjd-bc!B3a1>7$b`rBGuw)0u$>|*)nWEc@Bzr9f(9>o&-pXsalWT~D(0>~ zo$b~e^9f%q_BPrb0V@Y$AmY;w9^FWyT(Ma`-qb9Ud)*@cZ$=Tqfl#6@h#M){eCvb( z3WbEiPwYAa2;#ia)ZcOFYLYb2Quavd{WuzFt(9HgkZHqSr`(n(Rfc6kW2L>RD<&0FR1@1;_~my>HjHm^FLlr{-0wv z|Iq#n{wq%P56JI7#cufiJ`Ml(nexxr4F?xUm;1lOZa8^4{!47@yc5y;^T3nHdj{X( z*_*4UY<<>Q{TG0Ia2As7~?{;TBBO0hNy%jqa5>HaN?6d11=75^Zw&C@9^Wx^Ox?16|dhJK8HDL0)Jj6 zvs0kK^D#cbluj_v8@#_eNrO|NqeJzQ1GA#Y5Jt;p(rqC%+rEL**NSEwQw^ z$K5~1L-IflqVzbANHXFY2p()_!zI2k7%$*9HP=e8h=BpGG;x@XzRsjt)xLtOcz~ll zU+je8)^f7EUNQ6pAhD6?tS`1-_TOZ|LKH*x91X;*>26pY2nLQrvsqsa*ey?u&(9y4mP|5aoazNeQvj` zvJRdoXV~rPu{H|Zk>Cdx3IK1$K$BtXg}}uc+=9x>!gohx01`^6lt=FPe!5zg%MTO_ zhO=iod}0m)8@zf`S1sD<$E0P^lAOdh2_I(XKMenRt8pV}wJ)M5oI>Y)l+!Ej^P0Qk z{nC$FhEu^d0cNb^mRPK4&WV+t`X!Yk@DT%ei@{Rpm?BmUlW|SvwmMEjSUPVVDfVl3 zbnJ~&Cc{PWI6jzd5UfpQWzq^}1634HjuQxUWG_Oh7`Cf8gH9Ery#N)1_onF#^ACS7` z?RRpDG=oxGj_Ny%{`?3HxHc(8>=_ z_FVay@UY-nl$gid2*CJ|ZR0kFbvli1D-`l^Gs`E&MKkC{Q)DitAp|B2%Go+F#yX5s z$v>D5Hpl2l()e6hrRw{17;jre`cVVZ&Lp}nQCmQ;vE;@>GiaQc6=766pvt(mslFe} z_edbqN7`GP%y>jNyms)DHj69f57z@cOg~L3>B=b0MN@8^$g5J#V-6rd(2AL*SB(7& z!D8`}IR`=i858;)3;K&3M3l6@uJZv{&;ram@SJhSv9e8DFf1RN)vVO0(Pf?(<) zxd&b|yf8+y}%Ysmo^wAZb@_E?2_CjshVRT)4Q!;HN*1J4f4BhIl7xMHdDlJZh4rh z#{=_#X2X)`G-i;#SG4u&Cn6q-U$M1pFHPYX*zg%I^#o&ZWz%2dYgFvzDljxytX>ks z(9`1(uMlr{gs%CzG7S}ZWTu8OSD<*Ei5>SF;zYI_lBMN_xn^Y|rm=5@ZMYTa`ru-F z#F%=KTM?&rm@)o-7jp3}fZ;>!eUz>4gUqcbQ0x^?r1wu`j(3#Q>d3=zz%@#B!Oc;^ zG5N9Qlj_sdpyuP1fqpFMR@!5B>j)l4h+hN~jaG8po~A3$int+_v^BRw{@4-itf|en zTSA{;LD5|5ma$E(8ZAdIqGP9%&4mxOkHe}|g9Q9mjHNBjSGb1)+_gH~+HG#49`Zso zMi(^L8JWm&8m&ae;e|ceJ@RWfpVZrA+>w|)w5LEnxp&#_!u))glOpm=#)(v^1V$vB_>V#BQ$zoNt608(WnIFY*vz9gujgr24lPM3Q3iKLs-vm-$zDcJV zG5pku$G0E+lVR+;y{D{CBc^)OhFt*;z(ek{xQsdE#%7F79q&={BC!R1*)GsPen!GE=Cx&sOSiaKTfG= zv&6w2dqcsgsLNeMh#a5#$6jiENx>{tg^q2?qReTD0F{BSsINLdl|M~Rs*;>S^ROtN z5lbrNHI+|pr)IZufKh-^#t*^TPP;lh7J$A}B;mUwkpq!awqv%5J>a+Ly6w7^ZLg+a z9J4pa+(A;vEVo)tBQ(z(2VdHI)I0n@dPLYPmM-+P^e~Mt_Hju_szjQlg5-sxh1sl^U&5{XKpk9~a zNmRQI>nEG3IFf9;Md?nkxYZyUuviWi7!mV9ca*|!!}zm%2s%3>U879O$+HBd(}r{0 z!H%K7k?sp);7d?ZBQ7Od9+Ui{z2&YNFkA_4DK;8Wp6R+>n#Fob=SX219B4&YGQ;kG zIsHcSG-ZxXH5&=>MCLg3O|62c?|eCMAw34eJ`C4CvPd^Gc;S*F5^-3KgV1Z2WId!~ z8X5nz4oasLEp1Erh?{Gg7l$5YHv9qn>FGTq{Z~MI#|njhpQAYYT14ELT>ll^?*V4- zQ2nK^(3%v1OP4rppE6_~7%+9%&x>nkbZ+B0mvG6T`(seA$ODj#JL`#at{KzA7(6jw z5bIq~u3dNzcKwJ32OjbM>jy{*ovH(yhsr?f+&Qdb!dL}Kp z{VQA{WlVVkb4ckE$NV4hWpj>iFv^nO6$N|T`KORBo0V@Ga|bvT9U^R7awg`+#Vw7h z0w*$SZmI?6<~>`_JRMs&f<;x|MXrhR`6mx-_Q@M^iJg~IT2mm0bU=T?P;bD%Q4)?A z*E$bt|qb2;R#x)nh|^Y|%Ls8?CRanY^6J&59I;z^axgDG_gB}DW;@o%)K zutniIqw&XBWwxW0h$H+2GU}s59w?nY)++Sw;U68YOB#GQs2s8!d7hKTFLl{7VDcN+{5+?{}| zG1-?(gX$#z`4tHj&yBwphPRd`YHDYz^Y6xlXm67qcB@*ox@|kjF=?!N?dDg7F{=kW zJO<0W9VV;uC)Nv(Zj3{5Ak0tL)?DW}a+~^BbPR=fL^fw@ov{k9NHH`d9bqp-eJ<_DtPbM9y~IdR~YvjY}0mnDJk|NR*(}; zYZrhBF)TWUt9r7dRdY@@Mzc)0)7{0&K;FRx{kUG&wvXH4`woS>P8Ihyft?GwyRx?h z?o});L_uyl&;X0(i;HSbE^bZroZGLaPT2O(DogDudBQ~%HH)|i1JN<=Y7Jz9M$+EF z7qM^{^O2VB;&F~x6V~#N*3LzX8jTG%rLECV%;;-zozOaa# z3FR=c%x-Wi5^~D>t6AlEMGdCpq}Zl#rvCu{*h_x+Ezf(lom(%@2yW#g3*C#!h9E))@ zgH6&Z^8j##iTi$IC9;o9HC) zIpa8kx>I_4#J5p$3CEh>5)kI0%N8Ee%zmWLHi)}JE)^Yfau>##dGh_}AoIJD2h-Hy zokz(hWV@V?P$k_yX%T+TGVTmBI+YLjcvn8zm`o*I^;VLoBk>4VboRv~7~$Y63Zcr@ zqgh_$2(3!p?CaxSw=_A8gM;6_L1VVbyL)&Bi_(qsv1SDPnWOsMSNr5W zOXcdVZj$3a%eMQ<^M2N!XLQVJ@K85-o~k%ND%TU#q~-e%chM{C4A5*17|f=ru4$m= zYq>+VD#qA1o3)TtAXS;8da}kS5|&LpxyWp@G0nBEKXwgb!Nm(zVT~nJ3(^F%x;`M2~7?km;%1Q z)OHkeP7da;)&9xvlZ(8k>7(gVISrBfL zCnv)U5)lY8Z_8_A;EFpB2GfO^F%VC0D7RHwE0{I)=ecp3Rm9~LT~u)gLTlJoxQZC% z027&Wjf&8XipYu^sneO?;ej=x=5w*74g_e}ZK;RX3c1tX5O>7^mg+p*@V=YPbkpQ= z7D?o@h&xaeQ>mkr+Gu4_g4{DI1=e&3(a%OT$0TDGr$>_nXAU==XSWM6PASdbIKmx;M}X?=*M<`>j{MUyaP-F%qryS7!? zVueTeE&~o1fSQbzLh?PG6>Co5pv>C;U7MHE=4OaLO#kk&4Mn!a6EvKCVfzl^Sb@8Y z^>K00y-kI7b6e##>cT5dig%`4Ki$63&G9hXnT}`{_BuS}4KBhxLWG95ad5?;kX8b( z47z>M6@3#lPQ>*lCZ_MuYo-Dn9TVLvm$XK&d=BE>!Js^$GGhg67H5!GBi)IBtRlHoMY((u`lG69h z<)5jOIJLvMbGW#|+;w{*io6t-bWL^TV@gx-6$=uT=f2@9lAjl93K2N&`)3V)aZM#{E1pQ^iTbHL2Su=eCgpCF5rPNw;vn@x<9i9 z>mOYR`PsAHWNhMjW?W01)GbW`^bgiQ+yZzHLY}_)+}40?P_H2 z2zN1*1`~t9b9_5al2oGh82VwD1oK$(EF=UpZ<|_6fP5T}gyfh4BM;dz z1YP7pzrH)k;-QHvPXH$eHBW`iNQJB{L*OYxU_PD#L8ejy29N=FmjM?fhprPx*pj60 zsdX+6q+2Kk)06>UXN7i7Op}46{@Q}``3J0g+cMdHa38(TWz-&cieMsIsvupGU^#9=uj8HZnzR z+mV`ZMVE5jfhYyFo7~djD$Ay{c|1eW3tJg6=RbWc{2mRr0sHMDMC!qWeo`F0(}Q@~OIxacPEkNk(ags55#n?=3%=3=rQCxV{{||iKTt0Q zYS-P#Ydh4~1LY0VABP0$nB-X+{pY7V^sAd&REmK3cW`j1W5;I&FS1BmMt_+6DY25N zPbE`@q3_@bZw6CjUWpnVM<{4e$0(`O#N~woY;hMog6)tk)5L7k#9TkWm`ocul&k^Q zprCAcgwd|1t`gyAN_wqLCiZ5_2SvA+-Q-P-9dyNQvVTA9<@fep+l)nO zo)@Q?@OB}o`r?<)jgifbJ;EA|b~=e%knnTil|4vMiig7pJj)EJ7n{)>dq=uACdL1d z9pWx7N_O{4bC-~b$a9C1kxq5Dr#0)wDMi6J7oyZbze|qaDBg9Mol)XPkd+2M#*^UZ zQX`3*Q+e3qKwpR|FUxe|Cph8r@~dcAl@%{9B)88emsu7SUw-k3j{2M$?%VhZ<>DAP z^duzy1LN4lOkV4Ao^swG%rlo`f$}bxKLLl_(VTUGvKgyC0Y>(%&1ZiDK!R{w&aI8# zHMdZa@~=QhE>fr#xTE4Hx`L=z+Bcb zv%bgN#K`0K3szW|-MyNNzVqG_dskWr4$;KV`H5I$GK2XB#nQb_J6AG~$E@g7B^&R9 z#@W0bh%v$b{k?V$$N|S9M6W%hW#)F5kzc=DVl%U(Tx=P=x;&3n_xisR22XwKS1cBI z{A`k)cwwAJBh&IU1Vy^ZEK^G#oARYSMC-=d?vml7c#GpFowYocUyBe+N;xNQgR|15 z;0JQA?#HWfqmUzoUWmr~9~ef=&qdxj)xF#A=e;rz#3xQjC|5C3zk*s7d_#&Xr&tnF z24*OBi3e$RxpuA1DuBay958W^al&TbM;z1?QBo$%*)tSiQtS(9((8B5jJf)Z62~|q zANG(qBI>w(ZyjVWH`6+(bYw{{FaULAWc|*)>+?6|} z=O;wX55?J+8j@5j#m)Vko0lA(VE0#$D9hS`LRNI?^Ir524j8CM4sES@2}&3`)PD%k zM*5vC|D#jm;;JS(s%aBKH<`_q-+QVDR%!ZAdEUaj&`H%%tGJ2TB5O!4y{jc@fDY>Z1P?>*9dYUbyRlg6|MCd ztUA|yNE1+dPXyTklLCE~lcm|1<>#O+{8Cd>=&9~4A*;dJK1thR6WRC9O$PgnpT_J7 zdTY1Zt<{=FXf+G%gA;GxciK9=^;??}-A)NI+YhAHY&(V|hZe&0?97BxN)wnwimC}` z9pbXzna4}rEGd2TQbvE4v}WTf?>KzBX&wdLE=-ZoLn{>Ssu&A}2WGZKwMOVNUu2fz z7|{X9r49HDhc8JoO> z>@wswQ&LZx(JqtLdrZ6qRtWxRVwv=$;fR>1TpGGokd?!{?v%^50?@)w8Gba4w1)o) zMrrSgkbpEtUNuW5DR;_m@8~A?p`VX<39GhFAg?dYk&yWkEnUBs1czaB$zIlNw@3rr z)31^pjLJlpSXEa~M)9ksIL6nbT#i1D9e1eolqo8~_)JNMoF=CdoBx^VTRxU(#b<`7 zcEk`2X4Fi@ebFB!0Bf#!7b?*P*-#9K+Uq0_+HN-XbYs&uwqN5)y$~_p z(qp4ay)c9V&;n;?SVR!~+s0-2eIrV}(6j>ZJo;x;Fg+7W6o`<^vgT%BF9>|YrbfLX z_V?JG!RHjn68)q6tk2{_3xKR_ zaOC&U2#HhOpUAIQ4)J2yUWg8j(O!teRfdI!RKO|m#)ZYvCr$DSw0lhOMuo-UDb6^N zq}gAPC{@PaqtuYhJ|ytvmPObxeyzB~VmNb2)$P(r;|s*It>I=$MeTpeI1hc3^Yp* zr4tChQJIK0;h?EA<2CB>ov$-%1#3FPD>bHgfl`Og4wpT{R2cF(!yNB1zh}2Z;6*%a zNSF!q^~7pm4mCTi?GDqeiGjYsgGKMmfZ|mOs-nX+o-}C+Vd3x%!?B8#% zz2?34S!*-eANZQZm~o+`;<_1^;l7V`!G;1?JNH~UG2rkni*Z>rWNPp2#xQUbmU|ZO z6@T9;&)3o%9$aae4~j@GR2_y$4{&ngQ{<Rri&b<;HBVNLGB?p)Hc~FbYnAkq2Tgn8@ zbJxg|-#$@KIsY6wzR3PzAZbd&ie*-Q{b5l6;h0&vF^5-!zHHo`?zz1lEGmPli?m+e zRh@#%Z|;cBDlXEx3~5cVtTT|ZwPromBa7}O&F$(Y={1qP)~WQSgx%yy%$w_f-IILj zH(loV&2%k;L#I{*z|U#L5BAR+gfH=k&o7{TP(%q!h=|`di~PL&In^c}teyIWf#LvK76(3&SjlmAG9`?&%xecF%Hzn# z*7pl%i!Wa&iSMjh959(O7allRSgK!wq}mMDB76xsvjD-#QCH7RC{>52ib8LOr z8iySVD`Kly-2$g8pAbr1hIcV!^)A!eX7>^V1_TPrV$Vr3WRI213VF=jc3$0N6xsN` zIV!SYyP2uHIbiVZCu2j)`1xPH%C|Sq#Qf^J{k)Yi$$51G?X)VoDVGDvFO?B4jf zsUPzzef{TV`}k&BYq4I^=G^Aam<9v&yQK!{PYla_^c5I59@@LRI_)^LlCdjLRpMgE z4b&;Wl%Iz$w zeq2-kq}4PMvwos5vV8oqJCZLt&4AS+;OpC0g8U-B7hgQ~k^1pCoVz+)>sJZKv(#fY zn*HZ$9>??EH({~(`aSl5o8tT;J=Xya#OcR+N`4{B5ofu-QCG`N-Su(!)UGIK^dkI6 z#!imeT_bz`n!U3=pjX&hUw>ZJ*{R&lfN@ZG$}MeIah9qn+0$cj>OjuIl;_nKh4lOA zh&k3FojSeRESQGA084EaR|Ox1B}J7B>iLKG=(rzmGJcd5+3D_6UK6jgBX7*XR_2X5 ziA#g@GBqpJAs%(63QG@{bRLs)e4#=HcL;3r!J(o%9}g#Mc&A1C7ZEYiR~fcIAZp5G@g^^ zVkQlr4SuX9#m;JfiYwJDi24#2h$c~QYs}XEZv{~t|#1@^&smO`dH_L5v&vT3) z6dLB7aO~?C_bT(6o2>Ev$}`*x>~*d;yqXnkz= zsmrer{PK^ud%GUg-!-=#nLp?+6Ulp?_rP6TI`egh(-(f6#!SAG138}w?Df1<$%bHO zwffcWbmv@r6_&KKSc=@IXy9enzp9fX?mik$l5k%L zAH%mk@xR!x(Owwqwdj8P_GT-oe}QjBelsTSC~sg*3+ah2<2~vf8w%uoboO@pCNp21 zkCi@?LYAh@c<;*I;#m@Sd>*CMEyV>NW2d zA1OF+GN&4A7|Y6B*JqKxo^V=ax4p(}xRj$0AFZb<2fx`lb=A-1W?vokM&F*Q=^l2_ z0{TJct4HH)-}bF})bwXs-^3G+88P)NxsS%{;hzjty2KfMiYW;@*&bhsN zKJikWF29F`f6dKLVez>S-IZ4XWqJv>=vtk;aXC=|H1TFhfr(wjBk%L~G?DL~iLJWn zsut)cNS_wouvkt$uZryM|H9tiUMSuddHsxtMKr1*Lyv6KX>;q#&***v`EWLt5J5gH zBIIfyF+j7VHskuEZ-KKedpbjcc!%apYK>v%bYtE8+K-FB#QZO*#TsPoX(McCH)2@r zEBsyQzMpifa^L%2yPHSJeV z^mJmnHxeO~DIWzCTQbmYL(s*1G^I8*J}Hv1phx#uPi#O?u+f1kjR~P42d#%kVtcYw zvsD(-sN3&YE}s>p;T7F`P?QEOdcVz!^WZtOg+6EC%5qDWr(Apt&Cq4-?+%uAS%JM# z;XOrfX|a>lKn-{za+&j+2MALDrFeg211OpGbw$bOo5D=}?l@!gU| zV`1lKJ`Q;-g<4a8bQ>RSY*?%K&K1ewwmvseyIVB9Z(&BZ&dbeq>`qa-=dxR?iOPnR z+T>m)OxDuKQPYz=BiZzVM)eDFE357s+_&mvtXxE*==bSNDMz6VGwEv>mPbpNic#gq zK6Dr6?XpoCjk<(B>>w~W;>)jF^<7|)D_1ZzwJm-^)m65p*}ToXhh^gJ1%XY6l_PIE z9jBZZC#M}^CZ#(PBrMDt9Goq_lt#Z_T+r_57R|Pq6}QT{V(sE*#b;CyWG6Ks++%Zc z-JpB=ntFPD#95EEZ;c^}tmo^=RK+}d?sxW@SNn>d6Y60zE9sR`(Rra-U$^w=i;-A- zDDwB8%%V%3!P57n--jHoB+s3^xlvkQ(MMowjafsD^P24VfVNc9xnD19@1S!zm*>2% z8-Mub+y%!jnrM;FInAmX)mNq4T87%+T)!O6$!Ahoo-4wWmdkXPiD;EAde%PWTAf2u ztE5b@BEO0dmvQ5Q`vzJ1<+}7s1;yIjOW`uL3WB;U{H8r3kH_q8aKEa(5-X>+vy%UF z_3_db-=LyTTxYvy%gxGPd_)wK@kUx_6y06KvSU<;uEK66Mleby@s~@hm0?3n}-P~g<+Hu550WF zwDr4?SDb+n`1~lVKWADYy)r3NXGWvxSZKRbl*!bd&GZo}Itz6b@cu|4=cukKl7cPZcs=q8mrJoy~n$^_zv#~F)QIh^CG4ydyjzd+RQnGr#n(reu zl9rd|cO#MSHzyl!=Wa@!Zsm%(N)sS3 zqkR*#m{ zWOi(j$|H1UBG%KRP4WTf#M@IA5~(wmUu)Ccw1rZza@jW=Z@eeY&{#iv*Oc4zuC3^j zj>*-@;s&Rp+r<_J!F9=VrbnW$94VVZ;4>wHePyV=e{m9h-<^GH#B}C(dEPNa=TN(# zduMl>Ur)S8U#}kW;u&q1#*1g_J2f;?*v+eAM`AX7r6a_ue(0G8W>q%6hgH1sb8GS^CjyA+1+y z&DN~5YW>R{mT-~unv=F+&ZHz%%Gq#vWpnm30=*Go4&~PJ<&l>&4=XB=5}C4j+k@1D zk&k{{~NG$n^KF}0&$eBOnKp{ zB~}30av>=#@J;?IBk1+LY4_AL%IXPcXuGlIHL{uOQ+m1h`q$Mbyz4LAA*}IC98&&h z_Rf?o2zOduOgL&xKGLc#)HI6t{8Zu{DOCA*Z8F=5?memsr>1!|nT&(-t=YRCwtOC+ z*I&7F#yZ0P=t(}y7@KYjF~cxi_k*A$jU@Z@M>YtTBPnx!4IAlhyc2U@HS(&Wv^Z_` zN5xZ*)z@i|j``-KqP|~mA5>Vlp5XqN>oc!bN&$}HN5GYDm$YOni{Y`P%fLj1((d7S$b8nrA6K+erzYt&i=AI8IQez0?(xTi2W!+e z-a9emnRJ^<<{mh-L{)n8)gQcyXb34ZeHI{)wg-`k29S7ul=xa)z`(gza|Ao+>#6X z^y=xgFstf?uQyXZS!QZa9j*z92@6MapGPh8sXWN#jAfdOTt6OaV(-f|m?ZTpuB#)& z%z#yWu&hjmrZORGX4F`f`Q$80E4eLf7{s3Ds(bdc`Y412uMd>keUq3U6&};&)M=Gi znAcg-?dX?1ZR6=C)B9NTiHc|8=I#VxkAdAk)|O^gWp8iBzeymGj;StvYV2RTb^T61 zQhZnSx@*>J!s#!9-OqPjJQ05&^z)O?#tc`CP!9dviq0eq?!wrO!}ZE%Z@Q2#wt9$< zqO~uJ^sRF>uKDX{6Jty+L>Gn88FDOfdcBf}6}hOTeBcH`W8?MB+PSi%v3@<(%PI4w zv(5sEx#}NG^IkGNRZ|m)Lx#WgaeI;{O@1-5bo^#h&DyK#n&Jx`r#(qaS{teTzX)+r z1v|Xe#=TD~vAP~ieDTHSR`UzZHJnh^z79i*Jxgx$Zn?!dv^6Tjl?<4@WudagR<4Ax+Y7HkzzwHYf7Fd*`rdAy?8mbD^JaH zt|F$Vh$JINKPJR{+4Y80e5G(L{Z56QwL4Gmj2xP3z5dihcapitj6vEdo66l{v5$>ExHW`HdeKXO;7g65$LUq^-Yv$TEvO zUB;po@$#t^ItDHO_>v_GwCzsoov};46?3(R(`I5Oo>ZbN=Oh>@pe$#V`RuGf>(h6) zRUPAH1G{in{NIysrBbhZ1LTIwyQcY)KV&qvq%ugilXHnaUv*QMvC15AZI2HpoO|?` z;Q6WwEA%yJB(*Avgx7Lcv2W*nT{-u)w(#M|pxMl%re-QzoY+Eg#tDve=E`fs8U=Fn z=ew?BHfV5*EElaLPjw4Flr6G}(nybU?0RmewGk-f=gWFRe92Si982)aklDVR2rYs_ z-R}H^+)~xYKbv?n+tVU5Q=eg~j0Yx7b0Q5dFV{`9J;MmEtA%%Z@l~PoqkVLZSoa<5 z(7VR8(l8s{qk8R_>W3w~M05YEpPmcjZ^o21Go9wkWmZYI~C3R{0Aqi4j1-1<{QtZ? zY$}SL8fv(X>lZo3D7~V4wrtW_gfp>(EfEu9q(Cj8mY;yU^ewj|BtHrNN;Gn8(xpZMfJ>jahDvwP)^Aj_LRkljDs!tbWj`E&OOwKM%33kq_3Wy&*eY}EU zQ4=GaQyLzpGuY7h#!hB~#nMaDH%dgLi%~fZAFVtAS+dk5eXT?4R zV||WU;<9YZsgvn=F=8y0k;M^C-6ISIx-VMF`E|ZYb>&U^*0~mojYgAMGlq-fJZpR_ zUaaQScz5(77aHOg8MRguH|)XXDSHmnN9KRH&BA6stz`1LQtd`U*8D=)VFShh|EUK~ ze~o+7QIGF9KCN{%*-AKr^sb{TTva=MowbFg?(=KyU$RawTFmrA+K2ktdXm;nOQQ0= zGq~X=4>tBY^mDo)s_zj$8S_Dy)UxMB zIj}hrm)k!Gn%e3L6byC6PV|0}>tJ`CXsC!0$;&@jTJ*kIygE5C_>|?4w3+TO!?6A^ z6)(D0$|T%AQWZtxR{T(3sJn8<_q(b`(DAth{MUVo&p3_{#m~K43A-bp`&7mB!Sx@h z3L0YXh%6~$(YdeFMhvukbE&>|*wj) zN9PE;>E1Ec!@=wVv5juJrb40N_UfFiA8wQxd=cth+K3QUa96e{zUnbvM$*lk`84^x zU_33ZPvunuTYH9?Tfp+hMFy;zhzjtujAjJdm>)^oMOx6rFJzNDBKj#tuN_i+ZrEoJolOOR6~g# zTW$=e%1v;hOcF8(QqJr;f4JIjwCrn+_;<@%gU5}S38aNlc1O}P&;wzXBWpu5?b8MN z!9v~kd1ETF?(APwXJ_5!kM54rE9a+MS)wJ6krZD`|H{s#&o4JQDikJk+U2g&)K2Q# z*GCmrT9THeqcKZvO6Dof#N#uIa<-q$xaRyLZjDFWddbh_YNS`lANN^jUfWIaBVm$s zm1r9mlrug&BVgOgda_w;h-Vr!RW%YOvw9Jygna zKhn+ZbCj%d%j4*&(X-x@-e>0Q8h9=So_iYJBemN;>+MO5MLwSSnY)-t@f+nMPs=Rj z%!cyUomSi0@;`JfX}*yIUdL2JWAxCk=uiBy&FZt(+Sw8l8K(PBea_0eRc_t5cwpAC z8#`pL&o^(a6(%3o{_^VlnG7axtfxTYaWC|70{a?9)|%WHP};gxHw-G* z{!umz$}-Vg^`HOSwQitJSP1*Oy7Md=l(2%jS5RDvLLd;_NCYU+{QWCXMz?i48z`nU zMS&8|t*W_yRt$ry(Ecu?`)6q%<&AE?iSkFqFy+$!--?CN+&U<5mEG^sT2K&-^vQyeM#A9u7|gg|`2#%Ef@H zT*80etj7&1fpz{Kr^k&)f|}j`yi$*wfcWQNzyujBPzsFrX943@CGr2E)D=Y_{88%q zNXfDc!Q{InQgJ3sHsm!yp1Sgq6}|pXzkK4Ivq5@NXX&)HmlrE|@xDTQ%S|5Wczj`U zU039e^Dk$=C^l>R0if-MGyzBbbA?V)09ZsAslDv zreYV`24m;&>CGIXB{P~BkIJY5$9}@g{oGe#y(?qqh7z39ryrEmxFln{3`@bC;Pr7s zj`n*)3I46g^21YCeLudZ&bqkwxI=YnYO2G1%}tMD8Lf`A^e8z=W~9TH1XAjehbfh+w)BTrG#`+1n|F=u2RbN|FvrMwM!Qu>jiCiv`tKiZ(B=w_E~8-@gT%x(Q}+x!~_%mw)0pD+XhT5(UkHMS~)I%5f+>CC*4J2I3KbAtC(mptk|^K0E@V9~OuTG!C>c zfM7%vJPwbCXn-YPp!I^@1@PL4z!p-h7l+ttCb0GMw_G7{XkZ5^VJKJ*aHuWSpm-Kb zgz&>*Ffa^@gmEDNqfYrg+&1{(LDK??ad-p<#)YsAeneP?@F*OF3m!CUfaXBL{KaFo zoa&!60HFd5!yqC2@Oaop;IZ4_2N*&*2QUZ_P4S?O1vCzchhYfFzJSYTAzeihP#8$Y z3An9(C4a7$fF?k=5P*U}<1mnoKoW2WO8rG4h%lXrh;5$5<6vAsD-38}fFJ}T!Z;H# zFwP*zgY=S!0u4PVXaIVCK=TsO5Y8wBu!_*Lu+2siad?RK#H~gml=E(*3xIqO&xzaU z7Lkafd>;ydgyaCkqL3Vbag@FX0h*#fI*3A`AbAEfKvLRR!1Hb70EeWMArt}+`6yuR zx2`JwLncuO0vehFiG=I{3JI=orF<3z0(nXpXwCw|P*_S{qCh_tO1`0xXvmj=aqt`{ zB;>b%RAJ$DfbKC6et5`#fQzW{lro6|OoCvbJq`pz0cT4&2Y4951%<{!xS&vY7zP3k z=zUVb)E+ANeVF-vv7#u8Km|-+&8+Y&IH&hU_1JAt1h?Krldw9|{NQ;Fep3c!Yv& z2^wrUA-;hwf)EU(QXw9pkucxTV6#Dq9~KAt{O1U-+$T>qW9LzUhV&QQ_Xm1KE9kdTcCABrXb0fcaY{VGsjSTDgg1=3Xl zNJvn=599?P8w>IRFbo7@(6igvIwA(*8wP=f>>o%ggOiXyeEj07qtpj)uhz1xyK1#X(a|QV=;N2j(2jhtFvvB;3LBKIE$SA;b0L7%#=`C|gNqewk zhu48bL-}zq4jc$k&>0Eu7XYOoJqPnbb_jz6N(j9V&ii1t5^Cx7a1N=Tb6a#~CkpBgm59RPMK;7W?5uqFa z1`QHKlsKco<_dy=9SsD-Krto;jfP@Ou*HUA8sL5*+X)&=L$NIe0|FgrUXYBWgaILk zVF*|@fM7x6fG>k!7t?WY#SPYumm0l=dUmrJapE90moYq&Y%}D zrLVwjb1npqt)Tr31`C2}N}7UrgVHZxu)iBbZz=lUXCeRsuNS1MVEk}UoC7ogmJQG| z8h#cJ?UOMe-hgBhv}%Ud0aOdJX13gbUBAD0;^<`L;Pm?( R9J~q8iI$&VRz;5Xe*miU;RgT! literal 0 HcmV?d00001 diff --git a/MP.SPEC/Resources/ChangeLog.html b/MP.SPEC/Resources/ChangeLog.html index b6126dfe..be2d3178 100644 --- a/MP.SPEC/Resources/ChangeLog.html +++ b/MP.SPEC/Resources/ChangeLog.html @@ -1,6 +1,6 @@ Modulo MAPOSPEC -

Versione: 8.16.2606.409

+

Versione: 8.16.2606.410


Note di rilascio:
  • diff --git a/MP.SPEC/Resources/VersNum.txt b/MP.SPEC/Resources/VersNum.txt index 722b7892..a6ed034a 100644 --- a/MP.SPEC/Resources/VersNum.txt +++ b/MP.SPEC/Resources/VersNum.txt @@ -1 +1 @@ -8.16.2606.409 +8.16.2606.410 diff --git a/MP.SPEC/Resources/manifest.xml b/MP.SPEC/Resources/manifest.xml index 85bf0bb0..4750dbeb 100644 --- a/MP.SPEC/Resources/manifest.xml +++ b/MP.SPEC/Resources/manifest.xml @@ -1,6 +1,6 @@ - 8.16.2606.409 + 8.16.2606.410 https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/MP.SPEC.zip https://nexus.steamware.net/repository/SWS/MP-SPEC/stable/LAST/ChangeLog.html false diff --git a/MP.SPEC/appsettings.Production.json b/MP.SPEC/appsettings.Production.json index f4ebc6a0..908746f3 100644 --- a/MP.SPEC/appsettings.Production.json +++ b/MP.SPEC/appsettings.Production.json @@ -29,7 +29,7 @@ "cacheCheckArtUsato": 2, "redisShortTimeCache": 10, "redisLongTimeCache": 600, - "slowLogThresh": 200, + "slowLogThresh": 100, "MpIoBaseUrl": "http://localhost/MP/IO/", "MpIoNS": "MoonPro:SQL2016DEV:MoonPro", "BasePathOdlReturn": "\\\\iis01\\W$\\Files\\ODL", diff --git a/MP.SPEC/appsettings.json b/MP.SPEC/appsettings.json index 6bda77be..b2744a43 100644 --- a/MP.SPEC/appsettings.json +++ b/MP.SPEC/appsettings.json @@ -73,7 +73,7 @@ "cacheCheckArtUsato": "2", "redisShortTimeCache": 5, "redisLongTimeCache": 120, - "slowLogThresh": 1, + "slowLogThresh": 1, "MpIoBaseUrl": "http://localhost:20967/", "MpIoNS": "MoonPro:SQL2016DEV:MoonPro", "BasePathOdlReturn": "\\\\iis01\\ODL\\ftpdata\\syncfolder", diff --git a/MP.SPEC/refactor_repository.md b/MP.SPEC/refactor_repository.md index d0a75046..d8829193 100644 --- a/MP.SPEC/refactor_repository.md +++ b/MP.SPEC/refactor_repository.md @@ -6,6 +6,17 @@ |---|---|---| | MP.Data | OK | 0 | | MP.SPEC | OK | 0 | +| MP.Land | OK | 0 | +| MP.MON | OK | 0 | +| MP-TAB3 | OK | 0 | +| MP.Stats | OK | 0 | +| MP.INVE | OK | 0 | +| MP.IOC | OK | 0 | +| MP.RIOC | OK | 0 | +| MP.Prog | OK | 0 | +| IobConf | OK | 0 | + +**Tutte le 10 soluzioni della codebase compilano con successo.** ## Repository Creati (8 nuovi) @@ -41,40 +52,108 @@ services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); services.TryAddScoped(); -services.TryAddScoped(); +servicesTryAddScoped(); services.TryAddScoped(); + +// Controllers MP.AppAuth - Scoped (dipendenze di AppAuthService) +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); + +// Servizi Singleton +services.TryAddSingleton(); +services.TryAddSingleton(); +services.TryAddSingleton(); +services.TryAddSingleton(); +services.TryAddSingleton(); +services.TryAddSingleton(); +services.TryAddSingleton(); + +// Servizi Scoped +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); +services.TryAddScoped(); ``` -## File Modificati +## Livello MP.AppAuth - Refactoring DI Completato (Giugno 2026) -- `MP.Data/DataServiceCollectionExtensions.cs` (+10/-1) -- `MP.Data/Services/LandDataService.cs` (+10/-10) -- `MP.Data/Services/MonDataFeeder.cs` (+1/-1) -- `MP.Data/Services/StatusData.cs` (+12/-12) -- `MP.Data/Services/TabDataFeeder.cs` (+1/-1) -- `MP.Data/Services/TranslateSrv.cs` (+13/-13) -- `MP.SPEC/Data/MpDataService.cs` (+1/-3) +### Problema +`AppAuthService` (Scoped) conteneva istanze statiche dei controller e li creava con `new()` nel costruttore, causando race condition e null reference errors. -## File Nuovi (6) +### Fix Applicati -- `MP.Data/Repository/MpLand/IMpLandRepository.cs` -- `MP.Data/Repository/MpLand/MpLandRepository.cs` -- `MP.Data/Repository/MpMon/IMpMonRepository.cs` -- `MP.Data/Repository/MpMon/MpMonRepository.cs` +| File | Problema | Fix | +|------|----------|-----| +| `AppAuthController.cs` | `static IConfiguration _configuration` sovrascritto da ogni istanza | `readonly IConfiguration _configuration` | +| `MPController.cs` | `static IConfiguration _configuration` + `static dbController` | `readonly` istanza + dispose standard | +| `AppUserController.cs` | `static IConfiguration = null!` | `readonly IConfiguration _configuration` | +| `AppAuthService.cs` | Creava controllers con `new()` → bypassava DI | Constructor accetta controllers **via DI** | +| `MpLandController.cs` (MP.Data) | `static IConfiguration _configuration` + Dispose che impostava null | `readonly IConfiguration` + dispose standard | +| `BaseServ.cs` (MP.Data) | `protected static IConfiguration _configuration` | `protected IConfiguration` (istanza) | +| `LandDataService.cs` (MP.Data) | `public static MpLandController dbController` vuoto | Campo rimosso | +| `DataServiceCollectionExtensions.cs` (MP.Data) | `AppAuthService` non registrata con dipendenze | `AddLandDataLayer()` e `AddSpecDataLayer()` registrano controller + servizio | + +### Livelli DI per progetto + +| Progetto | Estensione DI | Registrazione | +|----------|--------------|---------------| +| **MP.SPEC** | `AddSpecDataLayer()` | Repository + controllers + AppAuthService (Scoped) | +| **MP.Land** | `AddLandDataLayer()` | Repository + controllers + AppAuthService (Scoped) | +| **MP.MON** | `AddMonDataLayer()` | Repository + MonDataFeeder (Singleton) | +| **MP.IOC** | `AddIocDataLayer()` | Repository + servizi IOC (Scoped/Singleton) | +| **MP-PROG / MP-INVE / MP-STATS / MP-TAB3 / MP-RIOC / IobConf** | Registration nel respective Program.cs | Completa e funzionante | + +## File Modificati per Fix DI + +- `MP.AppAuth/Controllers/AppAuthController.cs` (static → readonly) +- `MP.AppAuth/Controllers/MPController.cs` (static → readonly, dispose corretto) +- `MP.AppAuth/Controllers/AppUserController.cs` (static → readonly) +- `MP.AppAuth/Services/AppAuthService.cs` (DI constructor injection) +- `MP.Data/Controllers/MpLandController.cs` (static → readonly) +- `MP.Data/Services/BaseServ.cs` (static → instancia) +- `MP.Data/Services/LandDataService.cs` (campo statico rimosso) +- `MP.Data/DataServiceCollectionExtensions.cs` (registrazioni DI corrette) + +## File Nuovi (8) + +- `MP.Data/Repository/Anag/IAnagRepository.cs` +- `MP.Data/Repository/Anag/AnagRepository.cs` +- `MP.Data/Repository/Production/IProductionRepository.cs` +- `MP.Data/Repository/Production/ProductionRepository.cs` +- `MP.Data/Repository/Dossier/IDossierRepository.cs` +- `MP.Data/Repository/Dossier/DossierRepository.cs` +- `MP.Data/Repository/FluxLog/IFluxLogRepository.cs` +- `MP.Data/Repository/FluxLog/FluxLogRepository.cs` +- `MP.Data/Repository/System/ISystemRepository.cs` +- `MP.Data/Repository/System/SystemRepository.cs` - `MP.Data/Repository/MpVoc/IMpVocRepository.cs` - `MP.Data/Repository/MpVoc/MpVocRepository.cs` +- `MP.Data/Repository/MpMon/IMpMonRepository.cs` +- `MP.Data/Repository/MpMon/MpMonRepository.cs` +- `MP.Data/Repository/MpLand/IMpLandRepository.cs` +- `MP.Data/Repository/MpLand/MpLandRepository.cs` ## Verifiche -- Nessun riferimento a `dbController.XXX()` nei file di servizio -- `ArticleWithDossierAsync` esportato correttamente (rimossi `#if false`) -- `VocabolarioGetLang` reso sincrono (firma originale sincrona) -- `tryLoadIobTags` in StatusData usa `GetAwaiter().GetResult()` (contesto sync) -- `InitDict` in TranslateSrv usa `GetAwaiter().GetResult()` (contesto sync) +- ✅ Nessun riferimento a `dbController.XXX()` nei file di servizio +- ✅ `ArticleWithDossierAsync` esportato correttamente (rimossi `#if false`) +- ✅ `VocabolarioGetLang` reso sincrono (firma originale sincrona) +- ✅ `tryLoadIobTags` in StatusData usa `GetAwaiter().GetResult()` (contesto sync) +- ✅ `InitDict` in TranslateSrv usa `GetAwaiter().GetResult()` (contesto sync) +- ✅ Tutti i 10 progetti buildano con 0 errori +- ✅ Niente `static _configuration` nei controllers MP.AppAuth +- ✅ Niente `new()` di controllers fuori dal DI +- ✅ `AppAuthService` correttamente registrato in tutti le applicazioni ## MpSpecRepository (MpSpecController) -I metodi原价 sono ancora visibili nel file ma: +I metodi sono ancora visibili nel file ma: - Non sono usati dai layer superiori (tutti migrati ai repository) - Possono essere spostati a `#if false` come ultima fase di pulizia - Rimangono come fallback documentato diff --git a/MP.SPEC/refactor_repository.pdf b/MP.SPEC/refactor_repository.pdf index 806fa38d45a4b12778b690b29fe1fa25ca59b86b..9aaf51b275480f5113f77057bdf19c1a23d4a1b9 100644 GIT binary patch literal 116116 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�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 RyDGuZ!)DA_s=I91{{V+mX2bvh literal 91727 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